summaryrefslogtreecommitdiffstats
path: root/examples/graphicsview/boxes/wood.fsh
Commit message (Expand)AuthorAgeFilesLines
* Remove "All rights reserved" line from license headers.Jason McDonald2012-01-301-1/+1
* Update contact information in license headers.Jason McDonald2012-01-231-1/+1
* Update copyright year in license headers.Jason McDonald2012-01-051-1/+1
* Move all other demos in qtbase to examples.Casper van Donderen2011-06-241-0/+70
stat' width='100%'> -rw-r--r--FAQ.txt18
-rw-r--r--INSTALL14
-rw-r--r--LGPL_EXCEPTION.txt23
-rw-r--r--LICENSE.GPL3696
-rw-r--r--LICENSE.PREVIEW.COMMERCIAL793
-rwxr-xr-xbin/createpackage.bat44
-rwxr-xr-xbin/createpackage.pl273
-rwxr-xr-xbin/patch_capabilities.pl182
-rwxr-xr-xbin/setcepaths.bat50
-rwxr-xr-xbin/syncqt17
-rwxr-xr-xbin/syncqt.bat40
-rw-r--r--config.tests/mac/crc/main.cpp41
-rw-r--r--config.tests/mac/xcodeversion.cpp41
-rw-r--r--config.tests/qws/ahi/ahi.cpp41
-rw-r--r--config.tests/qws/directfb/directfb.cpp41
-rw-r--r--config.tests/qws/sound/sound.cpp41
-rw-r--r--config.tests/qws/svgalib/svgalib.cpp41
-rw-r--r--config.tests/unix/3dnow/3dnow.cpp41
-rw-r--r--config.tests/unix/alsa/alsatest.cpp41
-rw-r--r--config.tests/unix/clock-gettime/clock-gettime.cpp41
-rw-r--r--config.tests/unix/clock-monotonic/clock-monotonic.cpp41
-rw-r--r--config.tests/unix/cups/cups.cpp41
-rw-r--r--config.tests/unix/db2/db2.cpp41
-rw-r--r--config.tests/unix/dbus/dbus.cpp41
-rw-r--r--config.tests/unix/doubleformat/doubleformattest.cpp41
-rw-r--r--config.tests/unix/egl/egl.cpp41
-rw-r--r--config.tests/unix/egl4gles1/egl4gles1.cpp41
-rw-r--r--config.tests/unix/endian/endiantest.cpp41
-rw-r--r--config.tests/unix/floatmath/floatmath.cpp41
-rw-r--r--config.tests/unix/freetype/freetype.cpp41
-rw-r--r--config.tests/unix/getaddrinfo/getaddrinfotest.cpp41
-rw-r--r--config.tests/unix/getifaddrs/getifaddrs.cpp41
-rw-r--r--config.tests/unix/glib/glib.cpp41
-rw-r--r--config.tests/unix/gnu-libiconv/gnu-libiconv.cpp41
-rw-r--r--config.tests/unix/gstreamer/gstreamer.cpp41
-rw-r--r--config.tests/unix/ibase/ibase.cpp41
-rw-r--r--config.tests/unix/iconv/iconv.cpp41
-rw-r--r--config.tests/unix/inotify/inotifytest.cpp41
-rw-r--r--config.tests/unix/iodbc/iodbc.cpp41
-rw-r--r--config.tests/unix/ipv6/ipv6test.cpp41
-rw-r--r--config.tests/unix/ipv6ifname/ipv6ifname.cpp41
-rw-r--r--config.tests/unix/iwmmxt/iwmmxt.cpp41
-rw-r--r--config.tests/unix/javascriptcore-jit/hwcap_test.cpp46
-rw-r--r--config.tests/unix/javascriptcore-jit/javascriptcore-jit.pro2
-rw-r--r--config.tests/unix/largefile/largefiletest.cpp41
-rw-r--r--config.tests/unix/libjpeg/libjpeg.cpp41
-rw-r--r--config.tests/unix/libmng/libmng.cpp41
-rw-r--r--config.tests/unix/libpng/libpng.cpp41
-rw-r--r--config.tests/unix/libtiff/libtiff.cpp46
-rw-r--r--config.tests/unix/mmx/mmx.cpp41
-rw-r--r--config.tests/unix/mremap/mremap.cpp41
-rw-r--r--config.tests/unix/mysql/mysql.cpp41
-rw-r--r--config.tests/unix/nis/nis.cpp41
-rw-r--r--config.tests/unix/oci/oci.cpp41
-rw-r--r--config.tests/unix/odbc/odbc.cpp41
-rw-r--r--config.tests/unix/opengles1/opengles1.cpp41
-rw-r--r--config.tests/unix/opengles1/opengles1.pro6
-rw-r--r--config.tests/unix/opengles1cl/opengles1cl.cpp41
-rw-r--r--config.tests/unix/opengles1cl/opengles1cl.pro6
-rw-r--r--config.tests/unix/opengles2/opengles2.cpp41
-rw-r--r--config.tests/unix/opengles2/opengles2.pro6
-rw-r--r--config.tests/unix/openssl/openssl.cpp41
-rw-r--r--config.tests/unix/openssl/openssl.pri7
-rw-r--r--config.tests/unix/openvg/openvg.cpp41
-rw-r--r--config.tests/unix/psql/psql.cpp41
-rw-r--r--config.tests/unix/ptrsize/ptrsizetest.cpp41
-rw-r--r--config.tests/unix/shivavg/shivavg.cpp41
-rw-r--r--config.tests/unix/sqlite/sqlite.cpp41
-rw-r--r--config.tests/unix/sqlite2/sqlite2.cpp41
-rw-r--r--config.tests/unix/sse/sse.cpp41
-rw-r--r--config.tests/unix/sse2/sse2.cpp41
-rw-r--r--config.tests/unix/stdint/main.cpp41
-rw-r--r--config.tests/unix/stl/stltest.cpp41
-rw-r--r--config.tests/unix/tds/tds.cpp41
-rw-r--r--config.tests/unix/tslib/tslib.cpp41
-rw-r--r--config.tests/unix/zlib/zlib.cpp41
-rw-r--r--config.tests/x11/fontconfig/fontconfig.cpp41
-rw-r--r--config.tests/x11/glxfbconfig/glxfbconfig.cpp41
-rw-r--r--config.tests/x11/mitshm/mitshm.cpp41
-rw-r--r--config.tests/x11/notype/notypetest.cpp41
-rw-r--r--config.tests/x11/opengl/opengl.cpp41
-rw-r--r--config.tests/x11/sm/sm.cpp41
-rw-r--r--config.tests/x11/xcursor/xcursor.cpp41
-rw-r--r--config.tests/x11/xfixes/xfixes.cpp43
-rw-r--r--config.tests/x11/xinerama/xinerama.cpp41
-rw-r--r--config.tests/x11/xinput/xinput.cpp41
-rw-r--r--config.tests/x11/xkb/xkb.cpp41
-rw-r--r--config.tests/x11/xlib/xlib.cpp41
-rw-r--r--config.tests/x11/xrandr/xrandr.cpp41
-rw-r--r--config.tests/x11/xrender/xrender.cpp41
-rw-r--r--config.tests/x11/xshape/xshape.cpp43
-rw-r--r--config.tests/x11/xsync/xsync.cpp47
-rwxr-xr-xconfigure449
-rwxr-xr-x[-rw-r--r--]configure.exebin1134080 -> 1175040 bytes-rw-r--r--demos/affine/affine.pro2
-rw-r--r--demos/affine/main.cpp34
-rw-r--r--demos/affine/xform.cpp34
-rw-r--r--demos/affine/xform.h30
-rw-r--r--demos/arthurplugin/arthurplugin.pro2
-rw-r--r--demos/arthurplugin/plugin.cpp30
-rw-r--r--demos/books/bookdelegate.cpp30
-rw-r--r--demos/books/bookdelegate.h30
-rw-r--r--demos/books/books.pro4
-rw-r--r--demos/books/bookwindow.cpp30
-rw-r--r--demos/books/bookwindow.h30
-rw-r--r--demos/books/initdb.h30
-rw-r--r--demos/books/main.cpp30
-rw-r--r--demos/boxes/basic.fsh30
-rw-r--r--demos/boxes/basic.vsh30
-rw-r--r--demos/boxes/boxes.pro4
-rw-r--r--demos/boxes/dotted.fsh30
-rw-r--r--demos/boxes/fresnel.fsh30
-rw-r--r--demos/boxes/glass.fsh30
-rw-r--r--demos/boxes/glbuffers.cpp32
-rw-r--r--demos/boxes/glbuffers.h30
-rw-r--r--demos/boxes/glextensions.cpp30
-rw-r--r--demos/boxes/glextensions.h30
-rw-r--r--demos/boxes/gltrianglemesh.h30
-rw-r--r--demos/boxes/granite.fsh30
-rw-r--r--demos/boxes/main.cpp37
-rw-r--r--demos/boxes/marble.fsh30
-rw-r--r--demos/boxes/qtbox.cpp48
-rw-r--r--demos/boxes/qtbox.h36
-rw-r--r--demos/boxes/reflection.fsh30
-rw-r--r--demos/boxes/refraction.fsh30
-rw-r--r--demos/boxes/roundedbox.cpp30
-rw-r--r--demos/boxes/roundedbox.h30
-rw-r--r--demos/boxes/scene.cpp110
-rw-r--r--demos/boxes/scene.h32
-rw-r--r--demos/boxes/trackball.cpp48
-rw-r--r--demos/boxes/trackball.h30
-rw-r--r--demos/boxes/wood.fsh30
-rw-r--r--demos/browser/autosaver.cpp30
-rw-r--r--demos/browser/autosaver.h30
-rw-r--r--demos/browser/bookmarks.cpp68
-rw-r--r--demos/browser/bookmarks.h30
-rw-r--r--demos/browser/browser.pro19
-rw-r--r--demos/browser/browserapplication.cpp32
-rw-r--r--demos/browser/browserapplication.h30
-rw-r--r--demos/browser/browsermainwindow.cpp139
-rw-r--r--demos/browser/browsermainwindow.h31
-rw-r--r--demos/browser/chasewidget.cpp30
-rw-r--r--demos/browser/chasewidget.h30
-rw-r--r--demos/browser/cookiejar.cpp34
-rw-r--r--demos/browser/cookiejar.h30
-rw-r--r--demos/browser/data/defaultbookmarks.xbel3
-rw-r--r--demos/browser/downloadmanager.cpp34
-rw-r--r--demos/browser/downloadmanager.h30
-rw-r--r--demos/browser/edittableview.cpp30
-rw-r--r--demos/browser/edittableview.h30
-rw-r--r--demos/browser/edittreeview.cpp30
-rw-r--r--demos/browser/edittreeview.h30
-rw-r--r--demos/browser/history.cpp108
-rw-r--r--demos/browser/history.h30
-rw-r--r--demos/browser/main.cpp30
-rw-r--r--demos/browser/modelmenu.cpp30
-rw-r--r--demos/browser/modelmenu.h30
-rw-r--r--demos/browser/networkaccessmanager.cpp79
-rw-r--r--demos/browser/networkaccessmanager.h38
-rw-r--r--demos/browser/searchlineedit.cpp38
-rw-r--r--demos/browser/searchlineedit.h30
-rw-r--r--demos/browser/settings.cpp30
-rw-r--r--demos/browser/settings.h30
-rw-r--r--demos/browser/squeezelabel.cpp30
-rw-r--r--demos/browser/squeezelabel.h30
-rw-r--r--demos/browser/tabwidget.cpp89
-rw-r--r--demos/browser/tabwidget.h30
-rw-r--r--demos/browser/toolbarsearch.cpp30
-rw-r--r--demos/browser/toolbarsearch.h30
-rw-r--r--demos/browser/urllineedit.cpp38
-rw-r--r--demos/browser/urllineedit.h30
-rw-r--r--demos/browser/webview.cpp50
-rw-r--r--demos/browser/webview.h30
-rw-r--r--demos/browser/xbel.cpp139
-rw-r--r--demos/browser/xbel.h31
-rw-r--r--demos/chip/chip.cpp30
-rw-r--r--demos/chip/chip.h30
-rw-r--r--demos/chip/chip.pro1
-rw-r--r--demos/chip/main.cpp30
-rw-r--r--demos/chip/mainwindow.cpp30
-rw-r--r--demos/chip/mainwindow.h30
-rw-r--r--demos/chip/view.cpp30
-rw-r--r--demos/chip/view.h30
-rw-r--r--demos/composition/composition.cpp46
-rw-r--r--demos/composition/composition.h30
-rw-r--r--demos/composition/composition.pro2
-rw-r--r--demos/composition/main.cpp36
-rw-r--r--demos/deform/deform.pro5
-rw-r--r--demos/deform/main.cpp33
-rw-r--r--demos/deform/pathdeform.cpp32
-rw-r--r--demos/deform/pathdeform.h30
-rw-r--r--demos/demos.pro43
-rw-r--r--demos/embedded/anomaly/README.TXT (renamed from src/3rdparty/webkit/WebCore/storage/StorageArea.cpp)0
-rw-r--r--demos/embedded/anomaly/anomaly.pro36
-rw-r--r--demos/embedded/anomaly/src/AddressBar.cpp109
-rw-r--r--demos/embedded/anomaly/src/AddressBar.h73
-rw-r--r--demos/embedded/anomaly/src/BookmarksView.cpp70
-rw-r--r--demos/embedded/anomaly/src/BookmarksView.h64
-rw-r--r--demos/embedded/anomaly/src/BrowserView.cpp185
-rw-r--r--demos/embedded/anomaly/src/BrowserView.h92
-rw-r--r--demos/embedded/anomaly/src/BrowserWindow.cpp187
-rw-r--r--demos/embedded/anomaly/src/BrowserWindow.h79
-rw-r--r--demos/embedded/anomaly/src/ControlStrip.cpp101
-rw-r--r--demos/embedded/anomaly/src/ControlStrip.h72
-rw-r--r--demos/embedded/anomaly/src/HomeView.cpp76
-rw-r--r--demos/embedded/anomaly/src/HomeView.h74
-rw-r--r--demos/embedded/anomaly/src/Main.cpp74
-rw-r--r--demos/embedded/anomaly/src/TitleBar.cpp124
-rw-r--r--demos/embedded/anomaly/src/TitleBar.h70
-rw-r--r--demos/embedded/anomaly/src/ZoomStrip.cpp82
-rw-r--r--demos/embedded/anomaly/src/ZoomStrip.h70
-rw-r--r--demos/embedded/anomaly/src/anomaly.qrc9
-rw-r--r--demos/embedded/anomaly/src/flickcharm.cpp335
-rw-r--r--demos/embedded/anomaly/src/flickcharm.h67
-rw-r--r--demos/embedded/anomaly/src/images/edit-find.pngbin0 -> 1495 bytes-rw-r--r--demos/embedded/anomaly/src/images/go-next.pngbin0 -> 1150 bytes-rw-r--r--demos/embedded/anomaly/src/images/go-previous.pngbin0 -> 1135 bytes-rw-r--r--demos/embedded/anomaly/src/images/list-add.pngbin0 -> 601 bytes-rw-r--r--demos/embedded/anomaly/src/images/list-remove.pngbin0 -> 317 bytes-rw-r--r--demos/embedded/desktopservices/contenttab.cpp165
-rw-r--r--demos/embedded/desktopservices/contenttab.h101
-rw-r--r--demos/embedded/desktopservices/data/Explosion.wavbin0 -> 18427 bytes-rw-r--r--demos/embedded/desktopservices/data/designer.pngbin0 -> 2529 bytes-rw-r--r--demos/embedded/desktopservices/data/monkey_on_64x64.pngbin0 -> 3479 bytes-rw-r--r--demos/embedded/desktopservices/data/sax.mp3bin0 -> 104104 bytes-rw-r--r--demos/embedded/desktopservices/desktopservices.pro32
-rw-r--r--demos/embedded/desktopservices/desktopservices.qrc8
-rw-r--r--demos/embedded/desktopservices/desktopwidget.cpp90
-rw-r--r--demos/embedded/desktopservices/desktopwidget.h73
-rw-r--r--demos/embedded/desktopservices/linktab.cpp88
-rw-r--r--demos/embedded/desktopservices/linktab.h86
-rw-r--r--demos/embedded/desktopservices/main.cpp56
-rw-r--r--demos/embedded/desktopservices/resources/browser.pngbin0 -> 2525 bytes-rw-r--r--demos/embedded/desktopservices/resources/heart.svg55
-rw-r--r--demos/embedded/desktopservices/resources/message.pngbin0 -> 1989 bytes-rw-r--r--demos/embedded/desktopservices/resources/music.pngbin0 -> 2123 bytes-rw-r--r--demos/embedded/desktopservices/resources/photo.pngbin0 -> 2233 bytes-rw-r--r--demos/embedded/digiflip/digiflip.cpp425
-rw-r--r--demos/embedded/digiflip/digiflip.pro11
-rw-r--r--demos/embedded/embedded.pro17
-rw-r--r--demos/embedded/embeddedsvgviewer/embeddedsvgviewer.cpp32
-rw-r--r--demos/embedded/embeddedsvgviewer/embeddedsvgviewer.h30
-rw-r--r--demos/embedded/embeddedsvgviewer/embeddedsvgviewer.pro9
-rw-r--r--demos/embedded/embeddedsvgviewer/main.cpp33
-rw-r--r--demos/embedded/flickable/flickable.cpp284
-rw-r--r--demos/embedded/flickable/flickable.h80
-rw-r--r--demos/embedded/flickable/flickable.pro12
-rw-r--r--demos/embedded/flickable/main.cpp233
-rw-r--r--demos/embedded/flightinfo/aircraft.pngbin0 -> 20200 bytes-rw-r--r--demos/embedded/flightinfo/flightinfo.cpp415
-rw-r--r--demos/embedded/flightinfo/flightinfo.pro19
-rw-r--r--demos/embedded/flightinfo/flightinfo.qrc5
-rw-r--r--demos/embedded/flightinfo/form.ui226
-rw-r--r--demos/embedded/fluidlauncher/config_s60/config.xml27
-rw-r--r--demos/embedded/fluidlauncher/demoapplication.cpp36
-rw-r--r--demos/embedded/fluidlauncher/demoapplication.h32
-rw-r--r--demos/embedded/fluidlauncher/fluidlauncher.cpp188
-rw-r--r--demos/embedded/fluidlauncher/fluidlauncher.h39
-rw-r--r--demos/embedded/fluidlauncher/fluidlauncher.pro159
-rw-r--r--demos/embedded/fluidlauncher/main.cpp30
-rw-r--r--demos/embedded/fluidlauncher/pictureflow.cpp103
-rw-r--r--demos/embedded/fluidlauncher/pictureflow.h78
-rw-r--r--demos/embedded/fluidlauncher/screenshots/anomaly_s60.pngbin0 -> 39093 bytes-rw-r--r--demos/embedded/fluidlauncher/screenshots/context2d_s60.pngbin0 -> 39185 bytes-rw-r--r--demos/embedded/fluidlauncher/screenshots/desktopservices_s60.pngbin0 -> 31504 bytes-rw-r--r--demos/embedded/fluidlauncher/screenshots/digiflip.pngbin0 -> 2039 bytes-rw-r--r--demos/embedded/fluidlauncher/screenshots/embeddedsvgviewer_s60.pngbin0 -> 29917 bytes-rw-r--r--demos/embedded/fluidlauncher/screenshots/flickable.pngbin0 -> 14141 bytes-rw-r--r--demos/embedded/fluidlauncher/screenshots/flightinfo_s60.pngbin0 -> 20482 bytes-rw-r--r--demos/embedded/fluidlauncher/screenshots/fridgemagnets_s60.pngbin0 -> 39865 bytes-rw-r--r--demos/embedded/fluidlauncher/screenshots/ftp_s60.pngbin0 -> 32534 bytes-rw-r--r--demos/embedded/fluidlauncher/screenshots/lightmaps.pngbin0 -> 79501 bytes-rw-r--r--demos/embedded/fluidlauncher/screenshots/mediaplayer.pngbin7217 -> 80411 bytes-rw-r--r--demos/embedded/fluidlauncher/screenshots/raycasting.pngbin0 -> 11984 bytes-rw-r--r--demos/embedded/fluidlauncher/screenshots/saxbookmarks_s60.pngbin0 -> 47182 bytes-rw-r--r--demos/embedded/fluidlauncher/screenshots/softkeys_s60.pngbin0 -> 28562 bytes-rw-r--r--demos/embedded/fluidlauncher/screenshots/styledemo_s60.pngbin0 -> 51957 bytes-rw-r--r--demos/embedded/fluidlauncher/screenshots/weatherinfo.pngbin0 -> 34472 bytes-rw-r--r--demos/embedded/fluidlauncher/screenshots/wiggly_s60.pngbin0 -> 5549 bytes-rw-r--r--demos/embedded/fluidlauncher/slides/demo_1.pngbin23539 -> 20560 bytes-rw-r--r--demos/embedded/fluidlauncher/slides/demo_2.pngbin11745 -> 5209 bytes-rw-r--r--demos/embedded/fluidlauncher/slides/demo_5.pngbin15890 -> 6130 bytes-rw-r--r--demos/embedded/fluidlauncher/slides/demo_6.pngbin14992 -> 5826 bytes-rw-r--r--demos/embedded/fluidlauncher/slideshow.cpp35
-rw-r--r--demos/embedded/fluidlauncher/slideshow.h34
-rw-r--r--demos/embedded/lightmaps/lightmaps.cpp579
-rw-r--r--demos/embedded/lightmaps/lightmaps.pro17
-rw-r--r--demos/embedded/raycasting/raycasting.cpp391
-rw-r--r--demos/embedded/raycasting/raycasting.pro13
-rw-r--r--demos/embedded/raycasting/raycasting.qrc5
-rw-r--r--demos/embedded/raycasting/textures.pngbin0 -> 17669 bytes-rw-r--r--demos/embedded/styledemo/files/application.qss2
-rw-r--r--demos/embedded/styledemo/files/blue.qss3
-rw-r--r--demos/embedded/styledemo/files/khaki.qss3
-rw-r--r--demos/embedded/styledemo/files/transparent.qss1
-rw-r--r--demos/embedded/styledemo/main.cpp34
-rw-r--r--demos/embedded/styledemo/styledemo.pro5
-rw-r--r--demos/embedded/styledemo/stylewidget.cpp30
-rw-r--r--demos/embedded/styledemo/stylewidget.h30
-rw-r--r--demos/embedded/styledemo/stylewidget.ui532
-rw-r--r--demos/embedded/weatherinfo/icons/README.txt5
-rw-r--r--demos/embedded/weatherinfo/icons/weather-few-clouds.svg173
-rw-r--r--demos/embedded/weatherinfo/icons/weather-fog.svg114
-rw-r--r--demos/embedded/weatherinfo/icons/weather-haze.svg162
-rw-r--r--demos/embedded/weatherinfo/icons/weather-icy.svg51
-rw-r--r--demos/embedded/weatherinfo/icons/weather-overcast.svg191
-rw-r--r--demos/embedded/weatherinfo/icons/weather-showers.svg179
-rw-r--r--demos/embedded/weatherinfo/icons/weather-sleet.svg230
-rw-r--r--demos/embedded/weatherinfo/icons/weather-snow.svg200
-rw-r--r--demos/embedded/weatherinfo/icons/weather-storm.svg190
-rw-r--r--demos/embedded/weatherinfo/icons/weather-sunny-very-few-clouds.svg141
-rw-r--r--demos/embedded/weatherinfo/icons/weather-sunny.svg82
-rw-r--r--demos/embedded/weatherinfo/icons/weather-thundershower.svg224
-rw-r--r--demos/embedded/weatherinfo/weatherinfo.cpp511
-rw-r--r--demos/embedded/weatherinfo/weatherinfo.pro18
-rw-r--r--demos/embedded/weatherinfo/weatherinfo.qrc16
-rw-r--r--demos/embeddeddialogs/customproxy.cpp30
-rw-r--r--demos/embeddeddialogs/customproxy.h30
-rw-r--r--demos/embeddeddialogs/embeddeddialog.cpp34
-rw-r--r--demos/embeddeddialogs/embeddeddialog.h30
-rw-r--r--demos/embeddeddialogs/embeddeddialogs.pro2
-rw-r--r--demos/embeddeddialogs/main.cpp30
-rw-r--r--demos/gradients/gradients.cpp36
-rw-r--r--demos/gradients/gradients.h30
-rw-r--r--demos/gradients/gradients.pro2
-rw-r--r--demos/gradients/main.cpp34
-rw-r--r--demos/interview/interview.pro1
-rw-r--r--demos/interview/main.cpp30
-rw-r--r--demos/interview/model.cpp30
-rw-r--r--demos/interview/model.h30
-rw-r--r--demos/macmainwindow/macmainwindow.h30
-rw-r--r--demos/macmainwindow/macmainwindow.mm30
-rw-r--r--demos/macmainwindow/main.cpp30
-rw-r--r--demos/mainwindow/colorswatch.cpp30
-rw-r--r--demos/mainwindow/colorswatch.h30
-rw-r--r--demos/mainwindow/main.cpp30
-rw-r--r--demos/mainwindow/mainwindow.cpp30
-rw-r--r--demos/mainwindow/mainwindow.h30
-rw-r--r--demos/mainwindow/mainwindow.pro1
-rw-r--r--demos/mainwindow/toolbar.cpp30
-rw-r--r--demos/mainwindow/toolbar.h30
-rw-r--r--demos/mediaplayer/main.cpp59
-rw-r--r--demos/mediaplayer/mediaplayer.cpp840
-rw-r--r--demos/mediaplayer/mediaplayer.h137
-rw-r--r--demos/mediaplayer/mediaplayer.pro28
-rw-r--r--demos/mediaplayer/settings.ui464
-rw-r--r--demos/pathstroke/main.cpp37
-rw-r--r--demos/pathstroke/pathstroke.cpp125
-rw-r--r--demos/pathstroke/pathstroke.h33
-rw-r--r--demos/pathstroke/pathstroke.pro4
-rw-r--r--demos/qmediaplayer/images/screen.png (renamed from demos/mediaplayer/images/screen.png)bin4358 -> 4358 bytes-rw-r--r--demos/qmediaplayer/main.cpp89
-rw-r--r--demos/qmediaplayer/mediaplayer.cpp939
-rw-r--r--demos/qmediaplayer/mediaplayer.h176
-rw-r--r--demos/qmediaplayer/mediaplayer.qrc (renamed from demos/mediaplayer/mediaplayer.qrc)0
-rw-r--r--demos/qmediaplayer/qmediaplayer.pro37
-rw-r--r--demos/qmediaplayer/settings.ui495
-rw-r--r--demos/qtdemo/colors.cpp32
-rw-r--r--demos/qtdemo/colors.h30
-rw-r--r--demos/qtdemo/demoitem.cpp30
-rw-r--r--demos/qtdemo/demoitem.h30
-rw-r--r--demos/qtdemo/demoitemanimation.cpp30
-rw-r--r--demos/qtdemo/demoitemanimation.h30
-rw-r--r--demos/qtdemo/demoscene.cpp30
-rw-r--r--demos/qtdemo/demoscene.h30
-rw-r--r--demos/qtdemo/demotextitem.cpp30
-rw-r--r--demos/qtdemo/demotextitem.h30
-rw-r--r--demos/qtdemo/dockitem.cpp30
-rw-r--r--demos/qtdemo/dockitem.h30
-rw-r--r--demos/qtdemo/examplecontent.cpp30
-rw-r--r--demos/qtdemo/examplecontent.h30
-rw-r--r--demos/qtdemo/guide.cpp30
-rw-r--r--demos/qtdemo/guide.h30
-rw-r--r--demos/qtdemo/guidecircle.cpp30
-rw-r--r--demos/qtdemo/guidecircle.h30
-rw-r--r--demos/qtdemo/guideline.cpp30
-rw-r--r--demos/qtdemo/guideline.h30
-rw-r--r--demos/qtdemo/headingitem.cpp30
-rw-r--r--demos/qtdemo/headingitem.h30
-rw-r--r--demos/qtdemo/imageitem.cpp30
-rw-r--r--demos/qtdemo/imageitem.h30
-rw-r--r--demos/qtdemo/itemcircleanimation.cpp31
-rw-r--r--demos/qtdemo/itemcircleanimation.h30
-rw-r--r--demos/qtdemo/letteritem.cpp30
-rw-r--r--demos/qtdemo/letteritem.h30
-rw-r--r--demos/qtdemo/main.cpp30
-rw-r--r--demos/qtdemo/mainwindow.cpp30
-rw-r--r--demos/qtdemo/mainwindow.h30
-rw-r--r--demos/qtdemo/menucontent.cpp30
-rw-r--r--demos/qtdemo/menucontent.h30
-rw-r--r--demos/qtdemo/menumanager.cpp37
-rw-r--r--demos/qtdemo/menumanager.h30
-rw-r--r--demos/qtdemo/qtdemo.pro4
-rw-r--r--demos/qtdemo/scanitem.cpp30
-rw-r--r--demos/qtdemo/scanitem.h30
-rw-r--r--demos/qtdemo/score.cpp30
-rw-r--r--demos/qtdemo/score.h30
-rw-r--r--demos/qtdemo/textbutton.cpp30
-rw-r--r--demos/qtdemo/textbutton.h30
-rw-r--r--demos/qtdemo/xml/examples.xml13
-rw-r--r--demos/shared/arthurstyle.cpp30
-rw-r--r--demos/shared/arthurstyle.h30
-rw-r--r--demos/shared/arthurwidgets.cpp30
-rw-r--r--demos/shared/arthurwidgets.h51
-rw-r--r--demos/shared/hoverpoints.cpp114
-rw-r--r--demos/shared/hoverpoints.h32
-rw-r--r--demos/shared/shared.pri3
-rw-r--r--demos/shared/shared.pro5
-rw-r--r--demos/spreadsheet/main.cpp30
-rw-r--r--demos/spreadsheet/printview.cpp30
-rw-r--r--demos/spreadsheet/printview.h30
-rw-r--r--demos/spreadsheet/spreadsheet.cpp41
-rw-r--r--demos/spreadsheet/spreadsheet.h30
-rw-r--r--demos/spreadsheet/spreadsheet.pro1
-rw-r--r--demos/spreadsheet/spreadsheetdelegate.cpp30
-rw-r--r--demos/spreadsheet/spreadsheetdelegate.h30
-rw-r--r--demos/spreadsheet/spreadsheetitem.cpp30
-rw-r--r--demos/spreadsheet/spreadsheetitem.h30
-rw-r--r--demos/sqlbrowser/browser.cpp30
-rw-r--r--demos/sqlbrowser/browser.h30
-rw-r--r--demos/sqlbrowser/connectionwidget.cpp30
-rw-r--r--demos/sqlbrowser/connectionwidget.h30
-rw-r--r--demos/sqlbrowser/main.cpp30
-rw-r--r--demos/sqlbrowser/qsqlconnectiondialog.cpp30
-rw-r--r--demos/sqlbrowser/qsqlconnectiondialog.h30
-rw-r--r--demos/sqlbrowser/sqlbrowser.pro2
-rw-r--r--demos/sub-attaq/animationmanager.cpp43
-rw-r--r--demos/sub-attaq/animationmanager.h33
-rw-r--r--demos/sub-attaq/boat.cpp126
-rw-r--r--demos/sub-attaq/boat.h42
-rw-r--r--demos/sub-attaq/boat_p.h80
-rw-r--r--demos/sub-attaq/bomb.cpp48
-rw-r--r--demos/sub-attaq/bomb.h46
-rw-r--r--demos/sub-attaq/custompropertyanimation.cpp108
-rw-r--r--demos/sub-attaq/custompropertyanimation.h114
-rw-r--r--demos/sub-attaq/graphicsscene.cpp240
-rw-r--r--demos/sub-attaq/graphicsscene.h45
-rw-r--r--demos/sub-attaq/main.cpp30
-rw-r--r--demos/sub-attaq/mainwindow.cpp61
-rw-r--r--demos/sub-attaq/mainwindow.h31
-rw-r--r--demos/sub-attaq/pixmapitem.cpp63
-rw-r--r--demos/sub-attaq/pixmapitem.h44
-rw-r--r--demos/sub-attaq/progressitem.cpp30
-rw-r--r--demos/sub-attaq/progressitem.h30
-rw-r--r--demos/sub-attaq/qanimationstate.cpp30
-rw-r--r--demos/sub-attaq/qanimationstate.h30
-rw-r--r--demos/sub-attaq/states.cpp95
-rw-r--r--demos/sub-attaq/states.h34
-rw-r--r--demos/sub-attaq/sub-attaq.pro24
-rw-r--r--demos/sub-attaq/submarine.cpp94
-rw-r--r--demos/sub-attaq/submarine.h41
-rw-r--r--demos/sub-attaq/submarine_p.h31
-rw-r--r--demos/sub-attaq/textinformationitem.cpp54
-rw-r--r--demos/sub-attaq/textinformationitem.h55
-rw-r--r--demos/sub-attaq/torpedo.cpp52
-rw-r--r--demos/sub-attaq/torpedo.h46
-rw-r--r--demos/symbianpkgrules.pri15
-rw-r--r--demos/textedit/example.html2
-rw-r--r--demos/textedit/main.cpp30
-rw-r--r--demos/textedit/textedit.cpp52
-rw-r--r--demos/textedit/textedit.doc18
-rw-r--r--demos/textedit/textedit.h30
-rw-r--r--demos/textedit/textedit.pro1
-rw-r--r--demos/textedit/textedit.qdoc59
-rw-r--r--demos/undo/commands.cpp30
-rw-r--r--demos/undo/commands.h30
-rw-r--r--demos/undo/document.cpp30
-rw-r--r--demos/undo/document.h30
-rw-r--r--demos/undo/main.cpp30
-rw-r--r--demos/undo/mainwindow.cpp30
-rw-r--r--demos/undo/mainwindow.h30
-rw-r--r--demos/undo/undo.pro1
-rw-r--r--dist/README92
-rw-r--r--dist/changes-4.4.4-temple65
-rw-r--r--dist/changes-4.5.0-garden241
-rw-r--r--dist/changes-4.5.2-tower436
-rw-r--r--dist/changes-4.5.3157
-rw-r--r--dist/changes-4.5.4123
-rw-r--r--dist/changes-4.6.01108
-rw-r--r--dist/changes-4.6.1159
-rw-r--r--dist/changes-4.7.0122
-rw-r--r--doc/doc.pri12
-rw-r--r--doc/src/accelerators.qdoc137
-rw-r--r--doc/src/accessible.qdoc600
-rw-r--r--doc/src/activeqt-dumpcpp.qdoc143
-rw-r--r--doc/src/activeqt-dumpdoc.qdoc83
-rw-r--r--doc/src/activeqt-idc.qdoc82
-rw-r--r--doc/src/activeqt-testcon.qdoc77
-rw-r--r--doc/src/activeqt.qdoc88
-rw-r--r--doc/src/animation.qdoc364
-rw-r--r--doc/src/appicon.qdoc226
-rw-r--r--doc/src/assistant-manual.qdoc810
-rw-r--r--doc/src/atomic-operations.qdoc89
-rw-r--r--doc/src/bughowto.qdoc57
-rw-r--r--doc/src/classes.qdoc158
-rw-r--r--doc/src/classes/exportedfunctions.qdoc141
-rw-r--r--doc/src/classes/phonon-namespace.qdoc54
-rw-r--r--doc/src/classes/q3asciicache.qdoc465
-rw-r--r--doc/src/classes/q3asciidict.qdoc416
-rw-r--r--doc/src/classes/q3cache.qdoc461
-rw-r--r--doc/src/classes/q3dict.qdoc446
-rw-r--r--doc/src/classes/q3intcache.qdoc446
-rw-r--r--doc/src/classes/q3intdict.qdoc390
-rw-r--r--doc/src/classes/q3memarray.qdoc523
-rw-r--r--doc/src/classes/q3popupmenu.qdoc76
-rw-r--r--doc/src/classes/q3ptrdict.qdoc388
-rw-r--r--doc/src/classes/q3ptrlist.qdoc1157
-rw-r--r--doc/src/classes/q3ptrqueue.qdoc230
-rw-r--r--doc/src/classes/q3ptrstack.qdoc217
-rw-r--r--doc/src/classes/q3ptrvector.qdoc427
-rw-r--r--doc/src/classes/q3sqlfieldinfo.qdoc234
-rw-r--r--doc/src/classes/q3sqlrecordinfo.qdoc89
-rw-r--r--doc/src/classes/q3valuelist.qdoc569
-rw-r--r--doc/src/classes/q3valuestack.qdoc149
-rw-r--r--doc/src/classes/q3valuevector.qdoc274
-rw-r--r--doc/src/classes/qalgorithms.qdoc651
-rw-r--r--doc/src/classes/qcache.qdoc244
-rw-r--r--doc/src/classes/qcolormap.qdoc152
-rw-r--r--doc/src/classes/qdesktopwidget.qdoc266
-rw-r--r--doc/src/classes/qiterator.qdoc1431
-rw-r--r--doc/src/classes/qmacstyle.qdoc261
-rw-r--r--doc/src/classes/qnamespace.qdoc2756
-rw-r--r--doc/src/classes/qpagesetupdialog.qdoc84
-rw-r--r--doc/src/classes/qpaintdevice.qdoc289
-rw-r--r--doc/src/classes/qpair.qdoc229
-rw-r--r--doc/src/classes/qpatternistdummy.cpp30
-rw-r--r--doc/src/classes/qplugin.qdoc135
-rw-r--r--doc/src/classes/qprintdialog.qdoc72
-rw-r--r--doc/src/classes/qprinterinfo.qdoc137
-rw-r--r--doc/src/classes/qset.qdoc953
-rw-r--r--doc/src/classes/qsignalspy.qdoc98
-rw-r--r--doc/src/classes/qsizepolicy.qdoc522
-rw-r--r--doc/src/classes/qtdesigner-api.qdoc1413
-rw-r--r--doc/src/classes/qtendian.qdoc168
-rw-r--r--doc/src/classes/qtestevent.qdoc191
-rw-r--r--doc/src/classes/qvarlengtharray.qdoc274
-rw-r--r--doc/src/classes/qwaitcondition.qdoc188
-rw-r--r--doc/src/codecs.qdoc534
-rw-r--r--doc/src/compiler-notes.qdoc278
-rw-r--r--doc/src/containers.qdoc775
-rw-r--r--doc/src/coordsys.qdoc486
-rw-r--r--doc/src/credits.qdoc30
-rw-r--r--doc/src/custom-types.qdoc178
-rw-r--r--doc/src/datastreamformat.qdoc376
-rw-r--r--doc/src/debug.qdoc256
-rw-r--r--doc/src/demos.qdoc151
-rw-r--r--doc/src/demos/affine.qdoc30
-rw-r--r--doc/src/demos/anomaly.qdoc47
-rw-r--r--doc/src/demos/arthurplugin.qdoc30
-rw-r--r--doc/src/demos/books.qdoc30
-rw-r--r--doc/src/demos/boxes.qdoc30
-rw-r--r--doc/src/demos/browser.qdoc30
-rw-r--r--doc/src/demos/chip.qdoc30
-rw-r--r--doc/src/demos/composition.qdoc30
-rw-r--r--doc/src/demos/deform.qdoc30
-rw-r--r--doc/src/demos/desktopservices.qdoc47
-rw-r--r--doc/src/demos/digiflip.qdoc45
-rw-r--r--doc/src/demos/embeddeddialogs.qdoc30
-rw-r--r--doc/src/demos/embeddedsvgviewer.qdoc47
-rw-r--r--doc/src/demos/flickable.qdoc47
-rw-r--r--doc/src/demos/flightinfo.qdoc47
-rw-r--r--doc/src/demos/fluidlauncher.qdoc47
-rw-r--r--doc/src/demos/gradients.qdoc30
-rw-r--r--doc/src/demos/interview.qdoc30
-rw-r--r--doc/src/demos/lightmaps.qdoc47
-rw-r--r--doc/src/demos/macmainwindow.qdoc30
-rw-r--r--doc/src/demos/mainwindow.qdoc30
-rw-r--r--doc/src/demos/mediaplayer.qdoc32
-rw-r--r--doc/src/demos/pathstroke.qdoc30
-rw-r--r--doc/src/demos/qtdemo.qdoc67
-rw-r--r--doc/src/demos/raycasting.qdoc47
-rw-r--r--doc/src/demos/spreadsheet.qdoc30
-rw-r--r--doc/src/demos/sqlbrowser.qdoc30
-rw-r--r--doc/src/demos/styledemo.qdoc47
-rw-r--r--doc/src/demos/sub-attaq.qdoc30
-rw-r--r--doc/src/demos/textedit.qdoc30
-rw-r--r--doc/src/demos/undo.qdoc30
-rw-r--r--doc/src/demos/weatherinfo.qdoc47
-rw-r--r--doc/src/deployment.qdoc1478
-rw-r--r--doc/src/deployment/deployment-plugins.qdoc236
-rw-r--r--doc/src/deployment/deployment.qdoc1600
-rw-r--r--doc/src/deployment/qt-conf.qdoc135
-rw-r--r--doc/src/deployment/qtconfig.qdoc56
-rw-r--r--doc/src/designer-manual.qdoc2836
-rw-r--r--doc/src/desktop-integration.qdoc90
-rw-r--r--doc/src/developing-on-mac.qdoc269
-rw-r--r--doc/src/development/activeqt-dumpcpp.qdoc143
-rw-r--r--doc/src/development/activeqt-dumpdoc.qdoc83
-rw-r--r--doc/src/development/activeqt-idc.qdoc82
-rw-r--r--doc/src/development/activeqt-testcon.qdoc77
-rw-r--r--doc/src/development/assistant-manual.qdoc824
-rw-r--r--doc/src/development/debug.qdoc243
-rw-r--r--doc/src/development/designer-manual.qdoc2793
-rw-r--r--doc/src/development/developing-on-mac.qdoc271
-rw-r--r--doc/src/development/developing-with-qt.qdoc74
-rw-r--r--doc/src/development/moc.qdoc335
-rw-r--r--doc/src/development/qmake-manual.qdoc4772
-rw-r--r--doc/src/development/qmsdev.qdoc166
-rw-r--r--doc/src/development/qtestlib.qdoc778
-rw-r--r--doc/src/development/rcc.qdoc95
-rw-r--r--doc/src/development/tools-list.qdoc84
-rw-r--r--doc/src/development/uic.qdoc88
-rwxr-xr-xdoc/src/diagrams/contentspropagation/customwidget.py40
-rwxr-xr-xdoc/src/diagrams/contentspropagation/standardwidgets.py40
-rw-r--r--doc/src/diagrams/dbus-examples.pngbin0 -> 19642 bytes-rw-r--r--doc/src/diagrams/designer-adding-toolbar-action1.pngbin14911 -> 0 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-adding-actions.txt (renamed from doc/src/diagrams/designer-adding-actions.txt)0
-rw-r--r--doc/src/diagrams/designer-manual/designer-adding-dockwidget.txt (renamed from doc/src/diagrams/designer-adding-dockwidget.txt)0
-rw-r--r--doc/src/diagrams/designer-manual/designer-adding-dockwidget1.png (renamed from doc/src/diagrams/designer-adding-dockwidget1.png)bin8897 -> 8897 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-adding-dockwidget1.zip (renamed from doc/src/diagrams/designer-adding-dockwidget1.zip)bin12252 -> 12252 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-adding-dynamic-property.png (renamed from doc/src/diagrams/designer-adding-dynamic-property.png)bin9568 -> 9568 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-adding-menu-action1.png (renamed from doc/src/diagrams/designer-adding-menu-action1.png)bin16173 -> 16173 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-adding-menu-action1.zip (renamed from doc/src/diagrams/designer-adding-menu-action1.zip)bin19245 -> 19245 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-adding-menu-action2.zip (renamed from doc/src/diagrams/designer-adding-menu-action2.zip)bin19587 -> 19587 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-adding-toolbar-action1.pngbin0 -> 21640 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-adding-toolbar-action1.zip (renamed from doc/src/diagrams/designer-adding-toolbar-action1.zip)bin17515 -> 17515 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-adding-toolbar-action2.zip (renamed from doc/src/diagrams/designer-adding-toolbar-action2.zip)bin15433 -> 15433 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-creating-dynamic-property.png (renamed from doc/src/diagrams/designer-creating-dynamic-property.png)bin7561 -> 7561 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-creating-menu-entry1.png (renamed from doc/src/diagrams/designer-creating-menu-entry1.png)bin9618 -> 9618 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-creating-menu-entry1.zip (renamed from doc/src/diagrams/designer-creating-menu-entry1.zip)bin11753 -> 11753 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-creating-menu-entry2.png (renamed from doc/src/diagrams/designer-creating-menu-entry2.png)bin9090 -> 9090 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-creating-menu-entry2.zip (renamed from doc/src/diagrams/designer-creating-menu-entry2.zip)bin11709 -> 11709 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-creating-menu-entry3.png (renamed from doc/src/diagrams/designer-creating-menu-entry3.png)bin5435 -> 5435 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-creating-menu-entry3.zip (renamed from doc/src/diagrams/designer-creating-menu-entry3.zip)bin11520 -> 11520 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-creating-menu-entry4.png (renamed from doc/src/diagrams/designer-creating-menu-entry4.png)bin10141 -> 10141 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-creating-menu-entry4.zip (renamed from doc/src/diagrams/designer-creating-menu-entry4.zip)bin12473 -> 12473 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-creating-menu.txt (renamed from doc/src/diagrams/designer-creating-menu.txt)0
-rw-r--r--doc/src/diagrams/designer-manual/designer-creating-menu1.png (renamed from doc/src/diagrams/designer-creating-menu1.png)bin4733 -> 4733 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-creating-menu1.zip (renamed from doc/src/diagrams/designer-creating-menu1.zip)bin5279 -> 5279 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-creating-menu2.png (renamed from doc/src/diagrams/designer-creating-menu2.png)bin4296 -> 4296 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-creating-menu2.zip (renamed from doc/src/diagrams/designer-creating-menu2.zip)bin5295 -> 5295 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-creating-menu3.png (renamed from doc/src/diagrams/designer-creating-menu3.png)bin5053 -> 5053 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-creating-menu3.zip (renamed from doc/src/diagrams/designer-creating-menu3.zip)bin6197 -> 6197 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-creating-menu4.png (renamed from doc/src/diagrams/designer-creating-menu4.png)bin5274 -> 5274 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-creating-menubar.png (renamed from doc/src/diagrams/designer-creating-menubar.png)bin7024 -> 7024 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-creating-menubar.zip (renamed from doc/src/diagrams/designer-creating-menubar.zip)bin10485 -> 10485 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-edit-resource.zip (renamed from doc/src/diagrams/designer-edit-resource.zip)bin11195 -> 11195 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-find-icon.zip (renamed from doc/src/diagrams/designer-find-icon.zip)bin47820 -> 47820 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-form-layoutfunction-crop.png (renamed from doc/src/diagrams/designer-form-layoutfunction-crop.png)bin5132 -> 5132 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-form-layoutfunction.png (renamed from doc/src/diagrams/designer-form-layoutfunction.png)bin15912 -> 15912 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-form-layoutfunction.zip (renamed from doc/src/diagrams/designer-form-layoutfunction.zip)bin21179 -> 21179 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-main-window.zip (renamed from doc/src/diagrams/designer-main-window.zip)bin35959 -> 35959 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-mainwindow-actions.ui (renamed from doc/src/diagrams/designer-mainwindow-actions.ui)0
-rw-r--r--doc/src/diagrams/designer-manual/designer-palette-brush-editor.zip (renamed from doc/src/diagrams/designer-palette-brush-editor.zip)bin17703 -> 17703 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-palette-editor.zip (renamed from doc/src/diagrams/designer-palette-editor.zip)bin30588 -> 30588 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-palette-gradient-editor.zip (renamed from doc/src/diagrams/designer-palette-gradient-editor.zip)bin55456 -> 55456 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-palette-pattern-editor.zip (renamed from doc/src/diagrams/designer-palette-pattern-editor.zip)bin15845 -> 15845 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-resource-editor.zip (renamed from doc/src/diagrams/designer-resource-editor.zip)bin12287 -> 12287 bytes-rw-r--r--doc/src/diagrams/designer-manual/designer-widget-box.zip (renamed from doc/src/diagrams/designer-widget-box.zip)bin30530 -> 30530 bytes-rw-r--r--doc/src/diagrams/designer-manual/rgbController.ui212
-rw-r--r--doc/src/diagrams/gestures/pangesture.svg273
-rw-r--r--doc/src/diagrams/gestures/pinchgesture.svg341
-rw-r--r--doc/src/diagrams/gestures/swipegesture-details.svg168
-rw-r--r--doc/src/diagrams/gestures/swipegesture.svg158
-rw-r--r--doc/src/diagrams/programs/easingcurve/main.cpp30
-rw-r--r--doc/src/diagrams/programs/mdiarea.py40
-rw-r--r--doc/src/diagrams/programs/qpen-dashpattern.py40
-rw-r--r--doc/src/diagrams/programs/standard_views.py82
-rw-r--r--doc/src/diagrams/qt-embedded-architecture.sk402
-rw-r--r--doc/src/diagrams/qtopiacore/home-screen.pngbin0 -> 13969 bytes-rw-r--r--doc/src/diagrams/qtopiacore/qt-embedded-linux-architecture.sk303
-rw-r--r--doc/src/diagrams/webkit-domtraversal.pngbin0 -> 108725 bytes-rw-r--r--doc/src/diagrams/webkit-simpleselector.pngbin0 -> 82564 bytes-rw-r--r--doc/src/distributingqt.qdoc154
-rw-r--r--doc/src/dnd.qdoc546
-rw-r--r--doc/src/ecmascript.qdoc313
-rw-r--r--doc/src/emb-accel.qdoc143
-rw-r--r--doc/src/emb-charinput.qdoc164
-rw-r--r--doc/src/emb-crosscompiling.qdoc191
-rw-r--r--doc/src/emb-deployment.qdoc111
-rw-r--r--doc/src/emb-differences.qdoc72
-rw-r--r--doc/src/emb-envvars.qdoc168
-rw-r--r--doc/src/emb-features.qdoc147
-rw-r--r--doc/src/emb-fonts.qdoc201
-rw-r--r--doc/src/emb-framebuffer-howto.qdoc53
-rw-r--r--doc/src/emb-install.qdoc197
-rw-r--r--doc/src/emb-kmap2qmap.qdoc84
-rw-r--r--doc/src/emb-makeqpf.qdoc53
-rw-r--r--doc/src/emb-performance.qdoc152
-rw-r--r--doc/src/emb-pointer.qdoc209
-rw-r--r--doc/src/emb-porting.qdoc193
-rw-r--r--doc/src/emb-qvfb.qdoc296
-rw-r--r--doc/src/emb-running.qdoc210
-rw-r--r--doc/src/emb-vnc.qdoc141
-rw-r--r--doc/src/eventsandfilters.qdoc221
-rw-r--r--doc/src/examples-overview.qdoc367
-rw-r--r--doc/src/examples.qdoc437
-rw-r--r--doc/src/examples/2dpainting.qdoc30
-rw-r--r--doc/src/examples/activeqt/comapp.qdoc30
-rw-r--r--doc/src/examples/activeqt/dotnet.qdoc30
-rw-r--r--doc/src/examples/activeqt/hierarchy.qdoc30
-rw-r--r--doc/src/examples/activeqt/menus.qdoc30
-rw-r--r--doc/src/examples/activeqt/multiple.qdoc30
-rw-r--r--doc/src/examples/activeqt/opengl.qdoc30
-rw-r--r--doc/src/examples/activeqt/qutlook.qdoc30
-rw-r--r--doc/src/examples/activeqt/simple.qdoc30
-rw-r--r--doc/src/examples/activeqt/webbrowser.qdoc30
-rw-r--r--doc/src/examples/activeqt/wrapper.qdoc30
-rw-r--r--doc/src/examples/addressbook.qdoc30
-rw-r--r--doc/src/examples/ahigl.qdoc572
-rw-r--r--doc/src/examples/analogclock.qdoc30
-rw-r--r--doc/src/examples/animatedtiles.qdoc50
-rw-r--r--doc/src/examples/appchooser.qdoc52
-rw-r--r--doc/src/examples/application.qdoc32
-rw-r--r--doc/src/examples/arrowpad.qdoc30
-rw-r--r--doc/src/examples/audiodevices.qdoc32
-rw-r--r--doc/src/examples/audioinput.qdoc34
-rw-r--r--doc/src/examples/audiooutput.qdoc32
-rw-r--r--doc/src/examples/basicdrawing.qdoc30
-rw-r--r--doc/src/examples/basicgraphicslayouts.qdoc30
-rw-r--r--doc/src/examples/basiclayouts.qdoc30
-rw-r--r--doc/src/examples/basicsortfiltermodel.qdoc30
-rw-r--r--doc/src/examples/blockingfortuneclient.qdoc30
-rw-r--r--doc/src/examples/blurpicker.qdoc47
-rw-r--r--doc/src/examples/borderlayout.qdoc30
-rw-r--r--doc/src/examples/broadcastreceiver.qdoc30
-rw-r--r--doc/src/examples/broadcastsender.qdoc30
-rw-r--r--doc/src/examples/cachedtable.qdoc30
-rw-r--r--doc/src/examples/calculator.qdoc30
-rw-r--r--doc/src/examples/calculatorbuilder.qdoc30
-rw-r--r--doc/src/examples/calculatorform.qdoc30
-rw-r--r--doc/src/examples/calendar.qdoc30
-rw-r--r--doc/src/examples/calendarwidget.qdoc30
-rw-r--r--doc/src/examples/capabilitiesexample.qdoc30
-rw-r--r--doc/src/examples/charactermap.qdoc30
-rw-r--r--doc/src/examples/chart.qdoc30
-rw-r--r--doc/src/examples/classwizard.qdoc30
-rw-r--r--doc/src/examples/codecs.qdoc30
-rw-r--r--doc/src/examples/codeeditor.qdoc30
-rw-r--r--doc/src/examples/collidingmice-example.qdoc30
-rw-r--r--doc/src/examples/coloreditorfactory.qdoc30
-rw-r--r--doc/src/examples/combowidgetmapper.qdoc30
-rw-r--r--doc/src/examples/completer.qdoc30
-rw-r--r--doc/src/examples/complexpingpong.qdoc32
-rw-r--r--doc/src/examples/concentriccircles.qdoc30
-rw-r--r--doc/src/examples/configdialog.qdoc30
-rw-r--r--doc/src/examples/containerextension.qdoc30
-rw-r--r--doc/src/examples/context2d.qdoc30
-rw-r--r--doc/src/examples/contextsensitivehelp.qdoc47
-rw-r--r--doc/src/examples/contiguouscache.qdoc30
-rw-r--r--doc/src/examples/customcompleter.qdoc30
-rw-r--r--doc/src/examples/customsortfiltermodel.qdoc30
-rw-r--r--doc/src/examples/customtype.qdoc30
-rw-r--r--doc/src/examples/customtypesending.qdoc30
-rw-r--r--doc/src/examples/customwidgetplugin.qdoc30
-rw-r--r--doc/src/examples/dbscreen.qdoc30
-rw-r--r--doc/src/examples/dbus-chat.qdoc30
-rw-r--r--doc/src/examples/dbus-listnames.qdoc30
-rw-r--r--doc/src/examples/dbus-pingpong.qdoc43
-rw-r--r--doc/src/examples/dbus-remotecontrolledcar.qdoc30
-rw-r--r--doc/src/examples/defaultprototypes.qdoc30
-rw-r--r--doc/src/examples/delayedencoding.qdoc30
-rw-r--r--doc/src/examples/diagramscene.qdoc37
-rw-r--r--doc/src/examples/digitalclock.qdoc30
-rw-r--r--doc/src/examples/dirview.qdoc30
-rw-r--r--doc/src/examples/dockwidgets.qdoc30
-rw-r--r--doc/src/examples/dombookmarks.qdoc30
-rw-r--r--doc/src/examples/domtraversal.qdoc139
-rw-r--r--doc/src/examples/draganddroppuzzle.qdoc30
-rw-r--r--doc/src/examples/dragdroprobot.qdoc30
-rw-r--r--doc/src/examples/draggableicons.qdoc30
-rw-r--r--doc/src/examples/draggabletext.qdoc30
-rw-r--r--doc/src/examples/drilldown.qdoc34
-rw-r--r--doc/src/examples/dropsite.qdoc30
-rw-r--r--doc/src/examples/dynamiclayouts.qdoc30
-rw-r--r--doc/src/examples/easing.qdoc51
-rw-r--r--doc/src/examples/echoplugin.qdoc30
-rw-r--r--doc/src/examples/editabletreemodel.qdoc30
-rw-r--r--doc/src/examples/elasticnodes.qdoc30
-rw-r--r--doc/src/examples/eventtransitions.qdoc30
-rw-r--r--doc/src/examples/extension.qdoc30
-rw-r--r--doc/src/examples/factorial.qdoc30
-rw-r--r--doc/src/examples/fademessage.qdoc47
-rw-r--r--doc/src/examples/fancybrowser.qdoc34
-rw-r--r--doc/src/examples/fetchmore.qdoc41
-rw-r--r--doc/src/examples/filetree.qdoc30
-rw-r--r--doc/src/examples/findfiles.qdoc30
-rw-r--r--doc/src/examples/fingerpaint.qdoc50
-rw-r--r--doc/src/examples/flowlayout.qdoc30
-rw-r--r--doc/src/examples/fontsampler.qdoc30
-rw-r--r--doc/src/examples/formextractor.qdoc30
-rw-r--r--doc/src/examples/fortuneclient.qdoc30
-rw-r--r--doc/src/examples/fortuneserver.qdoc30
-rw-r--r--doc/src/examples/framebufferobject.qdoc30
-rw-r--r--doc/src/examples/framebufferobject2.qdoc30
-rw-r--r--doc/src/examples/fridgemagnets.qdoc30
-rw-r--r--doc/src/examples/frozencolumn.qdoc30
-rw-r--r--doc/src/examples/ftp.qdoc76
-rw-r--r--doc/src/examples/globalVariables.qdoc30
-rw-r--r--doc/src/examples/googlechat.qdoc30
-rw-r--r--doc/src/examples/googlesuggest.qdoc178
-rw-r--r--doc/src/examples/grabber.qdoc30
-rw-r--r--doc/src/examples/groupbox.qdoc30
-rw-r--r--doc/src/examples/hellogl.qdoc107
-rw-r--r--doc/src/examples/hellogl_es.qdoc41
-rw-r--r--doc/src/examples/helloscript.qdoc36
-rw-r--r--doc/src/examples/hellotr.qdoc30
-rw-r--r--doc/src/examples/htmlinfo.qdoc89
-rw-r--r--doc/src/examples/http.qdoc30
-rw-r--r--doc/src/examples/i18n.qdoc30
-rw-r--r--doc/src/examples/icons.qdoc30
-rw-r--r--doc/src/examples/imagecomposition.qdoc30
-rw-r--r--doc/src/examples/imagegestures.qdoc116
-rw-r--r--doc/src/examples/imageviewer.qdoc30
-rw-r--r--doc/src/examples/inputpanel.qdoc238
-rw-r--r--doc/src/examples/itemviewspuzzle.qdoc30
-rw-r--r--doc/src/examples/licensewizard.qdoc30
-rw-r--r--doc/src/examples/lighting.qdoc47
-rw-r--r--doc/src/examples/lineedits.qdoc30
-rw-r--r--doc/src/examples/localfortuneclient.qdoc30
-rw-r--r--doc/src/examples/localfortuneserver.qdoc30
-rw-r--r--doc/src/examples/loopback.qdoc30
-rw-r--r--doc/src/examples/mandelbrot.qdoc30
-rw-r--r--doc/src/examples/masterdetail.qdoc30
-rw-r--r--doc/src/examples/mdi.qdoc30
-rw-r--r--doc/src/examples/menus.qdoc30
-rw-r--r--doc/src/examples/mousecalibration.qdoc30
-rw-r--r--doc/src/examples/moveblocks.qdoc30
-rw-r--r--doc/src/examples/movie.qdoc30
-rw-r--r--doc/src/examples/multipleinheritance.qdoc30
-rw-r--r--doc/src/examples/multitouch-dials.qdoc50
-rw-r--r--doc/src/examples/multitouch-knobs.qdoc50
-rw-r--r--doc/src/examples/musicplayerexample.qdoc68
-rw-r--r--doc/src/examples/network-chat.qdoc30
-rw-r--r--doc/src/examples/openvg-star.qdoc47
-rw-r--r--doc/src/examples/orderform.qdoc30
-rw-r--r--doc/src/examples/overpainting.qdoc54
-rw-r--r--doc/src/examples/padnavigator.qdoc30
-rw-r--r--doc/src/examples/painterpaths.qdoc30
-rw-r--r--doc/src/examples/pbuffers.qdoc30
-rw-r--r--doc/src/examples/pbuffers2.qdoc30
-rw-r--r--doc/src/examples/pinchzoom.qdoc50
-rw-r--r--doc/src/examples/pingpong.qdoc30
-rw-r--r--doc/src/examples/pixelator.qdoc30
-rw-r--r--doc/src/examples/plugandpaint.qdoc30
-rw-r--r--doc/src/examples/portedasteroids.qdoc30
-rw-r--r--doc/src/examples/portedcanvas.qdoc30
-rw-r--r--doc/src/examples/previewer.qdoc30
-rw-r--r--doc/src/examples/qobjectxmlmodel.qdoc30
-rw-r--r--doc/src/examples/qtconcurrent-imagescaling.qdoc30
-rw-r--r--doc/src/examples/qtconcurrent-map.qdoc30
-rw-r--r--doc/src/examples/qtconcurrent-progressdialog.qdoc30
-rw-r--r--doc/src/examples/qtconcurrent-runfunction.qdoc30
-rw-r--r--doc/src/examples/qtconcurrent-wordcount.qdoc30
-rw-r--r--doc/src/examples/qtscriptcalculator.qdoc37
-rw-r--r--doc/src/examples/qtscriptcustomclass.qdoc30
-rw-r--r--doc/src/examples/qtscripttetrix.qdoc30
-rw-r--r--doc/src/examples/querymodel.qdoc30
-rw-r--r--doc/src/examples/queuedcustomtype.qdoc30
-rw-r--r--doc/src/examples/qxmlstreambookmarks.qdoc71
-rw-r--r--doc/src/examples/recentfiles.qdoc30
-rw-r--r--doc/src/examples/recipes.qdoc30
-rw-r--r--doc/src/examples/regexp.qdoc30
-rw-r--r--doc/src/examples/relationaltablemodel.qdoc30
-rw-r--r--doc/src/examples/remotecontrol.qdoc30
-rw-r--r--doc/src/examples/rogue.qdoc48
-rw-r--r--doc/src/examples/rsslisting.qdoc30
-rw-r--r--doc/src/examples/samplebuffers.qdoc30
-rw-r--r--doc/src/examples/saxbookmarks.qdoc30
-rw-r--r--doc/src/examples/schema.qdoc30
-rw-r--r--doc/src/examples/screenshot.qdoc30
-rw-r--r--doc/src/examples/scribble.qdoc30
-rw-r--r--doc/src/examples/sdi.qdoc30
-rw-r--r--doc/src/examples/securesocketclient.qdoc30
-rw-r--r--doc/src/examples/semaphores.qdoc30
-rw-r--r--doc/src/examples/settingseditor.qdoc30
-rw-r--r--doc/src/examples/shapedclock.qdoc30
-rw-r--r--doc/src/examples/sharedmemory.qdoc30
-rw-r--r--doc/src/examples/simpledecoration.qdoc30
-rw-r--r--doc/src/examples/simpledommodel.qdoc30
-rw-r--r--doc/src/examples/simpleselector.qdoc128
-rw-r--r--doc/src/examples/simpletextviewer.qdoc30
-rw-r--r--doc/src/examples/simpletreemodel.qdoc30
-rw-r--r--doc/src/examples/simplewidgetmapper.qdoc30
-rw-r--r--doc/src/examples/sipdialog.qdoc30
-rw-r--r--doc/src/examples/sliders.qdoc30
-rw-r--r--doc/src/examples/spinboxdelegate.qdoc30
-rw-r--r--doc/src/examples/spinboxes.qdoc30
-rw-r--r--doc/src/examples/sqlwidgetmapper.qdoc30
-rw-r--r--doc/src/examples/standarddialogs.qdoc30
-rw-r--r--doc/src/examples/stardelegate.qdoc30
-rw-r--r--doc/src/examples/states.qdoc50
-rw-r--r--doc/src/examples/stickman.qdoc39
-rw-r--r--doc/src/examples/styleplugin.qdoc30
-rw-r--r--doc/src/examples/styles.qdoc30
-rw-r--r--doc/src/examples/stylesheet.qdoc30
-rw-r--r--doc/src/examples/svgalib.qdoc30
-rw-r--r--doc/src/examples/svggenerator.qdoc30
-rw-r--r--doc/src/examples/svgviewer.qdoc30
-rw-r--r--doc/src/examples/syntaxhighlighter.qdoc30
-rw-r--r--doc/src/examples/systray.qdoc30
-rw-r--r--doc/src/examples/tabdialog.qdoc30
-rw-r--r--doc/src/examples/tablemodel.qdoc30
-rw-r--r--doc/src/examples/tablet.qdoc58
-rw-r--r--doc/src/examples/taskmenuextension.qdoc30
-rw-r--r--doc/src/examples/tetrix.qdoc30
-rw-r--r--doc/src/examples/textfinder.qdoc30
-rw-r--r--doc/src/examples/textobject.qdoc30
-rw-r--r--doc/src/examples/textures.qdoc30
-rw-r--r--doc/src/examples/threadedfortuneserver.qdoc30
-rw-r--r--doc/src/examples/tooltips.qdoc30
-rw-r--r--doc/src/examples/torrent.qdoc30
-rw-r--r--doc/src/examples/trafficinfo.qdoc32
-rw-r--r--doc/src/examples/trafficlight.qdoc30
-rw-r--r--doc/src/examples/transformations.qdoc30
-rw-r--r--doc/src/examples/treemodelcompleter.qdoc30
-rw-r--r--doc/src/examples/trivialwizard.qdoc30
-rw-r--r--doc/src/examples/trollprint.qdoc30
-rw-r--r--doc/src/examples/twowaybutton.qdoc30
-rw-r--r--doc/src/examples/undoframework.qdoc30
-rw-r--r--doc/src/examples/videographicsitem.qdoc52
-rw-r--r--doc/src/examples/videowidget.qdoc187
-rw-r--r--doc/src/examples/waitconditions.qdoc30
-rw-r--r--doc/src/examples/wiggly.qdoc30
-rw-r--r--doc/src/examples/windowflags.qdoc30
-rw-r--r--doc/src/examples/worldtimeclockbuilder.qdoc30
-rw-r--r--doc/src/examples/worldtimeclockplugin.qdoc30
-rw-r--r--doc/src/examples/xmlstreamlint.qdoc30
-rw-r--r--doc/src/exportedfunctions.qdoc139
-rw-r--r--doc/src/external-resources.qdoc95
-rw-r--r--doc/src/files-and-resources/datastreamformat.qdoc363
-rw-r--r--doc/src/files-and-resources/resources.qdoc203
-rw-r--r--doc/src/focus.qdoc213
-rw-r--r--doc/src/frameworks-technologies/accessible.qdoc624
-rw-r--r--doc/src/frameworks-technologies/activeqt-container.qdoc218
-rw-r--r--doc/src/frameworks-technologies/activeqt-server.qdoc856
-rw-r--r--doc/src/frameworks-technologies/activeqt.qdoc100
-rw-r--r--doc/src/frameworks-technologies/animation.qdoc377
-rw-r--r--doc/src/frameworks-technologies/containers.qdoc813
-rw-r--r--doc/src/frameworks-technologies/dbus-adaptors.qdoc494
-rw-r--r--doc/src/frameworks-technologies/dbus-intro.qdoc229
-rw-r--r--doc/src/frameworks-technologies/desktop-integration.qdoc111
-rw-r--r--doc/src/frameworks-technologies/dnd.qdoc449
-rw-r--r--doc/src/frameworks-technologies/eventsandfilters.qdoc235
-rw-r--r--doc/src/frameworks-technologies/gestures.qdoc173
-rw-r--r--doc/src/frameworks-technologies/graphicsview.qdoc568
-rw-r--r--doc/src/frameworks-technologies/implicit-sharing.qdoc152
-rw-r--r--doc/src/frameworks-technologies/ipc.qdoc89
-rw-r--r--doc/src/frameworks-technologies/model-view-programming.qdoc2501
-rw-r--r--doc/src/frameworks-technologies/phonon.qdoc558
-rw-r--r--doc/src/frameworks-technologies/plugins-howto.qdoc325
-rw-r--r--doc/src/frameworks-technologies/qthelp.qdoc382
-rw-r--r--doc/src/frameworks-technologies/qundo.qdoc113
-rw-r--r--doc/src/frameworks-technologies/richtext.qdoc1226
-rw-r--r--doc/src/frameworks-technologies/statemachine.qdoc566
-rw-r--r--doc/src/frameworks-technologies/templates.qdoc229
-rw-r--r--doc/src/frameworks-technologies/threads.qdoc700
-rw-r--r--doc/src/frameworks-technologies/unicode.qdoc182
-rw-r--r--doc/src/gallery-cde.qdoc392
-rw-r--r--doc/src/gallery-cleanlooks.qdoc392
-rw-r--r--doc/src/gallery-gtk.qdoc358
-rw-r--r--doc/src/gallery-macintosh.qdoc392
-rw-r--r--doc/src/gallery-motif.qdoc392
-rw-r--r--doc/src/gallery-plastique.qdoc392
-rw-r--r--doc/src/gallery-windows.qdoc392
-rw-r--r--doc/src/gallery-windowsvista.qdoc392
-rw-r--r--doc/src/gallery-windowsxp.qdoc392
-rw-r--r--doc/src/gallery.qdoc151
-rw-r--r--doc/src/geometry.qdoc150
-rw-r--r--doc/src/gestures.qdoc170
-rw-r--r--doc/src/getting-started/demos.qdoc193
-rw-r--r--doc/src/getting-started/examples.qdoc1249
-rw-r--r--doc/src/getting-started/how-to-learn-qt.qdoc128
-rw-r--r--doc/src/getting-started/installation.qdoc1028
-rw-r--r--doc/src/getting-started/known-issues.qdoc165
-rw-r--r--doc/src/getting-started/tutorials.qdoc103
-rw-r--r--doc/src/graphicsview.qdoc543
-rw-r--r--doc/src/groups.qdoc487
-rw-r--r--doc/src/guibooks.qdoc121
-rw-r--r--doc/src/how-to-learn-qt.qdoc115
-rw-r--r--doc/src/howtos/HWacceleration.qdoc100
-rw-r--r--doc/src/howtos/accelerators.qdoc138
-rw-r--r--doc/src/howtos/appicon.qdoc231
-rw-r--r--doc/src/howtos/custom-types.qdoc179
-rw-r--r--doc/src/howtos/exceptionsafety.qdoc156
-rw-r--r--doc/src/howtos/guibooks.qdoc122
-rw-r--r--doc/src/howtos/openvg.qdoc322
-rw-r--r--doc/src/howtos/qtdesigner.qdoc144
-rw-r--r--doc/src/howtos/restoring-geometry.qdoc82
-rw-r--r--doc/src/howtos/session.qdoc178
-rw-r--r--doc/src/howtos/sharedlibrary.qdoc176
-rw-r--r--doc/src/howtos/timers.qdoc137
-rw-r--r--doc/src/howtos/unix-signal-handlers.qdoc105
-rw-r--r--doc/src/i18n.qdoc508
-rw-r--r--doc/src/images/activeqt-examples.pngbin0 -> 6671 bytes-rw-r--r--doc/src/images/animatedtiles-example.pngbin0 -> 148019 bytes-rw-r--r--doc/src/images/animation-examples.pngbin0 -> 28060 bytes-rw-r--r--doc/src/images/anomaly-demo.pngbin0 -> 23350 bytes-rw-r--r--doc/src/images/appchooser-example.pngbin0 -> 29447 bytes-rw-r--r--doc/src/images/blurpickereffect-example.pngbin0 -> 104450 bytes-rw-r--r--doc/src/images/browser-demo.pngbin157205 -> 144715 bytes-rw-r--r--doc/src/images/dbus-examples.pngbin0 -> 6181 bytes-rw-r--r--doc/src/images/designer-action-editor.pngbin46233 -> 28378 bytes-rw-r--r--doc/src/images/designer-adding-menu-action.pngbin6168 -> 9962 bytes-rw-r--r--doc/src/images/designer-adding-toolbar-action.pngbin5644 -> 7428 bytes-rw-r--r--doc/src/images/designer-creating-toolbar.pngbin0 -> 18194 bytes-rw-r--r--doc/src/images/designer-removing-toolbar-action.pngbin0 -> 15500 bytes-rw-r--r--doc/src/images/designer-removing-toolbar.pngbin0 -> 13074 bytes-rw-r--r--doc/src/images/easing-example.pngbin0 -> 23843 bytes-rw-r--r--doc/src/images/embeddeddesktopservices-demo.pngbin0 -> 9733 bytes-rw-r--r--doc/src/images/embeddedsvgviewer-demo.pngbin0 -> 7928 bytes-rw-r--r--doc/src/images/fademessageeffect-example-faded.pngbin0 -> 81894 bytes-rw-r--r--doc/src/images/fademessageeffect-example.pngbin0 -> 104987 bytes-rw-r--r--doc/src/images/flickable-demo.pngbin0 -> 21799 bytes-rw-r--r--doc/src/images/flightinfo-demo.pngbin0 -> 34030 bytes-rw-r--r--doc/src/images/fluidlauncher-demo.pngbin0 -> 54636 bytes-rw-r--r--doc/src/images/gestures-examples.pngbin0 -> 28873 bytes-rw-r--r--doc/src/images/gestures.pngbin0 -> 178365 bytes-rw-r--r--doc/src/images/googlesuggest-example.pngbin18809 -> 9006 bytes-rw-r--r--doc/src/images/gradient.pngbin0 -> 222 bytes-rw-r--r--doc/src/images/graphicseffect-blur.pngbin0 -> 58586 bytes-rw-r--r--doc/src/images/graphicseffect-colorize.pngbin0 -> 59745 bytes-rw-r--r--doc/src/images/graphicseffect-drop-shadow.pngbin0 -> 70916 bytes-rw-r--r--doc/src/images/graphicseffect-opacity.pngbin0 -> 66058 bytes-rw-r--r--doc/src/images/graphicseffect-plain.pngbin0 -> 68763 bytes-rw-r--r--doc/src/images/graphicseffect-widget.pngbin0 -> 16693 bytes-rw-r--r--doc/src/images/hoverevents.pngbin0 -> 3210 bytes-rw-r--r--doc/src/images/inputpanel-example.pngbin0 -> 7899 bytes-rw-r--r--doc/src/images/ipc-examples.pngbin0 -> 7727 bytes-rw-r--r--doc/src/images/lightingeffect-example.pngbin0 -> 41132 bytes-rw-r--r--doc/src/images/lightmaps-demo.pngbin0 -> 130788 bytes-rw-r--r--doc/src/images/multitouch-dials-example.pngbin0 -> 17676 bytes-rw-r--r--doc/src/images/multitouch-examples.pngbin0 -> 6691 bytes-rw-r--r--doc/src/images/multitouch-knobs-example.pngbin0 -> 1290 bytes-rw-r--r--doc/src/images/multitouch-pinchzoom-example.pngbin0 -> 48154 bytes-rw-r--r--doc/src/images/pangesture.pngbin0 -> 7153 bytes-rw-r--r--doc/src/images/pbuffers-example.pngbin203754 -> 192554 bytes-rw-r--r--doc/src/images/pinchgesture.pngbin0 -> 10094 bytes-rw-r--r--doc/src/images/platformHWAcc.pngbin0 -> 11068 bytes-rw-r--r--doc/src/images/qq-thumbnail.pngbin0 -> 27022 bytes-rw-r--r--doc/src/images/qt-colors.pngbin3711 -> 11701 bytes-rw-r--r--doc/src/images/qt-embedded-architecture.pngbin37198 -> 8511 bytes-rw-r--r--doc/src/images/qt-embedded-linux-architecture.pngbin0 -> 23199 bytes-rw-r--r--doc/src/images/raycasting-demo.pngbin0 -> 34975 bytes-rw-r--r--doc/src/images/shareddirmodel.pngbin33024 -> 45891 bytes-rw-r--r--doc/src/images/simpleanchorlayout-example.pngbin0 -> 13463 bytes-rw-r--r--doc/src/images/standard-views.pngbin78278 -> 44495 bytes-rw-r--r--doc/src/images/statemachine-examples.pngbin0 -> 3326 bytes-rw-r--r--doc/src/images/states-example.pngbin0 -> 34844 bytes-rw-r--r--doc/src/images/styledemo-demo.pngbin0 -> 180145 bytes-rw-r--r--doc/src/images/swipegesture.pngbin0 -> 6864 bytes-rw-r--r--doc/src/images/video-videographicsitem.pngbin0 -> 54436 bytes-rw-r--r--doc/src/images/video-videowidget.pngbin0 -> 54199 bytes-rw-r--r--doc/src/images/weatherinfo-demo.pngbin0 -> 49688 bytes-rw-r--r--doc/src/images/webkit-domtraversal.pngbin0 -> 91304 bytes-rw-r--r--doc/src/images/webkit-examples.pngbin26874 -> 19323 bytes-rw-r--r--doc/src/images/webkit-simpleselector.pngbin0 -> 130292 bytes-rw-r--r--doc/src/images/whatsnewanimatedtiles.pngbin0 -> 168909 bytes-rw-r--r--doc/src/images/xml-schema.pngbin0 -> 48931 bytes-rw-r--r--doc/src/implicit-sharing.qdoc144
-rw-r--r--doc/src/index.qdoc205
-rw-r--r--doc/src/installation.qdoc794
-rw-r--r--doc/src/internationalization/i18n.qdoc786
-rw-r--r--doc/src/internationalization/linguist-manual.qdoc1521
-rw-r--r--doc/src/introtodbus.qdoc229
-rw-r--r--doc/src/ipc.qdoc91
-rw-r--r--doc/src/known-issues.qdoc143
-rw-r--r--doc/src/layout.qdoc384
-rw-r--r--doc/src/legal/3rdparty.qdoc104
-rw-r--r--doc/src/legal/commercialeditions.qdoc42
-rw-r--r--doc/src/legal/editions.qdoc36
-rw-r--r--doc/src/legal/gpl.qdoc30
-rw-r--r--doc/src/legal/licenses.qdoc492
-rw-r--r--doc/src/legal/opensourceedition.qdoc30
-rw-r--r--doc/src/legal/trademarks.qdoc30
-rw-r--r--doc/src/linguist-manual.qdoc1512
-rw-r--r--doc/src/mac-differences.qdoc339
-rw-r--r--doc/src/metaobjects.qdoc149
-rw-r--r--doc/src/moc.qdoc336
-rw-r--r--doc/src/model-view-programming.qdoc2485
-rw-r--r--doc/src/modules.qdoc1019
-rw-r--r--doc/src/network-programming/qtnetwork.qdoc330
-rw-r--r--doc/src/network-programming/ssl.qdoc93
-rw-r--r--doc/src/object.qdoc132
-rw-r--r--doc/src/objectmodel/metaobjects.qdoc148
-rw-r--r--doc/src/objectmodel/object.qdoc139
-rw-r--r--doc/src/objectmodel/objecttrees.qdoc115
-rw-r--r--doc/src/objectmodel/properties.qdoc278
-rw-r--r--doc/src/objectmodel/signalsandslots.qdoc421
-rw-r--r--doc/src/objecttrees.qdoc117
-rw-r--r--doc/src/overviews.qdoc55
-rw-r--r--doc/src/painting-and-printing/coordsys.qdoc477
-rw-r--r--doc/src/painting-and-printing/paintsystem.qdoc570
-rw-r--r--doc/src/painting-and-printing/printing.qdoc191
-rw-r--r--doc/src/paintsystem.qdoc483
-rw-r--r--doc/src/phonon.qdoc643
-rw-r--r--doc/src/platform-notes-rtos.qdoc220
-rw-r--r--doc/src/platform-notes.qdoc401
-rw-r--r--doc/src/platforms/atomic-operations.qdoc90
-rw-r--r--doc/src/platforms/compiler-notes.qdoc311
-rw-r--r--doc/src/platforms/emb-HwAcc-LinuxEmbedded.qdoc105
-rw-r--r--doc/src/platforms/emb-HwAcc-WinCE.qdoc68
-rw-r--r--doc/src/platforms/emb-accel.qdoc143
-rw-r--r--doc/src/platforms/emb-architecture.qdoc338
-rw-r--r--doc/src/platforms/emb-charinput.qdoc164
-rw-r--r--doc/src/platforms/emb-crosscompiling.qdoc185
-rw-r--r--doc/src/platforms/emb-deployment.qdoc111
-rw-r--r--doc/src/platforms/emb-differences.qdoc72
-rw-r--r--doc/src/platforms/emb-directfb-EmbLinux.qdoc330
-rw-r--r--doc/src/platforms/emb-displaymanagement.qdoc205
-rw-r--r--doc/src/platforms/emb-envvars.qdoc168
-rw-r--r--doc/src/platforms/emb-features.qdoc147
-rw-r--r--doc/src/platforms/emb-fonts.qdoc201
-rw-r--r--doc/src/platforms/emb-framebuffer-howto.qdoc53
-rw-r--r--doc/src/platforms/emb-hardwareacceleration.qdocinc140
-rw-r--r--doc/src/platforms/emb-install.qdoc197
-rw-r--r--doc/src/platforms/emb-kmap2qmap.qdoc84
-rw-r--r--doc/src/platforms/emb-makeqpf.qdoc53
-rw-r--r--doc/src/platforms/emb-opengl-EmbLinux.qdoc164
-rw-r--r--doc/src/platforms/emb-opengl.qdocinc85
-rw-r--r--doc/src/platforms/emb-openvg-EmbLinux.qdoc53
-rw-r--r--doc/src/platforms/emb-openvg.qdocinc288
-rw-r--r--doc/src/platforms/emb-performance.qdoc152
-rw-r--r--doc/src/platforms/emb-pointer.qdoc209
-rw-r--r--doc/src/platforms/emb-porting.qdoc193
-rw-r--r--doc/src/platforms/emb-qvfb.qdoc296
-rw-r--r--doc/src/platforms/emb-running.qdoc210
-rw-r--r--doc/src/platforms/emb-vnc.qdoc141
-rw-r--r--doc/src/platforms/mac-differences.qdoc339
-rw-r--r--doc/src/platforms/platform-notes-rtos.qdoc261
-rw-r--r--doc/src/platforms/platform-notes.qdoc531
-rw-r--r--doc/src/platforms/qt-embedded-linux.qdoc126
-rw-r--r--doc/src/platforms/qt-embedded.qdoc75
-rw-r--r--doc/src/platforms/qtmac-as-native.qdoc159
-rw-r--r--doc/src/platforms/supported-platforms.qdoc175
-rw-r--r--doc/src/platforms/symbian-exceptionsafety.qdoc241
-rw-r--r--doc/src/platforms/symbian-introduction.qdoc197
-rw-r--r--doc/src/platforms/wince-customization.qdoc264
-rw-r--r--doc/src/platforms/wince-introduction.qdoc145
-rw-r--r--doc/src/platforms/wince-opengl.qdoc88
-rw-r--r--doc/src/platforms/wince-openvg.qdoc65
-rw-r--r--doc/src/platforms/wince-signing.qdoc96
-rw-r--r--doc/src/platforms/winsystem.qdoc110
-rw-r--r--doc/src/platforms/x11overlays.qdoc98
-rw-r--r--doc/src/plugins-howto.qdoc470
-rw-r--r--doc/src/porting-qsa.qdoc475
-rw-r--r--doc/src/porting/porting-qsa.qdoc475
-rw-r--r--doc/src/porting/porting4-canvas.qdoc702
-rw-r--r--doc/src/porting/porting4-designer.qdoc349
-rw-r--r--doc/src/porting/porting4-dnd.qdoc152
-rw-r--r--doc/src/porting/porting4-modifiedvirtual.qdocinc (renamed from doc/src/porting4-modifiedvirtual.qdocinc)0
-rw-r--r--doc/src/porting/porting4-obsoletedmechanism.qdocinc (renamed from doc/src/porting4-obsoletedmechanism.qdocinc)0
-rw-r--r--doc/src/porting/porting4-overview.qdoc373
-rw-r--r--doc/src/porting/porting4-removedenumvalues.qdocinc (renamed from doc/src/porting4-removedenumvalues.qdocinc)0
-rw-r--r--doc/src/porting/porting4-removedtypes.qdocinc (renamed from doc/src/porting4-removedtypes.qdocinc)0
-rw-r--r--doc/src/porting/porting4-removedvariantfunctions.qdocinc (renamed from doc/src/porting4-removedvariantfunctions.qdocinc)0
-rw-r--r--doc/src/porting/porting4-removedvirtual.qdocinc (renamed from doc/src/porting4-removedvirtual.qdocinc)0
-rw-r--r--doc/src/porting/porting4-renamedclasses.qdocinc (renamed from doc/src/porting4-renamedclasses.qdocinc)0
-rw-r--r--doc/src/porting/porting4-renamedenumvalues.qdocinc (renamed from doc/src/porting4-renamedenumvalues.qdocinc)0
-rw-r--r--doc/src/porting/porting4-renamedfunctions.qdocinc (renamed from doc/src/porting4-renamedfunctions.qdocinc)0
-rw-r--r--doc/src/porting/porting4-renamedstatic.qdocinc (renamed from doc/src/porting4-renamedstatic.qdocinc)0
-rw-r--r--doc/src/porting/porting4-renamedtypes.qdocinc (renamed from doc/src/porting4-renamedtypes.qdocinc)0
-rw-r--r--doc/src/porting/porting4.qdoc4244
-rw-r--r--doc/src/porting/qt3to4.qdoc179
-rw-r--r--doc/src/porting/qt4-accessibility.qdoc162
-rw-r--r--doc/src/porting/qt4-arthur.qdoc336
-rw-r--r--doc/src/porting/qt4-designer.qdoc298
-rw-r--r--doc/src/porting/qt4-interview.qdoc293
-rw-r--r--doc/src/porting/qt4-mainwindow.qdoc250
-rw-r--r--doc/src/porting/qt4-network.qdoc243
-rw-r--r--doc/src/porting/qt4-scribe.qdoc257
-rw-r--r--doc/src/porting/qt4-sql.qdoc175
-rw-r--r--doc/src/porting/qt4-styles.qdoc157
-rw-r--r--doc/src/porting/qt4-threads.qdoc101
-rw-r--r--doc/src/porting/qt4-tulip.qdoc200
-rw-r--r--doc/src/porting4-canvas.qdoc703
-rw-r--r--doc/src/porting4-designer.qdoc349
-rw-r--r--doc/src/porting4-overview.qdoc373
-rw-r--r--doc/src/porting4.qdoc4231
-rw-r--r--doc/src/printing.qdoc175
-rw-r--r--doc/src/properties.qdoc279
-rw-r--r--doc/src/qaxcontainer.qdoc260
-rw-r--r--doc/src/qaxserver.qdoc898
-rw-r--r--doc/src/qdbusadaptors.qdoc518
-rw-r--r--doc/src/qmake-manual.qdoc4323
-rw-r--r--doc/src/qmsdev.qdoc137
-rw-r--r--doc/src/qsql.qdoc139
-rw-r--r--doc/src/qsqldatatype-table.qdoc581
-rw-r--r--doc/src/qt-conf.qdoc136
-rw-r--r--doc/src/qt-embedded.qdoc76
-rw-r--r--doc/src/qt-resources.qdoc46
-rw-r--r--doc/src/qt-webpages.qdoc250
-rw-r--r--doc/src/qt3support.qdoc81
-rw-r--r--doc/src/qt3to4.qdoc179
-rw-r--r--doc/src/qt4-accessibility.qdoc163
-rw-r--r--doc/src/qt4-arthur.qdoc336
-rw-r--r--doc/src/qt4-designer.qdoc298
-rw-r--r--doc/src/qt4-interview.qdoc293
-rw-r--r--doc/src/qt4-intro.qdoc269
-rw-r--r--doc/src/qt4-mainwindow.qdoc250
-rw-r--r--doc/src/qt4-network.qdoc243
-rw-r--r--doc/src/qt4-scribe.qdoc257
-rw-r--r--doc/src/qt4-sql.qdoc175
-rw-r--r--doc/src/qt4-styles.qdoc157
-rw-r--r--doc/src/qt4-threads.qdoc101
-rw-r--r--doc/src/qt4-tulip.qdoc200
-rw-r--r--doc/src/qtassistant.qdoc54
-rw-r--r--doc/src/qtconfig.qdoc56
-rw-r--r--doc/src/qtcore.qdoc60
-rw-r--r--doc/src/qtdbus.qdoc124
-rw-r--r--doc/src/qtdemo.qdoc67
-rw-r--r--doc/src/qtdesigner.qdoc168
-rw-r--r--doc/src/qtestlib.qdoc779
-rw-r--r--doc/src/qtgui.qdoc59
-rw-r--r--doc/src/qthelp.qdoc410
-rw-r--r--doc/src/qtmac-as-native.qdoc202
-rw-r--r--doc/src/qtmain.qdoc93
-rw-r--r--doc/src/qtnetwork.qdoc344
-rw-r--r--doc/src/qtopengl.qdoc163
-rw-r--r--doc/src/qtopenvg.qdoc324
-rw-r--r--doc/src/qtopiacore-architecture.qdoc338
-rw-r--r--doc/src/qtopiacore-displaymanagement.qdoc205
-rw-r--r--doc/src/qtopiacore-opengl.qdoc227
-rw-r--r--doc/src/qtopiacore.qdoc114
-rw-r--r--doc/src/qtscript.qdoc1934
-rw-r--r--doc/src/qtscriptdebugger-manual.qdoc437
-rw-r--r--doc/src/qtscriptextensions.qdoc126
-rw-r--r--doc/src/qtscripttools.qdoc72
-rw-r--r--doc/src/qtsql.qdoc571
-rw-r--r--doc/src/qtsvg.qdoc135
-rw-r--r--doc/src/qttest.qdoc70
-rw-r--r--doc/src/qtuiloader.qdoc82
-rw-r--r--doc/src/qtxml.qdoc615
-rw-r--r--doc/src/qtxmlpatterns.qdoc968
-rw-r--r--doc/src/qundo.qdoc113
-rw-r--r--doc/src/rcc.qdoc96
-rw-r--r--doc/src/resources.qdoc192
-rw-r--r--doc/src/richtext.qdoc1076
-rw-r--r--doc/src/scripting/ecmascript.qdoc312
-rw-r--r--doc/src/scripting/qtscriptdebugger-manual.qdoc436
-rw-r--r--doc/src/scripting/qtscriptextensions.qdoc115
-rw-r--r--doc/src/scripting/scripting.qdoc1885
-rw-r--r--doc/src/session.qdoc177
-rw-r--r--doc/src/sharedlibrary.qdoc186
-rw-r--r--doc/src/signalsandslots.qdoc422
-rw-r--r--doc/src/snippets/accessibilityfactorysnippet.cpp30
-rw-r--r--doc/src/snippets/accessibilitypluginsnippet.cpp30
-rw-r--r--doc/src/snippets/accessibilityslidersnippet.cpp30
-rw-r--r--doc/src/snippets/alphachannel.cpp30
-rw-r--r--doc/src/snippets/animation/sequential/main.cpp41
-rw-r--r--doc/src/snippets/animation/sequential/tracer.cpp41
-rw-r--r--doc/src/snippets/animation/sequential/tracer.h41
-rw-r--r--doc/src/snippets/audio/main.cpp148
-rw-r--r--doc/src/snippets/audioeffects.cpp46
-rw-r--r--doc/src/snippets/brush/brush.cpp30
-rw-r--r--doc/src/snippets/brush/gradientcreationsnippet.cpp30
-rw-r--r--doc/src/snippets/brushstyles/main.cpp30
-rw-r--r--doc/src/snippets/brushstyles/renderarea.cpp30
-rw-r--r--doc/src/snippets/brushstyles/renderarea.h30
-rw-r--r--doc/src/snippets/brushstyles/stylewidget.cpp30
-rw-r--r--doc/src/snippets/brushstyles/stylewidget.h30
-rw-r--r--doc/src/snippets/buffer/buffer.cpp30
-rw-r--r--doc/src/snippets/clipboard/clipwindow.cpp30
-rw-r--r--doc/src/snippets/clipboard/clipwindow.h30
-rw-r--r--doc/src/snippets/clipboard/main.cpp30
-rw-r--r--doc/src/snippets/code/doc.src.qtscripttools.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_appicon.qdoc45
-rw-r--r--doc/src/snippets/code/doc_src_assistant-manual.qdoc49
-rw-r--r--doc/src/snippets/code/doc_src_atomic-operations.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_compiler-notes.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_containers.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_coordsys.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_debug.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_deployment.qdoc82
-rw-r--r--doc/src/snippets/code/doc_src_designer-manual.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_dnd.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_emb-charinput.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_emb-crosscompiling.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_emb-envvars.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_emb-features.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_emb-fonts.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_emb-install.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_emb-performance.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_emb-pointer.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_emb-qvfb.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_emb-running.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_emb-vnc.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_activeqt_comapp.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_activeqt_dotnet.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_activeqt_menus.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_ahigl.qdoc8
-rw-r--r--doc/src/snippets/code/doc_src_examples_application.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_arrowpad.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_containerextension.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_customwidgetplugin.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_dropsite.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_editabletreemodel.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_hellotr.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_icons.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_imageviewer.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_qtscriptcustomclass.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_simpledommodel.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_simpletreemodel.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_svgalib.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_taskmenuextension.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_textfinder.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_trollprint.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_tutorial.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_examples_worldtimeclockplugin.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_exportedfunctions.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_gpl.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_graphicsview.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_groups.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_i18n.qdoc43
-rw-r--r--doc/src/snippets/code/doc_src_installation.qdoc95
-rw-r--r--doc/src/snippets/code/doc_src_introtodbus.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_layout.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_lgpl.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_licenses.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_linguist-manual.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_mac-differences.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_moc.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_model-view-programming.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_modules.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_objecttrees.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_phonon-api.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_phonon.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_platform-notes.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_plugins-howto.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_porting-qsa.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_porting4-canvas.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_porting4-designer.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_porting4.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_properties.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_q3asciidict.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_q3dict.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_q3intdict.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_q3memarray.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_q3ptrdict.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_q3ptrlist.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_q3valuelist.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_q3valuestack.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_q3valuevector.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qalgorithms.qdoc43
-rw-r--r--doc/src/snippets/code/doc_src_qaxcontainer.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qaxserver.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qcache.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qdbusadaptors.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qiterator.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qmake-manual.qdoc160
-rw-r--r--doc/src/snippets/code/doc_src_qnamespace.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qpair.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qplugin.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qset.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qsignalspy.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qt-conf.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qt3support.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qt3to4.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qt4-accessibility.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qt4-arthur.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qt4-intro.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qt4-sql.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qt4-styles.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qt4-tulip.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qtcore.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qtdbus.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qtdesigner.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qtestevent.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qtestlib.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qtgui.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qthelp.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qtmac-as-native.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qtmultimedia.qdoc49
-rw-r--r--doc/src/snippets/code/doc_src_qtnetwork.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qtopengl.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qtscript.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qtscriptextensions.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qtsql.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qtsvg.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qttest.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qtuiloader.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qtxml.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_qtxmlpatterns.qdoc119
-rw-r--r--doc/src/snippets/code/doc_src_qvarlengtharray.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_rcc.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_resources.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_richtext.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_session.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_sql-driver.qdoc43
-rw-r--r--doc/src/snippets/code/doc_src_styles.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_stylesheet.qdoc144
-rw-r--r--doc/src/snippets/code/doc_src_symbian-introduction.qdoc69
-rw-r--r--doc/src/snippets/code/doc_src_uic.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_unicode.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_unix-signal-handlers.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_wince-customization.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_wince-introduction.qdoc41
-rw-r--r--doc/src/snippets/code/doc_src_wince-opengl.qdoc41
-rw-r--r--doc/src/snippets/code/src.gui.text.qtextdocumentwriter.cpp41
-rw-r--r--doc/src/snippets/code/src.qdbus.qdbuspendingcall.cpp41
-rw-r--r--doc/src/snippets/code/src.qdbus.qdbuspendingreply.cpp41
-rw-r--r--doc/src/snippets/code/src.scripttools.qscriptenginedebugger.cpp41
-rw-r--r--doc/src/snippets/code/src_activeqt_container_qaxbase.cpp41
-rw-r--r--doc/src/snippets/code/src_activeqt_container_qaxscript.cpp41
-rw-r--r--doc/src/snippets/code/src_activeqt_control_qaxbindable.cpp41
-rw-r--r--doc/src/snippets/code/src_activeqt_control_qaxfactory.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_codecs_qtextcodec.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_codecs_qtextcodecplugin.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_concurrent_qfuture.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_concurrent_qfuturesynchronizer.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_concurrent_qfuturewatcher.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_concurrent_qtconcurrentexception.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_concurrent_qthreadpool.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_global_qglobal.cpp44
-rw-r--r--doc/src/snippets/code/src_corelib_io_qabstractfileengine.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_io_qdatastream.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_io_qdir.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_io_qdiriterator.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_io_qfile.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_io_qfileinfo.cpp47
-rw-r--r--doc/src/snippets/code/src_corelib_io_qiodevice.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_io_qprocess.cpp43
-rw-r--r--doc/src/snippets/code/src_corelib_io_qsettings.cpp43
-rw-r--r--doc/src/snippets/code/src_corelib_io_qtemporaryfile.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_io_qtextstream.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_io_qurl.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qabstracteventdispatcher.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qcoreapplication.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qmetaobject.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qmimedata.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qobject.cpp72
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qsystemsemaphore.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qtimer.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qvariant.cpp42
-rw-r--r--doc/src/snippets/code/src_corelib_plugin_qlibrary.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_plugin_quuid.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_statemachine_qstatemachine.cpp56
-rw-r--r--doc/src/snippets/code/src_corelib_thread_qatomic.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_thread_qmutex.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_thread_qmutexpool.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_thread_qreadwritelock.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_thread_qsemaphore.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_thread_qthread.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qbitarray.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qbytearray.cpp43
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qdatetime.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qeasingcurve.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qhash.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qlinkedlist.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qlistdata.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qlocale.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qmap.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qpoint.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qqueue.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qrect.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qregexp.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp144
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qsize.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qstring.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qtimeline.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qvector.cpp41
-rw-r--r--doc/src/snippets/code/src_corelib_xml_qxmlstream.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_accessible_qaccessible.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_dialogs_qabstractprintdialog.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_dialogs_qfontdialog.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_dialogs_qmessagebox.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_dialogs_qwizard.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_effects_qgraphicseffect.cpp84
-rw-r--r--doc/src/snippets/code/src_gui_embedded_qcopchannel_qws.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_embedded_qmouse_qws.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_embedded_qmousetslib_qws.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_embedded_qscreen_qws.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_embedded_qtransportauth_qws.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_embedded_qwindowsystem_qws.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_graphicsview_qgraphicsgridlayout.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_graphicsview_qgraphicslinearlayout.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_graphicsview_qgraphicsproxywidget.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_graphicsview_qgraphicsscene.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_graphicsview_qgraphicssceneevent.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_graphicsview_qgraphicsview.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_graphicsview_qgraphicswidget.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_image_qbitmap.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_image_qicon.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_image_qimage.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_image_qimagereader.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_image_qimagewriter.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_image_qmovie.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_image_qpixmap.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_image_qpixmapcache.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_image_qpixmapfilter.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_itemviews_qabstractitemview.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_itemviews_qdatawidgetmapper.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_itemviews_qitemeditorfactory.cpp43
-rw-r--r--doc/src/snippets/code/src_gui_itemviews_qitemselectionmodel.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_itemviews_qstandarditemmodel.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_itemviews_qtablewidget.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_itemviews_qtreewidget.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qaction.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qapplication.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qapplication_x11.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qclipboard.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qevent.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qformlayout.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qkeysequence.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qlayout.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qlayoutitem.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qshortcut.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qshortcutmap.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qsound.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qwidget.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_painting_qbrush.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_painting_qcolor.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_painting_qdrawutil.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_painting_qmatrix.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_painting_qpainter.cpp58
-rw-r--r--doc/src/snippets/code/src_gui_painting_qpainterpath.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_painting_qpen.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_painting_qregion.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_painting_qregion_unix.cpp47
-rw-r--r--doc/src/snippets/code/src_gui_painting_qtransform.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_qproxystyle.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_styles_qstyle.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_styles_qstyleoption.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_text_qfont.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_text_qfontmetrics.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_text_qsyntaxhighlighter.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_text_qtextcursor.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_text_qtextdocument.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_text_qtextlayout.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_util_qcompleter.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_util_qdesktopservices.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_util_qundostack.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qabstractbutton.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qabstractspinbox.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qcalendarwidget.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qcheckbox.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qdatetimeedit.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qdockwidget.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qframe.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qgroupbox.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qlabel.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qlineedit.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qmainwindow.cpp60
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qmenu.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qmenubar.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qplaintextedit.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qpushbutton.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qradiobutton.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qrubberband.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qscrollarea.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qspinbox.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qsplashscreen.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qsplitter.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qstatusbar.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qtextbrowser.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qtextedit.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qvalidator.cpp41
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qworkspace.cpp41
-rw-r--r--doc/src/snippets/code/src_network_access_qftp.cpp41
-rw-r--r--doc/src/snippets/code/src_network_access_qhttp.cpp41
-rw-r--r--doc/src/snippets/code/src_network_access_qnetworkaccessmanager.cpp41
-rw-r--r--doc/src/snippets/code/src_network_access_qnetworkdiskcache.cpp41
-rw-r--r--doc/src/snippets/code/src_network_access_qnetworkreply.cpp41
-rw-r--r--doc/src/snippets/code/src_network_access_qnetworkrequest.cpp41
-rw-r--r--doc/src/snippets/code/src_network_kernel_qhostaddress.cpp41
-rw-r--r--doc/src/snippets/code/src_network_kernel_qhostinfo.cpp41
-rw-r--r--doc/src/snippets/code/src_network_kernel_qnetworkproxy.cpp41
-rw-r--r--doc/src/snippets/code/src_network_socket_qabstractsocket.cpp41
-rw-r--r--doc/src/snippets/code/src_network_socket_qlocalsocket_unix.cpp41
-rw-r--r--doc/src/snippets/code/src_network_socket_qnativesocketengine.cpp41
-rw-r--r--doc/src/snippets/code/src_network_socket_qtcpserver.cpp41
-rw-r--r--doc/src/snippets/code/src_network_socket_qudpsocket.cpp41
-rw-r--r--doc/src/snippets/code/src_network_ssl_qsslcertificate.cpp41
-rw-r--r--doc/src/snippets/code/src_network_ssl_qsslconfiguration.cpp41
-rw-r--r--doc/src/snippets/code/src_network_ssl_qsslsocket.cpp41
-rw-r--r--doc/src/snippets/code/src_opengl_qgl.cpp41
-rw-r--r--doc/src/snippets/code/src_opengl_qglcolormap.cpp41
-rw-r--r--doc/src/snippets/code/src_opengl_qglpixelbuffer.cpp41
-rw-r--r--doc/src/snippets/code/src_opengl_qglshaderprogram.cpp95
-rw-r--r--doc/src/snippets/code/src_qdbus_qdbusabstractinterface.cpp41
-rw-r--r--doc/src/snippets/code/src_qdbus_qdbusargument.cpp41
-rw-r--r--doc/src/snippets/code/src_qdbus_qdbuscontext.cpp41
-rw-r--r--doc/src/snippets/code/src_qdbus_qdbusinterface.cpp41
-rw-r--r--doc/src/snippets/code/src_qdbus_qdbusmetatype.cpp41
-rw-r--r--doc/src/snippets/code/src_qdbus_qdbusreply.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_canvas_q3canvas.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_dialogs_q3filedialog.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_dialogs_q3progressdialog.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_itemviews_q3iconview.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_itemviews_q3listview.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_itemviews_q3table.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_network_q3dns.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_network_q3ftp.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_network_q3http.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_network_q3localfs.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_network_q3networkprotocol.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_network_q3socket.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_network_q3socketdevice.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_network_q3url.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_network_q3urloperator.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_other_q3accel.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_other_q3mimefactory.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_other_q3process.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_other_q3process_unix.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_painting_q3paintdevicemetrics.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_painting_q3painter.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_painting_q3picture.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_sql_q3databrowser.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_sql_q3datatable.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_sql_q3dataview.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_sql_q3sqlcursor.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_sql_q3sqlform.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_sql_q3sqlmanager_p.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_sql_q3sqlpropertymap.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_sql_q3sqlselectcursor.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_text_q3simplerichtext.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_text_q3textbrowser.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_text_q3textedit.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_text_q3textstream.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_tools_q3cstring.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_tools_q3deepcopy.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_tools_q3garray.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_tools_q3signal.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_widgets_q3combobox.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_widgets_q3datetimeedit.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_widgets_q3dockarea.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_widgets_q3dockwindow.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_widgets_q3gridview.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_widgets_q3header.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_widgets_q3mainwindow.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_widgets_q3scrollview.cpp41
-rw-r--r--doc/src/snippets/code/src_qt3support_widgets_q3whatsthis.cpp41
-rw-r--r--doc/src/snippets/code/src_qtestlib_qtestcase.cpp47
-rw-r--r--doc/src/snippets/code/src_script_qscriptable.cpp41
-rw-r--r--doc/src/snippets/code/src_script_qscriptclass.cpp41
-rw-r--r--doc/src/snippets/code/src_script_qscriptcontext.cpp41
-rw-r--r--doc/src/snippets/code/src_script_qscriptengine.cpp41
-rw-r--r--doc/src/snippets/code/src_script_qscriptengineagent.cpp41
-rw-r--r--doc/src/snippets/code/src_script_qscriptvalue.cpp41
-rw-r--r--doc/src/snippets/code/src_script_qscriptvalueiterator.cpp41
-rw-r--r--doc/src/snippets/code/src_sql_kernel_qsqldatabase.cpp41
-rw-r--r--doc/src/snippets/code/src_sql_kernel_qsqldriver.cpp41
-rw-r--r--doc/src/snippets/code/src_sql_kernel_qsqlerror.cpp41
-rw-r--r--doc/src/snippets/code/src_sql_kernel_qsqlindex.cpp41
-rw-r--r--doc/src/snippets/code/src_sql_kernel_qsqlquery.cpp41
-rw-r--r--doc/src/snippets/code/src_sql_kernel_qsqlresult.cpp41
-rw-r--r--doc/src/snippets/code/src_sql_models_qsqlquerymodel.cpp41
-rw-r--r--doc/src/snippets/code/src_svg_qgraphicssvgitem.cpp41
-rw-r--r--doc/src/snippets/code/src_xml_dom_qdom.cpp41
-rw-r--r--doc/src/snippets/code/src_xml_sax_qxml.cpp41
-rw-r--r--doc/src/snippets/code/src_xmlpatterns_api_qabstracturiresolver.cpp41
-rw-r--r--doc/src/snippets/code/src_xmlpatterns_api_qabstractxmlforwarditerator.cpp41
-rw-r--r--doc/src/snippets/code/src_xmlpatterns_api_qabstractxmlnodemodel.cpp41
-rw-r--r--doc/src/snippets/code/src_xmlpatterns_api_qabstractxmlreceiver.cpp41
-rw-r--r--doc/src/snippets/code/src_xmlpatterns_api_qsimplexmlnodemodel.cpp41
-rw-r--r--doc/src/snippets/code/src_xmlpatterns_api_qxmlformatter.cpp41
-rw-r--r--doc/src/snippets/code/src_xmlpatterns_api_qxmlname.cpp41
-rw-r--r--doc/src/snippets/code/src_xmlpatterns_api_qxmlquery.cpp41
-rw-r--r--doc/src/snippets/code/src_xmlpatterns_api_qxmlresultitems.cpp41
-rw-r--r--doc/src/snippets/code/src_xmlpatterns_api_qxmlserializer.cpp41
-rw-r--r--doc/src/snippets/code/tools_assistant_compat_lib_qassistantclient.cpp41
-rw-r--r--doc/src/snippets/code/tools_designer_src_lib_extension_default_extensionfactory.cpp41
-rw-r--r--doc/src/snippets/code/tools_designer_src_lib_extension_extension.cpp41
-rw-r--r--doc/src/snippets/code/tools_designer_src_lib_extension_qextensionmanager.cpp41
-rw-r--r--doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformeditor.cpp41
-rw-r--r--doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformwindow.cpp41
-rw-r--r--doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformwindowcursor.cpp41
-rw-r--r--doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformwindowmanager.cpp41
-rw-r--r--doc/src/snippets/code/tools_designer_src_lib_sdk_abstractobjectinspector.cpp41
-rw-r--r--doc/src/snippets/code/tools_designer_src_lib_sdk_abstractpropertyeditor.cpp41
-rw-r--r--doc/src/snippets/code/tools_designer_src_lib_sdk_abstractwidgetbox.cpp41
-rw-r--r--doc/src/snippets/code/tools_designer_src_lib_uilib_abstractformbuilder.cpp41
-rw-r--r--doc/src/snippets/code/tools_designer_src_lib_uilib_formbuilder.cpp41
-rw-r--r--doc/src/snippets/code/tools_patternist_qapplicationargumentparser.cpp41
-rw-r--r--doc/src/snippets/code/tools_shared_qtgradienteditor_qtgradientdialog.cpp41
-rw-r--r--doc/src/snippets/code/tools_shared_qtpropertybrowser_qtpropertybrowser.cpp41
-rw-r--r--doc/src/snippets/code/tools_shared_qtpropertybrowser_qtvariantproperty.cpp41
-rw-r--r--doc/src/snippets/code/tools_shared_qttoolbardialog_qttoolbardialog.cpp41
-rw-r--r--doc/src/snippets/colors/colors.pro2
-rw-r--r--doc/src/snippets/colors/main.cpp52
-rw-r--r--doc/src/snippets/colors/window.cpp131
-rw-r--r--doc/src/snippets/colors/window.h53
-rw-r--r--doc/src/snippets/complexpingpong-example.txt (renamed from doc/src/snippets/complexpingpong-example.qdoc)0
-rw-r--r--doc/src/snippets/coordsys/coordsys.cpp30
-rw-r--r--doc/src/snippets/customstyle/customstyle.cpp30
-rw-r--r--doc/src/snippets/customstyle/customstyle.h30
-rw-r--r--doc/src/snippets/customstyle/main.cpp30
-rw-r--r--doc/src/snippets/customviewstyle.cpp41
-rw-r--r--doc/src/snippets/dbus-pingpong-example.txt (renamed from doc/src/snippets/dbus-pingpong-example.qdoc)0
-rw-r--r--doc/src/snippets/designer/autoconnection/imagedialog.cpp30
-rw-r--r--doc/src/snippets/designer/autoconnection/imagedialog.h30
-rw-r--r--doc/src/snippets/designer/autoconnection/main.cpp30
-rw-r--r--doc/src/snippets/designer/imagedialog/main.cpp30
-rw-r--r--doc/src/snippets/designer/multipleinheritance/imagedialog.cpp30
-rw-r--r--doc/src/snippets/designer/multipleinheritance/imagedialog.h30
-rw-r--r--doc/src/snippets/designer/multipleinheritance/main.cpp30
-rw-r--r--doc/src/snippets/designer/noautoconnection/imagedialog.cpp30
-rw-r--r--doc/src/snippets/designer/noautoconnection/imagedialog.h30
-rw-r--r--doc/src/snippets/designer/noautoconnection/main.cpp30
-rw-r--r--doc/src/snippets/designer/singleinheritance/imagedialog.cpp30
-rw-r--r--doc/src/snippets/designer/singleinheritance/imagedialog.h30
-rw-r--r--doc/src/snippets/designer/singleinheritance/main.cpp30
-rw-r--r--doc/src/snippets/dialogs/dialogs.cpp30
-rw-r--r--doc/src/snippets/dockwidgets/main.cpp30
-rw-r--r--doc/src/snippets/dockwidgets/mainwindow.cpp30
-rw-r--r--doc/src/snippets/dockwidgets/mainwindow.h30
-rw-r--r--doc/src/snippets/draganddrop/dragwidget.cpp30
-rw-r--r--doc/src/snippets/draganddrop/dragwidget.h30
-rw-r--r--doc/src/snippets/draganddrop/main.cpp30
-rw-r--r--doc/src/snippets/draganddrop/mainwindow.cpp30
-rw-r--r--doc/src/snippets/draganddrop/mainwindow.h30
-rw-r--r--doc/src/snippets/dragging/main.cpp30
-rw-r--r--doc/src/snippets/dragging/mainwindow.cpp30
-rw-r--r--doc/src/snippets/dragging/mainwindow.h30
-rw-r--r--doc/src/snippets/dropactions/main.cpp30
-rw-r--r--doc/src/snippets/dropactions/window.cpp30
-rw-r--r--doc/src/snippets/dropactions/window.h30
-rw-r--r--doc/src/snippets/droparea.cpp32
-rw-r--r--doc/src/snippets/dropevents/main.cpp30
-rw-r--r--doc/src/snippets/dropevents/window.cpp30
-rw-r--r--doc/src/snippets/dropevents/window.h30
-rw-r--r--doc/src/snippets/droprectangle/main.cpp30
-rw-r--r--doc/src/snippets/droprectangle/window.cpp30
-rw-r--r--doc/src/snippets/droprectangle/window.h30
-rw-r--r--doc/src/snippets/eventfilters/filterobject.cpp30
-rw-r--r--doc/src/snippets/eventfilters/filterobject.h30
-rw-r--r--doc/src/snippets/eventfilters/main.cpp30
-rw-r--r--doc/src/snippets/events/events.cpp30
-rw-r--r--doc/src/snippets/explicitlysharedemployee/employee.cpp30
-rw-r--r--doc/src/snippets/explicitlysharedemployee/employee.h30
-rw-r--r--doc/src/snippets/explicitlysharedemployee/main.cpp30
-rw-r--r--doc/src/snippets/file/file.cpp30
-rw-r--r--doc/src/snippets/filedialogurls.cpp42
-rw-r--r--doc/src/snippets/fileinfo/main.cpp30
-rw-r--r--doc/src/snippets/gestures/imageviewer/imagewidget.cpp364
-rw-r--r--doc/src/snippets/gestures/imageviewer/imagewidget.h137
-rw-r--r--doc/src/snippets/gestures/imageviewer/tapandholdgesture.cpp159
-rw-r--r--doc/src/snippets/gestures/imageviewer/tapandholdgesture.h74
-rw-r--r--doc/src/snippets/gestures/qgesture.cpp283
-rw-r--r--doc/src/snippets/gestures/qgesture.h101
-rw-r--r--doc/src/snippets/gestures/qstandardgestures.cpp483
-rw-r--r--doc/src/snippets/gestures/qstandardgestures.h126
-rw-r--r--doc/src/snippets/graphicssceneadditemsnippet.cpp30
-rw-r--r--doc/src/snippets/i18n-non-qt-class/main.cpp30
-rw-r--r--doc/src/snippets/i18n-non-qt-class/myclass.cpp30
-rw-r--r--doc/src/snippets/i18n-non-qt-class/myclass.h30
-rw-r--r--doc/src/snippets/image/image.cpp30
-rw-r--r--doc/src/snippets/image/supportedformat.cpp30
-rw-r--r--doc/src/snippets/inherited-slot/button.cpp30
-rw-r--r--doc/src/snippets/inherited-slot/button.h30
-rw-r--r--doc/src/snippets/inherited-slot/main.cpp30
-rw-r--r--doc/src/snippets/itemselection/main.cpp30
-rw-r--r--doc/src/snippets/itemselection/model.cpp30
-rw-r--r--doc/src/snippets/itemselection/model.h30
-rw-r--r--doc/src/snippets/javastyle.cpp30
-rw-r--r--doc/src/snippets/layouts/layouts.cpp30
-rw-r--r--doc/src/snippets/mainwindowsnippet.cpp30
-rw-r--r--doc/src/snippets/matrix/matrix.cpp30
-rw-r--r--doc/src/snippets/mdiareasnippets.cpp30
-rw-r--r--doc/src/snippets/medianodesnippet.cpp41
-rw-r--r--doc/src/snippets/moc/main.cpp30
-rw-r--r--doc/src/snippets/moc/myclass1.h30
-rw-r--r--doc/src/snippets/moc/myclass2.h30
-rw-r--r--doc/src/snippets/moc/myclass3.h30
-rw-r--r--doc/src/snippets/modelview-subclasses/main.cpp30
-rw-r--r--doc/src/snippets/modelview-subclasses/model.cpp30
-rw-r--r--doc/src/snippets/modelview-subclasses/model.h30
-rw-r--r--doc/src/snippets/modelview-subclasses/view.cpp30
-rw-r--r--doc/src/snippets/modelview-subclasses/view.h30
-rw-r--r--doc/src/snippets/modelview-subclasses/window.cpp30
-rw-r--r--doc/src/snippets/modelview-subclasses/window.h30
-rw-r--r--doc/src/snippets/myscrollarea.cpp30
-rw-r--r--doc/src/snippets/network/tcpwait.cpp30
-rw-r--r--doc/src/snippets/ntfsp.cpp40
-rw-r--r--doc/src/snippets/painterpath/painterpath.cpp30
-rw-r--r--doc/src/snippets/persistentindexes/main.cpp30
-rw-r--r--doc/src/snippets/persistentindexes/mainwindow.cpp30
-rw-r--r--doc/src/snippets/persistentindexes/mainwindow.h30
-rw-r--r--doc/src/snippets/persistentindexes/model.cpp30
-rw-r--r--doc/src/snippets/persistentindexes/model.h30
-rw-r--r--doc/src/snippets/phonon.cpp30
-rw-r--r--doc/src/snippets/phonon/samplebackend/main.cpp41
-rw-r--r--doc/src/snippets/phononeffectparameter.cpp45
-rw-r--r--doc/src/snippets/phononobjectdescription.cpp43
-rw-r--r--doc/src/snippets/picture/picture.cpp30
-rw-r--r--doc/src/snippets/plaintextlayout/main.cpp30
-rw-r--r--doc/src/snippets/plaintextlayout/window.cpp30
-rw-r--r--doc/src/snippets/plaintextlayout/window.h30
-rw-r--r--doc/src/snippets/pointer/pointer.cpp30
-rw-r--r--doc/src/snippets/polygon/polygon.cpp30
-rw-r--r--doc/src/snippets/porting4-dropevents/main.cpp30
-rw-r--r--doc/src/snippets/porting4-dropevents/window.cpp30
-rw-r--r--doc/src/snippets/porting4-dropevents/window.h30
-rw-r--r--doc/src/snippets/printing-qprinter/errors.cpp41
-rw-r--r--doc/src/snippets/printing-qprinter/main.cpp30
-rw-r--r--doc/src/snippets/printing-qprinter/object.cpp30
-rw-r--r--doc/src/snippets/printing-qprinter/object.h30
-rw-r--r--doc/src/snippets/process/process.cpp30
-rw-r--r--doc/src/snippets/qabstractsliderisnippet.cpp30
-rw-r--r--doc/src/snippets/qcalendarwidget/main.cpp30
-rw-r--r--doc/src/snippets/qcolumnview/main.cpp30
-rw-r--r--doc/src/snippets/qdbusextratypes/qdbusextratypes.cpp30
-rw-r--r--doc/src/snippets/qdebug/qdebugsnippet.cpp30
-rw-r--r--doc/src/snippets/qdir-filepaths/main.cpp30
-rw-r--r--doc/src/snippets/qdir-listfiles/main.cpp30
-rw-r--r--doc/src/snippets/qdir-namefilters/main.cpp30
-rw-r--r--doc/src/snippets/qfontdatabase/main.cpp30
-rw-r--r--doc/src/snippets/qgl-namespace/main.cpp30
-rw-r--r--doc/src/snippets/qlabel/main.cpp30
-rw-r--r--doc/src/snippets/qlineargradient/main.cpp30
-rw-r--r--doc/src/snippets/qlineargradient/paintwidget.cpp30
-rw-r--r--doc/src/snippets/qlineargradient/paintwidget.h30
-rw-r--r--doc/src/snippets/qlistview-dnd/main.cpp30
-rw-r--r--doc/src/snippets/qlistview-dnd/mainwindow.cpp30
-rw-r--r--doc/src/snippets/qlistview-dnd/mainwindow.h30
-rw-r--r--doc/src/snippets/qlistview-dnd/model.cpp31
-rw-r--r--doc/src/snippets/qlistview-dnd/model.h31
-rw-r--r--doc/src/snippets/qlistview-using/main.cpp30
-rw-r--r--doc/src/snippets/qlistview-using/mainwindow.cpp30
-rw-r--r--doc/src/snippets/qlistview-using/mainwindow.h30
-rw-r--r--doc/src/snippets/qlistview-using/model.cpp31
-rw-r--r--doc/src/snippets/qlistview-using/model.h31
-rw-r--r--doc/src/snippets/qlistwidget-dnd/main.cpp30
-rw-r--r--doc/src/snippets/qlistwidget-dnd/mainwindow.cpp30
-rw-r--r--doc/src/snippets/qlistwidget-dnd/mainwindow.h30
-rw-r--r--doc/src/snippets/qlistwidget-using/main.cpp30
-rw-r--r--doc/src/snippets/qlistwidget-using/mainwindow.cpp30
-rw-r--r--doc/src/snippets/qlistwidget-using/mainwindow.h30
-rw-r--r--doc/src/snippets/qmacnativewidget/main.mm41
-rw-r--r--doc/src/snippets/qmake/delegate.h30
-rw-r--r--doc/src/snippets/qmake/main.cpp30
-rw-r--r--doc/src/snippets/qmake/model.cpp30
-rw-r--r--doc/src/snippets/qmake/model.h30
-rw-r--r--doc/src/snippets/qmake/paintwidget_mac.cpp30
-rw-r--r--doc/src/snippets/qmake/paintwidget_unix.cpp30
-rw-r--r--doc/src/snippets/qmake/paintwidget_win.cpp30
-rw-r--r--doc/src/snippets/qmake/view.h30
-rw-r--r--doc/src/snippets/qmetaobject-invokable/main.cpp30
-rw-r--r--doc/src/snippets/qmetaobject-invokable/window.cpp30
-rw-r--r--doc/src/snippets/qmetaobject-invokable/window.h30
-rw-r--r--doc/src/snippets/qprocess-environment/main.cpp36
-rw-r--r--doc/src/snippets/qprocess/qprocess-simpleexecution.cpp30
-rw-r--r--doc/src/snippets/qsignalmapper/buttonwidget.cpp30
-rw-r--r--doc/src/snippets/qsignalmapper/buttonwidget.h30
-rw-r--r--doc/src/snippets/qsignalmapper/main.cpp30
-rw-r--r--doc/src/snippets/qsignalmapper/mainwindow.h30
-rw-r--r--doc/src/snippets/qsortfilterproxymodel-details/main.cpp30
-rw-r--r--doc/src/snippets/qsortfilterproxymodel/main.cpp30
-rw-r--r--doc/src/snippets/qsplashscreen/main.cpp30
-rw-r--r--doc/src/snippets/qsplashscreen/mainwindow.cpp30
-rw-r--r--doc/src/snippets/qsplashscreen/mainwindow.h30
-rw-r--r--doc/src/snippets/qsql-namespace/main.cpp30
-rw-r--r--doc/src/snippets/qstack/main.cpp30
-rw-r--r--doc/src/snippets/qstackedlayout/main.cpp30
-rw-r--r--doc/src/snippets/qstackedwidget/main.cpp30
-rw-r--r--doc/src/snippets/qstandarditemmodel/main.cpp30
-rw-r--r--doc/src/snippets/qstatustipevent/main.cpp30
-rw-r--r--doc/src/snippets/qstring/main.cpp30
-rw-r--r--doc/src/snippets/qstring/stringbuilder.cpp46
-rw-r--r--doc/src/snippets/qstringlist/main.cpp30
-rw-r--r--doc/src/snippets/qstringlistmodel/main.cpp30
-rw-r--r--doc/src/snippets/qstyleoption/main.cpp30
-rw-r--r--doc/src/snippets/qstyleplugin/main.cpp30
-rw-r--r--doc/src/snippets/qsvgwidget/main.cpp30
-rw-r--r--doc/src/snippets/qt-namespace/main.cpp30
-rw-r--r--doc/src/snippets/qtablewidget-dnd/main.cpp30
-rw-r--r--doc/src/snippets/qtablewidget-dnd/mainwindow.cpp30
-rw-r--r--doc/src/snippets/qtablewidget-dnd/mainwindow.h30
-rw-r--r--doc/src/snippets/qtablewidget-resizing/main.cpp30
-rw-r--r--doc/src/snippets/qtablewidget-resizing/mainwindow.cpp30
-rw-r--r--doc/src/snippets/qtablewidget-resizing/mainwindow.h30
-rw-r--r--doc/src/snippets/qtablewidget-using/main.cpp30
-rw-r--r--doc/src/snippets/qtablewidget-using/mainwindow.cpp30
-rw-r--r--doc/src/snippets/qtablewidget-using/mainwindow.h30
-rw-r--r--doc/src/snippets/qtcast/qtcast.cpp30
-rw-r--r--doc/src/snippets/qtcast/qtcast.h30
-rw-r--r--doc/src/snippets/qtest-namespace/main.cpp30
-rw-r--r--doc/src/snippets/qtreeview-dnd/dragdropmodel.cpp31
-rw-r--r--doc/src/snippets/qtreeview-dnd/dragdropmodel.h31
-rw-r--r--doc/src/snippets/qtreeview-dnd/main.cpp30
-rw-r--r--doc/src/snippets/qtreeview-dnd/mainwindow.cpp30
-rw-r--r--doc/src/snippets/qtreeview-dnd/mainwindow.h30
-rw-r--r--doc/src/snippets/qtreeview-dnd/treeitem.cpp30
-rw-r--r--doc/src/snippets/qtreeview-dnd/treeitem.h30
-rw-r--r--doc/src/snippets/qtreeview-dnd/treemodel.cpp30
-rw-r--r--doc/src/snippets/qtreeview-dnd/treemodel.h30
-rw-r--r--doc/src/snippets/qtreewidget-using/main.cpp30
-rw-r--r--doc/src/snippets/qtreewidget-using/mainwindow.cpp30
-rw-r--r--doc/src/snippets/qtreewidget-using/mainwindow.h30
-rw-r--r--doc/src/snippets/qtreewidgetitemiterator-using/main.cpp30
-rw-r--r--doc/src/snippets/qtreewidgetitemiterator-using/mainwindow.cpp30
-rw-r--r--doc/src/snippets/qtreewidgetitemiterator-using/mainwindow.h30
-rw-r--r--doc/src/snippets/qtscript/evaluation/main.cpp30
-rw-r--r--doc/src/snippets/qtscript/registeringobjects/main.cpp30
-rw-r--r--doc/src/snippets/qtscript/registeringobjects/myobject.cpp30
-rw-r--r--doc/src/snippets/qtscript/registeringobjects/myobject.h30
-rw-r--r--doc/src/snippets/qtscript/registeringvalues/main.cpp30
-rw-r--r--doc/src/snippets/qtscript/scriptedslot/main.cpp30
-rw-r--r--doc/src/snippets/quiloader/main.cpp30
-rw-r--r--doc/src/snippets/quiloader/mywidget.cpp30
-rw-r--r--doc/src/snippets/quiloader/mywidget.h30
-rw-r--r--doc/src/snippets/qx11embedcontainer/main.cpp30
-rw-r--r--doc/src/snippets/qx11embedwidget/embedwidget.cpp30
-rw-r--r--doc/src/snippets/qx11embedwidget/embedwidget.h30
-rw-r--r--doc/src/snippets/qx11embedwidget/main.cpp30
-rw-r--r--doc/src/snippets/qxmlquery/bindingExample.cpp41
-rw-r--r--doc/src/snippets/qxmlschema/main.cpp30
-rw-r--r--doc/src/snippets/qxmlschemavalidator/main.cpp30
-rw-r--r--doc/src/snippets/qxmlstreamwriter/main.cpp30
-rw-r--r--doc/src/snippets/reading-selections/main.cpp30
-rw-r--r--doc/src/snippets/reading-selections/model.cpp30
-rw-r--r--doc/src/snippets/reading-selections/model.h30
-rw-r--r--doc/src/snippets/reading-selections/window.cpp30
-rw-r--r--doc/src/snippets/reading-selections/window.h30
-rw-r--r--doc/src/snippets/scribe-overview/main.cpp30
-rw-r--r--doc/src/snippets/scriptdebugger.cpp44
-rw-r--r--doc/src/snippets/seekslider.cpp43
-rw-r--r--doc/src/snippets/separations/finalwidget.cpp30
-rw-r--r--doc/src/snippets/separations/finalwidget.h30
-rw-r--r--doc/src/snippets/separations/main.cpp30
-rw-r--r--doc/src/snippets/separations/screenwidget.cpp30
-rw-r--r--doc/src/snippets/separations/screenwidget.h30
-rw-r--r--doc/src/snippets/separations/separations.qdoc30
-rw-r--r--doc/src/snippets/separations/viewer.cpp30
-rw-r--r--doc/src/snippets/separations/viewer.h30
-rw-r--r--doc/src/snippets/settings/settings.cpp30
-rw-r--r--doc/src/snippets/shareddirmodel/main.cpp35
-rw-r--r--doc/src/snippets/sharedemployee/employee.cpp30
-rw-r--r--doc/src/snippets/sharedemployee/employee.h30
-rw-r--r--doc/src/snippets/sharedemployee/main.cpp30
-rw-r--r--doc/src/snippets/sharedtablemodel/main.cpp30
-rw-r--r--doc/src/snippets/sharedtablemodel/model.cpp30
-rw-r--r--doc/src/snippets/sharedtablemodel/model.h30
-rw-r--r--doc/src/snippets/signalmapper/filereader.cpp41
-rw-r--r--doc/src/snippets/signalmapper/filereader.h41
-rw-r--r--doc/src/snippets/signalmapper/main.cpp41
-rw-r--r--doc/src/snippets/signalsandslots/lcdnumber.cpp30
-rw-r--r--doc/src/snippets/signalsandslots/lcdnumber.h30
-rw-r--r--doc/src/snippets/signalsandslots/signalsandslots.cpp30
-rw-r--r--doc/src/snippets/signalsandslots/signalsandslots.h30
-rw-r--r--doc/src/snippets/simplemodel-use/main.cpp32
-rw-r--r--doc/src/snippets/splitter/splitter.cpp30
-rw-r--r--doc/src/snippets/splitterhandle/main.cpp30
-rw-r--r--doc/src/snippets/splitterhandle/splitter.cpp30
-rw-r--r--doc/src/snippets/splitterhandle/splitter.h30
-rw-r--r--doc/src/snippets/sqldatabase/sqldatabase.cpp30
-rw-r--r--doc/src/snippets/statemachine/eventtest.cpp42
-rw-r--r--doc/src/snippets/statemachine/main.cpp40
-rw-r--r--doc/src/snippets/statemachine/main2.cpp55
-rw-r--r--doc/src/snippets/statemachine/main3.cpp40
-rw-r--r--doc/src/snippets/statemachine/main4.cpp40
-rw-r--r--doc/src/snippets/statemachine/main5.cpp120
-rw-r--r--doc/src/snippets/streaming/main.cpp30
-rw-r--r--doc/src/snippets/stringlistmodel/main.cpp30
-rw-r--r--doc/src/snippets/stringlistmodel/model.cpp30
-rw-r--r--doc/src/snippets/stringlistmodel/model.h30
-rw-r--r--doc/src/snippets/styles/styles.cpp30
-rw-r--r--doc/src/snippets/stylesheet/common-mistakes.cpp41
-rw-r--r--doc/src/snippets/textblock-formats/main.cpp30
-rw-r--r--doc/src/snippets/textblock-fragments/main.cpp30
-rw-r--r--doc/src/snippets/textblock-fragments/mainwindow.cpp30
-rw-r--r--doc/src/snippets/textblock-fragments/mainwindow.h30
-rw-r--r--doc/src/snippets/textblock-fragments/xmlwriter.cpp30
-rw-r--r--doc/src/snippets/textblock-fragments/xmlwriter.h30
-rw-r--r--doc/src/snippets/textdocument-blocks/main.cpp30
-rw-r--r--doc/src/snippets/textdocument-blocks/mainwindow.cpp30
-rw-r--r--doc/src/snippets/textdocument-blocks/mainwindow.h30
-rw-r--r--doc/src/snippets/textdocument-blocks/xmlwriter.cpp30
-rw-r--r--doc/src/snippets/textdocument-blocks/xmlwriter.h30
-rw-r--r--doc/src/snippets/textdocument-charformats/main.cpp30
-rw-r--r--doc/src/snippets/textdocument-css/main.cpp30
-rw-r--r--doc/src/snippets/textdocument-cursors/main.cpp30
-rw-r--r--doc/src/snippets/textdocument-find/main.cpp30
-rw-r--r--doc/src/snippets/textdocument-frames/main.cpp30
-rw-r--r--doc/src/snippets/textdocument-frames/mainwindow.cpp30
-rw-r--r--doc/src/snippets/textdocument-frames/mainwindow.h30
-rw-r--r--doc/src/snippets/textdocument-frames/xmlwriter.cpp30
-rw-r--r--doc/src/snippets/textdocument-frames/xmlwriter.h30
-rw-r--r--doc/src/snippets/textdocument-imagedrop/main.cpp30
-rw-r--r--doc/src/snippets/textdocument-imagedrop/textedit.cpp30
-rw-r--r--doc/src/snippets/textdocument-imagedrop/textedit.h30
-rw-r--r--doc/src/snippets/textdocument-imageformat/main.cpp30
-rw-r--r--doc/src/snippets/textdocument-images/main.cpp30
-rw-r--r--doc/src/snippets/textdocument-listitems/main.cpp30
-rw-r--r--doc/src/snippets/textdocument-listitems/mainwindow.cpp30
-rw-r--r--doc/src/snippets/textdocument-listitems/mainwindow.h30
-rw-r--r--doc/src/snippets/textdocument-lists/main.cpp30
-rw-r--r--doc/src/snippets/textdocument-lists/mainwindow.cpp30
-rw-r--r--doc/src/snippets/textdocument-lists/mainwindow.h30
-rw-r--r--doc/src/snippets/textdocument-printing/main.cpp30
-rw-r--r--doc/src/snippets/textdocument-printing/mainwindow.cpp30
-rw-r--r--doc/src/snippets/textdocument-printing/mainwindow.h30
-rw-r--r--doc/src/snippets/textdocument-resources/main.cpp30
-rw-r--r--doc/src/snippets/textdocument-selections/main.cpp30
-rw-r--r--doc/src/snippets/textdocument-selections/mainwindow.cpp30
-rw-r--r--doc/src/snippets/textdocument-selections/mainwindow.h30
-rw-r--r--doc/src/snippets/textdocument-tables/main.cpp30
-rw-r--r--doc/src/snippets/textdocument-tables/mainwindow.cpp30
-rw-r--r--doc/src/snippets/textdocument-tables/mainwindow.h30
-rw-r--r--doc/src/snippets/textdocument-tables/xmlwriter.cpp30
-rw-r--r--doc/src/snippets/textdocument-tables/xmlwriter.h30
-rw-r--r--doc/src/snippets/textdocument-texttable/main.cpp30
-rw-r--r--doc/src/snippets/textdocumentendsnippet.cpp30
-rw-r--r--doc/src/snippets/threads/threads.cpp30
-rw-r--r--doc/src/snippets/threads/threads.h30
-rw-r--r--doc/src/snippets/timeline/main.cpp30
-rw-r--r--doc/src/snippets/timers/timers.cpp30
-rw-r--r--doc/src/snippets/transform/main.cpp30
-rw-r--r--doc/src/snippets/uitools/calculatorform/main.cpp30
-rw-r--r--doc/src/snippets/updating-selections/main.cpp30
-rw-r--r--doc/src/snippets/updating-selections/model.cpp30
-rw-r--r--doc/src/snippets/updating-selections/model.h30
-rw-r--r--doc/src/snippets/updating-selections/window.cpp30
-rw-r--r--doc/src/snippets/updating-selections/window.h30
-rw-r--r--doc/src/snippets/videomedia.cpp42
-rw-r--r--doc/src/snippets/volumeslider.cpp41
-rw-r--r--doc/src/snippets/whatsthis/whatsthis.cpp30
-rw-r--r--doc/src/snippets/widget-mask/main.cpp30
-rw-r--r--doc/src/snippets/widgetdelegate.cpp40
-rw-r--r--doc/src/snippets/widgets-tutorial/childwidget/main.cpp41
-rw-r--r--doc/src/snippets/widgets-tutorial/nestedlayouts/main.cpp41
-rw-r--r--doc/src/snippets/widgets-tutorial/template.cpp43
-rw-r--r--doc/src/snippets/widgets-tutorial/toplevel/main.cpp41
-rw-r--r--doc/src/snippets/widgets-tutorial/windowlayout/main.cpp41
-rw-r--r--doc/src/snippets/xml/prettyprint/main.cpp30
-rw-r--r--doc/src/snippets/xml/rsslisting/handler.cpp30
-rw-r--r--doc/src/snippets/xml/rsslisting/handler.h30
-rw-r--r--doc/src/snippets/xml/rsslisting/main.cpp30
-rw-r--r--doc/src/snippets/xml/rsslisting/rsslisting.cpp30
-rw-r--r--doc/src/snippets/xml/rsslisting/rsslisting.h30
-rw-r--r--doc/src/snippets/xml/simpleparse/handler.cpp30
-rw-r--r--doc/src/snippets/xml/simpleparse/handler.h30
-rw-r--r--doc/src/snippets/xml/simpleparse/main.cpp30
-rw-r--r--doc/src/sql-driver.qdoc762
-rw-r--r--doc/src/sql-programming/qsqldatatype-table.qdoc583
-rw-r--r--doc/src/sql-programming/sql-driver.qdoc769
-rw-r--r--doc/src/sql-programming/sql-programming.qdoc616
-rw-r--r--doc/src/statemachine.qdoc536
-rw-r--r--doc/src/styles.qdoc2059
-rw-r--r--doc/src/stylesheet.qdoc3960
-rw-r--r--doc/src/supported-platforms.qdoc141
-rw-r--r--doc/src/templates.qdoc230
-rw-r--r--doc/src/threads.qdoc616
-rw-r--r--doc/src/timers.qdoc136
-rw-r--r--doc/src/tools-list.qdoc85
-rw-r--r--doc/src/topics.qdoc290
-rw-r--r--doc/src/trolltech-webpages.qdoc245
-rw-r--r--doc/src/tutorials/addressbook-fr.qdoc33
-rw-r--r--doc/src/tutorials/addressbook.qdoc33
-rw-r--r--doc/src/tutorials/widgets-tutorial.qdoc47
-rw-r--r--doc/src/uic.qdoc89
-rw-r--r--doc/src/unicode.qdoc161
-rw-r--r--doc/src/unix-signal-handlers.qdoc103
-rw-r--r--doc/src/widgets-and-layouts/focus.qdoc200
-rw-r--r--doc/src/widgets-and-layouts/gallery-cde.qdoc392
-rw-r--r--doc/src/widgets-and-layouts/gallery-cleanlooks.qdoc392
-rw-r--r--doc/src/widgets-and-layouts/gallery-gtk.qdoc399
-rw-r--r--doc/src/widgets-and-layouts/gallery-macintosh.qdoc392
-rw-r--r--doc/src/widgets-and-layouts/gallery-motif.qdoc392
-rw-r--r--doc/src/widgets-and-layouts/gallery-plastique.qdoc392
-rw-r--r--doc/src/widgets-and-layouts/gallery-windows.qdoc392
-rw-r--r--doc/src/widgets-and-layouts/gallery-windowsvista.qdoc392
-rw-r--r--doc/src/widgets-and-layouts/gallery-windowsxp.qdoc392
-rw-r--r--doc/src/widgets-and-layouts/gallery.qdoc150
-rw-r--r--doc/src/widgets-and-layouts/layout.qdoc396
-rw-r--r--doc/src/widgets-and-layouts/styles.qdoc2123
-rw-r--r--doc/src/widgets-and-layouts/stylesheet.qdoc3984
-rw-r--r--doc/src/widgets-and-layouts/widgets.qdoc187
-rw-r--r--doc/src/wince-customization.qdoc264
-rw-r--r--doc/src/wince-introduction.qdoc110
-rw-r--r--doc/src/wince-opengl.qdoc98
-rw-r--r--doc/src/windows-and-dialogs/dialogs.qdoc76
-rw-r--r--doc/src/windows-and-dialogs/mainwindow.qdoc279
-rw-r--r--doc/src/winsystem.qdoc99
-rw-r--r--doc/src/xml-processing/xml-patterns.qdoc904
-rw-r--r--doc/src/xml-processing/xml-processing.qdoc631
-rw-r--r--doc/src/xml-processing/xquery-introduction.qdoc1019
-rw-r--r--doc/src/xquery-introduction.qdoc1024
-rw-r--r--examples/activeqt/comapp/main.cpp30
-rw-r--r--examples/activeqt/dotnet/wrapper/lib/networker.cpp30
-rw-r--r--examples/activeqt/dotnet/wrapper/lib/networker.h30
-rw-r--r--examples/activeqt/dotnet/wrapper/lib/tools.cpp30
-rw-r--r--examples/activeqt/dotnet/wrapper/lib/tools.h30
-rw-r--r--examples/activeqt/dotnet/wrapper/lib/worker.cpp30
-rw-r--r--examples/activeqt/dotnet/wrapper/lib/worker.h30
-rw-r--r--examples/activeqt/hierarchy/main.cpp30
-rw-r--r--examples/activeqt/hierarchy/objects.cpp30
-rw-r--r--examples/activeqt/hierarchy/objects.h30
-rw-r--r--examples/activeqt/menus/main.cpp30
-rw-r--r--examples/activeqt/menus/menus.cpp30
-rw-r--r--examples/activeqt/menus/menus.h30
-rw-r--r--examples/activeqt/multiple/ax1.h30
-rw-r--r--examples/activeqt/multiple/ax2.h30
-rw-r--r--examples/activeqt/multiple/main.cpp30
-rw-r--r--examples/activeqt/opengl/glbox.cpp30
-rw-r--r--examples/activeqt/opengl/glbox.h30
-rw-r--r--examples/activeqt/opengl/globjwin.cpp30
-rw-r--r--examples/activeqt/opengl/globjwin.h30
-rw-r--r--examples/activeqt/opengl/main.cpp30
-rw-r--r--examples/activeqt/qutlook/addressview.cpp32
-rw-r--r--examples/activeqt/qutlook/addressview.h30
-rw-r--r--examples/activeqt/qutlook/main.cpp30
-rw-r--r--examples/activeqt/simple/main.cpp34
-rw-r--r--examples/activeqt/webbrowser/main.cpp30
-rw-r--r--examples/activeqt/webbrowser/webaxwidget.h30
-rw-r--r--examples/activeqt/wrapper/main.cpp30
-rw-r--r--examples/animation/animatedtiles/main.cpp67
-rw-r--r--examples/animation/appchooser/main.cpp30
-rw-r--r--examples/animation/easing/animation.h36
-rw-r--r--examples/animation/easing/main.cpp30
-rw-r--r--examples/animation/easing/window.cpp30
-rw-r--r--examples/animation/easing/window.h30
-rw-r--r--examples/animation/moveblocks/main.cpp30
-rw-r--r--examples/animation/states/main.cpp235
-rw-r--r--examples/animation/stickman/animation.cpp30
-rw-r--r--examples/animation/stickman/animation.h30
-rw-r--r--examples/animation/stickman/graphicsview.cpp30
-rw-r--r--examples/animation/stickman/graphicsview.h30
-rw-r--r--examples/animation/stickman/lifecycle.cpp40
-rw-r--r--examples/animation/stickman/lifecycle.h30
-rw-r--r--examples/animation/stickman/main.cpp73
-rw-r--r--examples/animation/stickman/node.cpp35
-rw-r--r--examples/animation/stickman/node.h33
-rw-r--r--examples/animation/stickman/stickman.cpp35
-rw-r--r--examples/animation/stickman/stickman.h45
-rw-r--r--examples/animation/stickman/stickman.pro2
-rw-r--r--examples/animation/stickman/stickman.qrc8
-rw-r--r--examples/assistant/README38
-rw-r--r--examples/assistant/assistant.pro8
-rw-r--r--examples/assistant/simpletextviewer/documentation/about.txt9
-rw-r--r--examples/assistant/simpletextviewer/documentation/browse.html34
-rw-r--r--examples/assistant/simpletextviewer/documentation/filedialog.html48
-rw-r--r--examples/assistant/simpletextviewer/documentation/findfile.html32
-rw-r--r--examples/assistant/simpletextviewer/documentation/images/browse.pngbin21553 -> 0 bytes-rw-r--r--examples/assistant/simpletextviewer/documentation/images/fadedfilemenu.pngbin9589 -> 0 bytes-rw-r--r--examples/assistant/simpletextviewer/documentation/images/filedialog.pngbin12318 -> 0 bytes-rw-r--r--examples/assistant/simpletextviewer/documentation/images/handbook.pngbin1060 -> 0 bytes-rw-r--r--examples/assistant/simpletextviewer/documentation/images/mainwindow.pngbin12769 -> 0 bytes-rw-r--r--examples/assistant/simpletextviewer/documentation/images/open.pngbin11697 -> 0 bytes-rw-r--r--examples/assistant/simpletextviewer/documentation/images/wildcard.pngbin11266 -> 0 bytes-rw-r--r--examples/assistant/simpletextviewer/documentation/index.html41
-rw-r--r--examples/assistant/simpletextviewer/documentation/intro.html28
-rw-r--r--examples/assistant/simpletextviewer/documentation/openfile.html36
-rw-r--r--examples/assistant/simpletextviewer/documentation/simpletextviewer.adp40
-rw-r--r--examples/assistant/simpletextviewer/documentation/wildcardmatching.html57
-rw-r--r--examples/assistant/simpletextviewer/findfiledialog.cpp221
-rw-r--r--examples/assistant/simpletextviewer/findfiledialog.h99
-rw-r--r--examples/assistant/simpletextviewer/main.cpp52
-rw-r--r--examples/assistant/simpletextviewer/mainwindow.cpp154
-rw-r--r--examples/assistant/simpletextviewer/mainwindow.h91
-rw-r--r--examples/assistant/simpletextviewer/simpletextviewer.pro16
-rw-r--r--examples/dbus/complexpingpong/complexping.cpp30
-rw-r--r--examples/dbus/complexpingpong/complexping.h30
-rw-r--r--examples/dbus/complexpingpong/complexping.pro2
-rw-r--r--examples/dbus/complexpingpong/complexpong.cpp30
-rw-r--r--examples/dbus/complexpingpong/complexpong.h30
-rw-r--r--examples/dbus/complexpingpong/complexpong.pro2
-rw-r--r--examples/dbus/complexpingpong/ping-common.h30
-rw-r--r--examples/dbus/dbus-chat/chat.cpp30
-rw-r--r--examples/dbus/dbus-chat/chat.h30
-rw-r--r--examples/dbus/dbus-chat/chat_adaptor.cpp58
-rw-r--r--examples/dbus/dbus-chat/chat_adaptor.h60
-rw-r--r--examples/dbus/dbus-chat/chat_interface.cpp60
-rw-r--r--examples/dbus/dbus-chat/chat_interface.h58
-rw-r--r--examples/dbus/dbus-chat/dbus-chat.pro2
-rw-r--r--examples/dbus/dbus.pro2
-rw-r--r--examples/dbus/listnames/listnames.cpp30
-rw-r--r--examples/dbus/listnames/listnames.pro2
-rw-r--r--examples/dbus/pingpong/ping-common.h30
-rw-r--r--examples/dbus/pingpong/ping.cpp30
-rw-r--r--examples/dbus/pingpong/ping.pro2
-rw-r--r--examples/dbus/pingpong/pong.cpp30
-rw-r--r--examples/dbus/pingpong/pong.h30
-rw-r--r--examples/dbus/pingpong/pong.pro2
-rw-r--r--examples/dbus/remotecontrolledcar/car/car.cpp30
-rw-r--r--examples/dbus/remotecontrolledcar/car/car.h30
-rw-r--r--examples/dbus/remotecontrolledcar/car/car.pro2
-rw-r--r--examples/dbus/remotecontrolledcar/car/car_adaptor.cpp58
-rw-r--r--examples/dbus/remotecontrolledcar/car/car_adaptor_p.h60
-rw-r--r--examples/dbus/remotecontrolledcar/car/main.cpp30
-rw-r--r--examples/dbus/remotecontrolledcar/controller/car_interface.cpp60
-rw-r--r--examples/dbus/remotecontrolledcar/controller/car_interface_p.h58
-rw-r--r--examples/dbus/remotecontrolledcar/controller/controller.cpp30
-rw-r--r--examples/dbus/remotecontrolledcar/controller/controller.h30
-rw-r--r--examples/dbus/remotecontrolledcar/controller/controller.pro2
-rw-r--r--examples/dbus/remotecontrolledcar/controller/main.cpp30
-rw-r--r--examples/dbus/remotecontrolledcar/remotecontrolledcar.pro2
-rw-r--r--examples/designer/calculatorbuilder/calculatorbuilder.pro2
-rw-r--r--examples/designer/calculatorbuilder/calculatorform.cpp30
-rw-r--r--examples/designer/calculatorbuilder/calculatorform.h30
-rw-r--r--examples/designer/calculatorbuilder/main.cpp30
-rw-r--r--examples/designer/calculatorform/calculatorform.cpp30
-rw-r--r--examples/designer/calculatorform/calculatorform.h30
-rw-r--r--examples/designer/calculatorform/calculatorform.pro2
-rw-r--r--examples/designer/calculatorform/main.cpp30
-rw-r--r--examples/designer/containerextension/containerextension.pro2
-rw-r--r--examples/designer/containerextension/multipagewidget.cpp30
-rw-r--r--examples/designer/containerextension/multipagewidget.h30
-rw-r--r--examples/designer/containerextension/multipagewidgetcontainerextension.cpp30
-rw-r--r--examples/designer/containerextension/multipagewidgetcontainerextension.h30
-rw-r--r--examples/designer/containerextension/multipagewidgetextensionfactory.cpp30
-rw-r--r--examples/designer/containerextension/multipagewidgetextensionfactory.h30
-rw-r--r--examples/designer/containerextension/multipagewidgetplugin.cpp34
-rw-r--r--examples/designer/containerextension/multipagewidgetplugin.h30
-rw-r--r--examples/designer/customwidgetplugin/analogclock.cpp30
-rw-r--r--examples/designer/customwidgetplugin/analogclock.h30
-rw-r--r--examples/designer/customwidgetplugin/customwidgetplugin.cpp30
-rw-r--r--examples/designer/customwidgetplugin/customwidgetplugin.h30
-rw-r--r--examples/designer/customwidgetplugin/customwidgetplugin.pro2
-rw-r--r--examples/designer/designer.pro2
-rw-r--r--examples/designer/taskmenuextension/taskmenuextension.pro2
-rw-r--r--examples/designer/taskmenuextension/tictactoe.cpp30
-rw-r--r--examples/designer/taskmenuextension/tictactoe.h30
-rw-r--r--examples/designer/taskmenuextension/tictactoedialog.cpp30
-rw-r--r--examples/designer/taskmenuextension/tictactoedialog.h30
-rw-r--r--examples/designer/taskmenuextension/tictactoeplugin.cpp30
-rw-r--r--examples/designer/taskmenuextension/tictactoeplugin.h30
-rw-r--r--examples/designer/taskmenuextension/tictactoetaskmenu.cpp30
-rw-r--r--examples/designer/taskmenuextension/tictactoetaskmenu.h30
-rw-r--r--examples/designer/worldtimeclockbuilder/main.cpp30
-rw-r--r--examples/designer/worldtimeclockbuilder/worldtimeclockbuilder.pro2
-rw-r--r--examples/designer/worldtimeclockplugin/worldtimeclock.cpp30
-rw-r--r--examples/designer/worldtimeclockplugin/worldtimeclock.h30
-rw-r--r--examples/designer/worldtimeclockplugin/worldtimeclockplugin.cpp30
-rw-r--r--examples/designer/worldtimeclockplugin/worldtimeclockplugin.h30
-rw-r--r--examples/designer/worldtimeclockplugin/worldtimeclockplugin.pro2
-rw-r--r--examples/desktop/desktop.pro4
-rw-r--r--examples/desktop/screenshot/main.cpp30
-rw-r--r--examples/desktop/screenshot/screenshot.cpp30
-rw-r--r--examples/desktop/screenshot/screenshot.h30
-rw-r--r--examples/desktop/screenshot/screenshot.pro2
-rw-r--r--examples/desktop/systray/main.cpp30
-rw-r--r--examples/desktop/systray/systray.pro2
-rw-r--r--examples/desktop/systray/window.cpp30
-rw-r--r--examples/desktop/systray/window.h30
-rw-r--r--examples/dialogs/classwizard/classwizard.cpp30
-rw-r--r--examples/dialogs/classwizard/classwizard.h30
-rw-r--r--examples/dialogs/classwizard/classwizard.pro2
-rw-r--r--examples/dialogs/classwizard/main.cpp30
-rw-r--r--examples/dialogs/configdialog/configdialog.cpp34
-rw-r--r--examples/dialogs/configdialog/configdialog.h30
-rw-r--r--examples/dialogs/configdialog/configdialog.pro2
-rw-r--r--examples/dialogs/configdialog/main.cpp30
-rw-r--r--examples/dialogs/configdialog/pages.cpp30
-rw-r--r--examples/dialogs/configdialog/pages.h30
-rw-r--r--examples/dialogs/dialogs.pro4
-rw-r--r--examples/dialogs/extension/extension.pro2
-rw-r--r--examples/dialogs/extension/finddialog.cpp30
-rw-r--r--examples/dialogs/extension/finddialog.h30
-rw-r--r--examples/dialogs/extension/main.cpp30
-rw-r--r--examples/dialogs/findfiles/findfiles.pro2
-rw-r--r--examples/dialogs/findfiles/main.cpp30
-rw-r--r--examples/dialogs/findfiles/window.cpp38
-rw-r--r--examples/dialogs/findfiles/window.h30
-rw-r--r--examples/dialogs/licensewizard/licensewizard.cpp30
-rw-r--r--examples/dialogs/licensewizard/licensewizard.h30
-rw-r--r--examples/dialogs/licensewizard/licensewizard.pro2
-rw-r--r--examples/dialogs/licensewizard/main.cpp30
-rw-r--r--examples/dialogs/sipdialog/dialog.cpp30
-rw-r--r--examples/dialogs/sipdialog/dialog.h30
-rw-r--r--examples/dialogs/sipdialog/main.cpp30
-rw-r--r--examples/dialogs/sipdialog/sipdialog.pro2
-rw-r--r--examples/dialogs/standarddialogs/dialog.cpp37
-rw-r--r--examples/dialogs/standarddialogs/dialog.h30
-rw-r--r--examples/dialogs/standarddialogs/main.cpp30
-rw-r--r--examples/dialogs/standarddialogs/standarddialogs.pro2
-rw-r--r--examples/dialogs/tabdialog/main.cpp30
-rw-r--r--examples/dialogs/tabdialog/tabdialog.cpp30
-rw-r--r--examples/dialogs/tabdialog/tabdialog.h30
-rw-r--r--examples/dialogs/tabdialog/tabdialog.pro2
-rw-r--r--examples/dialogs/trivialwizard/trivialwizard.cpp30
-rw-r--r--examples/dialogs/trivialwizard/trivialwizard.pro2
-rw-r--r--examples/draganddrop/delayedencoding/delayedencoding.pro2
-rw-r--r--examples/draganddrop/delayedencoding/images/example.svg30
-rw-r--r--examples/draganddrop/delayedencoding/main.cpp30
-rw-r--r--examples/draganddrop/delayedencoding/mimedata.cpp30
-rw-r--r--examples/draganddrop/delayedencoding/mimedata.h30
-rw-r--r--examples/draganddrop/delayedencoding/sourcewidget.cpp34
-rw-r--r--examples/draganddrop/delayedencoding/sourcewidget.h30
-rw-r--r--examples/draganddrop/draganddrop.pro2
-rw-r--r--examples/draganddrop/draggableicons/draggableicons.pro5
-rw-r--r--examples/draganddrop/draggableicons/dragwidget.cpp30
-rw-r--r--examples/draganddrop/draggableicons/dragwidget.h30
-rw-r--r--examples/draganddrop/draggableicons/main.cpp30
-rw-r--r--examples/draganddrop/draggabletext/draggabletext.pro5
-rw-r--r--examples/draganddrop/draggabletext/draglabel.cpp30
-rw-r--r--examples/draganddrop/draggabletext/draglabel.h30
-rw-r--r--examples/draganddrop/draggabletext/dragwidget.cpp30
-rw-r--r--examples/draganddrop/draggabletext/dragwidget.h30
-rw-r--r--examples/draganddrop/draggabletext/main.cpp30
-rw-r--r--examples/draganddrop/dropsite/droparea.cpp30
-rw-r--r--examples/draganddrop/dropsite/droparea.h30
-rw-r--r--examples/draganddrop/dropsite/dropsite.pro1
-rw-r--r--examples/draganddrop/dropsite/dropsitewindow.cpp34
-rw-r--r--examples/draganddrop/dropsite/dropsitewindow.h30
-rw-r--r--examples/draganddrop/dropsite/main.cpp30
-rw-r--r--examples/draganddrop/fridgemagnets/draglabel.cpp30
-rw-r--r--examples/draganddrop/fridgemagnets/draglabel.h30
-rw-r--r--examples/draganddrop/fridgemagnets/dragwidget.cpp33
-rw-r--r--examples/draganddrop/fridgemagnets/dragwidget.h30
-rw-r--r--examples/draganddrop/fridgemagnets/fridgemagnets.pro7
-rw-r--r--examples/draganddrop/fridgemagnets/main.cpp42
-rw-r--r--examples/draganddrop/puzzle/main.cpp30
-rw-r--r--examples/draganddrop/puzzle/mainwindow.cpp30
-rw-r--r--examples/draganddrop/puzzle/mainwindow.h30
-rw-r--r--examples/draganddrop/puzzle/pieceslist.cpp30
-rw-r--r--examples/draganddrop/puzzle/pieceslist.h30
-rw-r--r--examples/draganddrop/puzzle/puzzle.pro7
-rw-r--r--examples/draganddrop/puzzle/puzzlewidget.cpp30
-rw-r--r--examples/draganddrop/puzzle/puzzlewidget.h30
-rw-r--r--examples/effects/blurpicker/blureffect.cpp69
-rw-r--r--examples/effects/blurpicker/blureffect.h67
-rw-r--r--examples/effects/blurpicker/blurpicker.cpp139
-rw-r--r--examples/effects/blurpicker/blurpicker.h74
-rw-r--r--examples/effects/blurpicker/blurpicker.pro9
-rw-r--r--examples/effects/blurpicker/blurpicker.qrc14
-rw-r--r--examples/effects/blurpicker/images/README.txt5
-rw-r--r--examples/effects/blurpicker/images/accessories-calculator.pngbin0 -> 3760 bytes-rw-r--r--examples/effects/blurpicker/images/accessories-text-editor.pngbin0 -> 4746 bytes-rw-r--r--examples/effects/blurpicker/images/background.jpgbin0 -> 16259 bytes-rw-r--r--examples/effects/blurpicker/images/help-browser.pngbin0 -> 5392 bytes-rw-r--r--examples/effects/blurpicker/images/internet-group-chat.pngbin0 -> 2809 bytes-rw-r--r--examples/effects/blurpicker/images/internet-mail.pngbin0 -> 3899 bytes-rw-r--r--examples/effects/blurpicker/images/internet-web-browser.pngbin0 -> 6376 bytes-rw-r--r--examples/effects/blurpicker/images/office-calendar.pngbin0 -> 4010 bytes-rw-r--r--examples/effects/blurpicker/images/system-users.pngbin0 -> 5353 bytes-rw-r--r--examples/effects/blurpicker/main.cpp55
-rw-r--r--examples/effects/effects.pro13
-rw-r--r--examples/effects/fademessage/README.txt2
-rw-r--r--examples/effects/fademessage/background.jpgbin0 -> 159108 bytes-rw-r--r--examples/effects/fademessage/fademessage.cpp130
-rw-r--r--examples/effects/fademessage/fademessage.h71
-rw-r--r--examples/effects/fademessage/fademessage.pro16
-rw-r--r--examples/effects/fademessage/fademessage.qrc5
-rw-r--r--examples/effects/fademessage/main.cpp56
-rw-r--r--examples/effects/lighting/lighting.cpp137
-rw-r--r--examples/effects/lighting/lighting.h68
-rw-r--r--examples/effects/lighting/lighting.pro8
-rw-r--r--examples/effects/lighting/main.cpp55
-rw-r--r--examples/examples.pro31
-rw-r--r--examples/gestures/gestures.pro2
-rw-r--r--examples/gestures/imagegestures/imagegestures.pro16
-rw-r--r--examples/gestures/imagegestures/imagewidget.cpp267
-rw-r--r--examples/gestures/imagegestures/imagewidget.h101
-rw-r--r--examples/gestures/imagegestures/main.cpp59
-rw-r--r--examples/gestures/imagegestures/mainwidget.cpp56
-rw-r--r--examples/gestures/imagegestures/mainwidget.h65
-rw-r--r--examples/gestures/imageviewer/imageviewer.pro11
-rw-r--r--examples/gestures/imageviewer/imagewidget.cpp360
-rw-r--r--examples/gestures/imageviewer/imagewidget.h135
-rw-r--r--examples/gestures/imageviewer/main.cpp90
-rw-r--r--examples/gestures/imageviewer/tapandholdgesture.cpp157
-rw-r--r--examples/gestures/imageviewer/tapandholdgesture.h74
-rw-r--r--examples/graphicsview/anchorlayout/anchorlayout.pro9
-rw-r--r--examples/graphicsview/anchorlayout/main.cpp129
-rw-r--r--examples/graphicsview/basicgraphicslayouts/basicgraphicslayouts.pro5
-rw-r--r--examples/graphicsview/basicgraphicslayouts/layoutitem.cpp30
-rw-r--r--examples/graphicsview/basicgraphicslayouts/layoutitem.h30
-rw-r--r--examples/graphicsview/basicgraphicslayouts/main.cpp30
-rw-r--r--examples/graphicsview/basicgraphicslayouts/window.cpp30
-rw-r--r--examples/graphicsview/basicgraphicslayouts/window.h30
-rw-r--r--examples/graphicsview/collidingmice/collidingmice.pro5
-rw-r--r--examples/graphicsview/collidingmice/main.cpp30
-rw-r--r--examples/graphicsview/collidingmice/mouse.cpp30
-rw-r--r--examples/graphicsview/collidingmice/mouse.h30
-rw-r--r--examples/graphicsview/diagramscene/arrow.cpp30
-rw-r--r--examples/graphicsview/diagramscene/arrow.h30
-rw-r--r--examples/graphicsview/diagramscene/diagramitem.cpp30
-rw-r--r--examples/graphicsview/diagramscene/diagramitem.h30
-rw-r--r--examples/graphicsview/diagramscene/diagramscene.cpp38
-rw-r--r--examples/graphicsview/diagramscene/diagramscene.h30
-rw-r--r--examples/graphicsview/diagramscene/diagramscene.pro2
-rw-r--r--examples/graphicsview/diagramscene/diagramtextitem.cpp30
-rw-r--r--examples/graphicsview/diagramscene/diagramtextitem.h30
-rw-r--r--examples/graphicsview/diagramscene/main.cpp30
-rw-r--r--examples/graphicsview/diagramscene/mainwindow.cpp58
-rw-r--r--examples/graphicsview/diagramscene/mainwindow.h30
-rw-r--r--examples/graphicsview/dragdroprobot/coloritem.cpp30
-rw-r--r--examples/graphicsview/dragdroprobot/coloritem.h30
-rw-r--r--examples/graphicsview/dragdroprobot/dragdroprobot.pro2
-rw-r--r--examples/graphicsview/dragdroprobot/main.cpp30
-rw-r--r--examples/graphicsview/dragdroprobot/robot.cpp30
-rw-r--r--examples/graphicsview/dragdroprobot/robot.h30
-rw-r--r--examples/graphicsview/elasticnodes/edge.cpp30
-rw-r--r--examples/graphicsview/elasticnodes/edge.h30
-rw-r--r--examples/graphicsview/elasticnodes/elasticnodes.pro7
-rw-r--r--examples/graphicsview/elasticnodes/graphwidget.cpp30
-rw-r--r--examples/graphicsview/elasticnodes/graphwidget.h30
-rw-r--r--examples/graphicsview/elasticnodes/main.cpp30
-rw-r--r--examples/graphicsview/elasticnodes/node.cpp32
-rw-r--r--examples/graphicsview/elasticnodes/node.h30
-rw-r--r--examples/graphicsview/flowlayout/flowlayout.cpp58
-rw-r--r--examples/graphicsview/flowlayout/flowlayout.h30
-rw-r--r--examples/graphicsview/flowlayout/main.cpp31
-rw-r--r--examples/graphicsview/flowlayout/window.cpp32
-rw-r--r--examples/graphicsview/flowlayout/window.h30
-rw-r--r--examples/graphicsview/graphicsview.pro16
-rw-r--r--examples/graphicsview/padnavigator/main.cpp30
-rw-r--r--examples/graphicsview/padnavigator/padnavigator.pro7
-rw-r--r--examples/graphicsview/padnavigator/panel.cpp30
-rw-r--r--examples/graphicsview/padnavigator/panel.h32
-rw-r--r--examples/graphicsview/padnavigator/roundrectitem.cpp30
-rw-r--r--examples/graphicsview/padnavigator/roundrectitem.h32
-rw-r--r--examples/graphicsview/padnavigator/splashitem.cpp30
-rw-r--r--examples/graphicsview/padnavigator/splashitem.h30
-rw-r--r--examples/graphicsview/portedasteroids/animateditem.cpp30
-rw-r--r--examples/graphicsview/portedasteroids/animateditem.h30
-rw-r--r--examples/graphicsview/portedasteroids/ledmeter.cpp30
-rw-r--r--examples/graphicsview/portedasteroids/ledmeter.h30
-rw-r--r--examples/graphicsview/portedasteroids/main.cpp30
-rw-r--r--examples/graphicsview/portedasteroids/portedasteroids.pro2
-rw-r--r--examples/graphicsview/portedasteroids/sprites.h30
-rw-r--r--examples/graphicsview/portedasteroids/toplevel.cpp38
-rw-r--r--examples/graphicsview/portedasteroids/toplevel.h30
-rw-r--r--examples/graphicsview/portedasteroids/view.cpp30
-rw-r--r--examples/graphicsview/portedasteroids/view.h30
-rw-r--r--examples/graphicsview/portedcanvas/blendshadow.cpp30
-rw-r--r--examples/graphicsview/portedcanvas/canvas.cpp30
-rw-r--r--examples/graphicsview/portedcanvas/canvas.h30
-rw-r--r--examples/graphicsview/portedcanvas/main.cpp30
-rw-r--r--examples/graphicsview/portedcanvas/makeimg.cpp30
-rw-r--r--examples/graphicsview/portedcanvas/portedcanvas.pro2
-rw-r--r--examples/graphicsview/simpleanchorlayout/main.cpp134
-rw-r--r--examples/graphicsview/simpleanchorlayout/simpleanchorlayout.pro9
-rw-r--r--examples/graphicsview/weatheranchorlayout/images/5days.jpgbin0 -> 5748 bytes-rw-r--r--examples/graphicsview/weatheranchorlayout/images/details.jpgbin0 -> 5323 bytes-rw-r--r--examples/graphicsview/weatheranchorlayout/images/place.jpgbin0 -> 62438 bytes-rw-r--r--examples/graphicsview/weatheranchorlayout/images/tabbar.jpgbin0 -> 849 bytes-rw-r--r--examples/graphicsview/weatheranchorlayout/images/title.jpgbin0 -> 3472 bytes-rw-r--r--examples/graphicsview/weatheranchorlayout/images/weather-few-clouds.pngbin0 -> 18976 bytes-rw-r--r--examples/graphicsview/weatheranchorlayout/main.cpp267
-rw-r--r--examples/graphicsview/weatheranchorlayout/weatheranchorlayout.pro14
-rw-r--r--examples/graphicsview/weatheranchorlayout/weatheranchorlayout.qrc10
-rw-r--r--examples/help/contextsensitivehelp/contextsensitivehelp.pro2
-rw-r--r--examples/help/contextsensitivehelp/doc/source.html6
-rw-r--r--examples/help/contextsensitivehelp/doc/wateringmachine.qchbin27648 -> 25600 bytes-rw-r--r--examples/help/contextsensitivehelp/doc/wateringmachine.qhcbin10240 -> 8192 bytes-rw-r--r--examples/help/contextsensitivehelp/doc/wateringmachine.qhp46
-rw-r--r--examples/help/contextsensitivehelp/helpbrowser.cpp30
-rw-r--r--examples/help/contextsensitivehelp/helpbrowser.h30
-rw-r--r--examples/help/contextsensitivehelp/main.cpp30
-rw-r--r--examples/help/contextsensitivehelp/wateringconfigdialog.cpp34
-rw-r--r--examples/help/contextsensitivehelp/wateringconfigdialog.h30
-rw-r--r--examples/help/contextsensitivehelp/wateringconfigdialog.ui2
-rw-r--r--examples/help/help.pro2
-rw-r--r--examples/help/remotecontrol/main.cpp30
-rw-r--r--examples/help/remotecontrol/remotecontrol.cpp34
-rw-r--r--examples/help/remotecontrol/remotecontrol.h30
-rw-r--r--examples/help/remotecontrol/remotecontrol.pro2
-rw-r--r--examples/help/simpletextviewer/assistant.cpp32
-rw-r--r--examples/help/simpletextviewer/assistant.h30
-rw-r--r--examples/help/simpletextviewer/findfiledialog.cpp38
-rw-r--r--examples/help/simpletextviewer/findfiledialog.h30
-rw-r--r--examples/help/simpletextviewer/main.cpp30
-rw-r--r--examples/help/simpletextviewer/mainwindow.cpp30
-rw-r--r--examples/help/simpletextviewer/mainwindow.h30
-rw-r--r--examples/help/simpletextviewer/simpletextviewer.pro2
-rw-r--r--examples/help/simpletextviewer/textedit.cpp30
-rw-r--r--examples/help/simpletextviewer/textedit.h30
-rw-r--r--examples/ipc/ipc.pro2
-rw-r--r--examples/ipc/localfortuneclient/client.cpp32
-rw-r--r--examples/ipc/localfortuneclient/client.h30
-rw-r--r--examples/ipc/localfortuneclient/localfortuneclient.pro2
-rw-r--r--examples/ipc/localfortuneclient/main.cpp30
-rw-r--r--examples/ipc/localfortuneserver/localfortuneserver.pro2
-rw-r--r--examples/ipc/localfortuneserver/main.cpp30
-rw-r--r--examples/ipc/localfortuneserver/server.cpp30
-rw-r--r--examples/ipc/localfortuneserver/server.h30
-rw-r--r--examples/ipc/sharedmemory/dialog.cpp30
-rw-r--r--examples/ipc/sharedmemory/dialog.h30
-rw-r--r--examples/ipc/sharedmemory/main.cpp30
-rw-r--r--examples/ipc/sharedmemory/sharedmemory.pro2
-rw-r--r--examples/itemviews/addressbook/adddialog.cpp30
-rw-r--r--examples/itemviews/addressbook/adddialog.h30
-rw-r--r--examples/itemviews/addressbook/addressbook.pro5
-rw-r--r--examples/itemviews/addressbook/addresswidget.cpp40
-rw-r--r--examples/itemviews/addressbook/addresswidget.h30
-rw-r--r--examples/itemviews/addressbook/main.cpp30
-rw-r--r--examples/itemviews/addressbook/mainwindow.cpp34
-rw-r--r--examples/itemviews/addressbook/mainwindow.h30
-rw-r--r--examples/itemviews/addressbook/newaddresstab.cpp30
-rw-r--r--examples/itemviews/addressbook/newaddresstab.h30
-rw-r--r--examples/itemviews/addressbook/tablemodel.cpp30
-rw-r--r--examples/itemviews/addressbook/tablemodel.h30
-rw-r--r--examples/itemviews/basicsortfiltermodel/basicsortfiltermodel.pro2
-rw-r--r--examples/itemviews/basicsortfiltermodel/main.cpp30
-rw-r--r--examples/itemviews/basicsortfiltermodel/window.cpp32
-rw-r--r--examples/itemviews/basicsortfiltermodel/window.h30
-rw-r--r--examples/itemviews/chart/chart.pro9
-rw-r--r--examples/itemviews/chart/main.cpp30
-rw-r--r--examples/itemviews/chart/mainwindow.cpp30
-rw-r--r--examples/itemviews/chart/mainwindow.h30
-rw-r--r--examples/itemviews/chart/pieview.cpp30
-rw-r--r--examples/itemviews/chart/pieview.h30
-rw-r--r--examples/itemviews/coloreditorfactory/coloreditorfactory.pro2
-rw-r--r--examples/itemviews/coloreditorfactory/colorlisteditor.cpp30
-rw-r--r--examples/itemviews/coloreditorfactory/colorlisteditor.h30
-rw-r--r--examples/itemviews/coloreditorfactory/main.cpp30
-rw-r--r--examples/itemviews/coloreditorfactory/window.cpp30
-rw-r--r--examples/itemviews/coloreditorfactory/window.h30
-rw-r--r--examples/itemviews/combowidgetmapper/main.cpp30
-rw-r--r--examples/itemviews/combowidgetmapper/window.cpp30
-rw-r--r--examples/itemviews/combowidgetmapper/window.h30
-rw-r--r--examples/itemviews/customsortfiltermodel/customsortfiltermodel.pro2
-rw-r--r--examples/itemviews/customsortfiltermodel/main.cpp30
-rw-r--r--examples/itemviews/customsortfiltermodel/mysortfilterproxymodel.cpp30
-rw-r--r--examples/itemviews/customsortfiltermodel/mysortfilterproxymodel.h30
-rw-r--r--examples/itemviews/customsortfiltermodel/window.cpp36
-rw-r--r--examples/itemviews/customsortfiltermodel/window.h30
-rw-r--r--examples/itemviews/dirview/dirview.pro2
-rw-r--r--examples/itemviews/dirview/main.cpp30
-rw-r--r--examples/itemviews/editabletreemodel/editabletreemodel.pro2
-rw-r--r--examples/itemviews/editabletreemodel/main.cpp30
-rw-r--r--examples/itemviews/editabletreemodel/mainwindow.cpp30
-rw-r--r--examples/itemviews/editabletreemodel/mainwindow.h30
-rw-r--r--examples/itemviews/editabletreemodel/treeitem.cpp30
-rw-r--r--examples/itemviews/editabletreemodel/treeitem.h30
-rw-r--r--examples/itemviews/editabletreemodel/treemodel.cpp30
-rw-r--r--examples/itemviews/editabletreemodel/treemodel.h30
-rw-r--r--examples/itemviews/fetchmore/filelistmodel.cpp30
-rw-r--r--examples/itemviews/fetchmore/filelistmodel.h30
-rw-r--r--examples/itemviews/fetchmore/main.cpp30
-rw-r--r--examples/itemviews/fetchmore/window.cpp36
-rw-r--r--examples/itemviews/fetchmore/window.h30
-rw-r--r--examples/itemviews/frozencolumn/freezetablewidget.cpp47
-rw-r--r--examples/itemviews/frozencolumn/freezetablewidget.h31
-rw-r--r--examples/itemviews/frozencolumn/grades.txt3
-rw-r--r--examples/itemviews/frozencolumn/main.cpp30
-rw-r--r--examples/itemviews/itemviews.pro6
-rw-r--r--examples/itemviews/pixelator/imagemodel.cpp30
-rw-r--r--examples/itemviews/pixelator/imagemodel.h30
-rw-r--r--examples/itemviews/pixelator/main.cpp30
-rw-r--r--examples/itemviews/pixelator/mainwindow.cpp30
-rw-r--r--examples/itemviews/pixelator/mainwindow.h30
-rw-r--r--examples/itemviews/pixelator/pixelator.pro2
-rw-r--r--examples/itemviews/pixelator/pixeldelegate.cpp30
-rw-r--r--examples/itemviews/pixelator/pixeldelegate.h30
-rw-r--r--examples/itemviews/puzzle/main.cpp30
-rw-r--r--examples/itemviews/puzzle/mainwindow.cpp30
-rw-r--r--examples/itemviews/puzzle/mainwindow.h30
-rw-r--r--examples/itemviews/puzzle/piecesmodel.cpp30
-rw-r--r--examples/itemviews/puzzle/piecesmodel.h30
-rw-r--r--examples/itemviews/puzzle/puzzle.pro2
-rw-r--r--examples/itemviews/puzzle/puzzlewidget.cpp30
-rw-r--r--examples/itemviews/puzzle/puzzlewidget.h30
-rw-r--r--examples/itemviews/simpledommodel/domitem.cpp30
-rw-r--r--examples/itemviews/simpledommodel/domitem.h30
-rw-r--r--examples/itemviews/simpledommodel/dommodel.cpp30
-rw-r--r--examples/itemviews/simpledommodel/dommodel.h30
-rw-r--r--examples/itemviews/simpledommodel/main.cpp30
-rw-r--r--examples/itemviews/simpledommodel/mainwindow.cpp30
-rw-r--r--examples/itemviews/simpledommodel/mainwindow.h30
-rw-r--r--examples/itemviews/simpledommodel/simpledommodel.pro2
-rw-r--r--examples/itemviews/simpletreemodel/main.cpp30
-rw-r--r--examples/itemviews/simpletreemodel/simpletreemodel.pro2
-rw-r--r--examples/itemviews/simpletreemodel/treeitem.cpp30
-rw-r--r--examples/itemviews/simpletreemodel/treeitem.h30
-rw-r--r--examples/itemviews/simpletreemodel/treemodel.cpp30
-rw-r--r--examples/itemviews/simpletreemodel/treemodel.h30
-rw-r--r--examples/itemviews/simplewidgetmapper/main.cpp30
-rw-r--r--examples/itemviews/simplewidgetmapper/simplewidgetmapper.pro2
-rw-r--r--examples/itemviews/simplewidgetmapper/window.cpp30
-rw-r--r--examples/itemviews/simplewidgetmapper/window.h30
-rw-r--r--examples/itemviews/spinboxdelegate/delegate.cpp30
-rw-r--r--examples/itemviews/spinboxdelegate/delegate.h30
-rw-r--r--examples/itemviews/spinboxdelegate/main.cpp30
-rw-r--r--examples/itemviews/spinboxdelegate/spinboxdelegate.pro2
-rw-r--r--examples/itemviews/stardelegate/main.cpp30
-rw-r--r--examples/itemviews/stardelegate/stardelegate.cpp30
-rw-r--r--examples/itemviews/stardelegate/stardelegate.h30
-rw-r--r--examples/itemviews/stardelegate/stardelegate.pro2
-rw-r--r--examples/itemviews/stardelegate/stareditor.cpp30
-rw-r--r--examples/itemviews/stardelegate/stareditor.h30
-rw-r--r--examples/itemviews/stardelegate/starrating.cpp30
-rw-r--r--examples/itemviews/stardelegate/starrating.h30
-rw-r--r--examples/layouts/basiclayouts/basiclayouts.pro2
-rw-r--r--examples/layouts/basiclayouts/dialog.cpp30
-rw-r--r--examples/layouts/basiclayouts/dialog.h30
-rw-r--r--examples/layouts/basiclayouts/main.cpp30
-rw-r--r--examples/layouts/borderlayout/borderlayout.cpp30
-rw-r--r--examples/layouts/borderlayout/borderlayout.h30
-rw-r--r--examples/layouts/borderlayout/borderlayout.pro2
-rw-r--r--examples/layouts/borderlayout/main.cpp30
-rw-r--r--examples/layouts/borderlayout/window.cpp30
-rw-r--r--examples/layouts/borderlayout/window.h30
-rw-r--r--examples/layouts/dynamiclayouts/dialog.cpp30
-rw-r--r--examples/layouts/dynamiclayouts/dialog.h30
-rw-r--r--examples/layouts/dynamiclayouts/dynamiclayouts.pro2
-rw-r--r--examples/layouts/dynamiclayouts/main.cpp30
-rw-r--r--examples/layouts/flowlayout/flowlayout.cpp30
-rw-r--r--examples/layouts/flowlayout/flowlayout.h30
-rw-r--r--examples/layouts/flowlayout/flowlayout.pro2
-rw-r--r--examples/layouts/flowlayout/main.cpp30
-rw-r--r--examples/layouts/flowlayout/window.cpp30
-rw-r--r--examples/layouts/flowlayout/window.h30
-rw-r--r--examples/layouts/layouts.pro2
-rw-r--r--examples/linguist/arrowpad/arrowpad.cpp30
-rw-r--r--examples/linguist/arrowpad/arrowpad.h30
-rw-r--r--examples/linguist/arrowpad/arrowpad.pro2
-rw-r--r--examples/linguist/arrowpad/main.cpp30
-rw-r--r--examples/linguist/arrowpad/mainwindow.cpp30
-rw-r--r--examples/linguist/arrowpad/mainwindow.h30
-rw-r--r--examples/linguist/hellotr/hellotr.pro2
-rw-r--r--examples/linguist/hellotr/main.cpp30
-rw-r--r--examples/linguist/linguist.pro2
-rw-r--r--examples/linguist/trollprint/main.cpp30
-rw-r--r--examples/linguist/trollprint/mainwindow.cpp30
-rw-r--r--examples/linguist/trollprint/mainwindow.h30
-rw-r--r--examples/linguist/trollprint/printpanel.cpp30
-rw-r--r--examples/linguist/trollprint/printpanel.h30
-rw-r--r--examples/linguist/trollprint/trollprint.pro2
-rw-r--r--examples/mainwindows/application/application.pro2
-rw-r--r--examples/mainwindows/application/main.cpp30
-rw-r--r--examples/mainwindows/application/mainwindow.cpp38
-rw-r--r--examples/mainwindows/application/mainwindow.h30
-rw-r--r--examples/mainwindows/dockwidgets/dockwidgets.pro2
-rw-r--r--examples/mainwindows/dockwidgets/main.cpp30
-rw-r--r--examples/mainwindows/dockwidgets/mainwindow.cpp38
-rw-r--r--examples/mainwindows/dockwidgets/mainwindow.h30
-rw-r--r--examples/mainwindows/mainwindows.pro6
-rw-r--r--examples/mainwindows/mdi/main.cpp30
-rw-r--r--examples/mainwindows/mdi/mainwindow.cpp38
-rw-r--r--examples/mainwindows/mdi/mainwindow.h30
-rw-r--r--examples/mainwindows/mdi/mdi.pro2
-rw-r--r--examples/mainwindows/mdi/mdichild.cpp30
-rw-r--r--examples/mainwindows/mdi/mdichild.h30
-rw-r--r--examples/mainwindows/menus/main.cpp30
-rw-r--r--examples/mainwindows/menus/mainwindow.cpp30
-rw-r--r--examples/mainwindows/menus/mainwindow.h30
-rw-r--r--examples/mainwindows/menus/menus.pro5
-rw-r--r--examples/mainwindows/recentfiles/main.cpp30
-rw-r--r--examples/mainwindows/recentfiles/mainwindow.cpp30
-rw-r--r--examples/mainwindows/recentfiles/mainwindow.h30
-rw-r--r--examples/mainwindows/recentfiles/recentfiles.pro2
-rw-r--r--examples/mainwindows/sdi/main.cpp30
-rw-r--r--examples/mainwindows/sdi/mainwindow.cpp30
-rw-r--r--examples/mainwindows/sdi/mainwindow.h32
-rw-r--r--examples/mainwindows/sdi/sdi.pro2
-rw-r--r--examples/multimedia/audio/audio.pro10
-rw-r--r--examples/multimedia/audio/audiodevices/audiodevices.cpp272
-rw-r--r--examples/multimedia/audio/audiodevices/audiodevices.h79
-rw-r--r--examples/multimedia/audio/audiodevices/audiodevices.pro12
-rw-r--r--examples/multimedia/audio/audiodevices/audiodevicesbase.ui255
-rw-r--r--examples/multimedia/audio/audiodevices/main.cpp55
-rw-r--r--examples/multimedia/audio/audioinput/audioinput.cpp376
-rw-r--r--examples/multimedia/audio/audioinput/audioinput.h144
-rw-r--r--examples/multimedia/audio/audioinput/audioinput.pro12
-rw-r--r--examples/multimedia/audio/audioinput/main.cpp55
-rw-r--r--examples/multimedia/audio/audiooutput/audiooutput.cpp280
-rw-r--r--examples/multimedia/audio/audiooutput/audiooutput.h112
-rw-r--r--examples/multimedia/audio/audiooutput/audiooutput.pro11
-rw-r--r--examples/multimedia/audio/audiooutput/main.cpp56
-rw-r--r--examples/multimedia/audiodevices/audiodevices.cpp274
-rw-r--r--examples/multimedia/audiodevices/audiodevices.h78
-rw-r--r--examples/multimedia/audiodevices/audiodevices.pro17
-rw-r--r--examples/multimedia/audiodevices/audiodevicesbase.ui233
-rw-r--r--examples/multimedia/audiodevices/main.cpp55
-rw-r--r--examples/multimedia/audioinput/audioinput.cpp296
-rw-r--r--examples/multimedia/audioinput/audioinput.h124
-rw-r--r--examples/multimedia/audioinput/audioinput.pro16
-rw-r--r--examples/multimedia/audioinput/main.cpp55
-rw-r--r--examples/multimedia/audiooutput/audiooutput.cpp270
-rw-r--r--examples/multimedia/audiooutput/audiooutput.h110
-rw-r--r--examples/multimedia/audiooutput/audiooutput.pro16
-rw-r--r--examples/multimedia/audiooutput/main.cpp56
-rw-r--r--examples/multimedia/multimedia.pro14
-rw-r--r--examples/multimedia/videographicsitem/main.cpp55
-rw-r--r--examples/multimedia/videographicsitem/videographicsitem.pro21
-rw-r--r--examples/multimedia/videographicsitem/videoitem.cpp144
-rw-r--r--examples/multimedia/videographicsitem/videoitem.h79
-rw-r--r--examples/multimedia/videographicsitem/videoplayer.cpp209
-rw-r--r--examples/multimedia/videographicsitem/videoplayer.h86
-rw-r--r--examples/multimedia/videowidget/main.cpp54
-rw-r--r--examples/multimedia/videowidget/videoplayer.cpp182
-rw-r--r--examples/multimedia/videowidget/videoplayer.h79
-rw-r--r--examples/multimedia/videowidget/videowidget.cpp114
-rw-r--r--examples/multimedia/videowidget/videowidget.h76
-rw-r--r--examples/multimedia/videowidget/videowidget.pro25
-rw-r--r--examples/multimedia/videowidget/videowidgetsurface.cpp175
-rw-r--r--examples/multimedia/videowidget/videowidgetsurface.h81
-rw-r--r--examples/multitouch/dials/main.cpp30
-rw-r--r--examples/multitouch/fingerpaint/main.cpp30
-rw-r--r--examples/multitouch/fingerpaint/mainwindow.cpp30
-rw-r--r--examples/multitouch/fingerpaint/mainwindow.h30
-rw-r--r--examples/multitouch/fingerpaint/scribblearea.cpp30
-rw-r--r--examples/multitouch/fingerpaint/scribblearea.h30
-rw-r--r--examples/multitouch/knobs/knob.cpp30
-rw-r--r--examples/multitouch/knobs/knob.h30
-rw-r--r--examples/multitouch/knobs/main.cpp30
-rw-r--r--examples/multitouch/pinchzoom/graphicsview.cpp50
-rw-r--r--examples/multitouch/pinchzoom/graphicsview.h33
-rw-r--r--examples/multitouch/pinchzoom/main.cpp30
-rw-r--r--examples/multitouch/pinchzoom/mouse.cpp30
-rw-r--r--examples/multitouch/pinchzoom/mouse.h35
-rw-r--r--examples/network/blockingfortuneclient/blockingclient.cpp59
-rw-r--r--examples/network/blockingfortuneclient/blockingclient.h30
-rw-r--r--examples/network/blockingfortuneclient/blockingfortuneclient.pro2
-rw-r--r--examples/network/blockingfortuneclient/fortunethread.cpp30
-rw-r--r--examples/network/blockingfortuneclient/fortunethread.h30
-rw-r--r--examples/network/blockingfortuneclient/main.cpp30
-rw-r--r--examples/network/broadcastreceiver/broadcastreceiver.pro2
-rw-r--r--examples/network/broadcastreceiver/main.cpp30
-rw-r--r--examples/network/broadcastreceiver/receiver.cpp32
-rw-r--r--examples/network/broadcastreceiver/receiver.h30
-rw-r--r--examples/network/broadcastsender/broadcastsender.pro2
-rw-r--r--examples/network/broadcastsender/main.cpp30
-rw-r--r--examples/network/broadcastsender/sender.cpp30
-rw-r--r--examples/network/broadcastsender/sender.h30
-rw-r--r--examples/network/download/download.pro2
-rw-r--r--examples/network/download/main.cpp30
-rw-r--r--examples/network/downloadmanager/downloadmanager.cpp30
-rw-r--r--examples/network/downloadmanager/downloadmanager.h30
-rw-r--r--examples/network/downloadmanager/downloadmanager.pro2
-rw-r--r--examples/network/downloadmanager/main.cpp30
-rw-r--r--examples/network/downloadmanager/textprogressbar.cpp30
-rw-r--r--examples/network/downloadmanager/textprogressbar.h30
-rw-r--r--examples/network/fortuneclient/client.cpp65
-rw-r--r--examples/network/fortuneclient/client.h33
-rw-r--r--examples/network/fortuneclient/fortuneclient.pro8
-rw-r--r--examples/network/fortuneclient/main.cpp36
-rw-r--r--examples/network/fortuneserver/fortuneserver.pro9
-rw-r--r--examples/network/fortuneserver/main.cpp41
-rw-r--r--examples/network/fortuneserver/server.cpp48
-rw-r--r--examples/network/fortuneserver/server.h30
-rw-r--r--examples/network/ftp/ftp.pro11
-rw-r--r--examples/network/ftp/ftpwindow.cpp349
-rw-r--r--examples/network/ftp/ftpwindow.h104
-rw-r--r--examples/network/ftp/main.cpp54
-rw-r--r--examples/network/googlesuggest/googlesuggest.cpp83
-rw-r--r--examples/network/googlesuggest/googlesuggest.h36
-rw-r--r--examples/network/googlesuggest/main.cpp30
-rw-r--r--examples/network/googlesuggest/searchbox.cpp37
-rw-r--r--examples/network/googlesuggest/searchbox.h32
-rw-r--r--examples/network/http/http.pro2
-rw-r--r--examples/network/http/httpwindow.cpp52
-rw-r--r--examples/network/http/httpwindow.h30
-rw-r--r--examples/network/http/main.cpp31
-rw-r--r--examples/network/loopback/dialog.cpp30
-rw-r--r--examples/network/loopback/dialog.h30
-rw-r--r--examples/network/loopback/loopback.pro2
-rw-r--r--examples/network/loopback/main.cpp30
-rw-r--r--examples/network/network-chat/chatdialog.cpp46
-rw-r--r--examples/network/network-chat/chatdialog.h30
-rw-r--r--examples/network/network-chat/client.cpp42
-rw-r--r--examples/network/network-chat/client.h30
-rw-r--r--examples/network/network-chat/connection.cpp30
-rw-r--r--examples/network/network-chat/connection.h30
-rw-r--r--examples/network/network-chat/main.cpp41
-rw-r--r--examples/network/network-chat/network-chat.pro8
-rw-r--r--examples/network/network-chat/peermanager.cpp37
-rw-r--r--examples/network/network-chat/peermanager.h30
-rw-r--r--examples/network/network-chat/server.cpp30
-rw-r--r--examples/network/network-chat/server.h30
-rw-r--r--examples/network/network.pro15
-rw-r--r--examples/network/qftp/ftp.qrc (renamed from examples/network/ftp/ftp.qrc)0
-rw-r--r--examples/network/qftp/ftpwindow.cpp379
-rw-r--r--examples/network/qftp/ftpwindow.h108
-rw-r--r--examples/network/qftp/images/cdtoparent.png (renamed from examples/network/ftp/images/cdtoparent.png)bin139 -> 139 bytes-rw-r--r--examples/network/qftp/images/dir.png (renamed from examples/network/ftp/images/dir.png)bin154 -> 154 bytes-rw-r--r--examples/network/qftp/images/file.png (renamed from examples/network/ftp/images/file.png)bin129 -> 129 bytes-rw-r--r--examples/network/qftp/main.cpp67
-rw-r--r--examples/network/qftp/qftp.pro20
-rw-r--r--examples/network/qftp/sym_iap_util.h514
-rw-r--r--examples/network/securesocketclient/certificateinfo.cpp30
-rw-r--r--examples/network/securesocketclient/certificateinfo.h30
-rw-r--r--examples/network/securesocketclient/main.cpp30
-rw-r--r--examples/network/securesocketclient/securesocketclient.pro5
-rw-r--r--examples/network/securesocketclient/sslclient.cpp32
-rw-r--r--examples/network/securesocketclient/sslclient.h30
-rw-r--r--examples/network/threadedfortuneserver/dialog.cpp47
-rw-r--r--examples/network/threadedfortuneserver/dialog.h30
-rw-r--r--examples/network/threadedfortuneserver/fortuneserver.cpp30
-rw-r--r--examples/network/threadedfortuneserver/fortuneserver.h30
-rw-r--r--examples/network/threadedfortuneserver/fortunethread.cpp30
-rw-r--r--examples/network/threadedfortuneserver/fortunethread.h30
-rw-r--r--examples/network/threadedfortuneserver/main.cpp30
-rw-r--r--examples/network/threadedfortuneserver/threadedfortuneserver.pro2
-rw-r--r--examples/network/torrent/addtorrentdialog.cpp34
-rw-r--r--examples/network/torrent/addtorrentdialog.h30
-rw-r--r--examples/network/torrent/bencodeparser.cpp30
-rw-r--r--examples/network/torrent/bencodeparser.h30
-rw-r--r--examples/network/torrent/connectionmanager.cpp30
-rw-r--r--examples/network/torrent/connectionmanager.h30
-rw-r--r--examples/network/torrent/filemanager.cpp30
-rw-r--r--examples/network/torrent/filemanager.h30
-rw-r--r--examples/network/torrent/main.cpp31
-rw-r--r--examples/network/torrent/mainwindow.cpp34
-rw-r--r--examples/network/torrent/mainwindow.h30
-rw-r--r--examples/network/torrent/metainfo.cpp30
-rw-r--r--examples/network/torrent/metainfo.h30
-rw-r--r--examples/network/torrent/peerwireclient.cpp30
-rw-r--r--examples/network/torrent/peerwireclient.h30
-rw-r--r--examples/network/torrent/ratecontroller.cpp30
-rw-r--r--examples/network/torrent/ratecontroller.h30
-rw-r--r--examples/network/torrent/torrent.pro2
-rw-r--r--examples/network/torrent/torrentclient.cpp54
-rw-r--r--examples/network/torrent/torrentclient.h30
-rw-r--r--examples/network/torrent/torrentserver.cpp34
-rw-r--r--examples/network/torrent/torrentserver.h30
-rw-r--r--examples/network/torrent/trackerclient.cpp30
-rw-r--r--examples/network/torrent/trackerclient.h30
-rw-r--r--examples/opengl/2dpainting/2dpainting.pro2
-rw-r--r--examples/opengl/2dpainting/glwidget.cpp30
-rw-r--r--examples/opengl/2dpainting/glwidget.h30
-rw-r--r--examples/opengl/2dpainting/helper.cpp30
-rw-r--r--examples/opengl/2dpainting/helper.h30
-rw-r--r--examples/opengl/2dpainting/main.cpp30
-rw-r--r--examples/opengl/2dpainting/widget.cpp30
-rw-r--r--examples/opengl/2dpainting/widget.h30
-rw-r--r--examples/opengl/2dpainting/window.cpp30
-rw-r--r--examples/opengl/2dpainting/window.h30
-rw-r--r--examples/opengl/framebufferobject/bubbles.svg28
-rw-r--r--examples/opengl/framebufferobject/framebufferobject.pro2
-rw-r--r--examples/opengl/framebufferobject/glwidget.cpp31
-rw-r--r--examples/opengl/framebufferobject/glwidget.h30
-rw-r--r--examples/opengl/framebufferobject/main.cpp30
-rw-r--r--examples/opengl/framebufferobject2/framebufferobject2.pro2
-rw-r--r--examples/opengl/framebufferobject2/glwidget.cpp32
-rw-r--r--examples/opengl/framebufferobject2/glwidget.h30
-rw-r--r--examples/opengl/framebufferobject2/main.cpp30
-rw-r--r--examples/opengl/grabber/glwidget.cpp30
-rw-r--r--examples/opengl/grabber/glwidget.h30
-rw-r--r--examples/opengl/grabber/grabber.pro2
-rw-r--r--examples/opengl/grabber/main.cpp30
-rw-r--r--examples/opengl/grabber/mainwindow.cpp30
-rw-r--r--examples/opengl/grabber/mainwindow.h30
-rw-r--r--examples/opengl/hellogl/glwidget.cpp172
-rw-r--r--examples/opengl/hellogl/glwidget.h40
-rw-r--r--examples/opengl/hellogl/hellogl.pro11
-rw-r--r--examples/opengl/hellogl/main.cpp40
-rw-r--r--examples/opengl/hellogl/window.cpp38
-rw-r--r--examples/opengl/hellogl/window.h33
-rw-r--r--examples/opengl/hellogl_es/bubble.cpp30
-rw-r--r--examples/opengl/hellogl_es/bubble.h30
-rw-r--r--examples/opengl/hellogl_es/cl_helper.h30
-rw-r--r--examples/opengl/hellogl_es/glwidget.cpp30
-rw-r--r--examples/opengl/hellogl_es/glwidget.h30
-rw-r--r--examples/opengl/hellogl_es/hellogl_es.pro9
-rw-r--r--examples/opengl/hellogl_es/main.cpp30
-rw-r--r--examples/opengl/hellogl_es/mainwindow.cpp30
-rw-r--r--examples/opengl/hellogl_es/mainwindow.h30
-rw-r--r--examples/opengl/hellogl_es2/bubble.cpp30
-rw-r--r--examples/opengl/hellogl_es2/bubble.h30
-rw-r--r--examples/opengl/hellogl_es2/glwidget.cpp68
-rw-r--r--examples/opengl/hellogl_es2/glwidget.h30
-rw-r--r--examples/opengl/hellogl_es2/hellogl_es2.pro6
-rw-r--r--examples/opengl/hellogl_es2/main.cpp30
-rw-r--r--examples/opengl/hellogl_es2/mainwindow.cpp30
-rw-r--r--examples/opengl/hellogl_es2/mainwindow.h30
-rw-r--r--examples/opengl/opengl.pro8
-rw-r--r--examples/opengl/overpainting/bubble.cpp30
-rw-r--r--examples/opengl/overpainting/bubble.h30
-rw-r--r--examples/opengl/overpainting/glwidget.cpp172
-rw-r--r--examples/opengl/overpainting/glwidget.h44
-rw-r--r--examples/opengl/overpainting/main.cpp30
-rw-r--r--examples/opengl/overpainting/overpainting.pro26
-rw-r--r--examples/opengl/pbuffers/cube.cpp332
-rw-r--r--examples/opengl/pbuffers/cube.h149
-rw-r--r--examples/opengl/pbuffers/glwidget.cpp311
-rw-r--r--examples/opengl/pbuffers/glwidget.h76
-rw-r--r--examples/opengl/pbuffers/main.cpp32
-rw-r--r--examples/opengl/pbuffers/pbuffers.pro18
-rw-r--r--examples/opengl/pbuffers2/bubbles.svg28
-rw-r--r--examples/opengl/pbuffers2/glwidget.cpp32
-rw-r--r--examples/opengl/pbuffers2/glwidget.h30
-rw-r--r--examples/opengl/pbuffers2/main.cpp30
-rw-r--r--examples/opengl/pbuffers2/pbuffers2.pro2
-rw-r--r--examples/opengl/samplebuffers/glwidget.cpp30
-rw-r--r--examples/opengl/samplebuffers/glwidget.h30
-rw-r--r--examples/opengl/samplebuffers/main.cpp30
-rw-r--r--examples/opengl/samplebuffers/samplebuffers.pro2
-rw-r--r--examples/opengl/shared/qtlogo.cpp412
-rw-r--r--examples/opengl/shared/qtlogo.h67
-rw-r--r--examples/opengl/textures/glwidget.cpp162
-rw-r--r--examples/opengl/textures/glwidget.h44
-rw-r--r--examples/opengl/textures/main.cpp30
-rw-r--r--examples/opengl/textures/textures.pro2
-rw-r--r--examples/opengl/textures/window.cpp34
-rw-r--r--examples/opengl/textures/window.h30
-rw-r--r--examples/openvg/star/main.cpp30
-rw-r--r--examples/openvg/star/star.pro1
-rw-r--r--examples/openvg/star/starwidget.cpp34
-rw-r--r--examples/openvg/star/starwidget.h30
-rw-r--r--examples/painting/basicdrawing/basicdrawing.pro5
-rw-r--r--examples/painting/basicdrawing/main.cpp30
-rw-r--r--examples/painting/basicdrawing/renderarea.cpp35
-rw-r--r--examples/painting/basicdrawing/renderarea.h30
-rw-r--r--examples/painting/basicdrawing/window.cpp30
-rw-r--r--examples/painting/basicdrawing/window.h30
-rw-r--r--examples/painting/concentriccircles/circlewidget.cpp30
-rw-r--r--examples/painting/concentriccircles/circlewidget.h30
-rw-r--r--examples/painting/concentriccircles/concentriccircles.pro5
-rw-r--r--examples/painting/concentriccircles/main.cpp30
-rw-r--r--examples/painting/concentriccircles/window.cpp30
-rw-r--r--examples/painting/concentriccircles/window.h30
-rw-r--r--examples/painting/fontsampler/fontsampler.pro2
-rw-r--r--examples/painting/fontsampler/main.cpp30
-rw-r--r--examples/painting/fontsampler/mainwindow.cpp42
-rw-r--r--examples/painting/fontsampler/mainwindow.h30
-rw-r--r--examples/painting/imagecomposition/imagecomposer.cpp30
-rw-r--r--examples/painting/imagecomposition/imagecomposer.h30
-rw-r--r--examples/painting/imagecomposition/imagecomposition.pro4
-rw-r--r--examples/painting/imagecomposition/main.cpp30
-rw-r--r--examples/painting/painterpaths/main.cpp30
-rw-r--r--examples/painting/painterpaths/painterpaths.pro7
-rw-r--r--examples/painting/painterpaths/renderarea.cpp30
-rw-r--r--examples/painting/painterpaths/renderarea.h30
-rw-r--r--examples/painting/painterpaths/window.cpp30
-rw-r--r--examples/painting/painterpaths/window.h30
-rw-r--r--examples/painting/painting.pro4
-rw-r--r--examples/painting/svggenerator/displaywidget.cpp32
-rw-r--r--examples/painting/svggenerator/displaywidget.h30
-rw-r--r--examples/painting/svggenerator/main.cpp30
-rw-r--r--examples/painting/svggenerator/svggenerator.pro5
-rw-r--r--examples/painting/svggenerator/window.cpp30
-rw-r--r--examples/painting/svggenerator/window.h30
-rw-r--r--examples/painting/svgviewer/files/bubbles.svg28
-rw-r--r--examples/painting/svgviewer/main.cpp30
-rw-r--r--examples/painting/svgviewer/mainwindow.cpp34
-rw-r--r--examples/painting/svgviewer/mainwindow.h30
-rw-r--r--examples/painting/svgviewer/svgview.cpp31
-rw-r--r--examples/painting/svgviewer/svgview.h30
-rw-r--r--examples/painting/svgviewer/svgviewer.pro8
-rw-r--r--examples/painting/transformations/main.cpp30
-rw-r--r--examples/painting/transformations/renderarea.cpp30
-rw-r--r--examples/painting/transformations/renderarea.h30
-rw-r--r--examples/painting/transformations/transformations.pro5
-rw-r--r--examples/painting/transformations/window.cpp30
-rw-r--r--examples/painting/transformations/window.h30
-rw-r--r--examples/phonon/capabilities/capabilities.pro1
-rw-r--r--examples/phonon/capabilities/main.cpp30
-rw-r--r--examples/phonon/capabilities/window.cpp30
-rw-r--r--examples/phonon/capabilities/window.h30
-rw-r--r--examples/phonon/musicplayer/main.cpp57
-rw-r--r--examples/phonon/musicplayer/mainwindow.cpp355
-rw-r--r--examples/phonon/musicplayer/mainwindow.h112
-rw-r--r--examples/phonon/musicplayer/musicplayer.pro16
-rw-r--r--examples/phonon/phonon.pro4
-rw-r--r--examples/phonon/qmusicplayer/main.cpp57
-rw-r--r--examples/phonon/qmusicplayer/mainwindow.cpp355
-rw-r--r--examples/phonon/qmusicplayer/mainwindow.h112
-rw-r--r--examples/phonon/qmusicplayer/qmusicplayer.pro17
-rw-r--r--examples/qmake/precompile/main.cpp30
-rw-r--r--examples/qmake/precompile/mydialog.cpp30
-rw-r--r--examples/qmake/precompile/mydialog.h30
-rw-r--r--examples/qmake/precompile/myobject.cpp30
-rw-r--r--examples/qmake/precompile/myobject.h30
-rw-r--r--examples/qmake/precompile/stable.h30
-rw-r--r--examples/qmake/precompile/util.cpp30
-rw-r--r--examples/qmake/tutorial/hello.cpp30
-rw-r--r--examples/qmake/tutorial/hello.h30
-rw-r--r--examples/qmake/tutorial/hellounix.cpp30
-rw-r--r--examples/qmake/tutorial/hellowin.cpp30
-rw-r--r--examples/qmake/tutorial/main.cpp30
-rw-r--r--examples/qtconcurrent/imagescaling/imagescaling.cpp30
-rw-r--r--examples/qtconcurrent/imagescaling/imagescaling.h30
-rw-r--r--examples/qtconcurrent/imagescaling/imagescaling.pro2
-rw-r--r--examples/qtconcurrent/imagescaling/main.cpp30
-rw-r--r--examples/qtconcurrent/map/main.cpp30
-rw-r--r--examples/qtconcurrent/map/map.pro2
-rw-r--r--examples/qtconcurrent/progressdialog/main.cpp32
-rw-r--r--examples/qtconcurrent/progressdialog/progressdialog.pro2
-rw-r--r--examples/qtconcurrent/qtconcurrent.pro2
-rw-r--r--examples/qtconcurrent/runfunction/main.cpp30
-rw-r--r--examples/qtconcurrent/runfunction/runfunction.pro2
-rw-r--r--examples/qtconcurrent/wordcount/main.cpp30
-rw-r--r--examples/qtconcurrent/wordcount/wordcount.pro2
-rw-r--r--examples/qtestlib/qtestlib.pro2
-rw-r--r--examples/qtestlib/tutorial1/testqstring.cpp30
-rw-r--r--examples/qtestlib/tutorial1/tutorial1.pro5
-rw-r--r--examples/qtestlib/tutorial2/testqstring.cpp30
-rw-r--r--examples/qtestlib/tutorial2/tutorial2.pro5
-rw-r--r--examples/qtestlib/tutorial3/testgui.cpp30
-rw-r--r--examples/qtestlib/tutorial3/tutorial3.pro5
-rw-r--r--examples/qtestlib/tutorial4/testgui.cpp30
-rw-r--r--examples/qtestlib/tutorial4/tutorial4.pro5
-rw-r--r--examples/qtestlib/tutorial5/benchmarking.cpp30
-rw-r--r--examples/qtestlib/tutorial5/tutorial5.pro5
-rw-r--r--examples/qws/ahigl/ahigl.pro16
-rw-r--r--examples/qws/ahigl/qscreenahigl_qws.cpp963
-rw-r--r--examples/qws/ahigl/qscreenahigl_qws.h91
-rw-r--r--examples/qws/ahigl/qscreenahiglplugin.cpp97
-rw-r--r--examples/qws/ahigl/qwindowsurface_ahigl.cpp349
-rw-r--r--examples/qws/ahigl/qwindowsurface_ahigl_p.h92
-rw-r--r--examples/qws/dbscreen/dbscreen.cpp51
-rw-r--r--examples/qws/dbscreen/dbscreen.h51
-rw-r--r--examples/qws/dbscreen/dbscreendriverplugin.cpp53
-rw-r--r--examples/qws/framebuffer/main.c30
-rw-r--r--examples/qws/mousecalibration/calibration.cpp30
-rw-r--r--examples/qws/mousecalibration/calibration.h30
-rw-r--r--examples/qws/mousecalibration/main.cpp30
-rw-r--r--examples/qws/mousecalibration/scribblewidget.cpp30
-rw-r--r--examples/qws/mousecalibration/scribblewidget.h30
-rw-r--r--examples/qws/simpledecoration/analogclock.cpp30
-rw-r--r--examples/qws/simpledecoration/analogclock.h30
-rw-r--r--examples/qws/simpledecoration/main.cpp30
-rw-r--r--examples/qws/simpledecoration/mydecoration.cpp30
-rw-r--r--examples/qws/simpledecoration/mydecoration.h30
-rw-r--r--examples/qws/svgalib/svgalibpaintdevice.cpp30
-rw-r--r--examples/qws/svgalib/svgalibpaintdevice.h30
-rw-r--r--examples/qws/svgalib/svgalibpaintengine.cpp30
-rw-r--r--examples/qws/svgalib/svgalibpaintengine.h30
-rw-r--r--examples/qws/svgalib/svgalibplugin.cpp30
-rw-r--r--examples/qws/svgalib/svgalibscreen.cpp30
-rw-r--r--examples/qws/svgalib/svgalibscreen.h30
-rw-r--r--examples/qws/svgalib/svgalibsurface.cpp30
-rw-r--r--examples/qws/svgalib/svgalibsurface.h30
-rw-r--r--examples/richtext/calendar/calendar.pro2
-rw-r--r--examples/richtext/calendar/main.cpp30
-rw-r--r--examples/richtext/calendar/mainwindow.cpp30
-rw-r--r--examples/richtext/calendar/mainwindow.h30
-rw-r--r--examples/richtext/orderform/detailsdialog.cpp30
-rw-r--r--examples/richtext/orderform/detailsdialog.h30
-rw-r--r--examples/richtext/orderform/main.cpp30
-rw-r--r--examples/richtext/orderform/mainwindow.cpp30
-rw-r--r--examples/richtext/orderform/mainwindow.h30
-rw-r--r--examples/richtext/orderform/orderform.pro2
-rw-r--r--examples/richtext/richtext.pro2
-rw-r--r--examples/richtext/syntaxhighlighter/highlighter.cpp30
-rw-r--r--examples/richtext/syntaxhighlighter/highlighter.h30
-rw-r--r--examples/richtext/syntaxhighlighter/main.cpp30
-rw-r--r--examples/richtext/syntaxhighlighter/mainwindow.cpp30
-rw-r--r--examples/richtext/syntaxhighlighter/mainwindow.h30
-rw-r--r--examples/richtext/syntaxhighlighter/syntaxhighlighter.pro2
-rw-r--r--examples/richtext/textobject/main.cpp30
-rw-r--r--examples/richtext/textobject/svgtextobject.cpp34
-rw-r--r--examples/richtext/textobject/svgtextobject.h30
-rw-r--r--examples/richtext/textobject/window.cpp30
-rw-r--r--examples/richtext/textobject/window.h30
-rw-r--r--examples/script/calculator/calculator.pro2
-rw-r--r--examples/script/calculator/main.cpp34
-rw-r--r--examples/script/context2d/context2d.cpp34
-rw-r--r--examples/script/context2d/context2d.h30
-rw-r--r--examples/script/context2d/context2d.pro9
-rw-r--r--examples/script/context2d/domimage.cpp30
-rw-r--r--examples/script/context2d/domimage.h30
-rw-r--r--examples/script/context2d/environment.cpp30
-rw-r--r--examples/script/context2d/environment.h30
-rw-r--r--examples/script/context2d/main.cpp43
-rw-r--r--examples/script/context2d/qcontext2dcanvas.cpp35
-rw-r--r--examples/script/context2d/qcontext2dcanvas.h30
-rw-r--r--examples/script/context2d/window.cpp59
-rw-r--r--examples/script/context2d/window.h30
-rw-r--r--examples/script/customclass/bytearrayclass.cpp47
-rw-r--r--examples/script/customclass/bytearrayclass.h30
-rw-r--r--examples/script/customclass/bytearrayprototype.cpp30
-rw-r--r--examples/script/customclass/bytearrayprototype.h30
-rw-r--r--examples/script/customclass/customclass.pro2
-rw-r--r--examples/script/customclass/main.cpp30
-rw-r--r--examples/script/defaultprototypes/defaultprototypes.pro2
-rw-r--r--examples/script/defaultprototypes/main.cpp30
-rw-r--r--examples/script/defaultprototypes/prototypes.cpp30
-rw-r--r--examples/script/defaultprototypes/prototypes.h30
-rw-r--r--examples/script/helloscript/helloscript.js (renamed from examples/script/helloscript/helloscript.qs)0
-rw-r--r--examples/script/helloscript/helloscript.pro2
-rw-r--r--examples/script/helloscript/helloscript.qrc2
-rw-r--r--examples/script/helloscript/main.cpp32
-rw-r--r--examples/script/marshal/main.cpp30
-rw-r--r--examples/script/marshal/marshal.pro2
-rw-r--r--examples/script/qscript/main.cpp30
-rw-r--r--examples/script/qscript/qscript.pro2
-rw-r--r--examples/script/qsdbg/example.js (renamed from examples/script/qsdbg/example.qs)0
-rw-r--r--examples/script/qsdbg/main.cpp35
-rw-r--r--examples/script/qsdbg/qsdbg.pro2
-rw-r--r--examples/script/qsdbg/scriptbreakpointmanager.cpp30
-rw-r--r--examples/script/qsdbg/scriptbreakpointmanager.h30
-rw-r--r--examples/script/qsdbg/scriptdebugger.cpp30
-rw-r--r--examples/script/qsdbg/scriptdebugger.h30
-rw-r--r--examples/script/qstetrix/main.cpp34
-rw-r--r--examples/script/qstetrix/tetrixboard.cpp30
-rw-r--r--examples/script/qstetrix/tetrixboard.h30
-rw-r--r--examples/script/script.pro4
-rw-r--r--examples/sql/cachedtable/cachedtable.pro2
-rw-r--r--examples/sql/cachedtable/main.cpp30
-rw-r--r--examples/sql/cachedtable/tableeditor.cpp30
-rw-r--r--examples/sql/cachedtable/tableeditor.h30
-rw-r--r--examples/sql/connection.h30
-rw-r--r--examples/sql/drilldown/drilldown.pro7
-rw-r--r--examples/sql/drilldown/imageitem.cpp30
-rw-r--r--examples/sql/drilldown/imageitem.h30
-rw-r--r--examples/sql/drilldown/informationwindow.cpp54
-rw-r--r--examples/sql/drilldown/informationwindow.h30
-rw-r--r--examples/sql/drilldown/main.cpp37
-rw-r--r--examples/sql/drilldown/view.cpp49
-rw-r--r--examples/sql/drilldown/view.h30
-rw-r--r--examples/sql/masterdetail/database.h30
-rw-r--r--examples/sql/masterdetail/dialog.cpp30
-rw-r--r--examples/sql/masterdetail/dialog.h30
-rw-r--r--examples/sql/masterdetail/main.cpp30
-rw-r--r--examples/sql/masterdetail/mainwindow.cpp38
-rw-r--r--examples/sql/masterdetail/mainwindow.h30
-rw-r--r--examples/sql/masterdetail/masterdetail.pro2
-rw-r--r--examples/sql/querymodel/customsqlmodel.cpp30
-rw-r--r--examples/sql/querymodel/customsqlmodel.h30
-rw-r--r--examples/sql/querymodel/editablesqlmodel.cpp30
-rw-r--r--examples/sql/querymodel/editablesqlmodel.h30
-rw-r--r--examples/sql/querymodel/main.cpp30
-rw-r--r--examples/sql/querymodel/querymodel.pro2
-rw-r--r--examples/sql/relationaltablemodel/relationaltablemodel.cpp30
-rw-r--r--examples/sql/relationaltablemodel/relationaltablemodel.pro2
-rw-r--r--examples/sql/sql.pro16
-rw-r--r--examples/sql/sqlwidgetmapper/main.cpp30
-rw-r--r--examples/sql/sqlwidgetmapper/window.cpp30
-rw-r--r--examples/sql/sqlwidgetmapper/window.h30
-rw-r--r--examples/sql/tablemodel/tablemodel.cpp30
-rw-r--r--examples/sql/tablemodel/tablemodel.pro2
-rw-r--r--examples/statemachine/eventtransitions/main.cpp30
-rw-r--r--examples/statemachine/factorial/main.cpp36
-rw-r--r--examples/statemachine/pingpong/main.cpp34
-rw-r--r--examples/statemachine/rogue/main.cpp30
-rw-r--r--examples/statemachine/rogue/movementtransition.h38
-rw-r--r--examples/statemachine/rogue/window.cpp30
-rw-r--r--examples/statemachine/rogue/window.h30
-rw-r--r--examples/statemachine/trafficlight/main.cpp30
-rw-r--r--examples/statemachine/twowaybutton/main.cpp30
-rw-r--r--examples/symbianpkgrules.pri15
-rw-r--r--examples/threads/mandelbrot/main.cpp30
-rw-r--r--examples/threads/mandelbrot/mandelbrot.pro4
-rw-r--r--examples/threads/mandelbrot/mandelbrotwidget.cpp34
-rw-r--r--examples/threads/mandelbrot/mandelbrotwidget.h30
-rw-r--r--examples/threads/mandelbrot/renderthread.cpp30
-rw-r--r--examples/threads/mandelbrot/renderthread.h30
-rw-r--r--examples/threads/queuedcustomtype/block.cpp30
-rw-r--r--examples/threads/queuedcustomtype/block.h30
-rw-r--r--examples/threads/queuedcustomtype/main.cpp30
-rw-r--r--examples/threads/queuedcustomtype/renderthread.cpp30
-rw-r--r--examples/threads/queuedcustomtype/renderthread.h30
-rw-r--r--examples/threads/queuedcustomtype/window.cpp30
-rw-r--r--examples/threads/queuedcustomtype/window.h30
-rw-r--r--examples/threads/semaphores/semaphores.cpp30
-rw-r--r--examples/threads/semaphores/semaphores.pro2
-rw-r--r--examples/threads/threads.pro2
-rw-r--r--examples/threads/waitconditions/waitconditions.cpp30
-rw-r--r--examples/threads/waitconditions/waitconditions.pro6
-rw-r--r--examples/tools/codecs/codecs.pro2
-rw-r--r--examples/tools/codecs/main.cpp30
-rw-r--r--examples/tools/codecs/mainwindow.cpp30
-rw-r--r--examples/tools/codecs/mainwindow.h30
-rw-r--r--examples/tools/codecs/previewform.cpp30
-rw-r--r--examples/tools/codecs/previewform.h30
-rw-r--r--examples/tools/completer/completer.pro2
-rw-r--r--examples/tools/completer/dirmodel.cpp30
-rw-r--r--examples/tools/completer/dirmodel.h30
-rw-r--r--examples/tools/completer/main.cpp30
-rw-r--r--examples/tools/completer/mainwindow.cpp30
-rw-r--r--examples/tools/completer/mainwindow.h30
-rw-r--r--examples/tools/contiguouscache/main.cpp30
-rw-r--r--examples/tools/contiguouscache/randomlistmodel.cpp30
-rw-r--r--examples/tools/contiguouscache/randomlistmodel.h30
-rw-r--r--examples/tools/customcompleter/customcompleter.pro2
-rw-r--r--examples/tools/customcompleter/main.cpp30
-rw-r--r--examples/tools/customcompleter/mainwindow.cpp30
-rw-r--r--examples/tools/customcompleter/mainwindow.h30
-rw-r--r--examples/tools/customcompleter/textedit.cpp34
-rw-r--r--examples/tools/customcompleter/textedit.h30
-rw-r--r--examples/tools/customtype/main.cpp30
-rw-r--r--examples/tools/customtype/message.cpp30
-rw-r--r--examples/tools/customtype/message.h30
-rw-r--r--examples/tools/customtypesending/main.cpp30
-rw-r--r--examples/tools/customtypesending/message.cpp30
-rw-r--r--examples/tools/customtypesending/message.h30
-rw-r--r--examples/tools/customtypesending/window.cpp30
-rw-r--r--examples/tools/customtypesending/window.h30
-rw-r--r--examples/tools/echoplugin/echoplugin.pro2
-rw-r--r--examples/tools/echoplugin/echowindow/echointerface.h30
-rw-r--r--examples/tools/echoplugin/echowindow/echowindow.cpp30
-rw-r--r--examples/tools/echoplugin/echowindow/echowindow.h30
-rw-r--r--examples/tools/echoplugin/echowindow/echowindow.pro2
-rw-r--r--examples/tools/echoplugin/echowindow/main.cpp30
-rw-r--r--examples/tools/echoplugin/plugin/echoplugin.cpp30
-rw-r--r--examples/tools/echoplugin/plugin/echoplugin.h30
-rw-r--r--examples/tools/echoplugin/plugin/plugin.pro4
-rw-r--r--examples/tools/i18n/i18n.pro2
-rw-r--r--examples/tools/i18n/languagechooser.cpp30
-rw-r--r--examples/tools/i18n/languagechooser.h30
-rw-r--r--examples/tools/i18n/main.cpp30
-rw-r--r--examples/tools/i18n/mainwindow.cpp30
-rw-r--r--examples/tools/i18n/mainwindow.h30
-rw-r--r--examples/tools/inputpanel/inputpanel.pro17
-rw-r--r--examples/tools/inputpanel/main.cpp62
-rw-r--r--examples/tools/inputpanel/mainform.ui76
-rw-r--r--examples/tools/inputpanel/myinputpanel.cpp134
-rw-r--r--examples/tools/inputpanel/myinputpanel.h77
-rw-r--r--examples/tools/inputpanel/myinputpanelcontext.cpp132
-rw-r--r--examples/tools/inputpanel/myinputpanelcontext.h82
-rw-r--r--examples/tools/inputpanel/myinputpanelform.ui398
-rw-r--r--examples/tools/plugandpaint/interfaces.h30
-rw-r--r--examples/tools/plugandpaint/main.cpp30
-rw-r--r--examples/tools/plugandpaint/mainwindow.cpp30
-rw-r--r--examples/tools/plugandpaint/mainwindow.h30
-rw-r--r--examples/tools/plugandpaint/paintarea.cpp30
-rw-r--r--examples/tools/plugandpaint/paintarea.h30
-rw-r--r--examples/tools/plugandpaint/plugandpaint.pro8
-rw-r--r--examples/tools/plugandpaint/plugindialog.cpp30
-rw-r--r--examples/tools/plugandpaint/plugindialog.h30
-rw-r--r--examples/tools/plugandpaintplugins/basictools/basictools.pro2
-rw-r--r--examples/tools/plugandpaintplugins/basictools/basictoolsplugin.cpp30
-rw-r--r--examples/tools/plugandpaintplugins/basictools/basictoolsplugin.h30
-rw-r--r--examples/tools/plugandpaintplugins/extrafilters/extrafilters.pro4
-rw-r--r--examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.cpp30
-rw-r--r--examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.h30
-rw-r--r--examples/tools/plugandpaintplugins/plugandpaintplugins.pro2
-rw-r--r--examples/tools/regexp/main.cpp30
-rw-r--r--examples/tools/regexp/regexp.pro2
-rw-r--r--examples/tools/regexp/regexpdialog.cpp38
-rw-r--r--examples/tools/regexp/regexpdialog.h30
-rw-r--r--examples/tools/settingseditor/locationdialog.cpp30
-rw-r--r--examples/tools/settingseditor/locationdialog.h30
-rw-r--r--examples/tools/settingseditor/main.cpp30
-rw-r--r--examples/tools/settingseditor/mainwindow.cpp30
-rw-r--r--examples/tools/settingseditor/mainwindow.h30
-rw-r--r--examples/tools/settingseditor/settingseditor.pro2
-rw-r--r--examples/tools/settingseditor/settingstree.cpp38
-rw-r--r--examples/tools/settingseditor/settingstree.h30
-rw-r--r--examples/tools/settingseditor/variantdelegate.cpp30
-rw-r--r--examples/tools/settingseditor/variantdelegate.h30
-rw-r--r--examples/tools/styleplugin/plugin/plugin.pro4
-rw-r--r--examples/tools/styleplugin/plugin/simplestyle.cpp30
-rw-r--r--examples/tools/styleplugin/plugin/simplestyle.h30
-rw-r--r--examples/tools/styleplugin/plugin/simplestyleplugin.cpp30
-rw-r--r--examples/tools/styleplugin/plugin/simplestyleplugin.h30
-rw-r--r--examples/tools/styleplugin/styleplugin.pro2
-rw-r--r--examples/tools/styleplugin/stylewindow/main.cpp30
-rw-r--r--examples/tools/styleplugin/stylewindow/stylewindow.cpp30
-rw-r--r--examples/tools/styleplugin/stylewindow/stylewindow.h30
-rw-r--r--examples/tools/styleplugin/stylewindow/stylewindow.pro2
-rw-r--r--examples/tools/tools.pro3
-rw-r--r--examples/tools/treemodelcompleter/main.cpp30
-rw-r--r--examples/tools/treemodelcompleter/mainwindow.cpp42
-rw-r--r--examples/tools/treemodelcompleter/mainwindow.h30
-rw-r--r--examples/tools/treemodelcompleter/treemodelcompleter.cpp30
-rw-r--r--examples/tools/treemodelcompleter/treemodelcompleter.h30
-rw-r--r--examples/tools/treemodelcompleter/treemodelcompleter.pro2
-rw-r--r--examples/tools/undoframework/commands.cpp30
-rw-r--r--examples/tools/undoframework/commands.h30
-rw-r--r--examples/tools/undoframework/diagramitem.cpp30
-rw-r--r--examples/tools/undoframework/diagramitem.h30
-rw-r--r--examples/tools/undoframework/diagramscene.cpp30
-rw-r--r--examples/tools/undoframework/diagramscene.h30
-rw-r--r--examples/tools/undoframework/main.cpp30
-rw-r--r--examples/tools/undoframework/mainwindow.cpp34
-rw-r--r--examples/tools/undoframework/mainwindow.h30
-rw-r--r--examples/tools/undoframework/undoframework.pro2
-rw-r--r--examples/tutorials/addressbook-fr/part1/addressbook.cpp30
-rw-r--r--examples/tutorials/addressbook-fr/part1/addressbook.h30
-rw-r--r--examples/tutorials/addressbook-fr/part1/main.cpp30
-rw-r--r--examples/tutorials/addressbook-fr/part2/addressbook.cpp30
-rw-r--r--examples/tutorials/addressbook-fr/part2/addressbook.h30
-rw-r--r--examples/tutorials/addressbook-fr/part2/main.cpp30
-rw-r--r--examples/tutorials/addressbook-fr/part3/addressbook.cpp30
-rw-r--r--examples/tutorials/addressbook-fr/part3/addressbook.h30
-rw-r--r--examples/tutorials/addressbook-fr/part3/main.cpp30
-rw-r--r--examples/tutorials/addressbook-fr/part4/addressbook.cpp30
-rw-r--r--examples/tutorials/addressbook-fr/part4/addressbook.h30
-rw-r--r--examples/tutorials/addressbook-fr/part4/main.cpp30
-rw-r--r--examples/tutorials/addressbook-fr/part5/addressbook.cpp30
-rw-r--r--examples/tutorials/addressbook-fr/part5/addressbook.h30
-rw-r--r--examples/tutorials/addressbook-fr/part5/finddialog.cpp30
-rw-r--r--examples/tutorials/addressbook-fr/part5/finddialog.h30
-rw-r--r--examples/tutorials/addressbook-fr/part5/main.cpp30
-rw-r--r--examples/tutorials/addressbook-fr/part6/addressbook.cpp30
-rw-r--r--examples/tutorials/addressbook-fr/part6/addressbook.h30
-rw-r--r--examples/tutorials/addressbook-fr/part6/finddialog.cpp30
-rw-r--r--examples/tutorials/addressbook-fr/part6/finddialog.h30
-rw-r--r--examples/tutorials/addressbook-fr/part6/main.cpp30
-rw-r--r--examples/tutorials/addressbook-fr/part7/addressbook.cpp30
-rw-r--r--examples/tutorials/addressbook-fr/part7/addressbook.h30
-rw-r--r--examples/tutorials/addressbook-fr/part7/finddialog.cpp30
-rw-r--r--examples/tutorials/addressbook-fr/part7/finddialog.h30
-rw-r--r--examples/tutorials/addressbook-fr/part7/main.cpp30
-rw-r--r--examples/tutorials/addressbook/addressbook.pro2
-rw-r--r--examples/tutorials/addressbook/part1/addressbook.cpp30
-rw-r--r--examples/tutorials/addressbook/part1/addressbook.h30
-rw-r--r--examples/tutorials/addressbook/part1/main.cpp30
-rw-r--r--examples/tutorials/addressbook/part1/part1.pro2
-rw-r--r--examples/tutorials/addressbook/part2/addressbook.cpp30
-rw-r--r--examples/tutorials/addressbook/part2/addressbook.h30
-rw-r--r--examples/tutorials/addressbook/part2/main.cpp30
-rw-r--r--examples/tutorials/addressbook/part2/part2.pro2
-rw-r--r--examples/tutorials/addressbook/part3/addressbook.cpp30
-rw-r--r--examples/tutorials/addressbook/part3/addressbook.h30
-rw-r--r--examples/tutorials/addressbook/part3/main.cpp30
-rw-r--r--examples/tutorials/addressbook/part3/part3.pro2
-rw-r--r--examples/tutorials/addressbook/part4/addressbook.cpp30
-rw-r--r--examples/tutorials/addressbook/part4/addressbook.h30
-rw-r--r--examples/tutorials/addressbook/part4/main.cpp30
-rw-r--r--examples/tutorials/addressbook/part4/part4.pro2
-rw-r--r--examples/tutorials/addressbook/part5/addressbook.cpp30
-rw-r--r--examples/tutorials/addressbook/part5/addressbook.h30
-rw-r--r--examples/tutorials/addressbook/part5/finddialog.cpp30
-rw-r--r--examples/tutorials/addressbook/part5/finddialog.h30
-rw-r--r--examples/tutorials/addressbook/part5/main.cpp30
-rw-r--r--examples/tutorials/addressbook/part5/part5.pro2
-rw-r--r--examples/tutorials/addressbook/part6/addressbook.cpp30
-rw-r--r--examples/tutorials/addressbook/part6/addressbook.h30
-rw-r--r--examples/tutorials/addressbook/part6/finddialog.cpp30
-rw-r--r--examples/tutorials/addressbook/part6/finddialog.h30
-rw-r--r--examples/tutorials/addressbook/part6/main.cpp30
-rw-r--r--examples/tutorials/addressbook/part6/part6.pro2
-rw-r--r--examples/tutorials/addressbook/part7/addressbook.cpp30
-rw-r--r--examples/tutorials/addressbook/part7/addressbook.h30
-rw-r--r--examples/tutorials/addressbook/part7/finddialog.cpp30
-rw-r--r--examples/tutorials/addressbook/part7/finddialog.h30
-rw-r--r--examples/tutorials/addressbook/part7/main.cpp30
-rw-r--r--examples/tutorials/addressbook/part7/part7.pro2
-rw-r--r--examples/tutorials/tutorials.pro2
-rw-r--r--examples/tutorials/widgets/childwidget/main.cpp30
-rw-r--r--examples/tutorials/widgets/nestedlayouts/main.cpp30
-rw-r--r--examples/tutorials/widgets/toplevel/main.cpp30
-rw-r--r--examples/tutorials/widgets/windowlayout/main.cpp30
-rw-r--r--examples/uitools/multipleinheritance/calculatorform.cpp30
-rw-r--r--examples/uitools/multipleinheritance/calculatorform.h30
-rw-r--r--examples/uitools/multipleinheritance/main.cpp30
-rw-r--r--examples/uitools/multipleinheritance/multipleinheritance.pro5
-rw-r--r--examples/uitools/textfinder/main.cpp30
-rw-r--r--examples/uitools/textfinder/textfinder.cpp30
-rw-r--r--examples/uitools/textfinder/textfinder.h30
-rw-r--r--examples/uitools/textfinder/textfinder.pro2
-rw-r--r--examples/uitools/uitools.pro4
-rw-r--r--examples/webkit/domtraversal/domtraversal.pro11
-rw-r--r--examples/webkit/domtraversal/main.cpp52
-rw-r--r--examples/webkit/domtraversal/window.cpp90
-rw-r--r--examples/webkit/domtraversal/window.h73
-rw-r--r--examples/webkit/domtraversal/window.ui89
-rw-r--r--examples/webkit/fancybrowser/fancybrowser.pro4
-rw-r--r--examples/webkit/fancybrowser/main.cpp37
-rw-r--r--examples/webkit/fancybrowser/mainwindow.cpp75
-rw-r--r--examples/webkit/fancybrowser/mainwindow.h38
-rw-r--r--examples/webkit/formextractor/formextractor.cpp44
-rw-r--r--examples/webkit/formextractor/formextractor.h30
-rw-r--r--examples/webkit/formextractor/formextractor.pro9
-rw-r--r--examples/webkit/formextractor/main.cpp30
-rw-r--r--examples/webkit/formextractor/mainwindow.cpp30
-rw-r--r--examples/webkit/formextractor/mainwindow.h30
-rw-r--r--examples/webkit/framecapture/framecapture.cpp70
-rw-r--r--examples/webkit/framecapture/framecapture.h32
-rw-r--r--examples/webkit/framecapture/main.cpp32
-rw-r--r--examples/webkit/googlechat/googlechat.cpp36
-rw-r--r--examples/webkit/googlechat/googlechat.h30
-rw-r--r--examples/webkit/googlechat/googlechat.pro4
-rw-r--r--examples/webkit/googlechat/main.cpp34
-rw-r--r--examples/webkit/previewer/main.cpp30
-rw-r--r--examples/webkit/previewer/mainwindow.cpp30
-rw-r--r--examples/webkit/previewer/mainwindow.h30
-rw-r--r--examples/webkit/previewer/previewer.cpp30
-rw-r--r--examples/webkit/previewer/previewer.h30
-rw-r--r--examples/webkit/previewer/previewer.pro7
-rw-r--r--examples/webkit/simpleselector/main.cpp54
-rw-r--r--examples/webkit/simpleselector/simpleselector.pro11
-rw-r--r--examples/webkit/simpleselector/window.cpp81
-rw-r--r--examples/webkit/simpleselector/window.h64
-rw-r--r--examples/webkit/simpleselector/window.ui72
-rw-r--r--examples/webkit/webkit.pro9
-rw-r--r--examples/widgets/analogclock/analogclock.cpp30
-rw-r--r--examples/widgets/analogclock/analogclock.h30
-rw-r--r--examples/widgets/analogclock/analogclock.pro5
-rw-r--r--examples/widgets/analogclock/main.cpp30
-rw-r--r--examples/widgets/calculator/button.cpp30
-rw-r--r--examples/widgets/calculator/button.h30
-rw-r--r--examples/widgets/calculator/calculator.cpp30
-rw-r--r--examples/widgets/calculator/calculator.h30
-rw-r--r--examples/widgets/calculator/calculator.pro5
-rw-r--r--examples/widgets/calculator/main.cpp30
-rw-r--r--examples/widgets/calendarwidget/calendarwidget.pro5
-rw-r--r--examples/widgets/calendarwidget/main.cpp30
-rw-r--r--examples/widgets/calendarwidget/window.cpp46
-rw-r--r--examples/widgets/calendarwidget/window.h30
-rw-r--r--examples/widgets/charactermap/charactermap.pro2
-rw-r--r--examples/widgets/charactermap/characterwidget.cpp30
-rw-r--r--examples/widgets/charactermap/characterwidget.h30
-rw-r--r--examples/widgets/charactermap/main.cpp30
-rw-r--r--examples/widgets/charactermap/mainwindow.cpp54
-rw-r--r--examples/widgets/charactermap/mainwindow.h30
-rw-r--r--examples/widgets/codeeditor/codeeditor.cpp32
-rw-r--r--examples/widgets/codeeditor/codeeditor.h30
-rw-r--r--examples/widgets/codeeditor/main.cpp30
-rw-r--r--examples/widgets/digitalclock/digitalclock.cpp30
-rw-r--r--examples/widgets/digitalclock/digitalclock.h30
-rw-r--r--examples/widgets/digitalclock/digitalclock.pro2
-rw-r--r--examples/widgets/digitalclock/main.cpp30
-rw-r--r--examples/widgets/groupbox/groupbox.pro2
-rw-r--r--examples/widgets/groupbox/main.cpp30
-rw-r--r--examples/widgets/groupbox/window.cpp30
-rw-r--r--examples/widgets/groupbox/window.h30
-rw-r--r--examples/widgets/icons/iconpreviewarea.cpp30
-rw-r--r--examples/widgets/icons/iconpreviewarea.h30
-rw-r--r--examples/widgets/icons/icons.pro2
-rw-r--r--examples/widgets/icons/iconsizespinbox.cpp30
-rw-r--r--examples/widgets/icons/iconsizespinbox.h30
-rw-r--r--examples/widgets/icons/imagedelegate.cpp30
-rw-r--r--examples/widgets/icons/imagedelegate.h30
-rw-r--r--examples/widgets/icons/main.cpp30
-rw-r--r--examples/widgets/icons/mainwindow.cpp32
-rw-r--r--examples/widgets/icons/mainwindow.h30
-rw-r--r--examples/widgets/imageviewer/imageviewer.cpp30
-rw-r--r--examples/widgets/imageviewer/imageviewer.h30
-rw-r--r--examples/widgets/imageviewer/imageviewer.pro2
-rw-r--r--examples/widgets/imageviewer/main.cpp30
-rw-r--r--examples/widgets/lineedits/lineedits.pro5
-rw-r--r--examples/widgets/lineedits/main.cpp30
-rw-r--r--examples/widgets/lineedits/window.cpp30
-rw-r--r--examples/widgets/lineedits/window.h30
-rw-r--r--examples/widgets/movie/main.cpp30
-rw-r--r--examples/widgets/movie/movie.pro2
-rw-r--r--examples/widgets/movie/movieplayer.cpp30
-rw-r--r--examples/widgets/movie/movieplayer.h30
-rw-r--r--examples/widgets/scribble/main.cpp30
-rw-r--r--examples/widgets/scribble/mainwindow.cpp30
-rw-r--r--examples/widgets/scribble/mainwindow.h30
-rw-r--r--examples/widgets/scribble/scribble.pro2
-rw-r--r--examples/widgets/scribble/scribblearea.cpp35
-rw-r--r--examples/widgets/scribble/scribblearea.h30
-rw-r--r--examples/widgets/shapedclock/main.cpp30
-rw-r--r--examples/widgets/shapedclock/shapedclock.cpp30
-rw-r--r--examples/widgets/shapedclock/shapedclock.h30
-rw-r--r--examples/widgets/shapedclock/shapedclock.pro5
-rw-r--r--examples/widgets/sliders/main.cpp30
-rw-r--r--examples/widgets/sliders/sliders.pro2
-rw-r--r--examples/widgets/sliders/slidersgroup.cpp30
-rw-r--r--examples/widgets/sliders/slidersgroup.h30
-rw-r--r--examples/widgets/sliders/window.cpp30
-rw-r--r--examples/widgets/sliders/window.h30
-rw-r--r--examples/widgets/softkeys/main.cpp51
-rw-r--r--examples/widgets/softkeys/softkeys.cpp151
-rw-r--r--examples/widgets/softkeys/softkeys.h86
-rw-r--r--examples/widgets/softkeys/softkeys.pro15
-rw-r--r--examples/widgets/spinboxes/main.cpp30
-rw-r--r--examples/widgets/spinboxes/spinboxes.pro2
-rw-r--r--examples/widgets/spinboxes/window.cpp34
-rw-r--r--examples/widgets/spinboxes/window.h30
-rw-r--r--examples/widgets/styles/main.cpp30
-rw-r--r--examples/widgets/styles/norwegianwoodstyle.cpp30
-rw-r--r--examples/widgets/styles/norwegianwoodstyle.h30
-rw-r--r--examples/widgets/styles/styles.pro2
-rw-r--r--examples/widgets/styles/widgetgallery.cpp34
-rw-r--r--examples/widgets/styles/widgetgallery.h30
-rw-r--r--examples/widgets/stylesheet/main.cpp30
-rw-r--r--examples/widgets/stylesheet/mainwindow.cpp30
-rw-r--r--examples/widgets/stylesheet/mainwindow.h30
-rw-r--r--examples/widgets/stylesheet/stylesheet.pro2
-rw-r--r--examples/widgets/stylesheet/stylesheeteditor.cpp30
-rw-r--r--examples/widgets/stylesheet/stylesheeteditor.h30
-rw-r--r--examples/widgets/tablet/main.cpp30
-rw-r--r--examples/widgets/tablet/mainwindow.cpp42
-rw-r--r--examples/widgets/tablet/mainwindow.h30
-rw-r--r--examples/widgets/tablet/tablet.pro2
-rw-r--r--examples/widgets/tablet/tabletapplication.cpp30
-rw-r--r--examples/widgets/tablet/tabletapplication.h30
-rw-r--r--examples/widgets/tablet/tabletcanvas.cpp64
-rw-r--r--examples/widgets/tablet/tabletcanvas.h38
-rw-r--r--examples/widgets/tetrix/main.cpp30
-rw-r--r--examples/widgets/tetrix/tetrix.pro5
-rw-r--r--examples/widgets/tetrix/tetrixboard.cpp30
-rw-r--r--examples/widgets/tetrix/tetrixboard.h30
-rw-r--r--examples/widgets/tetrix/tetrixpiece.cpp30
-rw-r--r--examples/widgets/tetrix/tetrixpiece.h30
-rw-r--r--examples/widgets/tetrix/tetrixwindow.cpp30
-rw-r--r--examples/widgets/tetrix/tetrixwindow.h30
-rw-r--r--examples/widgets/tooltips/main.cpp30
-rw-r--r--examples/widgets/tooltips/shapeitem.cpp30
-rw-r--r--examples/widgets/tooltips/shapeitem.h30
-rw-r--r--examples/widgets/tooltips/sortingbox.cpp30
-rw-r--r--examples/widgets/tooltips/sortingbox.h30
-rw-r--r--examples/widgets/tooltips/tooltips.pro2
-rw-r--r--examples/widgets/validators/ledwidget.cpp30
-rw-r--r--examples/widgets/validators/ledwidget.h30
-rw-r--r--examples/widgets/validators/localeselector.cpp30
-rw-r--r--examples/widgets/validators/localeselector.h30
-rw-r--r--examples/widgets/validators/main.cpp30
-rw-r--r--examples/widgets/validators/validators.pro2
-rw-r--r--examples/widgets/widgets.pro12
-rw-r--r--examples/widgets/wiggly/dialog.cpp41
-rw-r--r--examples/widgets/wiggly/dialog.h32
-rw-r--r--examples/widgets/wiggly/main.cpp44
-rw-r--r--examples/widgets/wiggly/wiggly.pro5
-rw-r--r--examples/widgets/wiggly/wigglywidget.cpp30
-rw-r--r--examples/widgets/wiggly/wigglywidget.h30
-rw-r--r--examples/widgets/windowflags/controllerwindow.cpp30
-rw-r--r--examples/widgets/windowflags/controllerwindow.h30
-rw-r--r--examples/widgets/windowflags/main.cpp30
-rw-r--r--examples/widgets/windowflags/previewwindow.cpp30
-rw-r--r--examples/widgets/windowflags/previewwindow.h30
-rw-r--r--examples/widgets/windowflags/windowflags.pro2
-rw-r--r--examples/xml/dombookmarks/dombookmarks.pro2
-rw-r--r--examples/xml/dombookmarks/main.cpp30
-rw-r--r--examples/xml/dombookmarks/mainwindow.cpp30
-rw-r--r--examples/xml/dombookmarks/mainwindow.h30
-rw-r--r--examples/xml/dombookmarks/xbeltree.cpp38
-rw-r--r--examples/xml/dombookmarks/xbeltree.h30
-rw-r--r--examples/xml/htmlinfo/apache_org.html281
-rw-r--r--examples/xml/htmlinfo/htmlinfo.pro19
-rw-r--r--examples/xml/htmlinfo/main.cpp119
-rw-r--r--examples/xml/htmlinfo/nokia_com.html215
-rw-r--r--examples/xml/htmlinfo/simpleexample.html11
-rw-r--r--examples/xml/htmlinfo/trolltech_com.html955
-rw-r--r--examples/xml/htmlinfo/w3c_org.html507
-rw-r--r--examples/xml/htmlinfo/youtube_com.html1585
-rw-r--r--examples/xml/rsslisting/main.cpp31
-rw-r--r--examples/xml/rsslisting/rsslisting.cpp40
-rw-r--r--examples/xml/rsslisting/rsslisting.h30
-rw-r--r--examples/xml/rsslisting/rsslisting.pro2
-rw-r--r--examples/xml/saxbookmarks/main.cpp34
-rw-r--r--examples/xml/saxbookmarks/mainwindow.cpp39
-rw-r--r--examples/xml/saxbookmarks/mainwindow.h30
-rw-r--r--examples/xml/saxbookmarks/saxbookmarks.pro8
-rw-r--r--examples/xml/saxbookmarks/xbelgenerator.cpp30
-rw-r--r--examples/xml/saxbookmarks/xbelgenerator.h30
-rw-r--r--examples/xml/saxbookmarks/xbelhandler.cpp30
-rw-r--r--examples/xml/saxbookmarks/xbelhandler.h30
-rw-r--r--examples/xml/streambookmarks/main.cpp30
-rw-r--r--examples/xml/streambookmarks/mainwindow.cpp34
-rw-r--r--examples/xml/streambookmarks/mainwindow.h30
-rw-r--r--examples/xml/streambookmarks/streambookmarks.pro2
-rw-r--r--examples/xml/streambookmarks/xbelreader.cpp159
-rw-r--r--examples/xml/streambookmarks/xbelreader.h36
-rw-r--r--examples/xml/streambookmarks/xbelwriter.cpp62
-rw-r--r--examples/xml/streambookmarks/xbelwriter.h33
-rw-r--r--examples/xml/xml.pro5
-rw-r--r--examples/xml/xmlstreamlint/main.cpp30
-rw-r--r--examples/xml/xmlstreamlint/xmlstreamlint.pro2
-rw-r--r--examples/xmlpatterns/filetree/filetree.cpp30
-rw-r--r--examples/xmlpatterns/filetree/filetree.h30
-rw-r--r--examples/xmlpatterns/filetree/filetree.pro6
-rw-r--r--examples/xmlpatterns/filetree/main.cpp30
-rw-r--r--examples/xmlpatterns/filetree/mainwindow.cpp30
-rw-r--r--examples/xmlpatterns/filetree/mainwindow.h30
-rw-r--r--examples/xmlpatterns/qobjectxmlmodel/main.cpp30
-rw-r--r--examples/xmlpatterns/qobjectxmlmodel/mainwindow.cpp30
-rw-r--r--examples/xmlpatterns/qobjectxmlmodel/mainwindow.h30
-rw-r--r--examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.cpp30
-rw-r--r--examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.h30
-rw-r--r--examples/xmlpatterns/qobjectxmlmodel/qobjectxmlmodel.pro5
-rw-r--r--examples/xmlpatterns/recipes/main.cpp30
-rw-r--r--examples/xmlpatterns/recipes/querymainwindow.cpp30
-rw-r--r--examples/xmlpatterns/recipes/querymainwindow.h30
-rw-r--r--examples/xmlpatterns/recipes/recipes.pro5
-rw-r--r--examples/xmlpatterns/schema/main.cpp30
-rw-r--r--examples/xmlpatterns/schema/mainwindow.cpp30
-rw-r--r--examples/xmlpatterns/schema/mainwindow.h30
-rw-r--r--examples/xmlpatterns/schema/schema.pro5
-rw-r--r--examples/xmlpatterns/shared/xmlsyntaxhighlighter.cpp30
-rw-r--r--examples/xmlpatterns/shared/xmlsyntaxhighlighter.h30
-rw-r--r--examples/xmlpatterns/trafficinfo/main.cpp30
-rw-r--r--examples/xmlpatterns/trafficinfo/mainwindow.cpp33
-rw-r--r--examples/xmlpatterns/trafficinfo/mainwindow.h30
-rw-r--r--examples/xmlpatterns/trafficinfo/stationdialog.cpp34
-rw-r--r--examples/xmlpatterns/trafficinfo/stationdialog.h30
-rw-r--r--examples/xmlpatterns/trafficinfo/stationquery.cpp30
-rw-r--r--examples/xmlpatterns/trafficinfo/stationquery.h30
-rw-r--r--examples/xmlpatterns/trafficinfo/timequery.cpp30
-rw-r--r--examples/xmlpatterns/trafficinfo/timequery.h30
-rw-r--r--examples/xmlpatterns/trafficinfo/trafficinfo.pro5
-rw-r--r--examples/xmlpatterns/xmlpatterns.pro2
-rw-r--r--examples/xmlpatterns/xquery/globalVariables/globalVariables.pro2
-rw-r--r--examples/xmlpatterns/xquery/globalVariables/globals.cpp30
-rw-r--r--examples/xmlpatterns/xquery/xquery.pro2
-rw-r--r--mkspecs/aix-g++-64/qplatformdefs.h32
-rw-r--r--mkspecs/aix-g++/qplatformdefs.h32
-rw-r--r--mkspecs/aix-xlc-64/qplatformdefs.h32
-rw-r--r--mkspecs/aix-xlc/qplatformdefs.h32
-rw-r--r--mkspecs/common/linux.conf9
-rw-r--r--mkspecs/common/mac-g++.conf2
-rw-r--r--mkspecs/common/symbian/qplatformdefs.h169
-rw-r--r--mkspecs/common/symbian/stl-off/new5
-rw-r--r--mkspecs/common/symbian/symbian.conf149
-rw-r--r--mkspecs/common/wince.conf90
-rw-r--r--mkspecs/common/wince/qmake.conf95
-rw-r--r--mkspecs/common/wince/qplatformdefs.h133
-rw-r--r--mkspecs/cygwin-g++/qplatformdefs.h31
-rw-r--r--mkspecs/darwin-g++/qplatformdefs.h31
-rw-r--r--mkspecs/features/assistant.prf9
-rw-r--r--mkspecs/features/debug_and_release.prf2
-rw-r--r--mkspecs/features/designer.prf3
-rw-r--r--mkspecs/features/egl.prf32
-rw-r--r--mkspecs/features/moc.prf4
-rw-r--r--mkspecs/features/qt.prf24
-rw-r--r--mkspecs/features/qt_functions.prf16
-rw-r--r--mkspecs/features/qttest_p4.prf7
-rw-r--r--mkspecs/features/static.prf10
-rw-r--r--mkspecs/features/symbian/application_icon.prf51
-rw-r--r--mkspecs/features/symbian/armcc_warnings.prf13
-rw-r--r--mkspecs/features/symbian/data_caging_paths.prf80
-rw-r--r--mkspecs/features/symbian/default_post.prf31
-rw-r--r--mkspecs/features/symbian/default_pre.prf2
-rw-r--r--mkspecs/features/symbian/epocallowdlldata.prf1
-rw-r--r--mkspecs/features/symbian/moc.prf16
-rw-r--r--mkspecs/features/symbian/platform_paths.prf480
-rw-r--r--mkspecs/features/symbian/qt.prf34
-rw-r--r--mkspecs/features/symbian/stl.prf25
-rw-r--r--mkspecs/features/symbian/stl_off.prf2
-rw-r--r--mkspecs/features/uic.prf6
-rw-r--r--mkspecs/features/uitools.prf4
-rw-r--r--mkspecs/features/unix/opengl.prf26
-rw-r--r--mkspecs/features/win32/opengl.prf12
-rw-r--r--mkspecs/features/win32/rtti_off.prf1
-rw-r--r--mkspecs/freebsd-g++/qplatformdefs.h31
-rw-r--r--mkspecs/freebsd-g++34/qplatformdefs.h30
-rw-r--r--mkspecs/freebsd-g++40/qplatformdefs.h30
-rw-r--r--mkspecs/freebsd-icc/qplatformdefs.h30
-rw-r--r--mkspecs/hpux-acc-64/qplatformdefs.h32
-rw-r--r--mkspecs/hpux-acc-o64/qplatformdefs.h32
-rw-r--r--mkspecs/hpux-acc/qplatformdefs.h32
-rw-r--r--mkspecs/hpux-g++-64/qplatformdefs.h32
-rw-r--r--mkspecs/hpux-g++/qplatformdefs.h32
-rw-r--r--mkspecs/hpuxi-acc-32/qplatformdefs.h32
-rw-r--r--mkspecs/hpuxi-acc-64/qplatformdefs.h32
-rw-r--r--mkspecs/hpuxi-g++-64/qplatformdefs.h32
-rw-r--r--mkspecs/hurd-g++/qplatformdefs.h31
-rw-r--r--mkspecs/irix-cc-64/qplatformdefs.h32
-rw-r--r--mkspecs/irix-cc/qplatformdefs.h32
-rw-r--r--mkspecs/irix-g++-64/qplatformdefs.h30
-rw-r--r--mkspecs/irix-g++/qplatformdefs.h32
-rw-r--r--mkspecs/linux-cxx/qplatformdefs.h32
-rw-r--r--mkspecs/linux-ecc-64/qplatformdefs.h32
-rw-r--r--mkspecs/linux-g++-32/qplatformdefs.h30
-rw-r--r--mkspecs/linux-g++-64/qplatformdefs.h30
-rw-r--r--mkspecs/linux-g++-gles2-experimental/qplatformdefs.h32
-rw-r--r--mkspecs/linux-g++-maemo/qmake.conf32
-rw-r--r--mkspecs/linux-g++-maemo/qplatformdefs.h42
-rw-r--r--mkspecs/linux-g++/qplatformdefs.h32
-rw-r--r--mkspecs/linux-icc-32/qplatformdefs.h30
-rw-r--r--mkspecs/linux-icc-64/qplatformdefs.h30
-rw-r--r--mkspecs/linux-icc/qplatformdefs.h30
-rw-r--r--mkspecs/linux-kcc/qplatformdefs.h32
-rw-r--r--mkspecs/linux-llvm/qplatformdefs.h32
-rw-r--r--mkspecs/linux-lsb-g++/qplatformdefs.h32
-rw-r--r--mkspecs/linux-pgcc/qplatformdefs.h32
-rw-r--r--mkspecs/lynxos-g++/qplatformdefs.h31
-rw-r--r--mkspecs/macx-g++/qplatformdefs.h31
-rw-r--r--mkspecs/macx-g++40/Info.plist.app20
-rw-r--r--mkspecs/macx-g++40/Info.plist.lib18
-rw-r--r--mkspecs/macx-g++40/qmake.conf20
-rw-r--r--mkspecs/macx-g++40/qplatformdefs.h133
-rw-r--r--mkspecs/macx-g++42/qplatformdefs.h31
-rw-r--r--mkspecs/macx-icc/qplatformdefs.h30
-rw-r--r--mkspecs/macx-llvm/qplatformdefs.h31
-rw-r--r--mkspecs/macx-pbuilder/qplatformdefs.h31
-rw-r--r--mkspecs/macx-xcode/qplatformdefs.h31
-rw-r--r--mkspecs/macx-xlc/qplatformdefs.h31
-rw-r--r--mkspecs/netbsd-g++/qplatformdefs.h31
-rw-r--r--mkspecs/openbsd-g++/qplatformdefs.h31
-rw-r--r--mkspecs/qws/freebsd-generic-g++/qplatformdefs.h30
-rw-r--r--mkspecs/qws/linux-arm-g++/qplatformdefs.h30
-rw-r--r--mkspecs/qws/linux-armv6-g++/qplatformdefs.h41
-rw-r--r--mkspecs/qws/linux-avr32-g++/qplatformdefs.h41
-rw-r--r--mkspecs/qws/linux-cellon-g++/qplatformdefs.h30
-rw-r--r--mkspecs/qws/linux-dm7000-g++/qplatformdefs.h30
-rw-r--r--mkspecs/qws/linux-dm800-g++/qplatformdefs.h30
-rw-r--r--mkspecs/qws/linux-generic-g++-32/qplatformdefs.h30
-rw-r--r--mkspecs/qws/linux-generic-g++/qplatformdefs.h30
-rw-r--r--mkspecs/qws/linux-ipaq-g++/qplatformdefs.h30
-rw-r--r--mkspecs/qws/linux-lsb-g++/qplatformdefs.h30
-rw-r--r--mkspecs/qws/linux-mips-g++/qplatformdefs.h30
-rw-r--r--mkspecs/qws/linux-powerpc-g++/qmake.conf20
-rw-r--r--mkspecs/qws/linux-powerpc-g++/qplatformdefs.h42
-rw-r--r--mkspecs/qws/linux-ppc-g++/qmake.conf9
-rw-r--r--mkspecs/qws/linux-ppc-g++/qplatformdefs.h42
-rw-r--r--mkspecs/qws/linux-sh-g++/qplatformdefs.h41
-rw-r--r--mkspecs/qws/linux-sh4al-g++/qplatformdefs.h41
-rw-r--r--mkspecs/qws/linux-sharp-g++/qplatformdefs.h30
-rw-r--r--mkspecs/qws/linux-x86-g++/qplatformdefs.h30
-rw-r--r--mkspecs/qws/linux-x86_64-g++/qplatformdefs.h30
-rw-r--r--mkspecs/qws/linux-zylonite-g++/qplatformdefs.h30
-rw-r--r--mkspecs/qws/macx-generic-g++/qplatformdefs.h30
-rw-r--r--mkspecs/qws/solaris-generic-g++/qplatformdefs.h30
-rw-r--r--mkspecs/sco-cc/qplatformdefs.h31
-rw-r--r--mkspecs/sco-g++/qplatformdefs.h31
-rw-r--r--mkspecs/solaris-cc-64/qplatformdefs.h32
-rw-r--r--mkspecs/solaris-cc/qplatformdefs.h32
-rw-r--r--mkspecs/solaris-g++-64/qplatformdefs.h32
-rw-r--r--mkspecs/solaris-g++/qplatformdefs.h32
-rw-r--r--mkspecs/symbian-abld/qmake.conf9
-rw-r--r--mkspecs/symbian-sbsv2/flm/qt/qmake_emulator_deployment.flm39
-rw-r--r--mkspecs/symbian-sbsv2/flm/qt/qmake_extra_pre_targetdep.flm35
-rw-r--r--mkspecs/symbian-sbsv2/flm/qt/qmake_post_link.flm34
-rw-r--r--mkspecs/symbian-sbsv2/flm/qt/qmake_store_build.flm49
-rw-r--r--mkspecs/symbian-sbsv2/flm/qt/qt.xml41
-rw-r--r--mkspecs/symbian-sbsv2/qmake.conf9
-rw-r--r--mkspecs/tru64-cxx/qplatformdefs.h31
-rw-r--r--mkspecs/tru64-g++/qplatformdefs.h31
-rw-r--r--mkspecs/unixware-cc/qplatformdefs.h31
-rw-r--r--mkspecs/unixware-g++/qplatformdefs.h31
-rw-r--r--mkspecs/unsupported/linux-scratchbox2-g++/qmake.conf34
-rw-r--r--mkspecs/unsupported/linux-scratchbox2-g++/qplatformdefs.h42
-rw-r--r--mkspecs/unsupported/qnx-g++/qplatformdefs.h34
-rw-r--r--mkspecs/unsupported/qws/qnx-641/qmake.conf99
-rw-r--r--mkspecs/unsupported/qws/qnx-641/qplatformdefs.h42
-rw-r--r--mkspecs/unsupported/qws/qnx-generic-g++/qplatformdefs.h30
-rw-r--r--mkspecs/unsupported/qws/qnx-i386-g++/qmake.conf4
-rw-r--r--mkspecs/unsupported/qws/qnx-i386-g++/qplatformdefs.h30
-rw-r--r--mkspecs/unsupported/qws/qnx-ppc-g++/qplatformdefs.h30
-rw-r--r--mkspecs/unsupported/vxworks-ppc-dcc/qplatformdefs.h30
-rw-r--r--mkspecs/unsupported/vxworks-ppc-g++/qplatformdefs.h30
-rw-r--r--mkspecs/unsupported/vxworks-simpentium-dcc/qplatformdefs.h30
-rw-r--r--mkspecs/unsupported/vxworks-simpentium-g++/qplatformdefs.h32
-rw-r--r--mkspecs/win32-borland/qplatformdefs.h30
-rw-r--r--mkspecs/win32-g++/qplatformdefs.h30
-rw-r--r--mkspecs/win32-icc/qplatformdefs.h30
-rw-r--r--mkspecs/win32-msvc.net/qplatformdefs.h34
-rw-r--r--mkspecs/win32-msvc/qplatformdefs.h30
-rw-r--r--mkspecs/win32-msvc2002/qplatformdefs.h30
-rw-r--r--mkspecs/win32-msvc2003/qplatformdefs.h30
-rw-r--r--mkspecs/win32-msvc2005/qplatformdefs.h30
-rw-r--r--mkspecs/win32-msvc2008/qplatformdefs.h30
-rw-r--r--mkspecs/wince50standard-armv4i-msvc2005/qmake.conf2
-rw-r--r--mkspecs/wince50standard-armv4i-msvc2005/qplatformdefs.h120
-rw-r--r--mkspecs/wince50standard-armv4i-msvc2008/qplatformdefs.h32
-rw-r--r--mkspecs/wince50standard-mipsii-msvc2005/qmake.conf2
-rw-r--r--mkspecs/wince50standard-mipsii-msvc2005/qplatformdefs.h120
-rw-r--r--mkspecs/wince50standard-mipsii-msvc2008/qplatformdefs.h32
-rw-r--r--mkspecs/wince50standard-mipsiv-msvc2005/qmake.conf2
-rw-r--r--mkspecs/wince50standard-mipsiv-msvc2005/qplatformdefs.h120
-rw-r--r--mkspecs/wince50standard-mipsiv-msvc2008/qplatformdefs.h32
-rw-r--r--mkspecs/wince50standard-sh4-msvc2005/qmake.conf2
-rw-r--r--mkspecs/wince50standard-sh4-msvc2005/qplatformdefs.h120
-rw-r--r--mkspecs/wince50standard-sh4-msvc2008/qplatformdefs.h32
-rw-r--r--mkspecs/wince50standard-x86-msvc2005/qmake.conf2
-rw-r--r--mkspecs/wince50standard-x86-msvc2005/qplatformdefs.h120
-rw-r--r--mkspecs/wince50standard-x86-msvc2008/qplatformdefs.h32
-rw-r--r--mkspecs/wince60standard-armv4i-msvc2005/qmake.conf79
-rw-r--r--mkspecs/wince60standard-armv4i-msvc2005/qplatformdefs.h120
-rw-r--r--mkspecs/wince60standard-x86-msvc2005/qmake.conf27
-rw-r--r--mkspecs/wince60standard-x86-msvc2005/qplatformdefs.h43
-rw-r--r--mkspecs/wincewm50pocket-msvc2005/qmake.conf2
-rw-r--r--mkspecs/wincewm50pocket-msvc2005/qplatformdefs.h120
-rw-r--r--mkspecs/wincewm50pocket-msvc2008/qplatformdefs.h32
-rw-r--r--mkspecs/wincewm50smart-msvc2005/qmake.conf2
-rw-r--r--mkspecs/wincewm50smart-msvc2005/qplatformdefs.h120
-rw-r--r--mkspecs/wincewm50smart-msvc2008/qplatformdefs.h32
-rw-r--r--mkspecs/wincewm60professional-msvc2005/qplatformdefs.h120
-rw-r--r--mkspecs/wincewm60professional-msvc2008/qplatformdefs.h32
-rw-r--r--mkspecs/wincewm60standard-msvc2005/qplatformdefs.h120
-rw-r--r--mkspecs/wincewm60standard-msvc2008/qplatformdefs.h32
-rw-r--r--mkspecs/wincewm65professional-msvc2005/qplatformdefs.h33
-rw-r--r--mkspecs/wincewm65professional-msvc2008/qplatformdefs.h32
-rw-r--r--projects.pro35
-rw-r--r--qmake/Makefile.unix183
-rw-r--r--qmake/Makefile.win32251
-rw-r--r--qmake/Makefile.win32-g++189
-rw-r--r--qmake/Makefile.win32-g++-sh187
-rw-r--r--qmake/cachekeys.h30
-rw-r--r--qmake/generators/mac/pbuilder_pbx.cpp32
-rw-r--r--qmake/generators/mac/pbuilder_pbx.h30
-rw-r--r--qmake/generators/makefile.cpp183
-rw-r--r--qmake/generators/makefile.h33
-rw-r--r--qmake/generators/makefiledeps.cpp30
-rw-r--r--qmake/generators/makefiledeps.h30
-rw-r--r--qmake/generators/metamakefile.cpp66
-rw-r--r--qmake/generators/metamakefile.h32
-rw-r--r--qmake/generators/projectgenerator.cpp30
-rw-r--r--qmake/generators/projectgenerator.h30
-rw-r--r--qmake/generators/symbian/epocroot.h51
-rw-r--r--qmake/generators/symbian/initprojectdeploy_symbian.cpp385
-rw-r--r--qmake/generators/symbian/initprojectdeploy_symbian.h75
-rw-r--r--qmake/generators/symbian/symmake.cpp1800
-rw-r--r--qmake/generators/symbian/symmake.h158
-rw-r--r--qmake/generators/symbian/symmake_abld.cpp467
-rw-r--r--qmake/generators/symbian/symmake_abld.h69
-rw-r--r--qmake/generators/symbian/symmake_sbsv2.cpp414
-rw-r--r--qmake/generators/symbian/symmake_sbsv2.h72
-rw-r--r--qmake/generators/unix/unixmake.cpp52
-rw-r--r--qmake/generators/unix/unixmake.h30
-rw-r--r--qmake/generators/unix/unixmake2.cpp30
-rw-r--r--qmake/generators/win32/borland_bmake.cpp30
-rw-r--r--qmake/generators/win32/borland_bmake.h30
-rw-r--r--qmake/generators/win32/mingw_make.cpp30
-rw-r--r--qmake/generators/win32/mingw_make.h30
-rw-r--r--qmake/generators/win32/msvc_dsp.cpp32
-rw-r--r--qmake/generators/win32/msvc_dsp.h30
-rw-r--r--qmake/generators/win32/msvc_nmake.cpp30
-rw-r--r--qmake/generators/win32/msvc_nmake.h30
-rw-r--r--qmake/generators/win32/msvc_objectmodel.cpp32
-rw-r--r--qmake/generators/win32/msvc_objectmodel.h30
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp46
-rw-r--r--qmake/generators/win32/msvc_vcproj.h30
-rw-r--r--qmake/generators/win32/winmakefile.cpp30
-rw-r--r--qmake/generators/win32/winmakefile.h30
-rw-r--r--qmake/generators/xmloutput.cpp30
-rw-r--r--qmake/generators/xmloutput.h30
-rw-r--r--qmake/main.cpp47
-rw-r--r--qmake/meta.cpp30
-rw-r--r--qmake/meta.h30
-rw-r--r--qmake/option.cpp68
-rw-r--r--qmake/option.h31
-rw-r--r--qmake/project.cpp296
-rw-r--r--qmake/project.h45
-rw-r--r--qmake/property.cpp30
-rw-r--r--qmake/property.h30
-rw-r--r--qmake/qmake.pri27
-rw-r--r--qmake/qmake.pro9
-rw-r--r--qmake/qmake_pch.h30
-rw-r--r--src/3rdparty/ce-compat/ce_time.c (renamed from src/3rdparty/webkit/JavaScriptCore/os-wince/ce_time.cpp)0
-rw-r--r--src/3rdparty/ce-compat/ce_time.h25
-rw-r--r--src/3rdparty/clucene/src/CLucene/index/SegmentTermDocs.cpp72
-rw-r--r--src/3rdparty/clucene/src/CLucene/index/Term.cpp5
-rw-r--r--src/3rdparty/clucene/src/CLucene/queryParser/MultiFieldQueryParser.cpp61
-rw-r--r--src/3rdparty/clucene/src/CLucene/store/FSDirectory.cpp33
-rw-r--r--src/3rdparty/clucene/src/CLucene/store/FSDirectory.h4
-rw-r--r--src/3rdparty/clucene/src/CLucene/util/bufferedstream.h2
-rw-r--r--src/3rdparty/easing/legal.qdoc2
-rw-r--r--src/3rdparty/fonts/5x7.bdf24999
-rw-r--r--src/3rdparty/fonts/6x13.bdf75535
-rw-r--r--src/3rdparty/fonts/COPYING.Cursor1
-rw-r--r--src/3rdparty/fonts/COPYING.Helvetica19
-rw-r--r--src/3rdparty/fonts/COPYING.Utopia16
-rw-r--r--src/3rdparty/fonts/COPYRIGHT.BH42
-rw-r--r--src/3rdparty/fonts/COPYRIGHT.Charter11
-rw-r--r--src/3rdparty/fonts/COPYRIGHT.Courier11
-rw-r--r--src/3rdparty/fonts/COPYRIGHT.DejaVu98
-rw-r--r--src/3rdparty/fonts/COPYRIGHT.IBM9
-rw-r--r--src/3rdparty/fonts/COPYRIGHT.Unifont7
-rw-r--r--src/3rdparty/fonts/COPYRIGHT.Vera124
-rw-r--r--src/3rdparty/fonts/README.DejaVu59
-rw-r--r--src/3rdparty/fonts/helvB08.bdf2604
-rw-r--r--src/3rdparty/fonts/helvB10.bdf2867
-rw-r--r--src/3rdparty/fonts/helvB12.bdf3057
-rw-r--r--src/3rdparty/fonts/helvB14.bdf3319
-rw-r--r--src/3rdparty/fonts/helvB18.bdf3864
-rw-r--r--src/3rdparty/fonts/helvB24.bdf4718
-rw-r--r--src/3rdparty/fonts/helvBO08.bdf2597
-rw-r--r--src/3rdparty/fonts/helvBO10.bdf2863
-rw-r--r--src/3rdparty/fonts/helvBO12.bdf3056
-rw-r--r--src/3rdparty/fonts/helvBO14.bdf3325
-rw-r--r--src/3rdparty/fonts/helvBO18.bdf3853
-rw-r--r--src/3rdparty/fonts/helvBO24.bdf4709
-rw-r--r--src/3rdparty/fonts/helvO08.bdf2601
-rw-r--r--src/3rdparty/fonts/helvO10.bdf2869
-rw-r--r--src/3rdparty/fonts/helvO12.bdf3042
-rw-r--r--src/3rdparty/fonts/helvO14.bdf3310
-rw-r--r--src/3rdparty/fonts/helvO18.bdf3837
-rw-r--r--src/3rdparty/fonts/helvO24.bdf4713
-rw-r--r--src/3rdparty/fonts/helvR08.bdf2595
-rw-r--r--src/3rdparty/fonts/helvR10.bdf2864
-rw-r--r--src/3rdparty/fonts/helvR12.bdf3046
-rw-r--r--src/3rdparty/fonts/helvR14.bdf3313
-rw-r--r--src/3rdparty/fonts/helvR18.bdf3861
-rw-r--r--src/3rdparty/fonts/helvR24.bdf4715
-rw-r--r--src/3rdparty/fonts/micro.bdf1548
-rw-r--r--src/3rdparty/fonts/unifont.bdf801998
-rw-r--r--src/3rdparty/freetype/src/base/ftobjs.c18
-rw-r--r--src/3rdparty/freetype/src/base/ftstream.c2
-rw-r--r--src/3rdparty/freetype/src/gzip/zconf.h7
-rw-r--r--src/3rdparty/freetype/src/gzip/zlib.h7
-rw-r--r--src/3rdparty/freetype/src/truetype/ttinterp.c2
-rw-r--r--src/3rdparty/freetype/src/truetype/ttpload.c6
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-arabic.c62
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-gpos.c6
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-hebrew.c3
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-impl.c4
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp137
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-open.c2
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-shape.h2
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp38
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-shaper.h43
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-stream.c2
-rw-r--r--src/3rdparty/harfbuzz/tests/shaping/main.cpp159
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/APICast.h134
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSBase.cpp116
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSBase.h145
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSBasePrivate.h52
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSCallbackConstructor.cpp86
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSCallbackConstructor.h57
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSCallbackFunction.cpp79
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSCallbackFunction.h58
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSCallbackObject.cpp41
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSCallbackObject.h114
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSCallbackObjectFunctions.h573
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSClassRef.cpp244
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSClassRef.h122
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSContextRef.cpp154
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSContextRef.h132
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSObjectRef.cpp518
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSObjectRef.h694
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSProfilerPrivate.cpp46
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSProfilerPrivate.h63
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSRetainPtr.h173
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSStringRef.cpp112
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSStringRef.h144
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSStringRefBSTR.cpp42
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSStringRefBSTR.h62
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSStringRefCF.cpp57
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSStringRefCF.h60
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSValueRef.cpp322
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSValueRef.h278
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JavaScript.h36
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JavaScriptCore.h32
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/OpaqueJSString.cpp55
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/OpaqueJSString.h81
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/WebKitAvailability.h764
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/AUTHORS2
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/COPYING.LIB488
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/ChangeLog10568
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/ChangeLog-2002-12-032271
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/ChangeLog-2003-10-251483
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/ChangeLog-2007-10-1426221
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/ChangeLog-2008-08-1031482
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/ChangeLog-2009-06-1639978
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/DerivedSources.make76
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/ForwardingHeaders/JavaScriptCore/APICast.h1
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/ForwardingHeaders/JavaScriptCore/JSBase.h1
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/ForwardingHeaders/JavaScriptCore/JSContextRef.h1
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/ForwardingHeaders/JavaScriptCore/JSObjectRef.h1
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/ForwardingHeaders/JavaScriptCore/JSRetainPtr.h1
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/ForwardingHeaders/JavaScriptCore/JSStringRef.h1
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/ForwardingHeaders/JavaScriptCore/JSStringRefCF.h1
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/ForwardingHeaders/JavaScriptCore/JSValueRef.h1
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/ForwardingHeaders/JavaScriptCore/JavaScript.h1
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/ForwardingHeaders/JavaScriptCore/JavaScriptCore.h1
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/ForwardingHeaders/JavaScriptCore/OpaqueJSString.h1
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/ForwardingHeaders/JavaScriptCore/WebKitAvailability.h1
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/Info.plist24
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.gypi457
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.order1965
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.pri276
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCorePrefix.h35
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/THANKS8
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/assembler/ARMAssembler.cpp393
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/assembler/ARMAssembler.h769
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/assembler/ARMv7Assembler.h1758
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/assembler/AbstractMacroAssembler.h535
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/assembler/AssemblerBuffer.h173
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h318
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/assembler/CodeLocation.h186
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/assembler/LinkBuffer.h195
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/assembler/MacroAssembler.h347
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/assembler/MacroAssemblerARM.cpp94
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/assembler/MacroAssemblerARM.h817
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/assembler/MacroAssemblerARMv7.h1095
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/assembler/MacroAssemblerCodeRef.h188
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/assembler/MacroAssemblerX86.h204
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/assembler/MacroAssemblerX86Common.h971
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/assembler/MacroAssemblerX86_64.h480
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/assembler/RepatchBuffer.h136
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/assembler/X86Assembler.h2053
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/bytecode/CodeBlock.cpp1657
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/bytecode/CodeBlock.h640
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/bytecode/EvalCodeCache.h77
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/bytecode/Instruction.h167
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/bytecode/JumpTable.cpp45
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/bytecode/JumpTable.h103
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/bytecode/Opcode.cpp186
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/bytecode/Opcode.h237
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/bytecode/SamplingTool.cpp406
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/bytecode/SamplingTool.h414
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/bytecode/StructureStubInfo.cpp80
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/bytecode/StructureStubInfo.h185
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp1957
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/bytecompiler/BytecodeGenerator.h499
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/bytecompiler/Label.h92
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/bytecompiler/LabelScope.h79
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/bytecompiler/RegisterID.h121
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/config.h78
-rwxr-xr-xsrc/3rdparty/javascriptcore/JavaScriptCore/create_hash_table274
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/debugger/Debugger.cpp111
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/debugger/Debugger.h113
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/debugger/DebuggerActivation.cpp104
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/debugger/DebuggerActivation.h63
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/debugger/DebuggerCallFrame.cpp90
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/debugger/DebuggerCallFrame.h70
-rwxr-xr-xsrc/3rdparty/javascriptcore/JavaScriptCore/docs/make-bytecode-docs.pl42
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/generated/ArrayPrototype.lut.h34
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/generated/DatePrototype.lut.h59
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/generated/Grammar.cpp5123
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/generated/Grammar.h232
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/generated/JSONObject.lut.h15
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/generated/Lexer.lut.h49
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/generated/MathObject.lut.h31
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/generated/NumberConstructor.lut.h18
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/generated/RegExpConstructor.lut.h34
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/generated/RegExpObject.lut.h18
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/generated/StringPrototype.lut.h45
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/generated/chartables.c96
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/headers.pri9
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/interpreter/CachedCall.h71
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/interpreter/CallFrame.cpp52
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/interpreter/CallFrame.h150
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/interpreter/CallFrameClosure.h60
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/interpreter/Interpreter.cpp3995
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/interpreter/Interpreter.h166
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/interpreter/Register.h204
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/interpreter/RegisterFile.cpp59
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/interpreter/RegisterFile.h265
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/jit/ExecutableAllocator.cpp38
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/jit/ExecutableAllocator.h258
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp447
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/jit/ExecutableAllocatorPosix.cpp85
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/jit/ExecutableAllocatorWin.cpp63
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/jit/JIT.cpp611
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/jit/JIT.h910
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/jit/JITArithmetic.cpp2542
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/jit/JITCall.cpp726
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/jit/JITCode.h118
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/jit/JITInlineMethods.h870
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/jit/JITOpcodes.cpp2950
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/jit/JITPropertyAccess.cpp1765
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubCall.h236
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp3097
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.h378
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/jsc.cpp561
-rwxr-xr-xsrc/3rdparty/javascriptcore/JavaScriptCore/make-generated-sources.sh11
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/os-win32/stdbool.h45
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/os-win32/stdint.h67
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/parser/Grammar.y2102
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/parser/Keywords.table72
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/parser/Lexer.cpp1055
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/parser/Lexer.h141
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/parser/NodeConstructors.h899
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/parser/NodeInfo.h63
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/parser/Nodes.cpp2070
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/parser/Nodes.h1593
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/parser/Parser.cpp81
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/parser/Parser.h104
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/parser/ParserArena.cpp135
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/parser/ParserArena.h130
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/parser/ResultType.h182
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/parser/SourceCode.h99
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/parser/SourceProvider.h89
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/pcre/AUTHORS12
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/pcre/COPYING35
-rwxr-xr-xsrc/3rdparty/javascriptcore/JavaScriptCore/pcre/dftables272
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/pcre/pcre.h68
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/pcre/pcre.pri35
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/pcre/pcre_compile.cpp2706
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/pcre/pcre_exec.cpp2177
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/pcre/pcre_internal.h455
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/pcre/pcre_tables.cpp72
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/pcre/pcre_ucp_searchfuncs.cpp99
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/pcre/pcre_xclass.cpp115
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/pcre/ucpinternal.h126
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/pcre/ucptable.cpp2968
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/profiler/CallIdentifier.h98
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/profiler/HeavyProfile.cpp0
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/profiler/HeavyProfile.h0
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/profiler/Profile.cpp136
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/profiler/Profile.h72
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/profiler/ProfileGenerator.cpp170
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/profiler/ProfileGenerator.h77
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/profiler/ProfileNode.cpp346
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/profiler/ProfileNode.h168
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/profiler/Profiler.cpp161
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/profiler/Profiler.h75
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/profiler/ProfilerServer.h35
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/profiler/ProfilerServer.mm115
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/profiler/TreeProfile.cpp0
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/profiler/TreeProfile.h0
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ArgList.cpp79
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ArgList.h230
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Arguments.cpp301
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Arguments.h257
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ArrayConstructor.cpp97
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ArrayConstructor.h40
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ArrayPrototype.cpp1075
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ArrayPrototype.h42
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/BatchedTransitionOptimizer.h55
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/BooleanConstructor.cpp78
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/BooleanConstructor.h44
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/BooleanObject.cpp35
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/BooleanObject.h51
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/BooleanPrototype.cpp83
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/BooleanPrototype.h35
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/CallData.cpp65
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/CallData.h91
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ClassInfo.h62
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp1375
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.h303
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/CollectorHeapIterator.h90
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/CommonIdentifiers.cpp39
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/CommonIdentifiers.h104
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Completion.cpp75
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Completion.h63
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ConstructData.cpp65
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ConstructData.h96
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/DateConstructor.cpp181
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/DateConstructor.h43
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/DateConversion.cpp101
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/DateConversion.h60
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/DateInstance.cpp118
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/DateInstance.h67
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/DatePrototype.cpp1111
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/DatePrototype.h48
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Error.cpp134
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Error.h74
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ErrorConstructor.cpp73
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ErrorConstructor.h44
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ErrorInstance.cpp33
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ErrorInstance.h38
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ErrorPrototype.cpp68
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ErrorPrototype.h37
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ExceptionHelpers.cpp211
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ExceptionHelpers.h56
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Executable.cpp280
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Executable.h353
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/FunctionConstructor.cpp105
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/FunctionConstructor.h44
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/FunctionPrototype.cpp149
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/FunctionPrototype.h46
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/GetterSetter.cpp46
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/GetterSetter.h73
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/GlobalEvalFunction.cpp48
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/GlobalEvalFunction.h51
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Identifier.cpp268
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Identifier.h146
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/InitializeThreading.cpp71
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/InitializeThreading.h40
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/InternalFunction.cpp71
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/InternalFunction.h66
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSAPIValueWrapper.cpp31
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSAPIValueWrapper.h64
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSActivation.cpp172
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSActivation.h105
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSArray.cpp1076
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSArray.h229
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSByteArray.cpp108
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSByteArray.h116
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSCell.cpp236
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSCell.h364
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSFunction.cpp256
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSFunction.h131
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalData.cpp256
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalData.h169
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.cpp460
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObject.h433
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp439
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalObjectFunctions.h60
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSImmediate.cpp26
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSImmediate.h727
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSLock.cpp254
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSLock.h104
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSNotAnObject.cpp129
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSNotAnObject.h98
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSNumberCell.cpp113
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSNumberCell.h357
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSONObject.cpp875
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSONObject.h59
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSObject.cpp676
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSObject.h701
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSPropertyNameIterator.cpp54
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSPropertyNameIterator.h113
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSStaticScopeObject.cpp77
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSStaticScopeObject.h68
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSString.cpp198
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSString.h241
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSType.h44
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSTypeInfo.h78
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSValue.cpp180
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSValue.h811
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSVariableObject.cpp81
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSVariableObject.h170
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSWrapperObject.cpp36
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/JSWrapperObject.h67
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/LiteralParser.cpp453
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/LiteralParser.h110
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Lookup.cpp82
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Lookup.h323
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/MarkStack.cpp40
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/MarkStack.h187
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/MarkStackPosix.cpp72
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/MarkStackWin.cpp53
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/MathObject.cpp240
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/MathObject.h46
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/NativeErrorConstructor.cpp73
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/NativeErrorConstructor.h51
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/NativeErrorPrototype.cpp43
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/NativeErrorPrototype.h44
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/NativeFunctionWrapper.h39
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/NumberConstructor.cpp128
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/NumberConstructor.h56
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/NumberObject.cpp51
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/NumberObject.h54
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/NumberPrototype.cpp445
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/NumberPrototype.h35
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/NumericStrings.h74
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ObjectConstructor.cpp300
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ObjectConstructor.h41
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ObjectPrototype.cpp154
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ObjectPrototype.h43
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Operations.cpp121
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Operations.h330
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/PropertyDescriptor.cpp195
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/PropertyDescriptor.h80
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/PropertyMapHashTable.h91
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/PropertyNameArray.cpp50
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/PropertyNameArray.h113
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/PropertySlot.cpp44
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/PropertySlot.h210
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Protect.h215
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/PrototypeFunction.cpp57
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/PrototypeFunction.h45
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/PutPropertySlot.h77
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/RegExp.cpp283
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/RegExp.h89
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/RegExpConstructor.cpp398
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/RegExpConstructor.h83
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/RegExpMatchesArray.h94
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/RegExpObject.cpp173
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/RegExpObject.h84
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/RegExpPrototype.cpp124
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/RegExpPrototype.h38
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ScopeChain.cpp68
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ScopeChain.h241
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/ScopeChainMark.h36
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/SmallStrings.cpp128
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/SmallStrings.h74
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/StringConstructor.cpp91
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/StringConstructor.h40
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/StringObject.cpp97
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/StringObject.h68
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/StringObjectThatMasqueradesAsUndefined.h55
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/StringPrototype.cpp902
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/StringPrototype.h43
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Structure.cpp1200
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Structure.h311
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/StructureChain.cpp69
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/StructureChain.h52
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/StructureTransitionTable.h214
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/SymbolTable.h130
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/TimeoutChecker.cpp151
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/TimeoutChecker.h77
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Tracing.h50
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/UString.cpp1772
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/UString.h601
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wrec/CharacterClass.cpp140
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wrec/CharacterClass.h68
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wrec/CharacterClassConstructor.cpp257
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wrec/CharacterClassConstructor.h99
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wrec/Escapes.h150
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wrec/Quantifier.h66
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wrec/WREC.cpp86
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wrec/WREC.h54
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wrec/WRECFunctors.cpp80
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wrec/WRECFunctors.h109
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wrec/WRECGenerator.cpp653
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wrec/WRECGenerator.h128
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wrec/WRECParser.cpp643
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wrec/WRECParser.h214
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wscript103
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/ASCIICType.h166
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/AVLTree.h959
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/AlwaysInline.h63
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/Assertions.cpp211
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/Assertions.h273
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/ByteArray.cpp38
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/ByteArray.h93
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/CONTRIBUTORS.pthreads-win32137
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/CrossThreadRefCounted.h169
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/CurrentTime.cpp289
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/CurrentTime.h47
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/DateMath.cpp922
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/DateMath.h192
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/Deque.h669
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/DisallowCType.h74
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/FastAllocBase.h413
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp4379
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.h232
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/Forward.h44
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/GOwnPtr.cpp65
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/GOwnPtr.h98
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/GetPtr.h33
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/HashCountedSet.h225
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/HashFunctions.h186
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/HashIterators.h216
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/HashMap.h337
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/HashSet.h296
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/HashTable.cpp69
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/HashTable.h1158
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/HashTraits.h115
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/ListHashSet.h616
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/ListRefPtr.h67
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/Locker.h47
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/MainThread.cpp133
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/MainThread.h59
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/MallocZoneSupport.h65
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/MathExtras.h178
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/MessageQueue.h183
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/Noncopyable.h52
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/NotFound.h37
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/OwnArrayPtr.h75
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/OwnFastMallocPtr.h52
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/OwnPtr.h142
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/OwnPtrCommon.h61
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/OwnPtrWin.cpp76
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/PassOwnPtr.h177
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/PassRefPtr.h210
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h889
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/PossiblyNull.h59
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/PtrAndFlags.h79
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/RandomNumber.cpp119
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/RandomNumber.h42
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/RandomNumberSeed.h88
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/RefCounted.h137
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/RefCountedLeakCounter.cpp100
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/RefCountedLeakCounter.h48
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/RefPtr.h198
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/RefPtrHashMap.h350
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/RetainPtr.h203
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/SegmentedVector.h255
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/StdLibExtras.h68
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/StringExtras.h104
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/TCPackedCache.h234
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/TCPageMap.h316
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/TCSpinLock.h240
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/TCSystemAlloc.cpp521
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/TCSystemAlloc.h75
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/ThreadSpecific.h272
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/ThreadSpecificWin.cpp54
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.cpp97
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h339
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/ThreadingNone.cpp59
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/ThreadingPthreads.cpp378
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/ThreadingWin.cpp493
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.cpp120
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/TypeTraits.h339
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/UnusedParam.h29
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/VMTags.h55
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/Vector.h1014
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/VectorTraits.h106
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/dtoa.cpp2379
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/dtoa.h37
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/qt/MainThreadQt.cpp74
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/qt/ThreadingQt.cpp271
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/unicode/Collator.h67
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/unicode/CollatorDefault.cpp75
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/unicode/UTF8.cpp303
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/unicode/UTF8.h75
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/unicode/Unicode.h46
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.cpp214
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/unicode/glib/UnicodeGLib.h238
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/unicode/glib/UnicodeMacrosFromICU.h69
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/unicode/icu/CollatorICU.cpp150
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/unicode/icu/UnicodeIcu.h230
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/unicode/qt4/UnicodeQt4.h545
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/unicode/wince/UnicodeWince.cpp175
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/unicode/wince/UnicodeWince.h216
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/wince/FastMallocWince.h177
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/wince/MemoryManager.cpp171
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/wince/MemoryManager.h80
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/wince/mt19937ar.c170
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/yarr/RegexCompiler.cpp728
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/yarr/RegexCompiler.h45
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/yarr/RegexInterpreter.cpp1638
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/yarr/RegexInterpreter.h337
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/yarr/RegexJIT.cpp1418
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/yarr/RegexJIT.h91
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/yarr/RegexParser.h854
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/yarr/RegexPattern.h356
-rw-r--r--src/3rdparty/javascriptcore/VERSION11
-rw-r--r--src/3rdparty/javascriptcore/WebKit.pri136
-rw-r--r--src/3rdparty/libmng/libmng_object_prc.c12
-rw-r--r--src/3rdparty/libmng/libmng_prop_xs.c2
-rw-r--r--src/3rdparty/libpng/ANNOUNCE54
-rw-r--r--src/3rdparty/libpng/CHANGES338
-rw-r--r--src/3rdparty/libpng/INSTALL16
-rw-r--r--src/3rdparty/libpng/KNOWNBUG2
-rw-r--r--src/3rdparty/libpng/LICENSE8
-rw-r--r--src/3rdparty/libpng/README25
-rw-r--r--src/3rdparty/libpng/TODO1
-rw-r--r--src/3rdparty/libpng/Y2KINFO4
-rwxr-xr-xsrc/3rdparty/libpng/configure4
-rw-r--r--src/3rdparty/libpng/example.c297
-rw-r--r--src/3rdparty/libpng/libpng-1.2.29.txt2906
-rw-r--r--src/3rdparty/libpng/libpng-1.2.40.txt3112
-rw-r--r--src/3rdparty/libpng/libpng.3803
-rw-r--r--src/3rdparty/libpng/libpngpf.3522
-rw-r--r--src/3rdparty/libpng/png.52
-rw-r--r--src/3rdparty/libpng/png.c572
-rw-r--r--src/3rdparty/libpng/png.h419
-rw-r--r--src/3rdparty/libpng/pngconf.h150
-rw-r--r--src/3rdparty/libpng/pngerror.c107
-rw-r--r--src/3rdparty/libpng/pngget.c214
-rw-r--r--src/3rdparty/libpng/pngmem.c126
-rw-r--r--src/3rdparty/libpng/pngpread.c339
-rw-r--r--src/3rdparty/libpng/pngread.c372
-rw-r--r--src/3rdparty/libpng/pngrio.c68
-rw-r--r--src/3rdparty/libpng/pngrtran.c629
-rw-r--r--src/3rdparty/libpng/pngrutil.c837
-rw-r--r--src/3rdparty/libpng/pngset.c803
-rw-r--r--src/3rdparty/libpng/pngtest.c609
-rw-r--r--src/3rdparty/libpng/pngtrans.c111
-rw-r--r--src/3rdparty/libpng/pngwio.c129
-rw-r--r--src/3rdparty/libpng/pngwrite.c391
-rw-r--r--src/3rdparty/libpng/pngwtran.c39
-rw-r--r--src/3rdparty/libpng/pngwutil.c937
-rw-r--r--src/3rdparty/libpng/scripts/CMakeLists.txt137
-rw-r--r--src/3rdparty/libpng/scripts/descrip.mms6
-rwxr-xr-xsrc/3rdparty/libpng/scripts/libpng-config-head.in7
-rwxr-xr-xsrc/3rdparty/libpng/scripts/libpng-config.in7
-rw-r--r--src/3rdparty/libpng/scripts/libpng.icc7
-rw-r--r--src/3rdparty/libpng/scripts/libpng.pc-configure.in7
-rw-r--r--src/3rdparty/libpng/scripts/libpng.pc.in2
-rw-r--r--src/3rdparty/libpng/scripts/makefile.32sunu7
-rw-r--r--src/3rdparty/libpng/scripts/makefile.64sunu7
-rw-r--r--src/3rdparty/libpng/scripts/makefile.acorn3
-rw-r--r--src/3rdparty/libpng/scripts/makefile.aix29
-rw-r--r--src/3rdparty/libpng/scripts/makefile.amiga5
-rw-r--r--src/3rdparty/libpng/scripts/makefile.atari8
-rw-r--r--src/3rdparty/libpng/scripts/makefile.bc3239
-rw-r--r--src/3rdparty/libpng/scripts/makefile.beos12
-rw-r--r--src/3rdparty/libpng/scripts/makefile.bor42
-rw-r--r--src/3rdparty/libpng/scripts/makefile.cygwin17
-rw-r--r--src/3rdparty/libpng/scripts/makefile.darwin17
-rw-r--r--src/3rdparty/libpng/scripts/makefile.dec9
-rw-r--r--src/3rdparty/libpng/scripts/makefile.dj29
-rw-r--r--src/3rdparty/libpng/scripts/makefile.elf12
-rw-r--r--src/3rdparty/libpng/scripts/makefile.freebsd7
-rw-r--r--src/3rdparty/libpng/scripts/makefile.gcc32
-rw-r--r--src/3rdparty/libpng/scripts/makefile.gcmmx19
-rw-r--r--src/3rdparty/libpng/scripts/makefile.hp6412
-rw-r--r--src/3rdparty/libpng/scripts/makefile.hpgcc11
-rw-r--r--src/3rdparty/libpng/scripts/makefile.hpux10
-rw-r--r--src/3rdparty/libpng/scripts/makefile.ibmc24
-rw-r--r--src/3rdparty/libpng/scripts/makefile.intel14
-rw-r--r--src/3rdparty/libpng/scripts/makefile.knr12
-rw-r--r--src/3rdparty/libpng/scripts/makefile.linux14
-rw-r--r--src/3rdparty/libpng/scripts/makefile.mingw20
-rw-r--r--src/3rdparty/libpng/scripts/makefile.mips8
-rw-r--r--src/3rdparty/libpng/scripts/makefile.msc13
-rw-r--r--src/3rdparty/libpng/scripts/makefile.ne12bsd12
-rw-r--r--src/3rdparty/libpng/scripts/makefile.netbsd12
-rw-r--r--src/3rdparty/libpng/scripts/makefile.nommx45
-rw-r--r--src/3rdparty/libpng/scripts/makefile.openbsd13
-rw-r--r--src/3rdparty/libpng/scripts/makefile.os27
-rw-r--r--src/3rdparty/libpng/scripts/makefile.sco7
-rw-r--r--src/3rdparty/libpng/scripts/makefile.sggcc15
-rw-r--r--src/3rdparty/libpng/scripts/makefile.sgi9
-rw-r--r--src/3rdparty/libpng/scripts/makefile.so911
-rw-r--r--src/3rdparty/libpng/scripts/makefile.solaris12
-rw-r--r--src/3rdparty/libpng/scripts/makefile.solaris-x8611
-rw-r--r--src/3rdparty/libpng/scripts/makefile.std7
-rw-r--r--src/3rdparty/libpng/scripts/makefile.sunos7
-rw-r--r--src/3rdparty/libpng/scripts/makefile.vcawin3217
-rw-r--r--src/3rdparty/libpng/scripts/makefile.vcwin3213
-rw-r--r--src/3rdparty/libpng/scripts/makefile.watcom5
-rw-r--r--src/3rdparty/libpng/scripts/makevms.com4
-rw-r--r--src/3rdparty/libpng/scripts/pngos2.def2
-rw-r--r--src/3rdparty/libpng/scripts/pngw32.def3
-rw-r--r--src/3rdparty/libpng/scripts/smakefile.ppc5
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_config.h4
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_unix.c2
-rw-r--r--src/3rdparty/libtiff/libtiff/tiffio.h2
-rw-r--r--src/3rdparty/phonon/CMakeLists.txt25
-rw-r--r--src/3rdparty/phonon/ds9/CMakeLists.txt5
-rw-r--r--src/3rdparty/phonon/ds9/backend.cpp14
-rw-r--r--src/3rdparty/phonon/ds9/backend.h4
-rw-r--r--src/3rdparty/phonon/ds9/backendnode.cpp19
-rw-r--r--src/3rdparty/phonon/ds9/ds9.desktop44
-rw-r--r--src/3rdparty/phonon/ds9/effect.cpp4
-rw-r--r--src/3rdparty/phonon/ds9/iodevicereader.cpp91
-rw-r--r--src/3rdparty/phonon/ds9/iodevicereader.h1
-rw-r--r--src/3rdparty/phonon/ds9/mediagraph.cpp14
-rw-r--r--src/3rdparty/phonon/ds9/mediaobject.cpp136
-rw-r--r--src/3rdparty/phonon/ds9/mediaobject.h6
-rw-r--r--src/3rdparty/phonon/ds9/qasyncreader.cpp72
-rw-r--r--src/3rdparty/phonon/ds9/qasyncreader.h6
-rw-r--r--src/3rdparty/phonon/ds9/qbasefilter.cpp26
-rw-r--r--src/3rdparty/phonon/ds9/qbasefilter.h4
-rw-r--r--src/3rdparty/phonon/ds9/qevr9.h143
-rw-r--r--src/3rdparty/phonon/ds9/qmeminputpin.cpp106
-rw-r--r--src/3rdparty/phonon/ds9/qmeminputpin.h9
-rw-r--r--src/3rdparty/phonon/ds9/qpin.cpp34
-rw-r--r--src/3rdparty/phonon/ds9/qpin.h7
-rw-r--r--src/3rdparty/phonon/ds9/videorenderer_default.cpp153
-rw-r--r--src/3rdparty/phonon/ds9/videorenderer_default.h55
-rw-r--r--src/3rdparty/phonon/ds9/videorenderer_evr.cpp215
-rw-r--r--src/3rdparty/phonon/ds9/videorenderer_evr.h56
-rw-r--r--src/3rdparty/phonon/ds9/videorenderer_soft.cpp9
-rw-r--r--src/3rdparty/phonon/ds9/videorenderer_vmr9.cpp112
-rw-r--r--src/3rdparty/phonon/ds9/videorenderer_vmr9.h1
-rw-r--r--src/3rdparty/phonon/ds9/videowidget.cpp24
-rw-r--r--src/3rdparty/phonon/ds9/volumeeffect.cpp5
-rw-r--r--src/3rdparty/phonon/gstreamer/CMakeLists.txt24
-rw-r--r--src/3rdparty/phonon/gstreamer/abstractrenderer.cpp3
-rw-r--r--src/3rdparty/phonon/gstreamer/abstractrenderer.h3
-rw-r--r--src/3rdparty/phonon/gstreamer/artssink.cpp3
-rw-r--r--src/3rdparty/phonon/gstreamer/audioeffect.cpp3
-rw-r--r--src/3rdparty/phonon/gstreamer/audioeffect.h4
-rw-r--r--src/3rdparty/phonon/gstreamer/audiooutput.cpp13
-rw-r--r--src/3rdparty/phonon/gstreamer/backend.cpp43
-rw-r--r--src/3rdparty/phonon/gstreamer/devicemanager.cpp9
-rw-r--r--src/3rdparty/phonon/gstreamer/effect.cpp4
-rw-r--r--src/3rdparty/phonon/gstreamer/effect.h4
-rw-r--r--src/3rdparty/phonon/gstreamer/mediaobject.cpp73
-rw-r--r--src/3rdparty/phonon/gstreamer/phononsrc.cpp28
-rw-r--r--src/3rdparty/phonon/gstreamer/phononsrc.h2
-rw-r--r--src/3rdparty/phonon/gstreamer/streamreader.cpp3
-rw-r--r--src/3rdparty/phonon/gstreamer/streamreader.h4
-rw-r--r--src/3rdparty/phonon/gstreamer/videowidget.cpp2
-rw-r--r--src/3rdparty/phonon/gstreamer/videowidget.h3
-rw-r--r--src/3rdparty/phonon/gstreamer/volumefadereffect.cpp4
-rw-r--r--src/3rdparty/phonon/gstreamer/volumefadereffect.h4
-rw-r--r--src/3rdparty/phonon/gstreamer/widgetrenderer.cpp2
-rw-r--r--src/3rdparty/phonon/gstreamer/widgetrenderer.h3
-rw-r--r--src/3rdparty/phonon/includes/CMakeLists.txt4
-rw-r--r--src/3rdparty/phonon/mmf/abstractaudioeffect.cpp82
-rw-r--r--src/3rdparty/phonon/mmf/abstractaudioeffect.h105
-rw-r--r--src/3rdparty/phonon/mmf/abstractmediaplayer.cpp416
-rw-r--r--src/3rdparty/phonon/mmf/abstractmediaplayer.h119
-rw-r--r--src/3rdparty/phonon/mmf/abstractplayer.cpp196
-rw-r--r--src/3rdparty/phonon/mmf/abstractplayer.h168
-rw-r--r--src/3rdparty/phonon/mmf/ancestormovemonitor.cpp180
-rw-r--r--src/3rdparty/phonon/mmf/ancestormovemonitor.h95
-rw-r--r--src/3rdparty/phonon/mmf/audioequalizer.cpp87
-rw-r--r--src/3rdparty/phonon/mmf/audioequalizer.h61
-rw-r--r--src/3rdparty/phonon/mmf/audiooutput.cpp106
-rw-r--r--src/3rdparty/phonon/mmf/audiooutput.h92
-rw-r--r--src/3rdparty/phonon/mmf/audioplayer.cpp274
-rw-r--r--src/3rdparty/phonon/mmf/audioplayer.h113
-rw-r--r--src/3rdparty/phonon/mmf/backend.cpp211
-rw-r--r--src/3rdparty/phonon/mmf/backend.h63
-rw-r--r--src/3rdparty/phonon/mmf/bassboost.cpp48
-rw-r--r--src/3rdparty/phonon/mmf/bassboost.h58
-rw-r--r--src/3rdparty/phonon/mmf/defs.h43
-rw-r--r--src/3rdparty/phonon/mmf/dummyplayer.cpp126
-rw-r--r--src/3rdparty/phonon/mmf/dummyplayer.h72
-rw-r--r--src/3rdparty/phonon/mmf/effectfactory.cpp155
-rw-r--r--src/3rdparty/phonon/mmf/effectfactory.h76
-rw-r--r--src/3rdparty/phonon/mmf/mediaobject.cpp389
-rw-r--r--src/3rdparty/phonon/mmf/mediaobject.h138
-rw-r--r--src/3rdparty/phonon/mmf/mmf_medianode.cpp121
-rw-r--r--src/3rdparty/phonon/mmf/mmf_medianode.h100
-rw-r--r--src/3rdparty/phonon/mmf/mmf_videoplayer.cpp652
-rw-r--r--src/3rdparty/phonon/mmf/mmf_videoplayer.h129
-rw-r--r--src/3rdparty/phonon/mmf/objectdump.cpp525
-rw-r--r--src/3rdparty/phonon/mmf/objectdump.h164
-rw-r--r--src/3rdparty/phonon/mmf/objectdump_symbian.cpp160
-rw-r--r--src/3rdparty/phonon/mmf/objectdump_symbian.h66
-rw-r--r--src/3rdparty/phonon/mmf/objecttree.cpp100
-rw-r--r--src/3rdparty/phonon/mmf/objecttree.h115
-rw-r--r--src/3rdparty/phonon/mmf/utils.cpp162
-rw-r--r--src/3rdparty/phonon/mmf/utils.h167
-rw-r--r--src/3rdparty/phonon/mmf/videooutput.cpp303
-rw-r--r--src/3rdparty/phonon/mmf/videooutput.h105
-rw-r--r--src/3rdparty/phonon/mmf/videowidget.cpp167
-rw-r--r--src/3rdparty/phonon/mmf/videowidget.h80
-rw-r--r--src/3rdparty/phonon/phonon/abstractaudiooutput.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/abstractaudiooutput.h2
-rw-r--r--src/3rdparty/phonon/phonon/abstractaudiooutput_p.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/abstractaudiooutput_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/abstractmediastream.cpp3
-rw-r--r--src/3rdparty/phonon/phonon/abstractmediastream.h4
-rw-r--r--src/3rdparty/phonon/phonon/abstractmediastream_p.h4
-rw-r--r--src/3rdparty/phonon/phonon/abstractvideooutput.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/abstractvideooutput.h2
-rw-r--r--src/3rdparty/phonon/phonon/abstractvideooutput_p.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/abstractvideooutput_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/addoninterface.h2
-rw-r--r--src/3rdparty/phonon/phonon/audiooutput.cpp18
-rw-r--r--src/3rdparty/phonon/phonon/audiooutput.h2
-rw-r--r--src/3rdparty/phonon/phonon/audiooutput_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/audiooutputinterface.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/audiooutputinterface.h2
-rw-r--r--src/3rdparty/phonon/phonon/backendcapabilities.cpp4
-rw-r--r--src/3rdparty/phonon/phonon/backendcapabilities.h2
-rw-r--r--src/3rdparty/phonon/phonon/backendcapabilities_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/backendinterface.h2
-rw-r--r--src/3rdparty/phonon/phonon/effect.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/effect.h2
-rw-r--r--src/3rdparty/phonon/phonon/effect_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/effectinterface.h2
-rw-r--r--src/3rdparty/phonon/phonon/effectparameter.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/effectparameter.h2
-rw-r--r--src/3rdparty/phonon/phonon/effectparameter_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/effectwidget.cpp7
-rw-r--r--src/3rdparty/phonon/phonon/effectwidget.h4
-rw-r--r--src/3rdparty/phonon/phonon/effectwidget_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/factory.cpp47
-rw-r--r--src/3rdparty/phonon/phonon/factory_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/frontendinterface_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/globalconfig.cpp24
-rw-r--r--src/3rdparty/phonon/phonon/globalconfig_p.h6
-rw-r--r--src/3rdparty/phonon/phonon/globalstatic_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/iodevicestream.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/iodevicestream_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/mediacontroller.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/mediacontroller.h2
-rw-r--r--src/3rdparty/phonon/phonon/medianode.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/medianode.h2
-rw-r--r--src/3rdparty/phonon/phonon/medianode_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/medianodedestructionhandler_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/mediaobject.cpp14
-rw-r--r--src/3rdparty/phonon/phonon/mediaobject.h2
-rw-r--r--src/3rdparty/phonon/phonon/mediaobject_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/mediaobjectinterface.h2
-rw-r--r--src/3rdparty/phonon/phonon/mediasource.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/mediasource.h2
-rw-r--r--src/3rdparty/phonon/phonon/mediasource_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/objectdescription.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/objectdescription.h2
-rw-r--r--src/3rdparty/phonon/phonon/objectdescription_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/objectdescriptionmodel.cpp9
-rw-r--r--src/3rdparty/phonon/phonon/objectdescriptionmodel.h33
-rw-r--r--src/3rdparty/phonon/phonon/objectdescriptionmodel_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/path.cpp14
-rw-r--r--src/3rdparty/phonon/phonon/path.h2
-rw-r--r--src/3rdparty/phonon/phonon/path_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/phonon_export.h2
-rw-r--r--src/3rdparty/phonon/phonon/phonondefs.h2
-rw-r--r--src/3rdparty/phonon/phonon/phonondefs_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/phononnamespace.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/phononnamespace.h2
-rw-r--r--src/3rdparty/phonon/phonon/phononnamespace.h.in4
-rw-r--r--src/3rdparty/phonon/phonon/phononnamespace_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/platform.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/platform_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/platformplugin.h2
-rw-r--r--src/3rdparty/phonon/phonon/qsettingsgroup_p.h5
-rw-r--r--src/3rdparty/phonon/phonon/seekslider.cpp6
-rw-r--r--src/3rdparty/phonon/phonon/seekslider.h2
-rw-r--r--src/3rdparty/phonon/phonon/seekslider_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/streaminterface.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/streaminterface.h2
-rw-r--r--src/3rdparty/phonon/phonon/streaminterface_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/videoplayer.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/videoplayer.h2
-rw-r--r--src/3rdparty/phonon/phonon/videowidget.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/videowidget.h2
-rw-r--r--src/3rdparty/phonon/phonon/videowidget_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/videowidgetinterface.h2
-rw-r--r--src/3rdparty/phonon/phonon/volumefadereffect.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/volumefadereffect.h2
-rw-r--r--src/3rdparty/phonon/phonon/volumefadereffect_p.h2
-rw-r--r--src/3rdparty/phonon/phonon/volumefaderinterface.h2
-rw-r--r--src/3rdparty/phonon/phonon/volumeslider.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/volumeslider.h2
-rw-r--r--src/3rdparty/phonon/phonon/volumeslider_p.h2
-rw-r--r--src/3rdparty/phonon/qt7/backend.mm2
-rw-r--r--src/3rdparty/phonon/waveout/mediaobject.cpp4
-rw-r--r--src/3rdparty/sha1/sha1.cpp30
-rw-r--r--src/3rdparty/sqlite/sqlite3.c77455
-rw-r--r--src/3rdparty/sqlite/sqlite3.h6321
-rw-r--r--src/3rdparty/webkit/.gitignore6
-rw-r--r--src/3rdparty/webkit/ChangeLog558
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/API/APICast.h37
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/API/JSBase.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/API/JSCallbackConstructor.cpp2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/API/JSCallbackConstructor.h7
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/API/JSCallbackFunction.cpp1
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/API/JSCallbackFunction.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObject.h9
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/API/JSCallbackObjectFunctions.h27
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/API/JSClassRef.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/API/JSContextRef.cpp10
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/API/JSContextRefPrivate.h53
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/API/JSObjectRef.cpp1
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/API/JSStringRef.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/ChangeLog9995
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.gypi10
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri42
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro5
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/assembler/ARMAssembler.cpp82
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/assembler/ARMAssembler.h207
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/assembler/ARMv7Assembler.h287
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/assembler/AbstractMacroAssembler.h22
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h25
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssembler.h4
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerARM.cpp94
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerARM.h343
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerARMv7.h37
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerCodeRef.h12
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86.h13
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86Common.h231
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/assembler/MacroAssemblerX86_64.h72
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/assembler/X86Assembler.h163
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.cpp241
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/bytecode/CodeBlock.h152
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/bytecode/EvalCodeCache.h36
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/bytecode/Instruction.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/bytecode/Opcode.h8
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.cpp30
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/bytecode/SamplingTool.h24
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/bytecode/StructureStubInfo.cpp28
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/bytecode/StructureStubInfo.h49
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp215
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/bytecompiler/BytecodeGenerator.h56
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/bytecompiler/Label.h14
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/debugger/Debugger.cpp65
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/debugger/Debugger.h28
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerActivation.cpp21
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerActivation.h15
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/debugger/DebuggerCallFrame.cpp16
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/generated/Grammar.cpp1138
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/generated/Grammar.h4
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/generated/StringPrototype.lut.h7
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/interpreter/CachedCall.h5
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrame.h12
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/interpreter/CallFrameClosure.h4
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.cpp1292
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/interpreter/Interpreter.h31
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/interpreter/Register.h63
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.cpp5
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/interpreter/RegisterFile.h18
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocator.h60
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocatorPosix.cpp5
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocatorSymbian.cpp75
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocatorWin.cpp5
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/jit/JIT.cpp511
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/jit/JIT.h810
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/jit/JITArithmetic.cpp1588
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/jit/JITCall.cpp485
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/jit/JITCode.h6
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/jit/JITInlineMethods.h772
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/jit/JITOpcodes.cpp2299
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/jit/JITPropertyAccess.cpp1210
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/jit/JITStubCall.h152
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.cpp995
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.h216
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/jsc.cpp77
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/jsc.pro31
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/os-win32/stdbool.h4
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/os-win32/stdint.h7
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/os-wince/ce_time.h16
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/parser/Grammar.y493
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/parser/Lexer.cpp118
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h22
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/parser/NodeConstructors.h58
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/parser/Nodes.cpp435
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/parser/Nodes.h368
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/parser/Parser.cpp29
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/parser/Parser.h57
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/parser/ParserArena.cpp72
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/parser/ParserArena.h82
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/parser/SourceCode.h3
-rwxr-xr-xsrc/3rdparty/webkit/JavaScriptCore/pcre/dftables2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/profiler/ProfileGenerator.cpp1
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/profiler/ProfileGenerator.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/profiler/Profiler.cpp24
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/profiler/Profiler.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ArgList.cpp10
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ArgList.h10
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.cpp51
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Arguments.h39
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ArrayConstructor.cpp16
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ArrayConstructor.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ArrayPrototype.cpp72
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ArrayPrototype.h3
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/BatchedTransitionOptimizer.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/BooleanConstructor.cpp2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/BooleanConstructor.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/BooleanObject.cpp2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/BooleanObject.h7
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/BooleanPrototype.cpp6
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/BooleanPrototype.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/CallData.h4
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ClassInfo.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp352
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Collector.h46
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/CommonIdentifiers.h13
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Completion.cpp25
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ConstructData.h4
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/DateConstructor.cpp34
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/DateConstructor.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/DateInstance.cpp87
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/DateInstance.h24
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/DateInstanceCache.h89
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/DatePrototype.cpp317
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/DatePrototype.h9
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Error.cpp6
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Error.h1
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ErrorConstructor.cpp2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ErrorConstructor.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ErrorInstance.cpp2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ErrorInstance.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ErrorPrototype.cpp2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ErrorPrototype.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ExceptionHelpers.cpp15
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ExceptionHelpers.h6
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Executable.cpp280
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Executable.h356
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/FunctionConstructor.cpp38
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/FunctionConstructor.h6
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/FunctionPrototype.cpp15
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/FunctionPrototype.h4
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/GetterSetter.cpp52
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/GetterSetter.h22
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/GlobalEvalFunction.cpp11
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/GlobalEvalFunction.h14
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Identifier.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/InitializeThreading.cpp1
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/InternalFunction.cpp2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/InternalFunction.h8
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSAPIValueWrapper.cpp31
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSAPIValueWrapper.h64
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSActivation.cpp38
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSActivation.h26
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSArray.cpp243
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSArray.h135
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSByteArray.cpp21
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSByteArray.h10
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSCell.cpp52
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSCell.h218
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSFunction.cpp87
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSFunction.h72
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.cpp34
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalData.h29
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObject.cpp124
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObject.h91
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp28
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.cpp77
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSImmediate.h145
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSNotAnObject.cpp17
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSNotAnObject.h12
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSNumberCell.cpp46
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSNumberCell.h171
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSONObject.cpp202
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSONObject.h10
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSObject.cpp253
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSObject.h140
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSPropertyNameIterator.cpp79
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSPropertyNameIterator.h102
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSStaticScopeObject.cpp10
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSStaticScopeObject.h9
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSString.cpp66
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSString.h72
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSType.h6
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSTypeInfo.h78
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.cpp101
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.h561
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSVariableObject.cpp15
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSVariableObject.h11
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSWrapperObject.cpp10
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/JSWrapperObject.h24
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/LiteralParser.cpp6
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/LiteralParser.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Lookup.h60
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/MarkStack.cpp40
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/MarkStack.h187
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/MarkStackPosix.cpp50
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/MarkStackSymbian.cpp44
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/MarkStackWin.cpp53
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/MathObject.cpp14
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/MathObject.h8
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/NativeErrorConstructor.cpp2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/NativeErrorConstructor.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/NativeErrorPrototype.cpp2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/NativeErrorPrototype.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/NumberConstructor.cpp7
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/NumberConstructor.h8
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/NumberObject.cpp2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/NumberObject.h14
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/NumberPrototype.cpp2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/NumberPrototype.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/NumericStrings.h74
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ObjectConstructor.cpp234
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ObjectConstructor.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ObjectPrototype.cpp21
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ObjectPrototype.h8
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Operations.h70
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/PropertyDescriptor.cpp195
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/PropertyDescriptor.h80
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/PropertyMapHashTable.h1
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/PropertyNameArray.cpp5
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/PropertyNameArray.h35
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/PropertySlot.cpp3
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/PropertySlot.h23
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Protect.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/PrototypeFunction.cpp2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/PrototypeFunction.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/RegExpConstructor.cpp56
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/RegExpConstructor.h55
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/RegExpMatchesArray.h11
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/RegExpObject.cpp9
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/RegExpObject.h12
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/RegExpPrototype.cpp15
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/RegExpPrototype.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ScopeChain.cpp6
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ScopeChain.h22
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/ScopeChainMark.h11
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/SmallStrings.cpp10
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/SmallStrings.h6
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/StringConstructor.cpp2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/StringConstructor.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/StringObject.cpp32
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/StringObject.h17
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/StringObjectThatMasqueradesAsUndefined.h6
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/StringPrototype.cpp107
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/StringPrototype.h3
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Structure.cpp237
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Structure.h136
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/StructureChain.cpp11
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/StructureChain.h3
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/StructureTransitionTable.h159
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/SymbolTable.h4
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/TimeoutChecker.cpp25
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/TimeoutChecker.h1
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/Tracing.d40
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/TypeInfo.h72
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/UString.cpp86
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/runtime/UString.h9
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wrec/WRECGenerator.cpp12
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wrec/WRECGenerator.h28
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wscript103
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/Assertions.cpp4
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/Assertions.h36
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/ByteArray.h13
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/CrossThreadRefCounted.h14
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/CurrentTime.cpp69
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/DateMath.cpp16
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/DisallowCType.h32
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/FastAllocBase.h12
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/FastMalloc.cpp258
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/FastMalloc.h89
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/Forward.h5
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/HashCountedSet.h38
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/HashSet.h18
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/ListRefPtr.h23
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/MainThread.cpp2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/MathExtras.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/MessageQueue.h17
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/Noncopyable.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/PassRefPtr.h115
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h274
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/PossiblyNull.h59
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/PtrAndFlags.h23
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/RandomNumber.cpp17
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/RandomNumberSeed.h1
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/RefPtr.h53
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/RefPtrHashMap.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/SegmentedVector.h3
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/StdLibExtras.h7
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/StringExtras.h20
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/TCSpinLock.h7
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/TCSystemAlloc.cpp64
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/TCSystemAlloc.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/ThreadSpecific.h20
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/Threading.cpp2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/Threading.h21
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/ThreadingPthreads.cpp9
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/TypeTraits.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/Vector.h28
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/VectorTraits.h8
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/unicode/Unicode.h7
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/unicode/qt4/UnicodeQt4.h2
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/unicode/wince/UnicodeWince.cpp175
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/wtf/unicode/wince/UnicodeWince.h216
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/yarr/RegexInterpreter.cpp234
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/yarr/RegexInterpreter.h4
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/yarr/RegexJIT.cpp111
-rw-r--r--src/3rdparty/webkit/JavaScriptCore/yarr/RegexJIT.h9
-rw-r--r--src/3rdparty/webkit/VERSION4
-rw-r--r--src/3rdparty/webkit/WebCore/ChangeLog40747
-rw-r--r--src/3rdparty/webkit/WebCore/ChangeLog-2009-06-164
-rw-r--r--src/3rdparty/webkit/WebCore/DerivedSources.cpp17
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/parser/Parser.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/CollectorHeapIterator.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/ExceptionHelpers.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSAPIValueWrapper.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/JSCell.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/runtime/StructureChain.h5
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/DateInstanceCache.h4
-rw-r--r--src/3rdparty/webkit/WebCore/ForwardingHeaders/wtf/PossiblyNull.h4
-rw-r--r--src/3rdparty/webkit/WebCore/LICENSE-APPLE33
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.3DRendering.exp1
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.LP64.exp15
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.SVG.Filters.exp1
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.Video.exp14
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.gypi493
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.order9
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.pro802
-rw-r--r--src/3rdparty/webkit/WebCore/WebCore.qrc3
-rw-r--r--src/3rdparty/webkit/WebCore/WebCorePrefix.h14
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AXObjectCache.cpp148
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AXObjectCache.h55
-rwxr-xr-xsrc/3rdparty/webkit/WebCore/accessibility/AccessibilityAllInOne.cpp44
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityList.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityListBox.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityListBoxOption.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityListBoxOption.h1
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityMediaControls.cpp323
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityMediaControls.h117
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityObject.cpp112
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityObject.h87
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityRenderObject.cpp333
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityRenderObject.h20
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilitySlider.cpp162
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilitySlider.h92
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityTable.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableCell.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableColumn.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/AccessibilityTableRow.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/accessibility/qt/AccessibilityObjectQt.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/ScriptControllerBase.cpp88
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/DOMObjectWithSVGContext.h2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSAbstractWorkerCustom.cpp36
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSAttrCustom.cpp17
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSAudioConstructor.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSBindingsAllInOne.cpp150
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCSSRuleListCustom.cpp47
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp19
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCallbackData.cpp82
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCallbackData.h73
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasArrayBufferConstructor.cpp70
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasArrayBufferConstructor.h97
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasArrayCustom.cpp67
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasByteArrayConstructor.cpp67
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasByteArrayConstructor.h46
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasByteArrayCustom.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasFloatArrayConstructor.cpp67
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasFloatArrayConstructor.h46
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasFloatArrayCustom.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasIntArrayConstructor.cpp67
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasIntArrayConstructor.h46
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasIntArrayCustom.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasNumberArrayCustom.cpp46
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp32
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasRenderingContext3DCustom.cpp443
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasRenderingContextCustom.cpp53
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasShortArrayConstructor.cpp68
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasShortArrayConstructor.h46
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasShortArrayCustom.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasUnsignedByteArrayConstructor.cpp67
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasUnsignedByteArrayConstructor.h46
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasUnsignedByteArrayCustom.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasUnsignedIntArrayConstructor.cpp67
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasUnsignedIntArrayConstructor.h46
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasUnsignedIntArrayCustom.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasUnsignedShortArrayConstructor.cpp67
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasUnsignedShortArrayConstructor.h46
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCanvasUnsignedShortArrayCustom.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionCallback.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionCallback.h23
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionErrorCallback.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionErrorCallback.h23
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementCallback.cpp53
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementCallback.h21
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.cpp66
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.h25
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionCallback.cpp75
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionCallback.h15
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.cpp55
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomSQLTransactionErrorCallback.h21
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomVoidCallback.cpp66
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomVoidCallback.h38
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomXPathNSResolver.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSCustomXPathNSResolver.h8
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMApplicationCacheCustom.cpp42
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.cpp446
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMBinding.h157
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMGlobalObject.cpp79
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMGlobalObject.h43
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowBase.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowBase.h16
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.cpp375
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.cpp41
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.h15
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDatabaseCustom.cpp46
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDedicatedWorkerContextCustom.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDesktopNotificationsCustom.cpp87
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSDocumentCustom.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSElementCustom.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSEventCustom.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSEventListener.cpp93
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSEventListener.h27
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSEventSourceConstructor.cpp91
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSEventSourceConstructor.h55
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSEventSourceCustom.cpp68
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSEventTarget.cpp65
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSExceptionBase.cpp64
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSExceptionBase.h43
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSGeolocationCustom.cpp164
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLAllCollection.cpp35
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLAllCollection.h56
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLAllCollectionCustom.cpp135
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLAppletElementCustom.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLCollectionCustom.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLDocumentCustom.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLEmbedElementCustom.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLFormElementCustom.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLFrameElementCustom.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLFrameSetElementCustom.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLIFrameElementCustom.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLInputElementCustom.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHTMLObjectElementCustom.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSHistoryCustom.cpp51
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSImageConstructor.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSInspectedObjectWrapper.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSInspectedObjectWrapper.h2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSInspectorBackendCustom.cpp135
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSInspectorCallbackWrapper.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSInspectorCallbackWrapper.h2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSLazyEventListener.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSLazyEventListener.h11
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSLocationCustom.cpp86
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSMessageChannelConstructor.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSMessageChannelCustom.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSMessageEventCustom.cpp79
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSMessagePortCustom.cpp85
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSMessagePortCustom.h65
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSNamedNodeMapCustom.cpp19
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSNamedNodesCollection.cpp92
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSNamedNodesCollection.h66
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSNavigatorCustom.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSNodeCustom.cpp51
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSNodeFilterCondition.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSNodeFilterCondition.h4
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSNodeFilterCustom.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSNodeIteratorCustom.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSOptionConstructor.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSPluginElementFunctions.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSPluginElementFunctions.h1
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSQuarantinedObjectWrapper.cpp79
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSQuarantinedObjectWrapper.h15
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSSQLTransactionCustom.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSSVGElementInstanceCustom.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSSharedWorkerConstructor.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSSharedWorkerCustom.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSStorageCustom.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSStyleSheetCustom.cpp21
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSStyleSheetListCustom.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSTreeWalkerCustom.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSWebSocketConstructor.cpp93
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSWebSocketConstructor.h50
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSWebSocketCustom.cpp85
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSWorkerConstructor.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSWorkerContextBase.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSWorkerContextBase.h7
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSWorkerContextCustom.cpp57
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSWorkerCustom.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSXMLHttpRequestConstructor.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSXMLHttpRequestUploadCustom.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/JSXSLTProcessorCustom.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScheduledAction.cpp15
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScheduledAction.h10
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptArray.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptArray.h16
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptCachedFrameData.cpp15
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptCallFrame.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptController.cpp209
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptController.h50
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptControllerHaiku.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptControllerMac.mm2
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptEventListener.cpp57
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptEventListener.h3
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptFunctionCall.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptObject.cpp59
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptObject.h22
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptObjectQuarantine.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptObjectQuarantine.h3
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptSourceCode.h8
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptState.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptState.h1
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptValue.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/ScriptValue.h1
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/SerializedScriptValue.cpp839
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/SerializedScriptValue.h199
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/WorkerScriptController.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/js/WorkerScriptController.h3
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/scripts/CodeGenerator.pm282
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/scripts/CodeGeneratorCOM.pm19
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/scripts/CodeGeneratorJS.pm397
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/scripts/CodeGeneratorObjC.pm74
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/scripts/CodeGeneratorV8.pm624
-rw-r--r--src/3rdparty/webkit/WebCore/bindings/scripts/IDLParser.pm6
-rwxr-xr-xsrc/3rdparty/webkit/WebCore/bindings/scripts/generate-bindings.pl6
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/IdentifierRep.h3
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/NP_jsobject.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/c/c_instance.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/jni/jni_jsobject.mm12
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/npapi.h31
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/qt/qt_class.h2
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.cpp70
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.h5
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.h4
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/runtime.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/runtime.h13
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/runtime_array.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/runtime_array.h4
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/runtime_method.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/runtime_method.h4
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/runtime_object.cpp116
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/runtime_object.h21
-rw-r--r--src/3rdparty/webkit/WebCore/bridge/runtime_root.h2
-rw-r--r--src/3rdparty/webkit/WebCore/config.h48
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSCanvasValue.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSComputedStyleDeclaration.cpp189
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSComputedStyleDeclaration.h4
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSCursorImageValue.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSGrammar.y8
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSImageGeneratorValue.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSImageGeneratorValue.h5
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSImageValue.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSImportRule.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSMutableStyleDeclaration.cpp95
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSParser.cpp333
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSParser.h5
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSParserValues.h4
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSPrimitiveValue.cpp109
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSPrimitiveValue.h2
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSPrimitiveValueMappings.h155
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSProperty.h2
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSPropertyLonghand.cpp21
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSPropertyNames.in26
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSRuleList.idl3
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSSelector.cpp31
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSSelector.h8
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSSelectorList.cpp55
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSSelectorList.h46
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSStyleDeclaration.idl3
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSStyleSelector.cpp346
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSStyleSelector.h25
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSStyleSheet.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSStyleSheet.h4
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSValueKeywords.in27
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSValueList.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/css/CSSValueList.h1
-rw-r--r--src/3rdparty/webkit/WebCore/css/Media.cpp74
-rw-r--r--src/3rdparty/webkit/WebCore/css/Media.h54
-rw-r--r--src/3rdparty/webkit/WebCore/css/Media.idl33
-rw-r--r--src/3rdparty/webkit/WebCore/css/SVGCSSComputedStyleDeclaration.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/css/SVGCSSParser.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/css/SVGCSSPropertyNames.in4
-rw-r--r--src/3rdparty/webkit/WebCore/css/SVGCSSStyleSelector.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/css/SVGCSSValueKeywords.in9
-rw-r--r--src/3rdparty/webkit/WebCore/css/StyleBase.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/css/StyleSheetList.idl3
-rw-r--r--src/3rdparty/webkit/WebCore/css/WCSSPropertyNames.in4
-rw-r--r--src/3rdparty/webkit/WebCore/css/WCSSValueKeywords.in1
-rw-r--r--src/3rdparty/webkit/WebCore/css/html.css15
-rw-r--r--src/3rdparty/webkit/WebCore/css/maketokenizer25
-rw-r--r--src/3rdparty/webkit/WebCore/css/makevalues.pl2
-rw-r--r--src/3rdparty/webkit/WebCore/css/mathml.css170
-rw-r--r--src/3rdparty/webkit/WebCore/css/mediaControls.css8
-rw-r--r--src/3rdparty/webkit/WebCore/css/mediaControlsChromium.css73
-rw-r--r--src/3rdparty/webkit/WebCore/css/mediaControlsQt.css138
-rw-r--r--src/3rdparty/webkit/WebCore/css/mediaControlsQuickTime.css (renamed from src/3rdparty/webkit/WebCore/css/mediaControlsQT.css)0
-rw-r--r--src/3rdparty/webkit/WebCore/css/qt/mediaControls-extras.css101
-rw-r--r--src/3rdparty/webkit/WebCore/css/wml.css7
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ActiveDOMObject.h6
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Attr.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Attr.h41
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Attr.idl3
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Attribute.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/dom/BeforeLoadEvent.h67
-rw-r--r--src/3rdparty/webkit/WebCore/dom/BeforeLoadEvent.idl39
-rw-r--r--src/3rdparty/webkit/WebCore/dom/CDATASection.cpp17
-rw-r--r--src/3rdparty/webkit/WebCore/dom/CDATASection.h12
-rw-r--r--src/3rdparty/webkit/WebCore/dom/CharacterData.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/dom/CharacterData.h35
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Clipboard.h2
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Comment.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Comment.h14
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ContainerNode.cpp78
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ContainerNode.h11
-rw-r--r--src/3rdparty/webkit/WebCore/dom/DOMImplementation.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/dom/DocPtr.h114
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Document.cpp468
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Document.h356
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Document.idl19
-rw-r--r--src/3rdparty/webkit/WebCore/dom/DocumentFragment.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/dom/DocumentFragment.h7
-rw-r--r--src/3rdparty/webkit/WebCore/dom/DocumentType.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/dom/DocumentType.h4
-rw-r--r--src/3rdparty/webkit/WebCore/dom/EditingText.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/dom/EditingText.h13
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Element.cpp126
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Element.h112
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Element.idl7
-rw-r--r--src/3rdparty/webkit/WebCore/dom/EntityReference.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/dom/EntityReference.h4
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Event.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Event.h8
-rw-r--r--src/3rdparty/webkit/WebCore/dom/EventListener.h31
-rw-r--r--src/3rdparty/webkit/WebCore/dom/EventListener.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/dom/EventNames.h10
-rw-r--r--src/3rdparty/webkit/WebCore/dom/EventTarget.cpp223
-rw-r--r--src/3rdparty/webkit/WebCore/dom/EventTarget.h150
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ExceptionBase.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ExceptionBase.h2
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ExceptionCode.cpp60
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ExceptionCode.h1
-rw-r--r--src/3rdparty/webkit/WebCore/dom/HTMLAllCollection.idl40
-rw-r--r--src/3rdparty/webkit/WebCore/dom/InputElement.cpp115
-rw-r--r--src/3rdparty/webkit/WebCore/dom/InputElement.h24
-rw-r--r--src/3rdparty/webkit/WebCore/dom/MessageEvent.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/dom/MessageEvent.h29
-rw-r--r--src/3rdparty/webkit/WebCore/dom/MessageEvent.idl13
-rw-r--r--src/3rdparty/webkit/WebCore/dom/MessagePort.cpp142
-rw-r--r--src/3rdparty/webkit/WebCore/dom/MessagePort.h45
-rw-r--r--src/3rdparty/webkit/WebCore/dom/MessagePort.idl3
-rw-r--r--src/3rdparty/webkit/WebCore/dom/MessagePortChannel.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/dom/MessagePortChannel.h19
-rw-r--r--src/3rdparty/webkit/WebCore/dom/MouseRelatedEvent.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/dom/MutationEvent.h7
-rw-r--r--src/3rdparty/webkit/WebCore/dom/NamedAttrMap.cpp21
-rw-r--r--src/3rdparty/webkit/WebCore/dom/NamedAttrMap.h4
-rw-r--r--src/3rdparty/webkit/WebCore/dom/NamedNodeMap.idl3
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Node.cpp835
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Node.h201
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Node.idl1
-rw-r--r--src/3rdparty/webkit/WebCore/dom/NodeFilter.h4
-rw-r--r--src/3rdparty/webkit/WebCore/dom/NodeFilterCondition.h8
-rw-r--r--src/3rdparty/webkit/WebCore/dom/NodeRareData.h12
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Notation.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Notation.h17
-rw-r--r--src/3rdparty/webkit/WebCore/dom/OptionElement.cpp43
-rw-r--r--src/3rdparty/webkit/WebCore/dom/OptionElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/dom/PageTransitionEvent.cpp61
-rw-r--r--src/3rdparty/webkit/WebCore/dom/PageTransitionEvent.h64
-rw-r--r--src/3rdparty/webkit/WebCore/dom/PageTransitionEvent.idl37
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Position.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Position.h54
-rw-r--r--src/3rdparty/webkit/WebCore/dom/PositionCreationFunctions.h0
-rw-r--r--src/3rdparty/webkit/WebCore/dom/PositionIterator.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ProcessingInstruction.cpp47
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ProcessingInstruction.h39
-rw-r--r--src/3rdparty/webkit/WebCore/dom/QualifiedName.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/dom/QualifiedName.h10
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Range.cpp115
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Range.h17
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Range.idl10
-rw-r--r--src/3rdparty/webkit/WebCore/dom/RegisteredEventListener.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/dom/RegisteredEventListener.h45
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ScriptElement.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ScriptExecutionContext.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/dom/ScriptExecutionContext.h6
-rw-r--r--src/3rdparty/webkit/WebCore/dom/SelectElement.cpp76
-rw-r--r--src/3rdparty/webkit/WebCore/dom/StyledElement.cpp41
-rw-r--r--src/3rdparty/webkit/WebCore/dom/StyledElement.h55
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Text.cpp87
-rw-r--r--src/3rdparty/webkit/WebCore/dom/Text.h27
-rw-r--r--src/3rdparty/webkit/WebCore/dom/TransformSource.h51
-rw-r--r--src/3rdparty/webkit/WebCore/dom/TransformSourceLibxslt.cpp43
-rw-r--r--src/3rdparty/webkit/WebCore/dom/TransformSourceQt.cpp34
-rw-r--r--src/3rdparty/webkit/WebCore/dom/XMLTokenizer.cpp57
-rw-r--r--src/3rdparty/webkit/WebCore/dom/XMLTokenizer.h7
-rw-r--r--src/3rdparty/webkit/WebCore/dom/XMLTokenizerLibxml2.cpp43
-rw-r--r--src/3rdparty/webkit/WebCore/dom/XMLTokenizerQt.cpp85
-rwxr-xr-xsrc/3rdparty/webkit/WebCore/dom/make_names.pl377
-rw-r--r--src/3rdparty/webkit/WebCore/editing/AppendNodeCommand.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/editing/ApplyStyleCommand.cpp506
-rw-r--r--src/3rdparty/webkit/WebCore/editing/ApplyStyleCommand.h11
-rw-r--r--src/3rdparty/webkit/WebCore/editing/BreakBlockquoteCommand.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/editing/CompositeEditCommand.cpp239
-rw-r--r--src/3rdparty/webkit/WebCore/editing/CompositeEditCommand.h3
-rw-r--r--src/3rdparty/webkit/WebCore/editing/CreateLinkCommand.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/editing/DeleteButtonController.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/editing/DeleteSelectionCommand.cpp44
-rw-r--r--src/3rdparty/webkit/WebCore/editing/EditCommand.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/editing/EditCommand.h1
-rw-r--r--src/3rdparty/webkit/WebCore/editing/Editor.cpp79
-rw-r--r--src/3rdparty/webkit/WebCore/editing/EditorCommand.cpp83
-rw-r--r--src/3rdparty/webkit/WebCore/editing/IndentOutdentCommand.cpp125
-rw-r--r--src/3rdparty/webkit/WebCore/editing/IndentOutdentCommand.h7
-rw-r--r--src/3rdparty/webkit/WebCore/editing/InsertLineBreakCommand.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/editing/InsertListCommand.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/editing/InsertNodeBeforeCommand.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/editing/InsertParagraphSeparatorCommand.cpp72
-rw-r--r--src/3rdparty/webkit/WebCore/editing/InsertParagraphSeparatorCommand.h2
-rw-r--r--src/3rdparty/webkit/WebCore/editing/InsertTextCommand.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/editing/RemoveFormatCommand.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/editing/ReplaceNodeWithSpanCommand.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/editing/ReplaceSelectionCommand.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/editing/SelectionController.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/editing/SplitTextNodeCommand.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/editing/TextIterator.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/editing/UnlinkCommand.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/editing/VisibleSelection.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/editing/htmlediting.cpp102
-rw-r--r--src/3rdparty/webkit/WebCore/editing/htmlediting.h219
-rw-r--r--src/3rdparty/webkit/WebCore/editing/markup.cpp33
-rw-r--r--src/3rdparty/webkit/WebCore/editing/visible_units.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/generated/CSSGrammar.cpp1054
-rw-r--r--src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp977
-rw-r--r--src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.h533
-rw-r--r--src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c1355
-rw-r--r--src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.h711
-rw-r--r--src/3rdparty/webkit/WebCore/generated/ColorData.c4
-rw-r--r--src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/generated/Grammar.cpp1138
-rw-r--r--src/3rdparty/webkit/WebCore/generated/Grammar.h4
-rw-r--r--src/3rdparty/webkit/WebCore/generated/HTMLElementFactory.cpp324
-rw-r--r--src/3rdparty/webkit/WebCore/generated/HTMLElementFactory.h8
-rw-r--r--src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c3
-rw-r--r--src/3rdparty/webkit/WebCore/generated/HTMLNames.cpp64
-rw-r--r--src/3rdparty/webkit/WebCore/generated/HTMLNames.h21
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSAbstractWorker.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSAbstractWorker.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSAttr.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSAttr.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSBarInfo.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSBarInfo.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSBeforeLoadEvent.cpp188
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSBeforeLoadEvent.h78
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCDATASection.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCDATASection.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSCharsetRule.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSCharsetRule.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSFontFaceRule.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSFontFaceRule.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSImportRule.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSImportRule.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSMediaRule.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSMediaRule.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSPageRule.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSPageRule.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSPrimitiveValue.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSPrimitiveValue.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSRule.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSRule.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSRuleList.cpp48
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSRuleList.h18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSStyleDeclaration.cpp68
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSStyleDeclaration.h18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSStyleRule.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSStyleRule.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSStyleSheet.cpp31
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSStyleSheet.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSValue.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSValue.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSValueList.cpp44
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSValueList.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSVariablesDeclaration.cpp54
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSVariablesDeclaration.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSVariablesRule.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCSSVariablesRule.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasArray.cpp155
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasArray.h91
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasArrayBuffer.cpp120
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasArrayBuffer.h85
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasByteArray.cpp137
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasByteArray.h85
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasFloatArray.cpp137
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasFloatArray.h85
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasGradient.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasGradient.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasIntArray.cpp137
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasIntArray.h85
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasPattern.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasPattern.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasRenderingContext.cpp170
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasRenderingContext.h83
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasRenderingContext2D.cpp140
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasRenderingContext2D.h31
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasRenderingContext3D.cpp4528
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasRenderingContext3D.h555
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasShortArray.cpp137
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasShortArray.h85
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasUnsignedByteArray.cpp137
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasUnsignedByteArray.h85
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasUnsignedIntArray.cpp137
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasUnsignedIntArray.h85
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasUnsignedShortArray.cpp137
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCanvasUnsignedShortArray.h85
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCharacterData.cpp33
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCharacterData.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSClientRect.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSClientRect.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSClientRectList.cpp48
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSClientRectList.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSClipboard.cpp35
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSClipboard.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSComment.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSComment.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSConsole.cpp48
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSConsole.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCoordinates.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCoordinates.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCounter.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSCounter.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMApplicationCache.cpp66
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMApplicationCache.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMCoreException.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMCoreException.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMImplementation.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMImplementation.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMParser.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMParser.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMSelection.cpp46
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMSelection.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMWindow.cpp580
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDOMWindow.h75
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDataGridColumn.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDataGridColumn.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDataGridColumnList.cpp62
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDataGridColumnList.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDatabase.cpp36
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDatabase.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDedicatedWorkerContext.cpp34
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDedicatedWorkerContext.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDocument.cpp306
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDocument.h25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDocumentFragment.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDocumentFragment.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDocumentType.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSDocumentType.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSElement.cpp270
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSElement.h24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEntity.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEntity.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEntityReference.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEntityReference.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSErrorEvent.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSErrorEvent.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEvent.cpp33
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEvent.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEventException.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEventException.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEventSource.cpp308
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSEventSource.h112
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSFile.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSFile.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSFileList.cpp48
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSFileList.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSGeolocation.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSGeolocation.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSGeoposition.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSGeoposition.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLAllCollection.cpp292
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLAllCollection.h104
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLAnchorElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLAnchorElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLAppletElement.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLAppletElement.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLAreaElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLAreaElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLAudioElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLAudioElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBRElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBRElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBaseElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBaseElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBaseFontElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBaseFontElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBlockquoteElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBlockquoteElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBodyElement.cpp73
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLBodyElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLButtonElement.cpp78
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLButtonElement.h18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLCanvasElement.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLCanvasElement.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLCollection.cpp82
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLCollection.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDListElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDListElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDataGridCellElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDataGridCellElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDataGridColElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDataGridColElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDataGridElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDataGridElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDataGridRowElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDataGridRowElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDataListElement.cpp165
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDataListElement.h77
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDirectoryElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDirectoryElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDivElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDivElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDocument.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLDocument.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLElement.cpp31
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLElementWrapperFactory.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLElementWrapperFactory.h8
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLEmbedElement.cpp58
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLEmbedElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFieldSetElement.cpp63
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFieldSetElement.h21
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFontElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFontElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFormElement.cpp91
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFormElement.h19
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFrameElement.cpp52
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFrameElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFrameSetElement.cpp77
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLFrameSetElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLHRElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLHRElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLHeadElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLHeadElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLHeadingElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLHeadingElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLHtmlElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLHtmlElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLIFrameElement.cpp64
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLIFrameElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLImageElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLImageElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLInputElement.cpp114
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLInputElement.h22
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLIsIndexElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLIsIndexElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLLIElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLLIElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLLabelElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLLabelElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLLegendElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLLegendElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLLinkElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLLinkElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMapElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMapElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMarqueeElement.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMarqueeElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMediaElement.cpp31
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMediaElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMenuElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMenuElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMetaElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLMetaElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLModElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLModElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLOListElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLOListElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLObjectElement.cpp97
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLObjectElement.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLOptGroupElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLOptGroupElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLOptionElement.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLOptionElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLOptionsCollection.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLOptionsCollection.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLParagraphElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLParagraphElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLParamElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLParamElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLPreElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLPreElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLQuoteElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLQuoteElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLScriptElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLScriptElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLSelectElement.cpp82
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLSelectElement.h18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLSourceElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLSourceElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLStyleElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLStyleElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableCaptionElement.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableCaptionElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableCellElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableCellElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableColElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableColElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableElement.cpp39
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableRowElement.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableRowElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableSectionElement.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTableSectionElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTextAreaElement.cpp103
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTextAreaElement.h21
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTitleElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLTitleElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLUListElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLUListElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLVideoElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHTMLVideoElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHistory.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSHistory.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSImageData.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSImageData.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSInspectorBackend.cpp575
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSInspectorBackend.h57
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSJavaScriptCallFrame.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSJavaScriptCallFrame.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSKeyboardEvent.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSKeyboardEvent.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSLocation.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSLocation.h21
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMedia.cpp200
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMedia.h88
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMediaError.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMediaError.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMediaList.cpp52
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMediaList.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMessageChannel.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMessageChannel.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMessageEvent.cpp51
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMessageEvent.h22
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMessagePort.cpp63
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMessagePort.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMimeType.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMimeType.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMimeTypeArray.cpp56
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMimeTypeArray.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMouseEvent.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMouseEvent.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMutationEvent.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSMutationEvent.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.cpp70
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNamedNodeMap.h18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNavigator.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNavigator.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNode.cpp60
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNode.h21
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNodeFilter.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNodeFilter.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNodeIterator.cpp33
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNodeIterator.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNodeList.cpp54
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNodeList.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNotation.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSNotation.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSOverflowEvent.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSOverflowEvent.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSPageTransitionEvent.cpp186
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSPageTransitionEvent.h78
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSPlugin.cpp56
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSPlugin.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSPluginArray.cpp58
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSPluginArray.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSPositionError.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSPositionError.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSProcessingInstruction.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSProcessingInstruction.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSProgressEvent.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSProgressEvent.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSRGBColor.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSRGBColor.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSRange.cpp125
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSRange.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSRangeException.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSRangeException.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSRect.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSRect.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSQLError.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSQLError.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSQLResultSet.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSQLResultSet.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSQLResultSetRowList.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSQLResultSetRowList.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSQLTransaction.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSQLTransaction.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAElement.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAltGlyphElement.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAltGlyphElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAngle.cpp31
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAngle.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimateColorElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimateColorElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimateElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimateElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimateTransformElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimateTransformElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedAngle.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedAngle.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedBoolean.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedBoolean.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedEnumeration.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedEnumeration.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedInteger.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedInteger.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedLength.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedLength.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedLengthList.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedLengthList.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedNumber.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedNumber.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedNumberList.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedNumberList.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedPreserveAspectRatio.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedPreserveAspectRatio.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedRect.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedRect.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedString.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedString.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedTransformList.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimatedTransformList.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimationElement.cpp56
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGAnimationElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGCircleElement.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGCircleElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGClipPathElement.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGClipPathElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGColor.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGColor.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGComponentTransferFunctionElement.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGComponentTransferFunctionElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGCursorElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGCursorElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGDefinitionSrcElement.cpp72
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGDefinitionSrcElement.h58
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGDefsElement.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGDefsElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGDescElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGDescElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGDocument.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGDocument.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGElementInstance.cpp182
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGElementInstance.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGElementInstanceList.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGElementInstanceList.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGElementWrapperFactory.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGElementWrapperFactory.h8
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGEllipseElement.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGEllipseElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGException.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGException.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEBlendElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEBlendElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEColorMatrixElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEColorMatrixElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEComponentTransferElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEComponentTransferElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFECompositeElement.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFECompositeElement.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEDiffuseLightingElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEDiffuseLightingElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEDisplacementMapElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEDisplacementMapElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEDistantLightElement.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEDistantLightElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFloodElement.cpp33
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFloodElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFuncAElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFuncAElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFuncBElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFuncBElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFuncGElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFuncGElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFuncRElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEFuncRElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEGaussianBlurElement.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEGaussianBlurElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEImageElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEImageElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEMergeElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEMergeElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEMergeNodeElement.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEMergeNodeElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEMorphologyElement.cpp336
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEMorphologyElement.h99
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEOffsetElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEOffsetElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEPointLightElement.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFEPointLightElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFESpecularLightingElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFESpecularLightingElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFESpotLightElement.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFESpotLightElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFETileElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFETileElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFETurbulenceElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFETurbulenceElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFilterElement.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFilterElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceFormatElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceFormatElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceNameElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceNameElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceSrcElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceSrcElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceUriElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGFontFaceUriElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGForeignObjectElement.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGForeignObjectElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGGElement.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGGElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGGlyphElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGGlyphElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGGradientElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGGradientElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGHKernElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGHKernElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGImageElement.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGImageElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGLength.cpp31
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGLength.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGLengthList.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGLengthList.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGLineElement.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGLineElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGLinearGradientElement.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGLinearGradientElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMarkerElement.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMarkerElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMaskElement.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMaskElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMatrix.cpp38
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMatrix.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMetadataElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMetadataElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMissingGlyphElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGMissingGlyphElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGNumber.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGNumber.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGNumberList.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGNumberList.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPaint.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPaint.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathElement.cpp68
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSeg.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSeg.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegArcAbs.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegArcAbs.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegArcRel.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegArcRel.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegClosePath.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegClosePath.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoCubicAbs.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoCubicAbs.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoCubicRel.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoCubicRel.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoCubicSmoothAbs.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoCubicSmoothAbs.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoCubicSmoothRel.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoCubicSmoothRel.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoQuadraticAbs.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoQuadraticAbs.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoQuadraticRel.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoQuadraticRel.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoQuadraticSmoothAbs.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoQuadraticSmoothAbs.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoQuadraticSmoothRel.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegCurvetoQuadraticSmoothRel.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoAbs.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoAbs.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoHorizontalAbs.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoHorizontalAbs.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoHorizontalRel.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoHorizontalRel.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoRel.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoRel.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoVerticalAbs.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoVerticalAbs.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoVerticalRel.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegLinetoVerticalRel.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegList.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegList.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegMovetoAbs.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegMovetoAbs.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegMovetoRel.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPathSegMovetoRel.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPatternElement.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPatternElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPoint.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPoint.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPointList.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPointList.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPolygonElement.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPolygonElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPolylineElement.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPolylineElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPreserveAspectRatio.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGPreserveAspectRatio.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGRadialGradientElement.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGRadialGradientElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGRect.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGRect.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGRectElement.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGRectElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGRenderingIntent.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGRenderingIntent.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGSVGElement.cpp72
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGSVGElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGScriptElement.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGScriptElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGSetElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGSetElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGStopElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGStopElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGStringList.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGStringList.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGStyleElement.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGStyleElement.h21
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGSwitchElement.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGSwitchElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGSymbolElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGSymbolElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTRefElement.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTRefElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTSpanElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTSpanElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTextContentElement.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTextContentElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTextElement.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTextElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTextPathElement.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTextPathElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTextPositioningElement.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTextPositioningElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTitleElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTitleElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTransform.cpp39
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTransform.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTransformList.cpp34
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGTransformList.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGUnitTypes.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGUnitTypes.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGUseElement.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGUseElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGViewElement.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGViewElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGZoomEvent.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSVGZoomEvent.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSScreen.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSScreen.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSharedWorker.cpp115
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSharedWorker.h84
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSharedWorkerContext.cpp142
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSSharedWorkerContext.h83
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSStorage.cpp55
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSStorage.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSStorageEvent.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSStorageEvent.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSStyleSheet.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSStyleSheet.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSStyleSheetList.cpp54
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSStyleSheetList.h18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSText.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSText.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSTextEvent.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSTextEvent.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSTextMetrics.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSTextMetrics.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSTimeRanges.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSTimeRanges.h18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSTreeWalker.cpp41
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSTreeWalker.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSUIEvent.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSUIEvent.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSValidityState.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSValidityState.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSVoidCallback.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSVoidCallback.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitAnimationEvent.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitAnimationEvent.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitCSSKeyframeRule.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitCSSKeyframeRule.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitCSSKeyframesRule.cpp48
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitCSSKeyframesRule.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitCSSMatrix.cpp32
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitCSSMatrix.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitCSSTransformValue.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitCSSTransformValue.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitPoint.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitPoint.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitTransitionEvent.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebKitTransitionEvent.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebSocket.cpp327
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWebSocket.h115
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWheelEvent.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWheelEvent.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWorker.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWorker.h17
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWorkerContext.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWorkerContext.h21
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWorkerLocation.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWorkerLocation.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWorkerNavigator.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSWorkerNavigator.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLHttpRequest.cpp62
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLHttpRequest.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLHttpRequestException.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLHttpRequestException.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLHttpRequestProgressEvent.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLHttpRequestProgressEvent.h15
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLHttpRequestUpload.cpp55
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLHttpRequestUpload.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLSerializer.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXMLSerializer.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathEvaluator.cpp33
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathEvaluator.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathException.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathException.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathExpression.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathExpression.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathNSResolver.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathNSResolver.h16
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathResult.cpp31
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXPathResult.h14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXSLTProcessor.cpp186
-rw-r--r--src/3rdparty/webkit/WebCore/generated/JSXSLTProcessor.h100
-rw-r--r--src/3rdparty/webkit/WebCore/generated/SVGElementFactory.cpp248
-rw-r--r--src/3rdparty/webkit/WebCore/generated/SVGElementFactory.h8
-rw-r--r--src/3rdparty/webkit/WebCore/generated/SVGNames.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/generated/SVGNames.h10
-rw-r--r--src/3rdparty/webkit/WebCore/generated/StringPrototype.lut.h7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/UserAgentStyleSheets.h7
-rw-r--r--src/3rdparty/webkit/WebCore/generated/UserAgentStyleSheetsData.cpp1284
-rw-r--r--src/3rdparty/webkit/WebCore/generated/WebKitVersion.h36
-rw-r--r--src/3rdparty/webkit/WebCore/generated/XLinkNames.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/generated/XLinkNames.h8
-rw-r--r--src/3rdparty/webkit/WebCore/generated/XMLNames.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/generated/XMLNames.h8
-rw-r--r--src/3rdparty/webkit/WebCore/generated/tokenizer.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/history/BackForwardList.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/history/CachedFrame.cpp153
-rw-r--r--src/3rdparty/webkit/WebCore/history/CachedFrame.h42
-rw-r--r--src/3rdparty/webkit/WebCore/history/CachedPage.cpp21
-rw-r--r--src/3rdparty/webkit/WebCore/history/CachedPage.h4
-rw-r--r--src/3rdparty/webkit/WebCore/history/HistoryItem.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/history/PageCache.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/history/qt/HistoryItemQt.cpp19
-rw-r--r--src/3rdparty/webkit/WebCore/html/CanvasPixelArray.h64
-rw-r--r--src/3rdparty/webkit/WebCore/html/CanvasPixelArray.idl39
-rw-r--r--src/3rdparty/webkit/WebCore/html/CanvasRenderingContext2D.cpp1566
-rw-r--r--src/3rdparty/webkit/WebCore/html/CanvasRenderingContext2D.h271
-rw-r--r--src/3rdparty/webkit/WebCore/html/CanvasRenderingContext2D.idl123
-rw-r--r--src/3rdparty/webkit/WebCore/html/CollectionType.h1
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLAllCollection.cpp47
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLAllCollection.h44
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLAllCollection.idl43
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLAnchorElement.cpp84
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLAnchorElement.h36
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLAppletElement.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLAppletElement.h7
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLAreaElement.cpp15
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLAreaElement.h10
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLAttributeNames.in11
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLBodyElement.cpp120
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLBodyElement.h39
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLBodyElement.idl12
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLButtonElement.idl3
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLCanvasElement.cpp79
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLCanvasElement.h43
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLCanvasElement.idl3
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLCollection.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLCollection.h3
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLCollection.idl3
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLDataListElement.cpp60
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLDataListElement.h55
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLDataListElement.idl38
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLDocument.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLDocument.h10
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLDocument.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLElement.cpp79
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLElement.h67
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLEmbedElement.cpp35
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLEmbedElement.h16
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLEmbedElement.idl12
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFieldSetElement.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFieldSetElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFieldSetElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFormControlElement.cpp195
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFormControlElement.h56
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFormElement.cpp46
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFormElement.h11
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFormElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFrameElement.cpp31
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFrameElement.h20
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFrameElement.idl14
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFrameElementBase.cpp104
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFrameElementBase.h54
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFrameOwnerElement.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFrameOwnerElement.h24
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFrameSetElement.cpp118
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFrameSetElement.h44
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLFrameSetElement.idl8
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLHtmlElement.cpp15
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLIFrameElement.cpp43
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLIFrameElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLIFrameElement.idl22
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLImageElement.cpp54
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLImageElement.h15
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLImageLoader.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLInputElement.cpp380
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLInputElement.h64
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLInputElement.idl18
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLIsIndexElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLKeygenElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLLIElement.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLLegendElement.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLLegendElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLLinkElement.cpp47
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLMediaElement.cpp363
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLMediaElement.h20
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLOListElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLObjectElement.cpp145
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLObjectElement.h73
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLObjectElement.idl29
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLOptGroupElement.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLOptGroupElement.h1
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLOptionElement.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLOptionElement.h1
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLOptionsCollection.idl7
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLParser.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLPlugInElement.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLPlugInElement.h43
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLPlugInImageElement.h9
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLScriptElement.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLSelectElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLSourceElement.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTableCellElement.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTableColElement.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTagNames.in153
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTextAreaElement.cpp133
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTextAreaElement.h25
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTextAreaElement.idl6
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLTokenizer.cpp64
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLVideoElement.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLVideoElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLViewSourceDocument.cpp33
-rw-r--r--src/3rdparty/webkit/WebCore/html/HTMLViewSourceDocument.h23
-rw-r--r--src/3rdparty/webkit/WebCore/html/TimeRanges.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/html/ValidityState.cpp90
-rw-r--r--src/3rdparty/webkit/WebCore/html/ValidityState.h16
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasActiveInfo.h62
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasActiveInfo.idl36
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasArray.cpp52
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasArray.h75
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasArray.idl32
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasArrayBuffer.cpp57
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasArrayBuffer.h51
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasArrayBuffer.idl30
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasBuffer.cpp53
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasBuffer.h50
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasBuffer.idl29
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasByteArray.cpp77
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasByteArray.h90
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasByteArray.idl36
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasFloatArray.cpp78
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasFloatArray.h86
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasFloatArray.idl36
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasFramebuffer.cpp53
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasFramebuffer.h50
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasFramebuffer.idl29
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasGradient.cpp (renamed from src/3rdparty/webkit/WebCore/html/CanvasGradient.cpp)0
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasGradient.h (renamed from src/3rdparty/webkit/WebCore/html/CanvasGradient.h)0
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasGradient.idl (renamed from src/3rdparty/webkit/WebCore/html/CanvasGradient.idl)0
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasIntArray.cpp82
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasIntArray.h88
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasIntArray.idl36
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasNumberArray.cpp47
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasNumberArray.h55
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasNumberArray.idl34
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasObject.cpp69
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasObject.h65
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasPattern.cpp (renamed from src/3rdparty/webkit/WebCore/html/CanvasPattern.cpp)0
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasPattern.h (renamed from src/3rdparty/webkit/WebCore/html/CanvasPattern.h)0
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasPattern.idl (renamed from src/3rdparty/webkit/WebCore/html/CanvasPattern.idl)0
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasPixelArray.cpp (renamed from src/3rdparty/webkit/WebCore/html/CanvasPixelArray.cpp)0
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasPixelArray.h74
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasPixelArray.idl39
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasProgram.cpp53
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasProgram.h50
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasProgram.idl29
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderbuffer.cpp53
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderbuffer.h50
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderbuffer.idl29
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext.cpp48
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext.h56
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext.idl39
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.cpp1561
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.h270
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext2D.idl122
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext3D.cpp1441
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext3D.h327
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasRenderingContext3D.idl689
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasShader.cpp53
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasShader.h50
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasShader.idl29
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasShortArray.cpp82
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasShortArray.h86
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasShortArray.idl36
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasStyle.cpp (renamed from src/3rdparty/webkit/WebCore/html/CanvasStyle.cpp)0
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasStyle.h (renamed from src/3rdparty/webkit/WebCore/html/CanvasStyle.h)0
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasTexture.cpp54
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasTexture.h61
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasTexture.idl29
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasUnsignedByteArray.cpp78
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasUnsignedByteArray.h86
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasUnsignedByteArray.idl36
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasUnsignedIntArray.cpp83
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasUnsignedIntArray.h86
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasUnsignedIntArray.idl36
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasUnsignedShortArray.cpp85
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasUnsignedShortArray.h87
-rw-r--r--src/3rdparty/webkit/WebCore/html/canvas/CanvasUnsignedShortArray.idl36
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/ConsoleMessage.cpp21
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/ConsoleMessage.h8
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorBackend.cpp323
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorBackend.h56
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorBackend.idl53
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorClient.h2
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorController.cpp529
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorController.h94
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorDOMAgent.cpp614
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorDOMAgent.h147
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorDOMStorageResource.cpp71
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorDOMStorageResource.h18
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorDatabaseResource.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorDatabaseResource.h5
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorFrontend.cpp307
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorFrontend.h71
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorJSONObject.cpp95
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorJSONObject.h60
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorResource.cpp112
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorResource.h16
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorTimelineAgent.cpp204
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/InspectorTimelineAgent.h127
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/JavaScriptCallFrame.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/JavaScriptCallFrame.h8
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/JavaScriptDebugServer.cpp147
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/JavaScriptDebugServer.h24
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/JavaScriptProfileNode.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/TimelineRecordFactory.cpp116
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/TimelineRecordFactory.h63
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/AbstractTimelinePanel.js548
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/BottomUpProfileDataGridTree.js214
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Breakpoint.js21
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/BreakpointsSidebarPane.js4
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/CallStackSidebarPane.js11
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Callback.js56
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ChangesView.js80
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Color.js661
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Console.js983
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ConsoleView.js1024
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/CookieItemsView.js275
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/DOMAgent.js657
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/DOMStorage.js46
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/DOMStorageDataGrid.js124
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/DOMStorageItemsView.js103
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/DataGrid.js164
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Database.js51
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/DatabaseQueryView.js39
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/DatabaseTableView.js17
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/DatabasesPanel.js526
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Drawer.js202
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ElementsPanel.js520
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ElementsTreeOutline.js317
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/EventListenersSidebarPane.js218
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ImageView.js1
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/clearConsoleButtonGlyph.pngbin0 -> 396 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/clearConsoleButtons.pngbin5224 -> 0 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/consoleButtonGlyph.pngbin0 -> 183 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/consoleButtons.pngbin5197 -> 0 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/cookie.pngbin0 -> 2246 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/dockButtonGlyph.pngbin0 -> 164 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/dockButtons.pngbin1274 -> 0 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/domStorage.pngbin442 -> 0 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/enableButtons.pngbin5543 -> 0 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/enableOutlineButtonGlyph.pngbin0 -> 363 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/enableSolidButtonGlyph.pngbin0 -> 302 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/errorRedDot.pngbin0 -> 549 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/excludeButtonGlyph.pngbin0 -> 212 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/excludeButtons.pngbin4562 -> 0 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/focusButtonGlyph.pngbin0 -> 285 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/focusButtons.pngbin4919 -> 0 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/grayConnectorPoint.pngbin0 -> 236 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/largerResourcesButtonGlyph.pngbin0 -> 192 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/largerResourcesButtons.pngbin1596 -> 0 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/localStorage.pngbin0 -> 1081 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/nodeSearchButtonGlyph.pngbin0 -> 283 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/nodeSearchButtons.pngbin5708 -> 0 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/paneSettingsButtons.pngbin0 -> 1422 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/pauseOnExceptionButtonGlyph.pngbin0 -> 331 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/pauseOnExceptionButtons.pngbin2305 -> 0 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/percentButtonGlyph.pngbin0 -> 357 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/percentButtons.pngbin5771 -> 0 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/recordButtonGlyph.pngbin0 -> 213 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/recordButtons.pngbin5716 -> 0 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/recordToggledButtonGlyph.pngbin0 -> 510 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/reloadButtonGlyph.pngbin0 -> 267 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/reloadButtons.pngbin4544 -> 0 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/sessionStorage.pngbin0 -> 1097 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/storageIcon.png (renamed from src/3rdparty/webkit/WebCore/inspector/front-end/Images/databasesIcon.png)bin7148 -> 7148 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/successGreenDot.pngbin0 -> 585 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/timelineBarBlue.pngbin0 -> 419 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/timelineBarGray.pngbin0 -> 378 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/timelineBarGreen.pngbin0 -> 414 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/timelineBarOrange.pngbin0 -> 394 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/timelineBarPurple.pngbin0 -> 420 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/timelineBarRed.pngbin0 -> 408 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/timelineBarYellow.pngbin0 -> 400 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/timelineCheckmarks.pngbin0 -> 3528 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/timelineDots.pngbin0 -> 2436 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/timelineIcon.pngbin0 -> 4419 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/undockButtonGlyph.pngbin0 -> 179 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/warningOrangeDot.pngbin0 -> 580 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Images/whiteConnectorPoint.pngbin0 -> 225 bytes-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/InjectedScript.js1243
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/InjectedScriptAccess.js83
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/InspectorControllerStub.js296
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/MetricsSidebarPane.js38
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Object.js6
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ObjectPropertiesSection.js274
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ObjectProxy.js52
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Panel.js99
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Popup.js168
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ProfileDataGridTree.js41
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ProfileView.js165
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ProfilesPanel.js296
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/PropertiesSidebarPane.js24
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/Resource.js68
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ResourceCategory.js11
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ResourceView.js187
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ResourcesPanel.js996
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ScopeChainSidebarPane.js56
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/ScriptsPanel.js78
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/SourceFrame.js922
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/SourceView.js9
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/StatusBarButton.js118
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/StoragePanel.js553
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/StylesSidebarPane.js693
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/SummaryBar.js363
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/TestController.js75
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/TextPrompt.js3
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/TimelineAgent.js63
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/TimelinePanel.js362
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/TopDownProfileDataGridTree.js9
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/WatchExpressionsSidebarPane.js285
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/WebKit.qrc73
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/inspector.css810
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/inspector.html43
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/inspector.js474
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/inspectorSyntaxHighlight.css71
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/treeoutline.js29
-rw-r--r--src/3rdparty/webkit/WebCore/inspector/front-end/utilities.js516
-rw-r--r--src/3rdparty/webkit/WebCore/loader/Cache.cpp15
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CachedFont.cpp15
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CachedResource.cpp31
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CachedResource.h9
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CachedResourceClient.h4
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CachedResourceHandle.h16
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CrossOriginPreflightResultCache.cpp17
-rw-r--r--src/3rdparty/webkit/WebCore/loader/CrossOriginPreflightResultCache.h1
-rw-r--r--src/3rdparty/webkit/WebCore/loader/DocLoader.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/loader/DocumentLoader.cpp154
-rw-r--r--src/3rdparty/webkit/WebCore/loader/DocumentLoader.h36
-rw-r--r--src/3rdparty/webkit/WebCore/loader/DocumentThreadableLoader.cpp245
-rw-r--r--src/3rdparty/webkit/WebCore/loader/DocumentThreadableLoader.h28
-rw-r--r--src/3rdparty/webkit/WebCore/loader/EmptyClients.h26
-rw-r--r--src/3rdparty/webkit/WebCore/loader/FTPDirectoryDocument.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/loader/FTPDirectoryDocument.h4
-rw-r--r--src/3rdparty/webkit/WebCore/loader/FTPDirectoryParser.cpp144
-rw-r--r--src/3rdparty/webkit/WebCore/loader/FrameLoader.cpp2127
-rw-r--r--src/3rdparty/webkit/WebCore/loader/FrameLoader.h806
-rw-r--r--src/3rdparty/webkit/WebCore/loader/FrameLoaderClient.h19
-rw-r--r--src/3rdparty/webkit/WebCore/loader/FrameLoaderTypes.h18
-rw-r--r--src/3rdparty/webkit/WebCore/loader/HistoryController.cpp627
-rw-r--r--src/3rdparty/webkit/WebCore/loader/HistoryController.h95
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ImageDocument.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ImageDocument.h4
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ImageLoader.cpp112
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ImageLoader.h9
-rw-r--r--src/3rdparty/webkit/WebCore/loader/MainResourceLoader.cpp96
-rw-r--r--src/3rdparty/webkit/WebCore/loader/MainResourceLoader.h12
-rw-r--r--src/3rdparty/webkit/WebCore/loader/MediaDocument.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/loader/MediaDocument.h13
-rw-r--r--src/3rdparty/webkit/WebCore/loader/PlaceholderDocument.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/loader/PlaceholderDocument.h2
-rw-r--r--src/3rdparty/webkit/WebCore/loader/PluginDocument.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/loader/PluginDocument.h4
-rw-r--r--src/3rdparty/webkit/WebCore/loader/PolicyCallback.cpp133
-rw-r--r--src/3rdparty/webkit/WebCore/loader/PolicyCallback.h80
-rw-r--r--src/3rdparty/webkit/WebCore/loader/PolicyChecker.cpp197
-rw-r--r--src/3rdparty/webkit/WebCore/loader/PolicyChecker.h97
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ProgressTracker.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/loader/RedirectScheduler.cpp381
-rw-r--r--src/3rdparty/webkit/WebCore/loader/RedirectScheduler.h81
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ResourceLoadNotifier.cpp177
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ResourceLoadNotifier.h74
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ResourceLoader.cpp59
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ResourceLoader.h8
-rw-r--r--src/3rdparty/webkit/WebCore/loader/SubresourceLoader.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/loader/TextDocument.h4
-rw-r--r--src/3rdparty/webkit/WebCore/loader/TextResourceDecoder.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ThreadableLoader.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/loader/ThreadableLoader.h32
-rw-r--r--src/3rdparty/webkit/WebCore/loader/UserStyleSheetLoader.cpp62
-rw-r--r--src/3rdparty/webkit/WebCore/loader/UserStyleSheetLoader.h57
-rw-r--r--src/3rdparty/webkit/WebCore/loader/WorkerThreadableLoader.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/loader/WorkerThreadableLoader.h12
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ApplicationCache.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ApplicationCache.h3
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ApplicationCacheGroup.cpp145
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ApplicationCacheGroup.h12
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ApplicationCacheHost.cpp385
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ApplicationCacheHost.h152
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ApplicationCacheResource.h2
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ApplicationCacheStorage.cpp60
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ApplicationCacheStorage.h3
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/DOMApplicationCache.cpp203
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/DOMApplicationCache.h91
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/DOMApplicationCache.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ManifestParser.cpp21
-rw-r--r--src/3rdparty/webkit/WebCore/loader/appcache/ManifestParser.h1
-rw-r--r--src/3rdparty/webkit/WebCore/loader/archive/cf/LegacyWebArchive.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/loader/icon/IconDatabase.cpp30
-rw-r--r--src/3rdparty/webkit/WebCore/loader/icon/IconDatabaseNone.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/loader/loader.cpp12
-rwxr-xr-xsrc/3rdparty/webkit/WebCore/make-generated-sources.sh1
-rw-r--r--src/3rdparty/webkit/WebCore/mathml/MathMLElement.cpp52
-rw-r--r--src/3rdparty/webkit/WebCore/mathml/MathMLElement.h45
-rw-r--r--src/3rdparty/webkit/WebCore/mathml/MathMLInlineContainerElement.cpp54
-rw-r--r--src/3rdparty/webkit/WebCore/mathml/MathMLInlineContainerElement.h43
-rw-r--r--src/3rdparty/webkit/WebCore/mathml/MathMLMathElement.cpp46
-rw-r--r--src/3rdparty/webkit/WebCore/mathml/MathMLMathElement.h41
-rw-r--r--src/3rdparty/webkit/WebCore/mathml/mathtags.in21
-rw-r--r--src/3rdparty/webkit/WebCore/notifications/Notification.cpp112
-rw-r--r--src/3rdparty/webkit/WebCore/notifications/Notification.h106
-rw-r--r--src/3rdparty/webkit/WebCore/notifications/Notification.idl55
-rw-r--r--src/3rdparty/webkit/WebCore/notifications/NotificationCenter.cpp74
-rw-r--r--src/3rdparty/webkit/WebCore/notifications/NotificationCenter.h84
-rw-r--r--src/3rdparty/webkit/WebCore/notifications/NotificationCenter.idl43
-rw-r--r--src/3rdparty/webkit/WebCore/notifications/NotificationContents.h60
-rw-r--r--src/3rdparty/webkit/WebCore/notifications/NotificationPresenter.h80
-rw-r--r--src/3rdparty/webkit/WebCore/page/AbstractView.idl1
-rw-r--r--src/3rdparty/webkit/WebCore/page/Chrome.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/page/Chrome.h10
-rw-r--r--src/3rdparty/webkit/WebCore/page/ChromeClient.h19
-rw-r--r--src/3rdparty/webkit/WebCore/page/Console.cpp71
-rw-r--r--src/3rdparty/webkit/WebCore/page/Console.h9
-rw-r--r--src/3rdparty/webkit/WebCore/page/Console.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/page/ContextMenuController.cpp407
-rw-r--r--src/3rdparty/webkit/WebCore/page/Coordinates.cpp38
-rw-r--r--src/3rdparty/webkit/WebCore/page/Coordinates.h2
-rw-r--r--src/3rdparty/webkit/WebCore/page/Coordinates.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMSelection.cpp42
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMTimer.cpp41
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMTimer.h4
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMWindow.cpp1069
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMWindow.h251
-rw-r--r--src/3rdparty/webkit/WebCore/page/DOMWindow.idl80
-rw-r--r--src/3rdparty/webkit/WebCore/page/DragController.cpp56
-rw-r--r--src/3rdparty/webkit/WebCore/page/EventHandler.cpp168
-rw-r--r--src/3rdparty/webkit/WebCore/page/EventHandler.h46
-rw-r--r--src/3rdparty/webkit/WebCore/page/EventSource.cpp314
-rw-r--r--src/3rdparty/webkit/WebCore/page/EventSource.h134
-rw-r--r--src/3rdparty/webkit/WebCore/page/EventSource.idl65
-rw-r--r--src/3rdparty/webkit/WebCore/page/FocusController.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/page/Frame.cpp111
-rw-r--r--src/3rdparty/webkit/WebCore/page/Frame.h37
-rw-r--r--src/3rdparty/webkit/WebCore/page/FrameTree.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/page/FrameView.cpp328
-rw-r--r--src/3rdparty/webkit/WebCore/page/FrameView.h39
-rw-r--r--src/3rdparty/webkit/WebCore/page/Geolocation.cpp319
-rw-r--r--src/3rdparty/webkit/WebCore/page/Geolocation.h50
-rw-r--r--src/3rdparty/webkit/WebCore/page/Geoposition.cpp36
-rw-r--r--src/3rdparty/webkit/WebCore/page/Geoposition.h2
-rw-r--r--src/3rdparty/webkit/WebCore/page/Geoposition.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/page/HaltablePlugin.h44
-rw-r--r--src/3rdparty/webkit/WebCore/page/History.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/page/Location.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/page/Navigator.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/page/Navigator.h5
-rw-r--r--src/3rdparty/webkit/WebCore/page/Navigator.idl4
-rw-r--r--src/3rdparty/webkit/WebCore/page/OriginAccessEntry.cpp81
-rw-r--r--src/3rdparty/webkit/WebCore/page/OriginAccessEntry.h61
-rw-r--r--src/3rdparty/webkit/WebCore/page/Page.cpp170
-rw-r--r--src/3rdparty/webkit/WebCore/page/Page.h54
-rw-r--r--src/3rdparty/webkit/WebCore/page/PageGroup.cpp149
-rw-r--r--src/3rdparty/webkit/WebCore/page/PageGroup.h28
-rw-r--r--src/3rdparty/webkit/WebCore/page/PageGroupLoadDeferrer.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/page/PluginHalter.cpp117
-rw-r--r--src/3rdparty/webkit/WebCore/page/PluginHalter.h60
-rw-r--r--src/3rdparty/webkit/WebCore/page/PluginHalterClient.h43
-rw-r--r--src/3rdparty/webkit/WebCore/page/PositionCallback.h2
-rw-r--r--src/3rdparty/webkit/WebCore/page/PositionCallback.idl34
-rw-r--r--src/3rdparty/webkit/WebCore/page/PositionError.h6
-rw-r--r--src/3rdparty/webkit/WebCore/page/PositionErrorCallback.idl34
-rw-r--r--src/3rdparty/webkit/WebCore/page/PositionOptions.h45
-rw-r--r--src/3rdparty/webkit/WebCore/page/PrintContext.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/page/SecurityOrigin.cpp158
-rw-r--r--src/3rdparty/webkit/WebCore/page/SecurityOrigin.h40
-rw-r--r--src/3rdparty/webkit/WebCore/page/Settings.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/page/Settings.h24
-rw-r--r--src/3rdparty/webkit/WebCore/page/UserContentURLPattern.cpp226
-rw-r--r--src/3rdparty/webkit/WebCore/page/UserContentURLPattern.h72
-rw-r--r--src/3rdparty/webkit/WebCore/page/UserScript.h69
-rw-r--r--src/3rdparty/webkit/WebCore/page/UserScriptTypes.h43
-rw-r--r--src/3rdparty/webkit/WebCore/page/UserStyleSheet.h66
-rw-r--r--src/3rdparty/webkit/WebCore/page/UserStyleSheetTypes.h41
-rw-r--r--src/3rdparty/webkit/WebCore/page/XSSAuditor.cpp114
-rw-r--r--src/3rdparty/webkit/WebCore/page/XSSAuditor.h35
-rw-r--r--src/3rdparty/webkit/WebCore/page/android/EventHandlerAndroid.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/page/animation/AnimationBase.cpp216
-rw-r--r--src/3rdparty/webkit/WebCore/page/animation/AnimationBase.h3
-rw-r--r--src/3rdparty/webkit/WebCore/page/animation/AnimationController.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/page/animation/AnimationControllerPrivate.h16
-rw-r--r--src/3rdparty/webkit/WebCore/page/animation/CompositeAnimation.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/page/animation/ImplicitAnimation.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/page/animation/KeyframeAnimation.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/page/qt/FrameQt.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/page/win/EventHandlerWin.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/page/win/FrameWin.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/page/win/PageWin.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ContextMenu.cpp23
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ContextMenuItem.h6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/Cookie.h82
-rw-r--r--src/3rdparty/webkit/WebCore/platform/CookieJar.h8
-rw-r--r--src/3rdparty/webkit/WebCore/platform/CrossThreadCopier.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/CrossThreadCopier.h4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/Cursor.h5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/DragData.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/DragData.h3
-rw-r--r--src/3rdparty/webkit/WebCore/platform/DragImage.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/DragImage.h4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/FileSystem.h68
-rw-r--r--src/3rdparty/webkit/WebCore/platform/GeolocationService.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/platform/GeolocationService.h5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/HostWindow.h7
-rw-r--r--src/3rdparty/webkit/WebCore/platform/KURL.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/platform/KURL.h26
-rw-r--r--src/3rdparty/webkit/WebCore/platform/KURLGoogle.cpp71
-rw-r--r--src/3rdparty/webkit/WebCore/platform/KURLHash.h2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/LocalizedStrings.h8
-rw-r--r--src/3rdparty/webkit/WebCore/platform/MIMETypeRegistry.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/Pasteboard.h10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/PlatformKeyboardEvent.h8
-rw-r--r--src/3rdparty/webkit/WebCore/platform/PlatformMenuDescription.h4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/PlatformMouseEvent.h10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/PlatformWheelEvent.h20
-rw-r--r--src/3rdparty/webkit/WebCore/platform/PopupMenu.h11
-rw-r--r--src/3rdparty/webkit/WebCore/platform/PopupMenuClient.h3
-rw-r--r--src/3rdparty/webkit/WebCore/platform/SSLKeyGenerator.h9
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ScrollView.cpp127
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ScrollView.h10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/Scrollbar.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/platform/StaticConstructors.h6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/SuddenTermination.h3
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ThemeTypes.h7
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ThreadTimers.cpp66
-rw-r--r--src/3rdparty/webkit/WebCore/platform/ThreadTimers.h4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/Timer.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/TreeShared.h15
-rw-r--r--src/3rdparty/webkit/WebCore/platform/Widget.h12
-rw-r--r--src/3rdparty/webkit/WebCore/platform/android/ClipboardAndroid.h44
-rw-r--r--src/3rdparty/webkit/WebCore/platform/android/CursorAndroid.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/platform/android/FileChooserAndroid.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/android/FileSystemAndroid.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/android/KeyEventAndroid.cpp288
-rw-r--r--src/3rdparty/webkit/WebCore/platform/android/ScreenAndroid.cpp32
-rw-r--r--src/3rdparty/webkit/WebCore/platform/android/TemporaryLinkStubs.cpp38
-rw-r--r--src/3rdparty/webkit/WebCore/platform/animation/Animation.h6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/BitmapImage.h22
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/Color.h9
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/FloatPoint.h14
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/FloatPoint3D.h10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/FloatRect.h14
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/FloatSize.h5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/FontCache.h11
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/FontDescription.h17
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/FontFastPath.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/FontSmoothingMode.h35
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GeneratedImage.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GlyphBuffer.h13
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GlyphPageTreeNode.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/Gradient.h12
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GraphicsContext.cpp51
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GraphicsContext.h76
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GraphicsContext3D.h346
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GraphicsLayer.cpp341
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GraphicsLayer.h326
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/GraphicsLayerClient.h16
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/ImageBuffer.cpp73
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/ImageBuffer.h32
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/ImageSource.cpp181
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/ImageSource.h36
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/IntPoint.h5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/IntRect.h13
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/IntSize.h15
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/MediaPlayer.cpp41
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/MediaPlayer.h31
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/MediaPlayerPrivate.h10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/Path.h8
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/Pattern.h6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/SimpleFontData.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/SimpleFontData.h21
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/TextRenderingMode.h35
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/FEBlend.cpp78
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/FEBlend.h2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/FEColorMatrix.cpp127
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/FEComponentTransfer.cpp92
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/FEComposite.cpp72
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/FEGaussianBlur.cpp140
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/FEGaussianBlur.h57
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/FilterEffect.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/FilterEffect.h19
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/SourceAlpha.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/filters/SourceAlpha.h2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/opentype/OpenTypeUtilities.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/opentype/OpenTypeUtilities.h5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ColorQt.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/FontCacheQt.cpp15
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/FontFallbackListQt.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsContextQt.cpp470
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/IconQt.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageBufferQt.cpp100
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.cpp382
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageDecoderQt.h54
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageQt.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/ImageSourceQt.cpp170
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/MediaPlayerPrivatePhonon.cpp34
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/MediaPlayerPrivatePhonon.h3
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/PathQt.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/SimpleFontDataQt.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/qt/StillImageQt.h2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/Matrix3DTransformOperation.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/MatrixTransformOperation.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/TransformOperations.h3
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/TransformationMatrix.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/platform/graphics/transforms/TransformationMatrix.h5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/image-decoders/ImageDecoder.cpp248
-rw-r--r--src/3rdparty/webkit/WebCore/platform/image-decoders/ImageDecoder.h78
-rw-r--r--src/3rdparty/webkit/WebCore/platform/image-decoders/cairo/ImageDecoderCairo.cpp83
-rw-r--r--src/3rdparty/webkit/WebCore/platform/image-decoders/qt/RGBA32BufferQt.cpp144
-rw-r--r--src/3rdparty/webkit/WebCore/platform/image-decoders/wx/ImageDecoderWx.cpp105
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/ClipboardMac.h2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/ClipboardMac.mm82
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/ContextMenuItemMac.mm6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/ContextMenuMac.mm6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/CookieJar.mm49
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/DragDataMac.mm4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/DragImageMac.mm5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/GeolocationServiceMac.h4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/GeolocationServiceMac.mm4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/LocalizedStringsMac.mm37
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/PasteboardMac.mm24
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/PopupMenuMac.mm5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/ScrollViewMac.mm22
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/ScrollbarThemeMac.mm2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/ThemeMac.mm26
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mac/WebCoreNSStringExtras.mm41
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mock/GeolocationServiceMock.cpp136
-rw-r--r--src/3rdparty/webkit/WebCore/platform/mock/GeolocationServiceMock.h80
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/Credential.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/Credential.h2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/CredentialStorage.cpp155
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/CredentialStorage.h48
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/FormDataBuilder.cpp38
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/HTTPHeaderMap.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/HTTPParsers.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/ProtectionSpace.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/ProtectionSpace.h10
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/ProtectionSpaceHash.h70
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/ResourceErrorBase.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/ResourceHandle.h2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/ResourceHandleInternal.h2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/ResourceRequestBase.cpp43
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/ResourceRequestBase.h14
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/ResourceResponseBase.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/SocketStreamErrorBase.cpp48
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/SocketStreamErrorBase.h72
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/SocketStreamHandleBase.cpp106
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/SocketStreamHandleBase.h72
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/SocketStreamHandleClient.h62
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/qt/DnsPrefetchHelper.cpp35
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/qt/DnsPrefetchHelper.h75
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp133
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.h5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/qt/ResourceHandleQt.cpp53
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequest.h5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/qt/SocketStreamError.h50
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/qt/SocketStreamHandle.h68
-rw-r--r--src/3rdparty/webkit/WebCore/platform/network/qt/SocketStreamHandleSoup.cpp88
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/ClipboardQt.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/ContextMenuQt.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/CookieJarQt.cpp15
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/CursorQt.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/DragDataQt.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/FileSystemQt.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp110
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/PasteboardQt.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/PlatformKeyboardEventQt.cpp44
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/PlatformMouseEventQt.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/PlatformScreenQt.cpp36
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/PopupMenuQt.cpp40
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/QWebPageClient.h79
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/QWebPopup.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/RenderThemeQt.cpp130
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/ScrollViewQt.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/SearchPopupMenuQt.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/TemporaryLinkStubs.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/WheelEventQt.cpp55
-rw-r--r--src/3rdparty/webkit/WebCore/platform/qt/WidgetQt.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/platform/sql/SQLValue.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/platform/sql/SQLValue.h4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/sql/SQLiteDatabase.h4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/sql/SQLiteTransaction.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/platform/sql/SQLiteTransaction.h5
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/AtomicString.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/AtomicString.h3
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/CString.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/CString.h2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/PlatformString.h32
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/RegularExpression.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/String.cpp72
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/StringImpl.cpp234
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/StringImpl.h51
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextEncoding.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/TextEncodingRegistry.cpp44
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/UnicodeRange.h4
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/cf/StringCF.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/mac/TextCodecMac.cpp17
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/qt/TextCodecQt.cpp21
-rw-r--r--src/3rdparty/webkit/WebCore/platform/win/BitmapInfo.cpp66
-rw-r--r--src/3rdparty/webkit/WebCore/platform/win/BitmapInfo.h43
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginDataNone.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginDatabase.cpp75
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginDatabase.h22
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginDatabaseClient.h42
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginPackage.cpp34
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginPackage.h21
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginPackageNone.cpp32
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginQuirkSet.h1
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginStream.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginView.cpp266
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginView.h55
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/PluginViewNone.cpp55
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/mac/PluginPackageMac.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/mac/PluginViewMac.cpp135
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/qt/PluginContainerQt.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/qt/PluginPackageQt.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/qt/PluginViewQt.cpp619
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.cpp77
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/symbian/PluginContainerSymbian.h50
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/symbian/PluginDatabaseSymbian.cpp79
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/symbian/PluginPackageSymbian.cpp177
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp462
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/symbian/npinterface.h37
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/win/PluginPackageWin.cpp17
-rw-r--r--src/3rdparty/webkit/WebCore/plugins/win/PluginViewWin.cpp316
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/AutoTableLayout.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/CounterNode.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/FixedTableLayout.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/HitTestResult.cpp15
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/HitTestResult.h1
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/InlineBox.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/InlineBox.h7
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/InlineFlowBox.cpp274
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/InlineFlowBox.h67
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/InlineTextBox.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/MediaControlElements.cpp276
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/MediaControlElements.h56
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderApplet.h9
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBR.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBlock.cpp584
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBlock.h285
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBlockLineLayout.cpp56
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp215
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBox.h61
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBoxModelObject.cpp213
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderBoxModelObject.h16
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderButton.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderButton.h12
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderCounter.cpp29
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderCounter.h21
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderFieldset.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderFieldset.h23
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderFileUploadControl.h28
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderFlexibleBox.cpp173
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderForeignObject.h1
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderFrame.h9
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderFrameSet.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderFrameSet.h35
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderHTMLCanvas.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderHTMLCanvas.h21
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderImage.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderImage.h60
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderInline.cpp172
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderInline.h92
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderLayer.cpp236
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderLayer.h11
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderLayerBacking.cpp351
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderLayerBacking.h48
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderLayerCompositor.cpp93
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderLayerCompositor.h8
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderLineBoxList.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderListBox.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderListBox.h42
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderListItem.cpp59
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderListItem.h36
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderListMarker.h32
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderMarquee.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderMedia.cpp107
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderMedia.h43
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderMediaControls.cpp31
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderMediaControlsChromium.cpp304
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderMediaControlsChromium.h46
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderMenuList.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderMenuList.h32
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderObject.cpp114
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderObject.h71
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderObjectChildList.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderOverflow.h153
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderPart.h9
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderPartObject.cpp85
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderPartObject.h11
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderPath.h19
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderReplaced.cpp125
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderReplaced.h47
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGBlock.h2
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGContainer.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGContainer.h32
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGHiddenContainer.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGHiddenContainer.h3
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGImage.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGImage.h9
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGInlineText.h3
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGRoot.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGRoot.h24
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGText.h2
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGTextPath.h13
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGViewportContainer.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSVGViewportContainer.h25
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderScrollbar.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderScrollbar.h39
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderScrollbarPart.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderScrollbarTheme.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSlider.cpp90
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderSlider.h10
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTable.cpp116
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTable.h76
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTableCell.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTableCell.h56
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTableCol.cpp19
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTableCol.h39
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTableRow.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTableRow.h29
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTableSection.cpp48
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTableSection.h76
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderText.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderText.h12
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTextControl.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTextControl.h51
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTextControlMultiLine.cpp44
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTextControlMultiLine.h18
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTextControlSingleLine.cpp53
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTextControlSingleLine.h38
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTextFragment.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTheme.cpp33
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTheme.h4
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumLinux.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumLinux.h7
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumMac.h307
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumMac.mm1226
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumSkia.cpp219
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumSkia.h14
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumWin.cpp143
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeChromiumWin.h1
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeMac.h2
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeSafari.cpp48
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderThemeWin.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTreeAsText.cpp52
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderTreeAsText.h17
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderVideo.h42
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderView.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderView.h12
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderWidget.cpp46
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderWidget.h19
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderWidgetProtector.h53
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RootInlineBox.cpp79
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RootInlineBox.h101
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/SVGCharacterLayoutInfo.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/SVGRenderSupport.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/SVGRenderTreeAsText.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/SVGRenderTreeAsText.h24
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/SVGRootInlineBox.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/TextControlInnerElements.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/FillLayer.cpp57
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/FillLayer.h71
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/RenderStyle.cpp58
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/RenderStyle.h28
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/RenderStyleConstants.h25
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/SVGRenderStyle.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/SVGRenderStyle.h8
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/SVGRenderStyleDefs.cpp19
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/SVGRenderStyleDefs.h32
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/style/StyleBackgroundData.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/storage/ChangeVersionWrapper.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/storage/Database.cpp194
-rw-r--r--src/3rdparty/webkit/WebCore/storage/Database.h39
-rw-r--r--src/3rdparty/webkit/WebCore/storage/Database.idl1
-rw-r--r--src/3rdparty/webkit/WebCore/storage/DatabaseAuthorizer.cpp67
-rw-r--r--src/3rdparty/webkit/WebCore/storage/DatabaseAuthorizer.h10
-rw-r--r--src/3rdparty/webkit/WebCore/storage/DatabaseDetails.h2
-rw-r--r--src/3rdparty/webkit/WebCore/storage/DatabaseThread.cpp33
-rw-r--r--src/3rdparty/webkit/WebCore/storage/DatabaseThread.h9
-rw-r--r--src/3rdparty/webkit/WebCore/storage/DatabaseTracker.cpp103
-rw-r--r--src/3rdparty/webkit/WebCore/storage/DatabaseTracker.h18
-rw-r--r--src/3rdparty/webkit/WebCore/storage/LocalStorageTask.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/storage/LocalStorageTask.h16
-rw-r--r--src/3rdparty/webkit/WebCore/storage/LocalStorageThread.cpp15
-rw-r--r--src/3rdparty/webkit/WebCore/storage/LocalStorageThread.h8
-rw-r--r--src/3rdparty/webkit/WebCore/storage/OriginQuotaManager.cpp22
-rw-r--r--src/3rdparty/webkit/WebCore/storage/OriginUsageRecord.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/storage/OriginUsageRecord.h2
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLError.h6
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLResultSetRowList.h4
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLStatement.cpp26
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLStatement.h12
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLStatementCallback.h2
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLStatementErrorCallback.h2
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLTransaction.cpp179
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLTransaction.h35
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLTransactionCallback.h2
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLTransactionClient.cpp74
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLTransactionClient.h48
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLTransactionCoordinator.cpp114
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLTransactionCoordinator.h65
-rw-r--r--src/3rdparty/webkit/WebCore/storage/SQLTransactionErrorCallback.h8
-rw-r--r--src/3rdparty/webkit/WebCore/storage/Storage.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/storage/Storage.h7
-rw-r--r--src/3rdparty/webkit/WebCore/storage/Storage.idl3
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageArea.h8
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageAreaImpl.cpp141
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageAreaImpl.h14
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageAreaSync.cpp27
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageAreaSync.h10
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageEvent.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageEvent.h19
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageEvent.idl5
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageEventDispatcher.cpp77
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageEventDispatcher.h54
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageMap.cpp76
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageMap.h28
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageNamespace.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageNamespace.h5
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageNamespaceImpl.cpp50
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageNamespaceImpl.h10
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageSyncManager.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/storage/StorageSyncManager.h6
-rw-r--r--src/3rdparty/webkit/WebCore/svg/ElementTimeControl.h9
-rw-r--r--src/3rdparty/webkit/WebCore/svg/ElementTimeControl.idl13
-rw-r--r--src/3rdparty/webkit/WebCore/svg/LinearGradientAttributes.h32
-rw-r--r--src/3rdparty/webkit/WebCore/svg/RadialGradientAttributes.h40
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGAElement.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGAElement.h13
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGAllInOne.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGAltGlyphElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGAltGlyphElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGAnimatedProperty.h126
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGAnimatedTemplate.h2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGAnimationElement.cpp21
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGAnimationElement.h20
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGCircleElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGCircleElement.h8
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGClipPathElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGClipPathElement.h10
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGColor.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGColor.h4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGComponentTransferFunctionElement.h1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGCursorElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGCursorElement.h13
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGDefinitionSrcElement.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGDefinitionSrcElement.h39
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGDefinitionSrcElement.idl31
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGDefsElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGDefsElement.h9
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGDocument.h10
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGElement.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGElement.h77
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGElementInstance.cpp450
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGElementInstance.h153
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGEllipseElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGEllipseElement.h8
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGExternalResourcesRequired.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGExternalResourcesRequired.h26
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFECompositeElement.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEFloodElement.cpp19
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEFloodElement.h6
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEFloodElement.idl3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEGaussianBlurElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEImageElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEImageElement.h13
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFELightElement.h4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEMergeElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEMergeNodeElement.h6
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEMorphologyElement.cpp88
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEMorphologyElement.h52
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFEMorphologyElement.idl43
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFilterElement.cpp68
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFilterElement.h19
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp59
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFitToViewBox.cpp20
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFitToViewBox.h16
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFontElement.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFontElement.h8
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGFontFaceElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGForeignObjectElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGForeignObjectElement.h13
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGGElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGGElement.h10
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGGradientElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGGradientElement.h12
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGImageElement.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGImageElement.h11
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGImageLoader.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGLineElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGLineElement.h8
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGLinearGradientElement.cpp19
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGMPathElement.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGMPathElement.h54
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGMarkerElement.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGMarkerElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGMaskElement.cpp52
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGMaskElement.h13
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGNumberList.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGParserUtilities.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGPathElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGPathElement.h10
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGPatternElement.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGPatternElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGPolyElement.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGPolyElement.h10
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGRadialGradientElement.cpp48
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGRectElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGRectElement.h8
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGSVGElement.cpp19
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGSVGElement.h19
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGSVGElement.idl3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGScriptElement.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGScriptElement.h12
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGStopElement.h5
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGStyleElement.cpp34
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGStyleElement.h9
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGStyleElement.idl5
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGStyledElement.cpp15
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGSwitchElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGSwitchElement.h16
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGSymbolElement.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGSymbolElement.h17
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGTRefElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGTRefElement.h8
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGTextContentElement.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGTextContentElement.h10
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGTextPathElement.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGTextPathElement.h8
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGURIReference.cpp1
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGURIReference.h8
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGUseElement.cpp48
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGUseElement.h13
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGViewElement.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGViewElement.h14
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGViewSpec.cpp17
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SVGViewSpec.h11
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SynchronizablePropertyController.cpp145
-rw-r--r--src/3rdparty/webkit/WebCore/svg/SynchronizablePropertyController.h84
-rw-r--r--src/3rdparty/webkit/WebCore/svg/animation/SVGSMILElement.cpp35
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGImage.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGPaintServerGradient.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGPaintServerPattern.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGResourceFilter.cpp52
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGResourceFilter.h27
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/SVGResourceMasker.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEFlood.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEFlood.h5
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEGaussianBlur.cpp82
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEGaussianBlur.h58
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEMorphology.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFEMorphology.h6
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFETile.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFilter.cpp24
-rw-r--r--src/3rdparty/webkit/WebCore/svg/graphics/filters/SVGFilter.h5
-rw-r--r--src/3rdparty/webkit/WebCore/svg/svgtags.in165
-rw-r--r--src/3rdparty/webkit/WebCore/websockets/WebSocket.cpp233
-rw-r--r--src/3rdparty/webkit/WebCore/websockets/WebSocket.h126
-rw-r--r--src/3rdparty/webkit/WebCore/websockets/WebSocket.idl67
-rw-r--r--src/3rdparty/webkit/WebCore/websockets/WebSocketChannel.cpp261
-rw-r--r--src/3rdparty/webkit/WebCore/websockets/WebSocketChannel.h88
-rw-r--r--src/3rdparty/webkit/WebCore/websockets/WebSocketChannelClient.h53
-rw-r--r--src/3rdparty/webkit/WebCore/websockets/WebSocketHandshake.cpp462
-rw-r--r--src/3rdparty/webkit/WebCore/websockets/WebSocketHandshake.h113
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLAElement.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLAElement.h1
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLAccessElement.cpp15
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLAccessElement.h4
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLAnchorElement.cpp14
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLAnchorElement.h3
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLCardElement.cpp7
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLDoElement.cpp37
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLDoElement.h4
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLDocument.cpp59
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLDocument.h9
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLElement.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLElement.h4
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLErrorHandling.cpp3
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLEventHandlingElement.cpp12
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLEventHandlingElement.h1
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLFieldSetElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLFormControlElement.cpp15
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLFormControlElement.h1
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLGoElement.cpp28
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLGoElement.h3
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLImageElement.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLInputElement.cpp18
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLInputElement.h6
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLIntrinsicEventHandler.cpp8
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLIntrinsicEventHandler.h1
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLNoopElement.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLOnEventElement.cpp25
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLOnEventElement.h1
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLOptionElement.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLPageState.cpp227
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLPageState.h29
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLPostfieldElement.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLPostfieldElement.h1
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLPrevElement.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLPrevElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLRefreshElement.cpp11
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLRefreshElement.h2
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLSelectElement.cpp6
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLSelectElement.h3
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLSetvarElement.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLSetvarElement.h1
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLTableElement.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLTagNames.in50
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLTaskElement.cpp46
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLTaskElement.h8
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLTimerElement.cpp13
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLTimerElement.h1
-rw-r--r--src/3rdparty/webkit/WebCore/wml/WMLVariables.cpp4
-rw-r--r--src/3rdparty/webkit/WebCore/workers/AbstractWorker.cpp89
-rw-r--r--src/3rdparty/webkit/WebCore/workers/AbstractWorker.h28
-rw-r--r--src/3rdparty/webkit/WebCore/workers/AbstractWorker.idl2
-rw-r--r--src/3rdparty/webkit/WebCore/workers/DedicatedWorkerContext.cpp54
-rw-r--r--src/3rdparty/webkit/WebCore/workers/DedicatedWorkerContext.h30
-rw-r--r--src/3rdparty/webkit/WebCore/workers/DedicatedWorkerContext.idl7
-rw-r--r--src/3rdparty/webkit/WebCore/workers/DedicatedWorkerThread.cpp71
-rw-r--r--src/3rdparty/webkit/WebCore/workers/DedicatedWorkerThread.h60
-rw-r--r--src/3rdparty/webkit/WebCore/workers/DefaultSharedWorkerRepository.cpp416
-rw-r--r--src/3rdparty/webkit/WebCore/workers/DefaultSharedWorkerRepository.h90
-rw-r--r--src/3rdparty/webkit/WebCore/workers/SharedWorker.cpp16
-rw-r--r--src/3rdparty/webkit/WebCore/workers/SharedWorker.h3
-rw-r--r--src/3rdparty/webkit/WebCore/workers/SharedWorkerContext.cpp69
-rw-r--r--src/3rdparty/webkit/WebCore/workers/SharedWorkerContext.h73
-rw-r--r--src/3rdparty/webkit/WebCore/workers/SharedWorkerContext.idl46
-rw-r--r--src/3rdparty/webkit/WebCore/workers/SharedWorkerRepository.h70
-rw-r--r--src/3rdparty/webkit/WebCore/workers/SharedWorkerThread.cpp63
-rw-r--r--src/3rdparty/webkit/WebCore/workers/SharedWorkerThread.h56
-rw-r--r--src/3rdparty/webkit/WebCore/workers/Worker.cpp45
-rw-r--r--src/3rdparty/webkit/WebCore/workers/Worker.h23
-rw-r--r--src/3rdparty/webkit/WebCore/workers/Worker.idl10
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerContext.cpp113
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerContext.h43
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerContext.idl8
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerContextProxy.h4
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerLocation.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerMessagingProxy.cpp101
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerMessagingProxy.h12
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerObjectProxy.h19
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerReportingProxy.h61
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerRunLoop.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerScriptLoader.cpp47
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerScriptLoader.h16
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerThread.cpp48
-rw-r--r--src/3rdparty/webkit/WebCore/workers/WorkerThread.h39
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XMLHttpRequest.cpp558
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XMLHttpRequest.h75
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XMLHttpRequest.idl1
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XMLHttpRequestProgressEvent.h2
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XMLHttpRequestUpload.cpp94
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XMLHttpRequestUpload.h48
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XMLHttpRequestUpload.idl3
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathFunctions.cpp9
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathNamespace.cpp10
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathNamespace.h13
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathValue.cpp5
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XPathValue.h13
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XSLImportRule.cpp2
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XSLStyleSheet.cpp312
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XSLStyleSheet.h26
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XSLStyleSheetLibxslt.cpp313
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XSLStyleSheetQt.cpp103
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XSLTProcessor.cpp319
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XSLTProcessor.h10
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XSLTProcessorLibxslt.cpp335
-rw-r--r--src/3rdparty/webkit/WebCore/xml/XSLTProcessorQt.cpp149
-rw-r--r--src/3rdparty/webkit/WebKit.pri32
-rw-r--r--src/3rdparty/webkit/WebKit/ChangeLog524
-rw-r--r--src/3rdparty/webkit/WebKit/LICENSE22
-rw-r--r--src/3rdparty/webkit/WebKit/StringsNotToBeLocalized.txt65
-rw-r--r--src/3rdparty/webkit/WebKit/mac/Configurations/Version.xcconfig58
-rw-r--r--src/3rdparty/webkit/WebKit/mac/Workers/WebWorkersPrivate.h37
-rw-r--r--src/3rdparty/webkit/WebKit/mac/Workers/WebWorkersPrivate.mm46
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/headers.pri5
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp1010
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.h142
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebdatabase.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp1079
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebelement.h142
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebframe.cpp195
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebframe.h19
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebframe_p.h9
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp196
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.h15
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebhistory_p.h33
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebhistoryinterface.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebinspector.cpp186
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebinspector.h55
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebinspector_p.h46
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebkitversion.cpp58
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebkitversion.h32
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp753
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpage.h39
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpage_p.h61
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebplugindatabase.cpp389
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebplugindatabase_p.h98
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.cpp30
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpluginfactory.h4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebsecurityorigin.cpp51
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebsecurityorigin.h3
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp206
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.h21
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp210
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebview.h9
-rw-r--r--src/3rdparty/webkit/WebKit/qt/ChangeLog3590
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Plugins/ICOHandler.cpp460
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Plugins/ICOHandler.h52
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Plugins/Plugins.pro14
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp24
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.h3
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ContextMenuClientQt.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/DragClientQt.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/EditorClientQt.cpp43
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp252
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h6
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp211
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.h7
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/docs.pri4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/qtwebkit.qdoc118
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/qtwebkit_qwebinspector_snippet.cpp17
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/simple/main.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webelement/main.cpp4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webelement/webelement.pro3
-rw-r--r--src/3rdparty/webkit/WebKit/qt/docs/webkitsnippets/webpage/main.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/benchmarks/loading/tst_loading.pro5
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/benchmarks/painting/tst_painting.pro5
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/qgraphicswebview.pro10
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp130
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebelement/image.pngbin0 -> 14743 bytes-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebelement/qwebelement.pro5
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebelement/qwebelement.qrc1
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp381
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebframe/qwebframe.pro6
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebframe/resources/image2.pngbin0 -> 14743 bytes-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp311
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebhistory/qwebhistory.pro5
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebhistory/tst_qwebhistory.cpp108
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebhistoryinterface/qwebhistoryinterface.pro5
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebpage/qwebpage.pro6
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp655
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebplugindatabase/qwebplugindatabase.pro11
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebplugindatabase/tst_qwebplugindatabase.cpp437
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebview/data/frame_a.html2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebview/data/index.html4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebview/qwebview.pro7
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebview/tst_qwebview.cpp143
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebview/tst_qwebview.qrc7
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/resources/test.swfbin0 -> 10085 bytes-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/tests.pro4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/util.h48
-rw-r--r--src/3rdparty/webkit/WebKit/scripts/generate-webkitversion.pl136
-rw-r--r--src/activeqt/container/qaxbase.cpp1
-rw-r--r--src/activeqt/container/qaxbase.h1
-rw-r--r--src/activeqt/container/qaxdump.cpp1
-rw-r--r--src/activeqt/container/qaxobject.cpp1
-rw-r--r--src/activeqt/container/qaxobject.h1
-rw-r--r--src/activeqt/container/qaxscript.cpp1
-rw-r--r--src/activeqt/container/qaxscript.h1
-rw-r--r--src/activeqt/container/qaxscriptwrapper.cpp1
-rw-r--r--src/activeqt/container/qaxselect.cpp1
-rw-r--r--src/activeqt/container/qaxselect.h1
-rw-r--r--src/activeqt/container/qaxselect.ui1
-rw-r--r--src/activeqt/container/qaxwidget.cpp15
-rw-r--r--src/activeqt/container/qaxwidget.h1
-rw-r--r--src/activeqt/control/qaxaggregated.h1
-rw-r--r--src/activeqt/control/qaxbindable.cpp1
-rw-r--r--src/activeqt/control/qaxbindable.h1
-rw-r--r--src/activeqt/control/qaxfactory.cpp1
-rw-r--r--src/activeqt/control/qaxfactory.h1
-rw-r--r--src/activeqt/control/qaxmain.cpp1
-rw-r--r--src/activeqt/control/qaxserver.cpp1
-rw-r--r--src/activeqt/control/qaxserverbase.cpp1
-rw-r--r--src/activeqt/control/qaxserverdll.cpp1
-rw-r--r--src/activeqt/control/qaxservermain.cpp1
-rw-r--r--src/activeqt/shared/qaxtypes.cpp1
-rw-r--r--src/activeqt/shared/qaxtypes.h1
-rw-r--r--src/corelib/animation/qabstractanimation.cpp351
-rw-r--r--src/corelib/animation/qabstractanimation.h44
-rw-r--r--src/corelib/animation/qabstractanimation_p.h81
-rw-r--r--src/corelib/animation/qanimationgroup.cpp65
-rw-r--r--src/corelib/animation/qanimationgroup.h36
-rw-r--r--src/corelib/animation/qanimationgroup_p.h34
-rw-r--r--src/corelib/animation/qparallelanimationgroup.cpp120
-rw-r--r--src/corelib/animation/qparallelanimationgroup.h34
-rw-r--r--src/corelib/animation/qparallelanimationgroup_p.h34
-rw-r--r--src/corelib/animation/qpauseanimation.cpp39
-rw-r--r--src/corelib/animation/qpauseanimation.h32
-rw-r--r--src/corelib/animation/qpropertyanimation.cpp136
-rw-r--r--src/corelib/animation/qpropertyanimation.h33
-rw-r--r--src/corelib/animation/qpropertyanimation_p.h41
-rw-r--r--src/corelib/animation/qsequentialanimationgroup.cpp76
-rw-r--r--src/corelib/animation/qsequentialanimationgroup.h36
-rw-r--r--src/corelib/animation/qsequentialanimationgroup_p.h32
-rw-r--r--src/corelib/animation/qvariantanimation.cpp71
-rw-r--r--src/corelib/animation/qvariantanimation.h34
-rw-r--r--src/corelib/animation/qvariantanimation_p.h38
-rw-r--r--src/corelib/arch/alpha/qatomic_alpha.s40
-rw-r--r--src/corelib/arch/arch.pri8
-rw-r--r--src/corelib/arch/arm/qatomic_arm.cpp30
-rw-r--r--src/corelib/arch/armv6/qatomic_generic_armv6.cpp260
-rw-r--r--src/corelib/arch/generic/qatomic_generic_unix.cpp35
-rw-r--r--src/corelib/arch/generic/qatomic_generic_windows.cpp30
-rw-r--r--src/corelib/arch/ia64/qatomic_ia64.s40
-rw-r--r--src/corelib/arch/macosx/qatomic32_ppc.s40
-rw-r--r--src/corelib/arch/mips/qatomic_mips32.s40
-rw-r--r--src/corelib/arch/mips/qatomic_mips64.s40
-rw-r--r--src/corelib/arch/parisc/q_ldcw.s40
-rw-r--r--src/corelib/arch/parisc/qatomic_parisc.cpp30
-rw-r--r--src/corelib/arch/powerpc/qatomic32.s40
-rw-r--r--src/corelib/arch/powerpc/qatomic64.s40
-rw-r--r--src/corelib/arch/qatomic_alpha.h30
-rw-r--r--src/corelib/arch/qatomic_arch.h32
-rw-r--r--src/corelib/arch/qatomic_arm.h62
-rw-r--r--src/corelib/arch/qatomic_armv6.h334
-rw-r--r--src/corelib/arch/qatomic_avr32.h30
-rw-r--r--src/corelib/arch/qatomic_bfin.h30
-rw-r--r--src/corelib/arch/qatomic_bootstrap.h30
-rw-r--r--src/corelib/arch/qatomic_generic.h30
-rw-r--r--src/corelib/arch/qatomic_i386.h30
-rw-r--r--src/corelib/arch/qatomic_ia64.h30
-rw-r--r--src/corelib/arch/qatomic_macosx.h30
-rw-r--r--src/corelib/arch/qatomic_mips.h30
-rw-r--r--src/corelib/arch/qatomic_parisc.h30
-rw-r--r--src/corelib/arch/qatomic_powerpc.h30
-rw-r--r--src/corelib/arch/qatomic_s390.h30
-rw-r--r--src/corelib/arch/qatomic_sh.h30
-rw-r--r--src/corelib/arch/qatomic_sh4a.h30
-rw-r--r--src/corelib/arch/qatomic_sparc.h30
-rw-r--r--src/corelib/arch/qatomic_symbian.h285
-rw-r--r--src/corelib/arch/qatomic_vxworks.h30
-rw-r--r--src/corelib/arch/qatomic_windows.h596
-rw-r--r--src/corelib/arch/qatomic_windowsce.h30
-rw-r--r--src/corelib/arch/qatomic_x86_64.h30
-rw-r--r--src/corelib/arch/sh/qatomic_sh.cpp30
-rw-r--r--src/corelib/arch/sparc/qatomic32.s40
-rw-r--r--src/corelib/arch/sparc/qatomic64.s40
-rw-r--r--src/corelib/arch/sparc/qatomic_sparc.cpp30
-rw-r--r--src/corelib/arch/symbian/arch.pri5
-rw-r--r--src/corelib/arch/symbian/qatomic_symbian.cpp234
-rw-r--r--src/corelib/codecs/codecs.pri1
-rw-r--r--src/corelib/codecs/codecs.qdoc546
-rw-r--r--src/corelib/codecs/qfontlaocodec.cpp30
-rw-r--r--src/corelib/codecs/qfontlaocodec_p.h30
-rw-r--r--src/corelib/codecs/qiconvcodec.cpp36
-rw-r--r--src/corelib/codecs/qiconvcodec_p.h30
-rw-r--r--src/corelib/codecs/qisciicodec.cpp31
-rw-r--r--src/corelib/codecs/qisciicodec_p.h30
-rw-r--r--src/corelib/codecs/qlatincodec.cpp30
-rw-r--r--src/corelib/codecs/qlatincodec_p.h30
-rw-r--r--src/corelib/codecs/qsimplecodec.cpp30
-rw-r--r--src/corelib/codecs/qsimplecodec_p.h30
-rw-r--r--src/corelib/codecs/qtextcodec.cpp113
-rw-r--r--src/corelib/codecs/qtextcodec.h30
-rw-r--r--src/corelib/codecs/qtextcodec_p.h30
-rw-r--r--src/corelib/codecs/qtextcodecplugin.cpp30
-rw-r--r--src/corelib/codecs/qtextcodecplugin.h30
-rw-r--r--src/corelib/codecs/qtsciicodec.cpp30
-rw-r--r--src/corelib/codecs/qtsciicodec_p.h30
-rw-r--r--src/corelib/codecs/qutfcodec.cpp30
-rw-r--r--src/corelib/codecs/qutfcodec_p.h30
-rw-r--r--src/corelib/concurrent/qfuture.cpp36
-rw-r--r--src/corelib/concurrent/qfuture.h30
-rw-r--r--src/corelib/concurrent/qfutureinterface.cpp30
-rw-r--r--src/corelib/concurrent/qfutureinterface.h30
-rw-r--r--src/corelib/concurrent/qfutureinterface_p.h30
-rw-r--r--src/corelib/concurrent/qfuturesynchronizer.cpp36
-rw-r--r--src/corelib/concurrent/qfuturesynchronizer.h30
-rw-r--r--src/corelib/concurrent/qfuturewatcher.cpp40
-rw-r--r--src/corelib/concurrent/qfuturewatcher.h30
-rw-r--r--src/corelib/concurrent/qfuturewatcher_p.h32
-rw-r--r--src/corelib/concurrent/qrunnable.cpp32
-rw-r--r--src/corelib/concurrent/qrunnable.h30
-rw-r--r--src/corelib/concurrent/qtconcurrentcompilertest.h30
-rw-r--r--src/corelib/concurrent/qtconcurrentexception.cpp30
-rw-r--r--src/corelib/concurrent/qtconcurrentexception.h30
-rw-r--r--src/corelib/concurrent/qtconcurrentfilter.cpp34
-rw-r--r--src/corelib/concurrent/qtconcurrentfilter.h30
-rw-r--r--src/corelib/concurrent/qtconcurrentfilterkernel.h30
-rw-r--r--src/corelib/concurrent/qtconcurrentfunctionwrappers.h30
-rw-r--r--src/corelib/concurrent/qtconcurrentiteratekernel.cpp36
-rw-r--r--src/corelib/concurrent/qtconcurrentiteratekernel.h53
-rw-r--r--src/corelib/concurrent/qtconcurrentmap.cpp42
-rw-r--r--src/corelib/concurrent/qtconcurrentmap.h30
-rw-r--r--src/corelib/concurrent/qtconcurrentmapkernel.h30
-rw-r--r--src/corelib/concurrent/qtconcurrentmedian.h30
-rw-r--r--src/corelib/concurrent/qtconcurrentreducekernel.h30
-rw-r--r--src/corelib/concurrent/qtconcurrentresultstore.cpp30
-rw-r--r--src/corelib/concurrent/qtconcurrentresultstore.h30
-rw-r--r--src/corelib/concurrent/qtconcurrentrun.cpp36
-rw-r--r--src/corelib/concurrent/qtconcurrentrun.h30
-rw-r--r--src/corelib/concurrent/qtconcurrentrunbase.h30
-rw-r--r--src/corelib/concurrent/qtconcurrentstoredfunctioncall.h30
-rw-r--r--src/corelib/concurrent/qtconcurrentthreadengine.cpp30
-rw-r--r--src/corelib/concurrent/qtconcurrentthreadengine.h30
-rw-r--r--src/corelib/concurrent/qthreadpool.cpp40
-rw-r--r--src/corelib/concurrent/qthreadpool.h30
-rw-r--r--src/corelib/concurrent/qthreadpool_p.h30
-rw-r--r--src/corelib/corelib.pro8
-rw-r--r--src/corelib/eval.pri4
-rw-r--r--src/corelib/global/global.pri2
-rw-r--r--src/corelib/global/qconfig-dist.h30
-rw-r--r--src/corelib/global/qconfig-large.h30
-rw-r--r--src/corelib/global/qconfig-medium.h30
-rw-r--r--src/corelib/global/qconfig-minimal.h36
-rw-r--r--src/corelib/global/qconfig-small.h30
-rw-r--r--src/corelib/global/qendian.h48
-rw-r--r--src/corelib/global/qendian.qdoc168
-rw-r--r--src/corelib/global/qfeatures.h314
-rw-r--r--src/corelib/global/qfeatures.txt115
-rw-r--r--src/corelib/global/qglobal.cpp622
-rw-r--r--src/corelib/global/qglobal.h317
-rw-r--r--src/corelib/global/qlibraryinfo.cpp96
-rw-r--r--src/corelib/global/qlibraryinfo.h34
-rw-r--r--src/corelib/global/qmalloc.cpp88
-rw-r--r--src/corelib/global/qnamespace.h229
-rw-r--r--src/corelib/global/qnamespace.qdoc2969
-rw-r--r--src/corelib/global/qnumeric.cpp30
-rw-r--r--src/corelib/global/qnumeric.h30
-rw-r--r--src/corelib/global/qnumeric_p.h30
-rw-r--r--src/corelib/global/qt_pch.h30
-rw-r--r--src/corelib/global/qt_windows.h30
-rw-r--r--src/corelib/io/io.pri13
-rw-r--r--src/corelib/io/qabstractfileengine.cpp33
-rw-r--r--src/corelib/io/qabstractfileengine.h34
-rw-r--r--src/corelib/io/qabstractfileengine_p.h30
-rw-r--r--src/corelib/io/qbuffer.cpp30
-rw-r--r--src/corelib/io/qbuffer.h30
-rw-r--r--src/corelib/io/qdatastream.cpp367
-rw-r--r--src/corelib/io/qdatastream.h50
-rw-r--r--src/corelib/io/qdatastream_p.h72
-rw-r--r--src/corelib/io/qdataurl.cpp101
-rw-r--r--src/corelib/io/qdataurl_p.h67
-rw-r--r--src/corelib/io/qdebug.cpp33
-rw-r--r--src/corelib/io/qdebug.h37
-rw-r--r--src/corelib/io/qdir.cpp72
-rw-r--r--src/corelib/io/qdir.h33
-rw-r--r--src/corelib/io/qdiriterator.cpp49
-rw-r--r--src/corelib/io/qdiriterator.h32
-rw-r--r--src/corelib/io/qfile.cpp100
-rw-r--r--src/corelib/io/qfile.h32
-rw-r--r--src/corelib/io/qfile_p.h31
-rw-r--r--src/corelib/io/qfileinfo.cpp32
-rw-r--r--src/corelib/io/qfileinfo.h33
-rw-r--r--src/corelib/io/qfileinfo_p.h30
-rw-r--r--src/corelib/io/qfilesystemwatcher.cpp38
-rw-r--r--src/corelib/io/qfilesystemwatcher.h30
-rw-r--r--src/corelib/io/qfilesystemwatcher_dnotify.cpp41
-rw-r--r--src/corelib/io/qfilesystemwatcher_dnotify_p.h30
-rw-r--r--src/corelib/io/qfilesystemwatcher_fsevents.cpp36
-rw-r--r--src/corelib/io/qfilesystemwatcher_fsevents_p.h34
-rw-r--r--src/corelib/io/qfilesystemwatcher_inotify.cpp30
-rw-r--r--src/corelib/io/qfilesystemwatcher_inotify_p.h30
-rw-r--r--src/corelib/io/qfilesystemwatcher_kqueue.cpp30
-rw-r--r--src/corelib/io/qfilesystemwatcher_kqueue_p.h30
-rw-r--r--src/corelib/io/qfilesystemwatcher_p.h30
-rw-r--r--src/corelib/io/qfilesystemwatcher_symbian.cpp291
-rw-r--r--src/corelib/io/qfilesystemwatcher_symbian_p.h130
-rw-r--r--src/corelib/io/qfilesystemwatcher_win.cpp38
-rw-r--r--src/corelib/io/qfilesystemwatcher_win_p.h30
-rw-r--r--src/corelib/io/qfsfileengine.cpp237
-rw-r--r--src/corelib/io/qfsfileengine.h30
-rw-r--r--src/corelib/io/qfsfileengine_iterator.cpp30
-rw-r--r--src/corelib/io/qfsfileengine_iterator_p.h30
-rw-r--r--src/corelib/io/qfsfileengine_iterator_unix.cpp42
-rw-r--r--src/corelib/io/qfsfileengine_iterator_win.cpp30
-rw-r--r--src/corelib/io/qfsfileengine_p.h46
-rw-r--r--src/corelib/io/qfsfileengine_unix.cpp505
-rw-r--r--src/corelib/io/qfsfileengine_win.cpp485
-rw-r--r--src/corelib/io/qiodevice.cpp265
-rw-r--r--src/corelib/io/qiodevice.h35
-rw-r--r--src/corelib/io/qiodevice_p.h30
-rw-r--r--src/corelib/io/qnoncontiguousbytedevice.cpp37
-rw-r--r--src/corelib/io/qnoncontiguousbytedevice_p.h36
-rw-r--r--src/corelib/io/qprocess.cpp498
-rw-r--r--src/corelib/io/qprocess.h69
-rw-r--r--src/corelib/io/qprocess_p.h59
-rw-r--r--src/corelib/io/qprocess_symbian.cpp1042
-rw-r--r--src/corelib/io/qprocess_unix.cpp76
-rw-r--r--src/corelib/io/qprocess_win.cpp49
-rw-r--r--src/corelib/io/qresource.cpp43
-rw-r--r--src/corelib/io/qresource.h32
-rw-r--r--src/corelib/io/qresource_iterator.cpp30
-rw-r--r--src/corelib/io/qresource_iterator_p.h30
-rw-r--r--src/corelib/io/qresource_p.h30
-rw-r--r--src/corelib/io/qsettings.cpp160
-rw-r--r--src/corelib/io/qsettings.h32
-rw-r--r--src/corelib/io/qsettings_mac.cpp30
-rw-r--r--src/corelib/io/qsettings_p.h35
-rw-r--r--src/corelib/io/qsettings_win.cpp30
-rw-r--r--src/corelib/io/qtemporaryfile.cpp70
-rw-r--r--src/corelib/io/qtemporaryfile.h30
-rw-r--r--src/corelib/io/qtextstream.cpp118
-rw-r--r--src/corelib/io/qtextstream.h35
-rw-r--r--src/corelib/io/qurl.cpp157
-rw-r--r--src/corelib/io/qurl.h32
-rw-r--r--src/corelib/io/qwindowspipewriter.cpp31
-rw-r--r--src/corelib/io/qwindowspipewriter_p.h31
-rw-r--r--src/corelib/kernel/kernel.pri24
-rw-r--r--src/corelib/kernel/qabstracteventdispatcher.cpp31
-rw-r--r--src/corelib/kernel/qabstracteventdispatcher.h30
-rw-r--r--src/corelib/kernel/qabstracteventdispatcher_p.h32
-rw-r--r--src/corelib/kernel/qabstractitemmodel.cpp1298
-rw-r--r--src/corelib/kernel/qabstractitemmodel.h46
-rw-r--r--src/corelib/kernel/qabstractitemmodel_p.h37
-rw-r--r--src/corelib/kernel/qbasictimer.cpp31
-rw-r--r--src/corelib/kernel/qbasictimer.h30
-rw-r--r--src/corelib/kernel/qcore_mac.cpp30
-rw-r--r--src/corelib/kernel/qcore_mac_p.h30
-rw-r--r--src/corelib/kernel/qcore_symbian_p.cpp206
-rw-r--r--src/corelib/kernel/qcore_symbian_p.h156
-rw-r--r--src/corelib/kernel/qcore_unix.cpp30
-rw-r--r--src/corelib/kernel/qcore_unix_p.h37
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp316
-rw-r--r--src/corelib/kernel/qcoreapplication.h34
-rw-r--r--src/corelib/kernel/qcoreapplication_mac.cpp30
-rw-r--r--src/corelib/kernel/qcoreapplication_p.h36
-rw-r--r--src/corelib/kernel/qcoreapplication_win.cpp30
-rw-r--r--src/corelib/kernel/qcorecmdlineargs_p.h30
-rw-r--r--src/corelib/kernel/qcoreevent.cpp41
-rw-r--r--src/corelib/kernel/qcoreevent.h44
-rw-r--r--src/corelib/kernel/qcoreglobaldata.cpp32
-rw-r--r--src/corelib/kernel/qcoreglobaldata_p.h30
-rw-r--r--src/corelib/kernel/qcrashhandler.cpp30
-rw-r--r--src/corelib/kernel/qcrashhandler_p.h30
-rw-r--r--src/corelib/kernel/qeventdispatcher_glib.cpp163
-rw-r--r--src/corelib/kernel/qeventdispatcher_glib_p.h32
-rw-r--r--src/corelib/kernel/qeventdispatcher_symbian.cpp1023
-rw-r--r--src/corelib/kernel/qeventdispatcher_symbian_p.h309
-rw-r--r--src/corelib/kernel/qeventdispatcher_unix.cpp61
-rw-r--r--src/corelib/kernel/qeventdispatcher_unix_p.h31
-rw-r--r--src/corelib/kernel/qeventdispatcher_win.cpp259
-rw-r--r--src/corelib/kernel/qeventdispatcher_win_p.h31
-rw-r--r--src/corelib/kernel/qeventloop.cpp30
-rw-r--r--src/corelib/kernel/qeventloop.h30
-rw-r--r--src/corelib/kernel/qfunctions_p.h30
-rw-r--r--src/corelib/kernel/qfunctions_vxworks.cpp30
-rw-r--r--src/corelib/kernel/qfunctions_vxworks.h30
-rw-r--r--src/corelib/kernel/qfunctions_wince.cpp30
-rw-r--r--src/corelib/kernel/qfunctions_wince.h34
-rw-r--r--src/corelib/kernel/qguard_p.h30
-rw-r--r--src/corelib/kernel/qmath.cpp305
-rw-r--r--src/corelib/kernel/qmath.h127
-rw-r--r--src/corelib/kernel/qmetaobject.cpp244
-rw-r--r--src/corelib/kernel/qmetaobject.h30
-rw-r--r--src/corelib/kernel/qmetaobject_p.h131
-rw-r--r--src/corelib/kernel/qmetatype.cpp30
-rw-r--r--src/corelib/kernel/qmetatype.h30
-rw-r--r--src/corelib/kernel/qmimedata.cpp30
-rw-r--r--src/corelib/kernel/qmimedata.h30
-rw-r--r--src/corelib/kernel/qobject.cpp894
-rw-r--r--src/corelib/kernel/qobject.h37
-rw-r--r--src/corelib/kernel/qobject_p.h74
-rw-r--r--src/corelib/kernel/qobjectcleanuphandler.cpp30
-rw-r--r--src/corelib/kernel/qobjectcleanuphandler.h30
-rw-r--r--src/corelib/kernel/qobjectdefs.h52
-rw-r--r--src/corelib/kernel/qpointer.cpp32
-rw-r--r--src/corelib/kernel/qpointer.h30
-rw-r--r--src/corelib/kernel/qsharedmemory.cpp48
-rw-r--r--src/corelib/kernel/qsharedmemory.h30
-rw-r--r--src/corelib/kernel/qsharedmemory_p.h39
-rw-r--r--src/corelib/kernel/qsharedmemory_symbian.cpp176
-rw-r--r--src/corelib/kernel/qsharedmemory_unix.cpp34
-rw-r--r--src/corelib/kernel/qsharedmemory_win.cpp30
-rw-r--r--src/corelib/kernel/qsignalmapper.cpp34
-rw-r--r--src/corelib/kernel/qsignalmapper.h30
-rw-r--r--src/corelib/kernel/qsocketnotifier.cpp31
-rw-r--r--src/corelib/kernel/qsocketnotifier.h30
-rw-r--r--src/corelib/kernel/qsystemsemaphore.cpp47
-rw-r--r--src/corelib/kernel/qsystemsemaphore.h33
-rw-r--r--src/corelib/kernel/qsystemsemaphore_p.h43
-rw-r--r--src/corelib/kernel/qsystemsemaphore_symbian.cpp126
-rw-r--r--src/corelib/kernel/qsystemsemaphore_unix.cpp30
-rw-r--r--src/corelib/kernel/qsystemsemaphore_win.cpp30
-rw-r--r--src/corelib/kernel/qtcore_eval.cpp571
-rw-r--r--src/corelib/kernel/qtimer.cpp53
-rw-r--r--src/corelib/kernel/qtimer.h32
-rw-r--r--src/corelib/kernel/qtranslator.cpp32
-rw-r--r--src/corelib/kernel/qtranslator.h30
-rw-r--r--src/corelib/kernel/qtranslator_p.h30
-rw-r--r--src/corelib/kernel/qvariant.cpp85
-rw-r--r--src/corelib/kernel/qvariant.h77
-rw-r--r--src/corelib/kernel/qvariant_p.h33
-rw-r--r--src/corelib/kernel/qwineventnotifier_p.cpp32
-rw-r--r--src/corelib/kernel/qwineventnotifier_p.h30
-rw-r--r--src/corelib/plugin/qfactoryinterface.h30
-rw-r--r--src/corelib/plugin/qfactoryloader.cpp43
-rw-r--r--src/corelib/plugin/qfactoryloader_p.h30
-rw-r--r--src/corelib/plugin/qlibrary.cpp179
-rw-r--r--src/corelib/plugin/qlibrary.h30
-rw-r--r--src/corelib/plugin/qlibrary_p.h30
-rw-r--r--src/corelib/plugin/qlibrary_unix.cpp57
-rw-r--r--src/corelib/plugin/qlibrary_win.cpp30
-rw-r--r--src/corelib/plugin/qplugin.h30
-rw-r--r--src/corelib/plugin/qplugin.qdoc135
-rw-r--r--src/corelib/plugin/qpluginloader.cpp101
-rw-r--r--src/corelib/plugin/qpluginloader.h30
-rw-r--r--src/corelib/plugin/quuid.cpp46
-rw-r--r--src/corelib/plugin/quuid.h30
-rw-r--r--src/corelib/statemachine/qabstractstate.cpp45
-rw-r--r--src/corelib/statemachine/qabstractstate.h30
-rw-r--r--src/corelib/statemachine/qabstractstate_p.h44
-rw-r--r--src/corelib/statemachine/qabstracttransition.cpp40
-rw-r--r--src/corelib/statemachine/qabstracttransition.h30
-rw-r--r--src/corelib/statemachine/qabstracttransition_p.h36
-rw-r--r--src/corelib/statemachine/qeventtransition.cpp50
-rw-r--r--src/corelib/statemachine/qeventtransition.h36
-rw-r--r--src/corelib/statemachine/qeventtransition_p.h30
-rw-r--r--src/corelib/statemachine/qfinalstate.cpp31
-rw-r--r--src/corelib/statemachine/qfinalstate.h30
-rw-r--r--src/corelib/statemachine/qhistorystate.cpp33
-rw-r--r--src/corelib/statemachine/qhistorystate.h30
-rw-r--r--src/corelib/statemachine/qhistorystate_p.h30
-rw-r--r--src/corelib/statemachine/qsignalevent.h81
-rw-r--r--src/corelib/statemachine/qsignaleventgenerator_p.h30
-rw-r--r--src/corelib/statemachine/qsignaltransition.cpp60
-rw-r--r--src/corelib/statemachine/qsignaltransition.h30
-rw-r--r--src/corelib/statemachine/qsignaltransition_p.h33
-rw-r--r--src/corelib/statemachine/qstate.cpp110
-rw-r--r--src/corelib/statemachine/qstate.h34
-rw-r--r--src/corelib/statemachine/qstate_p.h36
-rw-r--r--src/corelib/statemachine/qstatemachine.cpp464
-rw-r--r--src/corelib/statemachine/qstatemachine.h86
-rw-r--r--src/corelib/statemachine/qstatemachine_p.h60
-rw-r--r--src/corelib/statemachine/qwrappedevent.h80
-rw-r--r--src/corelib/statemachine/statemachine.pri4
-rw-r--r--src/corelib/thread/qatomic.cpp30
-rw-r--r--src/corelib/thread/qatomic.h30
-rw-r--r--src/corelib/thread/qbasicatomic.h50
-rw-r--r--src/corelib/thread/qmutex.cpp33
-rw-r--r--src/corelib/thread/qmutex.h30
-rw-r--r--src/corelib/thread/qmutex_p.h30
-rw-r--r--src/corelib/thread/qmutex_unix.cpp30
-rw-r--r--src/corelib/thread/qmutex_win.cpp30
-rw-r--r--src/corelib/thread/qmutexpool.cpp30
-rw-r--r--src/corelib/thread/qmutexpool_p.h30
-rw-r--r--src/corelib/thread/qorderedmutexlocker_p.h30
-rw-r--r--src/corelib/thread/qreadwritelock.cpp33
-rw-r--r--src/corelib/thread/qreadwritelock.h30
-rw-r--r--src/corelib/thread/qreadwritelock_p.h30
-rw-r--r--src/corelib/thread/qsemaphore.cpp31
-rw-r--r--src/corelib/thread/qsemaphore.h30
-rw-r--r--src/corelib/thread/qthread.cpp143
-rw-r--r--src/corelib/thread/qthread.h39
-rw-r--r--src/corelib/thread/qthread_p.h82
-rw-r--r--src/corelib/thread/qthread_unix.cpp151
-rw-r--r--src/corelib/thread/qthread_win.cpp39
-rw-r--r--src/corelib/thread/qthreadstorage.cpp46
-rw-r--r--src/corelib/thread/qthreadstorage.h30
-rw-r--r--src/corelib/thread/qwaitcondition.h30
-rw-r--r--src/corelib/thread/qwaitcondition.qdoc187
-rw-r--r--src/corelib/thread/qwaitcondition_unix.cpp30
-rw-r--r--src/corelib/thread/qwaitcondition_win.cpp30
-rw-r--r--src/corelib/tools/qalgorithms.h86
-rw-r--r--src/corelib/tools/qalgorithms.qdoc651
-rw-r--r--src/corelib/tools/qbitarray.cpp32
-rw-r--r--src/corelib/tools/qbitarray.h38
-rw-r--r--src/corelib/tools/qbytearray.cpp179
-rw-r--r--src/corelib/tools/qbytearray.h60
-rw-r--r--src/corelib/tools/qbytearraymatcher.cpp32
-rw-r--r--src/corelib/tools/qbytearraymatcher.h38
-rw-r--r--src/corelib/tools/qbytedata_p.h30
-rw-r--r--src/corelib/tools/qcache.h32
-rw-r--r--src/corelib/tools/qcache.qdoc244
-rw-r--r--src/corelib/tools/qchar.cpp34
-rw-r--r--src/corelib/tools/qchar.h40
-rw-r--r--src/corelib/tools/qcontainerfwd.h30
-rw-r--r--src/corelib/tools/qcontiguouscache.cpp71
-rw-r--r--src/corelib/tools/qcontiguouscache.h177
-rw-r--r--src/corelib/tools/qcryptographichash.cpp34
-rw-r--r--src/corelib/tools/qcryptographichash.h30
-rw-r--r--src/corelib/tools/qdatetime.cpp114
-rw-r--r--src/corelib/tools/qdatetime.h33
-rw-r--r--src/corelib/tools/qdatetime_p.h34
-rw-r--r--src/corelib/tools/qeasingcurve.cpp32
-rw-r--r--src/corelib/tools/qeasingcurve.h30
-rw-r--r--src/corelib/tools/qharfbuzz.cpp35
-rw-r--r--src/corelib/tools/qharfbuzz_p.h32
-rw-r--r--src/corelib/tools/qhash.cpp128
-rw-r--r--src/corelib/tools/qhash.h122
-rw-r--r--src/corelib/tools/qiterator.h30
-rw-r--r--src/corelib/tools/qiterator.qdoc1431
-rw-r--r--src/corelib/tools/qline.cpp34
-rw-r--r--src/corelib/tools/qline.h30
-rw-r--r--src/corelib/tools/qlinkedlist.cpp32
-rw-r--r--src/corelib/tools/qlinkedlist.h74
-rw-r--r--src/corelib/tools/qlist.cpp1827
-rw-r--r--src/corelib/tools/qlist.h169
-rw-r--r--src/corelib/tools/qlistdata.cpp1752
-rw-r--r--src/corelib/tools/qlocale.cpp106
-rw-r--r--src/corelib/tools/qlocale.h30
-rw-r--r--src/corelib/tools/qlocale_data_p.h30
-rw-r--r--src/corelib/tools/qlocale_p.h30
-rw-r--r--src/corelib/tools/qlocale_symbian.cpp887
-rw-r--r--src/corelib/tools/qmap.cpp101
-rw-r--r--src/corelib/tools/qmap.h104
-rw-r--r--src/corelib/tools/qmargins.cpp167
-rw-r--r--src/corelib/tools/qmargins.h147
-rw-r--r--src/corelib/tools/qpair.h30
-rw-r--r--src/corelib/tools/qpair.qdoc229
-rw-r--r--src/corelib/tools/qpodlist_p.h222
-rw-r--r--src/corelib/tools/qpoint.cpp34
-rw-r--r--src/corelib/tools/qpoint.h30
-rw-r--r--src/corelib/tools/qqueue.cpp32
-rw-r--r--src/corelib/tools/qqueue.h30
-rw-r--r--src/corelib/tools/qrect.cpp34
-rw-r--r--src/corelib/tools/qrect.h30
-rw-r--r--src/corelib/tools/qregexp.cpp213
-rw-r--r--src/corelib/tools/qregexp.h41
-rw-r--r--src/corelib/tools/qringbuffer_p.h82
-rw-r--r--src/corelib/tools/qscopedpointer.cpp228
-rw-r--r--src/corelib/tools/qscopedpointer.h215
-rw-r--r--src/corelib/tools/qscopedpointer_p.h151
-rw-r--r--src/corelib/tools/qset.h30
-rw-r--r--src/corelib/tools/qset.qdoc953
-rw-r--r--src/corelib/tools/qshareddata.cpp706
-rw-r--r--src/corelib/tools/qshareddata.h34
-rw-r--r--src/corelib/tools/qsharedpointer.cpp47
-rw-r--r--src/corelib/tools/qsharedpointer.h30
-rw-r--r--src/corelib/tools/qsharedpointer_impl.h62
-rw-r--r--src/corelib/tools/qsize.cpp34
-rw-r--r--src/corelib/tools/qsize.h30
-rw-r--r--src/corelib/tools/qstack.cpp32
-rw-r--r--src/corelib/tools/qstack.h30
-rw-r--r--src/corelib/tools/qstring.cpp198
-rw-r--r--src/corelib/tools/qstring.h33
-rw-r--r--src/corelib/tools/qstringbuilder.cpp62
-rw-r--r--src/corelib/tools/qstringbuilder.h101
-rw-r--r--src/corelib/tools/qstringlist.cpp35
-rw-r--r--src/corelib/tools/qstringlist.h31
-rw-r--r--src/corelib/tools/qstringmatcher.cpp32
-rw-r--r--src/corelib/tools/qstringmatcher.h36
-rw-r--r--src/corelib/tools/qtextboundaryfinder.cpp44
-rw-r--r--src/corelib/tools/qtextboundaryfinder.h30
-rw-r--r--src/corelib/tools/qtimeline.cpp36
-rw-r--r--src/corelib/tools/qtimeline.h30
-rw-r--r--src/corelib/tools/qtools_p.h30
-rw-r--r--src/corelib/tools/qunicodetables.cpp30
-rw-r--r--src/corelib/tools/qunicodetables_p.h34
-rw-r--r--src/corelib/tools/qvarlengtharray.h112
-rw-r--r--src/corelib/tools/qvarlengtharray.qdoc274
-rw-r--r--src/corelib/tools/qvector.cpp62
-rw-r--r--src/corelib/tools/qvector.h159
-rw-r--r--src/corelib/tools/qvsnprintf.cpp30
-rw-r--r--src/corelib/tools/tools.pri137
-rwxr-xr-xsrc/corelib/xml/make-parser.sh42
-rw-r--r--src/corelib/xml/qxmlstream.cpp156
-rw-r--r--src/corelib/xml/qxmlstream.g39
-rw-r--r--src/corelib/xml/qxmlstream.h51
-rw-r--r--src/corelib/xml/qxmlstream_p.h389
-rw-r--r--src/corelib/xml/qxmlutils.cpp34
-rw-r--r--src/corelib/xml/qxmlutils_p.h32
-rw-r--r--src/dbus/dbus.pro149
-rw-r--r--src/dbus/qdbus_symbols.cpp30
-rw-r--r--src/dbus/qdbus_symbols_p.h33
-rw-r--r--src/dbus/qdbusabstractadaptor.cpp32
-rw-r--r--src/dbus/qdbusabstractadaptor.h30
-rw-r--r--src/dbus/qdbusabstractadaptor_p.h30
-rw-r--r--src/dbus/qdbusabstractinterface.cpp69
-rw-r--r--src/dbus/qdbusabstractinterface.h30
-rw-r--r--src/dbus/qdbusabstractinterface_p.h30
-rw-r--r--src/dbus/qdbusargument.cpp30
-rw-r--r--src/dbus/qdbusargument.h30
-rw-r--r--src/dbus/qdbusargument_p.h30
-rw-r--r--src/dbus/qdbusconnection.cpp179
-rw-r--r--src/dbus/qdbusconnection.h42
-rw-r--r--src/dbus/qdbusconnection_p.h45
-rw-r--r--src/dbus/qdbusconnectioninterface.cpp44
-rw-r--r--src/dbus/qdbusconnectioninterface.h30
-rw-r--r--src/dbus/qdbuscontext.cpp30
-rw-r--r--src/dbus/qdbuscontext.h32
-rw-r--r--src/dbus/qdbuscontext_p.h30
-rw-r--r--src/dbus/qdbusdemarshaller.cpp30
-rw-r--r--src/dbus/qdbuserror.cpp30
-rw-r--r--src/dbus/qdbuserror.h30
-rw-r--r--src/dbus/qdbusextratypes.cpp30
-rw-r--r--src/dbus/qdbusextratypes.h33
-rw-r--r--src/dbus/qdbusintegrator.cpp202
-rw-r--r--src/dbus/qdbusintegrator_p.h30
-rw-r--r--src/dbus/qdbusinterface.cpp36
-rw-r--r--src/dbus/qdbusinterface.h30
-rw-r--r--src/dbus/qdbusinterface_p.h30
-rw-r--r--src/dbus/qdbusinternalfilters.cpp30
-rw-r--r--src/dbus/qdbusintrospection.cpp30
-rw-r--r--src/dbus/qdbusintrospection_p.h30
-rw-r--r--src/dbus/qdbusmacros.h30
-rw-r--r--src/dbus/qdbusmarshaller.cpp30
-rw-r--r--src/dbus/qdbusmessage.cpp32
-rw-r--r--src/dbus/qdbusmessage.h30
-rw-r--r--src/dbus/qdbusmessage_p.h30
-rw-r--r--src/dbus/qdbusmetaobject.cpp30
-rw-r--r--src/dbus/qdbusmetaobject_p.h30
-rw-r--r--src/dbus/qdbusmetatype.cpp30
-rw-r--r--src/dbus/qdbusmetatype.h30
-rw-r--r--src/dbus/qdbusmetatype_p.h30
-rw-r--r--src/dbus/qdbusmisc.cpp30
-rw-r--r--src/dbus/qdbuspendingcall.cpp30
-rw-r--r--src/dbus/qdbuspendingcall.h30
-rw-r--r--src/dbus/qdbuspendingcall_p.h30
-rw-r--r--src/dbus/qdbuspendingreply.cpp30
-rw-r--r--src/dbus/qdbuspendingreply.h30
-rw-r--r--src/dbus/qdbusreply.cpp30
-rw-r--r--src/dbus/qdbusreply.h30
-rw-r--r--src/dbus/qdbusserver.cpp34
-rw-r--r--src/dbus/qdbusserver.h30
-rw-r--r--src/dbus/qdbusservicewatcher.cpp377
-rw-r--r--src/dbus/qdbusservicewatcher.h103
-rw-r--r--src/dbus/qdbusthread.cpp171
-rw-r--r--src/dbus/qdbusthreaddebug_p.h30
-rw-r--r--src/dbus/qdbusutil.cpp30
-rw-r--r--src/dbus/qdbusutil_p.h30
-rw-r--r--src/dbus/qdbusxmlgenerator.cpp32
-rw-r--r--src/dbus/qdbusxmlparser.cpp30
-rw-r--r--src/dbus/qdbusxmlparser_p.h30
-rw-r--r--src/gui/accessible/qaccessible.cpp42
-rw-r--r--src/gui/accessible/qaccessible.h42
-rw-r--r--src/gui/accessible/qaccessible2.cpp54
-rw-r--r--src/gui/accessible/qaccessible2.h59
-rw-r--r--src/gui/accessible/qaccessible_mac.mm35
-rw-r--r--src/gui/accessible/qaccessible_mac_carbon.cpp30
-rw-r--r--src/gui/accessible/qaccessible_mac_cocoa.mm45
-rw-r--r--src/gui/accessible/qaccessible_mac_p.h30
-rw-r--r--src/gui/accessible/qaccessible_unix.cpp30
-rw-r--r--src/gui/accessible/qaccessible_win.cpp30
-rw-r--r--src/gui/accessible/qaccessiblebridge.cpp30
-rw-r--r--src/gui/accessible/qaccessiblebridge.h30
-rw-r--r--src/gui/accessible/qaccessibleobject.cpp30
-rw-r--r--src/gui/accessible/qaccessibleobject.h30
-rw-r--r--src/gui/accessible/qaccessibleplugin.cpp30
-rw-r--r--src/gui/accessible/qaccessibleplugin.h30
-rw-r--r--src/gui/accessible/qaccessiblewidget.cpp30
-rw-r--r--src/gui/accessible/qaccessiblewidget.h30
-rw-r--r--src/gui/animation/qguivariantanimation.cpp62
-rw-r--r--src/gui/controls/qlinecontrol.cpp121
-rw-r--r--src/gui/controls/qlinecontrol_p.h63
-rw-r--r--src/gui/dialogs/dialogs.pri10
-rw-r--r--src/gui/dialogs/qabstractpagesetupdialog.cpp30
-rw-r--r--src/gui/dialogs/qabstractpagesetupdialog.h30
-rw-r--r--src/gui/dialogs/qabstractpagesetupdialog_p.h30
-rw-r--r--src/gui/dialogs/qabstractprintdialog.cpp35
-rw-r--r--src/gui/dialogs/qabstractprintdialog.h30
-rw-r--r--src/gui/dialogs/qabstractprintdialog_p.h30
-rw-r--r--src/gui/dialogs/qcolordialog.cpp203
-rw-r--r--src/gui/dialogs/qcolordialog.h30
-rw-r--r--src/gui/dialogs/qcolordialog_mac.mm63
-rw-r--r--src/gui/dialogs/qcolordialog_p.h31
-rw-r--r--src/gui/dialogs/qdialog.cpp162
-rw-r--r--src/gui/dialogs/qdialog.h38
-rw-r--r--src/gui/dialogs/qdialog_p.h32
-rw-r--r--src/gui/dialogs/qdialogsbinarycompat_win.cpp30
-rw-r--r--src/gui/dialogs/qerrormessage.cpp66
-rw-r--r--src/gui/dialogs/qerrormessage.h30
-rw-r--r--src/gui/dialogs/qfiledialog.cpp188
-rw-r--r--src/gui/dialogs/qfiledialog.h30
-rw-r--r--src/gui/dialogs/qfiledialog.ui30
-rw-r--r--src/gui/dialogs/qfiledialog_embedded.ui340
-rw-r--r--src/gui/dialogs/qfiledialog_mac.mm49
-rw-r--r--src/gui/dialogs/qfiledialog_p.h117
-rw-r--r--src/gui/dialogs/qfiledialog_win.cpp76
-rw-r--r--src/gui/dialogs/qfiledialog_win_p.h199
-rw-r--r--src/gui/dialogs/qfiledialog_wince.ui342
-rw-r--r--src/gui/dialogs/qfileinfogatherer.cpp64
-rw-r--r--src/gui/dialogs/qfileinfogatherer_p.h32
-rw-r--r--src/gui/dialogs/qfilesystemmodel.cpp83
-rw-r--r--src/gui/dialogs/qfilesystemmodel.h30
-rw-r--r--src/gui/dialogs/qfilesystemmodel_p.h43
-rw-r--r--src/gui/dialogs/qfontdialog.cpp55
-rw-r--r--src/gui/dialogs/qfontdialog.h30
-rw-r--r--src/gui/dialogs/qfontdialog_mac.mm35
-rw-r--r--src/gui/dialogs/qfontdialog_p.h30
-rw-r--r--src/gui/dialogs/qfscompleter_p.h82
-rw-r--r--src/gui/dialogs/qinputdialog.cpp54
-rw-r--r--src/gui/dialogs/qinputdialog.h30
-rw-r--r--src/gui/dialogs/qmessagebox.cpp45
-rw-r--r--src/gui/dialogs/qmessagebox.h30
-rw-r--r--src/gui/dialogs/qnspanelproxy_mac.mm45
-rw-r--r--src/gui/dialogs/qpagesetupdialog.cpp76
-rw-r--r--src/gui/dialogs/qpagesetupdialog.h30
-rw-r--r--src/gui/dialogs/qpagesetupdialog_mac.mm30
-rw-r--r--src/gui/dialogs/qpagesetupdialog_unix.cpp30
-rw-r--r--src/gui/dialogs/qpagesetupdialog_unix_p.h30
-rw-r--r--src/gui/dialogs/qpagesetupdialog_win.cpp32
-rw-r--r--src/gui/dialogs/qprintdialog.h30
-rw-r--r--src/gui/dialogs/qprintdialog.qdoc72
-rw-r--r--src/gui/dialogs/qprintdialog_mac.mm40
-rw-r--r--src/gui/dialogs/qprintdialog_qws.cpp38
-rw-r--r--src/gui/dialogs/qprintdialog_unix.cpp54
-rw-r--r--src/gui/dialogs/qprintdialog_win.cpp45
-rw-r--r--src/gui/dialogs/qprintpreviewdialog.cpp54
-rw-r--r--src/gui/dialogs/qprintpreviewdialog.h32
-rw-r--r--src/gui/dialogs/qprogressdialog.cpp77
-rw-r--r--src/gui/dialogs/qprogressdialog.h30
-rw-r--r--src/gui/dialogs/qsidebar.cpp58
-rw-r--r--src/gui/dialogs/qsidebar_p.h30
-rw-r--r--src/gui/dialogs/qwizard.cpp120
-rw-r--r--src/gui/dialogs/qwizard.h30
-rw-r--r--src/gui/dialogs/qwizard_win.cpp32
-rw-r--r--src/gui/dialogs/qwizard_win_p.h30
-rw-r--r--src/gui/effects/effects.pri4
-rw-r--r--src/gui/effects/qgraphicseffect.cpp1203
-rw-r--r--src/gui/effects/qgraphicseffect.h289
-rw-r--r--src/gui/effects/qgraphicseffect_p.h220
-rw-r--r--src/gui/egl/egl.pri11
-rw-r--r--src/gui/egl/qegl.cpp166
-rw-r--r--src/gui/egl/qegl_p.h67
-rw-r--r--src/gui/egl/qegl_qws.cpp37
-rw-r--r--src/gui/egl/qegl_symbian.cpp44
-rw-r--r--src/gui/egl/qegl_wince.cpp38
-rw-r--r--src/gui/egl/qegl_x11.cpp38
-rw-r--r--src/gui/egl/qeglproperties.cpp52
-rw-r--r--src/gui/egl/qeglproperties_p.h32
-rw-r--r--src/gui/embedded/directfb.pri39
-rw-r--r--src/gui/embedded/embedded.pri4
-rw-r--r--src/gui/embedded/qcopchannel_qws.cpp30
-rw-r--r--src/gui/embedded/qcopchannel_qws.h30
-rw-r--r--src/gui/embedded/qdecoration_qws.cpp30
-rw-r--r--src/gui/embedded/qdecoration_qws.h30
-rw-r--r--src/gui/embedded/qdecorationdefault_qws.cpp32
-rw-r--r--src/gui/embedded/qdecorationdefault_qws.h30
-rw-r--r--src/gui/embedded/qdecorationfactory_qws.cpp30
-rw-r--r--src/gui/embedded/qdecorationfactory_qws.h30
-rw-r--r--src/gui/embedded/qdecorationplugin_qws.cpp30
-rw-r--r--src/gui/embedded/qdecorationplugin_qws.h30
-rw-r--r--src/gui/embedded/qdecorationstyled_qws.cpp30
-rw-r--r--src/gui/embedded/qdecorationstyled_qws.h30
-rw-r--r--src/gui/embedded/qdecorationwindows_qws.cpp32
-rw-r--r--src/gui/embedded/qdecorationwindows_qws.h30
-rw-r--r--src/gui/embedded/qdirectpainter_qws.cpp32
-rw-r--r--src/gui/embedded/qdirectpainter_qws.h30
-rw-r--r--src/gui/embedded/qkbd_defaultmap_qws_p.h32
-rw-r--r--src/gui/embedded/qkbd_qws.cpp30
-rw-r--r--src/gui/embedded/qkbd_qws.h30
-rw-r--r--src/gui/embedded/qkbd_qws_p.h34
-rw-r--r--src/gui/embedded/qkbddriverfactory_qws.cpp30
-rw-r--r--src/gui/embedded/qkbddriverfactory_qws.h30
-rw-r--r--src/gui/embedded/qkbddriverplugin_qws.cpp30
-rw-r--r--src/gui/embedded/qkbddriverplugin_qws.h30
-rw-r--r--src/gui/embedded/qkbdlinuxinput_qws.cpp30
-rw-r--r--src/gui/embedded/qkbdlinuxinput_qws.h30
-rw-r--r--src/gui/embedded/qkbdqnx_qws.cpp35
-rw-r--r--src/gui/embedded/qkbdqnx_qws.h30
-rw-r--r--src/gui/embedded/qkbdtty_qws.cpp30
-rw-r--r--src/gui/embedded/qkbdtty_qws.h30
-rw-r--r--src/gui/embedded/qkbdum_qws.cpp30
-rw-r--r--src/gui/embedded/qkbdum_qws.h30
-rw-r--r--src/gui/embedded/qkbdvfb_qws.cpp30
-rw-r--r--src/gui/embedded/qkbdvfb_qws.h30
-rw-r--r--src/gui/embedded/qlock.cpp42
-rw-r--r--src/gui/embedded/qlock_p.h30
-rw-r--r--src/gui/embedded/qmouse_qws.cpp30
-rw-r--r--src/gui/embedded/qmouse_qws.h30
-rw-r--r--src/gui/embedded/qmousedriverfactory_qws.cpp30
-rw-r--r--src/gui/embedded/qmousedriverfactory_qws.h30
-rw-r--r--src/gui/embedded/qmousedriverplugin_qws.cpp30
-rw-r--r--src/gui/embedded/qmousedriverplugin_qws.h30
-rw-r--r--src/gui/embedded/qmouselinuxinput_qws.cpp30
-rw-r--r--src/gui/embedded/qmouselinuxinput_qws.h30
-rw-r--r--src/gui/embedded/qmouselinuxtp_qws.cpp30
-rw-r--r--src/gui/embedded/qmouselinuxtp_qws.h30
-rw-r--r--src/gui/embedded/qmousepc_qws.cpp30
-rw-r--r--src/gui/embedded/qmousepc_qws.h30
-rw-r--r--src/gui/embedded/qmouseqnx_qws.cpp30
-rw-r--r--src/gui/embedded/qmouseqnx_qws.h30
-rw-r--r--src/gui/embedded/qmousetslib_qws.cpp30
-rw-r--r--src/gui/embedded/qmousetslib_qws.h32
-rw-r--r--src/gui/embedded/qmousevfb_qws.cpp30
-rw-r--r--src/gui/embedded/qmousevfb_qws.h30
-rw-r--r--src/gui/embedded/qscreen_qws.cpp72
-rw-r--r--src/gui/embedded/qscreen_qws.h37
-rw-r--r--src/gui/embedded/qscreendriverfactory_qws.cpp39
-rw-r--r--src/gui/embedded/qscreendriverfactory_qws.h30
-rw-r--r--src/gui/embedded/qscreendriverplugin_qws.cpp30
-rw-r--r--src/gui/embedded/qscreendriverplugin_qws.h30
-rw-r--r--src/gui/embedded/qscreenlinuxfb_qws.cpp52
-rw-r--r--src/gui/embedded/qscreenlinuxfb_qws.h38
-rw-r--r--src/gui/embedded/qscreenmulti_qws.cpp34
-rw-r--r--src/gui/embedded/qscreenmulti_qws_p.h30
-rw-r--r--src/gui/embedded/qscreenproxy_qws.cpp33
-rw-r--r--src/gui/embedded/qscreenproxy_qws.h30
-rw-r--r--src/gui/embedded/qscreenqnx_qws.cpp33
-rw-r--r--src/gui/embedded/qscreenqnx_qws.h30
-rw-r--r--src/gui/embedded/qscreentransformed_qws.cpp30
-rw-r--r--src/gui/embedded/qscreentransformed_qws.h30
-rw-r--r--src/gui/embedded/qscreenvfb_qws.cpp38
-rw-r--r--src/gui/embedded/qscreenvfb_qws.h30
-rw-r--r--src/gui/embedded/qsoundqss_qws.cpp79
-rw-r--r--src/gui/embedded/qsoundqss_qws.h30
-rw-r--r--src/gui/embedded/qtransportauth_qws.cpp30
-rw-r--r--src/gui/embedded/qtransportauth_qws.h30
-rw-r--r--src/gui/embedded/qtransportauth_qws_p.h30
-rw-r--r--src/gui/embedded/qtransportauthdefs_qws.h30
-rw-r--r--src/gui/embedded/qunixsocket.cpp30
-rw-r--r--src/gui/embedded/qunixsocket_p.h30
-rw-r--r--src/gui/embedded/qunixsocketserver.cpp30
-rw-r--r--src/gui/embedded/qunixsocketserver_p.h30
-rw-r--r--src/gui/embedded/qvfbhdr.h65
-rw-r--r--src/gui/embedded/qwindowsystem_p.h30
-rw-r--r--src/gui/embedded/qwindowsystem_qws.cpp82
-rw-r--r--src/gui/embedded/qwindowsystem_qws.h30
-rw-r--r--src/gui/embedded/qwscommand_qws.cpp30
-rw-r--r--src/gui/embedded/qwscommand_qws_p.h32
-rw-r--r--src/gui/embedded/qwscursor_qws.cpp34
-rw-r--r--src/gui/embedded/qwscursor_qws.h30
-rw-r--r--src/gui/embedded/qwsdisplay_qws.h30
-rw-r--r--src/gui/embedded/qwsdisplay_qws_p.h30
-rw-r--r--src/gui/embedded/qwsembedwidget.cpp30
-rw-r--r--src/gui/embedded/qwsembedwidget.h30
-rw-r--r--src/gui/embedded/qwsevent_qws.cpp30
-rw-r--r--src/gui/embedded/qwsevent_qws.h30
-rw-r--r--src/gui/embedded/qwslock.cpp30
-rw-r--r--src/gui/embedded/qwslock_p.h30
-rw-r--r--src/gui/embedded/qwsmanager_p.h30
-rw-r--r--src/gui/embedded/qwsmanager_qws.cpp30
-rw-r--r--src/gui/embedded/qwsmanager_qws.h30
-rw-r--r--src/gui/embedded/qwsproperty_qws.cpp30
-rw-r--r--src/gui/embedded/qwsproperty_qws.h30
-rw-r--r--src/gui/embedded/qwsprotocolitem_qws.h30
-rw-r--r--src/gui/embedded/qwssharedmemory.cpp30
-rw-r--r--src/gui/embedded/qwssharedmemory_p.h34
-rw-r--r--src/gui/embedded/qwssignalhandler.cpp30
-rw-r--r--src/gui/embedded/qwssignalhandler_p.h30
-rw-r--r--src/gui/embedded/qwssocket_qws.cpp30
-rw-r--r--src/gui/embedded/qwssocket_qws.h30
-rw-r--r--src/gui/embedded/qwsutils_qws.h42
-rw-r--r--src/gui/graphicsview/graphicsview.pri12
-rw-r--r--src/gui/graphicsview/qgraph_p.h284
-rw-r--r--src/gui/graphicsview/qgraphicsanchorlayout.cpp530
-rw-r--r--src/gui/graphicsview/qgraphicsanchorlayout.h128
-rw-r--r--src/gui/graphicsview/qgraphicsanchorlayout_p.cpp2790
-rw-r--r--src/gui/graphicsview/qgraphicsanchorlayout_p.h582
-rw-r--r--src/gui/graphicsview/qgraphicsgridlayout.cpp62
-rw-r--r--src/gui/graphicsview/qgraphicsgridlayout.h30
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp1708
-rw-r--r--src/gui/graphicsview/qgraphicsitem.h79
-rw-r--r--src/gui/graphicsview/qgraphicsitem_p.h317
-rw-r--r--src/gui/graphicsview/qgraphicsitemanimation.cpp32
-rw-r--r--src/gui/graphicsview/qgraphicsitemanimation.h30
-rw-r--r--src/gui/graphicsview/qgraphicslayout.cpp55
-rw-r--r--src/gui/graphicsview/qgraphicslayout.h31
-rw-r--r--src/gui/graphicsview/qgraphicslayout_p.cpp30
-rw-r--r--src/gui/graphicsview/qgraphicslayout_p.h85
-rw-r--r--src/gui/graphicsview/qgraphicslayoutitem.cpp32
-rw-r--r--src/gui/graphicsview/qgraphicslayoutitem.h33
-rw-r--r--src/gui/graphicsview/qgraphicslayoutitem_p.h34
-rw-r--r--src/gui/graphicsview/qgraphicslinearlayout.cpp51
-rw-r--r--src/gui/graphicsview/qgraphicslinearlayout.h32
-rw-r--r--src/gui/graphicsview/qgraphicsproxywidget.cpp50
-rw-r--r--src/gui/graphicsview/qgraphicsproxywidget.h32
-rw-r--r--src/gui/graphicsview/qgraphicsproxywidget_p.h34
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp1290
-rw-r--r--src/gui/graphicsview/qgraphicsscene.h37
-rw-r--r--src/gui/graphicsview/qgraphicsscene_bsp.cpp30
-rw-r--r--src/gui/graphicsview/qgraphicsscene_bsp_p.h30
-rw-r--r--src/gui/graphicsview/qgraphicsscene_p.h104
-rw-r--r--src/gui/graphicsview/qgraphicsscenebsptreeindex.cpp119
-rw-r--r--src/gui/graphicsview/qgraphicsscenebsptreeindex_p.h38
-rw-r--r--src/gui/graphicsview/qgraphicssceneevent.cpp48
-rw-r--r--src/gui/graphicsview/qgraphicssceneevent.h33
-rw-r--r--src/gui/graphicsview/qgraphicssceneindex.cpp48
-rw-r--r--src/gui/graphicsview/qgraphicssceneindex_p.h44
-rw-r--r--src/gui/graphicsview/qgraphicsscenelinearindex.cpp32
-rw-r--r--src/gui/graphicsview/qgraphicsscenelinearindex_p.h32
-rw-r--r--src/gui/graphicsview/qgraphicstransform.cpp255
-rw-r--r--src/gui/graphicsview/qgraphicstransform.h58
-rw-r--r--src/gui/graphicsview/qgraphicstransform_p.h37
-rw-r--r--src/gui/graphicsview/qgraphicsview.cpp158
-rw-r--r--src/gui/graphicsview/qgraphicsview.h30
-rw-r--r--src/gui/graphicsview/qgraphicsview_p.h41
-rw-r--r--src/gui/graphicsview/qgraphicswidget.cpp128
-rw-r--r--src/gui/graphicsview/qgraphicswidget.h40
-rw-r--r--src/gui/graphicsview/qgraphicswidget_p.cpp194
-rw-r--r--src/gui/graphicsview/qgraphicswidget_p.h36
-rw-r--r--src/gui/graphicsview/qgridlayoutengine.cpp52
-rw-r--r--src/gui/graphicsview/qgridlayoutengine_p.h59
-rw-r--r--src/gui/graphicsview/qsimplex_p.cpp673
-rw-r--r--src/gui/graphicsview/qsimplex_p.h208
-rw-r--r--src/gui/gui.pro11
-rw-r--r--src/gui/image/image.pri6
-rw-r--r--src/gui/image/qbitmap.cpp49
-rw-r--r--src/gui/image/qbitmap.h32
-rw-r--r--src/gui/image/qbmphandler.cpp60
-rw-r--r--src/gui/image/qbmphandler_p.h30
-rw-r--r--src/gui/image/qicon.cpp71
-rw-r--r--src/gui/image/qicon.h30
-rw-r--r--src/gui/image/qicon_p.h33
-rw-r--r--src/gui/image/qiconengine.cpp34
-rw-r--r--src/gui/image/qiconengine.h30
-rw-r--r--src/gui/image/qiconengineplugin.cpp30
-rw-r--r--src/gui/image/qiconengineplugin.h30
-rw-r--r--src/gui/image/qiconloader.cpp166
-rw-r--r--src/gui/image/qiconloader_p.h36
-rw-r--r--src/gui/image/qimage.cpp274
-rw-r--r--src/gui/image/qimage.h41
-rw-r--r--src/gui/image/qimage_p.h32
-rw-r--r--src/gui/image/qimageiohandler.cpp31
-rw-r--r--src/gui/image/qimageiohandler.h33
-rw-r--r--src/gui/image/qimagepixmapcleanuphooks.cpp97
-rw-r--r--src/gui/image/qimagepixmapcleanuphooks_p.h54
-rw-r--r--src/gui/image/qimagereader.cpp93
-rw-r--r--src/gui/image/qimagereader.h33
-rw-r--r--src/gui/image/qimagewriter.cpp32
-rw-r--r--src/gui/image/qimagewriter.h30
-rw-r--r--src/gui/image/qmovie.cpp36
-rw-r--r--src/gui/image/qmovie.h30
-rw-r--r--src/gui/image/qnativeimage.cpp50
-rw-r--r--src/gui/image/qnativeimage_p.h30
-rw-r--r--src/gui/image/qpaintengine_pic.cpp30
-rw-r--r--src/gui/image/qpaintengine_pic_p.h30
-rw-r--r--src/gui/image/qpicture.cpp110
-rw-r--r--src/gui/image/qpicture.h37
-rw-r--r--src/gui/image/qpicture_p.h38
-rw-r--r--src/gui/image/qpictureformatplugin.cpp30
-rw-r--r--src/gui/image/qpictureformatplugin.h30
-rw-r--r--src/gui/image/qpixmap.cpp292
-rw-r--r--src/gui/image/qpixmap.h57
-rw-r--r--src/gui/image/qpixmap_mac.cpp85
-rw-r--r--src/gui/image/qpixmap_mac_p.h33
-rw-r--r--src/gui/image/qpixmap_qws.cpp58
-rw-r--r--src/gui/image/qpixmap_raster.cpp70
-rw-r--r--src/gui/image/qpixmap_raster_p.h36
-rw-r--r--src/gui/image/qpixmap_s60.cpp985
-rw-r--r--src/gui/image/qpixmap_s60_p.h134
-rw-r--r--src/gui/image/qpixmap_win.cpp158
-rw-r--r--src/gui/image/qpixmap_x11.cpp126
-rw-r--r--src/gui/image/qpixmap_x11_p.h35
-rw-r--r--src/gui/image/qpixmapcache.cpp119
-rw-r--r--src/gui/image/qpixmapcache.h30
-rw-r--r--src/gui/image/qpixmapcache_p.h38
-rw-r--r--src/gui/image/qpixmapdata.cpp109
-rw-r--r--src/gui/image/qpixmapdata_p.h69
-rw-r--r--src/gui/image/qpixmapdatafactory.cpp37
-rw-r--r--src/gui/image/qpixmapdatafactory_p.h30
-rw-r--r--src/gui/image/qpixmapfilter.cpp385
-rw-r--r--src/gui/image/qpixmapfilter_p.h61
-rw-r--r--src/gui/image/qpnghandler.cpp50
-rw-r--r--src/gui/image/qpnghandler_p.h30
-rw-r--r--src/gui/image/qppmhandler.cpp36
-rw-r--r--src/gui/image/qppmhandler_p.h30
-rw-r--r--src/gui/image/qxbmhandler.cpp32
-rw-r--r--src/gui/image/qxbmhandler_p.h30
-rw-r--r--src/gui/image/qxpmhandler.cpp32
-rw-r--r--src/gui/image/qxpmhandler_p.h30
-rw-r--r--src/gui/inputmethod/inputmethod.pri5
-rw-r--r--src/gui/inputmethod/qcoefepinputcontext_p.h157
-rw-r--r--src/gui/inputmethod/qcoefepinputcontext_s60.cpp770
-rw-r--r--src/gui/inputmethod/qinputcontext.cpp123
-rw-r--r--src/gui/inputmethod/qinputcontext.h37
-rw-r--r--src/gui/inputmethod/qinputcontext_p.h30
-rw-r--r--src/gui/inputmethod/qinputcontextfactory.cpp54
-rw-r--r--src/gui/inputmethod/qinputcontextfactory.h30
-rw-r--r--src/gui/inputmethod/qinputcontextplugin.cpp30
-rw-r--r--src/gui/inputmethod/qinputcontextplugin.h30
-rw-r--r--src/gui/inputmethod/qmacinputcontext_mac.cpp36
-rw-r--r--src/gui/inputmethod/qmacinputcontext_p.h30
-rw-r--r--src/gui/inputmethod/qwininputcontext_p.h44
-rw-r--r--src/gui/inputmethod/qwininputcontext_win.cpp111
-rw-r--r--src/gui/inputmethod/qwsinputcontext_p.h30
-rw-r--r--src/gui/inputmethod/qwsinputcontext_qws.cpp46
-rw-r--r--src/gui/inputmethod/qximinputcontext_p.h30
-rw-r--r--src/gui/inputmethod/qximinputcontext_x11.cpp32
-rw-r--r--src/gui/itemviews/qabstractitemdelegate.cpp32
-rw-r--r--src/gui/itemviews/qabstractitemdelegate.h30
-rw-r--r--src/gui/itemviews/qabstractitemview.cpp251
-rw-r--r--src/gui/itemviews/qabstractitemview.h38
-rw-r--r--src/gui/itemviews/qabstractitemview_p.h72
-rw-r--r--src/gui/itemviews/qabstractproxymodel.cpp30
-rw-r--r--src/gui/itemviews/qabstractproxymodel.h30
-rw-r--r--src/gui/itemviews/qabstractproxymodel_p.h30
-rw-r--r--src/gui/itemviews/qbsptree.cpp30
-rw-r--r--src/gui/itemviews/qbsptree_p.h30
-rw-r--r--src/gui/itemviews/qcolumnview.cpp56
-rw-r--r--src/gui/itemviews/qcolumnview.h30
-rw-r--r--src/gui/itemviews/qcolumnview_p.h36
-rw-r--r--src/gui/itemviews/qcolumnviewgrip.cpp30
-rw-r--r--src/gui/itemviews/qcolumnviewgrip_p.h30
-rw-r--r--src/gui/itemviews/qdatawidgetmapper.cpp30
-rw-r--r--src/gui/itemviews/qdatawidgetmapper.h30
-rw-r--r--src/gui/itemviews/qdirmodel.cpp57
-rw-r--r--src/gui/itemviews/qdirmodel.h30
-rw-r--r--src/gui/itemviews/qfileiconprovider.cpp72
-rw-r--r--src/gui/itemviews/qfileiconprovider.h35
-rw-r--r--src/gui/itemviews/qheaderview.cpp83
-rw-r--r--src/gui/itemviews/qheaderview.h30
-rw-r--r--src/gui/itemviews/qheaderview_p.h30
-rw-r--r--src/gui/itemviews/qitemdelegate.cpp38
-rw-r--r--src/gui/itemviews/qitemdelegate.h30
-rw-r--r--src/gui/itemviews/qitemeditorfactory.cpp30
-rw-r--r--src/gui/itemviews/qitemeditorfactory.h30
-rw-r--r--src/gui/itemviews/qitemeditorfactory_p.h30
-rw-r--r--src/gui/itemviews/qitemselectionmodel.cpp71
-rw-r--r--src/gui/itemviews/qitemselectionmodel.h30
-rw-r--r--src/gui/itemviews/qitemselectionmodel_p.h30
-rw-r--r--src/gui/itemviews/qlistview.cpp1197
-rw-r--r--src/gui/itemviews/qlistview.h30
-rw-r--r--src/gui/itemviews/qlistview_p.h250
-rw-r--r--src/gui/itemviews/qlistwidget.cpp66
-rw-r--r--src/gui/itemviews/qlistwidget.h30
-rw-r--r--src/gui/itemviews/qlistwidget_p.h33
-rw-r--r--src/gui/itemviews/qproxymodel.cpp30
-rw-r--r--src/gui/itemviews/qproxymodel.h30
-rw-r--r--src/gui/itemviews/qproxymodel_p.h30
-rw-r--r--src/gui/itemviews/qsortfilterproxymodel.cpp47
-rw-r--r--src/gui/itemviews/qsortfilterproxymodel.h31
-rw-r--r--src/gui/itemviews/qstandarditemmodel.cpp65
-rw-r--r--src/gui/itemviews/qstandarditemmodel.h32
-rw-r--r--src/gui/itemviews/qstandarditemmodel_p.h36
-rw-r--r--src/gui/itemviews/qstringlistmodel.cpp32
-rw-r--r--src/gui/itemviews/qstringlistmodel.h30
-rw-r--r--src/gui/itemviews/qstyleditemdelegate.cpp36
-rw-r--r--src/gui/itemviews/qstyleditemdelegate.h30
-rw-r--r--src/gui/itemviews/qtableview.cpp735
-rw-r--r--src/gui/itemviews/qtableview.h34
-rw-r--r--src/gui/itemviews/qtableview_p.h61
-rw-r--r--src/gui/itemviews/qtablewidget.cpp42
-rw-r--r--src/gui/itemviews/qtablewidget.h30
-rw-r--r--src/gui/itemviews/qtablewidget_p.h30
-rw-r--r--src/gui/itemviews/qtreeview.cpp152
-rw-r--r--src/gui/itemviews/qtreeview.h30
-rw-r--r--src/gui/itemviews/qtreeview_p.h39
-rw-r--r--src/gui/itemviews/qtreewidget.cpp56
-rw-r--r--src/gui/itemviews/qtreewidget.h30
-rw-r--r--src/gui/itemviews/qtreewidget_p.h30
-rw-r--r--src/gui/itemviews/qtreewidgetitemiterator.cpp33
-rw-r--r--src/gui/itemviews/qtreewidgetitemiterator.h33
-rw-r--r--src/gui/itemviews/qtreewidgetitemiterator_p.h30
-rw-r--r--src/gui/itemviews/qwidgetitemdata_p.h30
-rw-r--r--src/gui/kernel/kernel.pri60
-rw-r--r--src/gui/kernel/qaction.cpp115
-rw-r--r--src/gui/kernel/qaction.h40
-rw-r--r--src/gui/kernel/qaction_p.h33
-rw-r--r--src/gui/kernel/qactiongroup.cpp46
-rw-r--r--src/gui/kernel/qactiongroup.h30
-rw-r--r--src/gui/kernel/qapplication.cpp522
-rw-r--r--src/gui/kernel/qapplication.h67
-rw-r--r--src/gui/kernel/qapplication_mac.mm172
-rw-r--r--src/gui/kernel/qapplication_p.h109
-rw-r--r--src/gui/kernel/qapplication_qws.cpp95
-rw-r--r--src/gui/kernel/qapplication_s60.cpp1926
-rw-r--r--src/gui/kernel/qapplication_win.cpp498
-rw-r--r--src/gui/kernel/qapplication_x11.cpp241
-rw-r--r--src/gui/kernel/qboxlayout.cpp64
-rw-r--r--src/gui/kernel/qboxlayout.h30
-rw-r--r--src/gui/kernel/qclipboard.cpp38
-rw-r--r--src/gui/kernel/qclipboard.h30
-rw-r--r--src/gui/kernel/qclipboard_mac.cpp32
-rw-r--r--src/gui/kernel/qclipboard_p.h30
-rw-r--r--src/gui/kernel/qclipboard_qws.cpp30
-rw-r--r--src/gui/kernel/qclipboard_s60.cpp266
-rw-r--r--src/gui/kernel/qclipboard_win.cpp34
-rw-r--r--src/gui/kernel/qclipboard_x11.cpp65
-rw-r--r--src/gui/kernel/qcocoaapplication_mac.mm33
-rw-r--r--src/gui/kernel/qcocoaapplication_mac_p.h30
-rw-r--r--src/gui/kernel/qcocoaapplicationdelegate_mac.mm65
-rw-r--r--src/gui/kernel/qcocoaapplicationdelegate_mac_p.h31
-rw-r--r--src/gui/kernel/qcocoamenuloader_mac.mm42
-rw-r--r--src/gui/kernel/qcocoamenuloader_mac_p.h30
-rw-r--r--src/gui/kernel/qcocoapanel_mac.mm170
-rw-r--r--src/gui/kernel/qcocoapanel_mac_p.h34
-rw-r--r--src/gui/kernel/qcocoasharedwindowmethods_mac_p.h319
-rw-r--r--src/gui/kernel/qcocoaview_mac.mm292
-rw-r--r--src/gui/kernel/qcocoaview_mac_p.h34
-rw-r--r--src/gui/kernel/qcocoawindow_mac.mm170
-rw-r--r--src/gui/kernel/qcocoawindow_mac_p.h41
-rw-r--r--src/gui/kernel/qcocoawindowcustomthemeframe_mac.mm30
-rw-r--r--src/gui/kernel/qcocoawindowcustomthemeframe_mac_p.h30
-rw-r--r--src/gui/kernel/qcocoawindowdelegate_mac.mm77
-rw-r--r--src/gui/kernel/qcocoawindowdelegate_mac_p.h33
-rw-r--r--src/gui/kernel/qcursor.cpp35
-rw-r--r--src/gui/kernel/qcursor.h48
-rw-r--r--src/gui/kernel/qcursor_mac.mm30
-rw-r--r--src/gui/kernel/qcursor_p.h44
-rw-r--r--src/gui/kernel/qcursor_qws.cpp38
-rw-r--r--src/gui/kernel/qcursor_s60.cpp533
-rw-r--r--src/gui/kernel/qcursor_win.cpp40
-rw-r--r--src/gui/kernel/qcursor_x11.cpp33
-rw-r--r--src/gui/kernel/qdesktopwidget.cpp66
-rw-r--r--src/gui/kernel/qdesktopwidget.h36
-rw-r--r--src/gui/kernel/qdesktopwidget.qdoc283
-rw-r--r--src/gui/kernel/qdesktopwidget_mac.mm43
-rw-r--r--src/gui/kernel/qdesktopwidget_mac_p.h30
-rw-r--r--src/gui/kernel/qdesktopwidget_qws.cpp30
-rw-r--r--src/gui/kernel/qdesktopwidget_s60.cpp201
-rw-r--r--src/gui/kernel/qdesktopwidget_win.cpp30
-rw-r--r--src/gui/kernel/qdesktopwidget_x11.cpp41
-rw-r--r--src/gui/kernel/qdnd.cpp30
-rw-r--r--src/gui/kernel/qdnd_mac.mm30
-rw-r--r--src/gui/kernel/qdnd_p.h37
-rw-r--r--src/gui/kernel/qdnd_qws.cpp30
-rw-r--r--src/gui/kernel/qdnd_s60.cpp359
-rw-r--r--src/gui/kernel/qdnd_win.cpp30
-rw-r--r--src/gui/kernel/qdnd_x11.cpp40
-rw-r--r--src/gui/kernel/qdrag.cpp30
-rw-r--r--src/gui/kernel/qdrag.h30
-rw-r--r--src/gui/kernel/qevent.cpp589
-rw-r--r--src/gui/kernel/qevent.h104
-rw-r--r--src/gui/kernel/qevent_p.h59
-rw-r--r--src/gui/kernel/qeventdispatcher_glib_qws.cpp30
-rw-r--r--src/gui/kernel/qeventdispatcher_glib_qws_p.h30
-rw-r--r--src/gui/kernel/qeventdispatcher_mac.mm104
-rw-r--r--src/gui/kernel/qeventdispatcher_mac_p.h32
-rw-r--r--src/gui/kernel/qeventdispatcher_qws.cpp30
-rw-r--r--src/gui/kernel/qeventdispatcher_qws_p.h30
-rw-r--r--src/gui/kernel/qeventdispatcher_s60.cpp130
-rw-r--r--src/gui/kernel/qeventdispatcher_s60_p.h96
-rw-r--r--src/gui/kernel/qeventdispatcher_x11.cpp32
-rw-r--r--src/gui/kernel/qeventdispatcher_x11_p.h30
-rw-r--r--src/gui/kernel/qformlayout.cpp43
-rw-r--r--src/gui/kernel/qformlayout.h30
-rw-r--r--src/gui/kernel/qgesture.cpp798
-rw-r--r--src/gui/kernel/qgesture.h222
-rw-r--r--src/gui/kernel/qgesture_p.h139
-rw-r--r--src/gui/kernel/qgesturemanager.cpp716
-rw-r--r--src/gui/kernel/qgesturemanager_p.h149
-rw-r--r--src/gui/kernel/qgesturerecognizer.cpp230
-rw-r--r--src/gui/kernel/qgesturerecognizer.h98
-rw-r--r--src/gui/kernel/qgridlayout.cpp33
-rw-r--r--src/gui/kernel/qgridlayout.h30
-rw-r--r--src/gui/kernel/qguieventdispatcher_glib.cpp32
-rw-r--r--src/gui/kernel/qguieventdispatcher_glib_p.h30
-rw-r--r--src/gui/kernel/qguifunctions_wince.cpp52
-rw-r--r--src/gui/kernel/qguifunctions_wince.h30
-rw-r--r--src/gui/kernel/qguiplatformplugin.cpp298
-rw-r--r--src/gui/kernel/qguiplatformplugin_p.h126
-rw-r--r--src/gui/kernel/qguivariant.cpp30
-rw-r--r--src/gui/kernel/qkde.cpp63
-rw-r--r--src/gui/kernel/qkde_p.h39
-rw-r--r--src/gui/kernel/qkeymapper.cpp31
-rw-r--r--src/gui/kernel/qkeymapper_mac.cpp40
-rw-r--r--src/gui/kernel/qkeymapper_p.h40
-rw-r--r--src/gui/kernel/qkeymapper_qws.cpp30
-rw-r--r--src/gui/kernel/qkeymapper_s60.cpp247
-rw-r--r--src/gui/kernel/qkeymapper_win.cpp68
-rw-r--r--src/gui/kernel/qkeymapper_x11.cpp318
-rw-r--r--src/gui/kernel/qkeymapper_x11_p.cpp30
-rw-r--r--src/gui/kernel/qkeysequence.cpp433
-rw-r--r--src/gui/kernel/qkeysequence.h42
-rw-r--r--src/gui/kernel/qkeysequence_p.h30
-rw-r--r--src/gui/kernel/qlayout.cpp77
-rw-r--r--src/gui/kernel/qlayout.h33
-rw-r--r--src/gui/kernel/qlayout_p.h30
-rw-r--r--src/gui/kernel/qlayoutengine.cpp30
-rw-r--r--src/gui/kernel/qlayoutengine_p.h30
-rw-r--r--src/gui/kernel/qlayoutitem.cpp33
-rw-r--r--src/gui/kernel/qlayoutitem.h30
-rw-r--r--src/gui/kernel/qmacdefines_mac.h30
-rw-r--r--src/gui/kernel/qmacgesturerecognizer_mac.mm262
-rw-r--r--src/gui/kernel/qmacgesturerecognizer_mac_p.h102
-rw-r--r--src/gui/kernel/qmime.cpp30
-rw-r--r--src/gui/kernel/qmime.h30
-rw-r--r--src/gui/kernel/qmime_mac.cpp46
-rw-r--r--src/gui/kernel/qmime_win.cpp32
-rw-r--r--src/gui/kernel/qmotifdnd_x11.cpp30
-rw-r--r--src/gui/kernel/qmultitouch_mac.mm31
-rw-r--r--src/gui/kernel/qmultitouch_mac_p.h30
-rw-r--r--src/gui/kernel/qnsframeview_mac_p.h30
-rw-r--r--src/gui/kernel/qnsthemeframe_mac_p.h32
-rw-r--r--src/gui/kernel/qnstitledframe_mac_p.h30
-rw-r--r--src/gui/kernel/qole_win.cpp30
-rw-r--r--src/gui/kernel/qpalette.cpp34
-rw-r--r--src/gui/kernel/qpalette.h30
-rw-r--r--src/gui/kernel/qsessionmanager.h30
-rw-r--r--src/gui/kernel/qsessionmanager_qws.cpp30
-rw-r--r--src/gui/kernel/qshortcut.cpp32
-rw-r--r--src/gui/kernel/qshortcut.h30
-rw-r--r--src/gui/kernel/qshortcutmap.cpp39
-rw-r--r--src/gui/kernel/qshortcutmap_p.h33
-rw-r--r--src/gui/kernel/qsizepolicy.h46
-rw-r--r--src/gui/kernel/qsizepolicy.qdoc521
-rw-r--r--src/gui/kernel/qsoftkeymanager.cpp304
-rw-r--r--src/gui/kernel/qsoftkeymanager_p.h109
-rw-r--r--src/gui/kernel/qsound.cpp35
-rw-r--r--src/gui/kernel/qsound.h30
-rw-r--r--src/gui/kernel/qsound_mac.mm30
-rw-r--r--src/gui/kernel/qsound_p.h30
-rw-r--r--src/gui/kernel/qsound_qws.cpp36
-rw-r--r--src/gui/kernel/qsound_s60.cpp224
-rw-r--r--src/gui/kernel/qsound_win.cpp30
-rw-r--r--src/gui/kernel/qsound_x11.cpp30
-rw-r--r--src/gui/kernel/qstackedlayout.cpp32
-rw-r--r--src/gui/kernel/qstackedlayout.h30
-rw-r--r--src/gui/kernel/qstandardgestures.cpp817
-rw-r--r--src/gui/kernel/qstandardgestures.h126
-rw-r--r--src/gui/kernel/qstandardgestures_p.h114
-rw-r--r--src/gui/kernel/qt_cocoa_helpers_mac.mm96
-rw-r--r--src/gui/kernel/qt_cocoa_helpers_mac_p.h35
-rw-r--r--src/gui/kernel/qt_gui_pch.h30
-rw-r--r--src/gui/kernel/qt_mac.cpp49
-rw-r--r--src/gui/kernel/qt_mac_p.h30
-rw-r--r--src/gui/kernel/qt_s60_p.h352
-rw-r--r--src/gui/kernel/qt_x11_p.h35
-rw-r--r--src/gui/kernel/qtooltip.cpp40
-rw-r--r--src/gui/kernel/qtooltip.h30
-rw-r--r--src/gui/kernel/qwhatsthis.cpp34
-rw-r--r--src/gui/kernel/qwhatsthis.h30
-rw-r--r--src/gui/kernel/qwidget.cpp1245
-rw-r--r--src/gui/kernel/qwidget.h70
-rw-r--r--src/gui/kernel/qwidget_mac.mm221
-rw-r--r--src/gui/kernel/qwidget_p.h269
-rw-r--r--src/gui/kernel/qwidget_qws.cpp68
-rw-r--r--src/gui/kernel/qwidget_s60.cpp1295
-rw-r--r--src/gui/kernel/qwidget_win.cpp149
-rw-r--r--src/gui/kernel/qwidget_wince.cpp80
-rw-r--r--src/gui/kernel/qwidget_x11.cpp164
-rw-r--r--src/gui/kernel/qwidgetaction.cpp39
-rw-r--r--src/gui/kernel/qwidgetaction.h30
-rw-r--r--src/gui/kernel/qwidgetaction_p.h30
-rw-r--r--src/gui/kernel/qwidgetcreate_x11.cpp30
-rw-r--r--src/gui/kernel/qwindowdefs.h35
-rw-r--r--src/gui/kernel/qwindowdefs_win.h30
-rw-r--r--src/gui/kernel/qwinnativepangesturerecognizer_win.cpp129
-rw-r--r--src/gui/kernel/qwinnativepangesturerecognizer_win_p.h76
-rw-r--r--src/gui/kernel/qx11embed_x11.cpp38
-rw-r--r--src/gui/kernel/qx11embed_x11.h30
-rw-r--r--src/gui/kernel/qx11info_x11.cpp30
-rw-r--r--src/gui/kernel/qx11info_x11.h30
-rw-r--r--src/gui/kernel/symbian.pri7
-rw-r--r--src/gui/math3d/qgenericmatrix.cpp191
-rw-r--r--src/gui/math3d/qgenericmatrix.h272
-rw-r--r--src/gui/math3d/qmatrix4x4.cpp703
-rw-r--r--src/gui/math3d/qmatrix4x4.h375
-rw-r--r--src/gui/math3d/qquaternion.cpp73
-rw-r--r--src/gui/math3d/qquaternion.h119
-rw-r--r--src/gui/math3d/qvector2d.cpp49
-rw-r--r--src/gui/math3d/qvector2d.h37
-rw-r--r--src/gui/math3d/qvector3d.cpp50
-rw-r--r--src/gui/math3d/qvector3d.h41
-rw-r--r--src/gui/math3d/qvector4d.cpp52
-rw-r--r--src/gui/math3d/qvector4d.h43
-rwxr-xr-xsrc/gui/painting/makepsheader.pl40
-rw-r--r--src/gui/painting/painting.pri38
-rw-r--r--src/gui/painting/qbackingstore.cpp107
-rw-r--r--src/gui/painting/qbackingstore_p.h51
-rw-r--r--src/gui/painting/qbezier.cpp30
-rw-r--r--src/gui/painting/qbezier_p.h30
-rw-r--r--src/gui/painting/qblendfunctions.cpp708
-rw-r--r--src/gui/painting/qblendfunctions_armv6_rvct.s222
-rw-r--r--src/gui/painting/qbrush.cpp171
-rw-r--r--src/gui/painting/qbrush.h36
-rw-r--r--src/gui/painting/qcolor.cpp542
-rw-r--r--src/gui/painting/qcolor.h62
-rw-r--r--src/gui/painting/qcolor_p.cpp30
-rw-r--r--src/gui/painting/qcolor_p.h30
-rw-r--r--src/gui/painting/qcolormap.h30
-rw-r--r--src/gui/painting/qcolormap.qdoc152
-rw-r--r--src/gui/painting/qcolormap_mac.cpp30
-rw-r--r--src/gui/painting/qcolormap_qws.cpp32
-rw-r--r--src/gui/painting/qcolormap_s60.cpp107
-rw-r--r--src/gui/painting/qcolormap_win.cpp30
-rw-r--r--src/gui/painting/qcolormap_x11.cpp30
-rw-r--r--src/gui/painting/qcssutil.cpp30
-rw-r--r--src/gui/painting/qcssutil_p.h30
-rw-r--r--src/gui/painting/qcups.cpp30
-rw-r--r--src/gui/painting/qcups_p.h30
-rw-r--r--src/gui/painting/qdatabuffer_p.h37
-rw-r--r--src/gui/painting/qdrawhelper.cpp362
-rw-r--r--src/gui/painting/qdrawhelper_armv6_p.h81
-rw-r--r--src/gui/painting/qdrawhelper_armv6_rvct.inc496
-rw-r--r--src/gui/painting/qdrawhelper_armv6_rvct.s177
-rw-r--r--src/gui/painting/qdrawhelper_iwmmxt.cpp30
-rw-r--r--src/gui/painting/qdrawhelper_mmx.cpp32
-rw-r--r--src/gui/painting/qdrawhelper_mmx3dnow.cpp33
-rw-r--r--src/gui/painting/qdrawhelper_mmx_p.h32
-rw-r--r--src/gui/painting/qdrawhelper_p.h134
-rw-r--r--src/gui/painting/qdrawhelper_sse.cpp30
-rw-r--r--src/gui/painting/qdrawhelper_sse2.cpp32
-rw-r--r--src/gui/painting/qdrawhelper_sse3dnow.cpp30
-rw-r--r--src/gui/painting/qdrawhelper_sse_p.h32
-rw-r--r--src/gui/painting/qdrawhelper_x86_p.h30
-rw-r--r--src/gui/painting/qdrawutil.cpp567
-rw-r--r--src/gui/painting/qdrawutil.h127
-rw-r--r--src/gui/painting/qemulationpaintengine.cpp30
-rw-r--r--src/gui/painting/qemulationpaintengine_p.h32
-rw-r--r--src/gui/painting/qfixed_p.h30
-rw-r--r--src/gui/painting/qgraphicssystem.cpp37
-rw-r--r--src/gui/painting/qgraphicssystem_mac.cpp30
-rw-r--r--src/gui/painting/qgraphicssystem_mac_p.h30
-rw-r--r--src/gui/painting/qgraphicssystem_p.h30
-rw-r--r--src/gui/painting/qgraphicssystem_qws.cpp30
-rw-r--r--src/gui/painting/qgraphicssystem_qws_p.h30
-rw-r--r--src/gui/painting/qgraphicssystem_raster.cpp30
-rw-r--r--src/gui/painting/qgraphicssystem_raster_p.h30
-rw-r--r--src/gui/painting/qgraphicssystemfactory.cpp32
-rw-r--r--src/gui/painting/qgraphicssystemfactory_p.h30
-rw-r--r--src/gui/painting/qgraphicssystemplugin.cpp30
-rw-r--r--src/gui/painting/qgraphicssystemplugin_p.h30
-rw-r--r--src/gui/painting/qgrayraster.c37
-rw-r--r--src/gui/painting/qgrayraster_p.h30
-rw-r--r--src/gui/painting/qimagescale.cpp30
-rw-r--r--src/gui/painting/qimagescale_p.h30
-rw-r--r--src/gui/painting/qmath_p.h30
-rw-r--r--src/gui/painting/qmatrix.cpp53
-rw-r--r--src/gui/painting/qmatrix.h47
-rw-r--r--src/gui/painting/qmemrotate.cpp30
-rw-r--r--src/gui/painting/qmemrotate_p.h30
-rw-r--r--src/gui/painting/qoutlinemapper.cpp34
-rw-r--r--src/gui/painting/qoutlinemapper_p.h30
-rw-r--r--src/gui/painting/qpaintbuffer.cpp1867
-rw-r--r--src/gui/painting/qpaintbuffer_p.h448
-rw-r--r--src/gui/painting/qpaintdevice.cpp37
-rw-r--r--src/gui/painting/qpaintdevice.h34
-rw-r--r--src/gui/painting/qpaintdevice.qdoc301
-rw-r--r--src/gui/painting/qpaintdevice_mac.cpp32
-rw-r--r--src/gui/painting/qpaintdevice_qws.cpp63
-rw-r--r--src/gui/painting/qpaintdevice_win.cpp30
-rw-r--r--src/gui/painting/qpaintdevice_x11.cpp30
-rw-r--r--src/gui/painting/qpaintengine.cpp35
-rw-r--r--src/gui/painting/qpaintengine.h37
-rw-r--r--src/gui/painting/qpaintengine_alpha.cpp30
-rw-r--r--src/gui/painting/qpaintengine_alpha_p.h30
-rw-r--r--src/gui/painting/qpaintengine_mac.cpp40
-rw-r--r--src/gui/painting/qpaintengine_mac_p.h30
-rw-r--r--src/gui/painting/qpaintengine_p.h34
-rw-r--r--src/gui/painting/qpaintengine_preview.cpp30
-rw-r--r--src/gui/painting/qpaintengine_preview_p.h30
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp497
-rw-r--r--src/gui/painting/qpaintengine_raster_p.h61
-rw-r--r--src/gui/painting/qpaintengine_s60.cpp102
-rw-r--r--src/gui/painting/qpaintengine_s60_p.h84
-rw-r--r--src/gui/painting/qpaintengine_x11.cpp71
-rw-r--r--src/gui/painting/qpaintengine_x11_p.h30
-rw-r--r--src/gui/painting/qpaintengineex.cpp217
-rw-r--r--src/gui/painting/qpaintengineex_p.h70
-rw-r--r--src/gui/painting/qpainter.cpp441
-rw-r--r--src/gui/painting/qpainter.h38
-rw-r--r--src/gui/painting/qpainter_p.h32
-rw-r--r--src/gui/painting/qpainterpath.cpp109
-rw-r--r--src/gui/painting/qpainterpath.h41
-rw-r--r--src/gui/painting/qpainterpath_p.h100
-rw-r--r--src/gui/painting/qpathclipper.cpp32
-rw-r--r--src/gui/painting/qpathclipper_p.h37
-rw-r--r--src/gui/painting/qpdf.cpp38
-rw-r--r--src/gui/painting/qpdf_p.h30
-rw-r--r--src/gui/painting/qpen.cpp81
-rw-r--r--src/gui/painting/qpen.h30
-rw-r--r--src/gui/painting/qpen_p.h30
-rw-r--r--src/gui/painting/qpolygon.cpp34
-rw-r--r--src/gui/painting/qpolygon.h30
-rw-r--r--src/gui/painting/qpolygonclipper_p.h30
-rw-r--r--src/gui/painting/qprintengine.h30
-rw-r--r--src/gui/painting/qprintengine_mac.mm30
-rw-r--r--src/gui/painting/qprintengine_mac_p.h30
-rw-r--r--src/gui/painting/qprintengine_pdf.cpp36
-rw-r--r--src/gui/painting/qprintengine_pdf_p.h30
-rw-r--r--src/gui/painting/qprintengine_ps.cpp31
-rw-r--r--src/gui/painting/qprintengine_ps_p.h32
-rw-r--r--src/gui/painting/qprintengine_qws.cpp30
-rw-r--r--src/gui/painting/qprintengine_qws_p.h30
-rw-r--r--src/gui/painting/qprintengine_win.cpp45
-rw-r--r--src/gui/painting/qprintengine_win_p.h30
-rw-r--r--src/gui/painting/qprinter.cpp58
-rw-r--r--src/gui/painting/qprinter.h37
-rw-r--r--src/gui/painting/qprinter_p.h30
-rw-r--r--src/gui/painting/qprinterinfo.h33
-rw-r--r--src/gui/painting/qprinterinfo.qdoc139
-rw-r--r--src/gui/painting/qprinterinfo_mac.cpp56
-rw-r--r--src/gui/painting/qprinterinfo_unix.cpp59
-rw-r--r--src/gui/painting/qprinterinfo_unix_p.h30
-rw-r--r--src/gui/painting/qprinterinfo_win.cpp54
-rw-r--r--src/gui/painting/qrasterdefs_p.h30
-rw-r--r--src/gui/painting/qrasterizer.cpp59
-rw-r--r--src/gui/painting/qrasterizer_p.h36
-rw-r--r--src/gui/painting/qregion.cpp233
-rw-r--r--src/gui/painting/qregion.h37
-rw-r--r--src/gui/painting/qregion_mac.cpp30
-rw-r--r--src/gui/painting/qregion_qws.cpp30
-rw-r--r--src/gui/painting/qregion_s60.cpp52
-rw-r--r--src/gui/painting/qregion_win.cpp31
-rw-r--r--src/gui/painting/qregion_x11.cpp30
-rw-r--r--src/gui/painting/qrgb.h30
-rw-r--r--src/gui/painting/qstroker.cpp92
-rw-r--r--src/gui/painting/qstroker_p.h45
-rw-r--r--src/gui/painting/qstylepainter.cpp32
-rw-r--r--src/gui/painting/qstylepainter.h30
-rw-r--r--src/gui/painting/qtessellator.cpp45
-rw-r--r--src/gui/painting/qtessellator_p.h30
-rw-r--r--src/gui/painting/qtextureglyphcache.cpp36
-rw-r--r--src/gui/painting/qtextureglyphcache_p.h30
-rw-r--r--src/gui/painting/qtransform.cpp45
-rw-r--r--src/gui/painting/qtransform.h30
-rw-r--r--src/gui/painting/qvectorpath_p.h116
-rw-r--r--src/gui/painting/qwindowsurface.cpp30
-rw-r--r--src/gui/painting/qwindowsurface_mac.cpp30
-rw-r--r--src/gui/painting/qwindowsurface_mac_p.h30
-rw-r--r--src/gui/painting/qwindowsurface_p.h30
-rw-r--r--src/gui/painting/qwindowsurface_qws.cpp32
-rw-r--r--src/gui/painting/qwindowsurface_qws_p.h32
-rw-r--r--src/gui/painting/qwindowsurface_raster.cpp69
-rw-r--r--src/gui/painting/qwindowsurface_raster_p.h32
-rw-r--r--src/gui/painting/qwindowsurface_s60.cpp192
-rw-r--r--src/gui/painting/qwindowsurface_s60_p.h91
-rw-r--r--src/gui/painting/qwindowsurface_x11.cpp56
-rw-r--r--src/gui/painting/qwindowsurface_x11_p.h30
-rw-r--r--src/gui/painting/qwmatrix.h30
-rw-r--r--src/gui/s60framework/qs60mainapplication.cpp138
-rw-r--r--src/gui/s60framework/qs60mainapplication.h79
-rw-r--r--src/gui/s60framework/qs60mainapplication_p.h66
-rw-r--r--src/gui/s60framework/qs60mainappui.cpp254
-rw-r--r--src/gui/s60framework/qs60mainappui.h86
-rw-r--r--src/gui/s60framework/qs60maindocument.cpp108
-rw-r--r--src/gui/s60framework/qs60maindocument.h80
-rw-r--r--src/gui/s60framework/s60framework.pri19
-rw-r--r--src/gui/s60framework/s60main.rss85
-rw-r--r--src/gui/statemachine/qbasickeyeventtransition.cpp54
-rw-r--r--src/gui/statemachine/qbasickeyeventtransition_p.h36
-rw-r--r--src/gui/statemachine/qbasicmouseeventtransition.cpp54
-rw-r--r--src/gui/statemachine/qbasicmouseeventtransition_p.h38
-rw-r--r--src/gui/statemachine/qguistatemachine.cpp392
-rw-r--r--src/gui/statemachine/qkeyeventtransition.cpp52
-rw-r--r--src/gui/statemachine/qkeyeventtransition.h36
-rw-r--r--src/gui/statemachine/qmouseeventtransition.cpp64
-rw-r--r--src/gui/statemachine/qmouseeventtransition.h40
-rw-r--r--src/gui/styles/gtksymbols.cpp949
-rw-r--r--src/gui/styles/gtksymbols_p.h347
-rw-r--r--src/gui/styles/images/defaults60theme.blobbin0 -> 74127 bytes-rw-r--r--src/gui/styles/qcdestyle.cpp30
-rw-r--r--src/gui/styles/qcdestyle.h30
-rw-r--r--src/gui/styles/qcleanlooksstyle.cpp417
-rw-r--r--src/gui/styles/qcleanlooksstyle.h30
-rw-r--r--src/gui/styles/qcleanlooksstyle_p.h30
-rw-r--r--src/gui/styles/qcommonstyle.cpp541
-rw-r--r--src/gui/styles/qcommonstyle.h30
-rw-r--r--src/gui/styles/qcommonstyle_p.h53
-rw-r--r--src/gui/styles/qcommonstylepixmaps_p.h30
-rw-r--r--src/gui/styles/qgtkpainter.cpp102
-rw-r--r--src/gui/styles/qgtkpainter_p.h32
-rw-r--r--src/gui/styles/qgtkstyle.cpp644
-rw-r--r--src/gui/styles/qgtkstyle.h38
-rw-r--r--src/gui/styles/qgtkstyle_p.cpp1087
-rw-r--r--src/gui/styles/qgtkstyle_p.h456
-rw-r--r--src/gui/styles/qmacstyle.qdoc261
-rw-r--r--src/gui/styles/qmacstyle_mac.h30
-rw-r--r--src/gui/styles/qmacstyle_mac.mm75
-rw-r--r--src/gui/styles/qmacstylepixmaps_mac_p.h30
-rw-r--r--src/gui/styles/qmotifstyle.cpp37
-rw-r--r--src/gui/styles/qmotifstyle.h30
-rw-r--r--src/gui/styles/qmotifstyle_p.h30
-rw-r--r--src/gui/styles/qplastiquestyle.cpp63
-rw-r--r--src/gui/styles/qplastiquestyle.h30
-rw-r--r--src/gui/styles/qproxystyle.cpp30
-rw-r--r--src/gui/styles/qproxystyle.h30
-rw-r--r--src/gui/styles/qproxystyle_p.h30
-rw-r--r--src/gui/styles/qs60style.cpp3025
-rw-r--r--src/gui/styles/qs60style.h109
-rw-r--r--src/gui/styles/qs60style_p.h494
-rw-r--r--src/gui/styles/qs60style_s60.cpp1367
-rw-r--r--src/gui/styles/qs60style_simulated.cpp444
-rw-r--r--src/gui/styles/qstyle.cpp65
-rw-r--r--src/gui/styles/qstyle.h38
-rw-r--r--src/gui/styles/qstyle_p.h32
-rw-r--r--src/gui/styles/qstyle_s60_simulated.qrc6
-rw-r--r--src/gui/styles/qstylefactory.cpp42
-rw-r--r--src/gui/styles/qstylefactory.h30
-rw-r--r--src/gui/styles/qstylehelper.cpp30
-rw-r--r--src/gui/styles/qstylehelper_p.h30
-rw-r--r--src/gui/styles/qstyleoption.cpp163
-rw-r--r--src/gui/styles/qstyleoption.h52
-rw-r--r--src/gui/styles/qstyleplugin.cpp30
-rw-r--r--src/gui/styles/qstyleplugin.h30
-rw-r--r--src/gui/styles/qstylesheetstyle.cpp197
-rw-r--r--src/gui/styles/qstylesheetstyle_default.cpp78
-rw-r--r--src/gui/styles/qstylesheetstyle_p.h30
-rw-r--r--src/gui/styles/qwindowscestyle.cpp33
-rw-r--r--src/gui/styles/qwindowscestyle.h30
-rw-r--r--src/gui/styles/qwindowscestyle_p.h30
-rw-r--r--src/gui/styles/qwindowsmobilestyle.cpp191
-rw-r--r--src/gui/styles/qwindowsmobilestyle.h30
-rw-r--r--src/gui/styles/qwindowsmobilestyle_p.h34
-rw-r--r--src/gui/styles/qwindowsstyle.cpp128
-rw-r--r--src/gui/styles/qwindowsstyle.h30
-rw-r--r--src/gui/styles/qwindowsstyle_p.h40
-rw-r--r--src/gui/styles/qwindowsvistastyle.cpp111
-rw-r--r--src/gui/styles/qwindowsvistastyle.h30
-rw-r--r--src/gui/styles/qwindowsvistastyle_p.h55
-rw-r--r--src/gui/styles/qwindowsxpstyle.cpp128
-rw-r--r--src/gui/styles/qwindowsxpstyle.h30
-rw-r--r--src/gui/styles/qwindowsxpstyle_p.h30
-rw-r--r--src/gui/styles/styles.pri19
-rw-r--r--src/gui/symbian/images/blank.pngbin0 -> 91 bytes-rw-r--r--src/gui/symbian/images/busy12.pngbin0 -> 253 bytes-rw-r--r--src/gui/symbian/images/busy3.pngbin0 -> 251 bytes-rw-r--r--src/gui/symbian/images/busy6.pngbin0 -> 253 bytes-rw-r--r--src/gui/symbian/images/busy9.pngbin0 -> 255 bytes-rw-r--r--src/gui/symbian/images/closehand.pngbin0 -> 190 bytes-rw-r--r--src/gui/symbian/images/cross.pngbin0 -> 145 bytes-rw-r--r--src/gui/symbian/images/forbidden.pngbin0 -> 256 bytes-rw-r--r--src/gui/symbian/images/handpoint.pngbin0 -> 230 bytes-rw-r--r--src/gui/symbian/images/ibeam.pngbin0 -> 176 bytes-rw-r--r--src/gui/symbian/images/openhand.pngbin0 -> 201 bytes-rw-r--r--src/gui/symbian/images/pointer.pngbin0 -> 222 bytes-rw-r--r--src/gui/symbian/images/sizeall.pngbin0 -> 188 bytes-rw-r--r--src/gui/symbian/images/sizebdiag.pngbin0 -> 192 bytes-rw-r--r--src/gui/symbian/images/sizefdiag.pngbin0 -> 197 bytes-rw-r--r--src/gui/symbian/images/sizehor.pngbin0 -> 175 bytes-rw-r--r--src/gui/symbian/images/sizever.pngbin0 -> 171 bytes-rw-r--r--src/gui/symbian/images/splith.pngbin0 -> 206 bytes-rw-r--r--src/gui/symbian/images/splitv.pngbin0 -> 205 bytes-rw-r--r--src/gui/symbian/images/uparrow.pngbin0 -> 157 bytes-rw-r--r--src/gui/symbian/images/wait1.pngbin0 -> 219 bytes-rw-r--r--src/gui/symbian/images/wait10.pngbin0 -> 220 bytes-rw-r--r--src/gui/symbian/images/wait11.pngbin0 -> 220 bytes-rw-r--r--src/gui/symbian/images/wait12.pngbin0 -> 213 bytes-rw-r--r--src/gui/symbian/images/wait2.pngbin0 -> 219 bytes-rw-r--r--src/gui/symbian/images/wait3.pngbin0 -> 210 bytes-rw-r--r--src/gui/symbian/images/wait4.pngbin0 -> 215 bytes-rw-r--r--src/gui/symbian/images/wait5.pngbin0 -> 217 bytes-rw-r--r--src/gui/symbian/images/wait6.pngbin0 -> 213 bytes-rw-r--r--src/gui/symbian/images/wait7.pngbin0 -> 215 bytes-rw-r--r--src/gui/symbian/images/wait8.pngbin0 -> 217 bytes-rw-r--r--src/gui/symbian/images/wait9.pngbin0 -> 209 bytes-rw-r--r--src/gui/symbian/images/whatsthis.pngbin0 -> 254 bytes-rw-r--r--src/gui/symbian/qsymbianevent.cpp143
-rw-r--r--src/gui/symbian/qsymbianevent.h104
-rw-r--r--src/gui/symbian/symbianresources.qrc37
-rw-r--r--src/gui/text/qabstractfontengine_p.h32
-rw-r--r--src/gui/text/qabstractfontengine_qws.cpp30
-rw-r--r--src/gui/text/qabstractfontengine_qws.h30
-rw-r--r--src/gui/text/qabstracttextdocumentlayout.cpp32
-rw-r--r--src/gui/text/qabstracttextdocumentlayout.h31
-rw-r--r--src/gui/text/qabstracttextdocumentlayout_p.h30
-rw-r--r--src/gui/text/qcssparser.cpp45
-rw-r--r--src/gui/text/qcssparser_p.h30
-rw-r--r--src/gui/text/qcssscanner.cpp116
-rw-r--r--src/gui/text/qfont.cpp134
-rw-r--r--src/gui/text/qfont.h36
-rw-r--r--src/gui/text/qfont_mac.cpp30
-rw-r--r--src/gui/text/qfont_p.h32
-rw-r--r--src/gui/text/qfont_qws.cpp30
-rw-r--r--src/gui/text/qfont_s60.cpp97
-rw-r--r--src/gui/text/qfont_win.cpp30
-rw-r--r--src/gui/text/qfont_x11.cpp30
-rw-r--r--src/gui/text/qfontdatabase.cpp311
-rw-r--r--src/gui/text/qfontdatabase.h34
-rw-r--r--src/gui/text/qfontdatabase_mac.cpp61
-rw-r--r--src/gui/text/qfontdatabase_qws.cpp306
-rw-r--r--src/gui/text/qfontdatabase_s60.cpp463
-rw-r--r--src/gui/text/qfontdatabase_win.cpp44
-rw-r--r--src/gui/text/qfontdatabase_x11.cpp165
-rw-r--r--src/gui/text/qfontengine.cpp152
-rw-r--r--src/gui/text/qfontengine_ft.cpp170
-rw-r--r--src/gui/text/qfontengine_ft_p.h34
-rw-r--r--src/gui/text/qfontengine_mac.mm117
-rw-r--r--src/gui/text/qfontengine_p.h52
-rw-r--r--src/gui/text/qfontengine_qpf.cpp74
-rw-r--r--src/gui/text/qfontengine_qpf_p.h31
-rw-r--r--src/gui/text/qfontengine_qws.cpp40
-rw-r--r--src/gui/text/qfontengine_s60.cpp336
-rw-r--r--src/gui/text/qfontengine_s60_p.h149
-rw-r--r--src/gui/text/qfontengine_win.cpp250
-rw-r--r--src/gui/text/qfontengine_win_p.h34
-rw-r--r--src/gui/text/qfontengine_x11.cpp35
-rw-r--r--src/gui/text/qfontengine_x11_p.h30
-rw-r--r--src/gui/text/qfontengineglyphcache_p.h30
-rw-r--r--src/gui/text/qfontinfo.h33
-rw-r--r--src/gui/text/qfontmetrics.cpp121
-rw-r--r--src/gui/text/qfontmetrics.h35
-rw-r--r--src/gui/text/qfontsubset.cpp30
-rw-r--r--src/gui/text/qfontsubset_p.h30
-rw-r--r--src/gui/text/qfragmentmap.cpp30
-rw-r--r--src/gui/text/qfragmentmap_p.h51
-rw-r--r--src/gui/text/qpfutil.cpp30
-rw-r--r--src/gui/text/qsyntaxhighlighter.cpp34
-rw-r--r--src/gui/text/qsyntaxhighlighter.h30
-rw-r--r--src/gui/text/qtextcontrol.cpp143
-rw-r--r--src/gui/text/qtextcontrol_p.h34
-rw-r--r--src/gui/text/qtextcontrol_p_p.h35
-rw-r--r--src/gui/text/qtextcursor.cpp47
-rw-r--r--src/gui/text/qtextcursor.h30
-rw-r--r--src/gui/text/qtextcursor_p.h30
-rw-r--r--src/gui/text/qtextdocument.cpp108
-rw-r--r--src/gui/text/qtextdocument.h33
-rw-r--r--src/gui/text/qtextdocument_p.cpp193
-rw-r--r--src/gui/text/qtextdocument_p.h42
-rw-r--r--src/gui/text/qtextdocumentfragment.cpp32
-rw-r--r--src/gui/text/qtextdocumentfragment.h30
-rw-r--r--src/gui/text/qtextdocumentfragment_p.h30
-rw-r--r--src/gui/text/qtextdocumentlayout.cpp53
-rw-r--r--src/gui/text/qtextdocumentlayout_p.h30
-rw-r--r--src/gui/text/qtextdocumentwriter.cpp32
-rw-r--r--src/gui/text/qtextdocumentwriter.h30
-rw-r--r--src/gui/text/qtextengine.cpp111
-rw-r--r--src/gui/text/qtextengine_mac.cpp110
-rw-r--r--src/gui/text/qtextengine_p.h48
-rw-r--r--src/gui/text/qtextformat.cpp140
-rw-r--r--src/gui/text/qtextformat.h30
-rw-r--r--src/gui/text/qtextformat_p.h34
-rw-r--r--src/gui/text/qtexthtmlparser.cpp30
-rw-r--r--src/gui/text/qtexthtmlparser_p.h30
-rw-r--r--src/gui/text/qtextimagehandler.cpp30
-rw-r--r--src/gui/text/qtextimagehandler_p.h30
-rw-r--r--src/gui/text/qtextlayout.cpp275
-rw-r--r--src/gui/text/qtextlayout.h34
-rw-r--r--src/gui/text/qtextlist.cpp32
-rw-r--r--src/gui/text/qtextlist.h30
-rw-r--r--src/gui/text/qtextobject.cpp48
-rw-r--r--src/gui/text/qtextobject.h30
-rw-r--r--src/gui/text/qtextobject_p.h30
-rw-r--r--src/gui/text/qtextodfwriter.cpp47
-rw-r--r--src/gui/text/qtextodfwriter_p.h30
-rw-r--r--src/gui/text/qtextoption.cpp48
-rw-r--r--src/gui/text/qtextoption.h30
-rw-r--r--src/gui/text/qtexttable.cpp45
-rw-r--r--src/gui/text/qtexttable.h30
-rw-r--r--src/gui/text/qtexttable_p.h30
-rw-r--r--src/gui/text/qzip.cpp40
-rw-r--r--src/gui/text/qzipreader_p.h30
-rw-r--r--src/gui/text/qzipwriter_p.h30
-rw-r--r--src/gui/text/text.pri34
-rw-r--r--src/gui/util/qcompleter.cpp59
-rw-r--r--src/gui/util/qcompleter.h30
-rw-r--r--src/gui/util/qcompleter_p.h33
-rw-r--r--src/gui/util/qdesktopservices.cpp47
-rw-r--r--src/gui/util/qdesktopservices.h30
-rw-r--r--src/gui/util/qdesktopservices_mac.cpp39
-rw-r--r--src/gui/util/qdesktopservices_qws.cpp30
-rw-r--r--src/gui/util/qdesktopservices_s60.cpp437
-rw-r--r--src/gui/util/qdesktopservices_win.cpp105
-rw-r--r--src/gui/util/qdesktopservices_x11.cpp30
-rw-r--r--src/gui/util/qsystemtrayicon.cpp31
-rw-r--r--src/gui/util/qsystemtrayicon.h30
-rw-r--r--src/gui/util/qsystemtrayicon_mac.mm30
-rw-r--r--src/gui/util/qsystemtrayicon_p.h30
-rw-r--r--src/gui/util/qsystemtrayicon_qws.cpp30
-rw-r--r--src/gui/util/qsystemtrayicon_win.cpp64
-rw-r--r--src/gui/util/qsystemtrayicon_x11.cpp30
-rw-r--r--src/gui/util/qundogroup.cpp31
-rw-r--r--src/gui/util/qundogroup.h30
-rw-r--r--src/gui/util/qundostack.cpp32
-rw-r--r--src/gui/util/qundostack.h30
-rw-r--r--src/gui/util/qundostack_p.h30
-rw-r--r--src/gui/util/qundoview.cpp32
-rw-r--r--src/gui/util/qundoview.h30
-rw-r--r--src/gui/util/util.pri5
-rw-r--r--src/gui/widgets/qabstractbutton.cpp42
-rw-r--r--src/gui/widgets/qabstractbutton.h30
-rw-r--r--src/gui/widgets/qabstractbutton_p.h31
-rw-r--r--src/gui/widgets/qabstractscrollarea.cpp153
-rw-r--r--src/gui/widgets/qabstractscrollarea.h33
-rw-r--r--src/gui/widgets/qabstractscrollarea_p.h35
-rw-r--r--src/gui/widgets/qabstractslider.cpp201
-rw-r--r--src/gui/widgets/qabstractslider.h30
-rw-r--r--src/gui/widgets/qabstractslider_p.h64
-rw-r--r--src/gui/widgets/qabstractspinbox.cpp43
-rw-r--r--src/gui/widgets/qabstractspinbox.h32
-rw-r--r--src/gui/widgets/qabstractspinbox_p.h30
-rw-r--r--src/gui/widgets/qbuttongroup.cpp32
-rw-r--r--src/gui/widgets/qbuttongroup.h30
-rw-r--r--src/gui/widgets/qcalendartextnavigator_p.h30
-rw-r--r--src/gui/widgets/qcalendarwidget.cpp86
-rw-r--r--src/gui/widgets/qcalendarwidget.h30
-rw-r--r--src/gui/widgets/qcheckbox.cpp32
-rw-r--r--src/gui/widgets/qcheckbox.h30
-rw-r--r--src/gui/widgets/qcocoamenu_mac.mm66
-rw-r--r--src/gui/widgets/qcocoamenu_mac_p.h34
-rw-r--r--src/gui/widgets/qcocoatoolbardelegate_mac.mm36
-rw-r--r--src/gui/widgets/qcocoatoolbardelegate_mac_p.h30
-rw-r--r--src/gui/widgets/qcombobox.cpp176
-rw-r--r--src/gui/widgets/qcombobox.h35
-rw-r--r--src/gui/widgets/qcombobox_p.h42
-rw-r--r--src/gui/widgets/qcommandlinkbutton.cpp66
-rw-r--r--src/gui/widgets/qcommandlinkbutton.h30
-rw-r--r--src/gui/widgets/qdatetimeedit.cpp59
-rw-r--r--src/gui/widgets/qdatetimeedit.h30
-rw-r--r--src/gui/widgets/qdatetimeedit_p.h33
-rw-r--r--src/gui/widgets/qdial.cpp32
-rw-r--r--src/gui/widgets/qdial.h30
-rw-r--r--src/gui/widgets/qdialogbuttonbox.cpp151
-rw-r--r--src/gui/widgets/qdialogbuttonbox.h30
-rw-r--r--src/gui/widgets/qdockarealayout.cpp76
-rw-r--r--src/gui/widgets/qdockarealayout_p.h39
-rw-r--r--src/gui/widgets/qdockwidget.cpp51
-rw-r--r--src/gui/widgets/qdockwidget.h30
-rw-r--r--src/gui/widgets/qdockwidget_p.h30
-rw-r--r--src/gui/widgets/qeffects.cpp30
-rw-r--r--src/gui/widgets/qeffects_p.h30
-rw-r--r--src/gui/widgets/qfocusframe.cpp32
-rw-r--r--src/gui/widgets/qfocusframe.h30
-rw-r--r--src/gui/widgets/qfontcombobox.cpp49
-rw-r--r--src/gui/widgets/qfontcombobox.h30
-rw-r--r--src/gui/widgets/qframe.cpp32
-rw-r--r--src/gui/widgets/qframe.h30
-rw-r--r--src/gui/widgets/qframe_p.h30
-rw-r--r--src/gui/widgets/qgroupbox.cpp32
-rw-r--r--src/gui/widgets/qgroupbox.h30
-rw-r--r--src/gui/widgets/qlabel.cpp89
-rw-r--r--src/gui/widgets/qlabel.h30
-rw-r--r--src/gui/widgets/qlabel_p.h32
-rw-r--r--src/gui/widgets/qlcdnumber.cpp82
-rw-r--r--src/gui/widgets/qlcdnumber.h37
-rw-r--r--src/gui/widgets/qlineedit.cpp203
-rw-r--r--src/gui/widgets/qlineedit.h44
-rw-r--r--src/gui/widgets/qlineedit_p.cpp67
-rw-r--r--src/gui/widgets/qlineedit_p.h40
-rw-r--r--src/gui/widgets/qmaccocoaviewcontainer_mac.h30
-rw-r--r--src/gui/widgets/qmaccocoaviewcontainer_mac.mm33
-rw-r--r--src/gui/widgets/qmacnativewidget_mac.h32
-rw-r--r--src/gui/widgets/qmacnativewidget_mac.mm33
-rw-r--r--src/gui/widgets/qmainwindow.cpp75
-rw-r--r--src/gui/widgets/qmainwindow.h30
-rw-r--r--src/gui/widgets/qmainwindowlayout.cpp35
-rw-r--r--src/gui/widgets/qmainwindowlayout_mac.mm33
-rw-r--r--src/gui/widgets/qmainwindowlayout_p.h30
-rw-r--r--src/gui/widgets/qmdiarea.cpp44
-rw-r--r--src/gui/widgets/qmdiarea.h30
-rw-r--r--src/gui/widgets/qmdiarea_p.h30
-rw-r--r--src/gui/widgets/qmdisubwindow.cpp38
-rw-r--r--src/gui/widgets/qmdisubwindow.h30
-rw-r--r--src/gui/widgets/qmdisubwindow_p.h30
-rw-r--r--src/gui/widgets/qmenu.cpp261
-rw-r--r--src/gui/widgets/qmenu.h32
-rw-r--r--src/gui/widgets/qmenu_mac.mm105
-rw-r--r--src/gui/widgets/qmenu_p.h101
-rw-r--r--src/gui/widgets/qmenu_symbian.cpp417
-rw-r--r--src/gui/widgets/qmenu_wince.cpp30
-rw-r--r--src/gui/widgets/qmenu_wince_resource_p.h30
-rw-r--r--src/gui/widgets/qmenubar.cpp132
-rw-r--r--src/gui/widgets/qmenubar.h30
-rw-r--r--src/gui/widgets/qmenubar_p.h76
-rw-r--r--src/gui/widgets/qmenudata.cpp30
-rw-r--r--src/gui/widgets/qmenudata.h32
-rw-r--r--src/gui/widgets/qplaintextedit.cpp189
-rw-r--r--src/gui/widgets/qplaintextedit.h32
-rw-r--r--src/gui/widgets/qplaintextedit_p.h40
-rw-r--r--src/gui/widgets/qprintpreviewwidget.cpp57
-rw-r--r--src/gui/widgets/qprintpreviewwidget.h35
-rw-r--r--src/gui/widgets/qprogressbar.cpp32
-rw-r--r--src/gui/widgets/qprogressbar.h30
-rw-r--r--src/gui/widgets/qpushbutton.cpp36
-rw-r--r--src/gui/widgets/qpushbutton.h30
-rw-r--r--src/gui/widgets/qpushbutton_p.h30
-rw-r--r--src/gui/widgets/qradiobutton.cpp32
-rw-r--r--src/gui/widgets/qradiobutton.h30
-rw-r--r--src/gui/widgets/qrubberband.cpp33
-rw-r--r--src/gui/widgets/qrubberband.h30
-rw-r--r--src/gui/widgets/qscrollarea.cpp32
-rw-r--r--src/gui/widgets/qscrollarea.h30
-rw-r--r--src/gui/widgets/qscrollarea_p.h30
-rw-r--r--src/gui/widgets/qscrollbar.cpp30
-rw-r--r--src/gui/widgets/qscrollbar.h30
-rw-r--r--src/gui/widgets/qsizegrip.cpp62
-rw-r--r--src/gui/widgets/qsizegrip.h30
-rw-r--r--src/gui/widgets/qslider.cpp32
-rw-r--r--src/gui/widgets/qslider.h34
-rw-r--r--src/gui/widgets/qspinbox.cpp357
-rw-r--r--src/gui/widgets/qspinbox.h30
-rw-r--r--src/gui/widgets/qsplashscreen.cpp33
-rw-r--r--src/gui/widgets/qsplashscreen.h30
-rw-r--r--src/gui/widgets/qsplitter.cpp49
-rw-r--r--src/gui/widgets/qsplitter.h30
-rw-r--r--src/gui/widgets/qsplitter_p.h30
-rw-r--r--src/gui/widgets/qstackedwidget.cpp33
-rw-r--r--src/gui/widgets/qstackedwidget.h30
-rw-r--r--src/gui/widgets/qstatusbar.cpp34
-rw-r--r--src/gui/widgets/qstatusbar.h30
-rw-r--r--src/gui/widgets/qtabbar.cpp104
-rw-r--r--src/gui/widgets/qtabbar.h30
-rw-r--r--src/gui/widgets/qtabbar_p.h45
-rw-r--r--src/gui/widgets/qtabwidget.cpp52
-rw-r--r--src/gui/widgets/qtabwidget.h30
-rw-r--r--src/gui/widgets/qtextbrowser.cpp32
-rw-r--r--src/gui/widgets/qtextbrowser.h30
-rw-r--r--src/gui/widgets/qtextedit.cpp114
-rw-r--r--src/gui/widgets/qtextedit.h30
-rw-r--r--src/gui/widgets/qtextedit_p.h31
-rw-r--r--src/gui/widgets/qtoolbar.cpp62
-rw-r--r--src/gui/widgets/qtoolbar.h31
-rw-r--r--src/gui/widgets/qtoolbar_p.h30
-rw-r--r--src/gui/widgets/qtoolbararealayout.cpp90
-rw-r--r--src/gui/widgets/qtoolbararealayout_p.h38
-rw-r--r--src/gui/widgets/qtoolbarextension.cpp36
-rw-r--r--src/gui/widgets/qtoolbarextension_p.h32
-rw-r--r--src/gui/widgets/qtoolbarlayout.cpp33
-rw-r--r--src/gui/widgets/qtoolbarlayout_p.h32
-rw-r--r--src/gui/widgets/qtoolbarseparator.cpp30
-rw-r--r--src/gui/widgets/qtoolbarseparator_p.h30
-rw-r--r--src/gui/widgets/qtoolbox.cpp32
-rw-r--r--src/gui/widgets/qtoolbox.h30
-rw-r--r--src/gui/widgets/qtoolbutton.cpp36
-rw-r--r--src/gui/widgets/qtoolbutton.h30
-rw-r--r--src/gui/widgets/qvalidator.cpp41
-rw-r--r--src/gui/widgets/qvalidator.h34
-rw-r--r--src/gui/widgets/qwidgetanimator.cpp43
-rw-r--r--src/gui/widgets/qwidgetanimator_p.h31
-rw-r--r--src/gui/widgets/qwidgetresizehandler.cpp30
-rw-r--r--src/gui/widgets/qwidgetresizehandler_p.h30
-rw-r--r--src/gui/widgets/qworkspace.cpp31
-rw-r--r--src/gui/widgets/qworkspace.h30
-rw-r--r--src/gui/widgets/widgets.pri6
-rw-r--r--src/multimedia/audio/audio.pri7
-rw-r--r--src/multimedia/audio/qaudio.cpp54
-rw-r--r--src/multimedia/audio/qaudio.h38
-rw-r--r--src/multimedia/audio/qaudio_mac.cpp30
-rw-r--r--src/multimedia/audio/qaudio_mac_p.h30
-rw-r--r--src/multimedia/audio/qaudiodevicefactory.cpp131
-rw-r--r--src/multimedia/audio/qaudiodevicefactory_p.h47
-rw-r--r--src/multimedia/audio/qaudiodeviceid.cpp168
-rw-r--r--src/multimedia/audio/qaudiodeviceid.h94
-rw-r--r--src/multimedia/audio/qaudiodeviceid_p.h82
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo.cpp202
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo.h62
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp237
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_alsa_p.h42
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_mac_p.cpp58
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_mac_p.h36
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_win32_p.cpp113
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_win32_p.h42
-rw-r--r--src/multimedia/audio/qaudioengine.cpp38
-rw-r--r--src/multimedia/audio/qaudioengine.h38
-rw-r--r--src/multimedia/audio/qaudioengineplugin.cpp30
-rw-r--r--src/multimedia/audio/qaudioengineplugin.h34
-rw-r--r--src/multimedia/audio/qaudioformat.cpp72
-rw-r--r--src/multimedia/audio/qaudioformat.h34
-rw-r--r--src/multimedia/audio/qaudioinput.cpp111
-rw-r--r--src/multimedia/audio/qaudioinput.h45
-rw-r--r--src/multimedia/audio/qaudioinput_alsa_p.cpp134
-rw-r--r--src/multimedia/audio/qaudioinput_alsa_p.h40
-rw-r--r--src/multimedia/audio/qaudioinput_mac_p.cpp62
-rw-r--r--src/multimedia/audio/qaudioinput_mac_p.h38
-rw-r--r--src/multimedia/audio/qaudioinput_win32_p.cpp135
-rw-r--r--src/multimedia/audio/qaudioinput_win32_p.h40
-rw-r--r--src/multimedia/audio/qaudiooutput.cpp97
-rw-r--r--src/multimedia/audio/qaudiooutput.h42
-rw-r--r--src/multimedia/audio/qaudiooutput_alsa_p.cpp137
-rw-r--r--src/multimedia/audio/qaudiooutput_alsa_p.h40
-rw-r--r--src/multimedia/audio/qaudiooutput_mac_p.cpp59
-rw-r--r--src/multimedia/audio/qaudiooutput_mac_p.h38
-rw-r--r--src/multimedia/audio/qaudiooutput_win32_p.cpp129
-rw-r--r--src/multimedia/audio/qaudiooutput_win32_p.h44
-rw-r--r--src/multimedia/multimedia.pro15
-rw-r--r--src/multimedia/video/qabstractvideobuffer.cpp199
-rw-r--r--src/multimedia/video/qabstractvideobuffer.h104
-rw-r--r--src/multimedia/video/qabstractvideobuffer_p.h73
-rw-r--r--src/multimedia/video/qabstractvideosurface.cpp284
-rw-r--r--src/multimedia/video/qabstractvideosurface.h110
-rw-r--r--src/multimedia/video/qabstractvideosurface_p.h78
-rw-r--r--src/multimedia/video/qimagevideobuffer.cpp106
-rw-r--r--src/multimedia/video/qimagevideobuffer_p.h79
-rw-r--r--src/multimedia/video/qmemoryvideobuffer.cpp129
-rw-r--r--src/multimedia/video/qmemoryvideobuffer_p.h83
-rw-r--r--src/multimedia/video/qvideoframe.cpp742
-rw-r--r--src/multimedia/video/qvideoframe.h169
-rw-r--r--src/multimedia/video/qvideosurfaceformat.cpp705
-rw-r--r--src/multimedia/video/qvideosurfaceformat.h147
-rw-r--r--src/multimedia/video/video.pri21
-rw-r--r--src/network/access/access.pri2
-rw-r--r--src/network/access/qabstractnetworkcache.cpp30
-rw-r--r--src/network/access/qabstractnetworkcache.h30
-rw-r--r--src/network/access/qabstractnetworkcache_p.h30
-rw-r--r--src/network/access/qfilenetworkreply.cpp205
-rw-r--r--src/network/access/qfilenetworkreply_p.h107
-rw-r--r--src/network/access/qftp.cpp46
-rw-r--r--src/network/access/qftp.h30
-rw-r--r--src/network/access/qhttp.cpp77
-rw-r--r--src/network/access/qhttp.h36
-rw-r--r--src/network/access/qhttpnetworkconnection.cpp852
-rw-r--r--src/network/access/qhttpnetworkconnection_p.h66
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel.cpp708
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel_p.h71
-rw-r--r--src/network/access/qhttpnetworkheader.cpp36
-rw-r--r--src/network/access/qhttpnetworkheader_p.h30
-rw-r--r--src/network/access/qhttpnetworkreply.cpp104
-rw-r--r--src/network/access/qhttpnetworkreply_p.h42
-rw-r--r--src/network/access/qhttpnetworkrequest.cpp43
-rw-r--r--src/network/access/qhttpnetworkrequest_p.h35
-rw-r--r--src/network/access/qnetworkaccessbackend.cpp46
-rw-r--r--src/network/access/qnetworkaccessbackend_p.h32
-rw-r--r--src/network/access/qnetworkaccesscache.cpp30
-rw-r--r--src/network/access/qnetworkaccesscache_p.h30
-rw-r--r--src/network/access/qnetworkaccesscachebackend.cpp31
-rw-r--r--src/network/access/qnetworkaccesscachebackend_p.h30
-rw-r--r--src/network/access/qnetworkaccessdatabackend.cpp92
-rw-r--r--src/network/access/qnetworkaccessdatabackend_p.h30
-rw-r--r--src/network/access/qnetworkaccessdebugpipebackend.cpp34
-rw-r--r--src/network/access/qnetworkaccessdebugpipebackend_p.h30
-rw-r--r--src/network/access/qnetworkaccessfilebackend.cpp30
-rw-r--r--src/network/access/qnetworkaccessfilebackend_p.h30
-rw-r--r--src/network/access/qnetworkaccessftpbackend.cpp30
-rw-r--r--src/network/access/qnetworkaccessftpbackend_p.h30
-rw-r--r--src/network/access/qnetworkaccesshttpbackend.cpp57
-rw-r--r--src/network/access/qnetworkaccesshttpbackend_p.h32
-rw-r--r--src/network/access/qnetworkaccessmanager.cpp63
-rw-r--r--src/network/access/qnetworkaccessmanager.h30
-rw-r--r--src/network/access/qnetworkaccessmanager_p.h31
-rw-r--r--src/network/access/qnetworkcookie.cpp45
-rw-r--r--src/network/access/qnetworkcookie.h30
-rw-r--r--src/network/access/qnetworkcookie_p.h30
-rw-r--r--src/network/access/qnetworkcookiejar.cpp44
-rw-r--r--src/network/access/qnetworkcookiejar.h30
-rw-r--r--src/network/access/qnetworkcookiejar_p.h30
-rw-r--r--src/network/access/qnetworkdiskcache.cpp74
-rw-r--r--src/network/access/qnetworkdiskcache.h30
-rw-r--r--src/network/access/qnetworkdiskcache_p.h30
-rw-r--r--src/network/access/qnetworkreply.cpp39
-rw-r--r--src/network/access/qnetworkreply.h33
-rw-r--r--src/network/access/qnetworkreply_p.h30
-rw-r--r--src/network/access/qnetworkreplyimpl.cpp78
-rw-r--r--src/network/access/qnetworkreplyimpl_p.h33
-rw-r--r--src/network/access/qnetworkrequest.cpp182
-rw-r--r--src/network/access/qnetworkrequest.h35
-rw-r--r--src/network/access/qnetworkrequest_p.h32
-rw-r--r--src/network/kernel/kernel.pri3
-rw-r--r--src/network/kernel/qauthenticator.cpp32
-rw-r--r--src/network/kernel/qauthenticator.h30
-rw-r--r--src/network/kernel/qauthenticator_p.h30
-rw-r--r--src/network/kernel/qhostaddress.cpp40
-rw-r--r--src/network/kernel/qhostaddress.h33
-rw-r--r--src/network/kernel/qhostaddress_p.h30
-rw-r--r--src/network/kernel/qhostinfo.cpp65
-rw-r--r--src/network/kernel/qhostinfo.h33
-rw-r--r--src/network/kernel/qhostinfo_p.h41
-rw-r--r--src/network/kernel/qhostinfo_unix.cpp72
-rw-r--r--src/network/kernel/qhostinfo_win.cpp66
-rw-r--r--src/network/kernel/qnetworkinterface.cpp46
-rw-r--r--src/network/kernel/qnetworkinterface.h33
-rw-r--r--src/network/kernel/qnetworkinterface_p.h30
-rw-r--r--src/network/kernel/qnetworkinterface_symbian.cpp238
-rw-r--r--src/network/kernel/qnetworkinterface_unix.cpp30
-rw-r--r--src/network/kernel/qnetworkinterface_win.cpp41
-rw-r--r--src/network/kernel/qnetworkinterface_win_p.h30
-rw-r--r--src/network/kernel/qnetworkproxy.cpp58
-rw-r--r--src/network/kernel/qnetworkproxy.h31
-rw-r--r--src/network/kernel/qnetworkproxy_generic.cpp30
-rw-r--r--src/network/kernel/qnetworkproxy_mac.cpp33
-rw-r--r--src/network/kernel/qnetworkproxy_p.h85
-rw-r--r--src/network/kernel/qnetworkproxy_win.cpp49
-rw-r--r--src/network/kernel/qurlinfo.cpp32
-rw-r--r--src/network/kernel/qurlinfo.h30
-rw-r--r--src/network/network.pro13
-rw-r--r--src/network/socket/qabstractsocket.cpp114
-rw-r--r--src/network/socket/qabstractsocket.h35
-rw-r--r--src/network/socket/qabstractsocket_p.h34
-rw-r--r--src/network/socket/qabstractsocketengine.cpp30
-rw-r--r--src/network/socket/qabstractsocketengine_p.h32
-rw-r--r--src/network/socket/qhttpsocketengine.cpp41
-rw-r--r--src/network/socket/qhttpsocketengine_p.h32
-rw-r--r--src/network/socket/qlocalserver.cpp34
-rw-r--r--src/network/socket/qlocalserver.h30
-rw-r--r--src/network/socket/qlocalserver_p.h30
-rw-r--r--src/network/socket/qlocalserver_tcp.cpp30
-rw-r--r--src/network/socket/qlocalserver_unix.cpp70
-rw-r--r--src/network/socket/qlocalserver_win.cpp30
-rw-r--r--src/network/socket/qlocalsocket.cpp30
-rw-r--r--src/network/socket/qlocalsocket.h30
-rw-r--r--src/network/socket/qlocalsocket_p.h32
-rw-r--r--src/network/socket/qlocalsocket_tcp.cpp30
-rw-r--r--src/network/socket/qlocalsocket_unix.cpp50
-rw-r--r--src/network/socket/qlocalsocket_win.cpp89
-rw-r--r--src/network/socket/qnativesocketengine.cpp156
-rw-r--r--src/network/socket/qnativesocketengine_p.h38
-rw-r--r--src/network/socket/qnativesocketengine_unix.cpp251
-rw-r--r--src/network/socket/qnativesocketengine_win.cpp76
-rw-r--r--src/network/socket/qnet_unix_p.h30
-rw-r--r--src/network/socket/qsocks5socketengine.cpp52
-rw-r--r--src/network/socket/qsocks5socketengine_p.h32
-rw-r--r--src/network/socket/qtcpserver.cpp39
-rw-r--r--src/network/socket/qtcpserver.h30
-rw-r--r--src/network/socket/qtcpsocket.cpp32
-rw-r--r--src/network/socket/qtcpsocket.h30
-rw-r--r--src/network/socket/qtcpsocket_p.h30
-rw-r--r--src/network/socket/qudpsocket.cpp54
-rw-r--r--src/network/socket/qudpsocket.h30
-rw-r--r--src/network/socket/socket.pri2
-rw-r--r--src/network/ssl/qssl.cpp33
-rw-r--r--src/network/ssl/qssl.h30
-rw-r--r--src/network/ssl/qsslcertificate.cpp56
-rw-r--r--src/network/ssl/qsslcertificate.h33
-rw-r--r--src/network/ssl/qsslcertificate_p.h31
-rw-r--r--src/network/ssl/qsslcipher.cpp37
-rw-r--r--src/network/ssl/qsslcipher.h33
-rw-r--r--src/network/ssl/qsslcipher_p.h30
-rw-r--r--src/network/ssl/qsslconfiguration.cpp32
-rw-r--r--src/network/ssl/qsslconfiguration.h30
-rw-r--r--src/network/ssl/qsslconfiguration_p.h30
-rw-r--r--src/network/ssl/qsslerror.cpp122
-rw-r--r--src/network/ssl/qsslerror.h40
-rw-r--r--src/network/ssl/qsslkey.cpp42
-rw-r--r--src/network/ssl/qsslkey.h35
-rw-r--r--src/network/ssl/qsslkey_p.h34
-rw-r--r--src/network/ssl/qsslsocket.cpp107
-rw-r--r--src/network/ssl/qsslsocket.h35
-rw-r--r--src/network/ssl/qsslsocket_openssl.cpp32
-rw-r--r--src/network/ssl/qsslsocket_openssl_p.h32
-rw-r--r--src/network/ssl/qsslsocket_openssl_symbols.cpp184
-rw-r--r--src/network/ssl/qsslsocket_openssl_symbols_p.h35
-rw-r--r--src/network/ssl/qsslsocket_p.h31
-rw-r--r--src/network/ssl/ssl.pri8
-rw-r--r--src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp130
-rw-r--r--src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h43
-rw-r--r--src/opengl/gl2paintengineex/qglcustomshaderstage.cpp138
-rw-r--r--src/opengl/gl2paintengineex/qglcustomshaderstage_p.h93
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadermanager.cpp603
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadermanager_p.h294
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadersource_p.h157
-rw-r--r--src/opengl/gl2paintengineex/qglgradientcache.cpp36
-rw-r--r--src/opengl/gl2paintengineex/qglgradientcache_p.h30
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp1646
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h158
-rw-r--r--src/opengl/gl2paintengineex/qtriangulatingstroker.cpp549
-rw-r--r--src/opengl/gl2paintengineex/qtriangulatingstroker_p.h156
-rw-r--r--src/opengl/gl2paintengineex/qtriangulator.cpp2981
-rw-r--r--src/opengl/gl2paintengineex/qtriangulator_p.h98
-rw-r--r--src/opengl/opengl.pro51
-rw-r--r--src/opengl/qgl.cpp1510
-rw-r--r--src/opengl/qgl.h92
-rw-r--r--src/opengl/qgl_cl_p.h30
-rw-r--r--src/opengl/qgl_egl.cpp134
-rw-r--r--src/opengl/qgl_egl_p.h30
-rw-r--r--src/opengl/qgl_mac.mm41
-rw-r--r--src/opengl/qgl_p.h340
-rw-r--r--src/opengl/qgl_qws.cpp173
-rw-r--r--src/opengl/qgl_win.cpp46
-rw-r--r--src/opengl/qgl_wince.cpp149
-rw-r--r--src/opengl/qgl_x11.cpp175
-rw-r--r--src/opengl/qgl_x11egl.cpp529
-rw-r--r--src/opengl/qglcolormap.cpp38
-rw-r--r--src/opengl/qglcolormap.h30
-rw-r--r--src/opengl/qglextensions.cpp133
-rw-r--r--src/opengl/qglextensions_p.h213
-rw-r--r--src/opengl/qglframebufferobject.cpp488
-rw-r--r--src/opengl/qglframebufferobject.h64
-rw-r--r--src/opengl/qglframebufferobject_p.h153
-rw-r--r--src/opengl/qglpaintdevice.cpp224
-rw-r--r--src/opengl/qglpaintdevice_p.h112
-rw-r--r--src/opengl/qglpaintdevice_qws.cpp98
-rw-r--r--src/opengl/qglpaintdevice_qws_p.h85
-rw-r--r--src/opengl/qglpixelbuffer.cpp57
-rw-r--r--src/opengl/qglpixelbuffer.h34
-rw-r--r--src/opengl/qglpixelbuffer_egl.cpp115
-rw-r--r--src/opengl/qglpixelbuffer_mac.mm30
-rw-r--r--src/opengl/qglpixelbuffer_p.h45
-rw-r--r--src/opengl/qglpixelbuffer_win.cpp30
-rw-r--r--src/opengl/qglpixelbuffer_x11.cpp63
-rw-r--r--src/opengl/qglpixmapfilter.cpp1068
-rw-r--r--src/opengl/qglpixmapfilter_p.h30
-rw-r--r--src/opengl/qglscreen_qws.cpp30
-rw-r--r--src/opengl/qglscreen_qws.h30
-rw-r--r--src/opengl/qglshaderprogram.cpp1404
-rw-r--r--src/opengl/qglshaderprogram.h107
-rw-r--r--src/opengl/qglwindowsurface_qws.cpp31
-rw-r--r--src/opengl/qglwindowsurface_qws_p.h30
-rw-r--r--src/opengl/qgraphicsshadereffect.cpp314
-rw-r--r--src/opengl/qgraphicsshadereffect_p.h94
-rw-r--r--src/opengl/qgraphicssystem_gl.cpp45
-rw-r--r--src/opengl/qgraphicssystem_gl_p.h30
-rw-r--r--src/opengl/qpaintengine_opengl.cpp304
-rw-r--r--src/opengl/qpaintengine_opengl_p.h36
-rw-r--r--src/opengl/qpixmapdata_gl.cpp421
-rw-r--r--src/opengl/qpixmapdata_gl_p.h95
-rw-r--r--src/opengl/qpixmapdata_x11gl_egl.cpp252
-rw-r--r--src/opengl/qpixmapdata_x11gl_p.h86
-rw-r--r--src/opengl/qwindowsurface_gl.cpp319
-rw-r--r--src/opengl/qwindowsurface_gl_p.h49
-rw-r--r--src/opengl/qwindowsurface_x11gl.cpp147
-rw-r--r--src/opengl/qwindowsurface_x11gl_p.h81
-rw-r--r--src/opengl/util/composition_mode_colorburn.glsl4
-rw-r--r--src/opengl/util/composition_mode_colordodge.glsl4
-rw-r--r--src/opengl/util/composition_mode_darken.glsl2
-rw-r--r--src/opengl/util/composition_mode_difference.glsl2
-rw-r--r--src/opengl/util/composition_mode_exclusion.glsl2
-rw-r--r--src/opengl/util/composition_mode_hardlight.glsl6
-rw-r--r--src/opengl/util/composition_mode_lighten.glsl2
-rw-r--r--src/opengl/util/composition_mode_multiply.glsl2
-rw-r--r--src/opengl/util/composition_mode_overlay.glsl6
-rw-r--r--src/opengl/util/composition_mode_softlight.glsl24
-rw-r--r--src/opengl/util/conical_brush.glsl2
-rw-r--r--src/opengl/util/ellipse.glsl6
-rw-r--r--src/opengl/util/ellipse_aa.glsl56
-rw-r--r--src/opengl/util/ellipse_aa_copy.glsl11
-rw-r--r--src/opengl/util/ellipse_aa_radial.glsl24
-rw-r--r--src/opengl/util/ellipse_functions.glsl63
-rw-r--r--src/opengl/util/fragmentprograms_p.h7357
-rw-r--r--src/opengl/util/generator.cpp142
-rw-r--r--src/opengl/util/generator.pro2
-rwxr-xr-xsrc/opengl/util/glsl_to_include.sh40
-rw-r--r--src/opengl/util/masks.conf1
-rw-r--r--src/opengl/util/pattern_brush.glsl4
-rw-r--r--src/opengl/util/simple_porter_duff.glsl6
-rw-r--r--src/opengl/util/texture_brush.glsl2
-rw-r--r--src/opengl/util/trap_exact_aa.glsl12
-rw-r--r--src/openvg/openvg.pro1
-rw-r--r--src/openvg/qpaintengine_vg.cpp630
-rw-r--r--src/openvg/qpaintengine_vg_p.h41
-rw-r--r--src/openvg/qpixmapdata_vg.cpp285
-rw-r--r--src/openvg/qpixmapdata_vg_p.h55
-rw-r--r--src/openvg/qpixmapfilter_vg.cpp271
-rw-r--r--src/openvg/qpixmapfilter_vg_p.h60
-rw-r--r--src/openvg/qvg.h30
-rw-r--r--src/openvg/qvg_p.h39
-rw-r--r--src/openvg/qvgcompositionhelper_p.h35
-rw-r--r--src/openvg/qwindowsurface_vg.cpp51
-rw-r--r--src/openvg/qwindowsurface_vg_p.h30
-rw-r--r--src/openvg/qwindowsurface_vgegl.cpp281
-rw-r--r--src/openvg/qwindowsurface_vgegl_p.h49
-rw-r--r--src/phonon/phonon.pro14
-rw-r--r--src/plugins/accessible/compat/main.cpp30
-rw-r--r--src/plugins/accessible/compat/q3complexwidgets.cpp30
-rw-r--r--src/plugins/accessible/compat/q3complexwidgets.h30
-rw-r--r--src/plugins/accessible/compat/q3simplewidgets.cpp30
-rw-r--r--src/plugins/accessible/compat/q3simplewidgets.h30
-rw-r--r--src/plugins/accessible/compat/qaccessiblecompat.cpp30
-rw-r--r--src/plugins/accessible/compat/qaccessiblecompat.h30
-rw-r--r--src/plugins/accessible/widgets/complexwidgets.cpp30
-rw-r--r--src/plugins/accessible/widgets/complexwidgets.h30
-rw-r--r--src/plugins/accessible/widgets/main.cpp34
-rw-r--r--src/plugins/accessible/widgets/qaccessiblemenu.cpp30
-rw-r--r--src/plugins/accessible/widgets/qaccessiblemenu.h30
-rw-r--r--src/plugins/accessible/widgets/qaccessiblewidgets.cpp30
-rw-r--r--src/plugins/accessible/widgets/qaccessiblewidgets.h30
-rw-r--r--src/plugins/accessible/widgets/rangecontrols.cpp30
-rw-r--r--src/plugins/accessible/widgets/rangecontrols.h30
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.cpp154
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.h70
-rw-r--r--src/plugins/codecs/cn/cn.pro2
-rw-r--r--src/plugins/codecs/cn/main.cpp30
-rw-r--r--src/plugins/codecs/cn/qgb18030codec.cpp30
-rw-r--r--src/plugins/codecs/cn/qgb18030codec.h30
-rw-r--r--src/plugins/codecs/jp/jp.pro2
-rw-r--r--src/plugins/codecs/jp/main.cpp30
-rw-r--r--src/plugins/codecs/jp/qeucjpcodec.cpp31
-rw-r--r--src/plugins/codecs/jp/qeucjpcodec.h30
-rw-r--r--src/plugins/codecs/jp/qfontjpcodec.cpp30
-rw-r--r--src/plugins/codecs/jp/qfontjpcodec.h30
-rw-r--r--src/plugins/codecs/jp/qjiscodec.cpp32
-rw-r--r--src/plugins/codecs/jp/qjiscodec.h30
-rw-r--r--src/plugins/codecs/jp/qjpunicode.cpp30
-rw-r--r--src/plugins/codecs/jp/qjpunicode.h30
-rw-r--r--src/plugins/codecs/jp/qsjiscodec.cpp30
-rw-r--r--src/plugins/codecs/jp/qsjiscodec.h30
-rw-r--r--src/plugins/codecs/kr/cp949codetbl.h30
-rw-r--r--src/plugins/codecs/kr/kr.pro2
-rw-r--r--src/plugins/codecs/kr/main.cpp30
-rw-r--r--src/plugins/codecs/kr/qeuckrcodec.cpp30
-rw-r--r--src/plugins/codecs/kr/qeuckrcodec.h30
-rw-r--r--src/plugins/codecs/tw/main.cpp30
-rw-r--r--src/plugins/codecs/tw/qbig5codec.cpp30
-rw-r--r--src/plugins/codecs/tw/qbig5codec.h30
-rw-r--r--src/plugins/codecs/tw/tw.pro2
-rw-r--r--src/plugins/decorations/default/main.cpp30
-rw-r--r--src/plugins/decorations/styled/main.cpp30
-rw-r--r--src/plugins/decorations/windows/main.cpp30
-rw-r--r--src/plugins/gfxdrivers/ahi/qscreenahi_qws.cpp30
-rw-r--r--src/plugins/gfxdrivers/ahi/qscreenahi_qws.h30
-rw-r--r--src/plugins/gfxdrivers/ahi/qscreenahiplugin.cpp30
-rw-r--r--src/plugins/gfxdrivers/directfb/directfb.pro37
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.cpp38
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbkeyboard.h41
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbmouse.cpp55
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbmouse.h41
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.cpp157
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintdevice.h62
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp350
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h40
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp275
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpixmap.h58
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp1060
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbscreen.h166
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbscreenplugin.cpp33
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp460
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h67
-rw-r--r--src/plugins/gfxdrivers/gfxdrivers.pro1
-rw-r--r--src/plugins/gfxdrivers/hybrid/hybrid.pro16
-rw-r--r--src/plugins/gfxdrivers/hybrid/hybridplugin.cpp75
-rw-r--r--src/plugins/gfxdrivers/hybrid/hybridscreen.cpp382
-rw-r--r--src/plugins/gfxdrivers/hybrid/hybridscreen.h97
-rw-r--r--src/plugins/gfxdrivers/hybrid/hybridsurface.cpp300
-rw-r--r--src/plugins/gfxdrivers/hybrid/hybridsurface.h90
-rw-r--r--src/plugins/gfxdrivers/linuxfb/main.cpp30
-rw-r--r--src/plugins/gfxdrivers/powervr/QWSWSEGL/QWSWSEGL.pro4
-rw-r--r--src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwsdrawable.c102
-rw-r--r--src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwsdrawable.h48
-rw-r--r--src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwsdrawable_p.h31
-rw-r--r--src/plugins/gfxdrivers/powervr/QWSWSEGL/pvrqwswsegl.c55
-rw-r--r--src/plugins/gfxdrivers/powervr/README12
-rw-r--r--src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.cpp231
-rw-r--r--src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.h58
-rw-r--r--src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreenplugin.cpp30
-rw-r--r--src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglwindowsurface.cpp116
-rw-r--r--src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglwindowsurface.h44
-rw-r--r--src/plugins/gfxdrivers/qvfb/main.cpp32
-rw-r--r--src/plugins/gfxdrivers/transformed/main.cpp38
-rw-r--r--src/plugins/gfxdrivers/vnc/main.cpp38
-rw-r--r--src/plugins/gfxdrivers/vnc/qscreenvnc_p.h32
-rw-r--r--src/plugins/gfxdrivers/vnc/qscreenvnc_qws.cpp50
-rw-r--r--src/plugins/gfxdrivers/vnc/qscreenvnc_qws.h30
-rw-r--r--src/plugins/graphicssystems/graphicssystems.pro3
-rw-r--r--src/plugins/graphicssystems/opengl/main.cpp50
-rw-r--r--src/plugins/graphicssystems/openvg/main.cpp30
-rw-r--r--src/plugins/graphicssystems/openvg/openvg.pro2
-rw-r--r--src/plugins/graphicssystems/openvg/qgraphicssystem_vg.cpp30
-rw-r--r--src/plugins/graphicssystems/openvg/qgraphicssystem_vg_p.h30
-rw-r--r--src/plugins/graphicssystems/shivavg/main.cpp30
-rw-r--r--src/plugins/graphicssystems/shivavg/shivavggraphicssystem.cpp30
-rw-r--r--src/plugins/graphicssystems/shivavg/shivavggraphicssystem.h30
-rw-r--r--src/plugins/graphicssystems/shivavg/shivavgwindowsurface.cpp44
-rw-r--r--src/plugins/graphicssystems/shivavg/shivavgwindowsurface.h30
-rw-r--r--src/plugins/graphicssystems/trace/main.cpp69
-rw-r--r--src/plugins/graphicssystems/trace/qgraphicssystem_trace.cpp144
-rw-r--r--src/plugins/graphicssystems/trace/qgraphicssystem_trace_p.h71
-rw-r--r--src/plugins/graphicssystems/trace/trace.pro12
-rw-r--r--src/plugins/iconengines/svgiconengine/main.cpp30
-rw-r--r--src/plugins/iconengines/svgiconengine/qsvgiconengine.cpp32
-rw-r--r--src/plugins/iconengines/svgiconengine/qsvgiconengine.h30
-rw-r--r--src/plugins/iconengines/svgiconengine/svgiconengine.pro2
-rw-r--r--src/plugins/imageformats/gif/gif.pro2
-rw-r--r--src/plugins/imageformats/gif/main.cpp30
-rw-r--r--src/plugins/imageformats/gif/qgifhandler.cpp38
-rw-r--r--src/plugins/imageformats/gif/qgifhandler.h30
-rw-r--r--src/plugins/imageformats/ico/ico.pro2
-rw-r--r--src/plugins/imageformats/ico/main.cpp30
-rw-r--r--src/plugins/imageformats/ico/qicohandler.cpp34
-rw-r--r--src/plugins/imageformats/ico/qicohandler.h30
-rw-r--r--src/plugins/imageformats/jpeg/jpeg.pro7
-rw-r--r--src/plugins/imageformats/jpeg/main.cpp30
-rw-r--r--src/plugins/imageformats/jpeg/qjpeghandler.cpp523
-rw-r--r--src/plugins/imageformats/jpeg/qjpeghandler.h30
-rw-r--r--src/plugins/imageformats/mng/main.cpp30
-rw-r--r--src/plugins/imageformats/mng/mng.pro7
-rw-r--r--src/plugins/imageformats/mng/qmnghandler.cpp32
-rw-r--r--src/plugins/imageformats/mng/qmnghandler.h33
-rw-r--r--src/plugins/imageformats/svg/main.cpp30
-rw-r--r--src/plugins/imageformats/svg/qsvgiohandler.cpp30
-rw-r--r--src/plugins/imageformats/svg/qsvgiohandler.h30
-rw-r--r--src/plugins/imageformats/svg/svg.pro2
-rw-r--r--src/plugins/imageformats/tiff/main.cpp30
-rw-r--r--src/plugins/imageformats/tiff/qtiffhandler.cpp185
-rw-r--r--src/plugins/imageformats/tiff/qtiffhandler.h30
-rw-r--r--src/plugins/imageformats/tiff/tiff.pro5
-rw-r--r--src/plugins/inputmethods/imsw-multi/qmultiinputcontext.cpp30
-rw-r--r--src/plugins/inputmethods/imsw-multi/qmultiinputcontext.h30
-rw-r--r--src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.cpp30
-rw-r--r--src/plugins/inputmethods/imsw-multi/qmultiinputcontextplugin.h30
-rw-r--r--src/plugins/kbddrivers/linuxinput/main.cpp30
-rw-r--r--src/plugins/mousedrivers/linuxtp/main.cpp30
-rw-r--r--src/plugins/mousedrivers/pc/main.cpp30
-rw-r--r--src/plugins/mousedrivers/tslib/main.cpp30
-rw-r--r--src/plugins/phonon/ds9/ds9.pro10
-rw-r--r--src/plugins/phonon/mmf/mmf.pro97
-rw-r--r--src/plugins/phonon/phonon.pro5
-rw-r--r--src/plugins/plugins.pro5
-rw-r--r--src/plugins/qpluginbase.pri8
-rw-r--r--src/plugins/s60/3_1/3_1.pro9
-rw-r--r--src/plugins/s60/3_2/3_2.pro17
-rw-r--r--src/plugins/s60/5_0/5_0.pro17
-rw-r--r--src/plugins/s60/bwins/qts60pluginu.def8
-rw-r--r--src/plugins/s60/eabi/qts60pluginu.def8
-rw-r--r--src/plugins/s60/s60.pro3
-rw-r--r--src/plugins/s60/s60pluginbase.pri16
-rw-r--r--src/plugins/s60/src/qcoreapplication_3_1.cpp48
-rw-r--r--src/plugins/s60/src/qcoreapplication_3_2.cpp48
-rw-r--r--src/plugins/s60/src/qdesktopservices_3_1.cpp49
-rw-r--r--src/plugins/s60/src/qdesktopservices_3_2.cpp80
-rw-r--r--src/plugins/s60/src/qlocale_3_1.cpp148
-rw-r--r--src/plugins/s60/src/qlocale_3_2.cpp64
-rw-r--r--src/plugins/script/qtdbus/main.cpp30
-rw-r--r--src/plugins/script/qtdbus/main.h30
-rw-r--r--src/plugins/script/script.pro2
-rw-r--r--src/plugins/sqldrivers/db2/main.cpp30
-rw-r--r--src/plugins/sqldrivers/ibase/main.cpp30
-rw-r--r--src/plugins/sqldrivers/mysql/main.cpp30
-rw-r--r--src/plugins/sqldrivers/oci/main.cpp30
-rw-r--r--src/plugins/sqldrivers/odbc/main.cpp30
-rw-r--r--src/plugins/sqldrivers/psql/main.cpp30
-rw-r--r--src/plugins/sqldrivers/sqldrivers.pro4
-rw-r--r--src/plugins/sqldrivers/sqlite/smain.cpp30
-rw-r--r--src/plugins/sqldrivers/sqlite2/smain.cpp30
-rw-r--r--src/plugins/sqldrivers/sqlite_symbian/SQLite3_v9.2.zipbin0 -> 3155605 bytes-rw-r--r--src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pro9
-rw-r--r--src/plugins/sqldrivers/tds/main.cpp30
-rw-r--r--src/qbase.pri42
-rw-r--r--src/qt3support/canvas/q3canvas.cpp30
-rw-r--r--src/qt3support/canvas/q3canvas.h30
-rw-r--r--src/qt3support/dialogs/q3filedialog.cpp32
-rw-r--r--src/qt3support/dialogs/q3filedialog.h30
-rw-r--r--src/qt3support/dialogs/q3filedialog_mac.cpp55
-rw-r--r--src/qt3support/dialogs/q3filedialog_win.cpp30
-rw-r--r--src/qt3support/dialogs/q3progressdialog.cpp30
-rw-r--r--src/qt3support/dialogs/q3progressdialog.h30
-rw-r--r--src/qt3support/dialogs/q3tabdialog.cpp30
-rw-r--r--src/qt3support/dialogs/q3tabdialog.h30
-rw-r--r--src/qt3support/dialogs/q3wizard.cpp30
-rw-r--r--src/qt3support/dialogs/q3wizard.h30
-rw-r--r--src/qt3support/itemviews/q3iconview.cpp30
-rw-r--r--src/qt3support/itemviews/q3iconview.h30
-rw-r--r--src/qt3support/itemviews/q3listbox.cpp30
-rw-r--r--src/qt3support/itemviews/q3listbox.h30
-rw-r--r--src/qt3support/itemviews/q3listview.cpp30
-rw-r--r--src/qt3support/itemviews/q3listview.h30
-rw-r--r--src/qt3support/itemviews/q3table.cpp31
-rw-r--r--src/qt3support/itemviews/q3table.h30
-rw-r--r--src/qt3support/network/q3dns.cpp30
-rw-r--r--src/qt3support/network/q3dns.h30
-rw-r--r--src/qt3support/network/q3ftp.cpp30
-rw-r--r--src/qt3support/network/q3ftp.h30
-rw-r--r--src/qt3support/network/q3http.cpp30
-rw-r--r--src/qt3support/network/q3http.h30
-rw-r--r--src/qt3support/network/q3localfs.cpp30
-rw-r--r--src/qt3support/network/q3localfs.h30
-rw-r--r--src/qt3support/network/q3network.cpp30
-rw-r--r--src/qt3support/network/q3network.h30
-rw-r--r--src/qt3support/network/q3networkprotocol.cpp30
-rw-r--r--src/qt3support/network/q3networkprotocol.h30
-rw-r--r--src/qt3support/network/q3serversocket.cpp30
-rw-r--r--src/qt3support/network/q3serversocket.h30
-rw-r--r--src/qt3support/network/q3socket.cpp30
-rw-r--r--src/qt3support/network/q3socket.h30
-rw-r--r--src/qt3support/network/q3socketdevice.cpp30
-rw-r--r--src/qt3support/network/q3socketdevice.h30
-rw-r--r--src/qt3support/network/q3socketdevice_unix.cpp30
-rw-r--r--src/qt3support/network/q3socketdevice_win.cpp30
-rw-r--r--src/qt3support/network/q3url.cpp30
-rw-r--r--src/qt3support/network/q3url.h30
-rw-r--r--src/qt3support/network/q3urloperator.cpp30
-rw-r--r--src/qt3support/network/q3urloperator.h30
-rw-r--r--src/qt3support/other/q3accel.cpp32
-rw-r--r--src/qt3support/other/q3accel.h30
-rw-r--r--src/qt3support/other/q3boxlayout.cpp30
-rw-r--r--src/qt3support/other/q3boxlayout.h30
-rw-r--r--src/qt3support/other/q3dragobject.cpp30
-rw-r--r--src/qt3support/other/q3dragobject.h30
-rw-r--r--src/qt3support/other/q3dropsite.cpp30
-rw-r--r--src/qt3support/other/q3dropsite.h30
-rw-r--r--src/qt3support/other/q3gridlayout.h30
-rw-r--r--src/qt3support/other/q3membuf.cpp30
-rw-r--r--src/qt3support/other/q3membuf_p.h30
-rw-r--r--src/qt3support/other/q3mimefactory.cpp30
-rw-r--r--src/qt3support/other/q3mimefactory.h30
-rw-r--r--src/qt3support/other/q3polygonscanner.cpp30
-rw-r--r--src/qt3support/other/q3polygonscanner.h30
-rw-r--r--src/qt3support/other/q3process.cpp30
-rw-r--r--src/qt3support/other/q3process.h30
-rw-r--r--src/qt3support/other/q3process_unix.cpp123
-rw-r--r--src/qt3support/other/q3process_win.cpp30
-rw-r--r--src/qt3support/other/qiconset.h30
-rw-r--r--src/qt3support/other/qt_compat_pch.h30
-rw-r--r--src/qt3support/painting/q3paintdevicemetrics.cpp30
-rw-r--r--src/qt3support/painting/q3paintdevicemetrics.h32
-rw-r--r--src/qt3support/painting/q3paintengine_svg.cpp30
-rw-r--r--src/qt3support/painting/q3paintengine_svg_p.h30
-rw-r--r--src/qt3support/painting/q3painter.cpp30
-rw-r--r--src/qt3support/painting/q3painter.h32
-rw-r--r--src/qt3support/painting/q3picture.cpp30
-rw-r--r--src/qt3support/painting/q3picture.h30
-rw-r--r--src/qt3support/painting/q3pointarray.cpp30
-rw-r--r--src/qt3support/painting/q3pointarray.h30
-rw-r--r--src/qt3support/sql/q3databrowser.cpp30
-rw-r--r--src/qt3support/sql/q3databrowser.h30
-rw-r--r--src/qt3support/sql/q3datatable.cpp30
-rw-r--r--src/qt3support/sql/q3datatable.h30
-rw-r--r--src/qt3support/sql/q3dataview.cpp30
-rw-r--r--src/qt3support/sql/q3dataview.h30
-rw-r--r--src/qt3support/sql/q3editorfactory.cpp30
-rw-r--r--src/qt3support/sql/q3editorfactory.h30
-rw-r--r--src/qt3support/sql/q3sqlcursor.cpp30
-rw-r--r--src/qt3support/sql/q3sqlcursor.h30
-rw-r--r--src/qt3support/sql/q3sqleditorfactory.cpp30
-rw-r--r--src/qt3support/sql/q3sqleditorfactory.h30
-rw-r--r--src/qt3support/sql/q3sqlfieldinfo.h30
-rw-r--r--src/qt3support/sql/q3sqlfieldinfo.qdoc234
-rw-r--r--src/qt3support/sql/q3sqlform.cpp30
-rw-r--r--src/qt3support/sql/q3sqlform.h30
-rw-r--r--src/qt3support/sql/q3sqlmanager_p.cpp30
-rw-r--r--src/qt3support/sql/q3sqlmanager_p.h30
-rw-r--r--src/qt3support/sql/q3sqlpropertymap.cpp30
-rw-r--r--src/qt3support/sql/q3sqlpropertymap.h30
-rw-r--r--src/qt3support/sql/q3sqlrecordinfo.h30
-rw-r--r--src/qt3support/sql/q3sqlrecordinfo.qdoc89
-rw-r--r--src/qt3support/sql/q3sqlselectcursor.cpp30
-rw-r--r--src/qt3support/sql/q3sqlselectcursor.h30
-rw-r--r--src/qt3support/text/q3multilineedit.cpp30
-rw-r--r--src/qt3support/text/q3multilineedit.h30
-rw-r--r--src/qt3support/text/q3richtext.cpp30
-rw-r--r--src/qt3support/text/q3richtext_p.cpp30
-rw-r--r--src/qt3support/text/q3richtext_p.h30
-rw-r--r--src/qt3support/text/q3simplerichtext.cpp30
-rw-r--r--src/qt3support/text/q3simplerichtext.h30
-rw-r--r--src/qt3support/text/q3stylesheet.cpp30
-rw-r--r--src/qt3support/text/q3stylesheet.h30
-rw-r--r--src/qt3support/text/q3syntaxhighlighter.cpp30
-rw-r--r--src/qt3support/text/q3syntaxhighlighter.h30
-rw-r--r--src/qt3support/text/q3syntaxhighlighter_p.h30
-rw-r--r--src/qt3support/text/q3textbrowser.cpp30
-rw-r--r--src/qt3support/text/q3textbrowser.h30
-rw-r--r--src/qt3support/text/q3textedit.cpp30
-rw-r--r--src/qt3support/text/q3textedit.h30
-rw-r--r--src/qt3support/text/q3textstream.cpp30
-rw-r--r--src/qt3support/text/q3textstream.h30
-rw-r--r--src/qt3support/text/q3textview.cpp30
-rw-r--r--src/qt3support/text/q3textview.h30
-rw-r--r--src/qt3support/tools/q3asciicache.h30
-rw-r--r--src/qt3support/tools/q3asciicache.qdoc465
-rw-r--r--src/qt3support/tools/q3asciidict.h30
-rw-r--r--src/qt3support/tools/q3asciidict.qdoc416
-rw-r--r--src/qt3support/tools/q3cache.h30
-rw-r--r--src/qt3support/tools/q3cache.qdoc461
-rw-r--r--src/qt3support/tools/q3cleanuphandler.h30
-rw-r--r--src/qt3support/tools/q3cstring.cpp30
-rw-r--r--src/qt3support/tools/q3cstring.h30
-rw-r--r--src/qt3support/tools/q3deepcopy.cpp30
-rw-r--r--src/qt3support/tools/q3deepcopy.h30
-rw-r--r--src/qt3support/tools/q3dict.h30
-rw-r--r--src/qt3support/tools/q3dict.qdoc446
-rw-r--r--src/qt3support/tools/q3garray.cpp31
-rw-r--r--src/qt3support/tools/q3garray.h30
-rw-r--r--src/qt3support/tools/q3gcache.cpp30
-rw-r--r--src/qt3support/tools/q3gcache.h30
-rw-r--r--src/qt3support/tools/q3gdict.cpp30
-rw-r--r--src/qt3support/tools/q3gdict.h30
-rw-r--r--src/qt3support/tools/q3glist.cpp30
-rw-r--r--src/qt3support/tools/q3glist.h30
-rw-r--r--src/qt3support/tools/q3gvector.cpp30
-rw-r--r--src/qt3support/tools/q3gvector.h30
-rw-r--r--src/qt3support/tools/q3intcache.h30
-rw-r--r--src/qt3support/tools/q3intcache.qdoc446
-rw-r--r--src/qt3support/tools/q3intdict.h30
-rw-r--r--src/qt3support/tools/q3intdict.qdoc390
-rw-r--r--src/qt3support/tools/q3memarray.h30
-rw-r--r--src/qt3support/tools/q3memarray.qdoc523
-rw-r--r--src/qt3support/tools/q3objectdict.h30
-rw-r--r--src/qt3support/tools/q3ptrcollection.cpp30
-rw-r--r--src/qt3support/tools/q3ptrcollection.h30
-rw-r--r--src/qt3support/tools/q3ptrdict.h30
-rw-r--r--src/qt3support/tools/q3ptrdict.qdoc388
-rw-r--r--src/qt3support/tools/q3ptrlist.h30
-rw-r--r--src/qt3support/tools/q3ptrlist.qdoc1157
-rw-r--r--src/qt3support/tools/q3ptrqueue.h30
-rw-r--r--src/qt3support/tools/q3ptrqueue.qdoc230
-rw-r--r--src/qt3support/tools/q3ptrstack.h30
-rw-r--r--src/qt3support/tools/q3ptrstack.qdoc217
-rw-r--r--src/qt3support/tools/q3ptrvector.h30
-rw-r--r--src/qt3support/tools/q3ptrvector.qdoc427
-rw-r--r--src/qt3support/tools/q3semaphore.cpp30
-rw-r--r--src/qt3support/tools/q3semaphore.h30
-rw-r--r--src/qt3support/tools/q3shared.cpp30
-rw-r--r--src/qt3support/tools/q3shared.h30
-rw-r--r--src/qt3support/tools/q3signal.cpp30
-rw-r--r--src/qt3support/tools/q3signal.h30
-rw-r--r--src/qt3support/tools/q3sortedlist.h30
-rw-r--r--src/qt3support/tools/q3strlist.h30
-rw-r--r--src/qt3support/tools/q3strvec.h30
-rw-r--r--src/qt3support/tools/q3tl.h30
-rw-r--r--src/qt3support/tools/q3valuelist.h30
-rw-r--r--src/qt3support/tools/q3valuelist.qdoc569
-rw-r--r--src/qt3support/tools/q3valuestack.h30
-rw-r--r--src/qt3support/tools/q3valuestack.qdoc149
-rw-r--r--src/qt3support/tools/q3valuevector.h30
-rw-r--r--src/qt3support/tools/q3valuevector.qdoc274
-rw-r--r--src/qt3support/widgets/q3action.cpp30
-rw-r--r--src/qt3support/widgets/q3action.h30
-rw-r--r--src/qt3support/widgets/q3button.cpp30
-rw-r--r--src/qt3support/widgets/q3button.h30
-rw-r--r--src/qt3support/widgets/q3buttongroup.cpp30
-rw-r--r--src/qt3support/widgets/q3buttongroup.h30
-rw-r--r--src/qt3support/widgets/q3combobox.cpp33
-rw-r--r--src/qt3support/widgets/q3combobox.h30
-rw-r--r--src/qt3support/widgets/q3datetimeedit.cpp30
-rw-r--r--src/qt3support/widgets/q3datetimeedit.h30
-rw-r--r--src/qt3support/widgets/q3dockarea.cpp33
-rw-r--r--src/qt3support/widgets/q3dockarea.h30
-rw-r--r--src/qt3support/widgets/q3dockwindow.cpp32
-rw-r--r--src/qt3support/widgets/q3dockwindow.h30
-rw-r--r--src/qt3support/widgets/q3frame.cpp30
-rw-r--r--src/qt3support/widgets/q3frame.h30
-rw-r--r--src/qt3support/widgets/q3grid.cpp30
-rw-r--r--src/qt3support/widgets/q3grid.h30
-rw-r--r--src/qt3support/widgets/q3gridview.cpp30
-rw-r--r--src/qt3support/widgets/q3gridview.h30
-rw-r--r--src/qt3support/widgets/q3groupbox.cpp30
-rw-r--r--src/qt3support/widgets/q3groupbox.h30
-rw-r--r--src/qt3support/widgets/q3hbox.cpp30
-rw-r--r--src/qt3support/widgets/q3hbox.h30
-rw-r--r--src/qt3support/widgets/q3header.cpp30
-rw-r--r--src/qt3support/widgets/q3header.h30
-rw-r--r--src/qt3support/widgets/q3hgroupbox.cpp30
-rw-r--r--src/qt3support/widgets/q3hgroupbox.h30
-rw-r--r--src/qt3support/widgets/q3mainwindow.cpp34
-rw-r--r--src/qt3support/widgets/q3mainwindow.h30
-rw-r--r--src/qt3support/widgets/q3mainwindow_p.h30
-rw-r--r--src/qt3support/widgets/q3popupmenu.cpp67
-rw-r--r--src/qt3support/widgets/q3popupmenu.h44
-rw-r--r--src/qt3support/widgets/q3progressbar.cpp30
-rw-r--r--src/qt3support/widgets/q3progressbar.h30
-rw-r--r--src/qt3support/widgets/q3rangecontrol.cpp30
-rw-r--r--src/qt3support/widgets/q3rangecontrol.h30
-rw-r--r--src/qt3support/widgets/q3scrollview.cpp34
-rw-r--r--src/qt3support/widgets/q3scrollview.h30
-rw-r--r--src/qt3support/widgets/q3spinwidget.cpp30
-rw-r--r--src/qt3support/widgets/q3titlebar.cpp30
-rw-r--r--src/qt3support/widgets/q3titlebar_p.h30
-rw-r--r--src/qt3support/widgets/q3toolbar.cpp32
-rw-r--r--src/qt3support/widgets/q3toolbar.h30
-rw-r--r--src/qt3support/widgets/q3vbox.cpp30
-rw-r--r--src/qt3support/widgets/q3vbox.h30
-rw-r--r--src/qt3support/widgets/q3vgroupbox.cpp30
-rw-r--r--src/qt3support/widgets/q3vgroupbox.h30
-rw-r--r--src/qt3support/widgets/q3whatsthis.cpp30
-rw-r--r--src/qt3support/widgets/q3whatsthis.h30
-rw-r--r--src/qt3support/widgets/q3widgetstack.cpp30
-rw-r--r--src/qt3support/widgets/q3widgetstack.h30
-rw-r--r--src/s60installs/.gitignore1
-rw-r--r--src/s60installs/bwins/QtCoreu.def4401
-rw-r--r--src/s60installs/bwins/QtGuiu.def12525
-rw-r--r--src/s60installs/bwins/QtMultimediau.def271
-rw-r--r--src/s60installs/bwins/QtNetworku.def965
-rw-r--r--src/s60installs/bwins/QtOpenVGu.def142
-rw-r--r--src/s60installs/bwins/QtScriptu.def372
-rw-r--r--src/s60installs/bwins/QtSqlu.def461
-rw-r--r--src/s60installs/bwins/QtSvgu.def149
-rw-r--r--src/s60installs/bwins/QtTestu.def78
-rw-r--r--src/s60installs/bwins/QtWebKitu.def623
-rw-r--r--src/s60installs/bwins/QtXmlPatternsu.def280
-rw-r--r--src/s60installs/bwins/QtXmlu.def403
-rw-r--r--src/s60installs/bwins/phononu.def517
-rw-r--r--src/s60installs/eabi/QtCoreu.def3636
-rw-r--r--src/s60installs/eabi/QtGuiu.def11744
-rw-r--r--src/s60installs/eabi/QtMultimediau.def298
-rw-r--r--src/s60installs/eabi/QtNetworku.def996
-rw-r--r--src/s60installs/eabi/QtOpenVGu.def172
-rw-r--r--src/s60installs/eabi/QtScriptu.def396
-rw-r--r--src/s60installs/eabi/QtSqlu.def468
-rw-r--r--src/s60installs/eabi/QtSvgu.def147
-rw-r--r--src/s60installs/eabi/QtTestu.def72
-rw-r--r--src/s60installs/eabi/QtWebKitu.def693
-rw-r--r--src/s60installs/eabi/QtXmlPatternsu.def253
-rw-r--r--src/s60installs/eabi/QtXmlu.def461
-rw-r--r--src/s60installs/eabi/phononu.def547
-rw-r--r--src/s60installs/qt.iby118
-rw-r--r--src/s60installs/qt.svg17
-rw-r--r--src/s60installs/qtdemoapps.iby15
-rw-r--r--src/s60installs/s60installs.pro120
-rw-r--r--src/s60installs/selfsigned.cer21
-rw-r--r--src/s60installs/selfsigned.key12
-rw-r--r--src/s60main/qts60main.cpp61
-rw-r--r--src/s60main/qts60main_mcrt0.cpp113
-rw-r--r--src/s60main/s60main.pro29
-rw-r--r--src/script/api/api.pri35
-rw-r--r--src/script/api/qscriptable.cpp164
-rw-r--r--src/script/api/qscriptable.h70
-rw-r--r--src/script/api/qscriptable_p.h61
-rw-r--r--src/script/api/qscriptclass.cpp379
-rw-r--r--src/script/api/qscriptclass.h100
-rw-r--r--src/script/api/qscriptclasspropertyiterator.cpp204
-rw-r--r--src/script/api/qscriptclasspropertyiterator.h75
-rw-r--r--src/script/api/qscriptcontext.cpp746
-rw-r--r--src/script/api/qscriptcontext.h104
-rw-r--r--src/script/api/qscriptcontext_p.h58
-rw-r--r--src/script/api/qscriptcontextinfo.cpp554
-rw-r--r--src/script/api/qscriptcontextinfo.h104
-rw-r--r--src/script/api/qscriptengine.cpp3848
-rw-r--r--src/script/api/qscriptengine.h465
-rw-r--r--src/script/api/qscriptengine_p.h583
-rw-r--r--src/script/api/qscriptengineagent.cpp502
-rw-r--r--src/script/api/qscriptengineagent.h91
-rw-r--r--src/script/api/qscriptengineagent_p.h124
-rw-r--r--src/script/api/qscriptextensioninterface.h52
-rw-r--r--src/script/api/qscriptextensionplugin.cpp125
-rw-r--r--src/script/api/qscriptextensionplugin.h58
-rw-r--r--src/script/api/qscriptprogram.cpp207
-rw-r--r--src/script/api/qscriptprogram.h68
-rw-r--r--src/script/api/qscriptprogram_p.h77
-rw-r--r--src/script/api/qscriptstring.cpp210
-rw-r--r--src/script/api/qscriptstring.h69
-rw-r--r--src/script/api/qscriptstring_p.h108
-rw-r--r--src/script/api/qscriptvalue.cpp2394
-rw-r--r--src/script/api/qscriptvalue.h223
-rw-r--r--src/script/api/qscriptvalue_p.h148
-rw-r--r--src/script/api/qscriptvalueiterator.cpp334
-rw-r--r--src/script/api/qscriptvalueiterator.h79
-rw-r--r--src/script/bridge/bridge.pri21
-rw-r--r--src/script/bridge/qscriptactivationobject.cpp154
-rw-r--r--src/script/bridge/qscriptactivationobject_p.h92
-rw-r--r--src/script/bridge/qscriptclassobject.cpp255
-rw-r--r--src/script/bridge/qscriptclassobject_p.h105
-rw-r--r--src/script/bridge/qscriptdeclarativeclass.cpp339
-rw-r--r--src/script/bridge/qscriptdeclarativeclass_p.h111
-rw-r--r--src/script/bridge/qscriptdeclarativeobject.cpp174
-rw-r--r--src/script/bridge/qscriptdeclarativeobject_p.h107
-rw-r--r--src/script/bridge/qscriptfunction.cpp176
-rw-r--r--src/script/bridge/qscriptfunction_p.h119
-rw-r--r--src/script/bridge/qscriptglobalobject.cpp150
-rw-r--r--src/script/bridge/qscriptglobalobject_p.h126
-rw-r--r--src/script/bridge/qscriptobject.cpp223
-rw-r--r--src/script/bridge/qscriptobject_p.h176
-rw-r--r--src/script/bridge/qscriptqobject.cpp2234
-rw-r--r--src/script/bridge/qscriptqobject_p.h321
-rw-r--r--src/script/bridge/qscriptvariant.cpp152
-rw-r--r--src/script/bridge/qscriptvariant_p.h75
-rw-r--r--src/script/instruction.table87
-rwxr-xr-xsrc/script/parser/make-parser.sh53
-rw-r--r--src/script/parser/parser.pri19
-rw-r--r--src/script/parser/qscript.g2086
-rw-r--r--src/script/parser/qscriptast.cpp767
-rw-r--r--src/script/parser/qscriptast_p.h1480
-rw-r--r--src/script/parser/qscriptastfwd_p.h128
-rw-r--r--src/script/parser/qscriptastvisitor.cpp40
-rw-r--r--src/script/parser/qscriptastvisitor_p.h277
-rw-r--r--src/script/parser/qscriptgrammar.cpp953
-rw-r--r--src/script/parser/qscriptgrammar_p.h181
-rw-r--r--src/script/parser/qscriptlexer.cpp1093
-rw-r--r--src/script/parser/qscriptlexer_p.h224
-rw-r--r--src/script/parser/qscriptparser.cpp1139
-rw-r--r--src/script/parser/qscriptparser_p.h146
-rw-r--r--src/script/parser/qscriptsyntaxchecker.cpp196
-rw-r--r--src/script/parser/qscriptsyntaxchecker_p.h96
-rw-r--r--src/script/qscript.g2123
-rw-r--r--src/script/qscriptable.cpp195
-rw-r--r--src/script/qscriptable.h89
-rw-r--r--src/script/qscriptable_p.h84
-rw-r--r--src/script/qscriptarray_p.h428
-rw-r--r--src/script/qscriptasm.cpp108
-rw-r--r--src/script/qscriptasm_p.h183
-rw-r--r--src/script/qscriptast.cpp789
-rw-r--r--src/script/qscriptast_p.h1502
-rw-r--r--src/script/qscriptastfwd_p.h146
-rw-r--r--src/script/qscriptastvisitor.cpp58
-rw-r--r--src/script/qscriptastvisitor_p.h295
-rw-r--r--src/script/qscriptbuffer_p.h211
-rw-r--r--src/script/qscriptclass.cpp684
-rw-r--r--src/script/qscriptclass.h121
-rw-r--r--src/script/qscriptclass_p.h91
-rw-r--r--src/script/qscriptclassdata.cpp117
-rw-r--r--src/script/qscriptclassdata_p.h119
-rw-r--r--src/script/qscriptclassinfo_p.h126
-rw-r--r--src/script/qscriptclasspropertyiterator.cpp225
-rw-r--r--src/script/qscriptclasspropertyiterator.h96
-rw-r--r--src/script/qscriptclasspropertyiterator_p.h81
-rw-r--r--src/script/qscriptcompiler.cpp2111
-rw-r--r--src/script/qscriptcompiler_p.h377
-rw-r--r--src/script/qscriptcontext.cpp571
-rw-r--r--src/script/qscriptcontext.h125
-rw-r--r--src/script/qscriptcontext_p.cpp2598
-rw-r--r--src/script/qscriptcontext_p.h361
-rw-r--r--src/script/qscriptcontextfwd_p.h257
-rw-r--r--src/script/qscriptcontextinfo.cpp553
-rw-r--r--src/script/qscriptcontextinfo.h125
-rw-r--r--src/script/qscriptcontextinfo_p.h99
-rw-r--r--src/script/qscriptecmaarray.cpp777
-rw-r--r--src/script/qscriptecmaarray_p.h141
-rw-r--r--src/script/qscriptecmaboolean.cpp137
-rw-r--r--src/script/qscriptecmaboolean_p.h89
-rw-r--r--src/script/qscriptecmacore.cpp120
-rw-r--r--src/script/qscriptecmacore_p.h115
-rw-r--r--src/script/qscriptecmadate.cpp1285
-rw-r--r--src/script/qscriptecmadate_p.h234
-rw-r--r--src/script/qscriptecmaerror.cpp368
-rw-r--r--src/script/qscriptecmaerror_p.h121
-rw-r--r--src/script/qscriptecmafunction.cpp459
-rw-r--r--src/script/qscriptecmafunction_p.h105
-rw-r--r--src/script/qscriptecmaglobal.cpp571
-rw-r--r--src/script/qscriptecmaglobal_p.h141
-rw-r--r--src/script/qscriptecmamath.cpp391
-rw-r--r--src/script/qscriptecmamath_p.h158
-rw-r--r--src/script/qscriptecmanumber.cpp268
-rw-r--r--src/script/qscriptecmanumber_p.h89
-rw-r--r--src/script/qscriptecmaobject.cpp238
-rw-r--r--src/script/qscriptecmaobject_p.h109
-rw-r--r--src/script/qscriptecmaregexp.cpp339
-rw-r--r--src/script/qscriptecmaregexp_p.h142
-rw-r--r--src/script/qscriptecmastring.cpp778
-rw-r--r--src/script/qscriptecmastring_p.h128
-rw-r--r--src/script/qscriptengine.cpp1881
-rw-r--r--src/script/qscriptengine.h481
-rw-r--r--src/script/qscriptengine_p.cpp2732
-rw-r--r--src/script/qscriptengine_p.h828
-rw-r--r--src/script/qscriptengineagent.cpp444
-rw-r--r--src/script/qscriptengineagent.h112
-rw-r--r--src/script/qscriptengineagent_p.h81
-rw-r--r--src/script/qscriptenginefwd_p.h563
-rw-r--r--src/script/qscriptextensioninterface.h73
-rw-r--r--src/script/qscriptextensionplugin.cpp147
-rw-r--r--src/script/qscriptextensionplugin.h79
-rw-r--r--src/script/qscriptextenumeration.cpp209
-rw-r--r--src/script/qscriptextenumeration_p.h126
-rw-r--r--src/script/qscriptextqobject.cpp2244
-rw-r--r--src/script/qscriptextqobject_p.h448
-rw-r--r--src/script/qscriptextvariant.cpp169
-rw-r--r--src/script/qscriptextvariant_p.h106
-rw-r--r--src/script/qscriptfunction.cpp171
-rw-r--r--src/script/qscriptfunction_p.h219
-rw-r--r--src/script/qscriptgc_p.h321
-rw-r--r--src/script/qscriptglobals_p.h104
-rw-r--r--src/script/qscriptgrammar.cpp975
-rw-r--r--src/script/qscriptgrammar_p.h208
-rw-r--r--src/script/qscriptlexer.cpp1122
-rw-r--r--src/script/qscriptlexer_p.h246
-rw-r--r--src/script/qscriptmember_p.h191
-rw-r--r--src/script/qscriptmemberfwd_p.h130
-rw-r--r--src/script/qscriptmemorypool_p.h130
-rw-r--r--src/script/qscriptnameid_p.h77
-rw-r--r--src/script/qscriptnodepool_p.h139
-rw-r--r--src/script/qscriptobject_p.h188
-rw-r--r--src/script/qscriptobjectdata_p.h81
-rw-r--r--src/script/qscriptobjectfwd_p.h112
-rw-r--r--src/script/qscriptparser.cpp1172
-rw-r--r--src/script/qscriptparser_p.h167
-rw-r--r--src/script/qscriptprettypretty.cpp1334
-rw-r--r--src/script/qscriptprettypretty_p.h329
-rw-r--r--src/script/qscriptrepository_p.h91
-rw-r--r--src/script/qscriptstring.cpp227
-rw-r--r--src/script/qscriptstring.h86
-rw-r--r--src/script/qscriptstring_p.h86
-rw-r--r--src/script/qscriptsyntaxchecker.cpp218
-rw-r--r--src/script/qscriptsyntaxchecker_p.h118
-rw-r--r--src/script/qscriptsyntaxcheckresult_p.h84
-rw-r--r--src/script/qscriptvalue.cpp1600
-rw-r--r--src/script/qscriptvalue.h238
-rw-r--r--src/script/qscriptvalue_p.h108
-rw-r--r--src/script/qscriptvaluefwd_p.h89
-rw-r--r--src/script/qscriptvalueimpl.cpp450
-rw-r--r--src/script/qscriptvalueimpl_p.h786
-rw-r--r--src/script/qscriptvalueimplfwd_p.h241
-rw-r--r--src/script/qscriptvalueiterator.cpp328
-rw-r--r--src/script/qscriptvalueiterator.h99
-rw-r--r--src/script/qscriptvalueiterator_p.h75
-rw-r--r--src/script/qscriptvalueiteratorimpl.cpp415
-rw-r--r--src/script/qscriptvalueiteratorimpl_p.h127
-rw-r--r--src/script/qscriptxmlgenerator.cpp1118
-rw-r--r--src/script/qscriptxmlgenerator_p.h330
-rw-r--r--src/script/script.pri128
-rw-r--r--src/script/script.pro65
-rw-r--r--src/script/utils/qscriptdate.cpp365
-rw-r--r--src/script/utils/qscriptdate_p.h52
-rw-r--r--src/script/utils/utils.pri5
-rw-r--r--src/scripttools/debugging/qscriptbreakpointdata.cpp35
-rw-r--r--src/scripttools/debugging/qscriptbreakpointdata_p.h34
-rw-r--r--src/scripttools/debugging/qscriptbreakpointsmodel.cpp43
-rw-r--r--src/scripttools/debugging/qscriptbreakpointsmodel_p.h30
-rw-r--r--src/scripttools/debugging/qscriptbreakpointswidget.cpp40
-rw-r--r--src/scripttools/debugging/qscriptbreakpointswidget_p.h30
-rw-r--r--src/scripttools/debugging/qscriptbreakpointswidgetinterface.cpp30
-rw-r--r--src/scripttools/debugging/qscriptbreakpointswidgetinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscriptbreakpointswidgetinterface_p_p.h30
-rw-r--r--src/scripttools/debugging/qscriptcompletionproviderinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscriptcompletiontask.cpp32
-rw-r--r--src/scripttools/debugging/qscriptcompletiontask_p.h30
-rw-r--r--src/scripttools/debugging/qscriptcompletiontaskinterface.cpp30
-rw-r--r--src/scripttools/debugging/qscriptcompletiontaskinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscriptcompletiontaskinterface_p_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebugger.cpp99
-rw-r--r--src/scripttools/debugging/qscriptdebugger_p.h35
-rw-r--r--src/scripttools/debugging/qscriptdebuggeragent.cpp41
-rw-r--r--src/scripttools/debugging/qscriptdebuggeragent_p.h31
-rw-r--r--src/scripttools/debugging/qscriptdebuggeragent_p_p.h34
-rw-r--r--src/scripttools/debugging/qscriptdebuggerbackend.cpp52
-rw-r--r--src/scripttools/debugging/qscriptdebuggerbackend_p.h32
-rw-r--r--src/scripttools/debugging/qscriptdebuggerbackend_p_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodefinderwidget.cpp34
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodefinderwidget_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodefinderwidgetinterface.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodefinderwidgetinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodefinderwidgetinterface_p_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodeview.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodeview_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodeviewinterface.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodeviewinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodeviewinterface_p_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodewidget.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodewidget_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodewidgetinterface.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodewidgetinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercodewidgetinterface_p_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommand.cpp35
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommand_p.h34
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandexecutor.cpp31
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandexecutor_p.h33
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandschedulerfrontend.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandschedulerfrontend_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandschedulerinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandschedulerjob.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandschedulerjob_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggercommandschedulerjob_p_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsole.cpp31
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsole_p.h33
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommand.cpp31
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommand_p.h34
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommand_p_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommandgroupdata.cpp44
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommandgroupdata_p.h34
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommandjob.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommandjob_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommandjob_p_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommandmanager.cpp31
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolecommandmanager_p.h34
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsoleglobalobject.cpp33
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsoleglobalobject_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolehistorianinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolewidget.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolewidget_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolewidgetinterface.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolewidgetinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerconsolewidgetinterface_p_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerevent.cpp36
-rw-r--r--src/scripttools/debugging/qscriptdebuggerevent_p.h33
-rw-r--r--src/scripttools/debugging/qscriptdebuggereventhandlerinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerfrontend.cpp31
-rw-r--r--src/scripttools/debugging/qscriptdebuggerfrontend_p.h34
-rw-r--r--src/scripttools/debugging/qscriptdebuggerfrontend_p_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerjob.cpp31
-rw-r--r--src/scripttools/debugging/qscriptdebuggerjob_p.h33
-rw-r--r--src/scripttools/debugging/qscriptdebuggerjob_p_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerjobschedulerinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerlocalsmodel.cpp35
-rw-r--r--src/scripttools/debugging/qscriptdebuggerlocalsmodel_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerlocalswidget.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerlocalswidget_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerlocalswidgetinterface.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerlocalswidgetinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerlocalswidgetinterface_p_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerobjectsnapshotdelta_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerresponse.cpp35
-rw-r--r--src/scripttools/debugging/qscriptdebuggerresponse_p.h34
-rw-r--r--src/scripttools/debugging/qscriptdebuggerresponsehandlerinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptedconsolecommand.cpp32
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptedconsolecommand_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptsmodel.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptsmodel_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptswidget.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptswidget_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptswidgetinterface.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptswidgetinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerscriptswidgetinterface_p_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerstackmodel.cpp48
-rw-r--r--src/scripttools/debugging/qscriptdebuggerstackmodel_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerstackwidget.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerstackwidget_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerstackwidgetinterface.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerstackwidgetinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerstackwidgetinterface_p_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerstandardwidgetfactory.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebuggerstandardwidgetfactory_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebuggervalue.cpp46
-rw-r--r--src/scripttools/debugging/qscriptdebuggervalue_p.h34
-rw-r--r--src/scripttools/debugging/qscriptdebuggervalueproperty.cpp44
-rw-r--r--src/scripttools/debugging/qscriptdebuggervalueproperty_p.h33
-rw-r--r--src/scripttools/debugging/qscriptdebuggerwidgetfactoryinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebugoutputwidget.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebugoutputwidget_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebugoutputwidgetinterface.cpp30
-rw-r--r--src/scripttools/debugging/qscriptdebugoutputwidgetinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscriptdebugoutputwidgetinterface_p_p.h30
-rw-r--r--src/scripttools/debugging/qscriptedit.cpp60
-rw-r--r--src/scripttools/debugging/qscriptedit_p.h31
-rw-r--r--src/scripttools/debugging/qscriptenginedebugger.cpp66
-rw-r--r--src/scripttools/debugging/qscriptenginedebugger.h34
-rw-r--r--src/scripttools/debugging/qscriptenginedebuggerfrontend.cpp30
-rw-r--r--src/scripttools/debugging/qscriptenginedebuggerfrontend_p.h30
-rw-r--r--src/scripttools/debugging/qscripterrorlogwidget.cpp30
-rw-r--r--src/scripttools/debugging/qscripterrorlogwidget_p.h30
-rw-r--r--src/scripttools/debugging/qscripterrorlogwidgetinterface.cpp30
-rw-r--r--src/scripttools/debugging/qscripterrorlogwidgetinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscripterrorlogwidgetinterface_p_p.h30
-rw-r--r--src/scripttools/debugging/qscriptmessagehandlerinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscriptobjectsnapshot.cpp30
-rw-r--r--src/scripttools/debugging/qscriptobjectsnapshot_p.h30
-rw-r--r--src/scripttools/debugging/qscriptscriptdata.cpp50
-rw-r--r--src/scripttools/debugging/qscriptscriptdata_p.h34
-rw-r--r--src/scripttools/debugging/qscriptstdmessagehandler.cpp31
-rw-r--r--src/scripttools/debugging/qscriptstdmessagehandler_p.h34
-rw-r--r--src/scripttools/debugging/qscriptsyntaxhighlighter.cpp30
-rw-r--r--src/scripttools/debugging/qscriptsyntaxhighlighter_p.h30
-rw-r--r--src/scripttools/debugging/qscripttooltipproviderinterface_p.h30
-rw-r--r--src/scripttools/debugging/qscriptvalueproperty.cpp44
-rw-r--r--src/scripttools/debugging/qscriptvalueproperty_p.h33
-rw-r--r--src/scripttools/debugging/qscriptxmlparser.cpp30
-rw-r--r--src/scripttools/debugging/qscriptxmlparser_p.h30
-rw-r--r--src/scripttools/scripttools.pro3
-rw-r--r--src/sql/drivers/db2/qsql_db2.cpp36
-rw-r--r--src/sql/drivers/db2/qsql_db2.h30
-rw-r--r--src/sql/drivers/ibase/qsql_ibase.cpp33
-rw-r--r--src/sql/drivers/ibase/qsql_ibase.h30
-rw-r--r--src/sql/drivers/mysql/qsql_mysql.cpp112
-rw-r--r--src/sql/drivers/mysql/qsql_mysql.h30
-rw-r--r--src/sql/drivers/oci/qsql_oci.cpp135
-rw-r--r--src/sql/drivers/oci/qsql_oci.h30
-rw-r--r--src/sql/drivers/odbc/qsql_odbc.cpp141
-rw-r--r--src/sql/drivers/odbc/qsql_odbc.h31
-rw-r--r--src/sql/drivers/psql/qsql_psql.cpp35
-rw-r--r--src/sql/drivers/psql/qsql_psql.h30
-rw-r--r--src/sql/drivers/sqlite/qsql_sqlite.cpp84
-rw-r--r--src/sql/drivers/sqlite/qsql_sqlite.h30
-rw-r--r--src/sql/drivers/sqlite2/qsql_sqlite2.cpp30
-rw-r--r--src/sql/drivers/sqlite2/qsql_sqlite2.h30
-rw-r--r--src/sql/drivers/tds/qsql_tds.cpp66
-rw-r--r--src/sql/drivers/tds/qsql_tds.h32
-rw-r--r--src/sql/kernel/qsql.h30
-rw-r--r--src/sql/kernel/qsql.qdoc139
-rw-r--r--src/sql/kernel/qsqlcachedresult.cpp30
-rw-r--r--src/sql/kernel/qsqlcachedresult_p.h30
-rw-r--r--src/sql/kernel/qsqldatabase.cpp36
-rw-r--r--src/sql/kernel/qsqldatabase.h30
-rw-r--r--src/sql/kernel/qsqldriver.cpp30
-rw-r--r--src/sql/kernel/qsqldriver.h30
-rw-r--r--src/sql/kernel/qsqldriverplugin.cpp30
-rw-r--r--src/sql/kernel/qsqldriverplugin.h30
-rw-r--r--src/sql/kernel/qsqlerror.cpp30
-rw-r--r--src/sql/kernel/qsqlerror.h30
-rw-r--r--src/sql/kernel/qsqlfield.cpp30
-rw-r--r--src/sql/kernel/qsqlfield.h30
-rw-r--r--src/sql/kernel/qsqlindex.cpp30
-rw-r--r--src/sql/kernel/qsqlindex.h30
-rw-r--r--src/sql/kernel/qsqlnulldriver_p.h30
-rw-r--r--src/sql/kernel/qsqlquery.cpp41
-rw-r--r--src/sql/kernel/qsqlquery.h30
-rw-r--r--src/sql/kernel/qsqlrecord.cpp30
-rw-r--r--src/sql/kernel/qsqlrecord.h30
-rw-r--r--src/sql/kernel/qsqlresult.cpp37
-rw-r--r--src/sql/kernel/qsqlresult.h30
-rw-r--r--src/sql/models/qsqlquerymodel.cpp41
-rw-r--r--src/sql/models/qsqlquerymodel.h30
-rw-r--r--src/sql/models/qsqlquerymodel_p.h30
-rw-r--r--src/sql/models/qsqlrelationaldelegate.cpp30
-rw-r--r--src/sql/models/qsqlrelationaldelegate.h30
-rw-r--r--src/sql/models/qsqlrelationaltablemodel.cpp35
-rw-r--r--src/sql/models/qsqlrelationaltablemodel.h30
-rw-r--r--src/sql/models/qsqltablemodel.cpp41
-rw-r--r--src/sql/models/qsqltablemodel.h30
-rw-r--r--src/sql/models/qsqltablemodel_p.h30
-rw-r--r--src/sql/sql.pro7
-rw-r--r--src/src.pro57
-rw-r--r--src/svg/qgraphicssvgitem.cpp61
-rw-r--r--src/svg/qgraphicssvgitem.h44
-rw-r--r--src/svg/qsvgfont.cpp30
-rw-r--r--src/svg/qsvgfont_p.h30
-rw-r--r--src/svg/qsvggenerator.cpp37
-rw-r--r--src/svg/qsvggenerator.h33
-rw-r--r--src/svg/qsvggraphics.cpp112
-rw-r--r--src/svg/qsvggraphics_p.h37
-rw-r--r--src/svg/qsvghandler.cpp1433
-rw-r--r--src/svg/qsvghandler_p.h33
-rw-r--r--src/svg/qsvgnode.cpp146
-rw-r--r--src/svg/qsvgnode_p.h36
-rw-r--r--src/svg/qsvgrenderer.cpp32
-rw-r--r--src/svg/qsvgrenderer.h30
-rw-r--r--src/svg/qsvgstructure.cpp80
-rw-r--r--src/svg/qsvgstructure_p.h33
-rw-r--r--src/svg/qsvgstyle.cpp413
-rw-r--r--src/svg/qsvgstyle_p.h260
-rw-r--r--src/svg/qsvgtinydocument.cpp68
-rw-r--r--src/svg/qsvgtinydocument_p.h36
-rw-r--r--src/svg/qsvgwidget.cpp32
-rw-r--r--src/svg/qsvgwidget.h30
-rw-r--r--src/svg/svg.pro2
-rw-r--r--src/testlib/3rdparty/cycle_p.h19
-rw-r--r--src/testlib/qabstracttestlogger.cpp30
-rw-r--r--src/testlib/qabstracttestlogger_p.h30
-rw-r--r--src/testlib/qasciikey.cpp30
-rw-r--r--src/testlib/qbenchmark.cpp31
-rw-r--r--src/testlib/qbenchmark.h30
-rw-r--r--src/testlib/qbenchmark_p.h30
-rw-r--r--src/testlib/qbenchmarkevent.cpp30
-rw-r--r--src/testlib/qbenchmarkevent_p.h30
-rw-r--r--src/testlib/qbenchmarkmeasurement.cpp30
-rw-r--r--src/testlib/qbenchmarkmeasurement_p.h30
-rw-r--r--src/testlib/qbenchmarkvalgrind.cpp32
-rw-r--r--src/testlib/qbenchmarkvalgrind_p.h30
-rw-r--r--src/testlib/qplaintestlogger.cpp70
-rw-r--r--src/testlib/qplaintestlogger_p.h30
-rw-r--r--src/testlib/qsignaldumper.cpp30
-rw-r--r--src/testlib/qsignaldumper_p.h30
-rw-r--r--src/testlib/qsignalspy.h30
-rw-r--r--src/testlib/qsignalspy.qdoc98
-rw-r--r--src/testlib/qtest.h43
-rw-r--r--src/testlib/qtest_global.h35
-rw-r--r--src/testlib/qtest_gui.h38
-rw-r--r--src/testlib/qtestaccessible.h30
-rw-r--r--src/testlib/qtestassert.h30
-rw-r--r--src/testlib/qtestbasicstreamer.cpp30
-rw-r--r--src/testlib/qtestbasicstreamer.h30
-rw-r--r--src/testlib/qtestcase.cpp127
-rw-r--r--src/testlib/qtestcase.h69
-rw-r--r--src/testlib/qtestcoreelement.h36
-rw-r--r--src/testlib/qtestcorelist.h30
-rw-r--r--src/testlib/qtestdata.cpp30
-rw-r--r--src/testlib/qtestdata.h30
-rw-r--r--src/testlib/qtestelement.cpp30
-rw-r--r--src/testlib/qtestelement.h30
-rw-r--r--src/testlib/qtestelementattribute.cpp30
-rw-r--r--src/testlib/qtestelementattribute.h30
-rw-r--r--src/testlib/qtestevent.h37
-rw-r--r--src/testlib/qtestevent.qdoc191
-rw-r--r--src/testlib/qtesteventloop.h30
-rw-r--r--src/testlib/qtestfilelogger.cpp30
-rw-r--r--src/testlib/qtestfilelogger.h30
-rw-r--r--src/testlib/qtestkeyboard.h32
-rw-r--r--src/testlib/qtestlightxmlstreamer.cpp30
-rw-r--r--src/testlib/qtestlightxmlstreamer.h30
-rw-r--r--src/testlib/qtestlog.cpp33
-rw-r--r--src/testlib/qtestlog_p.h30
-rw-r--r--src/testlib/qtestlogger.cpp30
-rw-r--r--src/testlib/qtestlogger_p.h30
-rw-r--r--src/testlib/qtestmouse.h40
-rw-r--r--src/testlib/qtestresult.cpp30
-rw-r--r--src/testlib/qtestresult_p.h30
-rw-r--r--src/testlib/qtestspontaneevent.h36
-rw-r--r--src/testlib/qtestsystem.h51
-rw-r--r--src/testlib/qtesttable.cpp30
-rw-r--r--src/testlib/qtesttable_p.h30
-rw-r--r--src/testlib/qtesttouch.h30
-rw-r--r--src/testlib/qtestxmlstreamer.cpp30
-rw-r--r--src/testlib/qtestxmlstreamer.h30
-rw-r--r--src/testlib/qtestxunitstreamer.cpp30
-rw-r--r--src/testlib/qtestxunitstreamer.h30
-rw-r--r--src/testlib/qxmltestlogger.cpp30
-rw-r--r--src/testlib/qxmltestlogger_p.h30
-rw-r--r--src/testlib/testlib.pro34
-rw-r--r--src/tools/bootstrap/bootstrap.pri2
-rw-r--r--src/tools/bootstrap/bootstrap.pro5
-rw-r--r--src/tools/idc/main.cpp30
-rw-r--r--src/tools/moc/generator.cpp113
-rw-r--r--src/tools/moc/generator.h30
-rw-r--r--src/tools/moc/keywords.cpp30
-rw-r--r--src/tools/moc/main.cpp44
-rw-r--r--src/tools/moc/moc.cpp30
-rw-r--r--src/tools/moc/moc.h34
-rw-r--r--src/tools/moc/mwerks_mac.cpp30
-rw-r--r--src/tools/moc/mwerks_mac.h30
-rw-r--r--src/tools/moc/outputrevision.h30
-rw-r--r--src/tools/moc/parser.cpp30
-rw-r--r--src/tools/moc/parser.h30
-rw-r--r--src/tools/moc/ppkeywords.cpp30
-rw-r--r--src/tools/moc/preprocessor.cpp30
-rw-r--r--src/tools/moc/preprocessor.h30
-rw-r--r--src/tools/moc/symbols.h30
-rw-r--r--src/tools/moc/token.cpp30
-rw-r--r--src/tools/moc/token.h30
-rwxr-xr-xsrc/tools/moc/util/generate.sh41
-rw-r--r--src/tools/moc/util/generate_keywords.cpp30
-rw-r--r--src/tools/moc/util/licenseheader.txt30
-rw-r--r--src/tools/moc/utils.h30
-rw-r--r--src/tools/rcc/main.cpp30
-rw-r--r--src/tools/rcc/rcc.cpp30
-rw-r--r--src/tools/rcc/rcc.h30
-rw-r--r--src/tools/tools.pro72
-rw-r--r--src/tools/uic/cpp/cppextractimages.cpp30
-rw-r--r--src/tools/uic/cpp/cppextractimages.h30
-rw-r--r--src/tools/uic/cpp/cppwritedeclaration.cpp30
-rw-r--r--src/tools/uic/cpp/cppwritedeclaration.h30
-rw-r--r--src/tools/uic/cpp/cppwriteicondata.cpp30
-rw-r--r--src/tools/uic/cpp/cppwriteicondata.h30
-rw-r--r--src/tools/uic/cpp/cppwriteicondeclaration.cpp30
-rw-r--r--src/tools/uic/cpp/cppwriteicondeclaration.h30
-rw-r--r--src/tools/uic/cpp/cppwriteiconinitialization.cpp30
-rw-r--r--src/tools/uic/cpp/cppwriteiconinitialization.h30
-rw-r--r--src/tools/uic/cpp/cppwriteincludes.cpp30
-rw-r--r--src/tools/uic/cpp/cppwriteincludes.h30
-rw-r--r--src/tools/uic/cpp/cppwriteinitialization.cpp56
-rw-r--r--src/tools/uic/cpp/cppwriteinitialization.h31
-rw-r--r--src/tools/uic/customwidgetsinfo.cpp38
-rw-r--r--src/tools/uic/customwidgetsinfo.h32
-rw-r--r--src/tools/uic/databaseinfo.cpp30
-rw-r--r--src/tools/uic/databaseinfo.h30
-rw-r--r--src/tools/uic/driver.cpp30
-rw-r--r--src/tools/uic/driver.h30
-rw-r--r--src/tools/uic/globaldefs.h30
-rw-r--r--src/tools/uic/main.cpp45
-rw-r--r--src/tools/uic/option.h30
-rw-r--r--src/tools/uic/treewalker.cpp30
-rw-r--r--src/tools/uic/treewalker.h30
-rw-r--r--src/tools/uic/ui4.cpp30
-rw-r--r--src/tools/uic/ui4.h30
-rw-r--r--src/tools/uic/uic.cpp35
-rw-r--r--src/tools/uic/uic.h31
-rw-r--r--src/tools/uic/utils.h30
-rw-r--r--src/tools/uic/validator.cpp30
-rw-r--r--src/tools/uic/validator.h30
-rw-r--r--src/tools/uic3/converter.cpp30
-rw-r--r--src/tools/uic3/deps.cpp30
-rw-r--r--src/tools/uic3/domtool.cpp30
-rw-r--r--src/tools/uic3/domtool.h30
-rw-r--r--src/tools/uic3/embed.cpp34
-rw-r--r--src/tools/uic3/form.cpp30
-rw-r--r--src/tools/uic3/main.cpp30
-rw-r--r--src/tools/uic3/object.cpp30
-rw-r--r--src/tools/uic3/parser.cpp30
-rw-r--r--src/tools/uic3/parser.h30
-rw-r--r--src/tools/uic3/qt3to4.cpp30
-rw-r--r--src/tools/uic3/qt3to4.h30
-rw-r--r--src/tools/uic3/subclassing.cpp30
-rw-r--r--src/tools/uic3/ui3reader.cpp30
-rw-r--r--src/tools/uic3/ui3reader.h30
-rw-r--r--src/tools/uic3/uic.cpp35
-rw-r--r--src/tools/uic3/uic.h31
-rw-r--r--src/tools/uic3/widgetinfo.cpp30
-rw-r--r--src/tools/uic3/widgetinfo.h30
-rw-r--r--src/winmain/qtmain_win.cpp1
-rw-r--r--src/xml/dom/qdom.cpp152
-rw-r--r--src/xml/dom/qdom.h30
-rw-r--r--src/xml/sax/qxml.cpp122
-rw-r--r--src/xml/sax/qxml.h35
-rw-r--r--src/xml/stream/qxmlstream.h30
-rw-r--r--src/xml/xml.pro2
-rw-r--r--src/xmlpatterns/Mainpage.dox30
-rw-r--r--src/xmlpatterns/acceltree/qacceliterators.cpp30
-rw-r--r--src/xmlpatterns/acceltree/qacceliterators_p.h30
-rw-r--r--src/xmlpatterns/acceltree/qacceltree.cpp30
-rw-r--r--src/xmlpatterns/acceltree/qacceltree_p.h35
-rw-r--r--src/xmlpatterns/acceltree/qacceltreebuilder.cpp30
-rw-r--r--src/xmlpatterns/acceltree/qacceltreebuilder_p.h30
-rw-r--r--src/xmlpatterns/acceltree/qacceltreeresourceloader.cpp30
-rw-r--r--src/xmlpatterns/acceltree/qacceltreeresourceloader_p.h30
-rw-r--r--src/xmlpatterns/acceltree/qcompressedwhitespace.cpp30
-rw-r--r--src/xmlpatterns/acceltree/qcompressedwhitespace_p.h32
-rw-r--r--src/xmlpatterns/api/qabstractmessagehandler.cpp30
-rw-r--r--src/xmlpatterns/api/qabstractmessagehandler.h30
-rw-r--r--src/xmlpatterns/api/qabstracturiresolver.cpp30
-rw-r--r--src/xmlpatterns/api/qabstracturiresolver.h30
-rw-r--r--src/xmlpatterns/api/qabstractxmlforwarditerator.cpp30
-rw-r--r--src/xmlpatterns/api/qabstractxmlforwarditerator_p.h32
-rw-r--r--src/xmlpatterns/api/qabstractxmlnodemodel.cpp34
-rw-r--r--src/xmlpatterns/api/qabstractxmlnodemodel.h33
-rw-r--r--src/xmlpatterns/api/qabstractxmlnodemodel_p.h30
-rw-r--r--src/xmlpatterns/api/qabstractxmlpullprovider.cpp32
-rw-r--r--src/xmlpatterns/api/qabstractxmlpullprovider_p.h32
-rw-r--r--src/xmlpatterns/api/qabstractxmlreceiver.cpp31
-rw-r--r--src/xmlpatterns/api/qabstractxmlreceiver.h33
-rw-r--r--src/xmlpatterns/api/qabstractxmlreceiver_p.h30
-rw-r--r--src/xmlpatterns/api/qdeviceresourceloader_p.h30
-rw-r--r--src/xmlpatterns/api/qiodevicedelegate.cpp30
-rw-r--r--src/xmlpatterns/api/qiodevicedelegate_p.h30
-rw-r--r--src/xmlpatterns/api/qnetworkaccessdelegator.cpp30
-rw-r--r--src/xmlpatterns/api/qnetworkaccessdelegator_p.h30
-rw-r--r--src/xmlpatterns/api/qpullbridge.cpp32
-rw-r--r--src/xmlpatterns/api/qpullbridge_p.h32
-rw-r--r--src/xmlpatterns/api/qreferencecountedvalue_p.h30
-rw-r--r--src/xmlpatterns/api/qresourcedelegator.cpp30
-rw-r--r--src/xmlpatterns/api/qresourcedelegator_p.h30
-rw-r--r--src/xmlpatterns/api/qsimplexmlnodemodel.cpp30
-rw-r--r--src/xmlpatterns/api/qsimplexmlnodemodel.h30
-rw-r--r--src/xmlpatterns/api/qsourcelocation.cpp30
-rw-r--r--src/xmlpatterns/api/qsourcelocation.h30
-rw-r--r--src/xmlpatterns/api/quriloader.cpp30
-rw-r--r--src/xmlpatterns/api/quriloader_p.h30
-rw-r--r--src/xmlpatterns/api/qvariableloader.cpp30
-rw-r--r--src/xmlpatterns/api/qvariableloader_p.h30
-rw-r--r--src/xmlpatterns/api/qxmlformatter.cpp30
-rw-r--r--src/xmlpatterns/api/qxmlformatter.h30
-rw-r--r--src/xmlpatterns/api/qxmlname.cpp30
-rw-r--r--src/xmlpatterns/api/qxmlname.h30
-rw-r--r--src/xmlpatterns/api/qxmlnamepool.cpp30
-rw-r--r--src/xmlpatterns/api/qxmlnamepool.h30
-rw-r--r--src/xmlpatterns/api/qxmlquery.cpp34
-rw-r--r--src/xmlpatterns/api/qxmlquery.h32
-rw-r--r--src/xmlpatterns/api/qxmlquery_p.h31
-rw-r--r--src/xmlpatterns/api/qxmlresultitems.cpp31
-rw-r--r--src/xmlpatterns/api/qxmlresultitems.h33
-rw-r--r--src/xmlpatterns/api/qxmlresultitems_p.h30
-rw-r--r--src/xmlpatterns/api/qxmlschema.cpp37
-rw-r--r--src/xmlpatterns/api/qxmlschema.h32
-rw-r--r--src/xmlpatterns/api/qxmlschema_p.cpp32
-rw-r--r--src/xmlpatterns/api/qxmlschema_p.h32
-rw-r--r--src/xmlpatterns/api/qxmlschemavalidator.cpp37
-rw-r--r--src/xmlpatterns/api/qxmlschemavalidator.h32
-rw-r--r--src/xmlpatterns/api/qxmlschemavalidator_p.h32
-rw-r--r--src/xmlpatterns/api/qxmlserializer.cpp30
-rw-r--r--src/xmlpatterns/api/qxmlserializer.h30
-rw-r--r--src/xmlpatterns/api/qxmlserializer_p.h30
-rw-r--r--src/xmlpatterns/data/qabstractdatetime.cpp30
-rw-r--r--src/xmlpatterns/data/qabstractdatetime_p.h30
-rw-r--r--src/xmlpatterns/data/qabstractduration.cpp30
-rw-r--r--src/xmlpatterns/data/qabstractduration_p.h30
-rw-r--r--src/xmlpatterns/data/qabstractfloat.cpp30
-rw-r--r--src/xmlpatterns/data/qabstractfloat_p.h30
-rw-r--r--src/xmlpatterns/data/qabstractfloatcasters.cpp37
-rw-r--r--src/xmlpatterns/data/qabstractfloatcasters_p.h30
-rw-r--r--src/xmlpatterns/data/qabstractfloatmathematician.cpp30
-rw-r--r--src/xmlpatterns/data/qabstractfloatmathematician_p.h30
-rw-r--r--src/xmlpatterns/data/qanyuri.cpp30
-rw-r--r--src/xmlpatterns/data/qanyuri_p.h30
-rw-r--r--src/xmlpatterns/data/qatomiccaster.cpp30
-rw-r--r--src/xmlpatterns/data/qatomiccaster_p.h30
-rw-r--r--src/xmlpatterns/data/qatomiccasters.cpp30
-rw-r--r--src/xmlpatterns/data/qatomiccasters_p.h30
-rw-r--r--src/xmlpatterns/data/qatomiccomparator.cpp30
-rw-r--r--src/xmlpatterns/data/qatomiccomparator_p.h30
-rw-r--r--src/xmlpatterns/data/qatomiccomparators.cpp30
-rw-r--r--src/xmlpatterns/data/qatomiccomparators_p.h30
-rw-r--r--src/xmlpatterns/data/qatomicmathematician.cpp30
-rw-r--r--src/xmlpatterns/data/qatomicmathematician_p.h30
-rw-r--r--src/xmlpatterns/data/qatomicmathematicians.cpp30
-rw-r--r--src/xmlpatterns/data/qatomicmathematicians_p.h30
-rw-r--r--src/xmlpatterns/data/qatomicstring.cpp30
-rw-r--r--src/xmlpatterns/data/qatomicstring_p.h30
-rw-r--r--src/xmlpatterns/data/qatomicvalue.cpp48
-rw-r--r--src/xmlpatterns/data/qbase64binary.cpp30
-rw-r--r--src/xmlpatterns/data/qbase64binary_p.h30
-rw-r--r--src/xmlpatterns/data/qboolean.cpp30
-rw-r--r--src/xmlpatterns/data/qboolean_p.h30
-rw-r--r--src/xmlpatterns/data/qcommonvalues.cpp30
-rw-r--r--src/xmlpatterns/data/qcommonvalues_p.h30
-rw-r--r--src/xmlpatterns/data/qcomparisonfactory.cpp32
-rw-r--r--src/xmlpatterns/data/qcomparisonfactory_p.h32
-rw-r--r--src/xmlpatterns/data/qdate.cpp30
-rw-r--r--src/xmlpatterns/data/qdate_p.h30
-rw-r--r--src/xmlpatterns/data/qdaytimeduration.cpp30
-rw-r--r--src/xmlpatterns/data/qdaytimeduration_p.h30
-rw-r--r--src/xmlpatterns/data/qdecimal.cpp30
-rw-r--r--src/xmlpatterns/data/qdecimal_p.h30
-rw-r--r--src/xmlpatterns/data/qderivedinteger_p.h38
-rw-r--r--src/xmlpatterns/data/qderivedstring_p.h30
-rw-r--r--src/xmlpatterns/data/qduration.cpp30
-rw-r--r--src/xmlpatterns/data/qduration_p.h30
-rw-r--r--src/xmlpatterns/data/qgday.cpp30
-rw-r--r--src/xmlpatterns/data/qgday_p.h30
-rw-r--r--src/xmlpatterns/data/qgmonth.cpp30
-rw-r--r--src/xmlpatterns/data/qgmonth_p.h30
-rw-r--r--src/xmlpatterns/data/qgmonthday.cpp30
-rw-r--r--src/xmlpatterns/data/qgmonthday_p.h30
-rw-r--r--src/xmlpatterns/data/qgyear.cpp30
-rw-r--r--src/xmlpatterns/data/qgyear_p.h30
-rw-r--r--src/xmlpatterns/data/qgyearmonth.cpp30
-rw-r--r--src/xmlpatterns/data/qgyearmonth_p.h30
-rw-r--r--src/xmlpatterns/data/qhexbinary.cpp30
-rw-r--r--src/xmlpatterns/data/qhexbinary_p.h30
-rw-r--r--src/xmlpatterns/data/qinteger.cpp30
-rw-r--r--src/xmlpatterns/data/qinteger_p.h30
-rw-r--r--src/xmlpatterns/data/qitem.cpp30
-rw-r--r--src/xmlpatterns/data/qitem_p.h30
-rw-r--r--src/xmlpatterns/data/qnodebuilder.cpp30
-rw-r--r--src/xmlpatterns/data/qnodebuilder_p.h30
-rw-r--r--src/xmlpatterns/data/qnodemodel.cpp30
-rw-r--r--src/xmlpatterns/data/qqnamevalue.cpp30
-rw-r--r--src/xmlpatterns/data/qqnamevalue_p.h30
-rw-r--r--src/xmlpatterns/data/qresourceloader.cpp30
-rw-r--r--src/xmlpatterns/data/qresourceloader_p.h30
-rw-r--r--src/xmlpatterns/data/qschemadatetime.cpp30
-rw-r--r--src/xmlpatterns/data/qschemadatetime_p.h30
-rw-r--r--src/xmlpatterns/data/qschemanumeric.cpp33
-rw-r--r--src/xmlpatterns/data/qschemanumeric_p.h30
-rw-r--r--src/xmlpatterns/data/qschematime.cpp30
-rw-r--r--src/xmlpatterns/data/qschematime_p.h30
-rw-r--r--src/xmlpatterns/data/qsequencereceiver.cpp30
-rw-r--r--src/xmlpatterns/data/qsequencereceiver_p.h30
-rw-r--r--src/xmlpatterns/data/qsorttuple.cpp30
-rw-r--r--src/xmlpatterns/data/qsorttuple_p.h30
-rw-r--r--src/xmlpatterns/data/quntypedatomic.cpp30
-rw-r--r--src/xmlpatterns/data/quntypedatomic_p.h30
-rw-r--r--src/xmlpatterns/data/qvalidationerror.cpp30
-rw-r--r--src/xmlpatterns/data/qvalidationerror_p.h30
-rw-r--r--src/xmlpatterns/data/qvaluefactory.cpp34
-rw-r--r--src/xmlpatterns/data/qvaluefactory_p.h32
-rw-r--r--src/xmlpatterns/data/qyearmonthduration.cpp30
-rw-r--r--src/xmlpatterns/data/qyearmonthduration_p.h30
-rw-r--r--src/xmlpatterns/documentationGroups.dox30
-rwxr-xr-xsrc/xmlpatterns/environment/createReportContext.sh41
-rw-r--r--src/xmlpatterns/environment/createReportContext.xsl60
-rw-r--r--src/xmlpatterns/environment/qcurrentitemcontext.cpp30
-rw-r--r--src/xmlpatterns/environment/qcurrentitemcontext_p.h30
-rw-r--r--src/xmlpatterns/environment/qdelegatingdynamiccontext.cpp30
-rw-r--r--src/xmlpatterns/environment/qdelegatingdynamiccontext_p.h30
-rw-r--r--src/xmlpatterns/environment/qdelegatingstaticcontext.cpp30
-rw-r--r--src/xmlpatterns/environment/qdelegatingstaticcontext_p.h30
-rw-r--r--src/xmlpatterns/environment/qdynamiccontext.cpp30
-rw-r--r--src/xmlpatterns/environment/qdynamiccontext_p.h30
-rw-r--r--src/xmlpatterns/environment/qfocus.cpp30
-rw-r--r--src/xmlpatterns/environment/qfocus_p.h30
-rw-r--r--src/xmlpatterns/environment/qgenericdynamiccontext.cpp30
-rw-r--r--src/xmlpatterns/environment/qgenericdynamiccontext_p.h30
-rw-r--r--src/xmlpatterns/environment/qgenericstaticcontext.cpp32
-rw-r--r--src/xmlpatterns/environment/qgenericstaticcontext_p.h30
-rw-r--r--src/xmlpatterns/environment/qreceiverdynamiccontext.cpp30
-rw-r--r--src/xmlpatterns/environment/qreceiverdynamiccontext_p.h30
-rw-r--r--src/xmlpatterns/environment/qreportcontext.cpp30
-rw-r--r--src/xmlpatterns/environment/qreportcontext_p.h30
-rw-r--r--src/xmlpatterns/environment/qstackcontextbase.cpp30
-rw-r--r--src/xmlpatterns/environment/qstackcontextbase_p.h30
-rw-r--r--src/xmlpatterns/environment/qstaticbaseuricontext.cpp30
-rw-r--r--src/xmlpatterns/environment/qstaticbaseuricontext_p.h30
-rw-r--r--src/xmlpatterns/environment/qstaticcompatibilitycontext.cpp30
-rw-r--r--src/xmlpatterns/environment/qstaticcompatibilitycontext_p.h30
-rw-r--r--src/xmlpatterns/environment/qstaticcontext.cpp30
-rw-r--r--src/xmlpatterns/environment/qstaticcontext_p.h30
-rw-r--r--src/xmlpatterns/environment/qstaticcurrentcontext.cpp30
-rw-r--r--src/xmlpatterns/environment/qstaticcurrentcontext_p.h30
-rw-r--r--src/xmlpatterns/environment/qstaticfocuscontext.cpp30
-rw-r--r--src/xmlpatterns/environment/qstaticfocuscontext_p.h30
-rw-r--r--src/xmlpatterns/environment/qstaticnamespacecontext.cpp30
-rw-r--r--src/xmlpatterns/environment/qstaticnamespacecontext_p.h30
-rw-r--r--src/xmlpatterns/expr/qandexpression.cpp30
-rw-r--r--src/xmlpatterns/expr/qandexpression_p.h30
-rw-r--r--src/xmlpatterns/expr/qapplytemplate.cpp30
-rw-r--r--src/xmlpatterns/expr/qapplytemplate_p.h30
-rw-r--r--src/xmlpatterns/expr/qargumentreference.cpp30
-rw-r--r--src/xmlpatterns/expr/qargumentreference_p.h30
-rw-r--r--src/xmlpatterns/expr/qarithmeticexpression.cpp30
-rw-r--r--src/xmlpatterns/expr/qarithmeticexpression_p.h30
-rw-r--r--src/xmlpatterns/expr/qattributeconstructor.cpp30
-rw-r--r--src/xmlpatterns/expr/qattributeconstructor_p.h30
-rw-r--r--src/xmlpatterns/expr/qattributenamevalidator.cpp30
-rw-r--r--src/xmlpatterns/expr/qattributenamevalidator_p.h30
-rw-r--r--src/xmlpatterns/expr/qaxisstep.cpp30
-rw-r--r--src/xmlpatterns/expr/qaxisstep_p.h30
-rw-r--r--src/xmlpatterns/expr/qcachecells_p.h30
-rw-r--r--src/xmlpatterns/expr/qcallsite.cpp30
-rw-r--r--src/xmlpatterns/expr/qcallsite_p.h30
-rw-r--r--src/xmlpatterns/expr/qcalltargetdescription.cpp30
-rw-r--r--src/xmlpatterns/expr/qcalltargetdescription_p.h30
-rw-r--r--src/xmlpatterns/expr/qcalltemplate.cpp30
-rw-r--r--src/xmlpatterns/expr/qcalltemplate_p.h30
-rw-r--r--src/xmlpatterns/expr/qcastableas.cpp30
-rw-r--r--src/xmlpatterns/expr/qcastableas_p.h30
-rw-r--r--src/xmlpatterns/expr/qcastas.cpp30
-rw-r--r--src/xmlpatterns/expr/qcastas_p.h30
-rw-r--r--src/xmlpatterns/expr/qcastingplatform.cpp30
-rw-r--r--src/xmlpatterns/expr/qcastingplatform_p.h30
-rw-r--r--src/xmlpatterns/expr/qcollationchecker.cpp30
-rw-r--r--src/xmlpatterns/expr/qcollationchecker_p.h30
-rw-r--r--src/xmlpatterns/expr/qcombinenodes.cpp30
-rw-r--r--src/xmlpatterns/expr/qcombinenodes_p.h30
-rw-r--r--src/xmlpatterns/expr/qcommentconstructor.cpp30
-rw-r--r--src/xmlpatterns/expr/qcommentconstructor_p.h30
-rw-r--r--src/xmlpatterns/expr/qcomparisonplatform.cpp30
-rw-r--r--src/xmlpatterns/expr/qcomparisonplatform_p.h30
-rw-r--r--src/xmlpatterns/expr/qcomputednamespaceconstructor.cpp30
-rw-r--r--src/xmlpatterns/expr/qcomputednamespaceconstructor_p.h30
-rw-r--r--src/xmlpatterns/expr/qcontextitem.cpp30
-rw-r--r--src/xmlpatterns/expr/qcontextitem_p.h30
-rw-r--r--src/xmlpatterns/expr/qcopyof.cpp30
-rw-r--r--src/xmlpatterns/expr/qcopyof_p.h30
-rw-r--r--src/xmlpatterns/expr/qcurrentitemstore.cpp30
-rw-r--r--src/xmlpatterns/expr/qcurrentitemstore_p.h30
-rw-r--r--src/xmlpatterns/expr/qdocumentconstructor.cpp30
-rw-r--r--src/xmlpatterns/expr/qdocumentconstructor_p.h30
-rw-r--r--src/xmlpatterns/expr/qdocumentcontentvalidator.cpp30
-rw-r--r--src/xmlpatterns/expr/qdocumentcontentvalidator_p.h30
-rw-r--r--src/xmlpatterns/expr/qdynamiccontextstore.cpp30
-rw-r--r--src/xmlpatterns/expr/qdynamiccontextstore_p.h30
-rw-r--r--src/xmlpatterns/expr/qelementconstructor.cpp30
-rw-r--r--src/xmlpatterns/expr/qelementconstructor_p.h30
-rw-r--r--src/xmlpatterns/expr/qemptycontainer.cpp30
-rw-r--r--src/xmlpatterns/expr/qemptycontainer_p.h30
-rw-r--r--src/xmlpatterns/expr/qemptysequence.cpp30
-rw-r--r--src/xmlpatterns/expr/qemptysequence_p.h30
-rw-r--r--src/xmlpatterns/expr/qevaluationcache.cpp30
-rw-r--r--src/xmlpatterns/expr/qevaluationcache_p.h30
-rw-r--r--src/xmlpatterns/expr/qexpression.cpp30
-rw-r--r--src/xmlpatterns/expr/qexpression_p.h30
-rw-r--r--src/xmlpatterns/expr/qexpressiondispatch_p.h30
-rw-r--r--src/xmlpatterns/expr/qexpressionfactory.cpp30
-rw-r--r--src/xmlpatterns/expr/qexpressionfactory_p.h30
-rw-r--r--src/xmlpatterns/expr/qexpressionsequence.cpp30
-rw-r--r--src/xmlpatterns/expr/qexpressionsequence_p.h30
-rw-r--r--src/xmlpatterns/expr/qexpressionvariablereference.cpp30
-rw-r--r--src/xmlpatterns/expr/qexpressionvariablereference_p.h30
-rw-r--r--src/xmlpatterns/expr/qexternalvariableloader.cpp30
-rw-r--r--src/xmlpatterns/expr/qexternalvariableloader_p.h30
-rw-r--r--src/xmlpatterns/expr/qexternalvariablereference.cpp30
-rw-r--r--src/xmlpatterns/expr/qexternalvariablereference_p.h30
-rw-r--r--src/xmlpatterns/expr/qfirstitempredicate.cpp30
-rw-r--r--src/xmlpatterns/expr/qfirstitempredicate_p.h30
-rw-r--r--src/xmlpatterns/expr/qforclause.cpp30
-rw-r--r--src/xmlpatterns/expr/qforclause_p.h30
-rw-r--r--src/xmlpatterns/expr/qgeneralcomparison.cpp30
-rw-r--r--src/xmlpatterns/expr/qgeneralcomparison_p.h30
-rw-r--r--src/xmlpatterns/expr/qgenericpredicate.cpp30
-rw-r--r--src/xmlpatterns/expr/qgenericpredicate_p.h30
-rw-r--r--src/xmlpatterns/expr/qifthenclause.cpp30
-rw-r--r--src/xmlpatterns/expr/qifthenclause_p.h30
-rw-r--r--src/xmlpatterns/expr/qinstanceof.cpp30
-rw-r--r--src/xmlpatterns/expr/qinstanceof_p.h30
-rw-r--r--src/xmlpatterns/expr/qletclause.cpp30
-rw-r--r--src/xmlpatterns/expr/qletclause_p.h30
-rw-r--r--src/xmlpatterns/expr/qliteral.cpp30
-rw-r--r--src/xmlpatterns/expr/qliteral_p.h30
-rw-r--r--src/xmlpatterns/expr/qliteralsequence.cpp30
-rw-r--r--src/xmlpatterns/expr/qliteralsequence_p.h30
-rw-r--r--src/xmlpatterns/expr/qnamespaceconstructor.cpp30
-rw-r--r--src/xmlpatterns/expr/qnamespaceconstructor_p.h30
-rw-r--r--src/xmlpatterns/expr/qncnameconstructor.cpp30
-rw-r--r--src/xmlpatterns/expr/qncnameconstructor_p.h32
-rw-r--r--src/xmlpatterns/expr/qnodecomparison.cpp30
-rw-r--r--src/xmlpatterns/expr/qnodecomparison_p.h30
-rw-r--r--src/xmlpatterns/expr/qnodesort.cpp30
-rw-r--r--src/xmlpatterns/expr/qnodesort_p.h30
-rw-r--r--src/xmlpatterns/expr/qoperandsiterator_p.h30
-rw-r--r--src/xmlpatterns/expr/qoptimizationpasses.cpp30
-rw-r--r--src/xmlpatterns/expr/qoptimizationpasses_p.h30
-rw-r--r--src/xmlpatterns/expr/qoptimizerblocks.cpp30
-rw-r--r--src/xmlpatterns/expr/qoptimizerblocks_p.h30
-rw-r--r--src/xmlpatterns/expr/qoptimizerframework.cpp30
-rw-r--r--src/xmlpatterns/expr/qoptimizerframework_p.h30
-rw-r--r--src/xmlpatterns/expr/qorderby.cpp30
-rw-r--r--src/xmlpatterns/expr/qorderby_p.h30
-rw-r--r--src/xmlpatterns/expr/qorexpression.cpp30
-rw-r--r--src/xmlpatterns/expr/qorexpression_p.h30
-rw-r--r--src/xmlpatterns/expr/qpaircontainer.cpp30
-rw-r--r--src/xmlpatterns/expr/qpaircontainer_p.h30
-rw-r--r--src/xmlpatterns/expr/qparentnodeaxis.cpp30
-rw-r--r--src/xmlpatterns/expr/qparentnodeaxis_p.h30
-rw-r--r--src/xmlpatterns/expr/qpath.cpp30
-rw-r--r--src/xmlpatterns/expr/qpath_p.h30
-rw-r--r--src/xmlpatterns/expr/qpositionalvariablereference.cpp30
-rw-r--r--src/xmlpatterns/expr/qpositionalvariablereference_p.h30
-rw-r--r--src/xmlpatterns/expr/qprocessinginstructionconstructor.cpp30
-rw-r--r--src/xmlpatterns/expr/qprocessinginstructionconstructor_p.h30
-rw-r--r--src/xmlpatterns/expr/qqnameconstructor.cpp30
-rw-r--r--src/xmlpatterns/expr/qqnameconstructor_p.h30
-rw-r--r--src/xmlpatterns/expr/qquantifiedexpression.cpp30
-rw-r--r--src/xmlpatterns/expr/qquantifiedexpression_p.h30
-rw-r--r--src/xmlpatterns/expr/qrangeexpression.cpp30
-rw-r--r--src/xmlpatterns/expr/qrangeexpression_p.h30
-rw-r--r--src/xmlpatterns/expr/qrangevariablereference.cpp30
-rw-r--r--src/xmlpatterns/expr/qrangevariablereference_p.h30
-rw-r--r--src/xmlpatterns/expr/qreturnorderby.cpp30
-rw-r--r--src/xmlpatterns/expr/qreturnorderby_p.h30
-rw-r--r--src/xmlpatterns/expr/qsimplecontentconstructor.cpp30
-rw-r--r--src/xmlpatterns/expr/qsimplecontentconstructor_p.h30
-rw-r--r--src/xmlpatterns/expr/qsinglecontainer.cpp30
-rw-r--r--src/xmlpatterns/expr/qsinglecontainer_p.h30
-rw-r--r--src/xmlpatterns/expr/qsourcelocationreflection.cpp30
-rw-r--r--src/xmlpatterns/expr/qsourcelocationreflection_p.h30
-rw-r--r--src/xmlpatterns/expr/qstaticbaseuristore.cpp30
-rw-r--r--src/xmlpatterns/expr/qstaticbaseuristore_p.h30
-rw-r--r--src/xmlpatterns/expr/qstaticcompatibilitystore.cpp30
-rw-r--r--src/xmlpatterns/expr/qstaticcompatibilitystore_p.h30
-rw-r--r--src/xmlpatterns/expr/qtemplate.cpp30
-rw-r--r--src/xmlpatterns/expr/qtemplate_p.h30
-rw-r--r--src/xmlpatterns/expr/qtemplateinvoker.cpp30
-rw-r--r--src/xmlpatterns/expr/qtemplateinvoker_p.h30
-rw-r--r--src/xmlpatterns/expr/qtemplatemode.cpp30
-rw-r--r--src/xmlpatterns/expr/qtemplatemode_p.h30
-rw-r--r--src/xmlpatterns/expr/qtemplateparameterreference.cpp30
-rw-r--r--src/xmlpatterns/expr/qtemplateparameterreference_p.h30
-rw-r--r--src/xmlpatterns/expr/qtemplatepattern_p.h30
-rw-r--r--src/xmlpatterns/expr/qtextnodeconstructor.cpp30
-rw-r--r--src/xmlpatterns/expr/qtextnodeconstructor_p.h30
-rw-r--r--src/xmlpatterns/expr/qtreatas.cpp30
-rw-r--r--src/xmlpatterns/expr/qtreatas_p.h30
-rw-r--r--src/xmlpatterns/expr/qtriplecontainer.cpp30
-rw-r--r--src/xmlpatterns/expr/qtriplecontainer_p.h30
-rw-r--r--src/xmlpatterns/expr/qtruthpredicate.cpp30
-rw-r--r--src/xmlpatterns/expr/qtruthpredicate_p.h30
-rw-r--r--src/xmlpatterns/expr/qunaryexpression.cpp30
-rw-r--r--src/xmlpatterns/expr/qunaryexpression_p.h30
-rw-r--r--src/xmlpatterns/expr/qunlimitedcontainer.cpp30
-rw-r--r--src/xmlpatterns/expr/qunlimitedcontainer_p.h30
-rw-r--r--src/xmlpatterns/expr/qunresolvedvariablereference.cpp30
-rw-r--r--src/xmlpatterns/expr/qunresolvedvariablereference_p.h30
-rw-r--r--src/xmlpatterns/expr/quserfunction.cpp30
-rw-r--r--src/xmlpatterns/expr/quserfunction_p.h30
-rw-r--r--src/xmlpatterns/expr/quserfunctioncallsite.cpp30
-rw-r--r--src/xmlpatterns/expr/quserfunctioncallsite_p.h30
-rw-r--r--src/xmlpatterns/expr/qvalidate.cpp30
-rw-r--r--src/xmlpatterns/expr/qvalidate_p.h30
-rw-r--r--src/xmlpatterns/expr/qvaluecomparison.cpp30
-rw-r--r--src/xmlpatterns/expr/qvaluecomparison_p.h30
-rw-r--r--src/xmlpatterns/expr/qvariabledeclaration.cpp30
-rw-r--r--src/xmlpatterns/expr/qvariabledeclaration_p.h30
-rw-r--r--src/xmlpatterns/expr/qvariablereference.cpp30
-rw-r--r--src/xmlpatterns/expr/qvariablereference_p.h30
-rw-r--r--src/xmlpatterns/expr/qwithparam_p.h30
-rw-r--r--src/xmlpatterns/expr/qxsltsimplecontentconstructor.cpp30
-rw-r--r--src/xmlpatterns/expr/qxsltsimplecontentconstructor_p.h30
-rw-r--r--src/xmlpatterns/functions/qabstractfunctionfactory.cpp30
-rw-r--r--src/xmlpatterns/functions/qabstractfunctionfactory_p.h30
-rw-r--r--src/xmlpatterns/functions/qaccessorfns.cpp30
-rw-r--r--src/xmlpatterns/functions/qaccessorfns_p.h30
-rw-r--r--src/xmlpatterns/functions/qaggregatefns.cpp30
-rw-r--r--src/xmlpatterns/functions/qaggregatefns_p.h30
-rw-r--r--src/xmlpatterns/functions/qaggregator.cpp30
-rw-r--r--src/xmlpatterns/functions/qaggregator_p.h30
-rw-r--r--src/xmlpatterns/functions/qassemblestringfns.cpp30
-rw-r--r--src/xmlpatterns/functions/qassemblestringfns_p.h30
-rw-r--r--src/xmlpatterns/functions/qbooleanfns.cpp30
-rw-r--r--src/xmlpatterns/functions/qbooleanfns_p.h30
-rw-r--r--src/xmlpatterns/functions/qcomparescaseaware.cpp30
-rw-r--r--src/xmlpatterns/functions/qcomparescaseaware_p.h30
-rw-r--r--src/xmlpatterns/functions/qcomparestringfns.cpp30
-rw-r--r--src/xmlpatterns/functions/qcomparestringfns_p.h30
-rw-r--r--src/xmlpatterns/functions/qcomparingaggregator.cpp37
-rw-r--r--src/xmlpatterns/functions/qcomparingaggregator_p.h30
-rw-r--r--src/xmlpatterns/functions/qconstructorfunctionsfactory.cpp30
-rw-r--r--src/xmlpatterns/functions/qconstructorfunctionsfactory_p.h30
-rw-r--r--src/xmlpatterns/functions/qcontextfns.cpp30
-rw-r--r--src/xmlpatterns/functions/qcontextfns_p.h30
-rw-r--r--src/xmlpatterns/functions/qcontextnodechecker.cpp30
-rw-r--r--src/xmlpatterns/functions/qcontextnodechecker_p.h30
-rw-r--r--src/xmlpatterns/functions/qcurrentfn.cpp30
-rw-r--r--src/xmlpatterns/functions/qcurrentfn_p.h30
-rw-r--r--src/xmlpatterns/functions/qdatetimefn.cpp30
-rw-r--r--src/xmlpatterns/functions/qdatetimefn_p.h30
-rw-r--r--src/xmlpatterns/functions/qdatetimefns.cpp30
-rw-r--r--src/xmlpatterns/functions/qdatetimefns_p.h30
-rw-r--r--src/xmlpatterns/functions/qdeepequalfn.cpp30
-rw-r--r--src/xmlpatterns/functions/qdeepequalfn_p.h30
-rw-r--r--src/xmlpatterns/functions/qdocumentfn.cpp30
-rw-r--r--src/xmlpatterns/functions/qdocumentfn_p.h30
-rw-r--r--src/xmlpatterns/functions/qelementavailablefn.cpp30
-rw-r--r--src/xmlpatterns/functions/qelementavailablefn_p.h30
-rw-r--r--src/xmlpatterns/functions/qerrorfn.cpp30
-rw-r--r--src/xmlpatterns/functions/qerrorfn_p.h30
-rw-r--r--src/xmlpatterns/functions/qfunctionargument.cpp30
-rw-r--r--src/xmlpatterns/functions/qfunctionargument_p.h30
-rw-r--r--src/xmlpatterns/functions/qfunctionavailablefn.cpp30
-rw-r--r--src/xmlpatterns/functions/qfunctionavailablefn_p.h30
-rw-r--r--src/xmlpatterns/functions/qfunctioncall.cpp30
-rw-r--r--src/xmlpatterns/functions/qfunctioncall_p.h30
-rw-r--r--src/xmlpatterns/functions/qfunctionfactory.cpp30
-rw-r--r--src/xmlpatterns/functions/qfunctionfactory_p.h30
-rw-r--r--src/xmlpatterns/functions/qfunctionfactorycollection.cpp30
-rw-r--r--src/xmlpatterns/functions/qfunctionfactorycollection_p.h30
-rw-r--r--src/xmlpatterns/functions/qfunctionsignature.cpp30
-rw-r--r--src/xmlpatterns/functions/qfunctionsignature_p.h30
-rw-r--r--src/xmlpatterns/functions/qgenerateidfn.cpp30
-rw-r--r--src/xmlpatterns/functions/qgenerateidfn_p.h30
-rw-r--r--src/xmlpatterns/functions/qnodefns.cpp30
-rw-r--r--src/xmlpatterns/functions/qnodefns_p.h30
-rw-r--r--src/xmlpatterns/functions/qnumericfns.cpp30
-rw-r--r--src/xmlpatterns/functions/qnumericfns_p.h30
-rw-r--r--src/xmlpatterns/functions/qpatternmatchingfns.cpp32
-rw-r--r--src/xmlpatterns/functions/qpatternmatchingfns_p.h30
-rw-r--r--src/xmlpatterns/functions/qpatternplatform.cpp30
-rw-r--r--src/xmlpatterns/functions/qpatternplatform_p.h32
-rw-r--r--src/xmlpatterns/functions/qqnamefns.cpp30
-rw-r--r--src/xmlpatterns/functions/qqnamefns_p.h30
-rw-r--r--src/xmlpatterns/functions/qresolveurifn.cpp30
-rw-r--r--src/xmlpatterns/functions/qresolveurifn_p.h30
-rw-r--r--src/xmlpatterns/functions/qsequencefns.cpp30
-rw-r--r--src/xmlpatterns/functions/qsequencefns_p.h38
-rw-r--r--src/xmlpatterns/functions/qsequencegeneratingfns.cpp32
-rw-r--r--src/xmlpatterns/functions/qsequencegeneratingfns_p.h30
-rw-r--r--src/xmlpatterns/functions/qstaticbaseuricontainer_p.h30
-rw-r--r--src/xmlpatterns/functions/qstaticnamespacescontainer.cpp30
-rw-r--r--src/xmlpatterns/functions/qstaticnamespacescontainer_p.h30
-rw-r--r--src/xmlpatterns/functions/qstringvaluefns.cpp30
-rw-r--r--src/xmlpatterns/functions/qstringvaluefns_p.h30
-rw-r--r--src/xmlpatterns/functions/qsubstringfns.cpp30
-rw-r--r--src/xmlpatterns/functions/qsubstringfns_p.h30
-rw-r--r--src/xmlpatterns/functions/qsystempropertyfn.cpp30
-rw-r--r--src/xmlpatterns/functions/qsystempropertyfn_p.h30
-rw-r--r--src/xmlpatterns/functions/qtimezonefns.cpp30
-rw-r--r--src/xmlpatterns/functions/qtimezonefns_p.h30
-rw-r--r--src/xmlpatterns/functions/qtracefn.cpp30
-rw-r--r--src/xmlpatterns/functions/qtracefn_p.h30
-rw-r--r--src/xmlpatterns/functions/qtypeavailablefn.cpp30
-rw-r--r--src/xmlpatterns/functions/qtypeavailablefn_p.h30
-rw-r--r--src/xmlpatterns/functions/qunparsedentitypublicidfn.cpp30
-rw-r--r--src/xmlpatterns/functions/qunparsedentitypublicidfn_p.h30
-rw-r--r--src/xmlpatterns/functions/qunparsedentityurifn.cpp30
-rw-r--r--src/xmlpatterns/functions/qunparsedentityurifn_p.h30
-rw-r--r--src/xmlpatterns/functions/qunparsedtextavailablefn.cpp30
-rw-r--r--src/xmlpatterns/functions/qunparsedtextavailablefn_p.h30
-rw-r--r--src/xmlpatterns/functions/qunparsedtextfn.cpp30
-rw-r--r--src/xmlpatterns/functions/qunparsedtextfn_p.h30
-rw-r--r--src/xmlpatterns/functions/qxpath10corefunctions.cpp30
-rw-r--r--src/xmlpatterns/functions/qxpath10corefunctions_p.h30
-rw-r--r--src/xmlpatterns/functions/qxpath20corefunctions.cpp30
-rw-r--r--src/xmlpatterns/functions/qxpath20corefunctions_p.h30
-rw-r--r--src/xmlpatterns/functions/qxslt20corefunctions.cpp30
-rw-r--r--src/xmlpatterns/functions/qxslt20corefunctions_p.h30
-rw-r--r--src/xmlpatterns/iterators/qcachingiterator.cpp30
-rw-r--r--src/xmlpatterns/iterators/qcachingiterator_p.h30
-rw-r--r--src/xmlpatterns/iterators/qdeduplicateiterator.cpp30
-rw-r--r--src/xmlpatterns/iterators/qdeduplicateiterator_p.h30
-rw-r--r--src/xmlpatterns/iterators/qdistinctiterator.cpp30
-rw-r--r--src/xmlpatterns/iterators/qdistinctiterator_p.h30
-rw-r--r--src/xmlpatterns/iterators/qemptyiterator_p.h30
-rw-r--r--src/xmlpatterns/iterators/qexceptiterator.cpp30
-rw-r--r--src/xmlpatterns/iterators/qexceptiterator_p.h30
-rw-r--r--src/xmlpatterns/iterators/qindexofiterator.cpp30
-rw-r--r--src/xmlpatterns/iterators/qindexofiterator_p.h30
-rw-r--r--src/xmlpatterns/iterators/qinsertioniterator.cpp30
-rw-r--r--src/xmlpatterns/iterators/qinsertioniterator_p.h30
-rw-r--r--src/xmlpatterns/iterators/qintersectiterator.cpp30
-rw-r--r--src/xmlpatterns/iterators/qintersectiterator_p.h30
-rw-r--r--src/xmlpatterns/iterators/qitemmappingiterator_p.h30
-rw-r--r--src/xmlpatterns/iterators/qrangeiterator.cpp30
-rw-r--r--src/xmlpatterns/iterators/qrangeiterator_p.h30
-rw-r--r--src/xmlpatterns/iterators/qremovaliterator.cpp30
-rw-r--r--src/xmlpatterns/iterators/qremovaliterator_p.h30
-rw-r--r--src/xmlpatterns/iterators/qsequencemappingiterator_p.h30
-rw-r--r--src/xmlpatterns/iterators/qsingletoniterator_p.h30
-rw-r--r--src/xmlpatterns/iterators/qsubsequenceiterator.cpp30
-rw-r--r--src/xmlpatterns/iterators/qsubsequenceiterator_p.h30
-rw-r--r--src/xmlpatterns/iterators/qtocodepointsiterator.cpp30
-rw-r--r--src/xmlpatterns/iterators/qtocodepointsiterator_p.h30
-rw-r--r--src/xmlpatterns/iterators/qunioniterator.cpp30
-rw-r--r--src/xmlpatterns/iterators/qunioniterator_p.h30
-rw-r--r--src/xmlpatterns/janitors/qargumentconverter.cpp30
-rw-r--r--src/xmlpatterns/janitors/qargumentconverter_p.h30
-rw-r--r--src/xmlpatterns/janitors/qatomizer.cpp30
-rw-r--r--src/xmlpatterns/janitors/qatomizer_p.h30
-rw-r--r--src/xmlpatterns/janitors/qcardinalityverifier.cpp30
-rw-r--r--src/xmlpatterns/janitors/qcardinalityverifier_p.h30
-rw-r--r--src/xmlpatterns/janitors/qebvextractor.cpp30
-rw-r--r--src/xmlpatterns/janitors/qebvextractor_p.h30
-rw-r--r--src/xmlpatterns/janitors/qitemverifier.cpp30
-rw-r--r--src/xmlpatterns/janitors/qitemverifier_p.h30
-rw-r--r--src/xmlpatterns/janitors/quntypedatomicconverter.cpp30
-rw-r--r--src/xmlpatterns/janitors/quntypedatomicconverter_p.h30
-rw-r--r--src/xmlpatterns/parser/TokenLookup.gperf30
-rwxr-xr-xsrc/xmlpatterns/parser/createParser.sh40
-rwxr-xr-xsrc/xmlpatterns/parser/createTokenLookup.sh89
-rwxr-xr-xsrc/xmlpatterns/parser/createXSLTTokenLookup.sh41
-rw-r--r--src/xmlpatterns/parser/qmaintainingreader.cpp30
-rw-r--r--src/xmlpatterns/parser/qmaintainingreader_p.h30
-rw-r--r--src/xmlpatterns/parser/qparsercontext.cpp30
-rw-r--r--src/xmlpatterns/parser/qparsercontext_p.h30
-rw-r--r--src/xmlpatterns/parser/qquerytransformparser.cpp109
-rw-r--r--src/xmlpatterns/parser/qquerytransformparser_p.h67
-rw-r--r--src/xmlpatterns/parser/qtokenizer_p.h30
-rw-r--r--src/xmlpatterns/parser/qtokenlookup.cpp246
-rw-r--r--src/xmlpatterns/parser/qtokenrevealer.cpp30
-rw-r--r--src/xmlpatterns/parser/qtokenrevealer_p.h30
-rw-r--r--src/xmlpatterns/parser/qtokensource.cpp30
-rw-r--r--src/xmlpatterns/parser/qtokensource_p.h30
-rw-r--r--src/xmlpatterns/parser/querytransformparser.ypp62
-rw-r--r--src/xmlpatterns/parser/qxquerytokenizer.cpp30
-rw-r--r--src/xmlpatterns/parser/qxquerytokenizer_p.h30
-rw-r--r--src/xmlpatterns/parser/qxslttokenizer.cpp30
-rw-r--r--src/xmlpatterns/parser/qxslttokenizer_p.h30
-rw-r--r--src/xmlpatterns/parser/qxslttokenlookup.cpp30
-rw-r--r--src/xmlpatterns/parser/qxslttokenlookup.xml30
-rw-r--r--src/xmlpatterns/parser/qxslttokenlookup_p.h30
-rw-r--r--src/xmlpatterns/parser/trolltechHeader.txt30
-rw-r--r--src/xmlpatterns/projection/qdocumentprojector.cpp30
-rw-r--r--src/xmlpatterns/projection/qdocumentprojector_p.h30
-rw-r--r--src/xmlpatterns/projection/qprojectedexpression_p.h30
-rw-r--r--src/xmlpatterns/qtokenautomaton/exampleFile.xml30
-rw-r--r--src/xmlpatterns/schema/qnamespacesupport.cpp32
-rw-r--r--src/xmlpatterns/schema/qnamespacesupport_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdalternative.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdalternative_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdannotated.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdannotated_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdannotation.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdannotation_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdapplicationinformation.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdapplicationinformation_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdassertion.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdassertion_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdattribute.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdattribute_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdattributegroup.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdattributegroup_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdattributereference.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdattributereference_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdattributeterm.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdattributeterm_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdattributeuse.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdattributeuse_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdcomplextype.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdcomplextype_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsddocumentation.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsddocumentation_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdelement.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdelement_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdfacet.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdfacet_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdidcache.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdidcache_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdidchelper.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdidchelper_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdidentityconstraint.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdidentityconstraint_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdinstancereader.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdinstancereader_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdmodelgroup.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdmodelgroup_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdnotation.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdnotation_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdparticle.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdparticle_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdparticlechecker.cpp60
-rw-r--r--src/xmlpatterns/schema/qxsdparticlechecker_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdreference.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdreference_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdschema.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdschema_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdschemachecker.cpp238
-rw-r--r--src/xmlpatterns/schema/qxsdschemachecker_helper.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdschemachecker_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdschemachecker_setup.cpp30
-rw-r--r--src/xmlpatterns/schema/qxsdschemacontext.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdschemacontext_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdschemadebugger.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdschemadebugger_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdschemahelper.cpp58
-rw-r--r--src/xmlpatterns/schema/qxsdschemahelper_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdschemamerger.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdschemamerger_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdschemaparser.cpp179
-rw-r--r--src/xmlpatterns/schema/qxsdschemaparser_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdschemaparser_setup.cpp30
-rw-r--r--src/xmlpatterns/schema/qxsdschemaparsercontext.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdschemaparsercontext_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdschemaresolver.cpp104
-rw-r--r--src/xmlpatterns/schema/qxsdschemaresolver_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdschematoken.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdschematoken_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdschematypesfactory.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdschematypesfactory_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdsimpletype.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdsimpletype_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdstatemachine.cpp96
-rw-r--r--src/xmlpatterns/schema/qxsdstatemachine_p.h101
-rw-r--r--src/xmlpatterns/schema/qxsdstatemachinebuilder.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdstatemachinebuilder_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdterm.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdterm_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdtypechecker.cpp150
-rw-r--r--src/xmlpatterns/schema/qxsdtypechecker_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsduserschematype.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsduserschematype_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdvalidatedxmlnodemodel.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdvalidatedxmlnodemodel_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdvalidatinginstancereader.cpp132
-rw-r--r--src/xmlpatterns/schema/qxsdvalidatinginstancereader_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdwildcard.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdwildcard_p.h32
-rw-r--r--src/xmlpatterns/schema/qxsdxpathexpression.cpp32
-rw-r--r--src/xmlpatterns/schema/qxsdxpathexpression_p.h32
-rw-r--r--src/xmlpatterns/schema/tokens.xml32
-rw-r--r--src/xmlpatterns/type/qabstractnodetest.cpp30
-rw-r--r--src/xmlpatterns/type/qabstractnodetest_p.h30
-rw-r--r--src/xmlpatterns/type/qanyitemtype.cpp30
-rw-r--r--src/xmlpatterns/type/qanyitemtype_p.h30
-rw-r--r--src/xmlpatterns/type/qanynodetype.cpp30
-rw-r--r--src/xmlpatterns/type/qanynodetype_p.h30
-rw-r--r--src/xmlpatterns/type/qanysimpletype.cpp30
-rw-r--r--src/xmlpatterns/type/qanysimpletype_p.h30
-rw-r--r--src/xmlpatterns/type/qanytype.cpp32
-rw-r--r--src/xmlpatterns/type/qanytype_p.h30
-rw-r--r--src/xmlpatterns/type/qatomiccasterlocator.cpp30
-rw-r--r--src/xmlpatterns/type/qatomiccasterlocator_p.h30
-rw-r--r--src/xmlpatterns/type/qatomiccasterlocators.cpp30
-rw-r--r--src/xmlpatterns/type/qatomiccasterlocators_p.h30
-rw-r--r--src/xmlpatterns/type/qatomiccomparatorlocator.cpp30
-rw-r--r--src/xmlpatterns/type/qatomiccomparatorlocator_p.h30
-rw-r--r--src/xmlpatterns/type/qatomiccomparatorlocators.cpp30
-rw-r--r--src/xmlpatterns/type/qatomiccomparatorlocators_p.h30
-rw-r--r--src/xmlpatterns/type/qatomicmathematicianlocator.cpp30
-rw-r--r--src/xmlpatterns/type/qatomicmathematicianlocator_p.h30
-rw-r--r--src/xmlpatterns/type/qatomicmathematicianlocators.cpp30
-rw-r--r--src/xmlpatterns/type/qatomicmathematicianlocators_p.h30
-rw-r--r--src/xmlpatterns/type/qatomictype.cpp30
-rw-r--r--src/xmlpatterns/type/qatomictype_p.h30
-rw-r--r--src/xmlpatterns/type/qatomictypedispatch_p.h30
-rw-r--r--src/xmlpatterns/type/qbasictypesfactory.cpp30
-rw-r--r--src/xmlpatterns/type/qbasictypesfactory_p.h30
-rw-r--r--src/xmlpatterns/type/qbuiltinatomictype.cpp30
-rw-r--r--src/xmlpatterns/type/qbuiltinatomictype_p.h30
-rw-r--r--src/xmlpatterns/type/qbuiltinatomictypes.cpp30
-rw-r--r--src/xmlpatterns/type/qbuiltinatomictypes_p.h30
-rw-r--r--src/xmlpatterns/type/qbuiltinnodetype.cpp30
-rw-r--r--src/xmlpatterns/type/qbuiltinnodetype_p.h30
-rw-r--r--src/xmlpatterns/type/qbuiltintypes.cpp30
-rw-r--r--src/xmlpatterns/type/qbuiltintypes_p.h30
-rw-r--r--src/xmlpatterns/type/qcardinality.cpp30
-rw-r--r--src/xmlpatterns/type/qcardinality_p.h30
-rw-r--r--src/xmlpatterns/type/qcommonsequencetypes.cpp30
-rw-r--r--src/xmlpatterns/type/qcommonsequencetypes_p.h30
-rw-r--r--src/xmlpatterns/type/qebvtype.cpp30
-rw-r--r--src/xmlpatterns/type/qebvtype_p.h30
-rw-r--r--src/xmlpatterns/type/qemptysequencetype.cpp30
-rw-r--r--src/xmlpatterns/type/qemptysequencetype_p.h30
-rw-r--r--src/xmlpatterns/type/qgenericsequencetype.cpp30
-rw-r--r--src/xmlpatterns/type/qgenericsequencetype_p.h30
-rw-r--r--src/xmlpatterns/type/qitemtype.cpp30
-rw-r--r--src/xmlpatterns/type/qitemtype_p.h30
-rw-r--r--src/xmlpatterns/type/qlocalnametest.cpp30
-rw-r--r--src/xmlpatterns/type/qlocalnametest_p.h30
-rw-r--r--src/xmlpatterns/type/qmultiitemtype.cpp30
-rw-r--r--src/xmlpatterns/type/qmultiitemtype_p.h30
-rw-r--r--src/xmlpatterns/type/qnamedschemacomponent.cpp32
-rw-r--r--src/xmlpatterns/type/qnamedschemacomponent_p.h32
-rw-r--r--src/xmlpatterns/type/qnamespacenametest.cpp30
-rw-r--r--src/xmlpatterns/type/qnamespacenametest_p.h30
-rw-r--r--src/xmlpatterns/type/qnonetype.cpp30
-rw-r--r--src/xmlpatterns/type/qnonetype_p.h30
-rw-r--r--src/xmlpatterns/type/qnumerictype.cpp30
-rw-r--r--src/xmlpatterns/type/qnumerictype_p.h30
-rw-r--r--src/xmlpatterns/type/qprimitives_p.h30
-rw-r--r--src/xmlpatterns/type/qqnametest.cpp30
-rw-r--r--src/xmlpatterns/type/qqnametest_p.h30
-rw-r--r--src/xmlpatterns/type/qschemacomponent.cpp30
-rw-r--r--src/xmlpatterns/type/qschemacomponent_p.h30
-rw-r--r--src/xmlpatterns/type/qschematype.cpp30
-rw-r--r--src/xmlpatterns/type/qschematype_p.h30
-rw-r--r--src/xmlpatterns/type/qschematypefactory.cpp30
-rw-r--r--src/xmlpatterns/type/qschematypefactory_p.h30
-rw-r--r--src/xmlpatterns/type/qsequencetype.cpp30
-rw-r--r--src/xmlpatterns/type/qsequencetype_p.h30
-rw-r--r--src/xmlpatterns/type/qtypechecker.cpp30
-rw-r--r--src/xmlpatterns/type/qtypechecker_p.h30
-rw-r--r--src/xmlpatterns/type/quntyped.cpp30
-rw-r--r--src/xmlpatterns/type/quntyped_p.h30
-rw-r--r--src/xmlpatterns/type/qxsltnodetest.cpp30
-rw-r--r--src/xmlpatterns/type/qxsltnodetest_p.h30
-rw-r--r--src/xmlpatterns/utils/qautoptr.cpp32
-rw-r--r--src/xmlpatterns/utils/qautoptr_p.h30
-rw-r--r--src/xmlpatterns/utils/qcommonnamespaces_p.h30
-rw-r--r--src/xmlpatterns/utils/qcppcastinghelper_p.h30
-rw-r--r--src/xmlpatterns/utils/qdebug_p.h30
-rw-r--r--src/xmlpatterns/utils/qdelegatingnamespaceresolver.cpp30
-rw-r--r--src/xmlpatterns/utils/qdelegatingnamespaceresolver_p.h30
-rw-r--r--src/xmlpatterns/utils/qgenericnamespaceresolver.cpp30
-rw-r--r--src/xmlpatterns/utils/qgenericnamespaceresolver_p.h30
-rw-r--r--src/xmlpatterns/utils/qnamepool.cpp30
-rw-r--r--src/xmlpatterns/utils/qnamepool_p.h30
-rw-r--r--src/xmlpatterns/utils/qnamespacebinding_p.h30
-rw-r--r--src/xmlpatterns/utils/qnamespaceresolver.cpp30
-rw-r--r--src/xmlpatterns/utils/qnamespaceresolver_p.h30
-rw-r--r--src/xmlpatterns/utils/qnodenamespaceresolver.cpp30
-rw-r--r--src/xmlpatterns/utils/qnodenamespaceresolver_p.h30
-rw-r--r--src/xmlpatterns/utils/qoutputvalidator.cpp30
-rw-r--r--src/xmlpatterns/utils/qoutputvalidator_p.h30
-rw-r--r--src/xmlpatterns/utils/qpatternistlocale.cpp30
-rw-r--r--src/xmlpatterns/utils/qpatternistlocale_p.h33
-rw-r--r--src/xmlpatterns/utils/qxpathhelper.cpp30
-rw-r--r--src/xmlpatterns/utils/qxpathhelper_p.h30
-rw-r--r--src/xmlpatterns/xmlpatterns.pro2
-rw-r--r--tests/arthur/common/framework.cpp30
-rw-r--r--tests/arthur/common/framework.h30
-rw-r--r--tests/arthur/common/paintcommands.cpp57
-rw-r--r--tests/arthur/common/paintcommands.h34
-rw-r--r--tests/arthur/common/qengines.cpp37
-rw-r--r--tests/arthur/common/qengines.h33
-rw-r--r--tests/arthur/common/xmldata.cpp30
-rw-r--r--tests/arthur/common/xmldata.h30
-rw-r--r--tests/arthur/datagenerator/datagenerator.cpp30
-rw-r--r--tests/arthur/datagenerator/datagenerator.h30
-rw-r--r--tests/arthur/datagenerator/main.cpp30
-rw-r--r--tests/arthur/datagenerator/xmlgenerator.cpp30
-rw-r--r--tests/arthur/datagenerator/xmlgenerator.h30
-rw-r--r--tests/arthur/htmlgenerator/htmlgenerator.cpp30
-rw-r--r--tests/arthur/htmlgenerator/htmlgenerator.h30
-rw-r--r--tests/arthur/htmlgenerator/main.cpp30
-rw-r--r--tests/arthur/lance/interactivewidget.cpp30
-rw-r--r--tests/arthur/lance/interactivewidget.h30
-rw-r--r--tests/arthur/lance/lance.pro8
-rw-r--r--tests/arthur/lance/main.cpp40
-rw-r--r--tests/arthur/lance/widgets.h37
-rw-r--r--tests/arthur/performancediff/main.cpp30
-rw-r--r--tests/arthur/performancediff/performancediff.cpp30
-rw-r--r--tests/arthur/performancediff/performancediff.h30
-rw-r--r--tests/arthur/shower/main.cpp30
-rw-r--r--tests/arthur/shower/shower.cpp30
-rw-r--r--tests/arthur/shower/shower.h30
-rw-r--r--tests/auto/atwrapper/atWrapper.cpp30
-rw-r--r--tests/auto/atwrapper/atWrapper.h30
-rw-r--r--tests/auto/atwrapper/atWrapperAutotest.cpp30
-rw-r--r--tests/auto/atwrapper/scruffy.ini2
-rw-r--r--tests/auto/auto.pro169
-rwxr-xr-xtests/auto/bic/gen.sh40
-rw-r--r--tests/auto/bic/qbic.cpp30
-rw-r--r--tests/auto/bic/qbic.h30
-rw-r--r--tests/auto/bic/tst_bic.cpp38
-rw-r--r--tests/auto/checkxmlfiles/checkxmlfiles.pro4
-rw-r--r--tests/auto/checkxmlfiles/tst_checkxmlfiles.cpp30
-rw-r--r--tests/auto/collections/collections.pro4
-rw-r--r--tests/auto/collections/tst_collections.cpp153
-rw-r--r--tests/auto/compile/baseclass.cpp51
-rw-r--r--tests/auto/compile/baseclass.h60
-rw-r--r--tests/auto/compile/compile.pro7
-rw-r--r--tests/auto/compile/derivedclass.cpp48
-rw-r--r--tests/auto/compile/derivedclass.h52
-rw-r--r--tests/auto/compile/tst_compile.cpp656
-rw-r--r--tests/auto/compiler/.gitignore (renamed from tests/auto/compile/.gitignore)0
-rw-r--r--tests/auto/compiler/baseclass.cpp51
-rw-r--r--tests/auto/compiler/baseclass.h60
-rw-r--r--tests/auto/compiler/compiler.pro7
-rw-r--r--tests/auto/compiler/derivedclass.cpp48
-rw-r--r--tests/auto/compiler/derivedclass.h52
-rw-r--r--tests/auto/compiler/tst_compiler.cpp656
-rw-r--r--tests/auto/compilerwarnings/compilerwarnings.pro1
-rw-r--r--tests/auto/compilerwarnings/test.cpp30
-rw-r--r--tests/auto/compilerwarnings/tst_compilerwarnings.cpp31
-rw-r--r--tests/auto/exceptionsafety/exceptionsafety.pro2
-rw-r--r--tests/auto/exceptionsafety/tst_exceptionsafety.cpp670
-rw-r--r--tests/auto/exceptionsafety_objects/3rdparty/memcheck.h319
-rw-r--r--tests/auto/exceptionsafety_objects/3rdparty/valgrind.h3924
-rw-r--r--tests/auto/exceptionsafety_objects/exceptionsafety_objects.pro3
-rw-r--r--tests/auto/exceptionsafety_objects/oomsimulator.h357
-rw-r--r--tests/auto/exceptionsafety_objects/tst_exceptionsafety_objects.cpp746
-rw-r--r--tests/auto/gestures/customgesturerecognizer.cpp167
-rw-r--r--tests/auto/gestures/customgesturerecognizer.h187
-rw-r--r--tests/auto/gestures/gestures.pro6
-rw-r--r--tests/auto/gestures/tst_gestures.cpp2079
-rw-r--r--tests/auto/guiapplauncher/README.txt14
-rw-r--r--tests/auto/guiapplauncher/guiapplauncher.pro18
-rw-r--r--tests/auto/guiapplauncher/test.ts973
-rw-r--r--tests/auto/guiapplauncher/test.ui66
-rw-r--r--tests/auto/guiapplauncher/tst_guiapplauncher.cpp526
-rw-r--r--tests/auto/guiapplauncher/windowmanager.cpp508
-rw-r--r--tests/auto/guiapplauncher/windowmanager.h78
-rw-r--r--tests/auto/headers/headers.pro2
-rw-r--r--tests/auto/headers/tst_headers.cpp109
-rw-r--r--tests/auto/languagechange/tst_languagechange.cpp58
-rwxr-xr-xtests/auto/linguist/lconvert/data/makeplurals.pl42
-rw-r--r--tests/auto/linguist/lconvert/data/phrasebook.qph21
-rw-r--r--tests/auto/linguist/lconvert/tst_lconvert.cpp39
-rw-r--r--tests/auto/linguist/lrelease/testdata/idbased.ts7
-rw-r--r--tests/auto/linguist/lrelease/tst_lrelease.cpp51
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/backslashes/project.ts.result2
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/backslashes/src/main.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/codecforsrc/main.cpp54
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/codecforsrc/project.ts.result22
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/codecfortr/main.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/codecfortr/project.ts.result4
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/codecfortr1/main.cpp47
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/codecfortr1/project.ts.result22
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/codecfortr2/main.cpp46
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/codecfortr2/project.ts.result17
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/lacksqobject/expectedoutput.txt8
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/lacksqobject/main.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/lacksqobject/project.ts.result8
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/merge_ordering/foo.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/merge_ordering/project.ts.before26
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/merge_ordering/project.ts.result2
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/merge_versions/project.ui32
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/merge_whitespace/main.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/merge_whitespace/project.ts.before18
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/merge_whitespace/project.ts.result20
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergecpp/finddialog.cpp59
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergecpp/project.ts.before34
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergecpp/project.ts.result37
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/finddialog.cpp35
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/project.ts.before23
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergecpp_noobsolete/project.ts.result16
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergecpp_obsolete/finddialog.cpp35
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergecpp_obsolete/project.ts.before21
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergecpp_obsolete/project.ts.result20
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergeui/project.ts.before6
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergeui/project.ts.result6
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/mergeui/project.ui38
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/multiple_locations/finddialog.cpp40
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/multiple_locations/main.cpp40
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/multiple_locations/project.ts.result6
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/namespaces/main.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/namespaces/project.ts.result24
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parse_special_chars/main.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parse_special_chars/project.ts.result4
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsecontexts/main.cpp50
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsecontexts/project.ts.result57
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsecpp/finddialog.cpp30
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsecpp/main.cpp65
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsecpp/project.ts.result102
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsecpp2/expectedoutput.txt8
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsecpp2/main.cpp90
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsecpp2/main.h51
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsecpp2/main2.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsecpp2/main3.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsecpp2/project.ts.result24
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsejava/main.java41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parsejava/project.ts.result32
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parseui/project.ts.result4
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/parseui/project.ui34
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/prefix/main.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/prefix/project.ts.result6
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/preprocess/main.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/preprocess/project.ts.result10
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing/main.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing/main_mac.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing/main_unix.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing/main_win.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing/project.ts.result18
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing/vpaths/dependpath/main_dependpath.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing/wildcard/main1.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing/wildcard/mainfile.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing/wildcard1.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing/wildcard99.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing2/a41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing2/a.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing2/b41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing2/b.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing2/e41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing2/f/g.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing2/project.ts.result22
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing2/spaces/z41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing2/variable_with_spaces41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing2/with41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing2/x/d41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsing2/x/variable41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingpaths/file1.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingpaths/filter.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingpaths/project.ts.result8
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingpaths/sub/subfile1.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingpaths/sub/subfilter.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingpri/common/main.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingpri/mac/main_mac.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingpri/project.ts.result10
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingpri/relativity/relativity.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingpri/unix/main_unix.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingpri/win/main_win.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingsubdirs/project.ts.result2
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingsubdirs/sub1/main.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingsubs/common/main.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingsubs/mac/main_mac.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingsubs/project.ts.result8
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingsubs/unix/main_unix.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/proparsingsubs/win/main_win.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/respfile/lupdatecmd2
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/respfile/project.ts.result17
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/respfile/source1.cpp49
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/respfile/source2.cpp49
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/respfile/sources.lst2
-rw-r--r--tests/auto/linguist/lupdate/testdata/good/respfile/tsfiles.lst1
-rw-r--r--tests/auto/linguist/lupdate/testdata/output_ts/project.ts.result2
-rw-r--r--tests/auto/linguist/lupdate/testdata/output_ts/toplevel/library/tools/main.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/recursivescan/bar.ts.result6
-rw-r--r--tests/auto/linguist/lupdate/testdata/recursivescan/foo.ts.result34
-rw-r--r--tests/auto/linguist/lupdate/testdata/recursivescan/main.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/recursivescan/project.ui38
-rw-r--r--tests/auto/linguist/lupdate/testdata/recursivescan/sub/filetypes/main.c++41
-rw-r--r--tests/auto/linguist/lupdate/testdata/recursivescan/sub/filetypes/main.cpp41
-rw-r--r--tests/auto/linguist/lupdate/testdata/recursivescan/sub/filetypes/main.cxx41
-rw-r--r--tests/auto/linguist/lupdate/testdata/recursivescan/sub/finddialog.cpp130
-rw-r--r--tests/auto/linguist/lupdate/testlupdate.cpp34
-rw-r--r--tests/auto/linguist/lupdate/testlupdate.h30
-rw-r--r--tests/auto/linguist/lupdate/tst_lupdate.cpp42
-rw-r--r--tests/auto/macgui/guitest.cpp30
-rw-r--r--tests/auto/macgui/guitest.h30
-rw-r--r--tests/auto/macgui/tst_macgui.cpp30
-rw-r--r--tests/auto/macplist/app/main.cpp30
-rw-r--r--tests/auto/macplist/tst_macplist.cpp31
-rw-r--r--tests/auto/math3d/math3d.pro2
-rw-r--r--tests/auto/math3d/qmatrixnxn/qmatrixnxn.pro5
-rw-r--r--tests/auto/math3d/qmatrixnxn/tst_qmatrixnxn.cpp3383
-rw-r--r--tests/auto/math3d/qquaternion/qquaternion.pro5
-rw-r--r--tests/auto/math3d/qquaternion/tst_qquaternion.cpp882
-rw-r--r--tests/auto/math3d/qvectornd/qvectornd.pro5
-rw-r--r--tests/auto/math3d/qvectornd/tst_qvectornd.cpp2141
-rw-r--r--tests/auto/math3d/shared/math3dincludes.h52
-rw-r--r--tests/auto/mediaobject/dummy/audiooutput.cpp41
-rw-r--r--tests/auto/mediaobject/dummy/audiooutput.h41
-rw-r--r--tests/auto/mediaobject/dummy/backend.cpp41
-rw-r--r--tests/auto/mediaobject/dummy/backend.h41
-rw-r--r--tests/auto/mediaobject/dummy/dummy.pro2
-rw-r--r--tests/auto/mediaobject/dummy/mediaobject.cpp41
-rw-r--r--tests/auto/mediaobject/dummy/mediaobject.h41
-rw-r--r--tests/auto/mediaobject/dummy/videowidget.cpp41
-rw-r--r--tests/auto/mediaobject/dummy/videowidget.h41
-rw-r--r--tests/auto/mediaobject/qtesthelper.h30
-rw-r--r--tests/auto/mediaobject/tst_mediaobject.cpp37
-rw-r--r--tests/auto/mediaobject_wince_ds9/dummy.cpp30
-rw-r--r--tests/auto/moc/Test.framework/Headers/testinterface.h30
-rw-r--r--tests/auto/moc/assign-namespace.h30
-rw-r--r--tests/auto/moc/backslash-newlines.h30
-rw-r--r--tests/auto/moc/c-comments.h30
-rw-r--r--tests/auto/moc/cstyle-enums.h30
-rw-r--r--tests/auto/moc/dir-in-include-path.h30
-rw-r--r--tests/auto/moc/escapes-in-string-literals.h30
-rw-r--r--tests/auto/moc/extraqualification.h30
-rw-r--r--tests/auto/moc/forgotten-qinterface.h30
-rw-r--r--tests/auto/moc/gadgetwithnoenums.h30
-rw-r--r--tests/auto/moc/interface-from-framework.h30
-rw-r--r--tests/auto/moc/macro-on-cmdline.h30
-rw-r--r--tests/auto/moc/moc.pro3
-rw-r--r--tests/auto/moc/namespaced-flags.h35
-rw-r--r--tests/auto/moc/no-keywords.h32
-rw-r--r--tests/auto/moc/oldstyle-casts.h30
-rw-r--r--tests/auto/moc/os9-newlines.h2
-rw-r--r--tests/auto/moc/parse-boost.h30
-rw-r--r--tests/auto/moc/pure-virtual-signals.h30
-rw-r--r--tests/auto/moc/qinvokable.h30
-rw-r--r--tests/auto/moc/qprivateslots.h30
-rw-r--r--tests/auto/moc/single_function_keyword.h30
-rw-r--r--tests/auto/moc/slots-with-void-template.h30
-rw-r--r--tests/auto/moc/task189996.h30
-rw-r--r--tests/auto/moc/task192552.h30
-rw-r--r--tests/auto/moc/task234909.h30
-rw-r--r--tests/auto/moc/task240368.h30
-rw-r--r--tests/auto/moc/task87883.h30
-rw-r--r--tests/auto/moc/template-gtgt.h30
-rw-r--r--tests/auto/moc/testproject/Plugin/Plugin.h32
-rw-r--r--tests/auto/moc/trigraphs.h30
-rw-r--r--tests/auto/moc/tst_moc.cpp39
-rw-r--r--tests/auto/moc/using-namespaces.h30
-rw-r--r--tests/auto/moc/warn-on-multiple-qobject-subclasses.h30
-rw-r--r--tests/auto/moc/warn-on-property-without-read.h30
-rw-r--r--tests/auto/moc/win-newlines.h30
-rw-r--r--tests/auto/modeltest/modeltest.cpp30
-rw-r--r--tests/auto/modeltest/modeltest.h30
-rw-r--r--tests/auto/modeltest/tst_modeltest.cpp30
-rw-r--r--tests/auto/network-settings.h330
-rw-r--r--tests/auto/networkdata/README1
-rw-r--r--tests/auto/networkselftest/networkselftest.pro16
-rw-r--r--tests/auto/networkselftest/rfc3252.txt899
-rw-r--r--tests/auto/networkselftest/tst_networkselftest.cpp193
-rw-r--r--tests/auto/patternistexamplefiletree/patternistexamplefiletree.pro1
-rw-r--r--tests/auto/patternistexamplefiletree/tst_patternistexamplefiletree.cpp30
-rw-r--r--tests/auto/patternistexamples/patternistexamples.pro2
-rw-r--r--tests/auto/patternistexamples/tst_patternistexamples.cpp30
-rw-r--r--tests/auto/patternistheaders/patternistheaders.pro1
-rw-r--r--tests/auto/patternistheaders/tst_patternistheaders.cpp30
-rw-r--r--tests/auto/q3accel/tst_q3accel.cpp30
-rw-r--r--tests/auto/q3action/tst_q3action.cpp30
-rw-r--r--tests/auto/q3actiongroup/tst_q3actiongroup.cpp30
-rw-r--r--tests/auto/q3buttongroup/clickLock/main.cpp30
-rw-r--r--tests/auto/q3buttongroup/tst_q3buttongroup.cpp30
-rw-r--r--tests/auto/q3canvas/tst_q3canvas.cpp30
-rw-r--r--tests/auto/q3checklistitem/tst_q3checklistitem.cpp30
-rw-r--r--tests/auto/q3combobox/tst_q3combobox.cpp30
-rw-r--r--tests/auto/q3cstring/tst_q3cstring.cpp30
-rw-r--r--tests/auto/q3databrowser/tst_q3databrowser.cpp30
-rw-r--r--tests/auto/q3dateedit/tst_q3dateedit.cpp30
-rw-r--r--tests/auto/q3datetimeedit/tst_q3datetimeedit.cpp30
-rw-r--r--tests/auto/q3deepcopy/tst_q3deepcopy.cpp30
-rw-r--r--tests/auto/q3dict/tst_q3dict.cpp30
-rw-r--r--tests/auto/q3dns/tst_q3dns.cpp30
-rw-r--r--tests/auto/q3dockwindow/tst_q3dockwindow.cpp30
-rw-r--r--tests/auto/q3filedialog/tst_q3filedialog.cpp34
-rw-r--r--tests/auto/q3frame/tst_q3frame.cpp30
-rw-r--r--tests/auto/q3groupbox/tst_q3groupbox.cpp30
-rw-r--r--tests/auto/q3hbox/tst_q3hbox.cpp30
-rw-r--r--tests/auto/q3header/tst_q3header.cpp30
-rw-r--r--tests/auto/q3iconview/tst_q3iconview.cpp30
-rw-r--r--tests/auto/q3listbox/tst_qlistbox.cpp30
-rw-r--r--tests/auto/q3listview/tst_q3listview.cpp30
-rw-r--r--tests/auto/q3listviewitemiterator/tst_q3listviewitemiterator.cpp30
-rw-r--r--tests/auto/q3mainwindow/tst_q3mainwindow.cpp30
-rw-r--r--tests/auto/q3popupmenu/tst_q3popupmenu.cpp36
-rw-r--r--tests/auto/q3process/cat/main.cpp30
-rw-r--r--tests/auto/q3process/echo/main.cpp30
-rw-r--r--tests/auto/q3process/tst_q3process.cpp30
-rw-r--r--tests/auto/q3progressbar/tst_q3progressbar.cpp44
-rw-r--r--tests/auto/q3progressdialog/tst_q3progressdialog.cpp30
-rw-r--r--tests/auto/q3ptrlist/tst_q3ptrlist.cpp30
-rw-r--r--tests/auto/q3richtext/tst_q3richtext.cpp30
-rw-r--r--tests/auto/q3scrollview/tst_qscrollview.cpp30
-rw-r--r--tests/auto/q3semaphore/tst_q3semaphore.cpp30
-rw-r--r--tests/auto/q3serversocket/tst_q3serversocket.cpp30
-rw-r--r--tests/auto/q3socket/tst_qsocket.cpp30
-rw-r--r--tests/auto/q3socketdevice/tst_q3socketdevice.cpp30
-rw-r--r--tests/auto/q3sqlcursor/tst_q3sqlcursor.cpp41
-rw-r--r--tests/auto/q3sqlselectcursor/tst_q3sqlselectcursor.cpp40
-rw-r--r--tests/auto/q3stylesheet/tst_q3stylesheet.cpp30
-rw-r--r--tests/auto/q3tabdialog/tst_q3tabdialog.cpp30
-rw-r--r--tests/auto/q3table/tst_q3table.cpp51
-rw-r--r--tests/auto/q3textbrowser/tst_q3textbrowser.cpp35
-rw-r--r--tests/auto/q3textedit/tst_q3textedit.cpp30
-rw-r--r--tests/auto/q3textstream/tst_q3textstream.cpp30
-rw-r--r--tests/auto/q3timeedit/tst_q3timeedit.cpp30
-rw-r--r--tests/auto/q3toolbar/tst_q3toolbar.cpp84
-rw-r--r--tests/auto/q3uridrag/tst_q3uridrag.cpp30
-rw-r--r--tests/auto/q3urloperator/copy.res/.gitattributes1
-rw-r--r--tests/auto/q3urloperator/tst_q3urloperator.cpp30
-rw-r--r--tests/auto/q3valuelist/tst_q3valuelist.cpp30
-rw-r--r--tests/auto/q3valuevector/tst_q3valuevector.cpp30
-rw-r--r--tests/auto/q3widgetstack/tst_q3widgetstack.cpp30
-rw-r--r--tests/auto/q_func_info/q_func_info.pro2
-rw-r--r--tests/auto/q_func_info/tst_q_func_info.cpp32
-rw-r--r--tests/auto/qabstractbutton/tst_qabstractbutton.cpp35
-rw-r--r--tests/auto/qabstractitemmodel/dynamictreemodel.cpp328
-rw-r--r--tests/auto/qabstractitemmodel/dynamictreemodel.h199
-rw-r--r--tests/auto/qabstractitemmodel/qabstractitemmodel.pro4
-rw-r--r--tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp1025
-rw-r--r--tests/auto/qabstractitemview/tst_qabstractitemview.cpp262
-rw-r--r--tests/auto/qabstractmessagehandler/qabstractmessagehandler.pro1
-rw-r--r--tests/auto/qabstractmessagehandler/tst_qabstractmessagehandler.cpp30
-rw-r--r--tests/auto/qabstractnetworkcache/qabstractnetworkcache.pro2
-rw-r--r--tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp52
-rw-r--r--tests/auto/qabstractprintdialog/tst_qabstractprintdialog.cpp30
-rw-r--r--tests/auto/qabstractproxymodel/tst_qabstractproxymodel.cpp30
-rw-r--r--tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp127
-rw-r--r--tests/auto/qabstractslider/tst_qabstractslider.cpp36
-rw-r--r--tests/auto/qabstractsocket/tst_qabstractsocket.cpp30
-rw-r--r--tests/auto/qabstractspinbox/tst_qabstractspinbox.cpp30
-rw-r--r--tests/auto/qabstracttextdocumentlayout/tst_qabstracttextdocumentlayout.cpp30
-rw-r--r--tests/auto/qabstracturiresolver/TestURIResolver.h30
-rw-r--r--tests/auto/qabstracturiresolver/qabstracturiresolver.pro1
-rw-r--r--tests/auto/qabstracturiresolver/tst_qabstracturiresolver.cpp30
-rw-r--r--tests/auto/qabstractvideobuffer/qabstractvideobuffer.pro5
-rw-r--r--tests/auto/qabstractvideobuffer/tst_qabstractvideobuffer.cpp132
-rw-r--r--tests/auto/qabstractvideosurface/qabstractvideosurface.pro5
-rw-r--r--tests/auto/qabstractvideosurface/tst_qabstractvideosurface.cpp310
-rw-r--r--tests/auto/qabstractxmlforwarditerator/qabstractxmlforwarditerator.pro1
-rw-r--r--tests/auto/qabstractxmlforwarditerator/tst_qabstractxmlforwarditerator.cpp30
-rw-r--r--tests/auto/qabstractxmlnodemodel/LoadingModel.cpp30
-rw-r--r--tests/auto/qabstractxmlnodemodel/LoadingModel.h30
-rw-r--r--tests/auto/qabstractxmlnodemodel/TestNodeModel.h30
-rw-r--r--tests/auto/qabstractxmlnodemodel/tst_qabstractxmlnodemodel.cpp30
-rw-r--r--tests/auto/qabstractxmlreceiver/TestAbstractXmlReceiver.h30
-rw-r--r--tests/auto/qabstractxmlreceiver/qabstractxmlreceiver.pro1
-rw-r--r--tests/auto/qabstractxmlreceiver/tst_qabstractxmlreceiver.cpp30
-rw-r--r--tests/auto/qaccessibility/tst_qaccessibility.cpp55
-rw-r--r--tests/auto/qaccessibility_mac/tst_qaccessibility_mac.cpp30
-rw-r--r--tests/auto/qaction/tst_qaction.cpp32
-rw-r--r--tests/auto/qactiongroup/tst_qactiongroup.cpp65
-rw-r--r--tests/auto/qalgorithms/tst_qalgorithms.cpp47
-rw-r--r--tests/auto/qanimationgroup/qanimationgroup.pro2
-rw-r--r--tests/auto/qanimationgroup/tst_qanimationgroup.cpp114
-rw-r--r--tests/auto/qapplication/desktopsettingsaware/desktopsettingsaware.pro9
-rw-r--r--tests/auto/qapplication/desktopsettingsaware/main.cpp30
-rw-r--r--tests/auto/qapplication/test/test.pro8
-rw-r--r--tests/auto/qapplication/tst_qapplication.cpp210
-rw-r--r--tests/auto/qapplication/wincmdline/main.cpp30
-rw-r--r--tests/auto/qapplicationargumentparser/tst_qapplicationargumentparser.cpp30
-rw-r--r--tests/auto/qatomicint/qatomicint.pro3
-rw-r--r--tests/auto/qatomicint/tst_qatomicint.cpp74
-rw-r--r--tests/auto/qatomicpointer/qatomicpointer.pro2
-rw-r--r--tests/auto/qatomicpointer/tst_qatomicpointer.cpp78
-rw-r--r--tests/auto/qaudiodeviceid/qaudiodeviceid.pro7
-rw-r--r--tests/auto/qaudiodeviceid/tst_qaudiodeviceid.cpp118
-rw-r--r--tests/auto/qaudiodeviceinfo/tst_qaudiodeviceinfo.cpp38
-rw-r--r--tests/auto/qaudioformat/tst_qaudioformat.cpp45
-rw-r--r--tests/auto/qaudioinput/qaudioinput.pro12
-rw-r--r--tests/auto/qaudioinput/tst_qaudioinput.cpp71
-rw-r--r--tests/auto/qaudiooutput/qaudiooutput.pro12
-rw-r--r--tests/auto/qaudiooutput/tst_qaudiooutput.cpp102
-rw-r--r--tests/auto/qautoptr/qautoptr.pro2
-rw-r--r--tests/auto/qautoptr/tst_qautoptr.cpp30
-rw-r--r--tests/auto/qbitarray/qbitarray.pro4
-rw-r--r--tests/auto/qbitarray/tst_qbitarray.cpp58
-rw-r--r--tests/auto/qboxlayout/tst_qboxlayout.cpp31
-rw-r--r--tests/auto/qbrush/tst_qbrush.cpp30
-rw-r--r--tests/auto/qbuffer/qbuffer.pro4
-rw-r--r--tests/auto/qbuffer/tst_qbuffer.cpp30
-rw-r--r--tests/auto/qbuttongroup/tst_qbuttongroup.cpp56
-rw-r--r--tests/auto/qbytearray/.gitattributes1
-rw-r--r--tests/auto/qbytearray/qbytearray.pro12
-rw-r--r--tests/auto/qbytearray/tst_qbytearray.cpp128
-rw-r--r--tests/auto/qbytearraymatcher/tst_qbytearraymatcher.cpp30
-rw-r--r--tests/auto/qcache/qcache.pro4
-rw-r--r--tests/auto/qcache/tst_qcache.cpp30
-rw-r--r--tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp102
-rw-r--r--tests/auto/qchar/qchar.pro2
-rw-r--r--tests/auto/qchar/tst_qchar.cpp30
-rw-r--r--tests/auto/qcheckbox/tst_qcheckbox.cpp30
-rw-r--r--tests/auto/qclipboard/copier/main.cpp30
-rw-r--r--tests/auto/qclipboard/paster/main.cpp30
-rw-r--r--tests/auto/qclipboard/test/test.pro17
-rw-r--r--tests/auto/qclipboard/tst_qclipboard.cpp38
-rw-r--r--tests/auto/qcolor/tst_qcolor.cpp260
-rw-r--r--tests/auto/qcolordialog/tst_qcolordialog.cpp30
-rw-r--r--tests/auto/qcolumnview/tst_qcolumnview.cpp32
-rw-r--r--tests/auto/qcombobox/qcombobox.pro2
-rw-r--r--tests/auto/qcombobox/tst_qcombobox.cpp383
-rw-r--r--tests/auto/qcommandlinkbutton/tst_qcommandlinkbutton.cpp74
-rw-r--r--tests/auto/qcompleter/tst_qcompleter.cpp49
-rw-r--r--tests/auto/qcomplextext/bidireorderstring.h30
-rw-r--r--tests/auto/qcomplextext/tst_qcomplextext.cpp30
-rw-r--r--tests/auto/qcontiguouscache/tst_qcontiguouscache.cpp30
-rw-r--r--tests/auto/qcopchannel/testSend/main.cpp30
-rw-r--r--tests/auto/qcopchannel/tst_qcopchannel.cpp35
-rw-r--r--tests/auto/qcoreapplication/qcoreapplication.pro3
-rw-r--r--tests/auto/qcoreapplication/tst_qcoreapplication.cpp109
-rw-r--r--tests/auto/qcryptographichash/qcryptographichash.pro6
-rw-r--r--tests/auto/qcryptographichash/tst_qcryptographichash.cpp30
-rw-r--r--tests/auto/qcssparser/qcssparser.pro11
-rw-r--r--tests/auto/qcssparser/tst_qcssparser.cpp70
-rw-r--r--tests/auto/qdatastream/qdatastream.pro14
-rw-r--r--tests/auto/qdatastream/tst_qdatastream.cpp179
-rw-r--r--tests/auto/qdatawidgetmapper/tst_qdatawidgetmapper.cpp32
-rw-r--r--tests/auto/qdate/qdate.pro4
-rw-r--r--tests/auto/qdate/tst_qdate.cpp30
-rw-r--r--tests/auto/qdatetime/tst_qdatetime.cpp52
-rw-r--r--tests/auto/qdatetimeedit/tst_qdatetimeedit.cpp53
-rw-r--r--tests/auto/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp30
-rw-r--r--tests/auto/qdbusabstractinterface/interface.cpp30
-rw-r--r--tests/auto/qdbusabstractinterface/interface.h30
-rw-r--r--tests/auto/qdbusabstractinterface/pinger.cpp30
-rw-r--r--tests/auto/qdbusabstractinterface/pinger.h30
-rw-r--r--tests/auto/qdbusabstractinterface/tst_qdbusabstractinterface.cpp90
-rw-r--r--tests/auto/qdbusconnection/tst_qdbusconnection.cpp96
-rw-r--r--tests/auto/qdbuscontext/tst_qdbuscontext.cpp30
-rw-r--r--tests/auto/qdbusinterface/tst_qdbusinterface.cpp67
-rw-r--r--tests/auto/qdbuslocalcalls/tst_qdbuslocalcalls.cpp30
-rw-r--r--tests/auto/qdbusmarshall/common.h65
-rw-r--r--tests/auto/qdbusmarshall/dummy.cpp30
-rw-r--r--tests/auto/qdbusmarshall/qpong/qpong.cpp30
-rw-r--r--tests/auto/qdbusmarshall/tst_qdbusmarshall.cpp48
-rw-r--r--tests/auto/qdbusmetaobject/tst_qdbusmetaobject.cpp30
-rw-r--r--tests/auto/qdbusmetatype/tst_qdbusmetatype.cpp30
-rw-r--r--tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp30
-rw-r--r--tests/auto/qdbuspendingreply/tst_qdbuspendingreply.cpp30
-rw-r--r--tests/auto/qdbusperformance/server/server.cpp30
-rw-r--r--tests/auto/qdbusperformance/serverobject.h30
-rw-r--r--tests/auto/qdbusperformance/tst_qdbusperformance.cpp52
-rw-r--r--tests/auto/qdbusreply/tst_qdbusreply.cpp30
-rw-r--r--tests/auto/qdbusserver/server.cpp30
-rw-r--r--tests/auto/qdbusserver/tst_qdbusserver.cpp30
-rw-r--r--tests/auto/qdbusservicewatcher/qdbusservicewatcher.pro8
-rw-r--r--tests/auto/qdbusservicewatcher/tst_qdbusservicewatcher.cpp275
-rw-r--r--tests/auto/qdbusthreading/tst_qdbusthreading.cpp30
-rw-r--r--tests/auto/qdbusxmlparser/tst_qdbusxmlparser.cpp30
-rw-r--r--tests/auto/qdebug/qdebug.pro4
-rw-r--r--tests/auto/qdebug/tst_qdebug.cpp30
-rw-r--r--tests/auto/qdesktopservices/qdesktopservices.pro25
-rw-r--r--tests/auto/qdesktopservices/tst_qdesktopservices.cpp235
-rw-r--r--tests/auto/qdesktopwidget/tst_qdesktopwidget.cpp30
-rw-r--r--tests/auto/qdial/tst_qdial.cpp30
-rw-r--r--tests/auto/qdialog/tst_qdialog.cpp81
-rw-r--r--tests/auto/qdialogbuttonbox/tst_qdialogbuttonbox.cpp94
-rw-r--r--tests/auto/qdir/qdir.pro18
-rw-r--r--tests/auto/qdir/testdir/dir/qrc_qdir.cpp30
-rw-r--r--tests/auto/qdir/testdir/dir/tst_qdir.cpp30
-rw-r--r--tests/auto/qdir/tst_qdir.cpp215
-rw-r--r--tests/auto/qdirectpainter/runDirectPainter/main.cpp30
-rw-r--r--tests/auto/qdirectpainter/tst_qdirectpainter.cpp30
-rw-r--r--tests/auto/qdiriterator/qdiriterator.pro2
-rw-r--r--tests/auto/qdiriterator/tst_qdiriterator.cpp53
-rw-r--r--tests/auto/qdirmodel/qdirmodel.pro12
-rw-r--r--tests/auto/qdirmodel/tst_qdirmodel.cpp64
-rw-r--r--tests/auto/qdockwidget/tst_qdockwidget.cpp94
-rw-r--r--tests/auto/qdom/qdom.pro6
-rw-r--r--tests/auto/qdom/tst_qdom.cpp55
-rw-r--r--tests/auto/qdoublespinbox/tst_qdoublespinbox.cpp156
-rw-r--r--tests/auto/qdoublevalidator/tst_qdoublevalidator.cpp30
-rw-r--r--tests/auto/qdrag/tst_qdrag.cpp30
-rw-r--r--tests/auto/qeasingcurve/tst_qeasingcurve.cpp159
-rw-r--r--tests/auto/qerrormessage/tst_qerrormessage.cpp30
-rw-r--r--tests/auto/qevent/qevent.pro3
-rw-r--r--tests/auto/qevent/tst_qevent.cpp30
-rw-r--r--tests/auto/qeventloop/tst_qeventloop.cpp428
-rw-r--r--tests/auto/qexplicitlyshareddatapointer/qexplicitlyshareddatapointer.pro2
-rw-r--r--tests/auto/qexplicitlyshareddatapointer/tst_qexplicitlyshareddatapointer.cpp30
-rw-r--r--tests/auto/qfile/largefile/largefile.pro6
-rw-r--r--tests/auto/qfile/largefile/tst_largefile.cpp540
-rw-r--r--tests/auto/qfile/qfile.pro2
-rw-r--r--tests/auto/qfile/stdinprocess/main.cpp30
-rw-r--r--tests/auto/qfile/test/test.pro45
-rw-r--r--tests/auto/qfile/tst_qfile.cpp420
-rw-r--r--tests/auto/qfiledialog/qfiledialog.pro14
-rw-r--r--tests/auto/qfiledialog/tst_qfiledialog.cpp875
-rw-r--r--tests/auto/qfiledialog2/qfiledialog2.pro27
-rw-r--r--tests/auto/qfiledialog2/tst_qfiledialog2.cpp1044
-rw-r--r--tests/auto/qfileiconprovider/tst_qfileiconprovider.cpp30
-rw-r--r--tests/auto/qfileinfo/qfileinfo.pro16
-rw-r--r--tests/auto/qfileinfo/tst_qfileinfo.cpp326
-rw-r--r--tests/auto/qfilesystemmodel/qfilesystemmodel.pro10
-rw-r--r--tests/auto/qfilesystemmodel/tst_qfilesystemmodel.cpp165
-rw-r--r--tests/auto/qfilesystemwatcher/qfilesystemwatcher.pro2
-rw-r--r--tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp75
-rw-r--r--tests/auto/qflags/qflags.pro3
-rw-r--r--tests/auto/qflags/tst_qflags.cpp30
-rw-r--r--tests/auto/qfocusevent/tst_qfocusevent.cpp65
-rw-r--r--tests/auto/qfocusframe/tst_qfocusframe.cpp30
-rw-r--r--tests/auto/qfont/tst_qfont.cpp37
-rw-r--r--tests/auto/qfontcombobox/tst_qfontcombobox.cpp42
-rw-r--r--tests/auto/qfontdatabase/qfontdatabase.pro4
-rw-r--r--tests/auto/qfontdatabase/tst_qfontdatabase.cpp40
-rw-r--r--tests/auto/qfontdialog/tst_qfontdialog.cpp32
-rw-r--r--tests/auto/qfontdialog/tst_qfontdialog_mac_helpers.mm41
-rw-r--r--tests/auto/qfontmetrics/tst_qfontmetrics.cpp80
-rw-r--r--tests/auto/qformlayout/tst_qformlayout.cpp30
-rw-r--r--tests/auto/qftp/.gitattributes2
-rw-r--r--tests/auto/qftp/qftp.pro5
-rw-r--r--tests/auto/qftp/tst_qftp.cpp75
-rw-r--r--tests/auto/qfuture/tst_qfuture.cpp30
-rw-r--r--tests/auto/qfuture/versioncheck.h30
-rw-r--r--tests/auto/qfuturewatcher/tst_qfuturewatcher.cpp30
-rw-r--r--tests/auto/qgetputenv/qgetputenv.pro4
-rw-r--r--tests/auto/qgetputenv/tst_qgetputenv.cpp30
-rw-r--r--tests/auto/qgl/tst_qgl.cpp1252
-rw-r--r--tests/auto/qglobal/qglobal.pro3
-rw-r--r--tests/auto/qglobal/tst_qglobal.cpp102
-rw-r--r--tests/auto/qgraphicsanchorlayout/qgraphicsanchorlayout.pro3
-rw-r--r--tests/auto/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp2021
-rw-r--r--tests/auto/qgraphicsanchorlayout1/qgraphicsanchorlayout1.pro3
-rw-r--r--tests/auto/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp3100
-rw-r--r--tests/auto/qgraphicseffect/qgraphicseffect.pro3
-rw-r--r--tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp470
-rw-r--r--tests/auto/qgraphicseffectsource/qgraphicseffectsource.pro3
-rw-r--r--tests/auto/qgraphicseffectsource/tst_qgraphicseffectsource.cpp412
-rw-r--r--tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp57
-rw-r--r--tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp2791
-rw-r--r--tests/auto/qgraphicsitemanimation/tst_qgraphicsitemanimation.cpp30
-rw-r--r--tests/auto/qgraphicslayout/tst_qgraphicslayout.cpp92
-rw-r--r--tests/auto/qgraphicslayoutitem/tst_qgraphicslayoutitem.cpp30
-rw-r--r--tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp84
-rw-r--r--tests/auto/qgraphicsobject/tst_qgraphicsobject.cpp72
-rw-r--r--tests/auto/qgraphicspixmapitem/tst_qgraphicspixmapitem.cpp32
-rw-r--r--tests/auto/qgraphicspolygonitem/tst_qgraphicspolygonitem.cpp30
-rw-r--r--tests/auto/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp579
-rw-r--r--tests/auto/qgraphicsscene/qgraphicsscene.pro9
-rw-r--r--tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp724
-rw-r--r--tests/auto/qgraphicssceneindex/tst_qgraphicssceneindex.cpp92
-rw-r--r--tests/auto/qgraphicstransform/tst_qgraphicstransform.cpp242
-rw-r--r--tests/auto/qgraphicsview/qgraphicsview.pro2
-rw-r--r--tests/auto/qgraphicsview/tst_qgraphicsview.cpp692
-rw-r--r--tests/auto/qgraphicsview/tst_qgraphicsview_2.cpp242
-rw-r--r--tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp595
-rw-r--r--tests/auto/qgridlayout/tst_qgridlayout.cpp78
-rw-r--r--tests/auto/qgroupbox/tst_qgroupbox.cpp121
-rw-r--r--tests/auto/qguard/tst_qguard.cpp30
-rw-r--r--tests/auto/qguivariant/tst_qguivariant.cpp30
-rw-r--r--tests/auto/qhash/qhash.pro7
-rw-r--r--tests/auto/qhash/tst_qhash.cpp38
-rw-r--r--tests/auto/qheaderview/tst_qheaderview.cpp116
-rw-r--r--tests/auto/qhelpcontentmodel/tst_qhelpcontentmodel.cpp30
-rw-r--r--tests/auto/qhelpenginecore/tst_qhelpenginecore.cpp30
-rw-r--r--tests/auto/qhelpgenerator/tst_qhelpgenerator.cpp30
-rw-r--r--tests/auto/qhelpindexmodel/tst_qhelpindexmodel.cpp30
-rw-r--r--tests/auto/qhelpprojectdata/tst_qhelpprojectdata.cpp30
-rw-r--r--tests/auto/qhostaddress/tst_qhostaddress.cpp30
-rw-r--r--tests/auto/qhostinfo/tst_qhostinfo.cpp59
-rw-r--r--tests/auto/qhttp/dummyserver.h30
-rw-r--r--tests/auto/qhttp/qhttp.pro8
-rw-r--r--tests/auto/qhttp/tst_qhttp.cpp348
-rw-r--r--tests/auto/qhttpnetworkconnection/qhttpnetworkconnection.pro3
-rw-r--r--tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp258
-rw-r--r--tests/auto/qhttpnetworkreply/qhttpnetworkreply.pro1
-rw-r--r--tests/auto/qhttpnetworkreply/tst_qhttpnetworkreply.cpp30
-rw-r--r--tests/auto/qhttpsocketengine/tst_qhttpsocketengine.cpp49
-rw-r--r--tests/auto/qicoimageformat/qicoimageformat.pro11
-rw-r--r--tests/auto/qicoimageformat/tst_qicoimageformat.cpp36
-rw-r--r--tests/auto/qicon/image.tgabin51708 -> 0 bytes-rw-r--r--tests/auto/qicon/qicon.pro20
-rw-r--r--tests/auto/qicon/tst_qicon.cpp42
-rw-r--r--tests/auto/qicon/tst_qicon.qrc14
-rw-r--r--tests/auto/qimage/qimage.pro10
-rw-r--r--tests/auto/qimage/tst_qimage.cpp74
-rw-r--r--tests/auto/qimageiohandler/tst_qimageiohandler.cpp30
-rw-r--r--tests/auto/qimagereader/images/grayscale-ref.tifbin0 -> 256182 bytes-rw-r--r--tests/auto/qimagereader/images/grayscale.tifbin0 -> 64162 bytes-rw-r--r--tests/auto/qimagereader/images/qt.gifbin0 -> 26504 bytes-rw-r--r--tests/auto/qimagereader/images/qt1.gifbin0 -> 7216 bytes-rw-r--r--tests/auto/qimagereader/images/qt2.gifbin0 -> 5559 bytes-rw-r--r--tests/auto/qimagereader/images/qt3.gifbin0 -> 4702 bytes-rw-r--r--tests/auto/qimagereader/images/qt4.gifbin0 -> 4310 bytes-rw-r--r--tests/auto/qimagereader/images/qt5.gifbin0 -> 4234 bytes-rw-r--r--tests/auto/qimagereader/images/qt6.gifbin0 -> 4732 bytes-rw-r--r--tests/auto/qimagereader/images/qt7.gifbin0 -> 5265 bytes-rw-r--r--tests/auto/qimagereader/images/qt8.gifbin0 -> 6144 bytes-rw-r--r--tests/auto/qimagereader/qimagereader.pro15
-rw-r--r--tests/auto/qimagereader/qimagereader.qrc13
-rw-r--r--tests/auto/qimagereader/tst_qimagereader.cpp130
-rw-r--r--tests/auto/qimagewriter/qimagewriter.pro11
-rw-r--r--tests/auto/qimagewriter/tst_qimagewriter.cpp62
-rw-r--r--tests/auto/qinputcontext/qinputcontext.pro2
-rw-r--r--tests/auto/qinputcontext/tst_qinputcontext.cpp252
-rw-r--r--tests/auto/qinputdialog/tst_qinputdialog.cpp30
-rw-r--r--tests/auto/qintvalidator/tst_qintvalidator.cpp30
-rw-r--r--tests/auto/qiodevice/qiodevice.pro5
-rw-r--r--tests/auto/qiodevice/tst_qiodevice.cpp149
-rw-r--r--tests/auto/qitemdelegate/tst_qitemdelegate.cpp90
-rw-r--r--tests/auto/qitemeditorfactory/tst_qitemeditorfactory.cpp30
-rw-r--r--tests/auto/qitemmodel/modelstotest.cpp30
-rw-r--r--tests/auto/qitemmodel/qitemmodel.pro11
-rw-r--r--tests/auto/qitemmodel/tst_qitemmodel.cpp31
-rw-r--r--tests/auto/qitemselectionmodel/tst_qitemselectionmodel.cpp128
-rw-r--r--tests/auto/qitemview/tst_qitemview.cpp40
-rw-r--r--tests/auto/qitemview/viewstotest.cpp30
-rw-r--r--tests/auto/qkeyevent/.gitignore1
-rw-r--r--tests/auto/qkeyevent/qkeyevent.pro5
-rw-r--r--tests/auto/qkeyevent/tst_qkeyevent.cpp228
-rw-r--r--tests/auto/qkeysequence/qkeysequence.pro4
-rw-r--r--tests/auto/qkeysequence/qkeysequence.qrc6
-rw-r--r--tests/auto/qkeysequence/qt_de.qmbin0 -> 186240 bytes-rw-r--r--tests/auto/qkeysequence/tst_qkeysequence.cpp119
-rw-r--r--tests/auto/qlabel/qlabel.pro18
-rw-r--r--tests/auto/qlabel/tst_qlabel.cpp165
-rw-r--r--tests/auto/qlayout/qlayout.pro2
-rw-r--r--tests/auto/qlayout/tst_qlayout.cpp58
-rw-r--r--tests/auto/qlcdnumber/tst_qlcdnumber.cpp46
-rw-r--r--tests/auto/qlibrary/lib/lib.pro15
-rw-r--r--tests/auto/qlibrary/lib/mylib.c45
-rw-r--r--tests/auto/qlibrary/lib2/lib2.pro36
-rw-r--r--tests/auto/qlibrary/lib2/mylib.c45
-rw-r--r--tests/auto/qlibrary/qlibrary.pro14
-rw-r--r--tests/auto/qlibrary/tst/tst.pro12
-rw-r--r--tests/auto/qlibrary/tst_qlibrary.cpp147
-rw-r--r--tests/auto/qline/qline.pro2
-rw-r--r--tests/auto/qline/tst_qline.cpp30
-rw-r--r--tests/auto/qlineedit/tst_qlineedit.cpp204
-rw-r--r--tests/auto/qlist/tst_qlist.cpp30
-rw-r--r--tests/auto/qlistview/tst_qlistview.cpp272
-rw-r--r--tests/auto/qlistwidget/tst_qlistwidget.cpp98
-rw-r--r--tests/auto/qlocale/syslocaleapp/syslocaleapp.cpp30
-rw-r--r--tests/auto/qlocale/test/test.pro8
-rw-r--r--tests/auto/qlocale/tst_qlocale.cpp86
-rw-r--r--tests/auto/qlocalsocket/example/client/main.cpp30
-rw-r--r--tests/auto/qlocalsocket/example/server/main.cpp30
-rw-r--r--tests/auto/qlocalsocket/lackey/lackey.pro8
-rw-r--r--tests/auto/qlocalsocket/lackey/main.cpp32
-rw-r--r--tests/auto/qlocalsocket/qlocalsocket.pro2
-rw-r--r--tests/auto/qlocalsocket/test/test.pro21
-rw-r--r--tests/auto/qlocalsocket/tst_qlocalsocket.cpp233
-rw-r--r--tests/auto/qmacstyle/tst_qmacstyle.cpp30
-rw-r--r--tests/auto/qmainwindow/qmainwindow.pro3
-rw-r--r--tests/auto/qmainwindow/tst_qmainwindow.cpp114
-rw-r--r--tests/auto/qmake/testcompiler.cpp44
-rw-r--r--tests/auto/qmake/testcompiler.h34
-rw-r--r--tests/auto/qmake/testdata/findDeps/findDeps.pro7
-rw-r--r--tests/auto/qmake/testdata/findDeps/main.cpp30
-rw-r--r--tests/auto/qmake/testdata/findDeps/object1.h30
-rw-r--r--tests/auto/qmake/testdata/findDeps/object2.h30
-rw-r--r--tests/auto/qmake/testdata/findDeps/object3.h30
-rw-r--r--tests/auto/qmake/testdata/findDeps/object4.h30
-rw-r--r--tests/auto/qmake/testdata/findDeps/object5.h30
-rw-r--r--tests/auto/qmake/testdata/findDeps/object6.h30
-rw-r--r--tests/auto/qmake/testdata/findDeps/object7.h30
-rw-r--r--tests/auto/qmake/testdata/findDeps/object8.h30
-rw-r--r--tests/auto/qmake/testdata/findDeps/object9.h30
-rw-r--r--tests/auto/qmake/testdata/findMocs/findMocs.pro7
-rw-r--r--tests/auto/qmake/testdata/findMocs/main.cpp30
-rw-r--r--tests/auto/qmake/testdata/findMocs/object1.h30
-rw-r--r--tests/auto/qmake/testdata/findMocs/object2.h30
-rw-r--r--tests/auto/qmake/testdata/findMocs/object3.h30
-rw-r--r--tests/auto/qmake/testdata/findMocs/object4.h30
-rw-r--r--tests/auto/qmake/testdata/findMocs/object5.h30
-rw-r--r--tests/auto/qmake/testdata/findMocs/object6.h30
-rw-r--r--tests/auto/qmake/testdata/findMocs/object7.h30
-rw-r--r--tests/auto/qmake/testdata/functions/1.cpp30
-rw-r--r--tests/auto/qmake/testdata/functions/2.cpp30
-rw-r--r--tests/auto/qmake/testdata/functions/one/1.cpp30
-rw-r--r--tests/auto/qmake/testdata/functions/one/2.cpp30
-rw-r--r--tests/auto/qmake/testdata/functions/three/wildcard21.cpp30
-rw-r--r--tests/auto/qmake/testdata/functions/three/wildcard22.cpp30
-rw-r--r--tests/auto/qmake/testdata/functions/two/1.cpp30
-rw-r--r--tests/auto/qmake/testdata/functions/two/2.cpp30
-rw-r--r--tests/auto/qmake/testdata/functions/wildcard21.cpp30
-rw-r--r--tests/auto/qmake/testdata/functions/wildcard22.cpp30
-rw-r--r--tests/auto/qmake/testdata/include_dir/main.cpp30
-rw-r--r--tests/auto/qmake/testdata/include_dir/test_file.cpp30
-rw-r--r--tests/auto/qmake/testdata/include_dir/test_file.h30
-rw-r--r--tests/auto/qmake/testdata/include_function/existing_file.pri3
-rw-r--r--tests/auto/qmake/testdata/include_function/include_existing_file.pro7
-rw-r--r--tests/auto/qmake/testdata/include_function/include_missing_file.pro3
-rw-r--r--tests/auto/qmake/testdata/include_function/include_missing_file2.pro3
-rw-r--r--tests/auto/qmake/testdata/include_function/main.cpp45
-rw-r--r--tests/auto/qmake/testdata/install_depends/main.cpp30
-rw-r--r--tests/auto/qmake/testdata/install_depends/test_file.cpp30
-rw-r--r--tests/auto/qmake/testdata/install_depends/test_file.h30
-rw-r--r--tests/auto/qmake/testdata/one_space/main.cpp30
-rw-r--r--tests/auto/qmake/testdata/prompt/prompt.pro2
-rw-r--r--tests/auto/qmake/testdata/quotedfilenames/main.cpp30
-rw-r--r--tests/auto/qmake/testdata/shadow_files/main.cpp30
-rw-r--r--tests/auto/qmake/testdata/shadow_files/test_file.cpp30
-rw-r--r--tests/auto/qmake/testdata/shadow_files/test_file.h30
-rw-r--r--tests/auto/qmake/testdata/simple_app/main.cpp30
-rw-r--r--tests/auto/qmake/testdata/simple_app/test_file.cpp30
-rw-r--r--tests/auto/qmake/testdata/simple_app/test_file.h30
-rw-r--r--tests/auto/qmake/testdata/simple_dll/simple.cpp30
-rw-r--r--tests/auto/qmake/testdata/simple_dll/simple.h30
-rw-r--r--tests/auto/qmake/testdata/simple_lib/simple.cpp30
-rw-r--r--tests/auto/qmake/testdata/simple_lib/simple.h30
-rw-r--r--tests/auto/qmake/testdata/subdirs/simple_app/main.cpp30
-rw-r--r--tests/auto/qmake/testdata/subdirs/simple_app/test_file.cpp30
-rw-r--r--tests/auto/qmake/testdata/subdirs/simple_app/test_file.h30
-rw-r--r--tests/auto/qmake/testdata/subdirs/simple_dll/simple.cpp30
-rw-r--r--tests/auto/qmake/testdata/subdirs/simple_dll/simple.h30
-rw-r--r--tests/auto/qmake/tst_qmake.cpp53
-rw-r--r--tests/auto/qmap/qmap.pro4
-rw-r--r--tests/auto/qmap/tst_qmap.cpp30
-rw-r--r--tests/auto/qmargins/qmargins.pro3
-rw-r--r--tests/auto/qmargins/tst_qmargins.cpp108
-rw-r--r--tests/auto/qmath/qmath.pro6
-rw-r--r--tests/auto/qmath/tst_qmath.cpp67
-rw-r--r--tests/auto/qmatrixnxn/qmatrixnxn.pro2
-rw-r--r--tests/auto/qmatrixnxn/tst_qmatrixnxn.cpp3307
-rw-r--r--tests/auto/qmdiarea/tst_qmdiarea.cpp92
-rw-r--r--tests/auto/qmdisubwindow/tst_qmdisubwindow.cpp92
-rw-r--r--tests/auto/qmenu/tst_qmenu.cpp142
-rw-r--r--tests/auto/qmenubar/qmenubar.pro2
-rw-r--r--tests/auto/qmenubar/tst_qmenubar.cpp105
-rw-r--r--tests/auto/qmessagebox/tst_qmessagebox.cpp44
-rw-r--r--tests/auto/qmetaobject/tst_qmetaobject.cpp30
-rw-r--r--tests/auto/qmetatype/qmetatype.pro3
-rw-r--r--tests/auto/qmetatype/tst_qmetatype.cpp30
-rw-r--r--tests/auto/qmouseevent/tst_qmouseevent.cpp36
-rw-r--r--tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp30
-rw-r--r--tests/auto/qmovie/qmovie.pro12
-rw-r--r--tests/auto/qmovie/tst_qmovie.cpp30
-rw-r--r--tests/auto/qmultiscreen/tst_qmultiscreen.cpp30
-rw-r--r--tests/auto/qmutex/qmutex.pro2
-rw-r--r--tests/auto/qmutex/tst_qmutex.cpp30
-rw-r--r--tests/auto/qmutexlocker/qmutexlocker.pro2
-rw-r--r--tests/auto/qmutexlocker/tst_qmutexlocker.cpp30
-rw-r--r--tests/auto/qnativesocketengine/tst_qnativesocketengine.cpp53
-rw-r--r--tests/auto/qnetworkaccessmanager_and_qprogressdialog/tst_qnetworkaccessmanager_and_qprogressdialog.cpp39
-rw-r--r--tests/auto/qnetworkaddressentry/tst_qnetworkaddressentry.cpp30
-rw-r--r--tests/auto/qnetworkcachemetadata/tst_qnetworkcachemetadata.cpp30
-rw-r--r--tests/auto/qnetworkcookie/tst_qnetworkcookie.cpp99
-rw-r--r--tests/auto/qnetworkcookiejar/tst_qnetworkcookiejar.cpp99
-rw-r--r--tests/auto/qnetworkdiskcache/tst_qnetworkdiskcache.cpp36
-rw-r--r--tests/auto/qnetworkinterface/tst_qnetworkinterface.cpp39
-rw-r--r--tests/auto/qnetworkproxy/tst_qnetworkproxy.cpp30
-rw-r--r--tests/auto/qnetworkreply/.gitattributes5
-rw-r--r--tests/auto/qnetworkreply/certs/aspiriniks.ca.crt22
-rw-r--r--tests/auto/qnetworkreply/certs/fluke.cert75
-rw-r--r--tests/auto/qnetworkreply/certs/fluke.key15
-rw-r--r--tests/auto/qnetworkreply/certs/qt-test-server-cacert.pem17
-rw-r--r--tests/auto/qnetworkreply/certs/server.key15
-rw-r--r--tests/auto/qnetworkreply/certs/server.pem24
-rw-r--r--tests/auto/qnetworkreply/echo/echo.pro2
-rw-r--r--tests/auto/qnetworkreply/echo/main.cpp30
-rw-r--r--tests/auto/qnetworkreply/test/test.pro18
-rw-r--r--tests/auto/qnetworkreply/tst_qnetworkreply.cpp742
-rw-r--r--tests/auto/qnetworkrequest/tst_qnetworkrequest.cpp46
-rw-r--r--tests/auto/qnumeric/qnumeric.pro3
-rw-r--r--tests/auto/qnumeric/tst_qnumeric.cpp30
-rw-r--r--tests/auto/qobject/moc_oldnormalizeobject.cpp113
-rw-r--r--tests/auto/qobject/oldnormalizeobject.h28
-rw-r--r--tests/auto/qobject/qobject.pro2
-rw-r--r--tests/auto/qobject/signalbug.cpp30
-rw-r--r--tests/auto/qobject/signalbug.h30
-rw-r--r--tests/auto/qobject/tst_qobject.cpp421
-rw-r--r--tests/auto/qobject/tst_qobject.pro25
-rw-r--r--tests/auto/qobjectperformance/tst_qobjectperformance.cpp30
-rw-r--r--tests/auto/qobjectrace/qobjectrace.pro3
-rw-r--r--tests/auto/qobjectrace/tst_qobjectrace.cpp62
-rw-r--r--tests/auto/qpaintengine/tst_qpaintengine.cpp30
-rw-r--r--tests/auto/qpainter/qpainter.pro9
-rw-r--r--tests/auto/qpainter/tst_qpainter.cpp257
-rw-r--r--tests/auto/qpainter/utils/createImages/main.cpp30
-rw-r--r--tests/auto/qpainterpath/tst_qpainterpath.cpp35
-rw-r--r--tests/auto/qpainterpathstroker/tst_qpainterpathstroker.cpp30
-rw-r--r--tests/auto/qpalette/tst_qpalette.cpp30
-rw-r--r--tests/auto/qparallelanimationgroup/tst_qparallelanimationgroup.cpp288
-rw-r--r--tests/auto/qpathclipper/paths.cpp30
-rw-r--r--tests/auto/qpathclipper/paths.h30
-rw-r--r--tests/auto/qpathclipper/qpathclipper.pro2
-rw-r--r--tests/auto/qpathclipper/tst_qpathclipper.cpp30
-rw-r--r--tests/auto/qpauseanimation/qpauseanimation.pro5
-rw-r--r--tests/auto/qpauseanimation/tst_qpauseanimation.cpp423
-rw-r--r--tests/auto/qpen/tst_qpen.cpp42
-rw-r--r--tests/auto/qpicture/tst_qpicture.cpp30
-rw-r--r--tests/auto/qpixmap/convertFromToHICON/icon_32bpp.icobin0 -> 285478 bytes-rw-r--r--tests/auto/qpixmap/convertFromToHICON/icon_32bpp_16x16.pngbin0 -> 754 bytes-rw-r--r--tests/auto/qpixmap/convertFromToHICON/icon_32bpp_256x256.pngbin0 -> 16269 bytes-rw-r--r--tests/auto/qpixmap/convertFromToHICON/icon_32bpp_32x32.pngbin0 -> 1745 bytes-rw-r--r--tests/auto/qpixmap/convertFromToHICON/icon_32bpp_48x48.pngbin0 -> 2618 bytes-rw-r--r--tests/auto/qpixmap/convertFromToHICON/icon_8bpp.icobin0 -> 7406 bytes-rw-r--r--tests/auto/qpixmap/convertFromToHICON/icon_8bpp_16x16.pngbin0 -> 1454 bytes-rw-r--r--tests/auto/qpixmap/convertFromToHICON/icon_8bpp_32x32.pngbin0 -> 1721 bytes-rw-r--r--tests/auto/qpixmap/convertFromToHICON/icon_8bpp_48x48.pngbin0 -> 1967 bytes-rw-r--r--tests/auto/qpixmap/qpixmap.pro24
-rw-r--r--tests/auto/qpixmap/tst_qpixmap.cpp422
-rw-r--r--tests/auto/qpixmapcache/tst_qpixmapcache.cpp77
-rw-r--r--tests/auto/qpixmapfilter/tst_qpixmapfilter.cpp114
-rw-r--r--tests/auto/qplaintextedit/tst_qplaintextedit.cpp59
-rw-r--r--tests/auto/qplugin/debugplugin/debugplugin.pro4
-rw-r--r--tests/auto/qplugin/debugplugin/main.cpp30
-rw-r--r--tests/auto/qplugin/qplugin.pro1
-rw-r--r--tests/auto/qplugin/releaseplugin/main.cpp30
-rw-r--r--tests/auto/qplugin/releaseplugin/releaseplugin.pro4
-rw-r--r--tests/auto/qplugin/tst_qplugin.cpp30
-rw-r--r--tests/auto/qplugin/tst_qplugin.pro8
-rw-r--r--tests/auto/qpluginloader/almostplugin/almostplugin.cpp30
-rw-r--r--tests/auto/qpluginloader/almostplugin/almostplugin.h30
-rw-r--r--tests/auto/qpluginloader/lib/lib.pro3
-rw-r--r--tests/auto/qpluginloader/lib/mylib.c41
-rw-r--r--tests/auto/qpluginloader/qpluginloader.pro3
-rw-r--r--tests/auto/qpluginloader/theplugin/plugininterface.h30
-rw-r--r--tests/auto/qpluginloader/theplugin/theplugin.cpp30
-rw-r--r--tests/auto/qpluginloader/theplugin/theplugin.h30
-rw-r--r--tests/auto/qpluginloader/theplugin/theplugin.pro4
-rw-r--r--tests/auto/qpluginloader/tst/tst.pro9
-rw-r--r--tests/auto/qpluginloader/tst_qpluginloader.cpp96
-rw-r--r--tests/auto/qpoint/qpoint.pro5
-rw-r--r--tests/auto/qpoint/tst_qpoint.cpp30
-rw-r--r--tests/auto/qpointer/tst_qpointer.cpp30
-rw-r--r--tests/auto/qpolygon/qpolygon.pro2
-rw-r--r--tests/auto/qpolygon/tst_qpolygon.cpp30
-rw-r--r--tests/auto/qprinter/tst_qprinter.cpp76
-rw-r--r--tests/auto/qprinterinfo/tst_qprinterinfo.cpp51
-rw-r--r--tests/auto/qprocess/fileWriterProcess/main.cpp30
-rw-r--r--tests/auto/qprocess/qprocess.pro12
-rw-r--r--tests/auto/qprocess/test/test.pro123
-rw-r--r--tests/auto/qprocess/testDetached/main.cpp30
-rw-r--r--tests/auto/qprocess/testDetached/testDetached.pro3
-rw-r--r--tests/auto/qprocess/testExitCodes/main.cpp30
-rw-r--r--tests/auto/qprocess/testGuiProcess/main.cpp30
-rw-r--r--tests/auto/qprocess/testProcessCrash/main.cpp30
-rw-r--r--tests/auto/qprocess/testProcessDeadWhileReading/main.cpp30
-rw-r--r--tests/auto/qprocess/testProcessEOF/main.cpp30
-rw-r--r--tests/auto/qprocess/testProcessEcho/main.cpp30
-rw-r--r--tests/auto/qprocess/testProcessEcho2/main.cpp30
-rw-r--r--tests/auto/qprocess/testProcessEcho3/main.cpp30
-rw-r--r--tests/auto/qprocess/testProcessEchoGui/main_win.cpp30
-rw-r--r--tests/auto/qprocess/testProcessEnvironment/main.cpp30
-rw-r--r--tests/auto/qprocess/testProcessLoopback/main.cpp30
-rw-r--r--tests/auto/qprocess/testProcessNormal/main.cpp30
-rw-r--r--tests/auto/qprocess/testProcessOutput/main.cpp48
-rw-r--r--tests/auto/qprocess/testProcessSpacesArgs/main.cpp42
-rw-r--r--tests/auto/qprocess/testSetWorkingDirectory/main.cpp30
-rw-r--r--tests/auto/qprocess/testSoftExit/main_unix.cpp30
-rw-r--r--tests/auto/qprocess/testSoftExit/main_win.cpp30
-rw-r--r--tests/auto/qprocess/testSpaceInName/main.cpp30
-rw-r--r--tests/auto/qprocess/tst_qprocess.cpp344
-rw-r--r--tests/auto/qprogressbar/tst_qprogressbar.cpp48
-rw-r--r--tests/auto/qprogressdialog/tst_qprogressdialog.cpp30
-rw-r--r--tests/auto/qpropertyanimation/tst_qpropertyanimation.cpp230
-rw-r--r--tests/auto/qpushbutton/tst_qpushbutton.cpp38
-rw-r--r--tests/auto/qquaternion/qquaternion.pro2
-rw-r--r--tests/auto/qquaternion/tst_qquaternion.cpp888
-rw-r--r--tests/auto/qqueue/qqueue.pro3
-rw-r--r--tests/auto/qqueue/tst_qqueue.cpp30
-rw-r--r--tests/auto/qradiobutton/tst_qradiobutton.cpp30
-rw-r--r--tests/auto/qrand/qrand.pro2
-rw-r--r--tests/auto/qrand/tst_qrand.cpp30
-rw-r--r--tests/auto/qreadlocker/qreadlocker.pro2
-rw-r--r--tests/auto/qreadlocker/tst_qreadlocker.cpp30
-rw-r--r--tests/auto/qreadwritelock/qreadwritelock.pro2
-rw-r--r--tests/auto/qreadwritelock/tst_qreadwritelock.cpp30
-rw-r--r--tests/auto/qrect/qrect.pro2
-rw-r--r--tests/auto/qrect/tst_qrect.cpp350
-rw-r--r--tests/auto/qregexp/qregexp.pro3
-rw-r--r--tests/auto/qregexp/tst_qregexp.cpp137
-rw-r--r--tests/auto/qregexpvalidator/tst_qregexpvalidator.cpp30
-rw-r--r--tests/auto/qregion/tst_qregion.cpp61
-rw-r--r--tests/auto/qresourceengine/qresourceengine.pro22
-rw-r--r--tests/auto/qresourceengine/tst_qresourceengine.cpp34
-rw-r--r--tests/auto/qringbuffer/tst_qringbuffer.cpp30
-rw-r--r--tests/auto/qs60mainapplication/qs60mainapplication.pro4
-rw-r--r--tests/auto/qs60mainapplication/tst_qs60mainapplication.cpp133
-rw-r--r--tests/auto/qscopedpointer/.gitignore1
-rw-r--r--tests/auto/qscopedpointer/qscopedpointer.pro3
-rw-r--r--tests/auto/qscopedpointer/tst_qscopedpointer.cpp441
-rw-r--r--tests/auto/qscriptable/tst_qscriptable.cpp31
-rw-r--r--tests/auto/qscriptclass/tst_qscriptclass.cpp106
-rw-r--r--tests/auto/qscriptcontext/tst_qscriptcontext.cpp595
-rw-r--r--tests/auto/qscriptcontextinfo/tst_qscriptcontextinfo.cpp238
-rw-r--r--tests/auto/qscriptengine/qscriptengine.pro13
-rw-r--r--tests/auto/qscriptengine/tst_qscriptengine.cpp1107
-rw-r--r--tests/auto/qscriptengineagent/tst_qscriptengineagent.cpp875
-rw-r--r--tests/auto/qscriptenginedebugger/tst_qscriptenginedebugger.cpp56
-rw-r--r--tests/auto/qscriptextqobject/qscriptextqobject.pro2
-rw-r--r--tests/auto/qscriptextqobject/tst_qscriptextqobject.cpp181
-rw-r--r--tests/auto/qscriptjstestsuite/qscriptjstestsuite.pro5
-rw-r--r--tests/auto/qscriptjstestsuite/tst_qscriptjstestsuite.cpp215
-rw-r--r--tests/auto/qscriptstring/tst_qscriptstring.cpp88
-rw-r--r--tests/auto/qscriptv8testsuite/qscriptv8testsuite.pro6
-rw-r--r--tests/auto/qscriptv8testsuite/tst_qscriptv8testsuite.cpp114
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue.cpp726
-rw-r--r--tests/auto/qscriptvalueiterator/tst_qscriptvalueiterator.cpp234
-rw-r--r--tests/auto/qscrollarea/tst_qscrollarea.cpp30
-rw-r--r--tests/auto/qscrollbar/tst_qscrollbar.cpp30
-rw-r--r--tests/auto/qsemaphore/tst_qsemaphore.cpp30
-rw-r--r--tests/auto/qsequentialanimationgroup/qsequentialanimationgroup.pro2
-rw-r--r--tests/auto/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp674
-rw-r--r--tests/auto/qset/qset.pro7
-rw-r--r--tests/auto/qset/tst_qset.cpp30
-rw-r--r--tests/auto/qsettings/.gitattributes5
-rw-r--r--tests/auto/qsettings/tst_qsettings.cpp52
-rw-r--r--tests/auto/qsharedmemory/lackey/lackey.pro2
-rw-r--r--tests/auto/qsharedmemory/lackey/main.cpp30
-rw-r--r--tests/auto/qsharedmemory/lackey/scripts/producer.js8
-rw-r--r--tests/auto/qsharedmemory/qsystemlock/qsystemlock.pro6
-rw-r--r--tests/auto/qsharedmemory/qsystemlock/tst_qsystemlock.cpp56
-rw-r--r--tests/auto/qsharedmemory/src/qsystemlock.cpp30
-rw-r--r--tests/auto/qsharedmemory/src/qsystemlock.h30
-rw-r--r--tests/auto/qsharedmemory/src/qsystemlock_p.h33
-rw-r--r--tests/auto/qsharedmemory/src/qsystemlock_unix.cpp54
-rw-r--r--tests/auto/qsharedmemory/src/qsystemlock_win.cpp30
-rw-r--r--tests/auto/qsharedmemory/test/test.pro12
-rw-r--r--tests/auto/qsharedmemory/tst_qsharedmemory.cpp86
-rw-r--r--tests/auto/qsharedpointer/externaltests.cpp44
-rw-r--r--tests/auto/qsharedpointer/externaltests.h30
-rw-r--r--tests/auto/qsharedpointer/externaltests.pri5
-rw-r--r--tests/auto/qsharedpointer/forwarddeclaration.cpp30
-rw-r--r--tests/auto/qsharedpointer/forwarddeclared.cpp30
-rw-r--r--tests/auto/qsharedpointer/forwarddeclared.h30
-rw-r--r--tests/auto/qsharedpointer/qsharedpointer.pro2
-rw-r--r--tests/auto/qsharedpointer/tst_qsharedpointer.cpp131
-rw-r--r--tests/auto/qsharedpointer/wrapper.cpp30
-rw-r--r--tests/auto/qsharedpointer/wrapper.h33
-rw-r--r--tests/auto/qsharedpointer_and_qwidget/tst_qsharedpointer_and_qwidget.cpp32
-rw-r--r--tests/auto/qshortcut/tst_qshortcut.cpp30
-rw-r--r--tests/auto/qsidebar/qsidebar.pro2
-rw-r--r--tests/auto/qsidebar/tst_qsidebar.cpp56
-rw-r--r--tests/auto/qsignalmapper/tst_qsignalmapper.cpp30
-rw-r--r--tests/auto/qsignalspy/qsignalspy.pro3
-rw-r--r--tests/auto/qsignalspy/tst_qsignalspy.cpp30
-rw-r--r--tests/auto/qsimplexmlnodemodel/TestSimpleNodeModel.h30
-rw-r--r--tests/auto/qsimplexmlnodemodel/tst_qsimplexmlnodemodel.cpp30
-rw-r--r--tests/auto/qsize/qsize.pro4
-rw-r--r--tests/auto/qsize/tst_qsize.cpp30
-rw-r--r--tests/auto/qsizef/qsizef.pro3
-rw-r--r--tests/auto/qsizef/tst_qsizef.cpp30
-rw-r--r--tests/auto/qsizegrip/tst_qsizegrip.cpp30
-rw-r--r--tests/auto/qslider/tst_qslider.cpp30
-rw-r--r--tests/auto/qsocketnotifier/tst_qsocketnotifier.cpp120
-rw-r--r--tests/auto/qsocks5socketengine/qsocks5socketengine.pro2
-rw-r--r--tests/auto/qsocks5socketengine/tst_qsocks5socketengine.cpp56
-rw-r--r--tests/auto/qsoftkeymanager/qsoftkeymanager.pro4
-rw-r--r--tests/auto/qsoftkeymanager/tst_qsoftkeymanager.cpp301
-rw-r--r--tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp67
-rw-r--r--tests/auto/qsound/qsound.pro8
-rw-r--r--tests/auto/qsound/tst_qsound.cpp60
-rw-r--r--tests/auto/qsourcelocation/tst_qsourcelocation.cpp30
-rw-r--r--tests/auto/qspinbox/tst_qspinbox.cpp106
-rw-r--r--tests/auto/qsplitter/qsplitter.pro4
-rw-r--r--tests/auto/qsplitter/tst_qsplitter.cpp68
-rw-r--r--tests/auto/qsql/qsql.pro12
-rw-r--r--tests/auto/qsql/tst_qsql.cpp30
-rw-r--r--tests/auto/qsqldatabase/qsqldatabase.pro13
-rw-r--r--tests/auto/qsqldatabase/tst_databases.h31
-rw-r--r--tests/auto/qsqldatabase/tst_qsqldatabase.cpp211
-rw-r--r--tests/auto/qsqldriver/qsqldriver.pro10
-rw-r--r--tests/auto/qsqldriver/tst_qsqldriver.cpp59
-rw-r--r--tests/auto/qsqlerror/qsqlerror.pro10
-rw-r--r--tests/auto/qsqlerror/tst_qsqlerror.cpp30
-rw-r--r--tests/auto/qsqlfield/qsqlfield.pro10
-rw-r--r--tests/auto/qsqlfield/tst_qsqlfield.cpp30
-rw-r--r--tests/auto/qsqlquery/qsqlquery.pro10
-rw-r--r--tests/auto/qsqlquery/tst_qsqlquery.cpp184
-rw-r--r--tests/auto/qsqlquerymodel/qsqlquerymodel.pro10
-rw-r--r--tests/auto/qsqlquerymodel/tst_qsqlquerymodel.cpp50
-rw-r--r--tests/auto/qsqlrecord/qsqlrecord.pro13
-rw-r--r--tests/auto/qsqlrecord/tst_qsqlrecord.cpp119
-rw-r--r--tests/auto/qsqlrelationaltablemodel/qsqlrelationaltablemodel.pro10
-rw-r--r--tests/auto/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp75
-rw-r--r--tests/auto/qsqltablemodel/qsqltablemodel.pro10
-rw-r--r--tests/auto/qsqltablemodel/tst_qsqltablemodel.cpp96
-rw-r--r--tests/auto/qsqlthread/qsqlthread.pro10
-rw-r--r--tests/auto/qsqlthread/tst_qsqlthread.cpp32
-rwxr-xr-xtests/auto/qsslcertificate/certificates/gencertificates.sh40
-rw-r--r--tests/auto/qsslcertificate/more-certificates/badguy-nul-san.crt83
-rw-r--r--tests/auto/qsslcertificate/qsslcertificate.pro11
-rw-r--r--tests/auto/qsslcertificate/tst_qsslcertificate.cpp68
-rw-r--r--tests/auto/qsslcipher/qsslcipher.pro2
-rw-r--r--tests/auto/qsslcipher/tst_qsslcipher.cpp30
-rw-r--r--tests/auto/qsslerror/qsslerror.pro2
-rw-r--r--tests/auto/qsslerror/tst_qsslerror.cpp30
-rwxr-xr-xtests/auto/qsslkey/keys/genkeys.sh40
-rw-r--r--tests/auto/qsslkey/qsslkey.pro9
-rw-r--r--tests/auto/qsslkey/tst_qsslkey.cpp38
-rw-r--r--tests/auto/qsslsocket/certs/aspiriniks.ca.crt22
-rw-r--r--tests/auto/qsslsocket/qsslsocket.pro26
-rw-r--r--tests/auto/qsslsocket/tst_qsslsocket.cpp246
-rw-r--r--tests/auto/qstackedlayout/tst_qstackedlayout.cpp44
-rw-r--r--tests/auto/qstackedwidget/tst_qstackedwidget.cpp30
-rw-r--r--tests/auto/qstandarditem/tst_qstandarditem.cpp34
-rw-r--r--tests/auto/qstandarditemmodel/tst_qstandarditemmodel.cpp34
-rw-r--r--tests/auto/qstate/tst_qstate.cpp34
-rw-r--r--tests/auto/qstatemachine/tst_qstatemachine.cpp708
-rw-r--r--tests/auto/qstatusbar/tst_qstatusbar.cpp58
-rw-r--r--tests/auto/qstl/qstl.pro4
-rw-r--r--tests/auto/qstl/tst_qstl.cpp30
-rw-r--r--tests/auto/qstring/double_data.h30
-rw-r--r--tests/auto/qstring/qstring.pro5
-rw-r--r--tests/auto/qstring/tst_qstring.cpp351
-rw-r--r--tests/auto/qstringbuilder/qstringbuilder.pro5
-rw-r--r--tests/auto/qstringbuilder/scenario1.cpp1
-rw-r--r--tests/auto/qstringbuilder/scenario1.pro9
-rw-r--r--tests/auto/qstringbuilder/scenario2.cpp1
-rw-r--r--tests/auto/qstringbuilder/scenario2.pro8
-rw-r--r--tests/auto/qstringbuilder/scenario3.cpp1
-rw-r--r--tests/auto/qstringbuilder/scenario3.pro8
-rw-r--r--tests/auto/qstringbuilder/scenario4.cpp1
-rw-r--r--tests/auto/qstringbuilder/scenario4.pro8
-rw-r--r--tests/auto/qstringbuilder/tst_qstringbuilder.cpp133
-rw-r--r--tests/auto/qstringbuilder/tst_qstringbuilder.h55
-rw-r--r--tests/auto/qstringbuilder1/qstringbuilder1.pro6
-rw-r--r--tests/auto/qstringbuilder1/stringbuilder.cpp105
-rw-r--r--tests/auto/qstringbuilder1/tst_qstringbuilder1.cpp73
-rw-r--r--tests/auto/qstringbuilder2/qstringbuilder2.pro5
-rw-r--r--tests/auto/qstringbuilder2/tst_qstringbuilder2.cpp74
-rw-r--r--tests/auto/qstringbuilder3/qstringbuilder3.pro5
-rw-r--r--tests/auto/qstringbuilder3/tst_qstringbuilder3.cpp73
-rw-r--r--tests/auto/qstringbuilder4/qstringbuilder4.pro5
-rw-r--r--tests/auto/qstringbuilder4/tst_qstringbuilder4.cpp74
-rw-r--r--tests/auto/qstringlist/qstringlist.pro4
-rw-r--r--tests/auto/qstringlist/tst_qstringlist.cpp30
-rw-r--r--tests/auto/qstringlistmodel/qmodellistener.h30
-rw-r--r--tests/auto/qstringlistmodel/tst_qstringlistmodel.cpp31
-rw-r--r--tests/auto/qstringmatcher/tst_qstringmatcher.cpp30
-rw-r--r--tests/auto/qstyle/qstyle.pro7
-rw-r--r--tests/auto/qstyle/tst_qstyle.cpp141
-rw-r--r--tests/auto/qstyleoption/tst_qstyleoption.cpp30
-rw-r--r--tests/auto/qstylesheetstyle/qstylesheetstyle.pro12
-rw-r--r--tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp181
-rw-r--r--tests/auto/qsvgdevice/tst_qsvgdevice.cpp30
-rw-r--r--tests/auto/qsvggenerator/qsvggenerator.pro7
-rw-r--r--tests/auto/qsvggenerator/tst_qsvggenerator.cpp34
-rw-r--r--tests/auto/qsvgrenderer/qsvgrenderer.pro2
-rw-r--r--tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp144
-rw-r--r--tests/auto/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp32
-rw-r--r--tests/auto/qsysinfo/.gitignore1
-rw-r--r--tests/auto/qsysinfo/qsysinfo.pro6
-rw-r--r--tests/auto/qsysinfo/tst_qsysinfo.cpp52
-rw-r--r--tests/auto/qsystemsemaphore/test/test.pro13
-rw-r--r--tests/auto/qsystemsemaphore/tst_qsystemsemaphore.cpp61
-rw-r--r--tests/auto/qsystemtrayicon/tst_qsystemtrayicon.cpp30
-rw-r--r--tests/auto/qtabbar/tst_qtabbar.cpp73
-rw-r--r--tests/auto/qtableview/qtableview.pro2
-rw-r--r--tests/auto/qtableview/tst_qtableview.cpp769
-rw-r--r--tests/auto/qtablewidget/qtablewidget.pro12
-rw-r--r--tests/auto/qtablewidget/tst_qtablewidget.cpp51
-rw-r--r--tests/auto/qtabwidget/tst_qtabwidget.cpp36
-rw-r--r--tests/auto/qtconcurrentfilter/tst_qtconcurrentfilter.cpp32
-rw-r--r--tests/auto/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp59
-rw-r--r--tests/auto/qtconcurrentmap/functions.h30
-rw-r--r--tests/auto/qtconcurrentmap/tst_qtconcurrentmap.cpp30
-rw-r--r--tests/auto/qtconcurrentrun/tst_qtconcurrentrun.cpp30
-rw-r--r--tests/auto/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp30
-rw-r--r--tests/auto/qtcpserver/crashingServer/main.cpp38
-rw-r--r--tests/auto/qtcpserver/test/test.pro6
-rw-r--r--tests/auto/qtcpserver/tst_qtcpserver.cpp70
-rw-r--r--tests/auto/qtcpsocket/qtcpsocket.pro3
-rw-r--r--tests/auto/qtcpsocket/stressTest/Test.cpp30
-rw-r--r--tests/auto/qtcpsocket/stressTest/Test.h30
-rw-r--r--tests/auto/qtcpsocket/stressTest/main.cpp30
-rw-r--r--tests/auto/qtcpsocket/test/test.pro4
-rw-r--r--tests/auto/qtcpsocket/tst_qtcpsocket.cpp181
-rw-r--r--tests/auto/qtemporaryfile/qtemporaryfile.pro9
-rw-r--r--tests/auto/qtemporaryfile/tst_qtemporaryfile.cpp120
-rw-r--r--tests/auto/qtessellator/XrenderFake.h30
-rw-r--r--tests/auto/qtessellator/arc.cpp30
-rw-r--r--tests/auto/qtessellator/arc.h30
-rw-r--r--tests/auto/qtessellator/dataparser.cpp30
-rw-r--r--tests/auto/qtessellator/dataparser.h30
-rw-r--r--tests/auto/qtessellator/oldtessellator.cpp30
-rw-r--r--tests/auto/qtessellator/oldtessellator.h30
-rw-r--r--tests/auto/qtessellator/qnum.h30
-rw-r--r--tests/auto/qtessellator/sample_data.h30
-rw-r--r--tests/auto/qtessellator/simple.cpp30
-rw-r--r--tests/auto/qtessellator/simple.h30
-rw-r--r--tests/auto/qtessellator/testtessellator.cpp30
-rw-r--r--tests/auto/qtessellator/testtessellator.h30
-rw-r--r--tests/auto/qtessellator/tst_tessellator.cpp30
-rw-r--r--tests/auto/qtessellator/utils.cpp30
-rw-r--r--tests/auto/qtessellator/utils.h30
-rw-r--r--tests/auto/qtextblock/tst_qtextblock.cpp32
-rw-r--r--tests/auto/qtextboundaryfinder/qtextboundaryfinder.pro5
-rw-r--r--tests/auto/qtextboundaryfinder/tst_qtextboundaryfinder.cpp33
-rw-r--r--tests/auto/qtextbrowser/qtextbrowser.pro4
-rw-r--r--tests/auto/qtextbrowser/tst_qtextbrowser.cpp53
-rw-r--r--tests/auto/qtextcodec/echo/main.cpp30
-rw-r--r--tests/auto/qtextcodec/test/test.pro7
-rw-r--r--tests/auto/qtextcodec/tst_qtextcodec.cpp49
-rw-r--r--tests/auto/qtextcursor/tst_qtextcursor.cpp124
-rw-r--r--tests/auto/qtextdocument/common.h30
-rw-r--r--tests/auto/qtextdocument/qtextdocument.pro1
-rw-r--r--tests/auto/qtextdocument/tst_qtextdocument.cpp253
-rw-r--r--tests/auto/qtextdocumentfragment/tst_qtextdocumentfragment.cpp40
-rw-r--r--tests/auto/qtextdocumentlayout/tst_qtextdocumentlayout.cpp51
-rw-r--r--tests/auto/qtextedit/fullWidthSelection/centered-fully-selected.pngbin1232 -> 1232 bytes-rw-r--r--tests/auto/qtextedit/fullWidthSelection/centered-partly-selected.pngbin1231 -> 1231 bytes-rw-r--r--tests/auto/qtextedit/fullWidthSelection/last-char-on-line.pngbin1220 -> 1226 bytes-rw-r--r--tests/auto/qtextedit/fullWidthSelection/last-char-on-parag.pngbin1222 -> 1223 bytes-rw-r--r--tests/auto/qtextedit/fullWidthSelection/multiple-full-width-lines.pngbin1236 -> 1236 bytes-rw-r--r--tests/auto/qtextedit/fullWidthSelection/nowrap_long.pngbin1199 -> 1199 bytes-rw-r--r--tests/auto/qtextedit/fullWidthSelection/single-full-width-line.pngbin1235 -> 1225 bytes-rw-r--r--tests/auto/qtextedit/qtextedit.pro9
-rw-r--r--tests/auto/qtextedit/tst_qtextedit.cpp92
-rw-r--r--tests/auto/qtextformat/tst_qtextformat.cpp30
-rw-r--r--tests/auto/qtextlayout/qtextlayout.pro3
-rw-r--r--tests/auto/qtextlayout/tst_qtextlayout.cpp103
-rw-r--r--tests/auto/qtextlist/tst_qtextlist.cpp30
-rw-r--r--tests/auto/qtextobject/tst_qtextobject.cpp30
-rw-r--r--tests/auto/qtextodfwriter/qtextodfwriter.pro4
-rw-r--r--tests/auto/qtextodfwriter/tst_qtextodfwriter.cpp34
-rw-r--r--tests/auto/qtextpiecetable/tst_qtextpiecetable.cpp38
-rw-r--r--tests/auto/qtextscriptengine/generate/generate.pro1
-rw-r--r--tests/auto/qtextscriptengine/generate/main.cpp34
-rw-r--r--tests/auto/qtextscriptengine/tst_qtextscriptengine.cpp144
-rw-r--r--tests/auto/qtextstream/readAllStdinProcess/main.cpp30
-rw-r--r--tests/auto/qtextstream/readLineStdinProcess/main.cpp30
-rw-r--r--tests/auto/qtextstream/stdinProcess/main.cpp30
-rw-r--r--tests/auto/qtextstream/test/test.pro19
-rw-r--r--tests/auto/qtextstream/tst_qtextstream.cpp58
-rw-r--r--tests/auto/qtexttable/tst_qtexttable.cpp30
-rw-r--r--tests/auto/qthread/qthread.pro3
-rw-r--r--tests/auto/qthread/tst_qthread.cpp59
-rw-r--r--tests/auto/qthreadonce/qthreadonce.cpp30
-rw-r--r--tests/auto/qthreadonce/qthreadonce.h30
-rw-r--r--tests/auto/qthreadonce/tst_qthreadonce.cpp32
-rw-r--r--tests/auto/qthreadpool/tst_qthreadpool.cpp30
-rw-r--r--tests/auto/qthreadstorage/qthreadstorage.pro3
-rw-r--r--tests/auto/qthreadstorage/tst_qthreadstorage.cpp30
-rw-r--r--tests/auto/qtime/qtime.pro3
-rw-r--r--tests/auto/qtime/tst_qtime.cpp30
-rw-r--r--tests/auto/qtimeline/qtimeline.pro3
-rw-r--r--tests/auto/qtimeline/tst_qtimeline.cpp30
-rw-r--r--tests/auto/qtimer/qtimer.pro3
-rw-r--r--tests/auto/qtimer/tst_qtimer.cpp178
-rw-r--r--tests/auto/qtmd5/tst_qtmd5.cpp30
-rwxr-xr-xtests/auto/qtokenautomaton/generateTokenizers.sh41
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/basic/basic.cpp30
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/basic/basic.h30
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.cpp30
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.h30
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.cpp30
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.h30
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.xml30
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.cpp30
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.h30
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/noToString/noToString.cpp30
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/noToString/noToString.h30
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.cpp30
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.h30
-rw-r--r--tests/auto/qtokenautomaton/tst_qtokenautomaton.cpp30
-rw-r--r--tests/auto/qtoolbar/tst_qtoolbar.cpp159
-rw-r--r--tests/auto/qtoolbox/tst_qtoolbox.cpp30
-rw-r--r--tests/auto/qtoolbutton/tst_qtoolbutton.cpp36
-rw-r--r--tests/auto/qtooltip/tst_qtooltip.cpp72
-rw-r--r--tests/auto/qtouchevent/tst_qtouchevent.cpp30
-rw-r--r--tests/auto/qtransform/qtransform.pro2
-rw-r--r--tests/auto/qtransform/tst_qtransform.cpp30
-rw-r--r--tests/auto/qtransformedscreen/tst_qtransformedscreen.cpp30
-rw-r--r--tests/auto/qtranslator/qtranslator.pro2
-rw-r--r--tests/auto/qtranslator/tst_qtranslator.cpp30
-rw-r--r--tests/auto/qtreeview/tst_qtreeview.cpp321
-rw-r--r--tests/auto/qtreewidget/tst_qtreewidget.cpp331
-rw-r--r--tests/auto/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp40
-rw-r--r--tests/auto/qtwidgets/mainwindow.cpp30
-rw-r--r--tests/auto/qtwidgets/mainwindow.h30
-rw-r--r--tests/auto/qtwidgets/qtwidgets.pro1
-rw-r--r--tests/auto/qtwidgets/tst_qtwidgets.cpp52
-rw-r--r--tests/auto/qudpsocket/clientserver/main.cpp30
-rw-r--r--tests/auto/qudpsocket/test/test.pro2
-rw-r--r--tests/auto/qudpsocket/tst_qudpsocket.cpp171
-rw-r--r--tests/auto/qudpsocket/udpServer/main.cpp30
-rw-r--r--tests/auto/qudpsocket/udpServer/udpServer.pro1
-rw-r--r--tests/auto/qundogroup/tst_qundogroup.cpp30
-rw-r--r--tests/auto/qundostack/tst_qundostack.cpp30
-rw-r--r--tests/auto/qurl/idna-test.c41
-rw-r--r--tests/auto/qurl/qurl.pro5
-rw-r--r--tests/auto/qurl/tst_qurl.cpp154
-rw-r--r--tests/auto/quuid/quuid.pro3
-rw-r--r--tests/auto/quuid/tst_quuid.cpp56
-rw-r--r--tests/auto/qvariant/qvariant.pro1
-rw-r--r--tests/auto/qvariant/tst_qvariant.cpp360
-rw-r--r--tests/auto/qvarlengtharray/qvarlengtharray.pro3
-rw-r--r--tests/auto/qvarlengtharray/tst_qvarlengtharray.cpp30
-rw-r--r--tests/auto/qvector/qvector.pro4
-rw-r--r--tests/auto/qvector/tst_qvector.cpp44
-rw-r--r--tests/auto/qvectornd/qvectornd.pro2
-rw-r--r--tests/auto/qvectornd/tst_qvectornd.cpp2142
-rw-r--r--tests/auto/qvideoframe/qvideoframe.pro5
-rw-r--r--tests/auto/qvideoframe/tst_qvideoframe.cpp663
-rw-r--r--tests/auto/qvideosurfaceformat/qvideosurfaceformat.pro5
-rw-r--r--tests/auto/qvideosurfaceformat/tst_qvideosurfaceformat.cpp713
-rw-r--r--tests/auto/qwaitcondition/tst_qwaitcondition.cpp889
-rw-r--r--tests/auto/qwebelement/dummy.cpp30
-rw-r--r--tests/auto/qwebframe/dummy.cpp30
-rw-r--r--tests/auto/qwebhistory/dummy.cpp30
-rw-r--r--tests/auto/qwebhistoryinterface/dummy.cpp30
-rw-r--r--tests/auto/qwebpage/dummy.cpp30
-rw-r--r--tests/auto/qwidget/qwidget.pro11
-rw-r--r--tests/auto/qwidget/tst_qwidget.cpp1926
-rw-r--r--tests/auto/qwidget/tst_qwidget_mac_helpers.h30
-rw-r--r--tests/auto/qwidget/tst_qwidget_mac_helpers.mm41
-rw-r--r--tests/auto/qwidget_window/tst_qwidget_window.cpp54
-rw-r--r--tests/auto/qwidgetaction/tst_qwidgetaction.cpp34
-rw-r--r--tests/auto/qwindowsurface/tst_qwindowsurface.cpp88
-rw-r--r--tests/auto/qwineventnotifier/qwineventnotifier.pro3
-rw-r--r--tests/auto/qwineventnotifier/tst_qwineventnotifier.cpp30
-rw-r--r--tests/auto/qwizard/qwizard.pro1
-rw-r--r--tests/auto/qwizard/tst_qwizard.cpp30
-rw-r--r--tests/auto/qwmatrix/qwmatrix.pro2
-rw-r--r--tests/auto/qwmatrix/tst_qwmatrix.cpp30
-rw-r--r--tests/auto/qworkspace/tst_qworkspace.cpp33
-rw-r--r--tests/auto/qwritelocker/qwritelocker.pro2
-rw-r--r--tests/auto/qwritelocker/tst_qwritelocker.cpp30
-rw-r--r--tests/auto/qwsembedwidget/qwsembedwidget.pro3
-rw-r--r--tests/auto/qwsembedwidget/tst_qwsembedwidget.cpp30
-rw-r--r--tests/auto/qwsinputmethod/qwsinputmethod.pro3
-rw-r--r--tests/auto/qwsinputmethod/tst_qwsinputmethod.cpp30
-rw-r--r--tests/auto/qwswindowsystem/qwswindowsystem.pro3
-rw-r--r--tests/auto/qwswindowsystem/tst_qwswindowsystem.cpp31
-rw-r--r--tests/auto/qx11info/tst_qx11info.cpp30
-rw-r--r--tests/auto/qxml/qxml.pro2
-rw-r--r--tests/auto/qxml/tst_qxml.cpp30
-rw-r--r--tests/auto/qxmlformatter/qxmlformatter.pro2
-rw-r--r--tests/auto/qxmlformatter/tst_qxmlformatter.cpp30
-rw-r--r--tests/auto/qxmlinputsource/tst_qxmlinputsource.cpp30
-rw-r--r--tests/auto/qxmlitem/tst_qxmlitem.cpp30
-rw-r--r--tests/auto/qxmlname/tst_qxmlname.cpp30
-rw-r--r--tests/auto/qxmlnamepool/tst_qxmlnamepool.cpp30
-rw-r--r--tests/auto/qxmlnodemodelindex/tst_qxmlnodemodelindex.cpp32
-rw-r--r--tests/auto/qxmlquery/MessageSilencer.h30
-rw-r--r--tests/auto/qxmlquery/MessageValidator.cpp30
-rw-r--r--tests/auto/qxmlquery/MessageValidator.h30
-rw-r--r--tests/auto/qxmlquery/NetworkOverrider.h30
-rw-r--r--tests/auto/qxmlquery/PushBaseliner.h30
-rw-r--r--tests/auto/qxmlquery/TestFundament.cpp30
-rw-r--r--tests/auto/qxmlquery/TestFundament.h30
-rw-r--r--tests/auto/qxmlquery/qxmlquery.pro10
-rw-r--r--tests/auto/qxmlquery/tst_qxmlquery.cpp51
-rw-r--r--tests/auto/qxmlresultitems/tst_qxmlresultitems.cpp30
-rw-r--r--tests/auto/qxmlschema/tst_qxmlschema.cpp40
-rw-r--r--tests/auto/qxmlschemavalidator/tst_qxmlschemavalidator.cpp48
-rw-r--r--tests/auto/qxmlserializer/tst_qxmlserializer.cpp34
-rwxr-xr-xtests/auto/qxmlsimplereader/generate_ref_files.sh42
-rw-r--r--tests/auto/qxmlsimplereader/parser/main.cpp30
-rw-r--r--tests/auto/qxmlsimplereader/parser/parser.cpp30
-rw-r--r--tests/auto/qxmlsimplereader/parser/parser.h30
-rw-r--r--tests/auto/qxmlsimplereader/qxmlsimplereader.pro4
-rw-r--r--tests/auto/qxmlsimplereader/tst_qxmlsimplereader.cpp40
-rw-r--r--tests/auto/qxmlstream/data/doctypeEmptyMarkupDecl.ref7
-rw-r--r--tests/auto/qxmlstream/data/doctypeEmptyMarkupDecl.xml3
-rw-r--r--tests/auto/qxmlstream/qc14n.h30
-rw-r--r--tests/auto/qxmlstream/qxmlstream.pro2
-rwxr-xr-xtests/auto/qxmlstream/setupSuite.sh41
-rw-r--r--tests/auto/qxmlstream/tst_qxmlstream.cpp100
-rw-r--r--tests/auto/qzip/qzip.pro4
-rw-r--r--tests/auto/qzip/tst_qzip.cpp34
-rw-r--r--tests/auto/rcc/data/images.expected4
-rw-r--r--tests/auto/rcc/rcc.pro6
-rw-r--r--tests/auto/rcc/tst_rcc.cpp32
-rw-r--r--tests/auto/selftests/alive/qtestalive.cpp30
-rw-r--r--tests/auto/selftests/alive/tst_alive.cpp30
-rw-r--r--tests/auto/selftests/assert/tst_assert.cpp30
-rw-r--r--tests/auto/selftests/badxml/tst_badxml.cpp30
-rw-r--r--tests/auto/selftests/benchlibcallgrind/tst_benchlibcallgrind.cpp30
-rw-r--r--tests/auto/selftests/benchlibeventcounter/tst_benchlibeventcounter.cpp30
-rw-r--r--tests/auto/selftests/benchliboptions/tst_benchliboptions.cpp30
-rw-r--r--tests/auto/selftests/benchlibtickcounter/tst_benchlibtickcounter.cpp30
-rw-r--r--tests/auto/selftests/benchlibwalltime/tst_benchlibwalltime.cpp30
-rw-r--r--tests/auto/selftests/cmptest/tst_cmptest.cpp30
-rw-r--r--tests/auto/selftests/commandlinedata/tst_commandlinedata.cpp30
-rw-r--r--tests/auto/selftests/crashes/tst_crashes.cpp30
-rw-r--r--tests/auto/selftests/datatable/tst_datatable.cpp30
-rw-r--r--tests/auto/selftests/datetime/tst_datetime.cpp30
-rw-r--r--tests/auto/selftests/differentexec/tst_differentexec.cpp30
-rw-r--r--tests/auto/selftests/exceptionthrow/tst_exceptionthrow.cpp30
-rw-r--r--tests/auto/selftests/expected_cmptest.txt2
-rw-r--r--tests/auto/selftests/expected_crashes_3.txt2
-rw-r--r--tests/auto/selftests/expected_longstring.txt2
-rw-r--r--tests/auto/selftests/expected_maxwarnings.txt2
-rw-r--r--tests/auto/selftests/expected_skip.txt2
-rw-r--r--tests/auto/selftests/expected_xunit.txt4
-rw-r--r--tests/auto/selftests/expectfail/tst_expectfail.cpp30
-rw-r--r--tests/auto/selftests/failinit/tst_failinit.cpp30
-rw-r--r--tests/auto/selftests/failinitdata/tst_failinitdata.cpp30
-rw-r--r--tests/auto/selftests/fetchbogus/tst_fetchbogus.cpp30
-rw-r--r--tests/auto/selftests/globaldata/tst_globaldata.cpp30
-rw-r--r--tests/auto/selftests/longstring/tst_longstring.cpp30
-rw-r--r--tests/auto/selftests/maxwarnings/maxwarnings.cpp30
-rw-r--r--tests/auto/selftests/multiexec/tst_multiexec.cpp30
-rw-r--r--tests/auto/selftests/qexecstringlist/tst_qexecstringlist.cpp30
-rw-r--r--tests/auto/selftests/singleskip/tst_singleskip.cpp30
-rw-r--r--tests/auto/selftests/skip/tst_skip.cpp30
-rw-r--r--tests/auto/selftests/skipglobal/tst_skipglobal.cpp30
-rw-r--r--tests/auto/selftests/skipinit/tst_skipinit.cpp30
-rw-r--r--tests/auto/selftests/skipinitdata/tst_skipinitdata.cpp30
-rw-r--r--tests/auto/selftests/sleep/tst_sleep.cpp30
-rw-r--r--tests/auto/selftests/strcmp/tst_strcmp.cpp30
-rw-r--r--tests/auto/selftests/subtest/tst_subtest.cpp30
-rw-r--r--tests/auto/selftests/tst_selftests.cpp44
-rw-r--r--tests/auto/selftests/waitwithoutgui/tst_waitwithoutgui.cpp30
-rw-r--r--tests/auto/selftests/warnings/tst_warnings.cpp30
-rw-r--r--tests/auto/selftests/xunit/tst_xunit.cpp30
-rw-r--r--tests/auto/symbian/orientationchange/orientationchange.pro7
-rw-r--r--tests/auto/symbian/orientationchange/tst_orientationchange.cpp165
-rw-r--r--tests/auto/symbian/qmainexceptions/qmainexceptions.pro3
-rw-r--r--tests/auto/symbian/qmainexceptions/tst_qmainexceptions.cpp468
-rw-r--r--tests/auto/symbian/qsymbiantests.pro4
-rw-r--r--tests/auto/symbols/tst_symbols.cpp40
-rwxr-xr-xtests/auto/test.pl41
-rw-r--r--tests/auto/tests.xml2
-rw-r--r--tests/auto/uic/baseline/Dialog_with_Buttons_Bottom.ui.h5
-rw-r--r--tests/auto/uic/baseline/Dialog_with_Buttons_Right.ui.h5
-rw-r--r--tests/auto/uic/baseline/Dialog_without_Buttons.ui.h5
-rw-r--r--tests/auto/uic/baseline/Main_Window.ui.h5
-rw-r--r--tests/auto/uic/baseline/Widget.ui.h5
-rw-r--r--tests/auto/uic/baseline/addlinkdialog.ui.h5
-rw-r--r--tests/auto/uic/baseline/addtorrentform.ui.h5
-rw-r--r--tests/auto/uic/baseline/authenticationdialog.ui.h5
-rw-r--r--tests/auto/uic/baseline/backside.ui.h5
-rw-r--r--tests/auto/uic/baseline/batchtranslation.ui30
-rw-r--r--tests/auto/uic/baseline/batchtranslation.ui.h41
-rw-r--r--tests/auto/uic/baseline/bookmarkdialog.ui.h5
-rw-r--r--tests/auto/uic/baseline/bookwindow.ui.h5
-rw-r--r--tests/auto/uic/baseline/browserwidget.ui.h5
-rw-r--r--tests/auto/uic/baseline/calculator.ui.h5
-rw-r--r--tests/auto/uic/baseline/calculatorform.ui.h5
-rw-r--r--tests/auto/uic/baseline/certificateinfo.ui.h5
-rw-r--r--tests/auto/uic/baseline/chatdialog.ui.h5
-rw-r--r--tests/auto/uic/baseline/chatmainwindow.ui.h4
-rw-r--r--tests/auto/uic/baseline/chatsetnickname.ui.h5
-rw-r--r--tests/auto/uic/baseline/config.ui30
-rw-r--r--tests/auto/uic/baseline/config.ui.h41
-rw-r--r--tests/auto/uic/baseline/connectdialog.ui.h5
-rw-r--r--tests/auto/uic/baseline/controller.ui.h5
-rw-r--r--tests/auto/uic/baseline/cookies.ui.h5
-rw-r--r--tests/auto/uic/baseline/cookiesexceptions.ui.h5
-rw-r--r--tests/auto/uic/baseline/default.ui.h4
-rw-r--r--tests/auto/uic/baseline/dialog.ui.h5
-rw-r--r--tests/auto/uic/baseline/downloaditem.ui.h5
-rw-r--r--tests/auto/uic/baseline/downloads.ui.h5
-rw-r--r--tests/auto/uic/baseline/embeddeddialog.ui.h5
-rw-r--r--tests/auto/uic/baseline/filespage.ui.h5
-rw-r--r--tests/auto/uic/baseline/filternamedialog.ui.h5
-rw-r--r--tests/auto/uic/baseline/filterpage.ui.h5
-rw-r--r--tests/auto/uic/baseline/finddialog.ui30
-rw-r--r--tests/auto/uic/baseline/finddialog.ui.h41
-rw-r--r--tests/auto/uic/baseline/form.ui.h5
-rw-r--r--tests/auto/uic/baseline/formwindowsettings.ui30
-rw-r--r--tests/auto/uic/baseline/formwindowsettings.ui.h41
-rw-r--r--tests/auto/uic/baseline/generalpage.ui.h5
-rw-r--r--tests/auto/uic/baseline/gridpanel.ui.h5
-rw-r--r--tests/auto/uic/baseline/helpdialog.ui30
-rw-r--r--tests/auto/uic/baseline/helpdialog.ui.h41
-rw-r--r--tests/auto/uic/baseline/history.ui.h5
-rw-r--r--tests/auto/uic/baseline/identifierpage.ui.h5
-rw-r--r--tests/auto/uic/baseline/imagedialog.ui.h5
-rw-r--r--tests/auto/uic/baseline/inputpage.ui.h5
-rw-r--r--tests/auto/uic/baseline/installdialog.ui.h5
-rw-r--r--tests/auto/uic/baseline/languagesdialog.ui.h5
-rw-r--r--tests/auto/uic/baseline/listwidgeteditor.ui30
-rw-r--r--tests/auto/uic/baseline/listwidgeteditor.ui.h41
-rw-r--r--tests/auto/uic/baseline/mainwindow.ui.h4
-rw-r--r--tests/auto/uic/baseline/mainwindowbase.ui30
-rw-r--r--tests/auto/uic/baseline/mainwindowbase.ui.h41
-rw-r--r--tests/auto/uic/baseline/mydialog.ui.h5
-rw-r--r--tests/auto/uic/baseline/myform.ui.h5
-rw-r--r--tests/auto/uic/baseline/newactiondialog.ui30
-rw-r--r--tests/auto/uic/baseline/newactiondialog.ui.h41
-rw-r--r--tests/auto/uic/baseline/newdynamicpropertydialog.ui.h5
-rw-r--r--tests/auto/uic/baseline/newform.ui30
-rw-r--r--tests/auto/uic/baseline/newform.ui.h41
-rw-r--r--tests/auto/uic/baseline/orderdialog.ui30
-rw-r--r--tests/auto/uic/baseline/orderdialog.ui.h41
-rw-r--r--tests/auto/uic/baseline/outputpage.ui.h5
-rw-r--r--tests/auto/uic/baseline/pagefold.ui.h4
-rw-r--r--tests/auto/uic/baseline/paletteeditor.ui30
-rw-r--r--tests/auto/uic/baseline/paletteeditor.ui.h41
-rw-r--r--tests/auto/uic/baseline/paletteeditoradvancedbase.ui30
-rw-r--r--tests/auto/uic/baseline/paletteeditoradvancedbase.ui.h41
-rw-r--r--tests/auto/uic/baseline/passworddialog.ui.h5
-rw-r--r--tests/auto/uic/baseline/pathpage.ui.h5
-rw-r--r--tests/auto/uic/baseline/phrasebookbox.ui30
-rw-r--r--tests/auto/uic/baseline/phrasebookbox.ui.h41
-rw-r--r--tests/auto/uic/baseline/plugindialog.ui30
-rw-r--r--tests/auto/uic/baseline/plugindialog.ui.h41
-rw-r--r--tests/auto/uic/baseline/preferencesdialog.ui.h5
-rw-r--r--tests/auto/uic/baseline/previewconfigurationwidget.ui.h5
-rw-r--r--tests/auto/uic/baseline/previewdialogbase.ui.h5
-rw-r--r--tests/auto/uic/baseline/previewwidget.ui30
-rw-r--r--tests/auto/uic/baseline/previewwidget.ui.h41
-rw-r--r--tests/auto/uic/baseline/previewwidgetbase.ui30
-rw-r--r--tests/auto/uic/baseline/previewwidgetbase.ui.h41
-rw-r--r--tests/auto/uic/baseline/proxy.ui.h5
-rw-r--r--tests/auto/uic/baseline/qfiledialog.ui30
-rw-r--r--tests/auto/uic/baseline/qfiledialog.ui.h42
-rw-r--r--tests/auto/uic/baseline/qpagesetupwidget.ui.h5
-rw-r--r--tests/auto/uic/baseline/qprintpropertieswidget.ui.h5
-rw-r--r--tests/auto/uic/baseline/qprintsettingsoutput.ui.h5
-rw-r--r--tests/auto/uic/baseline/qprintwidget.ui.h5
-rw-r--r--tests/auto/uic/baseline/qsqlconnectiondialog.ui.h5
-rw-r--r--tests/auto/uic/baseline/qtgradientdialog.ui30
-rw-r--r--tests/auto/uic/baseline/qtgradientdialog.ui.h41
-rw-r--r--tests/auto/uic/baseline/qtgradienteditor.ui59
-rw-r--r--tests/auto/uic/baseline/qtgradienteditor.ui.h43
-rw-r--r--tests/auto/uic/baseline/qtgradientview.ui.h5
-rw-r--r--tests/auto/uic/baseline/qtgradientviewdialog.ui30
-rw-r--r--tests/auto/uic/baseline/qtgradientviewdialog.ui.h41
-rw-r--r--tests/auto/uic/baseline/qtresourceeditordialog.ui.h5
-rw-r--r--tests/auto/uic/baseline/qttoolbardialog.ui.h5
-rw-r--r--tests/auto/uic/baseline/querywidget.ui.h5
-rw-r--r--tests/auto/uic/baseline/remotecontrol.ui.h4
-rw-r--r--tests/auto/uic/baseline/saveformastemplate.ui30
-rw-r--r--tests/auto/uic/baseline/saveformastemplate.ui.h41
-rw-r--r--tests/auto/uic/baseline/settings.ui.h5
-rw-r--r--tests/auto/uic/baseline/signalslotdialog.ui.h5
-rw-r--r--tests/auto/uic/baseline/sslclient.ui.h5
-rw-r--r--tests/auto/uic/baseline/sslerrors.ui.h5
-rw-r--r--tests/auto/uic/baseline/statistics.ui30
-rw-r--r--tests/auto/uic/baseline/statistics.ui.h41
-rw-r--r--tests/auto/uic/baseline/stringlisteditor.ui30
-rw-r--r--tests/auto/uic/baseline/stringlisteditor.ui.h41
-rw-r--r--tests/auto/uic/baseline/stylesheeteditor.ui.h5
-rw-r--r--tests/auto/uic/baseline/tabbedbrowser.ui30
-rw-r--r--tests/auto/uic/baseline/tabbedbrowser.ui.h41
-rw-r--r--tests/auto/uic/baseline/tablewidgeteditor.ui30
-rw-r--r--tests/auto/uic/baseline/tablewidgeteditor.ui.h41
-rw-r--r--tests/auto/uic/baseline/tetrixwindow.ui.h5
-rw-r--r--tests/auto/uic/baseline/textfinder.ui.h5
-rw-r--r--tests/auto/uic/baseline/topicchooser.ui.h5
-rw-r--r--tests/auto/uic/baseline/translatedialog.ui30
-rw-r--r--tests/auto/uic/baseline/translatedialog.ui.h41
-rw-r--r--tests/auto/uic/baseline/translationsettings.ui.h5
-rw-r--r--tests/auto/uic/baseline/treewidgeteditor.ui30
-rw-r--r--tests/auto/uic/baseline/treewidgeteditor.ui.h41
-rw-r--r--tests/auto/uic/baseline/trpreviewtool.ui30
-rw-r--r--tests/auto/uic/baseline/trpreviewtool.ui.h40
-rw-r--r--tests/auto/uic/baseline/validators.ui.h5
-rw-r--r--tests/auto/uic/baseline/wateringconfigdialog.ui.h5
-rw-r--r--tests/auto/uic/tst_uic.cpp48
-rw-r--r--tests/auto/uic/uic.pro2
-rw-r--r--tests/auto/uic3/baseline/about.ui32
-rw-r--r--tests/auto/uic3/baseline/about.ui.432
-rw-r--r--tests/auto/uic3/baseline/actioneditor.ui32
-rw-r--r--tests/auto/uic3/baseline/actioneditor.ui.432
-rw-r--r--tests/auto/uic3/baseline/config.ui32
-rw-r--r--tests/auto/uic3/baseline/config.ui.432
-rw-r--r--tests/auto/uic3/baseline/configtoolboxdialog.ui32
-rw-r--r--tests/auto/uic3/baseline/configtoolboxdialog.ui.432
-rw-r--r--tests/auto/uic3/baseline/connectiondialog.ui32
-rw-r--r--tests/auto/uic3/baseline/connectiondialog.ui.432
-rw-r--r--tests/auto/uic3/baseline/createtemplate.ui32
-rw-r--r--tests/auto/uic3/baseline/createtemplate.ui.432
-rw-r--r--tests/auto/uic3/baseline/customwidgeteditor.ui32
-rw-r--r--tests/auto/uic3/baseline/customwidgeteditor.ui.432
-rw-r--r--tests/auto/uic3/baseline/customwidgeteditor.ui.err68
-rw-r--r--tests/auto/uic3/baseline/dbconnection.ui32
-rw-r--r--tests/auto/uic3/baseline/dbconnection.ui.432
-rw-r--r--tests/auto/uic3/baseline/dbconnectioneditor.ui32
-rw-r--r--tests/auto/uic3/baseline/dbconnectioneditor.ui.432
-rw-r--r--tests/auto/uic3/baseline/dbconnections.ui32
-rw-r--r--tests/auto/uic3/baseline/dbconnections.ui.432
-rw-r--r--tests/auto/uic3/baseline/dbconnections.ui.err10
-rw-r--r--tests/auto/uic3/baseline/editfunctions.ui32
-rw-r--r--tests/auto/uic3/baseline/editfunctions.ui.432
-rw-r--r--tests/auto/uic3/baseline/finddialog.ui32
-rw-r--r--tests/auto/uic3/baseline/finddialog.ui.432
-rw-r--r--tests/auto/uic3/baseline/formsettings.ui32
-rw-r--r--tests/auto/uic3/baseline/formsettings.ui.432
-rw-r--r--tests/auto/uic3/baseline/gotolinedialog.ui32
-rw-r--r--tests/auto/uic3/baseline/gotolinedialog.ui.432
-rw-r--r--tests/auto/uic3/baseline/gotolinedialog.ui.err2
-rw-r--r--tests/auto/uic3/baseline/helpdialog.ui32
-rw-r--r--tests/auto/uic3/baseline/helpdialog.ui.432
-rw-r--r--tests/auto/uic3/baseline/iconvieweditor.ui32
-rw-r--r--tests/auto/uic3/baseline/iconvieweditor.ui.432
-rw-r--r--tests/auto/uic3/baseline/listboxeditor.ui32
-rw-r--r--tests/auto/uic3/baseline/listboxeditor.ui.432
-rw-r--r--tests/auto/uic3/baseline/listeditor.ui30
-rw-r--r--tests/auto/uic3/baseline/listeditor.ui.430
-rw-r--r--tests/auto/uic3/baseline/listvieweditor.ui30
-rw-r--r--tests/auto/uic3/baseline/listvieweditor.ui.430
-rw-r--r--tests/auto/uic3/baseline/mainfilesettings.ui30
-rw-r--r--tests/auto/uic3/baseline/mainfilesettings.ui.430
-rw-r--r--tests/auto/uic3/baseline/mainwindowbase.ui30
-rw-r--r--tests/auto/uic3/baseline/mainwindowbase.ui.430
-rw-r--r--tests/auto/uic3/baseline/mainwindowwizard.ui30
-rw-r--r--tests/auto/uic3/baseline/mainwindowwizard.ui.430
-rw-r--r--tests/auto/uic3/baseline/mainwindowwizard.ui.err24
-rw-r--r--tests/auto/uic3/baseline/multilineeditor.ui30
-rw-r--r--tests/auto/uic3/baseline/multilineeditor.ui.430
-rw-r--r--tests/auto/uic3/baseline/newform.ui30
-rw-r--r--tests/auto/uic3/baseline/newform.ui.430
-rw-r--r--tests/auto/uic3/baseline/paletteeditor.ui30
-rw-r--r--tests/auto/uic3/baseline/paletteeditor.ui.430
-rw-r--r--tests/auto/uic3/baseline/paletteeditor.ui.err12
-rw-r--r--tests/auto/uic3/baseline/paletteeditoradvanced.ui30
-rw-r--r--tests/auto/uic3/baseline/paletteeditoradvanced.ui.430
-rw-r--r--tests/auto/uic3/baseline/paletteeditoradvanced.ui.err20
-rw-r--r--tests/auto/uic3/baseline/paletteeditoradvancedbase.ui30
-rw-r--r--tests/auto/uic3/baseline/paletteeditoradvancedbase.ui.430
-rw-r--r--tests/auto/uic3/baseline/paletteeditoradvancedbase.ui.err16
-rw-r--r--tests/auto/uic3/baseline/pixmapcollectioneditor.ui30
-rw-r--r--tests/auto/uic3/baseline/pixmapcollectioneditor.ui.430
-rw-r--r--tests/auto/uic3/baseline/pixmapfunction.ui30
-rw-r--r--tests/auto/uic3/baseline/pixmapfunction.ui.430
-rw-r--r--tests/auto/uic3/baseline/preferences.ui30
-rw-r--r--tests/auto/uic3/baseline/preferences.ui.430
-rw-r--r--tests/auto/uic3/baseline/previewwidget.ui30
-rw-r--r--tests/auto/uic3/baseline/previewwidget.ui.430
-rw-r--r--tests/auto/uic3/baseline/previewwidgetbase.ui30
-rw-r--r--tests/auto/uic3/baseline/previewwidgetbase.ui.430
-rw-r--r--tests/auto/uic3/baseline/projectsettings.ui30
-rw-r--r--tests/auto/uic3/baseline/projectsettings.ui.430
-rw-r--r--tests/auto/uic3/baseline/qactivexselect.ui30
-rw-r--r--tests/auto/uic3/baseline/qactivexselect.ui.430
-rw-r--r--tests/auto/uic3/baseline/replacedialog.ui30
-rw-r--r--tests/auto/uic3/baseline/replacedialog.ui.430
-rw-r--r--tests/auto/uic3/baseline/richtextfontdialog.ui30
-rw-r--r--tests/auto/uic3/baseline/richtextfontdialog.ui.430
-rw-r--r--tests/auto/uic3/baseline/richtextfontdialog.ui.err2
-rw-r--r--tests/auto/uic3/baseline/settingsdialog.ui30
-rw-r--r--tests/auto/uic3/baseline/settingsdialog.ui.430
-rw-r--r--tests/auto/uic3/baseline/settingsdialog.ui.err2
-rw-r--r--tests/auto/uic3/baseline/sqlformwizard.ui30
-rw-r--r--tests/auto/uic3/baseline/sqlformwizard.ui.430
-rw-r--r--tests/auto/uic3/baseline/startdialog.ui30
-rw-r--r--tests/auto/uic3/baseline/startdialog.ui.430
-rw-r--r--tests/auto/uic3/baseline/statistics.ui30
-rw-r--r--tests/auto/uic3/baseline/statistics.ui.430
-rw-r--r--tests/auto/uic3/baseline/tabbedbrowser.ui30
-rw-r--r--tests/auto/uic3/baseline/tabbedbrowser.ui.430
-rw-r--r--tests/auto/uic3/baseline/tableeditor.ui30
-rw-r--r--tests/auto/uic3/baseline/tableeditor.ui.430
-rw-r--r--tests/auto/uic3/baseline/topicchooser.ui30
-rw-r--r--tests/auto/uic3/baseline/topicchooser.ui.430
-rw-r--r--tests/auto/uic3/baseline/variabledialog.ui30
-rw-r--r--tests/auto/uic3/baseline/variabledialog.ui.430
-rw-r--r--tests/auto/uic3/baseline/wizardeditor.ui56
-rw-r--r--tests/auto/uic3/baseline/wizardeditor.ui.432
-rw-r--r--tests/auto/uic3/tst_uic3.cpp30
-rw-r--r--tests/auto/uiloader/baseline/batchtranslation.ui30
-rw-r--r--tests/auto/uiloader/baseline/config.ui30
-rw-r--r--tests/auto/uiloader/baseline/css_frames.ui45
-rw-r--r--tests/auto/uiloader/baseline/css_itemview_task258382.ui179
-rw-r--r--tests/auto/uiloader/baseline/css_tab_border.ui104
-rw-r--r--tests/auto/uiloader/baseline/css_tab_closebutton.ui128
-rw-r--r--tests/auto/uiloader/baseline/finddialog.ui30
-rw-r--r--tests/auto/uiloader/baseline/formwindowsettings.ui30
-rw-r--r--tests/auto/uiloader/baseline/helpdialog.ui30
-rw-r--r--tests/auto/uiloader/baseline/listwidgeteditor.ui30
-rw-r--r--tests/auto/uiloader/baseline/mainwindowbase.ui30
-rw-r--r--tests/auto/uiloader/baseline/newactiondialog.ui30
-rw-r--r--tests/auto/uiloader/baseline/newform.ui30
-rw-r--r--tests/auto/uiloader/baseline/orderdialog.ui30
-rw-r--r--tests/auto/uiloader/baseline/paletteeditor.ui30
-rw-r--r--tests/auto/uiloader/baseline/paletteeditoradvancedbase.ui30
-rw-r--r--tests/auto/uiloader/baseline/phrasebookbox.ui30
-rw-r--r--tests/auto/uiloader/baseline/plugindialog.ui30
-rw-r--r--tests/auto/uiloader/baseline/previewwidget.ui30
-rw-r--r--tests/auto/uiloader/baseline/previewwidgetbase.ui30
-rw-r--r--tests/auto/uiloader/baseline/qfiledialog.ui30
-rw-r--r--tests/auto/uiloader/baseline/qtgradientdialog.ui30
-rw-r--r--tests/auto/uiloader/baseline/qtgradienteditor.ui30
-rw-r--r--tests/auto/uiloader/baseline/qtgradientviewdialog.ui30
-rw-r--r--tests/auto/uiloader/baseline/saveformastemplate.ui30
-rw-r--r--tests/auto/uiloader/baseline/statistics.ui30
-rw-r--r--tests/auto/uiloader/baseline/stringlisteditor.ui30
-rw-r--r--tests/auto/uiloader/baseline/tabbedbrowser.ui30
-rw-r--r--tests/auto/uiloader/baseline/tablewidgeteditor.ui30
-rw-r--r--tests/auto/uiloader/baseline/translatedialog.ui30
-rw-r--r--tests/auto/uiloader/baseline/treewidgeteditor.ui30
-rw-r--r--tests/auto/uiloader/baseline/trpreviewtool.ui30
-rw-r--r--tests/auto/uiloader/tst_screenshot/main.cpp30
-rw-r--r--tests/auto/uiloader/uiloader/tst_uiloader.cpp33
-rw-r--r--tests/auto/uiloader/uiloader/uiloader.cpp30
-rw-r--r--tests/auto/uiloader/uiloader/uiloader.h30
-rw-r--r--tests/auto/uiloader/uiloader/uiloader.pro4
-rw-r--r--tests/auto/utf8/tst_utf8.cpp41
-rw-r--r--tests/auto/windowsmobile/test/ddhelper.cpp40
-rw-r--r--tests/auto/windowsmobile/test/ddhelper.h41
-rw-r--r--tests/auto/windowsmobile/test/test.pro2
-rw-r--r--tests/auto/windowsmobile/test/testQMenuBar_current.pngbin23702 -> 22964 bytes-rw-r--r--tests/auto/windowsmobile/test/testSimpleWidget_current.pngbin21940 -> 23841 bytes-rw-r--r--tests/auto/windowsmobile/test/tst_windowsmobile.cpp61
-rw-r--r--tests/auto/windowsmobile/testQMenuBar/main.cpp43
-rw-r--r--tests/auto/windowsmobile/testQMenuBar/testQMenuBar.pro3
-rw-r--r--tests/auto/xmlpatterns.pri5
-rw-r--r--tests/auto/xmlpatterns/stderrBaselines/Anunboundexternalvariable.txt2
-rw-r--r--tests/auto/xmlpatterns/tst_xmlpatterns.cpp46
-rw-r--r--tests/auto/xmlpatterns/xmlpatterns.pro6
-rwxr-xr-xtests/auto/xmlpatternsdiagnosticsts/TestSuite/validate.sh41
-rw-r--r--tests/auto/xmlpatternsdiagnosticsts/test/test.pro4
-rw-r--r--tests/auto/xmlpatternsdiagnosticsts/test/tst_xmlpatternsdiagnosticsts.cpp30
-rw-r--r--tests/auto/xmlpatternsschema/tst_xmlpatternsschema.cpp42
-rwxr-xr-xtests/auto/xmlpatternsschemats/TESTSUITE/updateSuite.sh40
-rw-r--r--tests/auto/xmlpatternsschemats/tst_xmlpatternsschemats.cpp36
-rw-r--r--tests/auto/xmlpatternsschemats/xmlpatternsschemats.pro8
-rw-r--r--tests/auto/xmlpatternsvalidator/tst_xmlpatternsvalidator.cpp34
-rw-r--r--tests/auto/xmlpatternsview/test/tst_xmlpatternsview.cpp30
-rw-r--r--tests/auto/xmlpatternsview/view/FunctionSignaturesView.cpp59
-rw-r--r--tests/auto/xmlpatternsview/view/FunctionSignaturesView.h59
-rw-r--r--tests/auto/xmlpatternsview/view/MainWindow.cpp59
-rw-r--r--tests/auto/xmlpatternsview/view/MainWindow.h59
-rw-r--r--tests/auto/xmlpatternsview/view/TestCaseView.cpp59
-rw-r--r--tests/auto/xmlpatternsview/view/TestCaseView.h59
-rw-r--r--tests/auto/xmlpatternsview/view/TestResultView.cpp59
-rw-r--r--tests/auto/xmlpatternsview/view/TestResultView.h59
-rw-r--r--tests/auto/xmlpatternsview/view/TreeSortFilter.cpp59
-rw-r--r--tests/auto/xmlpatternsview/view/TreeSortFilter.h59
-rw-r--r--tests/auto/xmlpatternsview/view/UserTestCase.cpp59
-rw-r--r--tests/auto/xmlpatternsview/view/UserTestCase.h59
-rw-r--r--tests/auto/xmlpatternsview/view/XDTItemItem.cpp59
-rw-r--r--tests/auto/xmlpatternsview/view/XDTItemItem.h59
-rw-r--r--tests/auto/xmlpatternsview/view/main.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/ASTItem.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/ASTItem.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/DebugExpressionFactory.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/DebugExpressionFactory.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/ErrorHandler.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/ErrorHandler.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/ErrorItem.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/ErrorItem.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/ExitCode.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/ExpressionInfo.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/ExpressionInfo.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/ExpressionNamer.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/ExpressionNamer.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/ExternalSourceLoader.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/ExternalSourceLoader.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/Global.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/Global.h61
-rw-r--r--tests/auto/xmlpatternsxqts/lib/ResultThreader.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/ResultThreader.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TestBaseLine.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TestBaseLine.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TestCase.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TestCase.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TestContainer.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TestContainer.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TestGroup.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TestGroup.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TestItem.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TestResult.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TestResult.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TestResultHandler.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TestResultHandler.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TestSuite.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TestSuite.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TestSuiteHandler.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TestSuiteHandler.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TestSuiteResult.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TestSuiteResult.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TreeItem.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TreeItem.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TreeModel.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/TreeModel.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/Worker.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/Worker.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/XMLWriter.cpp61
-rw-r--r--tests/auto/xmlpatternsxqts/lib/XMLWriter.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/XQTSTestCase.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/XQTSTestCase.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/XSDTSTestCase.cpp30
-rw-r--r--tests/auto/xmlpatternsxqts/lib/XSDTSTestCase.h32
-rw-r--r--tests/auto/xmlpatternsxqts/lib/XSDTestSuiteHandler.cpp32
-rw-r--r--tests/auto/xmlpatternsxqts/lib/XSDTestSuiteHandler.h30
-rw-r--r--tests/auto/xmlpatternsxqts/lib/XSLTTestSuiteHandler.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/XSLTTestSuiteHandler.h59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/docs/XMLIndenterExample.cpp30
-rw-r--r--tests/auto/xmlpatternsxqts/lib/docs/XMLWriterExample.cpp30
-rw-r--r--tests/auto/xmlpatternsxqts/lib/lib.pro6
-rw-r--r--tests/auto/xmlpatternsxqts/lib/tests/XMLWriterTest.cpp59
-rw-r--r--tests/auto/xmlpatternsxqts/lib/tests/XMLWriterTest.h59
-rwxr-xr-xtests/auto/xmlpatternsxqts/summarizeBaseline.sh40
-rw-r--r--tests/auto/xmlpatternsxqts/test/test.pro2
-rw-r--r--tests/auto/xmlpatternsxqts/test/tst_suitetest.cpp30
-rw-r--r--tests/auto/xmlpatternsxqts/test/tst_suitetest.h30
-rw-r--r--tests/auto/xmlpatternsxqts/test/tst_xmlpatternsxqts.cpp30
-rw-r--r--tests/auto/xmlpatternsxqts/xmlpatternsxqts.pro2
-rwxr-xr-xtests/auto/xmlpatternsxslts/XSLTS/updateSuite.sh42
-rw-r--r--tests/auto/xmlpatternsxslts/tst_xmlpatternsxslts.cpp30
-rw-r--r--tests/benchmarks/benchmarks.pro6
-rw-r--r--tests/benchmarks/blendbench/main.cpp30
-rw-r--r--tests/benchmarks/containers-associative/main.cpp30
-rw-r--r--tests/benchmarks/containers-sequential/main.cpp30
-rw-r--r--tests/benchmarks/events/main.cpp30
-rw-r--r--tests/benchmarks/opengl/main.cpp30
-rw-r--r--tests/benchmarks/qanimation/dummyanimation.cpp41
-rw-r--r--tests/benchmarks/qanimation/dummyanimation.h43
-rw-r--r--tests/benchmarks/qanimation/dummyobject.cpp43
-rw-r--r--tests/benchmarks/qanimation/dummyobject.h43
-rw-r--r--tests/benchmarks/qanimation/main.cpp41
-rw-r--r--tests/benchmarks/qanimation/rectanimation.cpp50
-rw-r--r--tests/benchmarks/qanimation/rectanimation.h44
-rw-r--r--tests/benchmarks/qapplication/main.cpp60
-rw-r--r--tests/benchmarks/qbytearray/main.cpp30
-rw-r--r--tests/benchmarks/qdir/tst_qdir.cpp81
-rw-r--r--tests/benchmarks/qdiriterator/main.cpp30
-rw-r--r--tests/benchmarks/qdiriterator/qfilesystemiterator.cpp30
-rw-r--r--tests/benchmarks/qdiriterator/qfilesystemiterator.h30
-rw-r--r--tests/benchmarks/qfile/main.cpp31
-rw-r--r--tests/benchmarks/qfile_vs_qnetworkaccessmanager/main.cpp158
-rw-r--r--tests/benchmarks/qfile_vs_qnetworkaccessmanager/qfile_vs_qnetworkaccessmanager.pro13
-rw-r--r--tests/benchmarks/qfileinfo/main.cpp83
-rw-r--r--tests/benchmarks/qfileinfo/qfileinfo.pro12
-rw-r--r--tests/benchmarks/qgraphicsanchorlayout/qgraphicsanchorlayout.pro6
-rw-r--r--tests/benchmarks/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp433
-rw-r--r--tests/benchmarks/qgraphicsitem/tst_qgraphicsitem.cpp48
-rw-r--r--tests/benchmarks/qgraphicsscene/tst_qgraphicsscene.cpp35
-rw-r--r--tests/benchmarks/qgraphicsview/benchapps/chipTest/chip.cpp30
-rw-r--r--tests/benchmarks/qgraphicsview/benchapps/chipTest/chip.h30
-rw-r--r--tests/benchmarks/qgraphicsview/benchapps/chipTest/main.cpp30
-rw-r--r--tests/benchmarks/qgraphicsview/benchapps/chipTest/mainwindow.cpp30
-rw-r--r--tests/benchmarks/qgraphicsview/benchapps/chipTest/mainwindow.h30
-rw-r--r--tests/benchmarks/qgraphicsview/benchapps/chipTest/view.cpp30
-rw-r--r--tests/benchmarks/qgraphicsview/benchapps/chipTest/view.h30
-rw-r--r--tests/benchmarks/qgraphicsview/benchapps/moveItems/main.cpp30
-rw-r--r--tests/benchmarks/qgraphicsview/benchapps/scrolltest/main.cpp32
-rw-r--r--tests/benchmarks/qgraphicsview/chiptester/chip.cpp30
-rw-r--r--tests/benchmarks/qgraphicsview/chiptester/chip.h30
-rw-r--r--tests/benchmarks/qgraphicsview/chiptester/chiptester.cpp30
-rw-r--r--tests/benchmarks/qgraphicsview/chiptester/chiptester.h30
-rw-r--r--tests/benchmarks/qgraphicsview/tst_qgraphicsview.cpp30
-rw-r--r--tests/benchmarks/qgraphicswidget/tst_qgraphicswidget.cpp34
-rw-r--r--tests/benchmarks/qimagereader/tst_qimagereader.cpp30
-rw-r--r--tests/benchmarks/qiodevice/main.cpp32
-rwxr-xr-xtests/benchmarks/qiodevice/qiodevice.pro1
-rw-r--r--tests/benchmarks/qmatrix4x4/tst_qmatrix4x4.cpp457
-rw-r--r--tests/benchmarks/qmetaobject/main.cpp30
-rw-r--r--tests/benchmarks/qnetworkreply/main.cpp74
-rw-r--r--tests/benchmarks/qnetworkreply/qnetworkreply.pro2
-rw-r--r--tests/benchmarks/qnetworkreply/tst_qnetworkreply.cpp642
-rw-r--r--tests/benchmarks/qobject/main.cpp30
-rw-r--r--tests/benchmarks/qobject/object.cpp30
-rw-r--r--tests/benchmarks/qobject/object.h30
-rw-r--r--tests/benchmarks/qpainter/tst_qpainter.cpp30
-rw-r--r--tests/benchmarks/qpixmap/tst_qpixmap.cpp30
-rw-r--r--tests/benchmarks/qpixmapcache/tst_qpixmapcache.cpp30
-rw-r--r--tests/benchmarks/qquaternion/tst_qquaternion.cpp30
-rw-r--r--tests/benchmarks/qrect/main.cpp30
-rw-r--r--tests/benchmarks/qregexp/main.cpp30
-rw-r--r--tests/benchmarks/qregion/main.cpp30
-rw-r--r--tests/benchmarks/qscriptclass/qscriptclass.pro7
-rw-r--r--tests/benchmarks/qscriptclass/tst_qscriptclass.cpp511
-rw-r--r--tests/benchmarks/qscriptengine/tst_qscriptengine.cpp64
-rw-r--r--tests/benchmarks/qscriptvalue/tst_qscriptvalue.cpp42
-rw-r--r--tests/benchmarks/qstring/main.cpp30
-rw-r--r--tests/benchmarks/qstringbuilder/main.cpp40
-rw-r--r--tests/benchmarks/qstringlist/main.cpp142
-rw-r--r--tests/benchmarks/qstylesheetstyle/main.cpp30
-rw-r--r--tests/benchmarks/qsvgrenderer/data/tiger.svg730
-rw-r--r--tests/benchmarks/qsvgrenderer/qsvgrenderer.pro9
-rw-r--r--tests/benchmarks/qsvgrenderer/qsvgrenderer.qrc6
-rw-r--r--tests/benchmarks/qsvgrenderer/tst_qsvgrenderer.cpp103
-rw-r--r--tests/benchmarks/qtableview/tst_qtableview.cpp204
-rw-r--r--tests/benchmarks/qtemporaryfile/main.cpp30
-rw-r--r--tests/benchmarks/qtestlib-simple/main.cpp30
-rw-r--r--tests/benchmarks/qtransform/tst_qtransform.cpp30
-rw-r--r--tests/benchmarks/qtwidgets/mainwindow.cpp30
-rw-r--r--tests/benchmarks/qtwidgets/mainwindow.h30
-rw-r--r--tests/benchmarks/qtwidgets/tst_qtwidgets.cpp30
-rw-r--r--tests/benchmarks/qvariant/tst_qvariant.cpp30
-rw-r--r--tests/benchmarks/qvector/main.cpp426
-rw-r--r--tests/benchmarks/qvector/outofline.cpp41
-rw-r--r--tests/benchmarks/qvector/qrawvector.h742
-rw-r--r--tests/benchmarks/qvector/qvector.pro6
-rw-r--r--tests/benchmarks/qwidget/tst_qwidget.cpp30
-rw-r--r--tests/manual/gestures/graphicsview/gestures.cpp131
-rw-r--r--tests/manual/gestures/graphicsview/gestures.h78
-rw-r--r--tests/manual/gestures/graphicsview/graphicsview.pro17
-rw-r--r--tests/manual/gestures/graphicsview/imageitem.cpp93
-rw-r--r--tests/manual/gestures/graphicsview/imageitem.h77
-rw-r--r--tests/manual/gestures/graphicsview/main.cpp230
-rw-r--r--tests/manual/gestures/graphicsview/mousepangesturerecognizer.cpp107
-rw-r--r--tests/manual/gestures/graphicsview/mousepangesturerecognizer.h57
-rw-r--r--tests/manual/gestures/scrollarea/main.cpp241
-rw-r--r--tests/manual/gestures/scrollarea/mousepangesturerecognizer.cpp99
-rw-r--r--tests/manual/gestures/scrollarea/mousepangesturerecognizer.h57
-rw-r--r--tests/manual/gestures/scrollarea/scrollarea.pro3
-rw-r--r--tests/manual/keypadnavigation/keypadnavigation.pro2
-rw-r--r--tests/manual/keypadnavigation/keypadnavigation.ui1342
-rw-r--r--tests/manual/keypadnavigation/main.cpp190
-rw-r--r--tests/manual/qcursor/allcursors/allcursors.pro16
-rw-r--r--tests/manual/qcursor/allcursors/main.cpp54
-rw-r--r--tests/manual/qcursor/allcursors/mainwindow.cpp84
-rw-r--r--tests/manual/qcursor/allcursors/mainwindow.h68
-rw-r--r--tests/manual/qcursor/allcursors/mainwindow.ui210
-rw-r--r--tests/manual/qcursor/grab_override/data/monkey_on_64x64.pngbin0 -> 3479 bytes-rw-r--r--tests/manual/qcursor/grab_override/grab_override.pro18
-rw-r--r--tests/manual/qcursor/grab_override/images.qrc6
-rw-r--r--tests/manual/qcursor/grab_override/main.cpp54
-rw-r--r--tests/manual/qcursor/grab_override/mainwindow.cpp141
-rw-r--r--tests/manual/qcursor/grab_override/mainwindow.h76
-rw-r--r--tests/manual/qcursor/grab_override/mainwindow.ui97
-rw-r--r--tests/manual/qcursor/qcursor.pro3
-rw-r--r--tests/manual/qdesktopwidget/main.cpp30
-rw-r--r--tests/manual/qhttpnetworkconnection/main.cpp81
-rw-r--r--tests/manual/qhttpnetworkconnection/qhttpnetworkconnection.pro13
-rw-r--r--tests/manual/qimagereader/Qt_logostrap_CMYK.jpgbin0 -> 252255 bytes-rw-r--r--tests/manual/qimagereader/main.cpp99
-rw-r--r--tests/manual/qimagereader/qimagereader.pro8
-rw-r--r--tests/manual/qtabletevent/device_information/main.cpp50
-rw-r--r--tests/manual/qtabletevent/device_information/qtabletevent.pro (renamed from tests/manual/qtabletevent/qtabletevent.pro)0
-rw-r--r--tests/manual/qtabletevent/device_information/tabletwidget.cpp192
-rw-r--r--tests/manual/qtabletevent/device_information/tabletwidget.h73
-rw-r--r--tests/manual/qtabletevent/event_compression/event_compression.pro7
-rw-r--r--tests/manual/qtabletevent/event_compression/main.cpp58
-rw-r--r--tests/manual/qtabletevent/event_compression/mousestatwidget.cpp99
-rw-r--r--tests/manual/qtabletevent/event_compression/mousestatwidget.h69
-rw-r--r--tests/manual/qtabletevent/main.cpp9
-rw-r--r--tests/manual/qtabletevent/tabletwidget.cpp150
-rw-r--r--tests/manual/qtabletevent/tabletwidget.h32
-rw-r--r--tests/manual/qtouchevent/main.cpp41
-rw-r--r--tests/manual/qtouchevent/touchwidget.cpp41
-rw-r--r--tests/manual/qtouchevent/touchwidget.h41
-rw-r--r--tests/manual/textrendering/glyphshaping/glyphshaping.pro5
-rw-r--r--tests/manual/textrendering/glyphshaping/glyphshaping_data.xml251
-rw-r--r--tests/manual/textrendering/glyphshaping/main.cpp269
-rw-r--r--tests/manual/textrendering/textperformance/main.cpp231
-rw-r--r--tests/manual/textrendering/textperformance/textperformance.pro1
-rw-r--r--tests/manual/windowflags/controllerwindow.cpp30
-rw-r--r--tests/manual/windowflags/controllerwindow.h30
-rw-r--r--tests/manual/windowflags/main.cpp30
-rw-r--r--tests/manual/windowflags/previewwindow.cpp50
-rw-r--r--tests/manual/windowflags/previewwindow.h36
-rw-r--r--tests/shared/util.h30
-rw-r--r--tools/activeqt/dumpcpp/main.cpp30
-rw-r--r--tools/activeqt/dumpdoc/main.cpp30
-rw-r--r--tools/activeqt/testcon/ambientproperties.cpp30
-rw-r--r--tools/activeqt/testcon/ambientproperties.h30
-rw-r--r--tools/activeqt/testcon/ambientproperties.ui30
-rw-r--r--tools/activeqt/testcon/changeproperties.cpp30
-rw-r--r--tools/activeqt/testcon/changeproperties.h30
-rw-r--r--tools/activeqt/testcon/changeproperties.ui30
-rw-r--r--tools/activeqt/testcon/controlinfo.cpp30
-rw-r--r--tools/activeqt/testcon/controlinfo.h30
-rw-r--r--tools/activeqt/testcon/controlinfo.ui30
-rw-r--r--tools/activeqt/testcon/docuwindow.cpp30
-rw-r--r--tools/activeqt/testcon/docuwindow.h30
-rw-r--r--tools/activeqt/testcon/invokemethod.cpp30
-rw-r--r--tools/activeqt/testcon/invokemethod.h30
-rw-r--r--tools/activeqt/testcon/invokemethod.ui30
-rw-r--r--tools/activeqt/testcon/main.cpp30
-rw-r--r--tools/activeqt/testcon/mainwindow.cpp50
-rw-r--r--tools/activeqt/testcon/mainwindow.h30
-rw-r--r--tools/activeqt/testcon/mainwindow.ui30
-rw-r--r--tools/activeqt/testcon/scripts/perlscript.pl41
-rw-r--r--tools/activeqt/testcon/scripts/pythonscript.py42
-rw-r--r--tools/assistant/assistant.pro4
-rw-r--r--tools/assistant/compat/Info_mac.plist18
-rw-r--r--tools/assistant/compat/LICENSE.GPL280
-rw-r--r--tools/assistant/compat/assistant.icnsbin162568 -> 0 bytes-rw-r--r--tools/assistant/compat/assistant.icobin355574 -> 0 bytes-rw-r--r--tools/assistant/compat/assistant.pro84
-rw-r--r--tools/assistant/compat/assistant.qrc37
-rw-r--r--tools/assistant/compat/assistant.rc1
-rw-r--r--tools/assistant/compat/compat.pro84
-rw-r--r--tools/assistant/compat/config.cpp438
-rw-r--r--tools/assistant/compat/config.h165
-rw-r--r--tools/assistant/compat/docuparser.cpp433
-rw-r--r--tools/assistant/compat/docuparser.h166
-rw-r--r--tools/assistant/compat/fontsettingsdialog.cpp137
-rw-r--r--tools/assistant/compat/fontsettingsdialog.h77
-rw-r--r--tools/assistant/compat/helpdialog.cpp1331
-rw-r--r--tools/assistant/compat/helpdialog.h184
-rw-r--r--tools/assistant/compat/helpdialog.ui404
-rw-r--r--tools/assistant/compat/helpwindow.cpp247
-rw-r--r--tools/assistant/compat/helpwindow.h100
-rw-r--r--tools/assistant/compat/images/assistant-128.pngbin6448 -> 0 bytes-rw-r--r--tools/assistant/compat/images/assistant.pngbin2034 -> 0 bytes-rw-r--r--tools/assistant/compat/images/close.pngbin406 -> 0 bytes-rw-r--r--tools/assistant/compat/images/designer.pngbin1282 -> 0 bytes-rw-r--r--tools/assistant/compat/images/linguist.pngbin1382 -> 0 bytes-rw-r--r--tools/assistant/compat/images/mac/addtab.pngbin469 -> 0 bytes-rw-r--r--tools/assistant/compat/images/mac/book.pngbin1477 -> 0 bytes-rw-r--r--tools/assistant/compat/images/mac/closetab.pngbin516 -> 0 bytes-rw-r--r--tools/assistant/compat/images/mac/editcopy.pngbin1468 -> 0 bytes-rw-r--r--tools/assistant/compat/images/mac/find.pngbin1836 -> 0 bytes-rw-r--r--tools/assistant/compat/images/mac/home.pngbin1807 -> 0 bytes-rw-r--r--tools/assistant/compat/images/mac/next.pngbin1310 -> 0 bytes-rw-r--r--tools/assistant/compat/images/mac/prev.pngbin1080 -> 0 bytes-rw-r--r--tools/assistant/compat/images/mac/print.pngbin2087 -> 0 bytes-rw-r--r--tools/assistant/compat/images/mac/synctoc.pngbin1838 -> 0 bytes-rw-r--r--tools/assistant/compat/images/mac/whatsthis.pngbin1586 -> 0 bytes-rw-r--r--tools/assistant/compat/images/mac/zoomin.pngbin1696 -> 0 bytes-rw-r--r--tools/assistant/compat/images/mac/zoomout.pngbin1662 -> 0 bytes-rw-r--r--tools/assistant/compat/images/qt.pngbin1422 -> 0 bytes-rw-r--r--tools/assistant/compat/images/win/addtab.pngbin314 -> 0 bytes-rw-r--r--tools/assistant/compat/images/win/book.pngbin1109 -> 0 bytes-rw-r--r--tools/assistant/compat/images/win/closetab.pngbin375 -> 0 bytes-rw-r--r--tools/assistant/compat/images/win/editcopy.pngbin1325 -> 0 bytes-rw-r--r--tools/assistant/compat/images/win/find.pngbin1944 -> 0 bytes-rw-r--r--tools/assistant/compat/images/win/home.pngbin1414 -> 0 bytes-rw-r--r--tools/assistant/compat/images/win/next.pngbin1038 -> 0 bytes-rw-r--r--tools/assistant/compat/images/win/previous.pngbin898 -> 0 bytes-rw-r--r--tools/assistant/compat/images/win/print.pngbin1456 -> 0 bytes-rw-r--r--tools/assistant/compat/images/win/synctoc.pngbin1235 -> 0 bytes-rw-r--r--tools/assistant/compat/images/win/whatsthis.pngbin1040 -> 0 bytes-rw-r--r--tools/assistant/compat/images/win/zoomin.pngbin1208 -> 0 bytes-rw-r--r--tools/assistant/compat/images/win/zoomout.pngbin1226 -> 0 bytes-rw-r--r--tools/assistant/compat/images/wrap.pngbin500 -> 0 bytes-rw-r--r--tools/assistant/compat/index.cpp581
-rw-r--r--tools/assistant/compat/index.h133
-rw-r--r--tools/assistant/compat/lib/lib.pro78
-rw-r--r--tools/assistant/compat/lib/qassistantclient.cpp447
-rw-r--r--tools/assistant/compat/lib/qassistantclient.h100
-rw-r--r--tools/assistant/compat/lib/qassistantclient_global.h63
-rw-r--r--tools/assistant/compat/main.cpp465
-rw-r--r--tools/assistant/compat/mainwindow.cpp888
-rw-r--r--tools/assistant/compat/mainwindow.h137
-rw-r--r--tools/assistant/compat/mainwindow.ui459
-rw-r--r--tools/assistant/compat/profile.cpp196
-rw-r--r--tools/assistant/compat/profile.h95
-rw-r--r--tools/assistant/compat/tabbedbrowser.cpp530
-rw-r--r--tools/assistant/compat/tabbedbrowser.h122
-rw-r--r--tools/assistant/compat/tabbedbrowser.ui233
-rw-r--r--tools/assistant/compat/topicchooser.cpp101
-rw-r--r--tools/assistant/compat/topicchooser.h77
-rw-r--r--tools/assistant/compat/topicchooser.ui162
-rw-r--r--tools/assistant/compat/translations/translations.pro34
-rw-r--r--tools/assistant/lib/fulltextsearch/qanalyzer.cpp15
-rw-r--r--tools/assistant/lib/fulltextsearch/qanalyzer_p.h15
-rw-r--r--tools/assistant/lib/fulltextsearch/qclucene-config_p.h15
-rw-r--r--tools/assistant/lib/fulltextsearch/qclucene_global_p.h15
-rw-r--r--tools/assistant/lib/fulltextsearch/qdocument.cpp15
-rw-r--r--tools/assistant/lib/fulltextsearch/qdocument_p.h15
-rw-r--r--tools/assistant/lib/fulltextsearch/qfield.cpp21
-rw-r--r--tools/assistant/lib/fulltextsearch/qfield_p.h15
-rw-r--r--tools/assistant/lib/fulltextsearch/qfilter.cpp15
-rw-r--r--tools/assistant/lib/fulltextsearch/qfilter_p.h15
-rw-r--r--tools/assistant/lib/fulltextsearch/qhits.cpp19
-rw-r--r--tools/assistant/lib/fulltextsearch/qhits_p.h15
-rw-r--r--tools/assistant/lib/fulltextsearch/qindexreader.cpp15
-rw-r--r--tools/assistant/lib/fulltextsearch/qindexreader_p.h15
-rw-r--r--tools/assistant/lib/fulltextsearch/qindexwriter.cpp15
-rw-r--r--tools/assistant/lib/fulltextsearch/qindexwriter_p.h15
-rw-r--r--tools/assistant/lib/fulltextsearch/qquery.cpp15
-rw-r--r--tools/assistant/lib/fulltextsearch/qquery_p.h15
-rw-r--r--tools/assistant/lib/fulltextsearch/qqueryparser.cpp25
-rw-r--r--tools/assistant/lib/fulltextsearch/qqueryparser_p.h15
-rw-r--r--tools/assistant/lib/fulltextsearch/qreader.cpp30
-rw-r--r--tools/assistant/lib/fulltextsearch/qreader_p.h21
-rw-r--r--tools/assistant/lib/fulltextsearch/qsearchable.cpp31
-rw-r--r--tools/assistant/lib/fulltextsearch/qsearchable_p.h15
-rw-r--r--tools/assistant/lib/fulltextsearch/qsort.cpp15
-rw-r--r--tools/assistant/lib/fulltextsearch/qsort_p.h15
-rw-r--r--tools/assistant/lib/fulltextsearch/qterm.cpp15
-rw-r--r--tools/assistant/lib/fulltextsearch/qterm_p.h15
-rw-r--r--tools/assistant/lib/fulltextsearch/qtoken.cpp15
-rw-r--r--tools/assistant/lib/fulltextsearch/qtoken_p.h15
-rw-r--r--tools/assistant/lib/fulltextsearch/qtokenizer.cpp15
-rw-r--r--tools/assistant/lib/fulltextsearch/qtokenizer_p.h15
-rw-r--r--tools/assistant/lib/fulltextsearch/qtokenstream.cpp17
-rw-r--r--tools/assistant/lib/fulltextsearch/qtokenstream_p.h15
-rw-r--r--tools/assistant/lib/lib.pro8
-rw-r--r--tools/assistant/lib/qclucenefieldnames.cpp59
-rw-r--r--tools/assistant/lib/qclucenefieldnames_p.h65
-rw-r--r--tools/assistant/lib/qhelp_global.cpp112
-rw-r--r--tools/assistant/lib/qhelp_global.h88
-rw-r--r--tools/assistant/lib/qhelpcollectionhandler.cpp48
-rw-r--r--tools/assistant/lib/qhelpcollectionhandler_p.h30
-rw-r--r--tools/assistant/lib/qhelpcontentwidget.cpp34
-rw-r--r--tools/assistant/lib/qhelpcontentwidget.h30
-rw-r--r--tools/assistant/lib/qhelpdatainterface.cpp30
-rw-r--r--tools/assistant/lib/qhelpdatainterface_p.h30
-rw-r--r--tools/assistant/lib/qhelpdbreader.cpp30
-rw-r--r--tools/assistant/lib/qhelpdbreader_p.h30
-rw-r--r--tools/assistant/lib/qhelpengine.cpp32
-rw-r--r--tools/assistant/lib/qhelpengine.h30
-rw-r--r--tools/assistant/lib/qhelpengine_p.h30
-rw-r--r--tools/assistant/lib/qhelpenginecore.cpp70
-rw-r--r--tools/assistant/lib/qhelpenginecore.h30
-rw-r--r--tools/assistant/lib/qhelpgenerator.cpp97
-rw-r--r--tools/assistant/lib/qhelpgenerator_p.h31
-rw-r--r--tools/assistant/lib/qhelpindexwidget.cpp34
-rw-r--r--tools/assistant/lib/qhelpindexwidget.h30
-rw-r--r--tools/assistant/lib/qhelpprojectdata.cpp42
-rw-r--r--tools/assistant/lib/qhelpprojectdata_p.h30
-rw-r--r--tools/assistant/lib/qhelpsearchengine.cpp48
-rw-r--r--tools/assistant/lib/qhelpsearchengine.h33
-rw-r--r--tools/assistant/lib/qhelpsearchindex_default.cpp30
-rw-r--r--tools/assistant/lib/qhelpsearchindex_default_p.h30
-rw-r--r--tools/assistant/lib/qhelpsearchindexreader.cpp32
-rw-r--r--tools/assistant/lib/qhelpsearchindexreader_clucene.cpp449
-rw-r--r--tools/assistant/lib/qhelpsearchindexreader_clucene_p.h75
-rw-r--r--tools/assistant/lib/qhelpsearchindexreader_default.cpp30
-rw-r--r--tools/assistant/lib/qhelpsearchindexreader_default_p.h30
-rw-r--r--tools/assistant/lib/qhelpsearchindexreader_p.h32
-rw-r--r--tools/assistant/lib/qhelpsearchindexwriter_clucene.cpp55
-rw-r--r--tools/assistant/lib/qhelpsearchindexwriter_clucene_p.h30
-rw-r--r--tools/assistant/lib/qhelpsearchindexwriter_default.cpp33
-rw-r--r--tools/assistant/lib/qhelpsearchindexwriter_default_p.h30
-rw-r--r--tools/assistant/lib/qhelpsearchquerywidget.cpp124
-rw-r--r--tools/assistant/lib/qhelpsearchquerywidget.h30
-rw-r--r--tools/assistant/lib/qhelpsearchresultwidget.cpp56
-rw-r--r--tools/assistant/lib/qhelpsearchresultwidget.h30
-rw-r--r--tools/assistant/tools/assistant/aboutdialog.cpp30
-rw-r--r--tools/assistant/tools/assistant/aboutdialog.h30
-rw-r--r--tools/assistant/tools/assistant/assistant.pro118
-rw-r--r--tools/assistant/tools/assistant/assistant.qchbin368640 -> 364544 bytes-rw-r--r--tools/assistant/tools/assistant/assistant_images.qrc1
-rw-r--r--tools/assistant/tools/assistant/bookmarkmanager.cpp80
-rw-r--r--tools/assistant/tools/assistant/bookmarkmanager.h35
-rw-r--r--tools/assistant/tools/assistant/centralwidget.cpp275
-rw-r--r--tools/assistant/tools/assistant/centralwidget.h45
-rw-r--r--tools/assistant/tools/assistant/cmdlineparser.cpp332
-rw-r--r--tools/assistant/tools/assistant/cmdlineparser.h56
-rw-r--r--tools/assistant/tools/assistant/contentwindow.cpp44
-rw-r--r--tools/assistant/tools/assistant/contentwindow.h35
-rw-r--r--tools/assistant/tools/assistant/doc/assistant.qdoc41
-rw-r--r--tools/assistant/tools/assistant/doc/assistant.qdocconf2
-rw-r--r--tools/assistant/tools/assistant/filternamedialog.cpp30
-rw-r--r--tools/assistant/tools/assistant/filternamedialog.h30
-rw-r--r--tools/assistant/tools/assistant/helpenginewrapper.cpp591
-rw-r--r--tools/assistant/tools/assistant/helpenginewrapper.h212
-rw-r--r--tools/assistant/tools/assistant/helpviewer.cpp153
-rw-r--r--tools/assistant/tools/assistant/helpviewer.h40
-rw-r--r--tools/assistant/tools/assistant/images/bookmark.pngbin0 -> 1266 bytes-rw-r--r--tools/assistant/tools/assistant/indexwindow.cpp62
-rw-r--r--tools/assistant/tools/assistant/indexwindow.h34
-rw-r--r--tools/assistant/tools/assistant/installdialog.cpp42
-rw-r--r--tools/assistant/tools/assistant/installdialog.h30
-rw-r--r--tools/assistant/tools/assistant/main.cpp302
-rw-r--r--tools/assistant/tools/assistant/mainwindow.cpp502
-rw-r--r--tools/assistant/tools/assistant/mainwindow.h64
-rw-r--r--tools/assistant/tools/assistant/preferencesdialog.cpp159
-rw-r--r--tools/assistant/tools/assistant/preferencesdialog.h43
-rw-r--r--tools/assistant/tools/assistant/qtdocinstaller.cpp111
-rw-r--r--tools/assistant/tools/assistant/qtdocinstaller.h51
-rw-r--r--tools/assistant/tools/assistant/remotecontrol.cpp299
-rw-r--r--tools/assistant/tools/assistant/remotecontrol.h48
-rw-r--r--tools/assistant/tools/assistant/remotecontrol_win.h30
-rw-r--r--tools/assistant/tools/assistant/searchwidget.cpp33
-rw-r--r--tools/assistant/tools/assistant/searchwidget.h30
-rw-r--r--tools/assistant/tools/assistant/topicchooser.cpp30
-rw-r--r--tools/assistant/tools/assistant/topicchooser.h30
-rw-r--r--tools/assistant/tools/assistant/tracer.h75
-rw-r--r--tools/assistant/tools/assistant/xbelsupport.cpp238
-rw-r--r--tools/assistant/tools/assistant/xbelsupport.h91
-rw-r--r--tools/assistant/tools/qcollectiongenerator/main.cpp105
-rw-r--r--tools/assistant/tools/qcollectiongenerator/qcollectiongenerator.pro19
-rw-r--r--tools/assistant/tools/qhelpconverter/adpreader.cpp30
-rw-r--r--tools/assistant/tools/qhelpconverter/adpreader.h30
-rw-r--r--tools/assistant/tools/qhelpconverter/conversionwizard.cpp30
-rw-r--r--tools/assistant/tools/qhelpconverter/conversionwizard.h30
-rw-r--r--tools/assistant/tools/qhelpconverter/filespage.cpp30
-rw-r--r--tools/assistant/tools/qhelpconverter/filespage.h30
-rw-r--r--tools/assistant/tools/qhelpconverter/filterpage.cpp30
-rw-r--r--tools/assistant/tools/qhelpconverter/filterpage.h30
-rw-r--r--tools/assistant/tools/qhelpconverter/finishpage.cpp30
-rw-r--r--tools/assistant/tools/qhelpconverter/finishpage.h30
-rw-r--r--tools/assistant/tools/qhelpconverter/generalpage.cpp34
-rw-r--r--tools/assistant/tools/qhelpconverter/generalpage.h30
-rw-r--r--tools/assistant/tools/qhelpconverter/helpwindow.cpp30
-rw-r--r--tools/assistant/tools/qhelpconverter/helpwindow.h30
-rw-r--r--tools/assistant/tools/qhelpconverter/identifierpage.cpp30
-rw-r--r--tools/assistant/tools/qhelpconverter/identifierpage.h30
-rw-r--r--tools/assistant/tools/qhelpconverter/inputpage.cpp30
-rw-r--r--tools/assistant/tools/qhelpconverter/inputpage.h30
-rw-r--r--tools/assistant/tools/qhelpconverter/main.cpp30
-rw-r--r--tools/assistant/tools/qhelpconverter/outputpage.cpp34
-rw-r--r--tools/assistant/tools/qhelpconverter/outputpage.h30
-rw-r--r--tools/assistant/tools/qhelpconverter/pathpage.cpp30
-rw-r--r--tools/assistant/tools/qhelpconverter/pathpage.h30
-rw-r--r--tools/assistant/tools/qhelpconverter/qhcpwriter.cpp30
-rw-r--r--tools/assistant/tools/qhelpconverter/qhcpwriter.h30
-rw-r--r--tools/assistant/tools/qhelpconverter/qhpwriter.cpp30
-rw-r--r--tools/assistant/tools/qhelpconverter/qhpwriter.h30
-rw-r--r--tools/assistant/tools/qhelpgenerator/main.cpp49
-rw-r--r--tools/assistant/tools/shared/collectionconfiguration.cpp314
-rw-r--r--tools/assistant/tools/shared/collectionconfiguration.h140
-rw-r--r--tools/assistant/tools/shared/helpgenerator.cpp43
-rw-r--r--tools/assistant/tools/shared/helpgenerator.h31
-rw-r--r--tools/assistant/translations/qt_help.pro19
-rw-r--r--tools/assistant/translations/translations.pro18
-rw-r--r--tools/assistant/translations/translations_adp.pro41
-rw-r--r--tools/checksdk/cesdkhandler.cpp30
-rw-r--r--tools/checksdk/cesdkhandler.h30
-rw-r--r--tools/checksdk/main.cpp30
-rw-r--r--tools/configure/configure.pro6
-rw-r--r--tools/configure/configure_pch.h30
-rw-r--r--tools/configure/configureapp.cpp409
-rw-r--r--tools/configure/configureapp.h30
-rw-r--r--tools/configure/environment.cpp30
-rw-r--r--tools/configure/environment.h30
-rw-r--r--tools/configure/main.cpp30
-rw-r--r--tools/configure/tools.cpp137
-rw-r--r--tools/configure/tools.h30
-rw-r--r--tools/designer/data/generate_header.xsl30
-rw-r--r--tools/designer/data/generate_impl.xsl30
-rw-r--r--tools/designer/src/components/buddyeditor/buddyeditor.cpp30
-rw-r--r--tools/designer/src/components/buddyeditor/buddyeditor.h30
-rw-r--r--tools/designer/src/components/buddyeditor/buddyeditor_global.h30
-rw-r--r--tools/designer/src/components/buddyeditor/buddyeditor_instance.cpp30
-rw-r--r--tools/designer/src/components/buddyeditor/buddyeditor_plugin.cpp30
-rw-r--r--tools/designer/src/components/buddyeditor/buddyeditor_plugin.h30
-rw-r--r--tools/designer/src/components/buddyeditor/buddyeditor_tool.cpp30
-rw-r--r--tools/designer/src/components/buddyeditor/buddyeditor_tool.h30
-rw-r--r--tools/designer/src/components/formeditor/brushmanagerproxy.cpp44
-rw-r--r--tools/designer/src/components/formeditor/brushmanagerproxy.h32
-rw-r--r--tools/designer/src/components/formeditor/default_actionprovider.cpp30
-rw-r--r--tools/designer/src/components/formeditor/default_actionprovider.h30
-rw-r--r--tools/designer/src/components/formeditor/default_container.cpp30
-rw-r--r--tools/designer/src/components/formeditor/default_container.h30
-rw-r--r--tools/designer/src/components/formeditor/default_layoutdecoration.cpp30
-rw-r--r--tools/designer/src/components/formeditor/default_layoutdecoration.h30
-rw-r--r--tools/designer/src/components/formeditor/deviceprofiledialog.cpp30
-rw-r--r--tools/designer/src/components/formeditor/deviceprofiledialog.h30
-rw-r--r--tools/designer/src/components/formeditor/deviceprofiledialog.ui82
-rw-r--r--tools/designer/src/components/formeditor/dpi_chooser.cpp30
-rw-r--r--tools/designer/src/components/formeditor/dpi_chooser.h30
-rw-r--r--tools/designer/src/components/formeditor/embeddedoptionspage.cpp30
-rw-r--r--tools/designer/src/components/formeditor/embeddedoptionspage.h30
-rw-r--r--tools/designer/src/components/formeditor/formeditor.cpp34
-rw-r--r--tools/designer/src/components/formeditor/formeditor.h30
-rw-r--r--tools/designer/src/components/formeditor/formeditor_global.h30
-rw-r--r--tools/designer/src/components/formeditor/formeditor_optionspage.cpp30
-rw-r--r--tools/designer/src/components/formeditor/formeditor_optionspage.h30
-rw-r--r--tools/designer/src/components/formeditor/formwindow.cpp34
-rw-r--r--tools/designer/src/components/formeditor/formwindow.h30
-rw-r--r--tools/designer/src/components/formeditor/formwindow_dnditem.cpp30
-rw-r--r--tools/designer/src/components/formeditor/formwindow_dnditem.h30
-rw-r--r--tools/designer/src/components/formeditor/formwindow_widgetstack.cpp30
-rw-r--r--tools/designer/src/components/formeditor/formwindow_widgetstack.h30
-rw-r--r--tools/designer/src/components/formeditor/formwindowcursor.cpp30
-rw-r--r--tools/designer/src/components/formeditor/formwindowcursor.h30
-rw-r--r--tools/designer/src/components/formeditor/formwindowmanager.cpp31
-rw-r--r--tools/designer/src/components/formeditor/formwindowmanager.h30
-rw-r--r--tools/designer/src/components/formeditor/formwindowsettings.cpp30
-rw-r--r--tools/designer/src/components/formeditor/formwindowsettings.h30
-rw-r--r--tools/designer/src/components/formeditor/formwindowsettings.ui30
-rw-r--r--tools/designer/src/components/formeditor/iconcache.cpp30
-rw-r--r--tools/designer/src/components/formeditor/iconcache.h30
-rw-r--r--tools/designer/src/components/formeditor/itemview_propertysheet.cpp30
-rw-r--r--tools/designer/src/components/formeditor/itemview_propertysheet.h30
-rw-r--r--tools/designer/src/components/formeditor/layout_propertysheet.cpp30
-rw-r--r--tools/designer/src/components/formeditor/layout_propertysheet.h30
-rw-r--r--tools/designer/src/components/formeditor/line_propertysheet.cpp30
-rw-r--r--tools/designer/src/components/formeditor/line_propertysheet.h30
-rw-r--r--tools/designer/src/components/formeditor/previewactiongroup.cpp30
-rw-r--r--tools/designer/src/components/formeditor/previewactiongroup.h30
-rw-r--r--tools/designer/src/components/formeditor/qdesigner_resource.cpp34
-rw-r--r--tools/designer/src/components/formeditor/qdesigner_resource.h30
-rw-r--r--tools/designer/src/components/formeditor/qlayoutwidget_propertysheet.cpp30
-rw-r--r--tools/designer/src/components/formeditor/qlayoutwidget_propertysheet.h30
-rw-r--r--tools/designer/src/components/formeditor/qmainwindow_container.cpp30
-rw-r--r--tools/designer/src/components/formeditor/qmainwindow_container.h30
-rw-r--r--tools/designer/src/components/formeditor/qmdiarea_container.cpp30
-rw-r--r--tools/designer/src/components/formeditor/qmdiarea_container.h30
-rw-r--r--tools/designer/src/components/formeditor/qtbrushmanager.cpp35
-rw-r--r--tools/designer/src/components/formeditor/qtbrushmanager.h36
-rw-r--r--tools/designer/src/components/formeditor/qwizard_container.cpp30
-rw-r--r--tools/designer/src/components/formeditor/qwizard_container.h30
-rw-r--r--tools/designer/src/components/formeditor/qworkspace_container.cpp30
-rw-r--r--tools/designer/src/components/formeditor/qworkspace_container.h30
-rw-r--r--tools/designer/src/components/formeditor/spacer_propertysheet.cpp30
-rw-r--r--tools/designer/src/components/formeditor/spacer_propertysheet.h30
-rw-r--r--tools/designer/src/components/formeditor/templateoptionspage.cpp30
-rw-r--r--tools/designer/src/components/formeditor/templateoptionspage.h30
-rw-r--r--tools/designer/src/components/formeditor/tool_widgeteditor.cpp30
-rw-r--r--tools/designer/src/components/formeditor/tool_widgeteditor.h30
-rw-r--r--tools/designer/src/components/formeditor/widgetselection.cpp30
-rw-r--r--tools/designer/src/components/formeditor/widgetselection.h30
-rw-r--r--tools/designer/src/components/lib/lib.pro5
-rw-r--r--tools/designer/src/components/lib/lib_pch.h30
-rw-r--r--tools/designer/src/components/lib/qdesigner_components.cpp30
-rw-r--r--tools/designer/src/components/objectinspector/objectinspector.cpp30
-rw-r--r--tools/designer/src/components/objectinspector/objectinspector.h30
-rw-r--r--tools/designer/src/components/objectinspector/objectinspector_global.h30
-rw-r--r--tools/designer/src/components/objectinspector/objectinspectormodel.cpp30
-rw-r--r--tools/designer/src/components/objectinspector/objectinspectormodel_p.h30
-rw-r--r--tools/designer/src/components/propertyeditor/brushpropertymanager.cpp30
-rw-r--r--tools/designer/src/components/propertyeditor/brushpropertymanager.h30
-rw-r--r--tools/designer/src/components/propertyeditor/defs.cpp30
-rw-r--r--tools/designer/src/components/propertyeditor/defs.h30
-rw-r--r--tools/designer/src/components/propertyeditor/designerpropertymanager.cpp56
-rw-r--r--tools/designer/src/components/propertyeditor/designerpropertymanager.h30
-rw-r--r--tools/designer/src/components/propertyeditor/fontmapping.xml30
-rw-r--r--tools/designer/src/components/propertyeditor/fontpropertymanager.cpp30
-rw-r--r--tools/designer/src/components/propertyeditor/fontpropertymanager.h30
-rw-r--r--tools/designer/src/components/propertyeditor/newdynamicpropertydialog.cpp30
-rw-r--r--tools/designer/src/components/propertyeditor/newdynamicpropertydialog.h30
-rw-r--r--tools/designer/src/components/propertyeditor/paletteeditor.cpp40
-rw-r--r--tools/designer/src/components/propertyeditor/paletteeditor.h30
-rw-r--r--tools/designer/src/components/propertyeditor/paletteeditor.ui30
-rw-r--r--tools/designer/src/components/propertyeditor/paletteeditorbutton.cpp30
-rw-r--r--tools/designer/src/components/propertyeditor/paletteeditorbutton.h30
-rw-r--r--tools/designer/src/components/propertyeditor/previewframe.cpp30
-rw-r--r--tools/designer/src/components/propertyeditor/previewframe.h30
-rw-r--r--tools/designer/src/components/propertyeditor/previewwidget.cpp30
-rw-r--r--tools/designer/src/components/propertyeditor/previewwidget.h30
-rw-r--r--tools/designer/src/components/propertyeditor/previewwidget.ui30
-rw-r--r--tools/designer/src/components/propertyeditor/propertyeditor.cpp32
-rw-r--r--tools/designer/src/components/propertyeditor/propertyeditor.h30
-rw-r--r--tools/designer/src/components/propertyeditor/propertyeditor_global.h30
-rw-r--r--tools/designer/src/components/propertyeditor/qlonglongvalidator.cpp30
-rw-r--r--tools/designer/src/components/propertyeditor/qlonglongvalidator.h30
-rw-r--r--tools/designer/src/components/propertyeditor/stringlisteditor.cpp36
-rw-r--r--tools/designer/src/components/propertyeditor/stringlisteditor.h30
-rw-r--r--tools/designer/src/components/propertyeditor/stringlisteditor.ui30
-rw-r--r--tools/designer/src/components/propertyeditor/stringlisteditorbutton.cpp30
-rw-r--r--tools/designer/src/components/propertyeditor/stringlisteditorbutton.h30
-rw-r--r--tools/designer/src/components/signalsloteditor/connectdialog.cpp30
-rw-r--r--tools/designer/src/components/signalsloteditor/connectdialog_p.h30
-rw-r--r--tools/designer/src/components/signalsloteditor/signalslot_utils.cpp30
-rw-r--r--tools/designer/src/components/signalsloteditor/signalslot_utils_p.h30
-rw-r--r--tools/designer/src/components/signalsloteditor/signalsloteditor.cpp30
-rw-r--r--tools/designer/src/components/signalsloteditor/signalsloteditor.h30
-rw-r--r--tools/designer/src/components/signalsloteditor/signalsloteditor_global.h30
-rw-r--r--tools/designer/src/components/signalsloteditor/signalsloteditor_instance.cpp30
-rw-r--r--tools/designer/src/components/signalsloteditor/signalsloteditor_p.h30
-rw-r--r--tools/designer/src/components/signalsloteditor/signalsloteditor_plugin.cpp30
-rw-r--r--tools/designer/src/components/signalsloteditor/signalsloteditor_plugin.h30
-rw-r--r--tools/designer/src/components/signalsloteditor/signalsloteditor_tool.cpp30
-rw-r--r--tools/designer/src/components/signalsloteditor/signalsloteditor_tool.h30
-rw-r--r--tools/designer/src/components/signalsloteditor/signalsloteditorwindow.cpp57
-rw-r--r--tools/designer/src/components/signalsloteditor/signalsloteditorwindow.h30
-rw-r--r--tools/designer/src/components/tabordereditor/tabordereditor.cpp30
-rw-r--r--tools/designer/src/components/tabordereditor/tabordereditor.h30
-rw-r--r--tools/designer/src/components/tabordereditor/tabordereditor_global.h30
-rw-r--r--tools/designer/src/components/tabordereditor/tabordereditor_instance.cpp30
-rw-r--r--tools/designer/src/components/tabordereditor/tabordereditor_plugin.cpp30
-rw-r--r--tools/designer/src/components/tabordereditor/tabordereditor_plugin.h30
-rw-r--r--tools/designer/src/components/tabordereditor/tabordereditor_tool.cpp30
-rw-r--r--tools/designer/src/components/tabordereditor/tabordereditor_tool.h30
-rw-r--r--tools/designer/src/components/taskmenu/button_taskmenu.cpp30
-rw-r--r--tools/designer/src/components/taskmenu/button_taskmenu.h30
-rw-r--r--tools/designer/src/components/taskmenu/combobox_taskmenu.cpp30
-rw-r--r--tools/designer/src/components/taskmenu/combobox_taskmenu.h30
-rw-r--r--tools/designer/src/components/taskmenu/containerwidget_taskmenu.cpp34
-rw-r--r--tools/designer/src/components/taskmenu/containerwidget_taskmenu.h30
-rw-r--r--tools/designer/src/components/taskmenu/groupbox_taskmenu.cpp30
-rw-r--r--tools/designer/src/components/taskmenu/groupbox_taskmenu.h30
-rw-r--r--tools/designer/src/components/taskmenu/inplace_editor.cpp30
-rw-r--r--tools/designer/src/components/taskmenu/inplace_editor.h30
-rw-r--r--tools/designer/src/components/taskmenu/inplace_widget_helper.cpp30
-rw-r--r--tools/designer/src/components/taskmenu/inplace_widget_helper.h30
-rw-r--r--tools/designer/src/components/taskmenu/itemlisteditor.cpp30
-rw-r--r--tools/designer/src/components/taskmenu/itemlisteditor.h30
-rw-r--r--tools/designer/src/components/taskmenu/itemlisteditor.ui30
-rw-r--r--tools/designer/src/components/taskmenu/label_taskmenu.cpp30
-rw-r--r--tools/designer/src/components/taskmenu/label_taskmenu.h30
-rw-r--r--tools/designer/src/components/taskmenu/layouttaskmenu.cpp30
-rw-r--r--tools/designer/src/components/taskmenu/layouttaskmenu.h30
-rw-r--r--tools/designer/src/components/taskmenu/lineedit_taskmenu.cpp30
-rw-r--r--tools/designer/src/components/taskmenu/lineedit_taskmenu.h30
-rw-r--r--tools/designer/src/components/taskmenu/listwidget_taskmenu.cpp30
-rw-r--r--tools/designer/src/components/taskmenu/listwidget_taskmenu.h30
-rw-r--r--tools/designer/src/components/taskmenu/listwidgeteditor.cpp30
-rw-r--r--tools/designer/src/components/taskmenu/listwidgeteditor.h30
-rw-r--r--tools/designer/src/components/taskmenu/menutaskmenu.cpp30
-rw-r--r--tools/designer/src/components/taskmenu/menutaskmenu.h30
-rw-r--r--tools/designer/src/components/taskmenu/tablewidget_taskmenu.cpp30
-rw-r--r--tools/designer/src/components/taskmenu/tablewidget_taskmenu.h30
-rw-r--r--tools/designer/src/components/taskmenu/tablewidgeteditor.cpp30
-rw-r--r--tools/designer/src/components/taskmenu/tablewidgeteditor.h30
-rw-r--r--tools/designer/src/components/taskmenu/tablewidgeteditor.ui30
-rw-r--r--tools/designer/src/components/taskmenu/taskmenu_component.cpp30
-rw-r--r--tools/designer/src/components/taskmenu/taskmenu_component.h30
-rw-r--r--tools/designer/src/components/taskmenu/taskmenu_global.h30
-rw-r--r--tools/designer/src/components/taskmenu/textedit_taskmenu.cpp30
-rw-r--r--tools/designer/src/components/taskmenu/textedit_taskmenu.h30
-rw-r--r--tools/designer/src/components/taskmenu/toolbar_taskmenu.cpp30
-rw-r--r--tools/designer/src/components/taskmenu/toolbar_taskmenu.h30
-rw-r--r--tools/designer/src/components/taskmenu/treewidget_taskmenu.cpp30
-rw-r--r--tools/designer/src/components/taskmenu/treewidget_taskmenu.h30
-rw-r--r--tools/designer/src/components/taskmenu/treewidgeteditor.cpp30
-rw-r--r--tools/designer/src/components/taskmenu/treewidgeteditor.h30
-rw-r--r--tools/designer/src/components/taskmenu/treewidgeteditor.ui30
-rw-r--r--tools/designer/src/components/widgetbox/widgetbox.cpp30
-rw-r--r--tools/designer/src/components/widgetbox/widgetbox.h30
-rw-r--r--tools/designer/src/components/widgetbox/widgetbox.xml30
-rw-r--r--tools/designer/src/components/widgetbox/widgetbox_dnditem.cpp30
-rw-r--r--tools/designer/src/components/widgetbox/widgetbox_dnditem.h30
-rw-r--r--tools/designer/src/components/widgetbox/widgetbox_global.h30
-rw-r--r--tools/designer/src/components/widgetbox/widgetboxcategorylistview.cpp56
-rw-r--r--tools/designer/src/components/widgetbox/widgetboxcategorylistview.h30
-rw-r--r--tools/designer/src/components/widgetbox/widgetboxtreewidget.cpp30
-rw-r--r--tools/designer/src/components/widgetbox/widgetboxtreewidget.h30
-rw-r--r--tools/designer/src/designer/appfontdialog.cpp30
-rw-r--r--tools/designer/src/designer/appfontdialog.h30
-rw-r--r--tools/designer/src/designer/assistantclient.cpp30
-rw-r--r--tools/designer/src/designer/assistantclient.h30
-rw-r--r--tools/designer/src/designer/designer.pro3
-rw-r--r--tools/designer/src/designer/designer_enums.h30
-rw-r--r--tools/designer/src/designer/main.cpp44
-rw-r--r--tools/designer/src/designer/mainwindow.cpp30
-rw-r--r--tools/designer/src/designer/mainwindow.h30
-rw-r--r--tools/designer/src/designer/newform.cpp30
-rw-r--r--tools/designer/src/designer/newform.h30
-rw-r--r--tools/designer/src/designer/preferencesdialog.cpp30
-rw-r--r--tools/designer/src/designer/preferencesdialog.h30
-rw-r--r--tools/designer/src/designer/qdesigner.cpp30
-rw-r--r--tools/designer/src/designer/qdesigner.h30
-rw-r--r--tools/designer/src/designer/qdesigner_actions.cpp30
-rw-r--r--tools/designer/src/designer/qdesigner_actions.h30
-rw-r--r--tools/designer/src/designer/qdesigner_appearanceoptions.cpp30
-rw-r--r--tools/designer/src/designer/qdesigner_appearanceoptions.h30
-rw-r--r--tools/designer/src/designer/qdesigner_formwindow.cpp32
-rw-r--r--tools/designer/src/designer/qdesigner_formwindow.h30
-rw-r--r--tools/designer/src/designer/qdesigner_pch.h30
-rw-r--r--tools/designer/src/designer/qdesigner_server.cpp30
-rw-r--r--tools/designer/src/designer/qdesigner_server.h30
-rw-r--r--tools/designer/src/designer/qdesigner_settings.cpp30
-rw-r--r--tools/designer/src/designer/qdesigner_settings.h30
-rw-r--r--tools/designer/src/designer/qdesigner_toolwindow.cpp30
-rw-r--r--tools/designer/src/designer/qdesigner_toolwindow.h30
-rw-r--r--tools/designer/src/designer/qdesigner_workbench.cpp34
-rw-r--r--tools/designer/src/designer/qdesigner_workbench.h30
-rw-r--r--tools/designer/src/designer/saveformastemplate.cpp30
-rw-r--r--tools/designer/src/designer/saveformastemplate.h30
-rw-r--r--tools/designer/src/designer/saveformastemplate.ui30
-rw-r--r--tools/designer/src/designer/versiondialog.cpp34
-rw-r--r--tools/designer/src/designer/versiondialog.h30
-rw-r--r--tools/designer/src/lib/components/qdesigner_components.h30
-rw-r--r--tools/designer/src/lib/components/qdesigner_components_global.h30
-rw-r--r--tools/designer/src/lib/extension/default_extensionfactory.cpp30
-rw-r--r--tools/designer/src/lib/extension/default_extensionfactory.h30
-rw-r--r--tools/designer/src/lib/extension/extension.cpp30
-rw-r--r--tools/designer/src/lib/extension/extension.h30
-rw-r--r--tools/designer/src/lib/extension/extension_global.h30
-rw-r--r--tools/designer/src/lib/extension/qextensionmanager.cpp30
-rw-r--r--tools/designer/src/lib/extension/qextensionmanager.h30
-rw-r--r--tools/designer/src/lib/lib_pch.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractactioneditor.cpp30
-rw-r--r--tools/designer/src/lib/sdk/abstractactioneditor.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractbrushmanager.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractdialoggui.cpp30
-rw-r--r--tools/designer/src/lib/sdk/abstractdialoggui_p.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractdnditem.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractdnditem.qdoc112
-rw-r--r--tools/designer/src/lib/sdk/abstractformeditor.cpp30
-rw-r--r--tools/designer/src/lib/sdk/abstractformeditor.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractformeditorplugin.cpp30
-rw-r--r--tools/designer/src/lib/sdk/abstractformeditorplugin.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractformwindow.cpp30
-rw-r--r--tools/designer/src/lib/sdk/abstractformwindow.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractformwindowcursor.cpp30
-rw-r--r--tools/designer/src/lib/sdk/abstractformwindowcursor.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractformwindowmanager.cpp30
-rw-r--r--tools/designer/src/lib/sdk/abstractformwindowmanager.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractformwindowtool.cpp30
-rw-r--r--tools/designer/src/lib/sdk/abstractformwindowtool.h30
-rw-r--r--tools/designer/src/lib/sdk/abstracticoncache.h30
-rw-r--r--tools/designer/src/lib/sdk/abstracticoncache.qdoc130
-rw-r--r--tools/designer/src/lib/sdk/abstractintegration.cpp30
-rw-r--r--tools/designer/src/lib/sdk/abstractintegration.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractintrospection.cpp30
-rw-r--r--tools/designer/src/lib/sdk/abstractintrospection_p.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractlanguage.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractmetadatabase.cpp30
-rw-r--r--tools/designer/src/lib/sdk/abstractmetadatabase.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractnewformwidget.cpp30
-rw-r--r--tools/designer/src/lib/sdk/abstractnewformwidget_p.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractobjectinspector.cpp30
-rw-r--r--tools/designer/src/lib/sdk/abstractobjectinspector.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractoptionspage_p.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractpromotioninterface.cpp30
-rw-r--r--tools/designer/src/lib/sdk/abstractpromotioninterface.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractpropertyeditor.cpp30
-rw-r--r--tools/designer/src/lib/sdk/abstractpropertyeditor.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractresourcebrowser.cpp30
-rw-r--r--tools/designer/src/lib/sdk/abstractresourcebrowser.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractsettings_p.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractwidgetbox.cpp30
-rw-r--r--tools/designer/src/lib/sdk/abstractwidgetbox.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractwidgetdatabase.cpp30
-rw-r--r--tools/designer/src/lib/sdk/abstractwidgetdatabase.h30
-rw-r--r--tools/designer/src/lib/sdk/abstractwidgetfactory.cpp30
-rw-r--r--tools/designer/src/lib/sdk/abstractwidgetfactory.h30
-rw-r--r--tools/designer/src/lib/sdk/dynamicpropertysheet.h30
-rw-r--r--tools/designer/src/lib/sdk/dynamicpropertysheet.qdoc94
-rw-r--r--tools/designer/src/lib/sdk/extrainfo.cpp30
-rw-r--r--tools/designer/src/lib/sdk/extrainfo.h30
-rw-r--r--tools/designer/src/lib/sdk/layoutdecoration.h30
-rw-r--r--tools/designer/src/lib/sdk/layoutdecoration.qdoc163
-rw-r--r--tools/designer/src/lib/sdk/membersheet.h30
-rw-r--r--tools/designer/src/lib/sdk/membersheet.qdoc263
-rw-r--r--tools/designer/src/lib/sdk/propertysheet.h30
-rw-r--r--tools/designer/src/lib/sdk/propertysheet.qdoc302
-rw-r--r--tools/designer/src/lib/sdk/script.cpp30
-rw-r--r--tools/designer/src/lib/sdk/script_p.h30
-rw-r--r--tools/designer/src/lib/sdk/sdk_global.h30
-rw-r--r--tools/designer/src/lib/sdk/taskmenu.h30
-rw-r--r--tools/designer/src/lib/sdk/taskmenu.qdoc152
-rw-r--r--tools/designer/src/lib/shared/actioneditor.cpp34
-rw-r--r--tools/designer/src/lib/shared/actioneditor_p.h30
-rw-r--r--tools/designer/src/lib/shared/actionprovider_p.h30
-rw-r--r--tools/designer/src/lib/shared/actionrepository.cpp38
-rw-r--r--tools/designer/src/lib/shared/actionrepository_p.h30
-rw-r--r--tools/designer/src/lib/shared/codedialog.cpp30
-rw-r--r--tools/designer/src/lib/shared/codedialog_p.h30
-rw-r--r--tools/designer/src/lib/shared/connectionedit.cpp30
-rw-r--r--tools/designer/src/lib/shared/connectionedit_p.h30
-rw-r--r--tools/designer/src/lib/shared/csshighlighter.cpp30
-rw-r--r--tools/designer/src/lib/shared/csshighlighter_p.h30
-rw-r--r--tools/designer/src/lib/shared/deviceprofile.cpp30
-rw-r--r--tools/designer/src/lib/shared/deviceprofile_p.h30
-rw-r--r--tools/designer/src/lib/shared/dialoggui.cpp30
-rw-r--r--tools/designer/src/lib/shared/dialoggui_p.h30
-rw-r--r--tools/designer/src/lib/shared/extensionfactory_p.h30
-rw-r--r--tools/designer/src/lib/shared/filterwidget.cpp30
-rw-r--r--tools/designer/src/lib/shared/filterwidget_p.h30
-rw-r--r--tools/designer/src/lib/shared/formlayoutmenu.cpp30
-rw-r--r--tools/designer/src/lib/shared/formlayoutmenu_p.h30
-rw-r--r--tools/designer/src/lib/shared/formwindowbase.cpp30
-rw-r--r--tools/designer/src/lib/shared/formwindowbase_p.h30
-rw-r--r--tools/designer/src/lib/shared/grid.cpp30
-rw-r--r--tools/designer/src/lib/shared/grid_p.h30
-rw-r--r--tools/designer/src/lib/shared/gridpanel.cpp30
-rw-r--r--tools/designer/src/lib/shared/gridpanel_p.h30
-rw-r--r--tools/designer/src/lib/shared/htmlhighlighter.cpp30
-rw-r--r--tools/designer/src/lib/shared/htmlhighlighter_p.h30
-rw-r--r--tools/designer/src/lib/shared/iconloader.cpp30
-rw-r--r--tools/designer/src/lib/shared/iconloader_p.h30
-rw-r--r--tools/designer/src/lib/shared/iconselector.cpp35
-rw-r--r--tools/designer/src/lib/shared/iconselector_p.h34
-rw-r--r--tools/designer/src/lib/shared/invisible_widget.cpp30
-rw-r--r--tools/designer/src/lib/shared/invisible_widget_p.h30
-rw-r--r--tools/designer/src/lib/shared/layout.cpp30
-rw-r--r--tools/designer/src/lib/shared/layout_p.h30
-rw-r--r--tools/designer/src/lib/shared/layoutinfo.cpp30
-rw-r--r--tools/designer/src/lib/shared/layoutinfo_p.h30
-rw-r--r--tools/designer/src/lib/shared/metadatabase.cpp30
-rw-r--r--tools/designer/src/lib/shared/metadatabase_p.h30
-rw-r--r--tools/designer/src/lib/shared/morphmenu.cpp30
-rw-r--r--tools/designer/src/lib/shared/morphmenu_p.h30
-rw-r--r--tools/designer/src/lib/shared/newactiondialog.cpp30
-rw-r--r--tools/designer/src/lib/shared/newactiondialog.ui30
-rw-r--r--tools/designer/src/lib/shared/newactiondialog_p.h30
-rw-r--r--tools/designer/src/lib/shared/newformwidget.cpp30
-rw-r--r--tools/designer/src/lib/shared/newformwidget.ui30
-rw-r--r--tools/designer/src/lib/shared/newformwidget_p.h30
-rw-r--r--tools/designer/src/lib/shared/orderdialog.cpp30
-rw-r--r--tools/designer/src/lib/shared/orderdialog.ui30
-rw-r--r--tools/designer/src/lib/shared/orderdialog_p.h30
-rw-r--r--tools/designer/src/lib/shared/plaintexteditor.cpp30
-rw-r--r--tools/designer/src/lib/shared/plaintexteditor_p.h30
-rw-r--r--tools/designer/src/lib/shared/plugindialog.cpp30
-rw-r--r--tools/designer/src/lib/shared/plugindialog.ui30
-rw-r--r--tools/designer/src/lib/shared/plugindialog_p.h30
-rw-r--r--tools/designer/src/lib/shared/pluginmanager.cpp30
-rw-r--r--tools/designer/src/lib/shared/pluginmanager_p.h30
-rw-r--r--tools/designer/src/lib/shared/previewconfigurationwidget.cpp30
-rw-r--r--tools/designer/src/lib/shared/previewconfigurationwidget_p.h30
-rw-r--r--tools/designer/src/lib/shared/previewmanager.cpp31
-rw-r--r--tools/designer/src/lib/shared/previewmanager_p.h30
-rw-r--r--tools/designer/src/lib/shared/promotionmodel.cpp32
-rw-r--r--tools/designer/src/lib/shared/promotionmodel_p.h30
-rw-r--r--tools/designer/src/lib/shared/promotiontaskmenu.cpp30
-rw-r--r--tools/designer/src/lib/shared/promotiontaskmenu_p.h30
-rw-r--r--tools/designer/src/lib/shared/propertylineedit.cpp30
-rw-r--r--tools/designer/src/lib/shared/propertylineedit_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_command.cpp36
-rw-r--r--tools/designer/src/lib/shared/qdesigner_command2.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_command2_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_command_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_dnditem.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_dnditem_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_dockwidget.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_dockwidget_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_formbuilder.cpp36
-rw-r--r--tools/designer/src/lib/shared/qdesigner_formbuilder_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_formeditorcommand.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_formeditorcommand_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_formwindowcommand.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_formwindowcommand_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_formwindowmanager.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_formwindowmanager_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_integration.cpp32
-rw-r--r--tools/designer/src/lib/shared/qdesigner_integration_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_introspection.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_introspection_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_membersheet.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_membersheet_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_menu.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_menu_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_menubar.cpp42
-rw-r--r--tools/designer/src/lib/shared/qdesigner_menubar_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_objectinspector.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_objectinspector_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_promotion.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_promotion_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_promotiondialog.cpp44
-rw-r--r--tools/designer/src/lib/shared/qdesigner_promotiondialog_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_propertycommand.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_propertycommand_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_propertyeditor.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_propertyeditor_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_propertysheet.cpp41
-rw-r--r--tools/designer/src/lib/shared/qdesigner_propertysheet_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_qsettings.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_qsettings_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_stackedbox.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_stackedbox_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_tabwidget.cpp33
-rw-r--r--tools/designer/src/lib/shared/qdesigner_tabwidget_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_taskmenu.cpp32
-rw-r--r--tools/designer/src/lib/shared/qdesigner_taskmenu_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_toolbar.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_toolbar_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_toolbox.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_toolbox_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_utils.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_utils_p.h31
-rw-r--r--tools/designer/src/lib/shared/qdesigner_widget.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_widget_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_widgetbox.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_widgetbox_p.h30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_widgetitem.cpp30
-rw-r--r--tools/designer/src/lib/shared/qdesigner_widgetitem_p.h30
-rw-r--r--tools/designer/src/lib/shared/qlayout_widget.cpp33
-rw-r--r--tools/designer/src/lib/shared/qlayout_widget_p.h30
-rw-r--r--tools/designer/src/lib/shared/qscripthighlighter.cpp30
-rw-r--r--tools/designer/src/lib/shared/qscripthighlighter_p.h30
-rw-r--r--tools/designer/src/lib/shared/qsimpleresource.cpp32
-rw-r--r--tools/designer/src/lib/shared/qsimpleresource_p.h30
-rw-r--r--tools/designer/src/lib/shared/qtresourceeditordialog.cpp103
-rw-r--r--tools/designer/src/lib/shared/qtresourceeditordialog_p.h33
-rw-r--r--tools/designer/src/lib/shared/qtresourcemodel.cpp36
-rw-r--r--tools/designer/src/lib/shared/qtresourcemodel_p.h35
-rw-r--r--tools/designer/src/lib/shared/qtresourceview.cpp54
-rw-r--r--tools/designer/src/lib/shared/qtresourceview_p.h34
-rw-r--r--tools/designer/src/lib/shared/richtexteditor.cpp30
-rw-r--r--tools/designer/src/lib/shared/richtexteditor_p.h30
-rw-r--r--tools/designer/src/lib/shared/scriptcommand.cpp30
-rw-r--r--tools/designer/src/lib/shared/scriptcommand_p.h30
-rw-r--r--tools/designer/src/lib/shared/scriptdialog.cpp36
-rw-r--r--tools/designer/src/lib/shared/scriptdialog_p.h30
-rw-r--r--tools/designer/src/lib/shared/scripterrordialog.cpp30
-rw-r--r--tools/designer/src/lib/shared/scripterrordialog_p.h30
-rw-r--r--tools/designer/src/lib/shared/shared.pri2
-rw-r--r--tools/designer/src/lib/shared/shared_enums_p.h30
-rw-r--r--tools/designer/src/lib/shared/shared_global_p.h30
-rw-r--r--tools/designer/src/lib/shared/shared_settings.cpp30
-rw-r--r--tools/designer/src/lib/shared/shared_settings_p.h30
-rw-r--r--tools/designer/src/lib/shared/sheet_delegate.cpp30
-rw-r--r--tools/designer/src/lib/shared/sheet_delegate_p.h30
-rw-r--r--tools/designer/src/lib/shared/signalslotdialog.cpp34
-rw-r--r--tools/designer/src/lib/shared/signalslotdialog_p.h30
-rw-r--r--tools/designer/src/lib/shared/spacer_widget.cpp30
-rw-r--r--tools/designer/src/lib/shared/spacer_widget_p.h30
-rw-r--r--tools/designer/src/lib/shared/stylesheeteditor.cpp41
-rw-r--r--tools/designer/src/lib/shared/stylesheeteditor_p.h30
-rw-r--r--tools/designer/src/lib/shared/textpropertyeditor.cpp30
-rw-r--r--tools/designer/src/lib/shared/textpropertyeditor_p.h30
-rw-r--r--tools/designer/src/lib/shared/widgetdatabase.cpp30
-rw-r--r--tools/designer/src/lib/shared/widgetdatabase_p.h30
-rw-r--r--tools/designer/src/lib/shared/widgetfactory.cpp30
-rw-r--r--tools/designer/src/lib/shared/widgetfactory_p.h30
-rw-r--r--tools/designer/src/lib/shared/zoomwidget.cpp30
-rw-r--r--tools/designer/src/lib/shared/zoomwidget_p.h30
-rw-r--r--tools/designer/src/lib/uilib/abstractformbuilder.cpp245
-rw-r--r--tools/designer/src/lib/uilib/abstractformbuilder.h30
-rw-r--r--tools/designer/src/lib/uilib/container.h30
-rw-r--r--tools/designer/src/lib/uilib/container.qdoc186
-rw-r--r--tools/designer/src/lib/uilib/customwidget.h30
-rw-r--r--tools/designer/src/lib/uilib/customwidget.qdoc309
-rw-r--r--tools/designer/src/lib/uilib/formbuilder.cpp39
-rw-r--r--tools/designer/src/lib/uilib/formbuilder.h30
-rw-r--r--tools/designer/src/lib/uilib/formbuilderextra.cpp92
-rw-r--r--tools/designer/src/lib/uilib/formbuilderextra_p.h53
-rw-r--r--tools/designer/src/lib/uilib/formscriptrunner.cpp30
-rw-r--r--tools/designer/src/lib/uilib/formscriptrunner_p.h30
-rw-r--r--tools/designer/src/lib/uilib/properties.cpp30
-rw-r--r--tools/designer/src/lib/uilib/properties_p.h30
-rw-r--r--tools/designer/src/lib/uilib/qdesignerexportwidget.h30
-rw-r--r--tools/designer/src/lib/uilib/resourcebuilder.cpp30
-rw-r--r--tools/designer/src/lib/uilib/resourcebuilder_p.h30
-rw-r--r--tools/designer/src/lib/uilib/textbuilder.cpp30
-rw-r--r--tools/designer/src/lib/uilib/textbuilder_p.h30
-rw-r--r--tools/designer/src/lib/uilib/ui4.cpp30
-rw-r--r--tools/designer/src/lib/uilib/ui4_p.h30
-rw-r--r--tools/designer/src/lib/uilib/uilib.pri1
-rw-r--r--tools/designer/src/lib/uilib/uilib_global.h30
-rw-r--r--tools/designer/src/plugins/activeqt/qaxwidgetextrainfo.cpp30
-rw-r--r--tools/designer/src/plugins/activeqt/qaxwidgetextrainfo.h30
-rw-r--r--tools/designer/src/plugins/activeqt/qaxwidgetplugin.cpp30
-rw-r--r--tools/designer/src/plugins/activeqt/qaxwidgetplugin.h30
-rw-r--r--tools/designer/src/plugins/activeqt/qaxwidgetpropertysheet.cpp30
-rw-r--r--tools/designer/src/plugins/activeqt/qaxwidgetpropertysheet.h30
-rw-r--r--tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.cpp30
-rw-r--r--tools/designer/src/plugins/activeqt/qaxwidgettaskmenu.h30
-rw-r--r--tools/designer/src/plugins/activeqt/qdesigneraxwidget.cpp30
-rw-r--r--tools/designer/src/plugins/activeqt/qdesigneraxwidget.h30
-rw-r--r--tools/designer/src/plugins/phononwidgets/phononcollection.cpp30
-rw-r--r--tools/designer/src/plugins/phononwidgets/seeksliderplugin.cpp30
-rw-r--r--tools/designer/src/plugins/phononwidgets/seeksliderplugin.h30
-rw-r--r--tools/designer/src/plugins/phononwidgets/videoplayerplugin.cpp30
-rw-r--r--tools/designer/src/plugins/phononwidgets/videoplayerplugin.h30
-rw-r--r--tools/designer/src/plugins/phononwidgets/videoplayertaskmenu.cpp30
-rw-r--r--tools/designer/src/plugins/phononwidgets/videoplayertaskmenu.h30
-rw-r--r--tools/designer/src/plugins/phononwidgets/volumesliderplugin.cpp30
-rw-r--r--tools/designer/src/plugins/phononwidgets/volumesliderplugin.h30
-rw-r--r--tools/designer/src/plugins/qwebview/qwebview_plugin.cpp30
-rw-r--r--tools/designer/src/plugins/qwebview/qwebview_plugin.h30
-rw-r--r--tools/designer/src/plugins/tools/view3d/view3d.cpp30
-rw-r--r--tools/designer/src/plugins/tools/view3d/view3d.h30
-rw-r--r--tools/designer/src/plugins/tools/view3d/view3d_global.h30
-rw-r--r--tools/designer/src/plugins/tools/view3d/view3d_plugin.cpp30
-rw-r--r--tools/designer/src/plugins/tools/view3d/view3d_plugin.h30
-rw-r--r--tools/designer/src/plugins/tools/view3d/view3d_tool.cpp30
-rw-r--r--tools/designer/src/plugins/tools/view3d/view3d_tool.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3iconview/q3iconview_extrainfo.cpp30
-rw-r--r--tools/designer/src/plugins/widgets/q3iconview/q3iconview_extrainfo.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3iconview/q3iconview_plugin.cpp30
-rw-r--r--tools/designer/src/plugins/widgets/q3iconview/q3iconview_plugin.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3listbox/q3listbox_extrainfo.cpp30
-rw-r--r--tools/designer/src/plugins/widgets/q3listbox/q3listbox_extrainfo.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3listbox/q3listbox_plugin.cpp30
-rw-r--r--tools/designer/src/plugins/widgets/q3listbox/q3listbox_plugin.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3listview/q3listview_extrainfo.cpp30
-rw-r--r--tools/designer/src/plugins/widgets/q3listview/q3listview_extrainfo.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3listview/q3listview_plugin.cpp30
-rw-r--r--tools/designer/src/plugins/widgets/q3listview/q3listview_plugin.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3mainwindow/q3mainwindow_container.cpp30
-rw-r--r--tools/designer/src/plugins/widgets/q3mainwindow/q3mainwindow_container.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3mainwindow/q3mainwindow_plugin.cpp30
-rw-r--r--tools/designer/src/plugins/widgets/q3mainwindow/q3mainwindow_plugin.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3table/q3table_extrainfo.cpp30
-rw-r--r--tools/designer/src/plugins/widgets/q3table/q3table_extrainfo.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3table/q3table_plugin.cpp30
-rw-r--r--tools/designer/src/plugins/widgets/q3table/q3table_plugin.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3textedit/q3textedit_extrainfo.cpp30
-rw-r--r--tools/designer/src/plugins/widgets/q3textedit/q3textedit_extrainfo.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3textedit/q3textedit_plugin.cpp30
-rw-r--r--tools/designer/src/plugins/widgets/q3textedit/q3textedit_plugin.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3toolbar/q3toolbar_extrainfo.cpp30
-rw-r--r--tools/designer/src/plugins/widgets/q3toolbar/q3toolbar_extrainfo.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3toolbar/q3toolbar_plugin.cpp30
-rw-r--r--tools/designer/src/plugins/widgets/q3toolbar/q3toolbar_plugin.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3widgets/q3widget_plugins.cpp30
-rw-r--r--tools/designer/src/plugins/widgets/q3widgets/q3widget_plugins.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3widgetstack/q3widgetstack_container.cpp30
-rw-r--r--tools/designer/src/plugins/widgets/q3widgetstack/q3widgetstack_container.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3widgetstack/q3widgetstack_plugin.cpp30
-rw-r--r--tools/designer/src/plugins/widgets/q3widgetstack/q3widgetstack_plugin.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3widgetstack/qdesigner_q3widgetstack.cpp30
-rw-r--r--tools/designer/src/plugins/widgets/q3widgetstack/qdesigner_q3widgetstack_p.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.cpp32
-rw-r--r--tools/designer/src/plugins/widgets/q3wizard/q3wizard_container.h30
-rw-r--r--tools/designer/src/plugins/widgets/q3wizard/q3wizard_plugin.cpp30
-rw-r--r--tools/designer/src/plugins/widgets/q3wizard/q3wizard_plugin.h30
-rw-r--r--tools/designer/src/plugins/widgets/qt3supportwidgets.cpp30
-rw-r--r--tools/designer/src/src.pro1
-rw-r--r--tools/designer/src/uitools/quiloader.cpp31
-rw-r--r--tools/designer/src/uitools/quiloader.h33
-rw-r--r--tools/designer/src/uitools/quiloader_p.h30
-rw-r--r--tools/designer/src/uitools/uitools.pro6
-rw-r--r--tools/designer/translations/translations.pro22
-rwxr-xr-xtools/installer/batch/build.bat33
-rwxr-xr-xtools/installer/batch/copy.bat33
-rwxr-xr-xtools/installer/batch/delete.bat33
-rwxr-xr-xtools/installer/batch/env.bat33
-rwxr-xr-xtools/installer/batch/extract.bat33
-rwxr-xr-xtools/installer/batch/installer.bat33
-rwxr-xr-xtools/installer/batch/log.bat33
-rwxr-xr-xtools/installer/batch/toupper.bat33
-rw-r--r--tools/installer/config/config.default.sample33
-rw-r--r--tools/installer/config/mingw-opensource.conf33
-rwxr-xr-xtools/installer/iwmake.bat33
-rw-r--r--tools/installer/nsis/confirmpage.ini33
-rw-r--r--tools/installer/nsis/gwdownload.ini33
-rw-r--r--tools/installer/nsis/gwmirror.ini33
-rw-r--r--tools/installer/nsis/includes/global.nsh35
-rw-r--r--tools/installer/nsis/includes/instdir.nsh35
-rw-r--r--tools/installer/nsis/includes/list.nsh35
-rw-r--r--tools/installer/nsis/includes/qtcommon.nsh57
-rw-r--r--tools/installer/nsis/includes/qtenv.nsh33
-rw-r--r--tools/installer/nsis/includes/system.nsh35
-rw-r--r--tools/installer/nsis/installer.nsi33
-rw-r--r--tools/installer/nsis/modules/environment.nsh33
-rw-r--r--tools/installer/nsis/modules/mingw.nsh36
-rw-r--r--tools/installer/nsis/modules/opensource.nsh34
-rw-r--r--tools/installer/nsis/modules/registeruiext.nsh33
-rw-r--r--tools/installer/nsis/opensource.ini33
-rw-r--r--tools/kmap2qmap/main.cpp30
-rw-r--r--tools/linguist/LICENSE.GPL280
-rw-r--r--tools/linguist/lconvert/main.cpp52
-rw-r--r--tools/linguist/linguist/batchtranslation.ui30
-rw-r--r--tools/linguist/linguist/batchtranslationdialog.cpp30
-rw-r--r--tools/linguist/linguist/batchtranslationdialog.h30
-rw-r--r--tools/linguist/linguist/errorsview.cpp30
-rw-r--r--tools/linguist/linguist/errorsview.h30
-rw-r--r--tools/linguist/linguist/finddialog.cpp32
-rw-r--r--tools/linguist/linguist/finddialog.h30
-rw-r--r--tools/linguist/linguist/finddialog.ui30
-rw-r--r--tools/linguist/linguist/formpreviewview.cpp30
-rw-r--r--tools/linguist/linguist/formpreviewview.h30
-rw-r--r--tools/linguist/linguist/globals.cpp30
-rw-r--r--tools/linguist/linguist/globals.h30
-rw-r--r--tools/linguist/linguist/linguist.pro23
-rw-r--r--tools/linguist/linguist/main.cpp30
-rw-r--r--tools/linguist/linguist/mainwindow.cpp66
-rw-r--r--tools/linguist/linguist/mainwindow.h31
-rw-r--r--tools/linguist/linguist/mainwindow.ui32
-rw-r--r--tools/linguist/linguist/messageeditor.cpp66
-rw-r--r--tools/linguist/linguist/messageeditor.h30
-rw-r--r--tools/linguist/linguist/messageeditorwidgets.cpp30
-rw-r--r--tools/linguist/linguist/messageeditorwidgets.h30
-rw-r--r--tools/linguist/linguist/messagehighlighter.cpp30
-rw-r--r--tools/linguist/linguist/messagehighlighter.h30
-rw-r--r--tools/linguist/linguist/messagemodel.cpp58
-rw-r--r--tools/linguist/linguist/messagemodel.h30
-rw-r--r--tools/linguist/linguist/phrase.cpp30
-rw-r--r--tools/linguist/linguist/phrase.h30
-rw-r--r--tools/linguist/linguist/phrasebookbox.cpp32
-rw-r--r--tools/linguist/linguist/phrasebookbox.h30
-rw-r--r--tools/linguist/linguist/phrasebookbox.ui30
-rw-r--r--tools/linguist/linguist/phrasemodel.cpp30
-rw-r--r--tools/linguist/linguist/phrasemodel.h30
-rw-r--r--tools/linguist/linguist/phraseview.cpp30
-rw-r--r--tools/linguist/linguist/phraseview.h30
-rw-r--r--tools/linguist/linguist/printout.cpp30
-rw-r--r--tools/linguist/linguist/printout.h30
-rw-r--r--tools/linguist/linguist/recentfiles.cpp30
-rw-r--r--tools/linguist/linguist/recentfiles.h30
-rw-r--r--tools/linguist/linguist/sourcecodeview.cpp30
-rw-r--r--tools/linguist/linguist/sourcecodeview.h30
-rw-r--r--tools/linguist/linguist/statistics.cpp30
-rw-r--r--tools/linguist/linguist/statistics.h30
-rw-r--r--tools/linguist/linguist/statistics.ui30
-rw-r--r--tools/linguist/linguist/translatedialog.cpp30
-rw-r--r--tools/linguist/linguist/translatedialog.h30
-rw-r--r--tools/linguist/linguist/translatedialog.ui30
-rw-r--r--tools/linguist/linguist/translationsettingsdialog.cpp63
-rw-r--r--tools/linguist/linguist/translationsettingsdialog.h32
-rw-r--r--tools/linguist/lrelease/lrelease.142
-rw-r--r--tools/linguist/lrelease/lrelease.pro20
-rw-r--r--tools/linguist/lrelease/main.cpp230
-rw-r--r--tools/linguist/lupdate/cpp.cpp1168
-rw-r--r--tools/linguist/lupdate/java.cpp31
-rw-r--r--tools/linguist/lupdate/lupdate.130
-rw-r--r--tools/linguist/lupdate/lupdate.h30
-rw-r--r--tools/linguist/lupdate/main.cpp220
-rw-r--r--tools/linguist/lupdate/merge.cpp115
-rw-r--r--tools/linguist/lupdate/qscript.cpp32
-rw-r--r--tools/linguist/lupdate/qscript.g33
-rw-r--r--tools/linguist/lupdate/ui.cpp30
-rw-r--r--tools/linguist/phrasebooks/french.qph112
-rw-r--r--tools/linguist/phrasebooks/russian.qph92
-rw-r--r--tools/linguist/shared/abstractproitemvisitor.h30
-rw-r--r--tools/linguist/shared/numerus.cpp30
-rw-r--r--tools/linguist/shared/po.cpp30
-rw-r--r--tools/linguist/shared/profileevaluator.cpp30
-rw-r--r--tools/linguist/shared/profileevaluator.h30
-rw-r--r--tools/linguist/shared/proitems.cpp30
-rw-r--r--tools/linguist/shared/proitems.h30
-rw-r--r--tools/linguist/shared/proparserutils.h55
-rw-r--r--tools/linguist/shared/proreader.cpp30
-rw-r--r--tools/linguist/shared/proreader.h30
-rw-r--r--tools/linguist/shared/qm.cpp80
-rw-r--r--tools/linguist/shared/qph.cpp60
-rw-r--r--tools/linguist/shared/simtexth.cpp30
-rw-r--r--tools/linguist/shared/simtexth.h30
-rw-r--r--tools/linguist/shared/translator.cpp240
-rw-r--r--tools/linguist/shared/translator.h66
-rw-r--r--tools/linguist/shared/translatormessage.cpp60
-rw-r--r--tools/linguist/shared/translatormessage.h61
-rw-r--r--tools/linguist/shared/ts.cpp30
-rw-r--r--tools/linguist/shared/xliff.cpp45
-rw-r--r--tools/linguist/tests/data/main.cpp40
-rw-r--r--tools/linguist/tests/tst_linguist.cpp41
-rw-r--r--tools/linguist/tests/tst_linguist.h41
-rw-r--r--tools/linguist/tests/tst_lupdate.cpp46
-rw-r--r--tools/linguist/tests/tst_simtexth.cpp46
-rw-r--r--tools/macdeployqt/macchangeqt/main.cpp30
-rw-r--r--tools/macdeployqt/macdeployqt/main.cpp30
-rw-r--r--tools/macdeployqt/shared/shared.cpp30
-rw-r--r--tools/macdeployqt/shared/shared.h30
-rw-r--r--tools/macdeployqt/tests/tst_deployment_mac.cpp30
-rw-r--r--tools/makeqpf/main.cpp30
-rw-r--r--tools/makeqpf/mainwindow.cpp32
-rw-r--r--tools/makeqpf/mainwindow.h30
-rw-r--r--tools/makeqpf/qpf2.cpp34
-rw-r--r--tools/makeqpf/qpf2.h30
-rw-r--r--tools/pixeltool/main.cpp30
-rw-r--r--tools/pixeltool/qpixeltool.cpp30
-rw-r--r--tools/pixeltool/qpixeltool.h30
-rw-r--r--tools/porting/src/ast.cpp32
-rw-r--r--tools/porting/src/ast.h32
-rw-r--r--tools/porting/src/codemodel.cpp32
-rw-r--r--tools/porting/src/codemodel.h32
-rw-r--r--tools/porting/src/codemodelattributes.cpp30
-rw-r--r--tools/porting/src/codemodelattributes.h30
-rw-r--r--tools/porting/src/codemodelwalker.cpp30
-rw-r--r--tools/porting/src/codemodelwalker.h30
-rw-r--r--tools/porting/src/cpplexer.cpp32
-rw-r--r--tools/porting/src/cpplexer.h32
-rw-r--r--tools/porting/src/errors.cpp32
-rw-r--r--tools/porting/src/errors.h32
-rw-r--r--tools/porting/src/fileporter.cpp30
-rw-r--r--tools/porting/src/fileporter.h30
-rw-r--r--tools/porting/src/filewriter.cpp44
-rw-r--r--tools/porting/src/filewriter.h30
-rw-r--r--tools/porting/src/list.h30
-rw-r--r--tools/porting/src/logger.cpp30
-rw-r--r--tools/porting/src/logger.h30
-rw-r--r--tools/porting/src/parser.cpp32
-rw-r--r--tools/porting/src/parser.h32
-rw-r--r--tools/porting/src/port.cpp30
-rw-r--r--tools/porting/src/portingrules.cpp30
-rw-r--r--tools/porting/src/portingrules.h30
-rw-r--r--tools/porting/src/preprocessorcontrol.cpp30
-rw-r--r--tools/porting/src/preprocessorcontrol.h30
-rw-r--r--tools/porting/src/projectporter.cpp30
-rw-r--r--tools/porting/src/projectporter.h30
-rw-r--r--tools/porting/src/proparser.cpp30
-rw-r--r--tools/porting/src/proparser.h30
-rw-r--r--tools/porting/src/q3porting.xml34
-rw-r--r--tools/porting/src/qtsimplexml.cpp30
-rw-r--r--tools/porting/src/qtsimplexml.h30
-rw-r--r--tools/porting/src/replacetoken.cpp30
-rw-r--r--tools/porting/src/replacetoken.h30
-rw-r--r--tools/porting/src/rpp.cpp32
-rw-r--r--tools/porting/src/rpp.h32
-rw-r--r--tools/porting/src/rppexpressionbuilder.cpp30
-rw-r--r--tools/porting/src/rppexpressionbuilder.h30
-rw-r--r--tools/porting/src/rpplexer.cpp32
-rw-r--r--tools/porting/src/rpplexer.h32
-rw-r--r--tools/porting/src/rpptreeevaluator.cpp32
-rw-r--r--tools/porting/src/rpptreeevaluator.h30
-rw-r--r--tools/porting/src/rpptreewalker.cpp30
-rw-r--r--tools/porting/src/rpptreewalker.h30
-rw-r--r--tools/porting/src/semantic.cpp32
-rw-r--r--tools/porting/src/semantic.h32
-rw-r--r--tools/porting/src/smallobject.cpp32
-rw-r--r--tools/porting/src/smallobject.h32
-rw-r--r--tools/porting/src/textreplacement.cpp30
-rw-r--r--tools/porting/src/textreplacement.h30
-rw-r--r--tools/porting/src/tokenengine.cpp30
-rw-r--r--tools/porting/src/tokenengine.h30
-rw-r--r--tools/porting/src/tokenizer.cpp32
-rw-r--r--tools/porting/src/tokenizer.h32
-rw-r--r--tools/porting/src/tokenreplacements.cpp30
-rw-r--r--tools/porting/src/tokenreplacements.h30
-rw-r--r--tools/porting/src/tokens.h32
-rw-r--r--tools/porting/src/tokenstreamadapter.h32
-rw-r--r--tools/porting/src/translationunit.cpp30
-rw-r--r--tools/porting/src/translationunit.h30
-rw-r--r--tools/porting/src/treewalker.cpp32
-rw-r--r--tools/porting/src/treewalker.h32
-rw-r--r--tools/qconfig/LICENSE.GPL280
-rw-r--r--tools/qconfig/feature.cpp30
-rw-r--r--tools/qconfig/feature.h30
-rw-r--r--tools/qconfig/featuretreemodel.cpp30
-rw-r--r--tools/qconfig/featuretreemodel.h30
-rw-r--r--tools/qconfig/graphics.h30
-rw-r--r--tools/qconfig/main.cpp44
-rw-r--r--tools/qdbus/qdbus/qdbus.cpp107
-rw-r--r--tools/qdbus/qdbuscpp2xml/qdbuscpp2xml.cpp30
-rw-r--r--tools/qdbus/qdbusviewer/main.cpp30
-rw-r--r--tools/qdbus/qdbusviewer/propertydialog.cpp30
-rw-r--r--tools/qdbus/qdbusviewer/propertydialog.h30
-rw-r--r--tools/qdbus/qdbusviewer/qdbusmodel.cpp30
-rw-r--r--tools/qdbus/qdbusviewer/qdbusmodel.h30
-rw-r--r--tools/qdbus/qdbusviewer/qdbusviewer.cpp37
-rw-r--r--tools/qdbus/qdbusviewer/qdbusviewer.h30
-rw-r--r--tools/qdbus/qdbusxml2cpp/qdbusxml2cpp.cpp30
-rw-r--r--tools/qdoc3/apigenerator.cpp30
-rw-r--r--tools/qdoc3/apigenerator.h30
-rw-r--r--tools/qdoc3/archiveextractor.cpp30
-rw-r--r--tools/qdoc3/archiveextractor.h30
-rw-r--r--tools/qdoc3/atom.cpp32
-rw-r--r--tools/qdoc3/atom.h34
-rw-r--r--tools/qdoc3/bookgenerator.cpp30
-rw-r--r--tools/qdoc3/bookgenerator.h30
-rw-r--r--tools/qdoc3/ccodeparser.cpp30
-rw-r--r--tools/qdoc3/ccodeparser.h30
-rw-r--r--tools/qdoc3/codechunk.cpp30
-rw-r--r--tools/qdoc3/codechunk.h30
-rw-r--r--tools/qdoc3/codemarker.cpp34
-rw-r--r--tools/qdoc3/codemarker.h32
-rw-r--r--tools/qdoc3/codeparser.cpp30
-rw-r--r--tools/qdoc3/codeparser.h30
-rw-r--r--tools/qdoc3/command.cpp30
-rw-r--r--tools/qdoc3/command.h30
-rw-r--r--tools/qdoc3/config.cpp42
-rw-r--r--tools/qdoc3/config.h35
-rw-r--r--tools/qdoc3/cppcodemarker.cpp109
-rw-r--r--tools/qdoc3/cppcodemarker.h30
-rw-r--r--tools/qdoc3/cppcodeparser.cpp268
-rw-r--r--tools/qdoc3/cppcodeparser.h55
-rw-r--r--tools/qdoc3/cpptoqsconverter.cpp30
-rw-r--r--tools/qdoc3/cpptoqsconverter.h30
-rw-r--r--tools/qdoc3/dcfsection.cpp30
-rw-r--r--tools/qdoc3/dcfsection.h30
-rw-r--r--tools/qdoc3/doc.cpp124
-rw-r--r--tools/qdoc3/doc.h30
-rw-r--r--tools/qdoc3/editdistance.cpp30
-rw-r--r--tools/qdoc3/editdistance.h30
-rw-r--r--tools/qdoc3/generator.cpp144
-rw-r--r--tools/qdoc3/generator.h34
-rw-r--r--tools/qdoc3/helpprojectwriter.cpp42
-rw-r--r--tools/qdoc3/helpprojectwriter.h30
-rw-r--r--tools/qdoc3/htmlgenerator.cpp506
-rw-r--r--tools/qdoc3/htmlgenerator.h89
-rw-r--r--tools/qdoc3/jambiapiparser.cpp30
-rw-r--r--tools/qdoc3/jambiapiparser.h30
-rw-r--r--tools/qdoc3/javacodemarker.cpp30
-rw-r--r--tools/qdoc3/javacodemarker.h30
-rw-r--r--tools/qdoc3/javadocgenerator.cpp30
-rw-r--r--tools/qdoc3/javadocgenerator.h30
-rw-r--r--tools/qdoc3/linguistgenerator.cpp30
-rw-r--r--tools/qdoc3/linguistgenerator.h30
-rw-r--r--tools/qdoc3/location.cpp30
-rw-r--r--tools/qdoc3/location.h30
-rw-r--r--tools/qdoc3/loutgenerator.cpp30
-rw-r--r--tools/qdoc3/loutgenerator.h30
-rw-r--r--tools/qdoc3/main.cpp31
-rw-r--r--tools/qdoc3/mangenerator.cpp30
-rw-r--r--tools/qdoc3/mangenerator.h30
-rw-r--r--tools/qdoc3/node.cpp244
-rw-r--r--tools/qdoc3/node.h111
-rw-r--r--tools/qdoc3/openedlist.cpp30
-rw-r--r--tools/qdoc3/openedlist.h30
-rw-r--r--tools/qdoc3/pagegenerator.cpp49
-rw-r--r--tools/qdoc3/pagegenerator.h30
-rw-r--r--tools/qdoc3/plaincodemarker.cpp30
-rw-r--r--tools/qdoc3/plaincodemarker.h30
-rw-r--r--tools/qdoc3/polyarchiveextractor.cpp30
-rw-r--r--tools/qdoc3/polyarchiveextractor.h30
-rw-r--r--tools/qdoc3/polyuncompressor.cpp30
-rw-r--r--tools/qdoc3/polyuncompressor.h30
-rw-r--r--tools/qdoc3/qdoc3.pro1
-rw-r--r--tools/qdoc3/qsakernelparser.cpp30
-rw-r--r--tools/qdoc3/qsakernelparser.h30
-rw-r--r--tools/qdoc3/qscodemarker.cpp30
-rw-r--r--tools/qdoc3/qscodemarker.h30
-rw-r--r--tools/qdoc3/qscodeparser.cpp30
-rw-r--r--tools/qdoc3/qscodeparser.h30
-rw-r--r--tools/qdoc3/quoter.cpp30
-rw-r--r--tools/qdoc3/quoter.h30
-rw-r--r--tools/qdoc3/separator.cpp30
-rw-r--r--tools/qdoc3/separator.h30
-rw-r--r--tools/qdoc3/sgmlgenerator.cpp30
-rw-r--r--tools/qdoc3/sgmlgenerator.h30
-rw-r--r--tools/qdoc3/test/assistant.qdocconf8
-rw-r--r--tools/qdoc3/test/classic.css66
-rw-r--r--tools/qdoc3/test/designer.qdocconf8
-rw-r--r--tools/qdoc3/test/eclipse-integration.qdocconf6
-rw-r--r--tools/qdoc3/test/linguist.qdocconf8
-rw-r--r--tools/qdoc3/test/macros.qdocconf5
-rw-r--r--tools/qdoc3/test/qmake.qdocconf8
-rw-r--r--tools/qdoc3/test/qt-api-only-with-xcode.qdocconf29
-rw-r--r--tools/qdoc3/test/qt-api-only.qdocconf8
-rw-r--r--tools/qdoc3/test/qt-build-docs-with-xcode.qdocconf3
-rw-r--r--tools/qdoc3/test/qt-build-docs.qdocconf23
-rw-r--r--tools/qdoc3/test/qt-cpp-ignore.qdocconf2
-rw-r--r--tools/qdoc3/test/qt-html-templates.qdocconf32
-rw-r--r--tools/qdoc3/test/qt-inc.qdocconf149
-rw-r--r--tools/qdoc3/test/qt-with-xcode.qdocconf3
-rw-r--r--tools/qdoc3/test/qt.qdocconf22
-rw-r--r--tools/qdoc3/test/standalone-eclipse-integration.qdocconf2
-rw-r--r--tools/qdoc3/text.cpp30
-rw-r--r--tools/qdoc3/text.h30
-rw-r--r--tools/qdoc3/tokenizer.cpp30
-rw-r--r--tools/qdoc3/tokenizer.h30
-rw-r--r--tools/qdoc3/tr.h30
-rw-r--r--tools/qdoc3/tree.cpp43
-rw-r--r--tools/qdoc3/tree.h30
-rw-r--r--tools/qdoc3/uncompressor.cpp30
-rw-r--r--tools/qdoc3/uncompressor.h30
-rw-r--r--tools/qdoc3/webxmlgenerator.cpp30
-rw-r--r--tools/qdoc3/webxmlgenerator.h30
-rw-r--r--tools/qdoc3/yyindent.cpp30
-rw-r--r--tools/qev/qev.cpp30
-rw-r--r--tools/qtconcurrent/codegenerator/example/main.cpp30
-rw-r--r--tools/qtconcurrent/codegenerator/src/codegenerator.cpp30
-rw-r--r--tools/qtconcurrent/codegenerator/src/codegenerator.h30
-rw-r--r--tools/qtconcurrent/generaterun/main.cpp30
-rw-r--r--tools/qtconfig/LICENSE.GPL280
-rw-r--r--tools/qtconfig/colorbutton.cpp30
-rw-r--r--tools/qtconfig/colorbutton.h30
-rw-r--r--tools/qtconfig/main.cpp30
-rw-r--r--tools/qtconfig/mainwindow.cpp35
-rw-r--r--tools/qtconfig/mainwindow.h30
-rw-r--r--tools/qtconfig/mainwindowbase.cpp30
-rw-r--r--tools/qtconfig/mainwindowbase.h30
-rw-r--r--tools/qtconfig/mainwindowbase.ui30
-rw-r--r--tools/qtconfig/paletteeditoradvanced.cpp30
-rw-r--r--tools/qtconfig/paletteeditoradvanced.h30
-rw-r--r--tools/qtconfig/paletteeditoradvancedbase.cpp30
-rw-r--r--tools/qtconfig/paletteeditoradvancedbase.h30
-rw-r--r--tools/qtconfig/paletteeditoradvancedbase.ui30
-rw-r--r--tools/qtconfig/previewframe.cpp30
-rw-r--r--tools/qtconfig/previewframe.h30
-rw-r--r--tools/qtconfig/previewwidget.cpp30
-rw-r--r--tools/qtconfig/previewwidget.h30
-rw-r--r--tools/qtconfig/previewwidgetbase.cpp30
-rw-r--r--tools/qtconfig/previewwidgetbase.h30
-rw-r--r--tools/qtconfig/previewwidgetbase.ui30
-rw-r--r--tools/qtconfig/translations/translations.pro11
-rw-r--r--tools/qtestlib/chart/database.cpp30
-rw-r--r--tools/qtestlib/chart/database.h30
-rw-r--r--tools/qtestlib/chart/main.cpp30
-rw-r--r--tools/qtestlib/chart/reportgenerator.cpp30
-rw-r--r--tools/qtestlib/chart/reportgenerator.h30
-rw-r--r--tools/qtestlib/updater/main.cpp30
-rw-r--r--tools/qtestlib/wince/cetcpsync/main.cpp30
-rw-r--r--tools/qtestlib/wince/cetcpsync/qtcesterconnection.cpp30
-rw-r--r--tools/qtestlib/wince/cetcpsync/qtcesterconnection.h30
-rw-r--r--tools/qtestlib/wince/cetcpsync/remoteconnection.cpp30
-rw-r--r--tools/qtestlib/wince/cetcpsync/remoteconnection.h30
-rw-r--r--tools/qtestlib/wince/cetcpsyncserver/commands.cpp30
-rw-r--r--tools/qtestlib/wince/cetcpsyncserver/commands.h30
-rw-r--r--tools/qtestlib/wince/cetcpsyncserver/connectionmanager.cpp30
-rw-r--r--tools/qtestlib/wince/cetcpsyncserver/connectionmanager.h30
-rw-r--r--tools/qtestlib/wince/cetcpsyncserver/main.cpp30
-rw-r--r--tools/qtestlib/wince/cetcpsyncserver/transfer_global.h30
-rw-r--r--tools/qtestlib/wince/cetest/activesyncconnection.cpp30
-rw-r--r--tools/qtestlib/wince/cetest/activesyncconnection.h30
-rw-r--r--tools/qtestlib/wince/cetest/bootstrapped.pri7
-rw-r--r--tools/qtestlib/wince/cetest/cetcpsyncconnection.cpp30
-rw-r--r--tools/qtestlib/wince/cetest/cetcpsyncconnection.h30
-rw-r--r--tools/qtestlib/wince/cetest/cetest.pro3
-rw-r--r--tools/qtestlib/wince/cetest/deployment.cpp30
-rw-r--r--tools/qtestlib/wince/cetest/deployment.h30
-rw-r--r--tools/qtestlib/wince/cetest/main.cpp68
-rw-r--r--tools/qtestlib/wince/cetest/qmake_include.pri4
-rw-r--r--tools/qtestlib/wince/cetest/remoteconnection.cpp30
-rw-r--r--tools/qtestlib/wince/cetest/remoteconnection.h30
-rw-r--r--tools/qtestlib/wince/remotelib/commands.cpp30
-rw-r--r--tools/qtestlib/wince/remotelib/commands.h30
-rw-r--r--tools/qttracereplay/main.cpp194
-rw-r--r--tools/qttracereplay/qttracereplay.pro15
-rw-r--r--tools/qvfb/LICENSE.GPL280
-rw-r--r--tools/qvfb/config.ui39
-rw-r--r--tools/qvfb/gammaview.h30
-rw-r--r--tools/qvfb/main.cpp30
-rw-r--r--tools/qvfb/qanimationwriter.cpp30
-rw-r--r--tools/qvfb/qanimationwriter.h30
-rw-r--r--tools/qvfb/qtopiakeysym.h30
-rw-r--r--tools/qvfb/qvfb.cpp40
-rw-r--r--tools/qvfb/qvfb.h30
-rw-r--r--tools/qvfb/qvfb.pro11
-rw-r--r--tools/qvfb/qvfbmmap.cpp30
-rw-r--r--tools/qvfb/qvfbmmap.h30
-rw-r--r--tools/qvfb/qvfbprotocol.cpp36
-rw-r--r--tools/qvfb/qvfbprotocol.h30
-rw-r--r--tools/qvfb/qvfbratedlg.cpp30
-rw-r--r--tools/qvfb/qvfbratedlg.h30
-rw-r--r--tools/qvfb/qvfbshmem.cpp42
-rw-r--r--tools/qvfb/qvfbshmem.h30
-rw-r--r--tools/qvfb/qvfbview.cpp40
-rw-r--r--tools/qvfb/qvfbview.h30
-rw-r--r--tools/qvfb/qvfbx11view.cpp30
-rw-r--r--tools/qvfb/qvfbx11view.h30
-rw-r--r--tools/qvfb/translations/translations.pro23
-rw-r--r--tools/qvfb/x11keyfaker.cpp30
-rw-r--r--tools/qvfb/x11keyfaker.h30
-rw-r--r--tools/shared/deviceskin/deviceskin.cpp30
-rw-r--r--tools/shared/deviceskin/deviceskin.h30
-rw-r--r--tools/shared/findwidget/abstractfindwidget.cpp30
-rw-r--r--tools/shared/findwidget/abstractfindwidget.h30
-rw-r--r--tools/shared/findwidget/itemviewfindwidget.cpp30
-rw-r--r--tools/shared/findwidget/itemviewfindwidget.h30
-rw-r--r--tools/shared/findwidget/texteditfindwidget.cpp30
-rw-r--r--tools/shared/findwidget/texteditfindwidget.h30
-rw-r--r--tools/shared/fontpanel/fontpanel.cpp40
-rw-r--r--tools/shared/fontpanel/fontpanel.h30
-rw-r--r--tools/shared/qtgradienteditor/qtcolorbutton.cpp44
-rw-r--r--tools/shared/qtgradienteditor/qtcolorbutton.h32
-rw-r--r--tools/shared/qtgradienteditor/qtcolorline.cpp34
-rw-r--r--tools/shared/qtgradienteditor/qtcolorline.h32
-rw-r--r--tools/shared/qtgradienteditor/qtgradientdialog.cpp38
-rw-r--r--tools/shared/qtgradienteditor/qtgradientdialog.h32
-rw-r--r--tools/shared/qtgradienteditor/qtgradientdialog.ui30
-rw-r--r--tools/shared/qtgradienteditor/qtgradienteditor.cpp58
-rw-r--r--tools/shared/qtgradienteditor/qtgradienteditor.h32
-rw-r--r--tools/shared/qtgradienteditor/qtgradienteditor.ui30
-rw-r--r--tools/shared/qtgradienteditor/qtgradientmanager.cpp30
-rw-r--r--tools/shared/qtgradienteditor/qtgradientmanager.h30
-rw-r--r--tools/shared/qtgradienteditor/qtgradientstopscontroller.cpp84
-rw-r--r--tools/shared/qtgradienteditor/qtgradientstopscontroller.h32
-rw-r--r--tools/shared/qtgradienteditor/qtgradientstopsmodel.cpp37
-rw-r--r--tools/shared/qtgradienteditor/qtgradientstopsmodel.h34
-rw-r--r--tools/shared/qtgradienteditor/qtgradientstopswidget.cpp90
-rw-r--r--tools/shared/qtgradienteditor/qtgradientstopswidget.h32
-rw-r--r--tools/shared/qtgradienteditor/qtgradientutils.cpp30
-rw-r--r--tools/shared/qtgradienteditor/qtgradientutils.h30
-rw-r--r--tools/shared/qtgradienteditor/qtgradientview.cpp68
-rw-r--r--tools/shared/qtgradienteditor/qtgradientview.h30
-rw-r--r--tools/shared/qtgradienteditor/qtgradientviewdialog.cpp38
-rw-r--r--tools/shared/qtgradienteditor/qtgradientviewdialog.h30
-rw-r--r--tools/shared/qtgradienteditor/qtgradientviewdialog.ui30
-rw-r--r--tools/shared/qtgradienteditor/qtgradientwidget.cpp34
-rw-r--r--tools/shared/qtgradienteditor/qtgradientwidget.h32
-rw-r--r--tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.cpp34
-rw-r--r--tools/shared/qtpropertybrowser/qtbuttonpropertybrowser.h32
-rw-r--r--tools/shared/qtpropertybrowser/qteditorfactory.cpp376
-rw-r--r--tools/shared/qtpropertybrowser/qteditorfactory.h60
-rw-r--r--tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.cpp34
-rw-r--r--tools/shared/qtpropertybrowser/qtgroupboxpropertybrowser.h32
-rw-r--r--tools/shared/qtpropertybrowser/qtpropertybrowser.cpp64
-rw-r--r--tools/shared/qtpropertybrowser/qtpropertybrowser.h38
-rw-r--r--tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp30
-rw-r--r--tools/shared/qtpropertybrowser/qtpropertybrowserutils_p.h30
-rw-r--r--tools/shared/qtpropertybrowser/qtpropertymanager.cpp270
-rw-r--r--tools/shared/qtpropertybrowser/qtpropertymanager.h74
-rw-r--r--tools/shared/qtpropertybrowser/qttreepropertybrowser.cpp40
-rw-r--r--tools/shared/qtpropertybrowser/qttreepropertybrowser.h32
-rw-r--r--tools/shared/qtpropertybrowser/qtvariantproperty.cpp374
-rw-r--r--tools/shared/qtpropertybrowser/qtvariantproperty.h36
-rw-r--r--tools/shared/qttoolbardialog/qttoolbardialog.cpp64
-rw-r--r--tools/shared/qttoolbardialog/qttoolbardialog.h34
-rw-r--r--tools/tools.pro5
-rw-r--r--tools/xmlpatterns/main.cpp36
-rw-r--r--tools/xmlpatterns/main.h47
-rw-r--r--tools/xmlpatterns/qapplicationargument.cpp30
-rw-r--r--tools/xmlpatterns/qapplicationargument_p.h33
-rw-r--r--tools/xmlpatterns/qapplicationargumentparser.cpp30
-rw-r--r--tools/xmlpatterns/qapplicationargumentparser_p.h33
-rw-r--r--tools/xmlpatterns/qcoloringmessagehandler.cpp30
-rw-r--r--tools/xmlpatterns/qcoloringmessagehandler_p.h47
-rw-r--r--tools/xmlpatterns/qcoloroutput.cpp48
-rw-r--r--tools/xmlpatterns/qcoloroutput_p.h47
-rw-r--r--tools/xmlpatterns/xmlpatterns.pro3
-rw-r--r--tools/xmlpatternsvalidator/main.cpp119
-rw-r--r--tools/xmlpatternsvalidator/main.h50
-rw-r--r--tools/xmlpatternsvalidator/xmlpatternsvalidator.pro2
-rw-r--r--translations/assistant_adp_de.ts1606
-rw-r--r--translations/assistant_adp_ja.ts1047
-rw-r--r--translations/assistant_adp_pl.ts994
-rw-r--r--translations/assistant_adp_ru.ts977
-rw-r--r--translations/assistant_adp_untranslated.ts967
-rw-r--r--translations/assistant_adp_zh_CN.ts999
-rw-r--r--translations/assistant_adp_zh_TW.ts1000
-rw-r--r--translations/assistant_de.ts86
-rw-r--r--translations/assistant_fr.ts1089
-rw-r--r--translations/assistant_pl.ts338
-rw-r--r--translations/assistant_ru.ts108
-rw-r--r--translations/assistant_untranslated.ts1059
-rw-r--r--translations/designer_de.ts113
-rw-r--r--translations/designer_fr.ts7046
-rw-r--r--translations/designer_pl.ts918
-rw-r--r--translations/designer_ru.ts7049
-rw-r--r--translations/designer_sl.ts7031
-rw-r--r--translations/designer_untranslated.ts6950
-rw-r--r--translations/designer_zh_CN.ts2
-rw-r--r--translations/linguist_de.ts60
-rw-r--r--translations/linguist_pl.ts433
-rw-r--r--translations/linguist_ru.ts366
-rw-r--r--translations/linguist_untranslated.ts1964
-rw-r--r--translations/linguist_zh_CN.ts4
-rw-r--r--translations/qt_ar.ts3
-rw-r--r--translations/qt_de.ts3979
-rw-r--r--translations/qt_fr.ts228
-rw-r--r--translations/qt_help_de.ts69
-rw-r--r--translations/qt_help_fr.ts375
-rw-r--r--translations/qt_help_pl.ts130
-rw-r--r--translations/qt_help_ru.ts36
-rw-r--r--translations/qt_help_untranslated.ts355
-rw-r--r--translations/qt_pl.ts3553
-rw-r--r--translations/qt_ru.ts3983
-rw-r--r--translations/qt_sl.ts10224
-rw-r--r--translations/qt_untranslated.ts7693
-rw-r--r--translations/qtconfig_pl.ts16
-rw-r--r--translations/qtconfig_ru.ts77
-rw-r--r--translations/qtconfig_untranslated.ts885
-rw-r--r--translations/qvfb_pl.ts41
-rw-r--r--translations/qvfb_ru.ts58
-rw-r--r--translations/qvfb_untranslated.ts325
-rw-r--r--translations/translations.pri48
-rw-r--r--translations/translations.pro42
-rw-r--r--util/fixnonlatin1/main.cpp30
-rw-r--r--util/gencmap/gencmap.cpp30
-rw-r--r--util/lexgen/configfile.cpp30
-rw-r--r--util/lexgen/configfile.h30
-rw-r--r--util/lexgen/css2-simplified.lexgen4
-rw-r--r--util/lexgen/generator.cpp30
-rw-r--r--util/lexgen/generator.h30
-rw-r--r--util/lexgen/global.h30
-rw-r--r--util/lexgen/main.cpp30
-rw-r--r--util/lexgen/nfa.cpp30
-rw-r--r--util/lexgen/nfa.h30
-rw-r--r--util/lexgen/re2nfa.cpp30
-rw-r--r--util/lexgen/re2nfa.h30
-rw-r--r--util/lexgen/tests/tst_lexgen.cpp30
-rw-r--r--util/lexgen/tokenizer.cpp30
-rwxr-xr-xutil/local_database/cldr2qlocalexml.py42
-rw-r--r--util/local_database/enumdata.py42
-rwxr-xr-xutil/local_database/qlocalexml2cpp.py42
-rw-r--r--util/local_database/testlocales/localemodel.cpp30
-rw-r--r--util/local_database/testlocales/localemodel.h30
-rw-r--r--util/local_database/testlocales/localewidget.cpp30
-rw-r--r--util/local_database/testlocales/localewidget.h30
-rw-r--r--util/local_database/testlocales/main.cpp30
-rw-r--r--util/local_database/xpathlite.py42
-rw-r--r--util/normalize/main.cpp30
-rw-r--r--util/plugintest/main.cpp30
-rw-r--r--util/qlalr/compress.cpp32
-rw-r--r--util/qlalr/compress.h32
-rw-r--r--util/qlalr/cppgenerator.cpp153
-rw-r--r--util/qlalr/cppgenerator.h43
-rw-r--r--util/qlalr/doc/src/qlalr.qdoc41
-rw-r--r--util/qlalr/dotgraph.cpp32
-rw-r--r--util/qlalr/dotgraph.h32
-rw-r--r--util/qlalr/examples/dummy-xml/ll/dummy-xml-ll.cpp40
-rw-r--r--util/qlalr/examples/dummy-xml/xml.g40
-rw-r--r--util/qlalr/examples/glsl/build.sh40
-rw-r--r--util/qlalr/examples/glsl/glsl-lex.l44
-rw-r--r--util/qlalr/examples/glsl/glsl.g98
-rw-r--r--util/qlalr/examples/lambda/lambda.g40
-rw-r--r--util/qlalr/examples/lambda/main.cpp41
-rw-r--r--util/qlalr/examples/qparser/calc.g40
-rw-r--r--util/qlalr/examples/qparser/calc.l41
-rw-r--r--util/qlalr/examples/qparser/qparser.cpp40
-rw-r--r--util/qlalr/examples/qparser/qparser.h41
-rw-r--r--util/qlalr/grammar.cpp32
-rw-r--r--util/qlalr/grammar_p.h32
-rw-r--r--util/qlalr/lalr.cpp32
-rw-r--r--util/qlalr/lalr.g93
-rw-r--r--util/qlalr/lalr.h32
-rw-r--r--util/qlalr/main.cpp38
-rw-r--r--util/qlalr/parsetable.cpp32
-rw-r--r--util/qlalr/parsetable.h32
-rw-r--r--util/qlalr/recognizer.cpp33
-rw-r--r--util/qlalr/recognizer.h32
-rw-r--r--util/qtscriptparser/make-parser.sh15
-rw-r--r--util/s60pixelmetrics/bld.inf45
-rw-r--r--util/s60pixelmetrics/pixel_metrics.cpp1223
-rw-r--r--util/s60pixelmetrics/pixel_metrics.h216
-rw-r--r--util/s60pixelmetrics/pm_mapper.hrh73
-rw-r--r--util/s60pixelmetrics/pm_mapper.mmp91
-rw-r--r--util/s60pixelmetrics/pm_mapper.pkg32
-rw-r--r--util/s60pixelmetrics/pm_mapper.rss162
-rw-r--r--util/s60pixelmetrics/pm_mapper_reg.rss57
-rw-r--r--util/s60pixelmetrics/pm_mapperapp.cpp1044
-rw-r--r--util/s60pixelmetrics/pm_mapperapp.h198
-rw-r--r--util/s60pixelmetrics/pm_mapperview.cpp375
-rw-r--r--util/s60pixelmetrics/pm_mapperview.h228
-rw-r--r--util/s60theme/README31
-rw-r--r--util/s60theme/main.cpp78
-rw-r--r--util/s60theme/s60theme.pro12
-rw-r--r--util/s60theme/s60themeconvert.cpp301
-rw-r--r--util/s60theme/s60themeconvert.h54
-rwxr-xr-xutil/scripts/make_qfeatures_dot_h92
-rw-r--r--util/unicode/codecs/big5/main.cpp30
-rw-r--r--util/unicode/main.cpp60
-rwxr-xr-xutil/unicode/writingSystems.sh41
-rwxr-xr-xutil/webkit/mkdist-javascriptcore188
-rwxr-xr-xutil/webkit/mkdist-webkit20
-rw-r--r--util/xkbdatagen/main.cpp66
14369 files changed, 2069495 insertions, 450589 deletions
diff --git a/.gitignore b/.gitignore
index f088c691f..33c9b7c60 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,6 +37,8 @@ tags
.DS_Store
*.debug
Makefile*
+!qmake/Makefile.win32*
+!qmake/Makefile.unix
*.prl
*.app
*.pro.user
@@ -52,6 +54,7 @@ bin/lconvert*
bin/moc*
bin/pixeltool*
bin/qmake*
+bin/qdoc3*
bin/qt3to4*
bin/qtdemo*
bin/rcc*
@@ -64,6 +67,7 @@ bin/qhelpconverter*
bin/qhelpgenerator*
bin/qtconfig*
bin/xmlpatterns*
+bin/cetest*
bin/collectiongenerator
bin/helpconverter
bin/helpgenerator
@@ -170,6 +174,35 @@ doc/qch
doc-build
.rcc
.pch
+.metadata
+
+# Symbian build system generated files
+# ---------------------
+
+ABLD.BAT
+bld.inf
+*.mmp
+*.mk
+*.rss
+*.loc
+!s60main.rss
+*.pkg
+plugin_commonU.def
+*.qtplugin
+*.sis
+*.sisx
+*.lst
+
+# Generated by abldfast.bat from devtools.
+.abldsteps.*
+
+# Carbide project files
+# ---------------------
+.project
+.cproject
+.make.cache
+*.d
+
qtc-debugging-helper
src/corelib/lib
src/network/lib
diff --git a/.hgignore b/.hgignore
index eb6ff0532..ba5a1b0eb 100755
--- a/.hgignore
+++ b/.hgignore
@@ -41,6 +41,7 @@ bin/lupdate*
bin/moc*
bin/pixeltool*
bin/qmake*
+bin/qdoc3*
bin/qt3to4*
bin/qtdemo*
bin/rcc*
diff --git a/FAQ.txt b/FAQ.txt
deleted file mode 100644
index 1d2266d5d..000000000
--- a/FAQ.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-This is a list of Frequently Asked Questions regarding this Qt release.
-
-Q: I'm using a Unix system and I downloaded the Zip package. However, when I try
-to run the configure script, I get the following error message:
-"bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory"
-A: The problem here is converting files from Windows style line endings (CRLF)
-to Unix style line endings (LF). To avoid this problem, uncompress the file
-again and give the option "-a" to unzip, which will then add the correct line
-endings.
-
-Q: I'm running Windows XP and I downloaded the qt-win-eval-%VERSION%-vs2008.exe
-version of Qt. However, when I try to run the examples I get an error saying:
-"The application failed to start because the application configuration is
-incorrect. Reinstalling the application may fix this problem.". I reinstalled
-the package but the error persists. What am I doing wrong?
-A: The problem is an incorrect version of the CRT. Visual studio requires CRT90
-while Windows XP comes with CRT80. To solve this problem, please install the
-2008 CRT redistributable package from Microsoft.
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 000000000..7279f06f5
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,14 @@
+ INSTALLING Qt Source Package Version %VERSION%.
+
+For full installation instructions for each supported platform, please
+see http://qt.nokia.com/doc/%SHORTVERSION%/installation.html, the file
+doc/html/installation.html in this package, or follow one of the following
+links:
+
+Embedded Linux: http://qt.nokia.com/doc/%SHORTVERSION%/qt-embedded-install.html
+Mac OS X: http://qt.nokia.com/doc/%SHORTVERSION%/install-mac.html
+Windows: http://qt.nokia.com/doc/%SHORTVERSION%/install-win.html
+Windows CE: http://qt.nokia.com/doc/%SHORTVERSION%/install-wince.html
+X11 Platforms: http://qt.nokia.com/doc/%SHORTVERSION%/install-x11.html
+Symbian Platform: http://qt.nokia.com/doc/%SHORTVERSION%/install-symbian.html
+
diff --git a/LGPL_EXCEPTION.txt b/LGPL_EXCEPTION.txt
index 8d0f85eba..8f73eca77 100644
--- a/LGPL_EXCEPTION.txt
+++ b/LGPL_EXCEPTION.txt
@@ -1,3 +1,22 @@
-Nokia Qt LGPL Exception version 1.0
+Nokia Qt LGPL Exception version 1.1
-As a special exception to the GNU Lesser General Public License version 2.1, the object code form of a "work that uses the Library" may incorporate material from a header file that is part of the Library. You may distribute such object code under terms of your choice, provided that the incorporated material (i) does not exceed more than 5% of the total size of the Library; and (ii) is limited to numerical parameters, data structure layouts, accessors, macros, inline functions and templates. \ No newline at end of file
+As an additional permission to the GNU Lesser General Public License version
+2.1, the object code form of a "work that uses the Library" may incorporate
+material from a header file that is part of the Library. You may distribute
+such object code under terms of your choice, provided that:
+ (i) the header files of the Library have not been modified; and
+ (ii) the incorporated material is limited to numerical parameters, data
+ structure layouts, accessors, macros, inline functions and
+ templates; and
+ (iii) you comply with the terms of Section 6 of the GNU Lesser General
+ Public License version 2.1.
+
+Moreover, you may apply this exception to a modified version of the Library,
+provided that such modification does not involve copying material from the
+Library into the modified Library's header files unless such material is
+limited to (i) numerical parameters; (ii) data structure layouts;
+(iii) accessors; and (iv) small macros, templates and inline functions of
+five lines or less in length.
+
+Furthermore, you are not required to apply this additional permission to a
+modified version of the Library.
diff --git a/LICENSE.GPL3 b/LICENSE.GPL3
deleted file mode 100644
index 265c4ea0a..000000000
--- a/LICENSE.GPL3
+++ /dev/null
@@ -1,696 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
-
- The Qt GUI Toolkit is Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
- Contact: Nokia Corporation (qt-info@nokia.com)
-
- You may use, distribute and copy the Qt GUI Toolkit under the terms of
- GNU General Public License version 3, which is displayed below.
-
--------------------------------------------------------------------------
-
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- <program> Copyright (C) <year> <name of author>
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
-
--------------------------------------------------------------------------
-
-In addition, as a special exception, Nokia gives permission to link the
-code of its release of Qt with the OpenSSL project's "OpenSSL" library (or
-modified versions of it that use the same license as the "OpenSSL"
-library), and distribute the linked executables. You must comply with the
-GNU General Public License versions 2.0 or 3.0 in all respects for all of
-the code used other than the "OpenSSL" code. If you modify this file, you
-may extend this exception to your version of the file, but you are not
-obligated to do so. If you do not wish to do so, delete this exception
-statement from your version of this file.
diff --git a/LICENSE.PREVIEW.COMMERCIAL b/LICENSE.PREVIEW.COMMERCIAL
index 7f7b234a5..45740cb04 100644
--- a/LICENSE.PREVIEW.COMMERCIAL
+++ b/LICENSE.PREVIEW.COMMERCIAL
@@ -2,23 +2,22 @@ TECHNOLOGY PREVIEW LICENSE AGREEMENT
For individuals and/or legal entities resident in the Americas (North
America, Central America and South America), the applicable licensing
-terms are specified under the heading "Technology Preview License
+terms are specified under the heading "Technology Preview License
Agreement: The Americas".
-For individuals and/or legal entities not resident in The Americas,
-the applicable licensing terms are specified under the heading
-"Technology Preview License Agreement: Rest of the World".
+For individuals and/or legal entities not resident in The Americas, the
+applicable licensing terms are specified under the heading "Technology
+Preview License Agreement: Rest of the World".
+
-
TECHNOLOGY PREVIEW LICENSE AGREEMENT: The Americas
-Agreement version 2.3
+Agreement version 2.4
This Technology Preview License Agreement ("Agreement") is a legal
agreement between Nokia Inc. ("Nokia"), with its registered office at
-6021 Connection Drive, Irving, TX 75039, U.S.A. and you (either an
-individual or a legal entity) ("Licensee") for the Licensed Software
-(as defined below).
-
+102 Corporate Park Drive, White Plains, N.Y., U.S.A. 10604 and you (either an
+individual or a legal entity) ("Licensee") for the Licensed Software (as
+defined below).
1. DEFINITIONS
@@ -27,21 +26,23 @@ indirectly controlling such Party; (ii) which is under the same direct
or indirect ownership or control as such Party; or (iii) which is
directly or indirectly owned or controlled by such Party. For these
purposes, an entity shall be treated as being controlled by another if
-that other entity has fifty percent (50 %) or more of the votes in
-such entity, is able to direct its affairs and/or to control the
-composition of its board of directors or equivalent body.
+that other entity has fifty percent (50 %) or more of the votes in such
+entity, is able to direct its affairs and/or to control the composition
+of its board of directors or equivalent body.
+
+"Applications" shall mean Licensee's software products created using the
+Licensed Software which may include portions of the Licensed Software.
"Term" shall mean the period of time six (6) months from the later of
(a) the Effective Date; or (b) the date the Licensed Software was
-initially delivered to Licensee by Nokia. If no specific Effective
-Date is set forth in the Agreement, the Effective Date shall be deemed
-to be the date the Licensed Software was initially delivered to
-Licensee.
+initially delivered to Licensee by Nokia. If no specific Effective Date
+is set forth in the Agreement, the Effective Date shall be deemed to be
+the date the Licensed Software was initially delivered to Licensee.
"Licensed Software" shall mean the computer software, "online" or
electronic documentation, associated media and printed materials,
including the source code, example programs and the documentation
-delivered by Nokia to Licensee in conjunction with this Agreement.
+delivered by Nokia to Licensee in conjunction with this Agreement.
"Party" or "Parties" shall mean Licensee and/or Nokia.
@@ -50,49 +51,48 @@ delivered by Nokia to Licensee in conjunction with this Agreement.
The Licensed Software is protected by copyright laws and international
copyright treaties, as well as other intellectual property laws and
-treaties. The Licensed Software is licensed, not sold.
+treaties. The Licensed Software is licensed, not sold.
If Licensee provides any findings, proposals, suggestions or other
feedback ("Feedback") to Nokia regarding the Licensed Software, Nokia
shall own all right, title and interest including the intellectual
-property rights in and to such Feedback, excluding however any
-existing patent rights of Licensee. To the extent Licensee owns or
-controls any patents for such Feedback Licensee hereby grants to Nokia
-and its Affiliates, a worldwide, perpetual, non-transferable,
-sublicensable, royalty-free license to (i) use, copy and modify
-Feedback and to create derivative works thereof, (ii) to make (and
-have made), use, import, sell, offer for sale, lease, dispose, offer
-for disposal or otherwise exploit any products or services of Nokia
-containing Feedback,, and (iii) sublicense all the foregoing rights to
-third party licensees and customers of Nokia and/or its Affiliates.
+property rights in and to such Feedback, excluding however any existing
+patent rights of Licensee. To the extent Licensee owns or controls any
+patents for such Feedback Licensee hereby grants to Nokia and its
+Affiliates, a worldwide, perpetual, non-transferable, sublicensable,
+royalty-free license to (i) use, copy and modify Feedback and to create
+derivative works thereof, (ii) to make (and have made), use, import,
+sell, offer for sale, lease, dispose, offer for disposal or otherwise
+exploit any products or services of Nokia containing Feedback,, and
+(iii) sublicense all the foregoing rights to third party licensees and
+customers of Nokia and/or its Affiliates.
3. VALIDITY OF THE AGREEMENT
By installing, copying, or otherwise using the Licensed Software,
-Licensee agrees to be bound by the terms of this Agreement. If
-Licensee does not agree to the terms of this Agreement, Licensee may
-not install, copy, or otherwise use the Licensed Software. Upon
-Licensee's acceptance of the terms and conditions of this Agreement,
-Nokia grants Licensee the right to use the Licensed Software in the
-manner provided below.
+Licensee agrees to be bound by the terms of this Agreement. If Licensee
+does not agree to the terms of this Agreement, Licensee may not install,
+copy, or otherwise use the Licensed Software. Upon Licensee's acceptance
+of the terms and conditions of this Agreement, Nokia grants Licensee the
+right to use the Licensed Software in the manner provided below.
4. LICENSES
-4.1 Using and Copying
+4.1. Using and Copying
-Nokia grants to Licensee a non-exclusive, non-transferable,
-time-limited license to use and copy the Licensed Software for sole
-purpose of evaluating and testing the Licensed Software during the
-Term.
+Nokia grants to Licensee a non-exclusive, non-transferable, time-limited
+license to use and copy the Licensed Software for sole purpose of
+designing, developing and testing Applications, and evaluating and the
+Licensed Software during the Term.
Licensee may install copies of the Licensed Software on an unlimited
number of computers provided that (a) if an individual, only such
individual; or (b) if a legal entity only its employees; use the
-Licensed Software for the authorized purposes.
+Licensed Software for the authorized purposes.
-4.2 No Distribution or Modifications
+4.2 No Distribution or Modifications
Licensee may not disclose, modify, sell, market, commercialise,
distribute, loan, rent, lease, or license the Licensed Software or any
@@ -100,48 +100,44 @@ copy of it or use the Licensed Software for any purpose that is not
expressly granted in this Section 4. Licensee may not alter or remove
any details of ownership, copyright, trademark or other property right
connected with the Licensed Software. Licensee may not distribute any
-software statically or dynamically linked with the Licensed Software.
+software statically or dynamically linked with the Licensed Software.
4.3 No Technical Support
Nokia has no obligation to furnish Licensee with any technical support
whatsoever. Any such support is subject to separate agreement between
-the Parties.
+the Parties.
5. PRE-RELEASE CODE
-
-The Licensed Software contains pre-release code that is not at the
-level of performance and compatibility of a final, generally
-available, product offering. The Licensed Software may not operate
-correctly and may be substantially modified prior to the first
-commercial product release, if any. Nokia is not obligated to make
-this or any later version of the Licensed Software commercially
-available. The License Software is "Not for Commercial Use" and may
-only be used for the purposes described in Section 4. The Licensed
-Software may not be used in a live operating environment where it may
-be relied upon to perform in the same manner as a commercially
-released product or with data that has not been sufficiently backed
-up.
-
+The Licensed Software contains pre-release code that is not at the level
+of performance and compatibility of a final, generally available,
+product offering. The Licensed Software may not operate correctly and
+may be substantially modified prior to the first commercial product
+release, if any. Nokia is not obligated to make this or any later
+version of the Licensed Software commercially available. The License
+Software is "Not for Commercial Use" and may only be used for the
+purposes described in Section 4. The Licensed Software may not be used
+in a live operating environment where it may be relied upon to perform
+in the same manner as a commercially released product or with data that
+has not been sufficiently backed up.
6. THIRD PARTY SOFTWARE
-The Licensed Software may provide links to third party libraries or
-code (collectively "Third Party Software") to implement various
-functions. Third Party Software does not comprise part of the
-Licensed Software. In some cases, access to Third Party Software may
-be included along with the Licensed Software delivery as a convenience
-for development and testing only. Such source code and libraries may
-be listed in the ".../src/3rdparty" source tree delivered with the
-Licensed Software or documented in the Licensed Software where the
-Third Party Software is used, as may be amended from time to time, do
-not comprise the Licensed Software. Licensee acknowledges (1) that
-some part of Third Party Software may require additional licensing of
-copyright and patents from the owners of such, and (2) that
-distribution of any of the Licensed Software referencing any portion
-of a Third Party Software may require appropriate licensing from such
-third parties.
+The Licensed Software may provide links to third party libraries or code
+(collectively "Third Party Software") to implement various functions.
+Third Party Software does not comprise part of the Licensed Software. In
+some cases, access to Third Party Software may be included along with
+the Licensed Software delivery as a convenience for development and
+testing only. Such source code and libraries may be listed in the
+".../src/3rdparty" source tree delivered with the Licensed Software or
+documented in the Licensed Software where the Third Party Software is
+used, as may be amended from time to time, do not comprise the Licensed
+Software. Licensee acknowledges (1) that some part of Third Party
+Software may require additional licensing of copyright and patents from
+the owners of such, and (2) that distribution of any of the Licensed
+Software referencing any portion of a Third Party Software may require
+appropriate licensing from such third parties.
7. LIMITED WARRANTY AND WARRANTY DISCLAIMER
@@ -151,195 +147,192 @@ extent permitted by applicable law, Nokia on behalf of itself and its
suppliers, disclaims all warranties and conditions, either express or
implied, including, but not limited to, implied warranties of
merchantability, fitness for a particular purpose, title and
-non-infringement with regard to the Licensed Software.
+non-infringement with regard to the Licensed Software.
-8. LIMITATION OF LIABILITY
+8. LIMITATION OF LIABILITY
-If, Nokia's warranty disclaimer notwithstanding, Nokia is held liable
-to Licensee, whether in contract, tort or any other legal theory,
-based on the Licensed Software, Nokia's entire liability to Licensee
-and Licensee's exclusive remedy shall be, at Nokia's option, either
-(A) return of the price Licensee paid for the Licensed Software, or
-(B) repair or replacement of the Licensed Software, provided Licensee
+If, Nokia's warranty disclaimer notwithstanding, Nokia is held liable to
+Licensee, whether in contract, tort or any other legal theory, based on
+the Licensed Software, Nokia's entire liability to Licensee and
+Licensee's exclusive remedy shall be, at Nokia's option, either (A)
+return of the price Licensee paid for the Licensed Software, or (B)
+repair or replacement of the Licensed Software, provided Licensee
returns to Nokia all copies of the Licensed Software as originally
-delivered to Licensee. Nokia shall not under any circumstances be
-liable to Licensee based on failure of the Licensed Software if the
-failure resulted from accident, abuse or misapplication, nor shall
-Nokia under any circumstances be liable for special damages, punitive
-or exemplary damages, damages for loss of profits or interruption of
-business or for loss or corruption of data. Any award of damages from
-Nokia to Licensee shall not exceed the total amount Licensee has paid
-to Nokia in connection with this Agreement.
-
-
-9. CONFIDENTIALITY
-
-Each party acknowledges that during the Term of this Agreement it
-shall have access to information about the other party's business,
-business methods, business plans, customers, business relations,
-technology, and other information, including the terms of this
-Agreement, that is confidential and of great value to the other party,
-and the value of which would be significantly reduced if disclosed to
-third parties (the "Confidential Information"). Accordingly, when a
-party (the "Receiving Party") receives Confidential Information from
-another party (the "Disclosing Party"), the Receiving Party shall, and
-shall obligate its employees and agents and employees and agents of
-its Affiliates to: (i) maintain the Confidential Information in strict
-confidence; (ii) not disclose the Confidential Information to a third
-party without the Disclosing Party's prior written approval; and (iii)
-not, directly or indirectly, use the Confidential Information for any
-purpose other than for exercising its rights and fulfilling its
-responsibilities pursuant to this Agreement. Each party shall take
-reasonable measures to protect the Confidential Information of the
-other party, which measures shall not be less than the measures taken
-by such party to protect its own confidential and proprietary
-information.
-
-"Confidential Information" shall not include information that (a) is
-or becomes generally known to the public through no act or omission of
-the Receiving Party; (b) was in the Receiving Party's lawful
-possession prior to the disclosure hereunder and was not subject to
-limitations on disclosure or use; (c) is developed by the Receiving
-Party without access to the Confidential Information of the Disclosing
-Party or by persons who have not had access to the Confidential
-Information of the Disclosing Party as proven by the written records
-of the Receiving Party; (d) is lawfully disclosed to the Receiving
-Party without restrictions, by a third party not under an obligation
-of confidentiality; or (e) the Receiving Party is legally compelled to
-disclose the information, in which case the Receiving Party shall
-assert the privileged and confidential nature of the information and
-cooperate fully with the Disclosing Party to protect against and
-prevent disclosure of any Confidential Information and to limit the
-scope of disclosure and the dissemination of disclosed Confidential
-Information by all legally available means.
-
-The obligations of the Receiving Party under this Section shall
-continue during the Initial Term and for a period of five (5) years
-after expiration or termination of this Agreement. To the extent that
-the terms of the Non-Disclosure Agreement between Nokia and Licensee
-conflict with the terms of this Section 8, this Section 8 shall be
-controlling over the terms of the Non-Disclosure Agreement.
+delivered to Licensee. Nokia shall not under any circumstances be liable
+to Licensee based on failure of the Licensed Software if the failure
+resulted from accident, abuse or misapplication, nor shall Nokia under
+any circumstances be liable for special damages, punitive or exemplary
+damages, damages for loss of profits or interruption of business or for
+loss or corruption of data. Any award of damages from Nokia to Licensee
+shall not exceed the total amount Licensee has paid to Nokia in
+connection with this Agreement.
+
+
+9. CONFIDENTIALITY
+
+Each party acknowledges that during the Term of this Agreement it shall
+have access to information about the other party's business, business
+methods, business plans, customers, business relations, technology, and
+other information, including the terms of this Agreement, that is
+confidential and of great value to the other party, and the value of
+which would be significantly reduced if disclosed to third parties (the
+"Confidential Information"). Accordingly, when a party (the "Receiving
+Party") receives Confidential Information from another party (the
+"Disclosing Party"), the Receiving Party shall, and shall obligate its
+employees and agents and employees and agents of its Affiliates to: (i)
+maintain the Confidential Information in strict confidence; (ii) not
+disclose the Confidential Information to a third party without the
+Disclosing Party's prior written approval; and (iii) not, directly or
+indirectly, use the Confidential Information for any purpose other than
+for exercising its rights and fulfilling its responsibilities pursuant
+to this Agreement. Each party shall take reasonable measures to protect
+the Confidential Information of the other party, which measures shall
+not be less than the measures taken by such party to protect its own
+confidential and proprietary information.
+
+"Confidential Information" shall not include information that (a) is or
+becomes generally known to the public through no act or omission of the
+Receiving Party; (b) was in the Receiving Party's lawful possession
+prior to the disclosure hereunder and was not subject to limitations on
+disclosure or use; (c) is developed by the Receiving Party without
+access to the Confidential Information of the Disclosing Party or by
+persons who have not had access to the Confidential Information of the
+Disclosing Party as proven by the written records of the Receiving
+Party; (d) is lawfully disclosed to the Receiving Party without
+restrictions, by a third party not under an obligation of
+confidentiality; or (e) the Receiving Party is legally compelled to
+disclose the information, in which case the Receiving Party shall assert
+the privileged and confidential nature of the information and cooperate
+fully with the Disclosing Party to protect against and prevent
+disclosure of any Confidential Information and to limit the scope of
+disclosure and the dissemination of disclosed Confidential Information
+by all legally available means.
+
+The obligations of the Receiving Party under this Section shall continue
+during the Initial Term and for a period of five (5) years after
+expiration or termination of this Agreement. To the extent that the
+terms of the Non-Disclosure Agreement between Nokia and Licensee
+conflict with the terms of this Section 9, this Section 9 shall be
+controlling over the terms of the Non-Disclosure Agreement.
10. GENERAL PROVISIONS
-10.1 No Assignment
+10.1 No Assignment
Licensee shall not be entitled to assign or transfer all or any of its
-rights, benefits and obligations under this Agreement without the
-prior written consent of Nokia, which shall not be unreasonably
-withheld.
+rights, benefits and obligations under this Agreement without the prior
+written consent of Nokia, which shall not be unreasonably withheld.
-10.2 Termination
+10.2 Termination
Nokia may terminate the Agreement at any time immediately upon written
-notice by Nokia to Licensee if Licensee breaches this Agreement.
+notice by Nokia to Licensee if Licensee breaches this Agreement.
Upon termination of this Agreement, Licensee shall return to Nokia all
copies of Licensed Software that were supplied by Nokia. All other
copies of Licensed Software in the possession or control of Licensee
must be erased or destroyed. An officer of Licensee must promptly
-deliver to Nokia a written confirmation that this has occurred.
+deliver to Nokia a written confirmation that this has occurred.
-10.3 Surviving Sections
+10.3 Surviving Sections
Any terms and conditions that by their nature or otherwise reasonably
should survive a cancellation or termination of this Agreement shall
also be deemed to survive. Such terms and conditions include, but are
-not limited to the following Sections: 2, 5, 6, 7, 8, 9, 10.2, 10.3,
-10.4, 10.5, 10.6, 10.7, and 10.8 of this Agreement.
+not limited to the following Sections: 2, 5, 6, 7, 8, 9, 10.2, 10.3, 10.4,
+10.5, 10.6, 10.7, and 10.8 of this Agreement.
-10.4 Entire Agreement
+10.4 Entire Agreement
This Agreement constitutes the complete agreement between the parties
and supersedes all prior or contemporaneous discussions,
representations, and proposals, written or oral, with respect to the
subject matters discussed herein, with the exception of the
-non-disclosure agreement executed by the parties in connection with
-this Agreement ("Non-Disclosure Agreement"), if any, shall be subject
-to Section 8. No modification of this Agreement shall be effective
-unless contained in a writing executed by an authorized representative
-of each party. No term or condition contained in Licensee's purchase
-order shall apply unless expressly accepted by Nokia in writing. If
-any provision of the Agreement is found void or unenforceable, the
-remainder shall remain valid and enforceable according to its
-terms. If any remedy provided is determined to have failed for its
-essential purpose, all limitations of liability and exclusions of
-damages set forth in this Agreement shall remain in effect.
-
-10.5 Export Control
+non-disclosure agreement executed by the parties in connection with this
+Agreement ("Non-Disclosure Agreement"), if any, shall be subject to
+Section 9. No modification of this Agreement shall be effective unless
+contained in a writing executed by an authorized representative of each
+party. No term or condition contained in Licensee's purchase order shall
+apply unless expressly accepted by Nokia in writing. If any provision of
+the Agreement is found void or unenforceable, the remainder shall remain
+valid and enforceable according to its terms. If any remedy provided is
+determined to have failed for its essential purpose, all limitations of
+liability and exclusions of damages set forth in this Agreement shall
+remain in effect.
+
+10.5 Export Control
Licensee acknowledges that the Licensed Software may be subject to
export control restrictions of various countries. Licensee shall fully
-comply with all applicable export license restrictions and
-requirements as well as with all laws and regulations relating to the
-importation of the Licensed Software and shall procure all necessary
-governmental authorizations, including without limitation, all
-necessary licenses, approvals, permissions or consents, where
-necessary for the re-exportation of the Licensed Software.,
-
-10.6 Governing Law and Legal Venue
-
-This Agreement shall be governed by and construed in accordance with
-the federal laws of the United States of America and the internal laws
-of the State of New York without given effect to any choice of law
-rule that would result in the application of the laws of any other
+comply with all applicable export license restrictions and requirements
+as well as with all laws and regulations relating to the importation of
+the Licensed Software and shall procure all necessary governmental
+authorizations, including without limitation, all necessary licenses,
+approvals, permissions or consents, where necessary for the
+re-exportation of the Licensed Software.,
+
+10.6 Governing Law and Legal Venue
+
+This Agreement shall be governed by and construed in accordance with the
+federal laws of the United States of America and the internal laws of
+the State of New York without given effect to any choice of law rule
+that would result in the application of the laws of any other
jurisdiction. The United Nations Convention on Contracts for the
International Sale of Goods (CISG) shall not apply. Each Party (a)
-hereby irrevocably submits itself to and consents to the jurisdiction
-of the United States District Court for the Southern District of New
-York (or if such court lacks jurisdiction, the state courts of the
-State of New York) for the purposes of any action, claim, suit or
-proceeding between the Parties in connection with any controversy,
-claim, or dispute arising out of or relating to this Agreement; and
-(b) hereby waives, and agrees not to assert by way of motion, as a
-defense or otherwise, in any such action, claim, suit or proceeding,
-any claim that is not personally subject to the jurisdiction of such
-court(s), that the action, claim, suit or proceeding is brought in an
-inconvenient forum or that the venue of the action, claim, suit or
-proceeding is improper. Notwithstanding the foregoing, nothing in
-this Section 9.6 is intended to, or shall be deemed to, constitute a
-submission or consent to, or selection of, jurisdiction, forum or
-venue for any action for patent infringement, whether or not such
-action relates to this Agreement.
-
-10.7 No Implied License
-
-There are no implied licenses or other implied rights granted under
-this Agreement, and all rights, save for those expressly granted
-hereunder, shall remain with Nokia and its licensors. In addition, no
-licenses or immunities are granted to the combination of the Licensed
-Software with any other software or hardware not delivered by Nokia
-under this Agreement.
-
-10.8 Government End Users
-
+hereby irrevocably submits itself to and consents to the jurisdiction of
+the United States District Court for the Southern District of New York
+(or if such court lacks jurisdiction, the state courts of the State of
+New York) for the purposes of any action, claim, suit or proceeding
+between the Parties in connection with any controversy, claim, or
+dispute arising out of or relating to this Agreement; and (b) hereby
+waives, and agrees not to assert by way of motion, as a defense or
+otherwise, in any such action, claim, suit or proceeding, any claim that
+is not personally subject to the jurisdiction of such court(s), that the
+action, claim, suit or proceeding is brought in an inconvenient forum or
+that the venue of the action, claim, suit or proceeding is improper.
+Notwithstanding the foregoing, nothing in this Section 9.6 is intended
+to, or shall be deemed to, constitute a submission or consent to, or
+selection of, jurisdiction, forum or venue for any action for patent
+infringement, whether or not such action relates to this Agreement.
+
+10.7 No Implied License
+
+There are no implied licenses or other implied rights granted under this
+Agreement, and all rights, save for those expressly granted hereunder,
+shall remain with Nokia and its licensors. In addition, no licenses or
+immunities are granted to the combination of the Licensed Software with
+any other software or hardware not delivered by Nokia under this
+Agreement.
+
+10.8 Government End Users
+
A "U.S. Government End User" shall mean any agency or entity of the
government of the United States. The following shall apply if Licensee
is a U.S. Government End User. The Licensed Software is a "commercial
item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995),
consisting of "commercial computer software" and "commercial computer
software documentation," as such terms are used in 48 C.F.R. 12.212
-(Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48
-C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government
-End Users acquire the Licensed Software with only those rights set
-forth herein. The Licensed Software (including related documentation)
-is provided to U.S. Government End Users: (a) only as a commercial
-end item; and (b) only pursuant to this Agreement.
+(Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
+through 227.7202-4 (June 1995), all U.S. Government End Users acquire
+the Licensed Software with only those rights set forth herein. The
+Licensed Software (including related documentation) is provided to U.S.
+Government End Users: (a) only as a commercial end item; and (b) only
+pursuant to this Agreement.
+
-
TECHNOLOGY PREVIEW LICENSE AGREEMENT: Rest of the World
-Agreement version 2.3
+Agreement version 2.4
This Technology Preview License Agreement ("Agreement") is a legal
agreement between Nokia Corporation ("Nokia"), with its registered
office at Keilalahdentie 4, 02150 Espoo, Finland and you (either an
-individual or a legal entity) ("Licensee") for the Licensed Software
-(as defined below).
+individual or a legal entity) ("Licensee") for the Licensed Software (as
+defined below).
1. DEFINITIONS
@@ -348,72 +341,72 @@ indirectly controlling such Party; (ii) which is under the same direct
or indirect ownership or control as such Party; or (iii) which is
directly or indirectly owned or controlled by such Party. For these
purposes, an entity shall be treated as being controlled by another if
-that other entity has fifty percent (50 %) or more of the votes in
-such entity, is able to direct its affairs and/or to control the
-composition of its board of directors or equivalent body.
+that other entity has fifty percent (50 %) or more of the votes in such
+entity, is able to direct its affairs and/or to control the composition
+of its board of directors or equivalent body.
+
+"Applications" shall mean Licensee's software products created using the
+Licensed Software which may include portions of the Licensed Software.
"Term" shall mean the period of time six (6) months from the later of
(a) the Effective Date; or (b) the date the Licensed Software was
-initially delivered to Licensee by Nokia. If no specific Effective
-Date is set forth in the Agreement, the Effective Date shall be deemed
-to be the date the Licensed Software was initially delivered to
-Licensee.
+initially delivered to Licensee by Nokia. If no specific Effective Date
+is set forth in the Agreement, the Effective Date shall be deemed to be
+the date the Licensed Software was initially delivered to Licensee.
"Licensed Software" shall mean the computer software, "online" or
electronic documentation, associated media and printed materials,
including the source code, example programs and the documentation
-delivered by Nokia to Licensee in conjunction with this Agreement.
+delivered by Nokia to Licensee in conjunction with this Agreement.
-"Party" or "Parties" shall mean Licensee and/or Nokia.
+"Party" or "Parties" shall mean Licensee and/or Nokia.
2. OWNERSHIP
The Licensed Software is protected by copyright laws and international
copyright treaties, as well as other intellectual property laws and
-treaties. The Licensed Software is licensed, not sold.
+treaties. The Licensed Software is licensed, not sold.
If Licensee provides any findings, proposals, suggestions or other
feedback ("Feedback") to Nokia regarding the Licensed Software, Nokia
shall own all right, title and interest including the intellectual
-property rights in and to such Feedback, excluding however any
-existing patent rights of Licensee. To the extent Licensee owns or
-controls any patents for such Feedback Licensee hereby grants to Nokia
-and its Affiliates, a worldwide, perpetual, non-transferable,
-sublicensable, royalty-free license to (i) use, copy and modify
-Feedback and to create derivative works thereof, (ii) to make (and
-have made), use, import, sell, offer for sale, lease, dispose, offer
-for disposal or otherwise exploit any products or services of Nokia
-containing Feedback,, and (iii) sublicense all the foregoing rights to
-third party licensees and customers of Nokia and/or its Affiliates.
-
+property rights in and to such Feedback, excluding however any existing
+patent rights of Licensee. To the extent Licensee owns or controls any
+patents for such Feedback Licensee hereby grants to Nokia and its
+Affiliates, a worldwide, perpetual, non-transferable, sublicensable,
+royalty-free license to (i) use, copy and modify Feedback and to create
+derivative works thereof, (ii) to make (and have made), use, import,
+sell, offer for sale, lease, dispose, offer for disposal or otherwise
+exploit any products or services of Nokia containing Feedback,, and
+(iii) sublicense all the foregoing rights to third party licensees and
+customers of Nokia and/or its Affiliates.
3. VALIDITY OF THE AGREEMENT
By installing, copying, or otherwise using the Licensed Software,
-Licensee agrees to be bound by the terms of this Agreement. If
-Licensee does not agree to the terms of this Agreement, Licensee may
-not install, copy, or otherwise use the Licensed Software. Upon
-Licensee's acceptance of the terms and conditions of this Agreement,
-Nokia grants Licensee the right to use the Licensed Software in the
-manner provided below.
+Licensee agrees to be bound by the terms of this Agreement. If Licensee
+does not agree to the terms of this Agreement, Licensee may not install,
+copy, or otherwise use the Licensed Software. Upon Licensee's acceptance
+of the terms and conditions of this Agreement, Nokia grants Licensee the
+right to use the Licensed Software in the manner provided below.
4. LICENSES
-4.1 Using and Copying
+4.1. Using and Copying
-Nokia grants to Licensee a non-exclusive, non-transferable,
-time-limited license to use and copy the Licensed Software for sole
-purpose of evaluating and testing the Licensed Software during the
-Term.
+Nokia grants to Licensee a non-exclusive, non-transferable, time-limited
+license to use and copy the Licensed Software for sole purpose of
+designing, developing and testing Applications, and evaluating and the
+Licensed Software during the Term.
Licensee may install copies of the Licensed Software on an unlimited
number of computers provided that (a) if an individual, only such
individual; or (b) if a legal entity only its employees; use the
-Licensed Software for the authorized purposes.
+Licensed Software for the authorized purposes.
-4.2 No Distribution or Modifications
+4.2 No Distribution or Modifications
Licensee may not disclose, modify, sell, market, commercialise,
distribute, loan, rent, lease, or license the Licensed Software or any
@@ -421,48 +414,45 @@ copy of it or use the Licensed Software for any purpose that is not
expressly granted in this Section 4. Licensee may not alter or remove
any details of ownership, copyright, trademark or other property right
connected with the Licensed Software. Licensee may not distribute any
-software statically or dynamically linked with the Licensed Software.
+software statically or dynamically linked with the Licensed Software.
4.3 No Technical Support
Nokia has no obligation to furnish Licensee with any technical support
whatsoever. Any such support is subject to separate agreement between
-the Parties.
+the Parties.
5. PRE-RELEASE CODE
-The Licensed Software contains pre-release code that is not at the
-level of performance and compatibility of a final, generally
-available, product offering. The Licensed Software may not operate
-correctly and may be substantially modified prior to the first
-commercial product release, if any. Nokia is not obligated to make
-this or any later version of the Licensed Software commercially
-available. The License Software is "Not for Commercial Use" and may
-only be used for the purposes described in Section 4. The Licensed
-Software may not be used in a live operating environment where it may
-be relied upon to perform in the same manner as a commercially
-released product or with data that has not been sufficiently backed
-up.
-
+The Licensed Software contains pre-release code that is not at the level
+of performance and compatibility of a final, generally available,
+product offering. The Licensed Software may not operate correctly and
+may be substantially modified prior to the first commercial product
+release, if any. Nokia is not obligated to make this or any later
+version of the Licensed Software commercially available. The License
+Software is "Not for Commercial Use" and may only be used for the
+purposes described in Section 4. The Licensed Software may not be used
+in a live operating environment where it may be relied upon to perform
+in the same manner as a commercially released product or with data that
+has not been sufficiently backed up.
6. THIRD PARTY SOFTWARE
-The Licensed Software may provide links to third party libraries or
-code (collectively "Third Party Software") to implement various
-functions. Third Party Software does not comprise part of the
-Licensed Software. In some cases, access to Third Party Software may
-be included along with the Licensed Software delivery as a convenience
-for development and testing only. Such source code and libraries may
-be listed in the ".../src/3rdparty" source tree delivered with the
-Licensed Software or documented in the Licensed Software where the
-Third Party Software is used, as may be amended from time to time, do
-not comprise the Licensed Software. Licensee acknowledges (1) that
-some part of Third Party Software may require additional licensing of
-copyright and patents from the owners of such, and (2) that
-distribution of any of the Licensed Software referencing any portion
-of a Third Party Software may require appropriate licensing from such
-third parties.
+The Licensed Software may provide links to third party libraries or code
+(collectively "Third Party Software") to implement various functions.
+Third Party Software does not comprise part of the Licensed Software. In
+some cases, access to Third Party Software may be included along with
+the Licensed Software delivery as a convenience for development and
+testing only. Such source code and libraries may be listed in the
+".../src/3rdparty" source tree delivered with the Licensed Software or
+documented in the Licensed Software where the Third Party Software is
+used, as may be amended from time to time, do not comprise the Licensed
+Software. Licensee acknowledges (1) that some part of Third Party
+Software may require additional licensing of copyright and patents from
+the owners of such, and (2) that distribution of any of the Licensed
+Software referencing any portion of a Third Party Software may require
+appropriate licensing from such third parties.
7. LIMITED WARRANTY AND WARRANTY DISCLAIMER
@@ -472,170 +462,167 @@ extent permitted by applicable law, Nokia on behalf of itself and its
suppliers, disclaims all warranties and conditions, either express or
implied, including, but not limited to, implied warranties of
merchantability, fitness for a particular purpose, title and
-non-infringement with regard to the Licensed Software.
+non-infringement with regard to the Licensed Software.
-8. LIMITATION OF LIABILITY
+8. LIMITATION OF LIABILITY
-If, Nokia's warranty disclaimer notwithstanding, Nokia is held liable
-to Licensee, whether in contract, tort or any other legal theory,
-based on the Licensed Software, Nokia's entire liability to Licensee
-and Licensee's exclusive remedy shall be, at Nokia's option, either
-(A) return of the price Licensee paid for the Licensed Software, or
-(B) repair or replacement of the Licensed Software, provided Licensee
+If, Nokia's warranty disclaimer notwithstanding, Nokia is held liable to
+Licensee, whether in contract, tort or any other legal theory, based on
+the Licensed Software, Nokia's entire liability to Licensee and
+Licensee's exclusive remedy shall be, at Nokia's option, either (A)
+return of the price Licensee paid for the Licensed Software, or (B)
+repair or replacement of the Licensed Software, provided Licensee
returns to Nokia all copies of the Licensed Software as originally
-delivered to Licensee. Nokia shall not under any circumstances be
-liable to Licensee based on failure of the Licensed Software if the
-failure resulted from accident, abuse or misapplication, nor shall
-Nokia under any circumstances be liable for special damages, punitive
-or exemplary damages, damages for loss of profits or interruption of
-business or for loss or corruption of data. Any award of damages from
-Nokia to Licensee shall not exceed the total amount Licensee has paid
-to Nokia in connection with this Agreement.
-
-
-9. CONFIDENTIALITY
-
-Each party acknowledges that during the Term of this Agreement it
-shall have access to information about the other party's business,
-business methods, business plans, customers, business relations,
-technology, and other information, including the terms of this
-Agreement, that is confidential and of great value to the other party,
-and the value of which would be significantly reduced if disclosed to
-third parties (the "Confidential Information"). Accordingly, when a
-party (the "Receiving Party") receives Confidential Information from
-another party (the "Disclosing Party"), the Receiving Party shall, and
-shall obligate its employees and agents and employees and agents of
-its Affiliates to: (i) maintain the Confidential Information in strict
-confidence; (ii) not disclose the Confidential Information to a third
-party without the Disclosing Party's prior written approval; and (iii)
-not, directly or indirectly, use the Confidential Information for any
-purpose other than for exercising its rights and fulfilling its
-responsibilities pursuant to this Agreement. Each party shall take
-reasonable measures to protect the Confidential Information of the
-other party, which measures shall not be less than the measures taken
-by such party to protect its own confidential and proprietary
-information.
-
-"Confidential Information" shall not include information that (a) is
-or becomes generally known to the public through no act or omission of
-the Receiving Party; (b) was in the Receiving Party's lawful
-possession prior to the disclosure hereunder and was not subject to
-limitations on disclosure or use; (c) is developed by the Receiving
-Party without access to the Confidential Information of the Disclosing
-Party or by persons who have not had access to the Confidential
-Information of the Disclosing Party as proven by the written records
-of the Receiving Party; (d) is lawfully disclosed to the Receiving
-Party without restrictions, by a third party not under an obligation
-of confidentiality; or (e) the Receiving Party is legally compelled to
-disclose the information, in which case the Receiving Party shall
-assert the privileged and confidential nature of the information and
-cooperate fully with the Disclosing Party to protect against and
-prevent disclosure of any Confidential Information and to limit the
-scope of disclosure and the dissemination of disclosed Confidential
-Information by all legally available means.
-
-The obligations of the Receiving Party under this Section shall
-continue during the Initial Term and for a period of five (5) years
-after expiration or termination of this Agreement. To the extent that
-the terms of the Non-Disclosure Agreement between Nokia and Licensee
-conflict with the terms of this Section 8, this Section 8 shall be
-controlling over the terms of the Non-Disclosure Agreement.
+delivered to Licensee. Nokia shall not under any circumstances be liable
+to Licensee based on failure of the Licensed Software if the failure
+resulted from accident, abuse or misapplication, nor shall Nokia under
+any circumstances be liable for special damages, punitive or exemplary
+damages, damages for loss of profits or interruption of business or for
+loss or corruption of data. Any award of damages from Nokia to Licensee
+shall not exceed the total amount Licensee has paid to Nokia in
+connection with this Agreement.
+
+
+9. CONFIDENTIALITY
+
+Each party acknowledges that during the Term of this Agreement it shall
+have access to information about the other party's business, business
+methods, business plans, customers, business relations, technology, and
+other information, including the terms of this Agreement, that is
+confidential and of great value to the other party, and the value of
+which would be significantly reduced if disclosed to third parties (the
+"Confidential Information"). Accordingly, when a party (the "Receiving
+Party") receives Confidential Information from another party (the
+"Disclosing Party"), the Receiving Party shall, and shall obligate its
+employees and agents and employees and agents of its Affiliates to: (i)
+maintain the Confidential Information in strict confidence; (ii) not
+disclose the Confidential Information to a third party without the
+Disclosing Party's prior written approval; and (iii) not, directly or
+indirectly, use the Confidential Information for any purpose other than
+for exercising its rights and fulfilling its responsibilities pursuant
+to this Agreement. Each party shall take reasonable measures to protect
+the Confidential Information of the other party, which measures shall
+not be less than the measures taken by such party to protect its own
+confidential and proprietary information.
+
+"Confidential Information" shall not include information that (a) is or
+becomes generally known to the public through no act or omission of the
+Receiving Party; (b) was in the Receiving Party's lawful possession
+prior to the disclosure hereunder and was not subject to limitations on
+disclosure or use; (c) is developed by the Receiving Party without
+access to the Confidential Information of the Disclosing Party or by
+persons who have not had access to the Confidential Information of the
+Disclosing Party as proven by the written records of the Receiving
+Party; (d) is lawfully disclosed to the Receiving Party without
+restrictions, by a third party not under an obligation of
+confidentiality; or (e) the Receiving Party is legally compelled to
+disclose the information, in which case the Receiving Party shall assert
+the privileged and confidential nature of the information and cooperate
+fully with the Disclosing Party to protect against and prevent
+disclosure of any Confidential Information and to limit the scope of
+disclosure and the dissemination of disclosed Confidential Information
+by all legally available means.
+
+The obligations of the Receiving Party under this Section shall continue
+during the Initial Term and for a period of five (5) years after
+expiration or termination of this Agreement. To the extent that the
+terms of the Non-Disclosure Agreement between Nokia and Licensee
+conflict with the terms of this Section 9, this Section 9 shall be
+controlling over the terms of the Non-Disclosure Agreement.
10. GENERAL PROVISIONS
-10.1 No Assignment
+10.1 No Assignment
Licensee shall not be entitled to assign or transfer all or any of its
-rights, benefits and obligations under this Agreement without the
-prior written consent of Nokia, which shall not be unreasonably
-withheld.
+rights, benefits and obligations under this Agreement without the prior
+written consent of Nokia, which shall not be unreasonably withheld.
-10.2 Termination
+10.2 Termination
Nokia may terminate the Agreement at any time immediately upon written
-notice by Nokia to Licensee if Licensee breaches this Agreement.
+notice by Nokia to Licensee if Licensee breaches this Agreement.
Upon termination of this Agreement, Licensee shall return to Nokia all
copies of Licensed Software that were supplied by Nokia. All other
copies of Licensed Software in the possession or control of Licensee
must be erased or destroyed. An officer of Licensee must promptly
-deliver to Nokia a written confirmation that this has occurred.
+deliver to Nokia a written confirmation that this has occurred.
-10.3 Surviving Sections
+10.3 Surviving Sections
Any terms and conditions that by their nature or otherwise reasonably
should survive a cancellation or termination of this Agreement shall
also be deemed to survive. Such terms and conditions include, but are
-not limited to the following Sections: 2, 5, 6, 7, 8, 9, 10.2, 10.3,
-10.4, 10.5, 10.6, 10.7, and 10.8 of this Agreement.
+not limited to the following Sections: 2, 5, 6, 7, 8, 9, 10.2, 10.3, 10.4,
+10.5, 10.6, 10.7, and 10.8 of this Agreement.
-10.4 Entire Agreement
+10.4 Entire Agreement
This Agreement constitutes the complete agreement between the parties
and supersedes all prior or contemporaneous discussions,
representations, and proposals, written or oral, with respect to the
subject matters discussed herein, with the exception of the
-non-disclosure agreement executed by the parties in connection with
-this Agreement ("Non-Disclosure Agreement"), if any, shall be subject
-to Section 8. No modification of this Agreement shall be effective
-unless contained in a writing executed by an authorized representative
-of each party. No term or condition contained in Licensee's purchase
-order shall apply unless expressly accepted by Nokia in writing. If
-any provision of the Agreement is found void or unenforceable, the
-remainder shall remain valid and enforceable according to its
-terms. If any remedy provided is determined to have failed for its
-essential purpose, all limitations of liability and exclusions of
-damages set forth in this Agreement shall remain in effect.
-
-10.5 Export Control
+non-disclosure agreement executed by the parties in connection with this
+Agreement ("Non-Disclosure Agreement"), if any, shall be subject to
+Section 9. No modification of this Agreement shall be effective unless
+contained in a writing executed by an authorized representative of each
+party. No term or condition contained in Licensee's purchase order shall
+apply unless expressly accepted by Nokia in writing. If any provision of
+the Agreement is found void or unenforceable, the remainder shall remain
+valid and enforceable according to its terms. If any remedy provided is
+determined to have failed for its essential purpose, all limitations of
+liability and exclusions of damages set forth in this Agreement shall
+remain in effect.
+
+10.5 Export Control
Licensee acknowledges that the Licensed Software may be subject to
export control restrictions of various countries. Licensee shall fully
-comply with all applicable export license restrictions and
-requirements as well as with all laws and regulations relating to the
-importation of the Licensed Software and shall procure all necessary
-governmental authorizations, including without limitation, all
-necessary licenses, approvals, permissions or consents, where
-necessary for the re-exportation of the Licensed Software.,
-
-10.6 Governing Law and Legal Venue
-
-This Agreement shall be construed and interpreted in accordance with
-the laws of Finland, excluding its choice of law provisions. Any
-disputes arising out of or relating to this Agreement shall be
-resolved in arbitration under the Rules of Arbitration of the Chamber
-of Commerce of Helsinki, Finland. The arbitration tribunal shall
-consist of one (1), or if either Party so requires, of three (3),
-arbitrators. The award shall be final and binding and enforceable in
-any court of competent jurisdiction. The arbitration shall be held in
-Helsinki, Finland and the process shall be conducted in the English
-language.
-
-10.7 No Implied License
-
-There are no implied licenses or other implied rights granted under
-this Agreement, and all rights, save for those expressly granted
-hereunder, shall remain with Nokia and its licensors. In addition, no
-licenses or immunities are granted to the combination of the Licensed
-Software with any other software or hardware not delivered by Nokia
-under this Agreement.
-
-10.8 Government End Users
-
+comply with all applicable export license restrictions and requirements
+as well as with all laws and regulations relating to the importation of
+the Licensed Software and shall procure all necessary governmental
+authorizations, including without limitation, all necessary licenses,
+approvals, permissions or consents, where necessary for the
+re-exportation of the Licensed Software.,
+
+10.6 Governing Law and Legal Venue
+
+This Agreement shall be construed and interpreted in accordance with the
+laws of Finland, excluding its choice of law provisions. Any disputes
+arising out of or relating to this Agreement shall be resolved in
+arbitration under the Rules of Arbitration of the Chamber of Commerce of
+Helsinki, Finland. The arbitration tribunal shall consist of one (1), or
+if either Party so requires, of three (3), arbitrators. The award shall
+be final and binding and enforceable in any court of competent
+jurisdiction. The arbitration shall be held in Helsinki, Finland and the
+process shall be conducted in the English language.
+
+10.7 No Implied License
+
+There are no implied licenses or other implied rights granted under this
+Agreement, and all rights, save for those expressly granted hereunder,
+shall remain with Nokia and its licensors. In addition, no licenses or
+immunities are granted to the combination of the Licensed Software with
+any other software or hardware not delivered by Nokia under this
+Agreement.
+
+10.8 Government End Users
+
A "U.S. Government End User" shall mean any agency or entity of the
government of the United States. The following shall apply if Licensee
is a U.S. Government End User. The Licensed Software is a "commercial
item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995),
consisting of "commercial computer software" and "commercial computer
software documentation," as such terms are used in 48 C.F.R. 12.212
-(Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48
-C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government
-End Users acquire the Licensed Software with only those rights set
-forth herein. The Licensed Software (including related documentation)
-is provided to U.S. Government End Users: (a) only as a commercial
-end item; and (b) only pursuant to this Agreement.
+(Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
+through 227.7202-4 (June 1995), all U.S. Government End Users acquire
+the Licensed Software with only those rights set forth herein. The
+Licensed Software (including related documentation) is provided to U.S.
+Government End Users: (a) only as a commercial end item; and (b) only
+pursuant to this Agreement.
diff --git a/bin/createpackage.bat b/bin/createpackage.bat
new file mode 100755
index 000000000..73818887c
--- /dev/null
+++ b/bin/createpackage.bat
@@ -0,0 +1,44 @@
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::
+:: Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+:: All rights reserved.
+:: Contact: Nokia Corporation (qt-info@nokia.com)
+::
+:: This file is part of the 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$
+::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+
+@echo off
+set scriptpath=%~dp0
+perl %scriptpath%createpackage.pl %*
diff --git a/bin/createpackage.pl b/bin/createpackage.pl
new file mode 100755
index 000000000..7e8775817
--- /dev/null
+++ b/bin/createpackage.pl
@@ -0,0 +1,273 @@
+#!/usr/bin/perl
+#############################################################################
+##
+## Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+## All rights reserved.
+## Contact: Nokia Corporation (qt-info@nokia.com)
+##
+## This file is part of the S60 port 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$
+##
+#############################################################################
+
+############################################################################################
+#
+# Convenience script for creating signed packages you can install on your phone.
+#
+############################################################################################
+
+use strict;
+
+# use a command-line parsing module
+use Getopt::Long;
+# Use file name parsing module
+use File::Basename;
+# Use File::Spec services mainly rel2abs
+use File::Spec;
+# use CWD abs_bath, which is exported only on request
+use Cwd 'abs_path';
+
+
+sub Usage() {
+ print <<ENDUSAGESTRING;
+
+==============================================================================================
+Convenience script for creating signed packages you can install on your phone.
+
+Usage: createpackage.pl [options] templatepkg target-platform [certificate key [passphrase]]
+
+Where supported optiobns are as follows:
+ [-i|install] = Install the package right away using PC suite
+ [-p|preprocess] = Only preprocess the template .pkg file.
+ [-c|certfile=<file>] = The file containing certificate information for signing.
+ The file can have several certificates, each specified in
+ separate line. The certificate, key and passphrase in line
+ must be ';' separated. Lines starting with '#' are treated
+ as a comments. Also empty lines are ignored. The paths in
+ <file> can be absolute or relative to <file>.
+Where parameters are as follows:
+ templatepkg = Name of .pkg file template
+ target = Either debug or release
+ platform = One of the supported platform
+ winscw | gcce | armv5 | armv6 | armv7
+ certificate = The certificate file used for signing
+ key = The certificate's private key file
+ passphrase = The certificate's private key file's passphrase
+
+Example:
+ createpackage.pl fluidlauncher_template.pkg release-armv5
+
+Example with certfile:
+ createpackage.pl -c=mycerts.txt fluidlauncher_template.pkg release-armv5
+
+ Content of 'mycerts.txt' must be something like this:
+ # This is comment line, also the empty lines are ignored
+ rd.cer;rd-key.pem
+ .\\cert\\mycert.cer;.\\cert\\mykey.key;yourpassword
+ X:\\QtS60\\selfsigned.cer;X:\\QtS60\\selfsigned.key
+
+If no certificate and key files are provided, either a RnD certificate or
+a self-signed certificate from Qt installation root directory is used.
+==============================================================================================
+
+ENDUSAGESTRING
+
+ exit();
+}
+
+# Read given options
+my $install = "";
+my $preprocessonly = "";
+my $certfile = "";
+
+unless (GetOptions('i|install' => \$install, 'p|preprocess' => \$preprocessonly, 'c|certfile=s' => \$certfile)){
+ Usage();
+}
+
+my $certfilepath = abs_path(dirname($certfile));
+
+# Read params to variables
+my $templatepkg = $ARGV[0];
+my $targetplatform = lc $ARGV[1];
+
+my @tmpvalues = split('-', $targetplatform);
+my $target = $tmpvalues[0];
+my $platform = $tmpvalues[1];;
+
+# Convert visual target to real target (debug->udeb and release->urel)
+$target =~ s/debug/udeb/i;
+$target =~ s/release/urel/i;
+
+my $certificate = $ARGV[2];
+my $key = $ARGV[3];
+my $passphrase = $ARGV[4];
+
+# Generate output pkg basename (i.e. file name without extension)
+my $pkgoutputbasename = $templatepkg;
+$pkgoutputbasename =~ s/_template\.pkg/_$targetplatform/g;
+$pkgoutputbasename = lc($pkgoutputbasename);
+
+# Store output file names to variables
+my $pkgoutput = lc($pkgoutputbasename.".pkg");
+my $unsigned_sis_name = $pkgoutputbasename."_unsigned.sis";
+my $signed_sis_name = $pkgoutputbasename.".sis";
+
+# Store some utility variables
+my $scriptpath = dirname(__FILE__);
+my $certtext = $certificate;
+my $certpath = $scriptpath;
+$certpath =~ s-^(.*[^\\])$-$1\\-o; # ensure path ends with a backslash
+$certpath =~ s-/-\\-go; # for those working with UNIX shells
+$certpath =~ s-bin\\$-src\\s60installs\\-; # certificates are one step up in hierarcy
+
+# Check some pre-conditions and print error messages if needed
+unless (length($templatepkg) && length($platform) && length($target)) {
+ print "\nError: Template PKG filename, platform or target is not defined!\n";
+ Usage();
+}
+
+# Check template exist
+stat($templatepkg);
+unless( -e _ ) {
+ print "\nError: Package description file '$templatepkg' does not exist!\n";
+ Usage();
+}
+
+# Check certifcate preconditions and set default certificate variables if needed
+if (length($certificate)) {
+ unless(length($key)) {
+ print "\nError: Custom certificate key file parameter missing.!\n";
+ Usage();
+ }
+} else {
+ #If no certificate is given, check default options
+ $certtext = "RnD";
+ $certificate = $certpath."rd.cer";
+ $key = $certpath."rd-key.pem";
+
+ stat($certificate);
+ unless( -e _ ) {
+ $certtext = "Self Signed";
+ $certificate = $certpath."selfsigned.cer";
+ $key = $certpath."selfsigned.key";
+ }
+}
+
+# Read the certificates from file to two dimensional array
+my @certificates;
+if (length($certfile)) {
+ open CERTFILE, "<$certfile" or die $!;
+ while(<CERTFILE>){
+ s/#.*//; # ignore comments by erasing them
+ next if /^(\s)*$/; # skip blank lines
+ chomp; # remove trailing newline characters
+ my @certinfo = split(';', $_); # split row to certinfo
+
+ # Trim spaces
+ for(@certinfo) {
+ s/^\s+//;
+ s/\s+$//;
+ }
+
+ # Do some validation
+ unless(scalar(@certinfo) >= 2 && scalar(@certinfo) <= 3 && length($certinfo[0]) && length($certinfo[1]) ) {
+ print "\nError: $certfile line '$_' does not contain valid information!\n";
+ Usage();
+ }
+
+ push @certificates, [@certinfo]; # push data to two dimensional array
+ }
+}
+
+# Remove any existing .sis packages
+unlink $unsigned_sis_name;
+unlink $signed_sis_name;
+unlink $pkgoutput;
+
+# Preprocess PKG
+local $/;
+# read template file
+open( TEMPLATE, $templatepkg) or die "Error '$templatepkg': $!\n";
+$_=<TEMPLATE>;
+close (TEMPLATE);
+
+# replace the PKG variables
+s/\$\(PLATFORM\)/$platform/gm;
+s/\$\(TARGET\)/$target/gm;
+
+#write the output
+open( OUTPUT, ">$pkgoutput" ) or die "Error '$pkgoutput' $!\n";
+print OUTPUT $_;
+close OUTPUT;
+
+if ($preprocessonly) {
+ exit;
+}
+
+# Create SIS.
+system ("makesis $pkgoutput $unsigned_sis_name");
+
+# Sign SIS with certificate info given as an argument.
+system ("signsis $unsigned_sis_name $signed_sis_name $certificate $key $passphrase");
+
+# Check if creating signed SIS Succeeded
+stat($signed_sis_name);
+if( -e _ ) {
+ print ("\nSuccessfully created $signed_sis_name using certificate: $certtext!\n");
+
+ # Sign with additional certificates & keys
+ for my $row ( @certificates ) {
+ # Get certificate absolute file names, relative paths are relative to certfilepath
+ my $abscert = File::Spec->rel2abs( $row->[0], $certfilepath);
+ my $abskey = File::Spec->rel2abs( $row->[1], $certfilepath);
+
+ system ("signsis $signed_sis_name $signed_sis_name $abscert $abskey $row->[2]");
+ print ("\tAdditionally signed the SIS with certificate: $row->[0]!\n");
+ }
+
+ # remove temporary pkg and unsigned sis
+ unlink $pkgoutput;
+ unlink $unsigned_sis_name;
+
+ # Install the sis if requested
+ if ($install) {
+ print ("\nInstalling $signed_sis_name...\n");
+ system ("$signed_sis_name");
+ }
+} else {
+ # Lets leave the generated PKG for problem solving purposes
+ print ("\nSIS creation failed!\n");
+}
+
+
+#end of file
diff --git a/bin/patch_capabilities.pl b/bin/patch_capabilities.pl
new file mode 100755
index 000000000..bfd34f089
--- /dev/null
+++ b/bin/patch_capabilities.pl
@@ -0,0 +1,182 @@
+#!/usr/bin/perl
+#############################################################################
+##
+## Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+## All rights reserved.
+## Contact: Nokia Corporation (qt-info@nokia.com)
+##
+## This file is part of the S60 port 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$
+##
+#############################################################################
+
+#######################################################################
+#
+# A script for setting binary capabilities based on .pkg file contents.
+#
+#######################################################################
+
+sub Usage() {
+ print("This script can be used to set capabilities of all binaries\n");
+ print("specified for deployment in a .pkg file.\n");
+ print("If no capabilities are given, the binaries will be given the\n");
+ print("capabilities supported by self-signed certificates.\n");
+ print("\n *** NOTE: If *_template.pkg file is given, 'target-platform' is REQUIRED. ***\n");
+ print("\nUsage: patch_capabilities.pl pkg_filename <target-platform> [capability list]\n");
+ print("\nE.g. patch_capabilities.pl myapp_template.pkg release-armv5 \"All -TCB\"\n");
+ exit();
+}
+
+my @capabilitiesToSet = ("LocalServices", "NetworkServices", "ReadUserData", "UserEnvironment", "WriteUserData");
+
+# If arguments were given to the script,
+if (@ARGV)
+{
+ # Parse the first given script argument as a ".pkg" file name.
+ my $pkgFileName = shift(@ARGV);
+
+ # These variables will only be set for template .pkg files.
+ my $target;
+ my $platform;
+
+ # Check if using template .pkg and set target/platform variables
+ if (($pkgFileName =~ m|_template\.pkg$|i) && -r($pkgFileName))
+ {
+ my $targetplatform;
+ unless ($targetplatform = shift(@ARGV))
+ {
+ Usage();
+ }
+
+ my @tmpvalues = split('-', $targetplatform);
+ $target = $tmpvalues[0];
+ $platform = $tmpvalues[1];
+
+ # Convert visual target to real target (debug->udeb and release->urel)
+ $target =~ s/debug/udeb/i;
+ $target =~ s/release/urel/i;
+ }
+
+ # If the specified ".pkg" file exists (and can be read),
+ if (($pkgFileName =~ m|\.pkg$|i) && -r($pkgFileName))
+ {
+ # If there are more arguments given, parse them as capabilities.
+ if (@ARGV)
+ {
+ @capabilitiesToSet = ();
+ while (@ARGV)
+ {
+ push (@capabilitiesToSet, pop(@ARGV));
+ }
+ }
+
+ # Start with no binaries listed.
+ my @binaries = ();
+
+ my $tempPkgFileName = $pkgFileName."_@@TEMP@@";
+ unlink($tempPkgFileName);
+ open (NEW_PKG, ">>".$tempPkgFileName);
+ open (PKG, "<".$pkgFileName);
+
+ # Parse each line.
+ while (<PKG>)
+ {
+ my $line = $_;
+ my $newLine = $line;
+ if ( $line =~ m/^\#.*\(0x[0-9|a-f|A-F]*\).*$/)
+ {
+ $newLine =~ s/\(0x./\(0xE/;
+ }
+ print NEW_PKG $newLine;
+
+ chomp ($line);
+
+ # If the line specifies a file, parse the source and destination locations.
+ if ($line =~ m|\"([^\"]+)\"\s*\-\s*\"([^\"]+)\"|)
+ {
+ my $sourcePath = $1;
+ my $destinationPath = $2;
+
+ # If the given file is a binary, check the target and binary type (+ the actual filename) from its path.
+ if ($sourcePath =~ m:/epoc32/release/([^/]+)/(udeb|urel|\$\(TARGET\))/(\w+(\.dll|\.exe)):i)
+ {
+ # Do preprocessing for template pkg,
+ # In case of template pkg target and platform variables are set
+ if(length($target) && length($platform))
+ {
+ $sourcePath =~ s/\$\(PLATFORM\)/$platform/gm;
+ $sourcePath =~ s/\$\(TARGET\)/$target/gm;
+ }
+
+ push (@binaries, $sourcePath);
+ }
+ }
+ }
+
+ close (PKG);
+ close (NEW_PKG);
+
+ unlink($pkgFileName);
+ rename($tempPkgFileName, $pkgFileName);
+
+ print ("\n");
+
+ my $baseCommandToExecute = "elftran -vid 0x0 -capability \"";
+ if (@capabilitiesToSet)
+ {
+ $baseCommandToExecute .= join(" ", @capabilitiesToSet);
+ }
+ $baseCommandToExecute .= "\" ";
+
+ # Actually set the capabilities of the listed binaries.
+ foreach my $binaryPath(@binaries)
+ {
+ # Create the command line for setting the capabilities.
+ my $commandToExecute = $baseCommandToExecute;
+ $commandToExecute .= $binaryPath;
+
+ # Actually execute the elftran command to set the capabilities.
+ system ($commandToExecute." > NUL");
+ print ("Executed ".$commandToExecute."\n");
+
+ ## Create another command line to check that the set capabilities are correct.
+ #$commandToExecute = "elftran -dump s ".$binaryPath;
+ }
+
+ print ("\n");
+ }
+}
+else
+{
+ Usage();
+}
diff --git a/bin/setcepaths.bat b/bin/setcepaths.bat
index 5e0452659..914e59431 100755
--- a/bin/setcepaths.bat
+++ b/bin/setcepaths.bat
@@ -1,3 +1,43 @@
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::
+:: Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+:: All rights reserved.
+:: Contact: Nokia Corporation (qt-info@nokia.com)
+::
+:: This file is part of the 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$
+::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
IF "%1" EQU "wincewm50pocket-msvc2005" (
checksdk.exe -sdk "Windows Mobile 5.0 Pocket PC SDK (ARMV4I)" -script tmp_created_script_setup.bat 1>NUL
@@ -39,6 +79,11 @@ checksdk.exe -sdk "Windows Mobile 6 Professional SDK (ARMV4I)" -script tmp_creat
tmp_created_script_setup.bat
del tmp_created_script_setup.bat
echo Windows Mobile 6 Professional selected, environment is set up
+) ELSE IF "%1" EQU "wincewm65professional-msvc2005" (
+checksdk.exe -sdk "Windows Mobile 6 Professional SDK (ARMV4I)" -script tmp_created_script_setup.bat 1>NUL
+tmp_created_script_setup.bat
+del tmp_created_script_setup.bat
+echo Windows Mobile 6 Professional selected, environment is set up
) ELSE IF "%1" EQU "wincewm60standard-msvc2005" (
checksdk.exe -sdk "Windows Mobile 6 Standard SDK (ARMV4I)" -script tmp_created_script_setup.bat 1>NUL
tmp_created_script_setup.bat
@@ -84,6 +129,11 @@ checksdk.exe -sdk "Windows Mobile 6 Professional SDK (ARMV4I)" -script tmp_creat
tmp_created_script_setup.bat
del tmp_created_script_setup.bat
echo Windows Mobile 6 Professional selected, environment is set up
+) ELSE IF "%1" EQU "wincewm65professional-msvc2008" (
+checksdk.exe -sdk "Windows Mobile 6 Professional SDK (ARMV4I)" -script tmp_created_script_setup.bat 1>NUL
+tmp_created_script_setup.bat
+del tmp_created_script_setup.bat
+echo Windows Mobile 6 Professional selected, environment is set up
) ELSE IF "%1" EQU "wincewm60standard-msvc2008" (
checksdk.exe -sdk "Windows Mobile 6 Standard SDK (ARMV4I)" -script tmp_created_script_setup.bat 1>NUL
tmp_created_script_setup.bat
diff --git a/bin/syncqt b/bin/syncqt
index 01c519e96..8bb4bb9c3 100755
--- a/bin/syncqt
+++ b/bin/syncqt
@@ -31,12 +31,12 @@ my %modules = ( # path to module name map
"QtSql" => "$basedir/src/sql",
"QtNetwork" => "$basedir/src/network",
"QtSvg" => "$basedir/src/svg",
+ "QtDeclarative" => "$basedir/src/declarative",
"QtScript" => "$basedir/src/script",
"QtScriptTools" => "$basedir/src/scripttools",
"Qt3Support" => "$basedir/src/qt3support",
"ActiveQt" => "$basedir/src/activeqt/container;$basedir/src/activeqt/control;$basedir/src/activeqt/shared",
"QtTest" => "$basedir/src/testlib",
- "QtAssistant" => "$basedir/tools/assistant/compat/lib",
"QtHelp" => "$basedir/tools/assistant/lib",
"QtDesigner" => "$basedir/tools/designer/src/lib",
"QtUiTools" => "$basedir/tools/designer/src/uitools",
@@ -529,7 +529,7 @@ sub findFiles {
} else {
($dir =~ /\/$/) || ($dir .= "/");
}
- foreach $file ( readdir(D) ) {
+ foreach $file ( sort readdir(D) ) {
next if ( $file =~ /^\.\.?$/ );
$p = $file;
($file =~ /$match/) && (push @files, $p);
@@ -653,7 +653,7 @@ my @ignore_for_master_contents = ( "qt.h", "qpaintdevicedefs.h" );
my @ignore_for_include_check = ( "qatomic.h" );
my @ignore_for_qt_begin_header_check = ( "qiconset.h", "qconfig.h", "qconfig-dist.h", "qconfig-large.h", "qconfig-medium.h", "qconfig-minimal.h", "qconfig-small.h", "qfeatures.h", "qt_windows.h" );
my @ignore_for_qt_begin_namespace_check = ( "qconfig.h", "qconfig-dist.h", "qconfig-large.h", "qconfig-medium.h", "qconfig-minimal.h", "qconfig-small.h", "qfeatures.h", "qatomic_arch.h", "qatomic_windowsce.h", "qt_windows.h", "qatomic_macosx.h" );
-my @ignore_for_qt_module_check = ( "$modules{QtCore}/arch", "$modules{QtCore}/global", "$modules{QtSql}/drivers", "$modules{QtTest}", "$modules{QtAssistant}", "$modules{QtDesigner}", "$modules{QtUiTools}", "$modules{QtDBus}", "$modules{phonon}" );
+my @ignore_for_qt_module_check = ( "$modules{QtCore}/arch", "$modules{QtCore}/global", "$modules{QtSql}/drivers", "$modules{QtTest}", "$modules{QtDesigner}", "$modules{QtUiTools}", "$modules{QtDBus}", "$modules{phonon}" );
foreach (@modules_to_sync) {
#iteration info
@@ -682,6 +682,7 @@ foreach (@modules_to_sync) {
$master_contents .= "#include <QtGui/QtGui>\n" if("$_" eq "gui");
$master_contents .= "#include <QtNetwork/QtNetwork>\n" if("$_" eq "network");
$master_contents .= "#include <QtSvg/QtSvg>\n" if("$_" eq "svg");
+ $master_contents .= "#include <QtDeclarative/QtDeclarative>\n" if("$_" eq "declarative");
$master_contents .= "#include <QtScript/QtScript>\n" if("$_" eq "script");
$master_contents .= "#include <QtScriptTools/QtScriptTools>\n" if("$_" eq "scripttools");
$master_contents .= "#include <Qt3Support/Qt3Support>\n" if("$_" eq "qt3support");
@@ -843,9 +844,15 @@ foreach (@modules_to_sync) {
$master_contents .= "#endif\n";
unless($showonly) {
- unless ($lib eq "phonon") {
+ my @master_includes;
+ if ($lib eq "phonon") {
+ push @master_includes, "$out_basedir/include/phonon_compat/phonon/phonon";
+ push @master_includes, "$out_basedir/include/phonon/Phonon/Phonon";
+ } else {
+ push @master_includes, "$out_basedir/include/$lib/$lib";
+ }
+ foreach my $master_include (@master_includes) {
#generate the "master" include file
- my $master_include = "$out_basedir/include/$lib/$lib";
$pri_install_files .= fixPaths($master_include, "$modules{$lib}") . " "; #get the master file installed too
if($master_include && -e "$master_include") {
open MASTERINCLUDE, "<$master_include";
diff --git a/bin/syncqt.bat b/bin/syncqt.bat
index 579844f2f..43dff5ebc 100755
--- a/bin/syncqt.bat
+++ b/bin/syncqt.bat
@@ -1,2 +1,42 @@
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::
+:: Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+:: All rights reserved.
+:: Contact: Nokia Corporation (qt-info@nokia.com)
+::
+:: This file is part of the 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$
+::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@rem ***** This assumes PERL is in the PATH *****
@perl.exe -S syncqt %*
diff --git a/config.tests/mac/crc/main.cpp b/config.tests/mac/crc/main.cpp
index 2ac10b38d..894f88b0d 100644
--- a/config.tests/mac/crc/main.cpp
+++ b/config.tests/mac/crc/main.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <iostream>
#include <cstdlib>
#include <cstring>
diff --git a/config.tests/mac/xcodeversion.cpp b/config.tests/mac/xcodeversion.cpp
index e613cc592..8c1c3a947 100644
--- a/config.tests/mac/xcodeversion.cpp
+++ b/config.tests/mac/xcodeversion.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <stdlib.h>
#include <stdio.h>
#include <CoreFoundation/CoreFoundation.h>
diff --git a/config.tests/qws/ahi/ahi.cpp b/config.tests/qws/ahi/ahi.cpp
index a5e89515e..7cbe4935d 100644
--- a/config.tests/qws/ahi/ahi.cpp
+++ b/config.tests/qws/ahi/ahi.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <ahi.h>
int main(int, char **)
diff --git a/config.tests/qws/directfb/directfb.cpp b/config.tests/qws/directfb/directfb.cpp
index f743864bb..61c0eca5b 100644
--- a/config.tests/qws/directfb/directfb.cpp
+++ b/config.tests/qws/directfb/directfb.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <directfb.h>
int main(int, char **)
diff --git a/config.tests/qws/sound/sound.cpp b/config.tests/qws/sound/sound.cpp
index be412bb24..2b5d120a0 100644
--- a/config.tests/qws/sound/sound.cpp
+++ b/config.tests/qws/sound/sound.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <sys/soundcard.h>
int main(int, char **)
diff --git a/config.tests/qws/svgalib/svgalib.cpp b/config.tests/qws/svgalib/svgalib.cpp
index f4bf9c8bd..5b8cf2615 100644
--- a/config.tests/qws/svgalib/svgalib.cpp
+++ b/config.tests/qws/svgalib/svgalib.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <vga.h>
#include <vgagl.h>
diff --git a/config.tests/unix/3dnow/3dnow.cpp b/config.tests/unix/3dnow/3dnow.cpp
index 1b1d0ed74..3f78e8d1f 100644
--- a/config.tests/unix/3dnow/3dnow.cpp
+++ b/config.tests/unix/3dnow/3dnow.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <mm3dnow.h>
#if defined(__GNUC__) && __GNUC__ < 4 && __GNUC_MINOR__ < 3
#error GCC < 3.2 is known to create internal compiler errors with our MMX code
diff --git a/config.tests/unix/alsa/alsatest.cpp b/config.tests/unix/alsa/alsatest.cpp
index af2f5d91f..1307c4e53 100644
--- a/config.tests/unix/alsa/alsatest.cpp
+++ b/config.tests/unix/alsa/alsatest.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
#include <alsa/asoundlib.h>
int main(int argc,char **argv)
{
diff --git a/config.tests/unix/clock-gettime/clock-gettime.cpp b/config.tests/unix/clock-gettime/clock-gettime.cpp
index edb71f524..8b1164df4 100644
--- a/config.tests/unix/clock-gettime/clock-gettime.cpp
+++ b/config.tests/unix/clock-gettime/clock-gettime.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <unistd.h>
#include <time.h>
diff --git a/config.tests/unix/clock-monotonic/clock-monotonic.cpp b/config.tests/unix/clock-monotonic/clock-monotonic.cpp
index df9996368..42abe97dd 100644
--- a/config.tests/unix/clock-monotonic/clock-monotonic.cpp
+++ b/config.tests/unix/clock-monotonic/clock-monotonic.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <unistd.h>
#include <time.h>
diff --git a/config.tests/unix/cups/cups.cpp b/config.tests/unix/cups/cups.cpp
index e8c17eaea..e864a1748 100644
--- a/config.tests/unix/cups/cups.cpp
+++ b/config.tests/unix/cups/cups.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <cups/cups.h>
int main(int, char **)
diff --git a/config.tests/unix/db2/db2.cpp b/config.tests/unix/db2/db2.cpp
index e408d280a..b5f0bd766 100644
--- a/config.tests/unix/db2/db2.cpp
+++ b/config.tests/unix/db2/db2.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <sqlcli.h>
#include <sqlcli1.h>
diff --git a/config.tests/unix/dbus/dbus.cpp b/config.tests/unix/dbus/dbus.cpp
index 15ed45fcd..7d5e996fc 100644
--- a/config.tests/unix/dbus/dbus.cpp
+++ b/config.tests/unix/dbus/dbus.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 DBUS_API_SUBJECT_TO_CHANGE
#include <dbus/dbus.h>
diff --git a/config.tests/unix/doubleformat/doubleformattest.cpp b/config.tests/unix/doubleformat/doubleformattest.cpp
index d71caba3a..4f5834b52 100644
--- a/config.tests/unix/doubleformat/doubleformattest.cpp
+++ b/config.tests/unix/doubleformat/doubleformattest.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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$
+**
+****************************************************************************/
+
/*
LE: strings | grep 0123ABCD0123ABCD
diff --git a/config.tests/unix/egl/egl.cpp b/config.tests/unix/egl/egl.cpp
index 0c7f32c3d..be34e85c4 100644
--- a/config.tests/unix/egl/egl.cpp
+++ b/config.tests/unix/egl/egl.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <EGL/egl.h>
int main(int, char **)
diff --git a/config.tests/unix/egl4gles1/egl4gles1.cpp b/config.tests/unix/egl4gles1/egl4gles1.cpp
index c1acb905f..01bc1716f 100644
--- a/config.tests/unix/egl4gles1/egl4gles1.cpp
+++ b/config.tests/unix/egl4gles1/egl4gles1.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <GLES/egl.h>
int main(int, char **)
diff --git a/config.tests/unix/endian/endiantest.cpp b/config.tests/unix/endian/endiantest.cpp
index 40af74621..5c9b27aa3 100644
--- a/config.tests/unix/endian/endiantest.cpp
+++ b/config.tests/unix/endian/endiantest.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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$
+**
+****************************************************************************/
+
// "MostSignificantByteFirst"
short msb_bigendian[] = { 0x0000, 0x4d6f, 0x7374, 0x5369, 0x676e, 0x6966, 0x6963, 0x616e, 0x7442, 0x7974, 0x6546, 0x6972, 0x7374, 0x0000 };
diff --git a/config.tests/unix/floatmath/floatmath.cpp b/config.tests/unix/floatmath/floatmath.cpp
index 126f820ce..28606ef67 100644
--- a/config.tests/unix/floatmath/floatmath.cpp
+++ b/config.tests/unix/floatmath/floatmath.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <math.h>
int main(int argc, char **argv)
diff --git a/config.tests/unix/freetype/freetype.cpp b/config.tests/unix/freetype/freetype.cpp
index 3edf6191e..8b484ce8f 100644
--- a/config.tests/unix/freetype/freetype.cpp
+++ b/config.tests/unix/freetype/freetype.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <ft2build.h>
#include FT_FREETYPE_H
diff --git a/config.tests/unix/getaddrinfo/getaddrinfotest.cpp b/config.tests/unix/getaddrinfo/getaddrinfotest.cpp
index 9dcd03065..e1118bbd5 100644
--- a/config.tests/unix/getaddrinfo/getaddrinfotest.cpp
+++ b/config.tests/unix/getaddrinfo/getaddrinfotest.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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$
+**
+****************************************************************************/
+
/* Sample program for configure to test for getaddrinfo on the unix
platform. we check for all structures and functions required. */
diff --git a/config.tests/unix/getifaddrs/getifaddrs.cpp b/config.tests/unix/getifaddrs/getifaddrs.cpp
index 4e05a18fe..2ea6fc4bd 100644
--- a/config.tests/unix/getifaddrs/getifaddrs.cpp
+++ b/config.tests/unix/getifaddrs/getifaddrs.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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$
+**
+****************************************************************************/
+
/* Sample program for configure to test for if_nametoindex support
on target platforms. */
diff --git a/config.tests/unix/glib/glib.cpp b/config.tests/unix/glib/glib.cpp
index 16b787d2f..dd9f56265 100644
--- a/config.tests/unix/glib/glib.cpp
+++ b/config.tests/unix/glib/glib.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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$
+**
+****************************************************************************/
+
typedef struct _GMainContext GMainContext;
#include <glib.h>
diff --git a/config.tests/unix/gnu-libiconv/gnu-libiconv.cpp b/config.tests/unix/gnu-libiconv/gnu-libiconv.cpp
index 21f12dd42..fd0e3b53a 100644
--- a/config.tests/unix/gnu-libiconv/gnu-libiconv.cpp
+++ b/config.tests/unix/gnu-libiconv/gnu-libiconv.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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$
+**
+****************************************************************************/
+
#if defined(__sgi)
#error "iconv not supported on IRIX"
#else
diff --git a/config.tests/unix/gstreamer/gstreamer.cpp b/config.tests/unix/gstreamer/gstreamer.cpp
index 6ef85e1be..8901e7d89 100644
--- a/config.tests/unix/gstreamer/gstreamer.cpp
+++ b/config.tests/unix/gstreamer/gstreamer.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <gst/gst.h>
#include <gst/interfaces/propertyprobe.h>
#include <gst/interfaces/xoverlay.h>
diff --git a/config.tests/unix/ibase/ibase.cpp b/config.tests/unix/ibase/ibase.cpp
index 21522601f..61772761f 100644
--- a/config.tests/unix/ibase/ibase.cpp
+++ b/config.tests/unix/ibase/ibase.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <ibase.h>
int main(int, char **)
diff --git a/config.tests/unix/iconv/iconv.cpp b/config.tests/unix/iconv/iconv.cpp
index c0f35a398..4e2c15468 100644
--- a/config.tests/unix/iconv/iconv.cpp
+++ b/config.tests/unix/iconv/iconv.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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$
+**
+****************************************************************************/
+
#if defined(__sgi)
#error "iconv not supported on IRIX"
#else
diff --git a/config.tests/unix/inotify/inotifytest.cpp b/config.tests/unix/inotify/inotifytest.cpp
index 8378a7e1a..4fab0661f 100644
--- a/config.tests/unix/inotify/inotifytest.cpp
+++ b/config.tests/unix/inotify/inotifytest.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <sys/inotify.h>
int main()
diff --git a/config.tests/unix/iodbc/iodbc.cpp b/config.tests/unix/iodbc/iodbc.cpp
index 6b64e12cf..43b9ea072 100644
--- a/config.tests/unix/iodbc/iodbc.cpp
+++ b/config.tests/unix/iodbc/iodbc.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
#include <sql.h>
#include <sqlext.h>
diff --git a/config.tests/unix/ipv6/ipv6test.cpp b/config.tests/unix/ipv6/ipv6test.cpp
index 5f87eebad..9eeb5ed0b 100644
--- a/config.tests/unix/ipv6/ipv6test.cpp
+++ b/config.tests/unix/ipv6/ipv6test.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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$
+**
+****************************************************************************/
+
/* Sample program for configure to test IPv6 support on target
platforms. We check for the required IPv6 data structures. */
diff --git a/config.tests/unix/ipv6ifname/ipv6ifname.cpp b/config.tests/unix/ipv6ifname/ipv6ifname.cpp
index 619a783b8..29741c0a5 100644
--- a/config.tests/unix/ipv6ifname/ipv6ifname.cpp
+++ b/config.tests/unix/ipv6ifname/ipv6ifname.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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$
+**
+****************************************************************************/
+
/* Sample program for configure to test for if_nametoindex support
on target platforms. */
diff --git a/config.tests/unix/iwmmxt/iwmmxt.cpp b/config.tests/unix/iwmmxt/iwmmxt.cpp
index 77b09b4c2..de25796a8 100644
--- a/config.tests/unix/iwmmxt/iwmmxt.cpp
+++ b/config.tests/unix/iwmmxt/iwmmxt.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <mmintrin.h>
int main(int, char**)
diff --git a/config.tests/unix/javascriptcore-jit/hwcap_test.cpp b/config.tests/unix/javascriptcore-jit/hwcap_test.cpp
new file mode 100644
index 000000000..f0f5d40c8
--- /dev/null
+++ b/config.tests/unix/javascriptcore-jit/hwcap_test.cpp
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+#include <asm/hwcap.h>
+
+int main (int argc, char **argv)
+{
+ return 0;
+}
diff --git a/config.tests/unix/javascriptcore-jit/javascriptcore-jit.pro b/config.tests/unix/javascriptcore-jit/javascriptcore-jit.pro
new file mode 100644
index 000000000..0d5a20d7f
--- /dev/null
+++ b/config.tests/unix/javascriptcore-jit/javascriptcore-jit.pro
@@ -0,0 +1,2 @@
+SOURCES = hwcap_test.cpp
+CONFIG -= qt dylib
diff --git a/config.tests/unix/largefile/largefiletest.cpp b/config.tests/unix/largefile/largefiletest.cpp
index ed04e7a4a..b8df28d2b 100644
--- a/config.tests/unix/largefile/largefiletest.cpp
+++ b/config.tests/unix/largefile/largefiletest.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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$
+**
+****************************************************************************/
+
/* Sample program for configure to test Large File support on target
platforms.
*/
diff --git a/config.tests/unix/libjpeg/libjpeg.cpp b/config.tests/unix/libjpeg/libjpeg.cpp
index de1fb7bad..83aea3a2b 100644
--- a/config.tests/unix/libjpeg/libjpeg.cpp
+++ b/config.tests/unix/libjpeg/libjpeg.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <sys/types.h>
#include <stdio.h>
extern "C" {
diff --git a/config.tests/unix/libmng/libmng.cpp b/config.tests/unix/libmng/libmng.cpp
index cafb4780c..9f458c096 100644
--- a/config.tests/unix/libmng/libmng.cpp
+++ b/config.tests/unix/libmng/libmng.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <libmng.h>
int main(int, char **)
diff --git a/config.tests/unix/libpng/libpng.cpp b/config.tests/unix/libpng/libpng.cpp
index 7a3f2a76e..d832769dc 100644
--- a/config.tests/unix/libpng/libpng.cpp
+++ b/config.tests/unix/libpng/libpng.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <png.h>
#if !defined(PNG_LIBPNG_VER) || PNG_LIBPNG_VER < 10017
diff --git a/config.tests/unix/libtiff/libtiff.cpp b/config.tests/unix/libtiff/libtiff.cpp
index eac03abd0..7d41f2584 100644
--- a/config.tests/unix/libtiff/libtiff.cpp
+++ b/config.tests/unix/libtiff/libtiff.cpp
@@ -1,5 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <tiffio.h>
+#if !defined(TIFF_VERSION) && defined(TIFF_VERSION_CLASSIC)
+// libtiff 4.0 splits it into TIFF_VERSION_CLASSIC and TIFF_VERSION_BIG
+# define TIFF_VERSION TIFF_VERSION_CLASSIC
+#endif
+
#if !defined(TIFF_VERSION)
# error "Required libtiff not found"
#elif TIFF_VERSION < 42
diff --git a/config.tests/unix/mmx/mmx.cpp b/config.tests/unix/mmx/mmx.cpp
index 617cd62b6..9e1084d64 100644
--- a/config.tests/unix/mmx/mmx.cpp
+++ b/config.tests/unix/mmx/mmx.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <mmintrin.h>
#if defined(__GNUC__) && __GNUC__ < 4 && __GNUC_MINOR__ < 3
#error GCC < 3.2 is known to create internal compiler errors with our MMX code
diff --git a/config.tests/unix/mremap/mremap.cpp b/config.tests/unix/mremap/mremap.cpp
index 1a2ada164..a6f44ddec 100644
--- a/config.tests/unix/mremap/mremap.cpp
+++ b/config.tests/unix/mremap/mremap.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <unistd.h>
#include <sys/mman.h>
diff --git a/config.tests/unix/mysql/mysql.cpp b/config.tests/unix/mysql/mysql.cpp
index c05da1c67..6b6f7a8f7 100644
--- a/config.tests/unix/mysql/mysql.cpp
+++ b/config.tests/unix/mysql/mysql.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 "mysql.h"
int main(int, char **)
diff --git a/config.tests/unix/nis/nis.cpp b/config.tests/unix/nis/nis.cpp
index 65561f13c..24a39283a 100644
--- a/config.tests/unix/nis/nis.cpp
+++ b/config.tests/unix/nis/nis.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <sys/types.h>
#include <rpc/rpc.h>
#include <rpcsvc/ypclnt.h>
diff --git a/config.tests/unix/oci/oci.cpp b/config.tests/unix/oci/oci.cpp
index 9f83a787f..34d6f083d 100644
--- a/config.tests/unix/oci/oci.cpp
+++ b/config.tests/unix/oci/oci.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <oci.h>
int main(int, char **)
diff --git a/config.tests/unix/odbc/odbc.cpp b/config.tests/unix/odbc/odbc.cpp
index 6b64e12cf..d08a7f23e 100644
--- a/config.tests/unix/odbc/odbc.cpp
+++ b/config.tests/unix/odbc/odbc.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <sql.h>
#include <sqlext.h>
diff --git a/config.tests/unix/opengles1/opengles1.cpp b/config.tests/unix/opengles1/opengles1.cpp
index de690c9a1..0631c86e3 100644
--- a/config.tests/unix/opengles1/opengles1.cpp
+++ b/config.tests/unix/opengles1/opengles1.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <GLES/gl.h>
int main(int, char **)
diff --git a/config.tests/unix/opengles1/opengles1.pro b/config.tests/unix/opengles1/opengles1.pro
index ad8dd3160..1469aa946 100644
--- a/config.tests/unix/opengles1/opengles1.pro
+++ b/config.tests/unix/opengles1/opengles1.pro
@@ -1,9 +1,9 @@
SOURCES = opengles1.cpp
-INCLUDEPATH += $$QMAKE_INCDIR_OPENGL
+INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES1
-for(p, QMAKE_LIBDIR_OPENGL) {
+for(p, QMAKE_LIBDIR_OPENGL_ES1) {
exists($$p):LIBS += -L$$p
}
CONFIG -= qt
-LIBS += $$QMAKE_LIBS_OPENGL_QT
+LIBS += $$QMAKE_LIBS_OPENGL_ES1
diff --git a/config.tests/unix/opengles1cl/opengles1cl.cpp b/config.tests/unix/opengles1cl/opengles1cl.cpp
index 23ae71032..af22d3a03 100644
--- a/config.tests/unix/opengles1cl/opengles1cl.cpp
+++ b/config.tests/unix/opengles1cl/opengles1cl.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <GLES/gl.h>
int main(int, char **)
diff --git a/config.tests/unix/opengles1cl/opengles1cl.pro b/config.tests/unix/opengles1cl/opengles1cl.pro
index 415cdbb6a..c4c069e4e 100644
--- a/config.tests/unix/opengles1cl/opengles1cl.pro
+++ b/config.tests/unix/opengles1cl/opengles1cl.pro
@@ -1,9 +1,9 @@
SOURCES = opengles1cl.cpp
-INCLUDEPATH += $$QMAKE_INCDIR_OPENGL
+INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES1CL
-for(p, QMAKE_LIBDIR_OPENGL) {
+for(p, QMAKE_LIBDIR_OPENGL_ES1CL) {
exists($$p):LIBS += -L$$p
}
CONFIG -= qt
-LIBS += $$QMAKE_LIBS_OPENGL_QT
+LIBS += $$QMAKE_LIBS_OPENGL_ES1CL
diff --git a/config.tests/unix/opengles2/opengles2.cpp b/config.tests/unix/opengles2/opengles2.cpp
index 63c7b35c9..cbd60a4ff 100644
--- a/config.tests/unix/opengles2/opengles2.cpp
+++ b/config.tests/unix/opengles2/opengles2.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <GLES2/gl2.h>
int main(int, char **)
diff --git a/config.tests/unix/opengles2/opengles2.pro b/config.tests/unix/opengles2/opengles2.pro
index 0dfae42f7..c383fd000 100644
--- a/config.tests/unix/opengles2/opengles2.pro
+++ b/config.tests/unix/opengles2/opengles2.pro
@@ -1,9 +1,9 @@
SOURCES = opengles2.cpp
-INCLUDEPATH += $$QMAKE_INCDIR_OPENGL
+INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES2
-for(p, QMAKE_LIBDIR_OPENGL) {
+for(p, QMAKE_LIBDIR_OPENGL_ES2) {
exists($$p):LIBS += -L$$p
}
CONFIG -= qt
-LIBS += $$QMAKE_LIBS_OPENGL_QT
+LIBS += $$QMAKE_LIBS_OPENGL_ES2
diff --git a/config.tests/unix/openssl/openssl.cpp b/config.tests/unix/openssl/openssl.cpp
index 5ca3e9c81..64100eb7e 100644
--- a/config.tests/unix/openssl/openssl.cpp
+++ b/config.tests/unix/openssl/openssl.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <openssl/opensslv.h>
#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER-0 < 0x0090700fL
diff --git a/config.tests/unix/openssl/openssl.pri b/config.tests/unix/openssl/openssl.pri
index f069396f7..377d6307c 100644
--- a/config.tests/unix/openssl/openssl.pri
+++ b/config.tests/unix/openssl/openssl.pri
@@ -1,3 +1,10 @@
# Empty file since Qt 4.6
# I'm too lazy to find all places where this file is included
+symbian{
+ TRY_INCLUDEPATHS = $${EPOCROOT}epoc32 $${EPOCROOT}epoc32/include $${EPOCROOT}epoc32/include/stdapis $${EPOCROOT}epoc32/include/stdapis/sys $$OS_LAYER_LIBC_SYSTEMINCLUDE $$QMAKE_INCDIR $$INCLUDEPATH
+ for(p, TRY_INCLUDEPATHS) {
+ pp = $$join(p, "", "", "/openssl")
+ exists($$pp):INCLUDEPATH *= $$pp
+ }
+}
diff --git a/config.tests/unix/openvg/openvg.cpp b/config.tests/unix/openvg/openvg.cpp
index 8f763cdc6..b3ed0663e 100644
--- a/config.tests/unix/openvg/openvg.cpp
+++ b/config.tests/unix/openvg/openvg.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
// There is some variation in OpenVG engines as to what case
// the VG includes use. The Khronos reference implementation
// for OpenVG 1.1 uses upper case, so we treat that as canonical.
diff --git a/config.tests/unix/psql/psql.cpp b/config.tests/unix/psql/psql.cpp
index 497442523..d42a42289 100644
--- a/config.tests/unix/psql/psql.cpp
+++ b/config.tests/unix/psql/psql.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 "libpq-fe.h"
int main(int, char **)
diff --git a/config.tests/unix/ptrsize/ptrsizetest.cpp b/config.tests/unix/ptrsize/ptrsizetest.cpp
index 9e15e81fa..e55f230bc 100644
--- a/config.tests/unix/ptrsize/ptrsizetest.cpp
+++ b/config.tests/unix/ptrsize/ptrsizetest.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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$
+**
+****************************************************************************/
+
/* Sample program for configure to test pointer size on target
platforms.
*/
diff --git a/config.tests/unix/shivavg/shivavg.cpp b/config.tests/unix/shivavg/shivavg.cpp
index b5d3291d3..1cb2b9e12 100644
--- a/config.tests/unix/shivavg/shivavg.cpp
+++ b/config.tests/unix/shivavg/shivavg.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <vg/openvg.h>
int main(int, char **)
diff --git a/config.tests/unix/sqlite/sqlite.cpp b/config.tests/unix/sqlite/sqlite.cpp
index fe7301e37..14651f18b 100644
--- a/config.tests/unix/sqlite/sqlite.cpp
+++ b/config.tests/unix/sqlite/sqlite.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <sqlite3.h>
int main(int, char **)
diff --git a/config.tests/unix/sqlite2/sqlite2.cpp b/config.tests/unix/sqlite2/sqlite2.cpp
index 22c21cabf..862e33df6 100644
--- a/config.tests/unix/sqlite2/sqlite2.cpp
+++ b/config.tests/unix/sqlite2/sqlite2.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <sqlite.h>
int main(int, char **)
diff --git a/config.tests/unix/sse/sse.cpp b/config.tests/unix/sse/sse.cpp
index e1c23bd7d..e0da296c6 100644
--- a/config.tests/unix/sse/sse.cpp
+++ b/config.tests/unix/sse/sse.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <xmmintrin.h>
#if defined(__GNUC__) && __GNUC__ < 4 && __GNUC_MINOR__ < 3
#error GCC < 3.2 is known to create internal compiler errors with our MMX code
diff --git a/config.tests/unix/sse2/sse2.cpp b/config.tests/unix/sse2/sse2.cpp
index ea0737da3..77d3b7366 100644
--- a/config.tests/unix/sse2/sse2.cpp
+++ b/config.tests/unix/sse2/sse2.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <emmintrin.h>
#if defined(__GNUC__) && __GNUC__ < 4 && __GNUC_MINOR__ < 3
#error GCC < 3.2 is known to create internal compiler errors with our MMX code
diff --git a/config.tests/unix/stdint/main.cpp b/config.tests/unix/stdint/main.cpp
index 91e5c3a67..99e91e8a4 100644
--- a/config.tests/unix/stdint/main.cpp
+++ b/config.tests/unix/stdint/main.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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$
+**
+****************************************************************************/
+
/* Check for the presence of stdint.h */
#include <stdint.h>
diff --git a/config.tests/unix/stl/stltest.cpp b/config.tests/unix/stl/stltest.cpp
index 4d74ed1c1..ff12aee7b 100644
--- a/config.tests/unix/stl/stltest.cpp
+++ b/config.tests/unix/stl/stltest.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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$
+**
+****************************************************************************/
+
/* Sample program for configure to test STL support on target
platforms. We are mainly concerned with being able to instantiate
templates for common STL container classes.
diff --git a/config.tests/unix/tds/tds.cpp b/config.tests/unix/tds/tds.cpp
index 54a485983..596ea2ffe 100644
--- a/config.tests/unix/tds/tds.cpp
+++ b/config.tests/unix/tds/tds.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <sybfront.h>
#include <sybdb.h>
diff --git a/config.tests/unix/tslib/tslib.cpp b/config.tests/unix/tslib/tslib.cpp
index 7cd55caea..41bfbf9cd 100644
--- a/config.tests/unix/tslib/tslib.cpp
+++ b/config.tests/unix/tslib/tslib.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <tslib.h>
int main()
diff --git a/config.tests/unix/zlib/zlib.cpp b/config.tests/unix/zlib/zlib.cpp
index 58a286ffe..d81e17f26 100644
--- a/config.tests/unix/zlib/zlib.cpp
+++ b/config.tests/unix/zlib/zlib.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <zlib.h>
int main(int, char **)
diff --git a/config.tests/x11/fontconfig/fontconfig.cpp b/config.tests/x11/fontconfig/fontconfig.cpp
index 85011628c..ff94bcc3c 100644
--- a/config.tests/x11/fontconfig/fontconfig.cpp
+++ b/config.tests/x11/fontconfig/fontconfig.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <ft2build.h>
#include FT_FREETYPE_H
#include <fontconfig/fontconfig.h>
diff --git a/config.tests/x11/glxfbconfig/glxfbconfig.cpp b/config.tests/x11/glxfbconfig/glxfbconfig.cpp
index e86b02a63..81f2e3f88 100644
--- a/config.tests/x11/glxfbconfig/glxfbconfig.cpp
+++ b/config.tests/x11/glxfbconfig/glxfbconfig.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <GL/gl.h>
#include <GL/glx.h>
diff --git a/config.tests/x11/mitshm/mitshm.cpp b/config.tests/x11/mitshm/mitshm.cpp
index b9be2e0e8..a2008282e 100644
--- a/config.tests/x11/mitshm/mitshm.cpp
+++ b/config.tests/x11/mitshm/mitshm.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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$
+**
+****************************************************************************/
+
#ifdef Q_OS_HPUX
#error "MITSHM not supported on HP-UX."
#else
diff --git a/config.tests/x11/notype/notypetest.cpp b/config.tests/x11/notype/notypetest.cpp
index b33949c6c..f5af77b63 100644
--- a/config.tests/x11/notype/notypetest.cpp
+++ b/config.tests/x11/notype/notypetest.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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$
+**
+****************************************************************************/
+
/* Sample program for configure to test for broken X11 headers that
confuse gcc 2.95 and better on target platforms such as Solaris.
*/
diff --git a/config.tests/x11/opengl/opengl.cpp b/config.tests/x11/opengl/opengl.cpp
index ad693793a..71904b353 100644
--- a/config.tests/x11/opengl/opengl.cpp
+++ b/config.tests/x11/opengl/opengl.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <GL/gl.h>
#include <GL/glu.h>
diff --git a/config.tests/x11/sm/sm.cpp b/config.tests/x11/sm/sm.cpp
index 8bb5ffbac..c8071324e 100644
--- a/config.tests/x11/sm/sm.cpp
+++ b/config.tests/x11/sm/sm.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <X11/SM/SMlib.h>
int main(int, char **)
diff --git a/config.tests/x11/xcursor/xcursor.cpp b/config.tests/x11/xcursor/xcursor.cpp
index 08cd94be9..22610512c 100644
--- a/config.tests/x11/xcursor/xcursor.cpp
+++ b/config.tests/x11/xcursor/xcursor.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <X11/Xlib.h>
#include <X11/Xcursor/Xcursor.h>
diff --git a/config.tests/x11/xfixes/xfixes.cpp b/config.tests/x11/xfixes/xfixes.cpp
index fd36480aa..30decc36f 100644
--- a/config.tests/x11/xfixes/xfixes.cpp
+++ b/config.tests/x11/xfixes/xfixes.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <X11/Xlib.h>
#include <X11/extensions/Xfixes.h>
@@ -9,6 +50,6 @@ int main(int, char **)
{
XFixesSelectionNotifyEvent event;
event.type = 0;
- return 0;
+ return 0;
}
diff --git a/config.tests/x11/xinerama/xinerama.cpp b/config.tests/x11/xinerama/xinerama.cpp
index 2cb3cf900..fdbb918c4 100644
--- a/config.tests/x11/xinerama/xinerama.cpp
+++ b/config.tests/x11/xinerama/xinerama.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <X11/Xlib.h>
#include <X11/extensions/Xinerama.h>
diff --git a/config.tests/x11/xinput/xinput.cpp b/config.tests/x11/xinput/xinput.cpp
index 9a61bc237..97abeb483 100644
--- a/config.tests/x11/xinput/xinput.cpp
+++ b/config.tests/x11/xinput/xinput.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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$
+**
+****************************************************************************/
+
#ifdef Q_OS_SOLARIS
#error "Not supported."
#else
diff --git a/config.tests/x11/xkb/xkb.cpp b/config.tests/x11/xkb/xkb.cpp
index afe3c57cc..a55ed44f2 100644
--- a/config.tests/x11/xkb/xkb.cpp
+++ b/config.tests/x11/xkb/xkb.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <X11/Xlib.h>
#include <X11/XKBlib.h>
diff --git a/config.tests/x11/xlib/xlib.cpp b/config.tests/x11/xlib/xlib.cpp
index 8d25bf57c..56f0b57af 100644
--- a/config.tests/x11/xlib/xlib.cpp
+++ b/config.tests/x11/xlib/xlib.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <X11/Xlib.h>
int main(int, char **)
diff --git a/config.tests/x11/xrandr/xrandr.cpp b/config.tests/x11/xrandr/xrandr.cpp
index cd61c2d81..adb0e6ad6 100644
--- a/config.tests/x11/xrandr/xrandr.cpp
+++ b/config.tests/x11/xrandr/xrandr.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <X11/Xlib.h>
#include <X11/extensions/Xrandr.h>
diff --git a/config.tests/x11/xrender/xrender.cpp b/config.tests/x11/xrender/xrender.cpp
index 7974d7319..0b08a8da6 100644
--- a/config.tests/x11/xrender/xrender.cpp
+++ b/config.tests/x11/xrender/xrender.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <X11/Xlib.h>
#include <X11/extensions/Xrender.h>
diff --git a/config.tests/x11/xshape/xshape.cpp b/config.tests/x11/xshape/xshape.cpp
index 01b5ef4c9..f724cb58d 100644
--- a/config.tests/x11/xshape/xshape.cpp
+++ b/config.tests/x11/xshape/xshape.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/extensions/shape.h>
@@ -6,5 +47,5 @@ int main(int, char **)
{
XShapeEvent shapeevent;
shapeevent.type = 0;
- return 0;
+ return 0;
}
diff --git a/config.tests/x11/xsync/xsync.cpp b/config.tests/x11/xsync/xsync.cpp
index a23fb08af..8eea8508c 100644
--- a/config.tests/x11/xsync/xsync.cpp
+++ b/config.tests/x11/xsync/xsync.cpp
@@ -1,11 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the config.tests 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 <X11/Xlib.h>
#include <X11/Xutil.h>
+extern "C" {
#include <X11/extensions/sync.h>
+}
int main(int, char **)
{
XSyncValue value;
(void*)&XSyncIntToValue;
(void*)&XSyncCreateCounter;
- return 0;
+ int a, b;
+ Status ret = XSyncInitialize(NULL, &a, &b);
+ return ret;
}
diff --git a/configure b/configure
index fc87950b3..6dc3898c9 100755
--- a/configure
+++ b/configure
@@ -1,13 +1,44 @@
#!/bin/sh
-#
-# Configures to build the Qt library
-#
-# Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# Contact: Nokia Corporation (qt-info@nokia.com)
-#
-# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-#
+#############################################################################
+##
+## Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+## All rights reserved.
+## Contact: Nokia Corporation (qt-info@nokia.com)
+##
+## This file is the build configuration utility 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$
+##
+#############################################################################
#-------------------------------------------------------------------------------
# script initialization
@@ -47,6 +78,11 @@ QMAKE_VARS_FILE=.qmake.vars
# utility functions
#-------------------------------------------------------------------------------
+shellEscape()
+{
+ echo "$@" | sed 's/ /\ /g'
+}
+
# Adds a new qmake variable to the cache
# Usage: QMakeVar mode varname contents
# where mode is one of: set, add, del
@@ -89,6 +125,30 @@ getQMakeConf()
{ print }' "$tmpSPEC/qmake.conf"
}
+# relies on $TEST_COMPILER being set correctly
+compilerSupportsFlag()
+{
+ cat >conftest.cpp <<EOF
+int main() { return 0; }
+EOF
+ "$TEST_COMPILER" "$@" -o /dev/null conftest.cpp
+ ret=$?
+ rm -f conftest.cpp conftest.o
+ return $ret
+}
+
+# relies on $TEST_COMPILER being set correctly
+linkerSupportsFlag()
+{
+ lflags=-Wl
+ for flag
+ do
+ safe_flag=`shellEscape "$flag"`
+ lflags=$lflags,$safe_flag
+ done
+ compilerSupportsFlag "$lflags" >/dev/null 2>&1
+}
+
#-------------------------------------------------------------------------------
# operating system detection
#-------------------------------------------------------------------------------
@@ -166,6 +226,7 @@ COMMERCIAL_USER=ask
CFG_DEV=no
CFG_NOKIA=no
CFG_EMBEDDED=no
+CFG_RTOS_ENABLED=yes
EditionString=Commercial
earlyArgParse()
@@ -302,7 +363,7 @@ elif [ -f "$relpath"/LICENSE.PREVIEW.COMMERCIAL ] && [ $COMMERCIAL_USER = "yes"
elif [ $COMMERCIAL_USER = "yes" ]; then
# one of commercial editions
[ "$PLATFORM_MAC" = "maybe" ] && PLATFORM_MAC=yes
- [ "$PLATFORM_QWS" = "maybe" ] && PLATFORM_QWS=yes
+ [ "$PLATFORM_QWS" = "maybe" ] && PLATFORM_QWS=no
# read in the license file
if [ -f "$LICENSE_FILE" ]; then
@@ -344,7 +405,7 @@ elif [ $COMMERCIAL_USER = "yes" ]; then
exit 1
fi
ProductCode=`echo $LicenseKeyExt | cut -f 1 -d - | cut -b 1`
- PlatformCode=`echo $LicenseKeyExt | cut -f 2 -d - | cut -b 1`
+ PlatformCode=`echo $LicenseKeyExt | cut -f 2 -d -`
LicenseTypeCode=`echo $LicenseKeyExt | cut -f 3 -d -`
LicenseFeatureCode=`echo $LicenseKeyExt | cut -f 4 -d - | cut -b 1`
@@ -371,6 +432,7 @@ elif [ $COMMERCIAL_USER = "yes" ]; then
;;
Z4M|R4M|Q4M)
LicenseType="Evaluation"
+ QMakeVar add DEFINES QT_EVAL
case $ProductCode in
B)
Edition="Evaluation"
@@ -387,65 +449,46 @@ elif [ $COMMERCIAL_USER = "yes" ]; then
# verify that we are licensed to use Qt on this platform
LICENSE_EXTENSION=
- if [ "$PlatformCode" = "X" ]; then
- # Qt All-OS
- LICENSE_EXTENSION="-ALLOS"
- elif [ "$PLATFORM_QWS" = "yes" ]; then
- case $PlatformCode in
- 2|4|8|A|B|E|G|J|K|P|Q|S|U|V|W)
+ case "$PlatformCode" in
+ *L)
+ CFG_RTOS_ENABLED=yes
+ PlatformCode=`echo "$PlatformCode" | sed 'h;y/8NPQRTZ/UCWX9M7/;x;G;s/\(.\)....\(.\)./\1\2/'`
+ ;;
+ *)
+ CFG_RTOS_ENABLED=no
+ PlatformCode=`echo "$PlatformCode" | sed 's/.$//'`
+ ;;
+ esac
+ case "$PlatformCode,$PLATFORM_MAC,$PLATFORM_QWS" in
+ X9,* | XC,* | XU,* | XW,* | XM,*)
+ # Qt All-OS
+ LICENSE_EXTENSION="-ALLOS"
+ ;;
+ 8M,* | KM,* | S9,* | SC,* | SU,* | SW,* | X9,* | XC,* | XU,* | XW,*)
# Qt for Embedded Linux
LICENSE_EXTENSION="-EMBEDDED"
;;
- *)
- echo
- echo "You are not licensed for Qt for Embedded Linux."
- echo
- echo "Please contact qt-info@nokia.com to upgrade your license"
- echo "to include Qt for Embedded Linux, or install the"
- echo "Qt Open Source Edition if you intend to develop free software."
- exit 1
+ 6M,*,no | N7,*,no | N9,*,no | NX,*,no)
+ # Embedded no-deploy
+ LICENSE_EXTENSION="-EMBEDDED"
;;
- esac
- elif [ "$PLATFORM_MAC" = "yes" ]; then
- case $PlatformCode in
- 2|4|5|7|9|B|C|E|F|G|L|M|U|W|Y)
- # Qt/Mac
+ FM,*,no | LM,yes,* | ZM,no,no)
+ # Desktop
LICENSE_EXTENSION="-DESKTOP"
;;
- 3|6|8|A|D|H|J|K|P|Q|S|V)
- # Embedded no-deploy
- LICENSE_EXTENSION="-EMBEDDED"
- ;;
*)
+ Platform=Linux/X11
+ [ "$PLATFORM_MAC" = "yes" ] && Platform='Mac OS X'
+ [ "$PLATFORM_QWS" = "yes" ] && Platform='Embedded Linux'
echo
- echo "You are not licensed for the Qt/Mac platform."
+ echo "You are not licensed for the $Platform platform."
echo
- echo "Please contact qt-info@nokia.com to upgrade your license"
- echo "to include the Qt/Mac platform."
+ echo "Please contact qt-info@nokia.com to upgrade your license to"
+ echo "include the $Platform platform, or install the Qt Open Source Edition"
+ echo "if you intend to develop free software."
exit 1
;;
- esac
- else
- case $PlatformCode in
- 2|3|4|5|7|D|E|F|J|M|Q|S|T|V|Z)
- # Qt/X11
- LICENSE_EXTENSION="-DESKTOP"
- ;;
- 6|8|9|A|B|C|G|H|K|P|U|W)
- # Embedded no-deploy
- LICENSE_EXTENSION="-EMBEDDED"
- ;;
- *)
- echo
- echo "You are not licensed for the Qt/X11 platform."
- echo
- echo "Please contact qt-info@nokia.com to upgrade your license to"
- echo "include the Qt/X11 platform, or install the Qt Open Source Edition"
- echo "if you intend to develop free software."
- exit 1
- ;;
- esac
- fi
+ esac
if test -r "$relpath/.LICENSE"; then
# Generic, non-final license
@@ -472,7 +515,7 @@ elif [ $COMMERCIAL_USER = "yes" ]; then
fi
case "$LicenseFeatureCode" in
- G|L)
+ B|G|L|Y)
# US
case "$LicenseType" in
Commercial)
@@ -483,7 +526,7 @@ elif [ $COMMERCIAL_USER = "yes" ]; then
;;
esac
;;
- 2|5)
+ 2|4|5|F)
# non-US
case "$LicenseType" in
Commercial)
@@ -500,6 +543,14 @@ elif [ $COMMERCIAL_USER = "yes" ]; then
exit 1
;;
esac
+ case "$LicenseFeatureCode" in
+ 4|B|F|Y)
+ CFG_RTOS_ENABLED=yes
+ ;;
+ 2|5|G|L)
+ CFG_RTOS_ENABLED=no
+ ;;
+ esac
if [ '!' -f "$outpath/LICENSE" ]; then
echo "The LICENSE, LICENSE.GPL3 LICENSE.LGPL file shipped with"
echo "this software has disappeared."
@@ -557,12 +608,13 @@ fi
unset QTDIR
# the minimum version of libdbus-1 that we require:
-MIN_DBUS_1_VERSION=0.62
+MIN_DBUS_1_VERSION=0.93
# initalize internal variables
CFG_CONFIGURE_EXIT_ON_ERROR=yes
CFG_PROFILE=no
CFG_EXCEPTIONS=unspecified
+CFG_SCRIPT=auto # (yes|no|auto)
CFG_SCRIPTTOOLS=auto # (yes|no|auto)
CFG_XMLPATTERNS=auto # (yes|no|auto)
CFG_INCREMENTAL=auto
@@ -611,9 +663,11 @@ CFG_PHONON=auto
CFG_PHONON_BACKEND=yes
CFG_MULTIMEDIA=yes
CFG_SVG=yes
+CFG_DECLARATIVE=auto
CFG_WEBKIT=auto # (yes|no|auto)
+CFG_JAVASCRIPTCORE_JIT=auto
-CFG_GFX_AVAILABLE="linuxfb transformed qvfb vnc multiscreen"
+CFG_GFX_AVAILABLE="linuxfb transformed qvfb vnc multiscreen directfb"
CFG_GFX_ON="linuxfb multiscreen"
CFG_GFX_PLUGIN_AVAILABLE=
CFG_GFX_PLUGIN=
@@ -850,7 +904,7 @@ while [ "$#" -gt 0 ]; do
VAL=no
;;
#Qt style yes options
- -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xinput|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-universal|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-svg|-webkit|-scripttools|-rpath|-force-pkg-config)
+ -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-universal|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-svg|-declarative|-webkit|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config)
VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
VAL=yes
;;
@@ -1186,7 +1240,7 @@ while [ "$#" -gt 0 ]; do
fi
fi
;;
-
+
qvfb) # left for commandline compatibility, not documented
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
if [ "$VAL" = "yes" ]; then
@@ -1749,6 +1803,17 @@ while [ "$#" -gt 0 ]; do
fi
fi
;;
+ script)
+ if [ "$VAL" = "yes" ] || [ "$VAL" = "auto" ]; then
+ CFG_SCRIPT="yes"
+ else
+ if [ "$VAL" = "no" ]; then
+ CFG_SCRIPT="no"
+ else
+ UNKNOWN_OPT=yes
+ fi
+ fi
+ ;;
scripttools)
if [ "$VAL" = "yes" ] || [ "$VAL" = "auto" ]; then
CFG_SCRIPTTOOLS="yes"
@@ -1770,6 +1835,17 @@ while [ "$#" -gt 0 ]; do
UNKNOWN_OPT=yes
fi
fi
+ ;;
+ declarative)
+ if [ "$VAL" = "yes" ]; then
+ CFG_DECLARATIVE="yes"
+ else
+ if [ "$VAL" = "no" ]; then
+ CFG_DECLARATIVE="no"
+ else
+ UNKNOWN_OPT=yes
+ fi
+ fi
;;
webkit)
if [ "$VAL" = "yes" ] || [ "$VAL" = "auto" ]; then
@@ -1782,6 +1858,13 @@ while [ "$#" -gt 0 ]; do
fi
fi
;;
+ javascript-jit)
+ if [ "$VAL" = "yes" ] || [ "$VAL" = "auto" ] || [ "$VAL" = "no" ]; then
+ CFG_JAVASCRIPTCORE_JIT="$VAL"
+ else
+ UNKNOWN_OPT=yes
+ fi
+ ;;
confirm-license)
if [ "$VAL" = "yes" ]; then
OPT_CONFIRM_LICENSE="$VAL"
@@ -2060,7 +2143,7 @@ if [ "$OPT_SHADOW" = "maybe" ]; then
fi
fi
if [ "$OPT_SHADOW" = "yes" ]; then
- if [ -f "$relpath/.qmake.cache" -o -f "$relpath/src/corelib/global/qconfig.h" ]; then
+ if [ -f "$relpath/.qmake.cache" -o -f "$relpath/src/corelib/global/qconfig.h" -o -f "$relpath/src/corelib/global/qconfig.cpp" ]; then
echo >&2 "You cannot make a shadow build from a source tree containing a previous build."
echo >&2 "Cannot proceed."
exit 1
@@ -2160,16 +2243,6 @@ if [ "$OPT_SHADOW" = "yes" ]; then
ln -s "$relpath/tools/porting/src/q3porting.xml" "$outpath/tools/porting/src"
fi
-# symlink files from src/gui/embedded neccessary to build qvfb
-if [ "$CFG_DEV" = "yes" ]; then
- mkdir -p "$outpath/tools/qvfb"
- for f in qvfbhdr.h qlock_p.h qlock.cpp qwssignalhandler_p.h qwssignalhandler.cpp; do
- dest="${outpath}/tools/qvfb/${f}"
- rm -f "$dest"
- ln -s "${relpath}/src/gui/embedded/${f}" "${dest}"
- done
-fi
-
# symlink fonts to be able to run application from build directory
if [ "$PLATFORM_QWS" = "yes" ] && [ ! -e "${outpath}/lib/fonts" ]; then
if [ "$PLATFORM" = "$XPLATFORM" ]; then
@@ -2243,9 +2316,6 @@ if [ "$CFG_EMBEDDED" != "no" ]; then
*86_64)
PLATFORM=qws/linux-x86_64-g++
;;
- *ppc)
- PLATFORM=qws/linux-ppc-g++
- ;;
*)
PLATFORM=qws/linux-generic-g++
;;
@@ -2263,9 +2333,6 @@ if [ "$CFG_EMBEDDED" != "no" ]; then
*86_64)
CFG_EMBEDDED=x86_64
;;
- *ppc)
- CFG_EMBEDDED=ppc
- ;;
*)
CFG_EMBEDDED=generic
;;
@@ -2552,6 +2619,20 @@ if [ "$CFG_EMBEDDED" != "no" -a "$CFG_EMBEDDED" != "auto" ] && [ -n "$CFG_ARCH"
fi
fi
+if [ "$CFG_RTOS_ENABLED" = "no" ]; then
+ case `basename "$XPLATFORM"` in
+ qnx-* | vxworks-*)
+ echo ""
+ echo "You are not licensed for Qt for `basename $XPLATFORM`."
+ echo ""
+ echo "Please contact qt-info@nokia.com to upgrade your license to"
+ echo "include this platform, or install the Qt Open Source Edition"
+ echo "if you intend to develop free software."
+ exit 1
+ ;;
+ esac
+fi
+
if [ -z "${CFG_HOST_ARCH}" ]; then
case "$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_MACHINE" in
IRIX*:*:*)
@@ -2777,6 +2858,11 @@ if [ "$QT_CROSS_COMPILE" = "yes" ]; then
echo >&2 ""
fi
else
+ echo >&2 ""
+ echo >&2 "You have not explicitly asked to use pkg-config and are cross-compiling."
+ echo >&2 "pkg-config will not be used to automatically query cflag/lib parameters for"
+ echo >&2 "dependencies"
+ echo >&2 ""
PKG_CONFIG=""
fi
fi
@@ -2809,7 +2895,6 @@ fi
# pass on $CFG_SDK to the configure tests.
if [ '!' -z "$CFG_SDK" ]; then
MAC_CONFIG_TEST_COMMANDLINE="-sdk $CFG_SDK"
- echo "tests command line: $MAC_CONFIG_TEST_COMMANDLINE"
fi
# find the default framework value
@@ -2847,7 +2932,7 @@ elif [ "$CFG_PRECOMPILE" = "yes" ] && [ `echo "$CFG_MAC_ARCHS" | wc -w` -gt 1 ];
fi
#auto-detect DWARF2 on the mac
-if [ "$PLATFORM_MAC" = "yes" ] && [ "$CFG_MAC_DWARF2" == "auto" ]; then
+if [ "$PLATFORM_MAC" = "yes" ] && [ "$CFG_MAC_DWARF2" = "auto" ]; then
if "$mactests/dwarf2.test" "$TEST_COMPILER" "$OPT_VERBOSE" "$mactests" ; then
CFG_MAC_DWARF2=no
else
@@ -2856,7 +2941,7 @@ if [ "$PLATFORM_MAC" = "yes" ] && [ "$CFG_MAC_DWARF2" == "auto" ]; then
fi
# auto-detect support for -Xarch on the mac
-if [ "$PLATFORM_MAC" = "yes" ] && [ "$CFG_MAC_XARCH" == "auto" ]; then
+if [ "$PLATFORM_MAC" = "yes" ] && [ "$CFG_MAC_XARCH" = "auto" ]; then
if "$mactests/xarch.test" "$TEST_COMPILER" "$OPT_VERBOSE" "$mactests" ; then
CFG_MAC_XARCH=no
else
@@ -2941,6 +3026,18 @@ else
CFG_FRAMEWORK=no
fi
+# Print a warning if configure was called with the 10.4u SDK option on Snow Leopard
+# with the default mkspec. The 10.4u SDK does not support gcc 4.2.
+if [ "$PLATFORM_MAC" = "yes" ] && [ '!' -z "$CFG_SDK" ]; then
+ # get the darwin version. 10.0.0 and up means snow leopard.
+ VERSION=`uname -r | tr '.' ' ' | awk '{print $1}'`
+ if [ "$VERSION" -gt 9 ] && [ "$CFG_SDK" == "/Developer/SDKs/MacOSX10.4u.sdk/" ] && [ "$PLATFORM" == "macx-g++" ]; then
+ echo
+ echo "WARNING: The 10.4u SDK does not support gcc 4.2. Configure with -platform macx-g++40. "
+ echo
+ fi
+fi
+
# x11 tests are done after qmake is built
@@ -3155,17 +3252,16 @@ Usage: $relconf [-h] [-prefix <dir>] [-prefix-install] [-bindir <dir>] [-libdir
[-qt-zlib] [-system-zlib] [-no-gif] [-qt-gif] [-no-libtiff] [-qt-libtiff] [-system-libtiff]
[-no-libpng] [-qt-libpng] [-system-libpng] [-no-libmng] [-qt-libmng]
[-system-libmng] [-no-libjpeg] [-qt-libjpeg] [-system-libjpeg] [-make <part>]
- [-no-make <part>] [-R <string>] [-l <string>] [-no-rpath] [-rpath] [-continue]
+ [-nomake <part>] [-R <string>] [-l <string>] [-no-rpath] [-rpath] [-continue]
[-verbose] [-v] [-silent] [-no-nis] [-nis] [-no-cups] [-cups] [-no-iconv]
[-iconv] [-no-pch] [-pch] [-no-dbus] [-dbus] [-dbus-linked]
[-no-separate-debug-info] [-no-mmx] [-no-3dnow] [-no-sse] [-no-sse2]
[-qtnamespace <namespace>] [-qtlibinfix <infix>] [-separate-debug-info] [-armfpa]
[-no-optimized-qmake] [-optimized-qmake] [-no-xmlpatterns] [-xmlpatterns]
- [-no-phonon] [-phonon] [-no-phonon-backend] [-phonon-backend]
+ [-no-multimedia] [-multimedia] [-no-phonon] [-phonon] [-no-phonon-backend] [-phonon-backend]
[-no-openssl] [-openssl] [-openssl-linked]
- [-no-multimedia] [-multimedia]
- [-no-gtkstyle] [-gtkstyle] [-no-svg] [-svg] [-no-webkit] [-webkit]
- [-no-scripttools] [-scripttools]
+ [-no-gtkstyle] [-gtkstyle] [-no-svg] [-svg] [-no-webkit] [-webkit] [-no-javascript-jit] [-javascript-jit]
+ [-no-script] [-script] [-no-scripttools] [-scripttools] [-no-declarative] [-declarative]
[additional platform specific options (see below)]
@@ -3298,15 +3394,15 @@ fi
QtXmlPatterns is built if a decent C++ compiler
is used and exceptions are enabled.
+ -no-multimedia ..... Do not build the QtMultimedia module.
+ + -multimedia ........ Build the QtMultimedia module.
+
-no-phonon ......... Do not build the Phonon module.
+ -phonon ............ Build the Phonon module.
Phonon is built if a decent C++ compiler is used.
-no-phonon-backend.. Do not build the platform phonon plugin.
+ -phonon-backend..... Build the platform phonon plugin.
- -no-multimedia ..... Do not build the multimedia module.
- * -multimedia ........ Build the multimedia module.
-
-no-svg ............ Do not build the SVG module.
+ -svg ............... Build the SVG module.
@@ -3314,9 +3410,18 @@ fi
+ -webkit ............ Build the WebKit module.
WebKit is built if a decent C++ compiler is used.
+ -no-javascript-jit . Do not build the JavaScriptCore JIT compiler.
+ + -javascript-jit .... Build the JavaScriptCore JIT compiler.
+
+ -no-script ......... Do not build the QtScript module.
+ + -script ............ Build the QtScript module.
+
-no-scripttools .... Do not build the QtScriptTools module.
+ -scripttools ....... Build the QtScriptTools module.
+ + -no-declarative .....Do not build the declarative module.
+ -declarative ....... Build the declarative module.
+
-platform target ... The operating system and compiler you are building
on ($PLATFORM).
@@ -3558,7 +3663,7 @@ Qt/X11 only:
-no-opengl ......... Do not support OpenGL.
+ -opengl <api> ...... Enable OpenGL support.
With no parameter, this will auto-detect the "best"
- OpenGL API to use. If desktop OpenGL is avaliable, it
+ OpenGL API to use. If desktop OpenGL is available, it
will be used. Use desktop, es1, es1cl or es2 for <api>
to force the use of the Desktop (OpenGL 1.x or 2.x),
OpenGL ES 1.x Common profile, 1.x Common Lite profile
@@ -3678,7 +3783,7 @@ Qt for Embedded Linux only:
proper license for this switch to work.
Example values for <arch>: arm mips x86 generic
- -armfpa ............. Target platform is uses the ARM-FPA floating point format.
+ -armfpa ............. Target platform uses the ARM-FPA floating point format.
-no-armfpa .......... Target platform does not use the ARM-FPA floating point format.
The floating point format is usually autodetected by configure. Use this
@@ -3782,10 +3887,10 @@ fi # Help
if [ "$PLATFORM_QWS" = "yes" ]; then
Platform="Qt for Embedded Linux"
elif [ "$PLATFORM_MAC" = "yes" ]; then
- Platform="Qt/Mac"
+ Platform="Qt for Mac OS X"
else
PLATFORM_X11=yes
- Platform="Qt/X11"
+ Platform="Qt for Linux/X11"
fi
echo
@@ -3799,16 +3904,22 @@ if [ "$Edition" = "NokiaInternalBuild" ]; then
elif [ "$Edition" = "OpenSource" ]; then
while true; do
echo "You are licensed to use this software under the terms of"
- echo "the GNU General Public License (GPL) versions 3."
- echo "You are also licensed to use this software under the terms of"
echo "the Lesser GNU General Public License (LGPL) versions 2.1."
+ if [ -f "$relpath/LICENSE.GPL3" ]; then
+ echo "You are also licensed to use this software under the terms of"
+ echo "the GNU General Public License (GPL) versions 3."
+ affix="either"
+ else
+ affix="the"
+ fi
echo
- affix="either"
if [ "$OPT_CONFIRM_LICENSE" = "yes" ]; then
- echo "You have already accepted the terms of the $LicenseType license."
+ echo "You have already accepted the terms of the $LicenseType license."
acceptance=yes
else
- echo "Type '3' to view the GNU General Public License version 3."
+ if [ -f "$relpath/LICENSE.GPL3" ]; then
+ echo "Type '3' to view the GNU General Public License version 3."
+ fi
echo "Type 'L' to view the Lesser GNU General Public License version 2.1."
echo "Type 'yes' to accept this license offer."
echo "Type 'no' to decline this license offer."
@@ -3989,12 +4100,17 @@ SETTINGS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_stngpath=$QT_I
EXAMPLES_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_xmplpath=$QT_INSTALL_EXAMPLES"`
DEMOS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_demopath=$QT_INSTALL_DEMOS"`
+TODAY=`date +%Y-%m-%d`
cat > "$outpath/src/corelib/global/qconfig.cpp.new" <<EOF
/* License Info */
static const char qt_configure_licensee_str [256 + 12] = "$LICENSE_USER_STR";
static const char qt_configure_licensed_products_str [256 + 12] = "$LICENSE_PRODUCTS_STR";
+
+/* Installation date */
+static const char qt_configure_installation [12+11] = "qt_instdate=$TODAY";
EOF
+
if [ ! -z "$QT_HOST_PREFIX" ]; then
HOSTPREFIX_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_prfxpath=$QT_HOST_PREFIX"`
HOSTDOCUMENTATION_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_docspath=$QT_HOST_PREFIX/doc"`
@@ -4076,6 +4192,23 @@ else
fi
# -----------------------------------------------------------------------------
+if [ "$LicenseType" = "Evaluation" ]; then
+ EVALKEY=`"$relpath/config.tests/unix/padstring" 524 "qt_qevalkey=$LicenseKeyExt"`
+elif echo "$D_FLAGS" | grep QT_EVAL >/dev/null 2>&1; then
+ EVALKEY=`"$relpath/config.tests/unix/padstring" 524 "qt_qevalkey="`
+fi
+
+if [ -n "$EVALKEY" ]; then
+ rm -f "$outpath/src/corelib/global/qconfig_eval.cpp"
+ cat > "$outpath/src/corelib/global/qconfig_eval.cpp" <<EOF
+/* Evaluation license key */
+static const char qt_eval_key_data [512 + 12] = "$EVALKEY";
+EOF
+ chmod -w "$outpath/src/corelib/global/qconfig_eval.cpp"
+fi
+
+
+# -----------------------------------------------------------------------------
# build qmake
# -----------------------------------------------------------------------------
@@ -4784,9 +4917,9 @@ if [ "$PLATFORM_X11" = "yes" -o "$PLATFORM_QWS" = "yes" ]; then
CFG_EGL=yes
CFG_EGL_GLES_INCLUDES=yes
fi
- if ( [ "$CFG_OPENGL" = "es1" ] || [ "$CFG_OPENGL" = "es1cl" ] || [ "$CFG_OPENGL" = "es2" ] ) && [ "$CFG_EGL" != "yes" ] && [ "$PLATFORM_X11" = "yes" ]; then
+ if ( [ "$CFG_OPENGL" = "es1" ] || [ "$CFG_OPENGL" = "es1cl" ] || [ "$CFG_OPENGL" = "es2" ] ) && [ "$CFG_EGL" != "yes" ]; then
echo "The EGL functionality test failed!"
- echo " EGL is required for OpenGL ES on X11 to manage contexts & surfaces."
+ echo " EGL is required for OpenGL ES to manage contexts & surfaces."
echo " You might need to modify the include and library search paths by editing"
echo " QMAKE_INCDIR_EGL, QMAKE_LIBDIR_EGL and QMAKE_LIBS_EGL in"
echo " ${XQMAKESPEC}."
@@ -5069,9 +5202,9 @@ if [ "$PLATFORM_X11" = "yes" ]; then
# auto-detect FontConfig support
if [ "$CFG_FONTCONFIG" != "no" ]; then
- if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists fontconfig 2>/dev/null; then
- QT_CFLAGS_FONTCONFIG=`$PKG_CONFIG --cflags fontconfig 2>/dev/null`
- QT_LIBS_FONTCONFIG=`$PKG_CONFIG --libs fontconfig 2>/dev/null`
+ if [ -n "$PKG_CONFIG" ] && $PKG_CONFIG --exists fontconfig --exists freetype2 2>/dev/null; then
+ QT_CFLAGS_FONTCONFIG=`$PKG_CONFIG --cflags fontconfig --cflags freetype2 2>/dev/null`
+ QT_LIBS_FONTCONFIG=`$PKG_CONFIG --libs fontconfig --libs freetype2 2>/dev/null`
else
QT_CFLAGS_FONTCONFIG=
QT_LIBS_FONTCONFIG="-lfreetype -lfontconfig"
@@ -5659,7 +5792,7 @@ if [ "$CFG_OPENVG" != "no" ]; then
CFG_OPENVG=no
fi
fi
- if [ "$CFG_OPENVG" == "yes" ] && "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" "config.tests/unix/shivavg" "ShivaVG" $L_FLAGS $I_FLAGS $l_FLAGS $CONFIG_ARG; then
+ if [ "$CFG_OPENVG" = "yes" ] && "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" "config.tests/unix/shivavg" "ShivaVG" $L_FLAGS $I_FLAGS $l_FLAGS $CONFIG_ARG; then
CFG_OPENVG_SHIVA=yes
fi
fi
@@ -5687,6 +5820,34 @@ if [ "$CFG_ALSA" = "auto" ]; then
fi
fi
+if [ -f "$relpath/src/declarative/declarative.pro" ]; then
+ if [ "$CFG_DECLARATIVE" = "auto" ]; then
+ CFG_DECLARATIVE=yes
+ fi
+else
+ if [ "$CFG_DECLARATIVE" = "auto" ] || [ "$CFG_DECLARATIVE" = "no" ]; then
+ CFG_DECLARATIVE=no
+ else
+ echo "Error: Unable to locate the qt-declarative package. Refer to the documentation on how to build the package."
+ exit 1
+ fi
+fi
+
+if [ "$CFG_JAVASCRIPTCORE_JIT" = "yes" ] || [ "$CFG_JAVASCRIPTCORE_JIT" = "auto" ]; then
+ if [ "$CFG_ARCH" = "arm" ] || [ "$CFG_ARCH" = "armv6" ]; then
+ "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/javascriptcore-jit "javascriptcore-jit" $L_FLAGS $I_FLAGS $l_FLAGS
+ if [ $? != "0" ]; then
+ CFG_JAVASCRIPTCORE_JIT=no
+ fi
+ fi
+fi
+
+if [ "$CFG_JAVASCRIPTCORE_JIT" = "yes" ]; then
+ QMakeVar set JAVASCRIPTCORE_JIT yes
+elif [ "$CFG_JAVASCRIPTCORE_JIT" = "no" ]; then
+ QMakeVar set JAVASCRIPTCORE_JIT no
+fi
+
#-------------------------------------------------------------------------------
# ask for all that hasn't been auto-detected or specified in the arguments
#-------------------------------------------------------------------------------
@@ -5734,13 +5895,13 @@ fi
# Carbon builds: 32 bit x86/ppc.
# For "-cocoa" builds on snow leopard : compiler default (64-bit).
# For "-cocoa" builds on leopard : compiler default (32-bit).
-if [ "$PLATFORM_MAC" = "yes" ] && [ "$CFG_MAC_ARCHS" == "" ]; then
+if [ "$PLATFORM_MAC" = "yes" ] && [ "$CFG_MAC_ARCHS" = "" ]; then
source "$mactests/defaultarch.test" "$TEST_COMPILER" "$OPT_VERBOSE" "$mactests"
if [ "$CFG_MAC_COCOA" != "yes" ]; then
- if [ "$QT_MAC_DEFAULT_ARCH" == "x86_64" ]; then
+ if [ "$QT_MAC_DEFAULT_ARCH" = "x86_64" ]; then
CFG_MAC_ARCHS=" x86"
- elif [ "$QT_MAC_DEFAULT_ARCH" == "ppc64" ]; then
+ elif [ "$QT_MAC_DEFAULT_ARCH" = "ppc64" ]; then
CFG_MAC_ARCHS=" ppc"
else
CFG_MAC_ARCHS=" $QT_MAC_DEFAULT_ARCH"
@@ -5749,7 +5910,7 @@ if [ "$PLATFORM_MAC" = "yes" ] && [ "$CFG_MAC_ARCHS" == "" ]; then
CFG_MAC_ARCHS=" $QT_MAC_DEFAULT_ARCH"
fi
- [ "$OPT_VERBOSE" == "yes" ] && echo "Setting Mac architechture to$CFG_MAC_ARCHS."
+ [ "$OPT_VERBOSE" = "yes" ] && echo "Setting Mac architechture to$CFG_MAC_ARCHS."
fi
# enable cocoa and/or carbon on Mac
@@ -5773,13 +5934,12 @@ else
fi
fi;
-# set the global Mac deployment target. This is overridden on an arch-by-arch basis
+# set the global Mac deployment target. This is overridden on an arch-by-arch basis
# in some cases, see code further down
case "$PLATFORM,$CFG_MAC_COCOA" in
macx*,yes)
# Cocoa
QMakeVar set QMAKE_MACOSX_DEPLOYMENT_TARGET 10.5
- CFG_QT3SUPPORT="no"
;;
macx*,no)
# gcc, Carbon
@@ -6278,12 +6438,24 @@ else
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XMLPATTERNS"
fi
+if [ "$CFG_MULTIMEDIA" = "no" ]; then
+ QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_MULTIMEDIA"
+else
+ QT_CONFIG="$QT_CONFIG multimedia"
+fi
+
if [ "$CFG_SVG" = "yes" ]; then
QT_CONFIG="$QT_CONFIG svg"
else
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_SVG"
fi
+if [ "$CFG_DECLARATIVE" = "yes" ]; then
+ QT_CONFIG="$QT_CONFIG declarative"
+else
+ QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_DECLARATIVE"
+fi
+
if [ "$CFG_WEBKIT" = "auto" ]; then
CFG_WEBKIT="$canBuildWebKit"
fi
@@ -6297,23 +6469,32 @@ else
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_WEBKIT"
fi
-if [ "$CFG_SCRIPTTOOLS" = "auto" ]; then
+if [ "$CFG_SCRIPT" = "auto" ]; then
+ CFG_SCRIPT="yes"
+fi
+
+if [ "$CFG_SCRIPT" = "yes" ]; then
+ QT_CONFIG="$QT_CONFIG script"
+else
+ QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_SCRIPT"
+fi
+
+if [ "$CFG_SCRIPTTOOLS" = "yes" -a "$CFG_SCRIPT" = "no" ]; then
+ echo "QtScriptTools was requested, but it can't be built due to QtScript being disabled."
+ exit 1
+fi
+if [ "$CFG_SCRIPTTOOLS" = "auto" -a "$CFG_SCRIPT" != "no" ]; then
CFG_SCRIPTTOOLS="yes"
+elif [ "$CFG_SCRIPT" = "no" ]; then
+ CFG_SCRIPTTOOLS="no"
fi
if [ "$CFG_SCRIPTTOOLS" = "yes" ]; then
QT_CONFIG="$QT_CONFIG scripttools"
- CFG_SCRIPTTOOLS="yes"
else
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_SCRIPTTOOLS"
fi
-if [ "$CFG_MULTIMEDIA" = "yes" ]; then
- QT_CONFIG="$QT_CONFIG multimedia"
-else
- QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_MULTIMEDIA"
-fi
-
if [ "$CFG_EXCEPTIONS" = "no" ]; then
case "$COMPILER" in
g++*)
@@ -6978,6 +7159,11 @@ QMAKE_LIBDIR_QT = \$\$QT_BUILD_TREE/lib
EOF
+# Ensure we can link to uninistalled libraries
+if linkerSupportsFlag -rpath-link "$outpath/lib"; then
+ echo "QMAKE_LFLAGS += -Wl,-rpath-link,\$\$QT_BUILD_TREE/lib" >> "$CACHEFILE.tmp"
+fi
+
if [ -n "$QT_CFLAGS_PSQL" ]; then
echo "QT_CFLAGS_PSQL = $QT_CFLAGS_PSQL" >> "$CACHEFILE.tmp"
fi
@@ -7098,7 +7284,7 @@ EOF
*) ;;
esac
-if [ "$PLATFORM_MAC" = "yes" ] && [ "$CFG_MAC_DWARF2" == "no" ] && [ "$CFG_WEBKIT" = "yes" ] && [ "$CFG_DEBUG_RELEASE" == "yes" ]; then
+if [ "$PLATFORM_MAC" = "yes" ] && [ "$CFG_MAC_DWARF2" = "no" ] && [ "$CFG_WEBKIT" = "yes" ] && [ "$CFG_DEBUG_RELEASE" = "yes" ]; then
cat <<EOF
WARNING: DWARF2 debug symbols are not enabled. Linking webkit
in debug mode will run out of memory on systems with 2GB or less.
@@ -7172,12 +7358,21 @@ echo "Qt 3 compatibility .. $CFG_QT3SUPPORT"
[ "$CFG_DBUS" = "yes" ] && echo "QtDBus module ....... yes (run-time)"
[ "$CFG_DBUS" = "linked" ] && echo "QtDBus module ....... yes (linked)"
echo "QtConcurrent code.... $CFG_CONCURRENT"
+echo "QtScript module ..... $CFG_SCRIPT"
echo "QtScriptTools module $CFG_SCRIPTTOOLS"
echo "QtXmlPatterns module $CFG_XMLPATTERNS"
echo "Phonon module ....... $CFG_PHONON"
echo "Multimedia module ... $CFG_MULTIMEDIA"
echo "SVG module .......... $CFG_SVG"
echo "WebKit module ....... $CFG_WEBKIT"
+if [ "$CFG_WEBKIT" = "yes" ]; then
+ if [ "$CFG_JAVASCRIPTCORE_JIT" = "auto" ]; then
+ echo "JavaScriptCore JIT .. To be decided by JavaScriptCore"
+ else
+ echo "JavaScriptCore JIT .. $CFG_JAVASCRIPTCORE_JIT"
+ fi
+fi
+echo "Declarative module .. $CFG_DECLARATIVE"
echo "STL support ......... $CFG_STL"
echo "PCH support ......... $CFG_PRECOMPILE"
echo "MMX/3DNOW/SSE/SSE2.. ${CFG_MMX}/${CFG_3DNOW}/${CFG_SSE}/${CFG_SSE2}"
@@ -7386,6 +7581,9 @@ FNR == 1 {
if ( \$3 == "moc" || \$3 ~ /^Qt/ ) {
target_file = first
matched_target = 1
+ } else if ( \$3 == "lrelease" || \$3 == "qm_phony_target" ) {
+ target_file = second
+ matched_target = 1
}
}
@@ -7470,6 +7668,7 @@ for part in $CFG_BUILD_PARTS; do
case "$part" in
tools) PART_ROOTS="$PART_ROOTS tools" ;;
libs) PART_ROOTS="$PART_ROOTS src" ;;
+ translations) PART_ROOTS="$PART_ROOTS tools/linguist/lrelease translations" ;;
examples) PART_ROOTS="$PART_ROOTS examples demos" ;;
*) ;;
esac
@@ -7494,8 +7693,10 @@ for file in .projects .projects.3; do
case $a in
*winmain/winmain.pro) continue ;;
+ *s60main/s60main.pro) continue ;;
+ *examples/activeqt/*) continue ;;
*/qmake/qmake.pro) continue ;;
- *tools/bootstrap*|*tools/moc*|*tools/rcc*|*tools/uic*) SPEC=$QMAKESPEC ;;
+ *tools/bootstrap*|*tools/moc*|*tools/rcc*|*tools/uic*|*linguist/lrelease*) SPEC=$QMAKESPEC ;;
*) SPEC=$XQMAKESPEC ;;
esac
dir=`dirname "$a" | sed -e "s;$sepath;.;g"`
diff --git a/configure.exe b/configure.exe
index cf5885a16..351ed040b 100644..100755
--- a/configure.exe
+++ b/configure.exe
Binary files differ
diff --git a/demos/affine/affine.pro b/demos/affine/affine.pro
index b92875313..7f9e44451 100644
--- a/demos/affine/affine.pro
+++ b/demos/affine/affine.pro
@@ -18,6 +18,8 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.html *.jpg
sources.path = $$[QT_INSTALL_DEMOS]/affine
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
wince*: {
DEPLOYMENT_PLUGIN += qjpeg
}
diff --git a/demos/affine/main.cpp b/demos/affine/main.cpp
index ca0ce9af2..61fde960f 100644
--- a/demos/affine/main.cpp
+++ b/demos/affine/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,8 +54,10 @@ int main(int argc, char **argv)
xformWidget.setStyle(arthurStyle);
QList<QWidget *> widgets = qFindChildren<QWidget *>(&xformWidget);
- foreach (QWidget *w, widgets)
+ foreach (QWidget *w, widgets) {
w->setStyle(arthurStyle);
+ w->setAttribute(Qt::WA_AcceptTouchEvents);
+ }
xformWidget.show();
diff --git a/demos/affine/xform.cpp b/demos/affine/xform.cpp
index e87f9fab8..60bb3b1b4 100644
--- a/demos/affine/xform.cpp
+++ b/demos/affine/xform.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -68,8 +68,8 @@ XFormView::XFormView(QWidget *parent)
pts->setBoundingRect(QRectF(0, 0, 500, 500));
ctrlPoints << QPointF(250, 250) << QPointF(350, 250);
pts->setPoints(ctrlPoints);
- connect(pts, SIGNAL(pointsChanged(const QPolygonF&)),
- this, SLOT(updateCtrlPoints(const QPolygonF &)));
+ connect(pts, SIGNAL(pointsChanged(QPolygonF)),
+ this, SLOT(updateCtrlPoints(QPolygonF)));
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
}
diff --git a/demos/affine/xform.h b/demos/affine/xform.h
index 38d991387..cf0edc752 100644
--- a/demos/affine/xform.h
+++ b/demos/affine/xform.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/arthurplugin/arthurplugin.pro b/demos/arthurplugin/arthurplugin.pro
index e9eb1f367..311429373 100644
--- a/demos/arthurplugin/arthurplugin.pro
+++ b/demos/arthurplugin/arthurplugin.pro
@@ -44,6 +44,8 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.jpg *.png
sources.path = $$[QT_INSTALL_DEMOS]/arthurplugin
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
win32-msvc* {
QMAKE_CFLAGS += /Zm500
QMAKE_CXXFLAGS += /Zm500
diff --git a/demos/arthurplugin/plugin.cpp b/demos/arthurplugin/plugin.cpp
index 63ec06393..edfe8c776 100644
--- a/demos/arthurplugin/plugin.cpp
+++ b/demos/arthurplugin/plugin.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/books/bookdelegate.cpp b/demos/books/bookdelegate.cpp
index c093bc4ad..50e00b083 100644
--- a/demos/books/bookdelegate.cpp
+++ b/demos/books/bookdelegate.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/books/bookdelegate.h b/demos/books/bookdelegate.h
index 957fac20c..e93e3e421 100644
--- a/demos/books/bookdelegate.h
+++ b/demos/books/bookdelegate.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/books/books.pro b/demos/books/books.pro
index a2cd33f86..a5e44e587 100644
--- a/demos/books/books.pro
+++ b/demos/books/books.pro
@@ -13,9 +13,11 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro images
sources.path = $$[QT_INSTALL_DEMOS]/books
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
wince*: {
CONFIG(debug, debug|release):sqlPlugins.sources = $$QT_BUILD_TREE/plugins/sqldrivers/*d4.dll
CONFIG(release, debug|release):sqlPlugins.sources = $$QT_BUILD_TREE/plugins/sqldrivers/*[^d]4.dll
sqlPlugins.path = sqldrivers
DEPLOYMENT += sqlPlugins
-} \ No newline at end of file
+}
diff --git a/demos/books/bookwindow.cpp b/demos/books/bookwindow.cpp
index 936064fe9..7b161555a 100644
--- a/demos/books/bookwindow.cpp
+++ b/demos/books/bookwindow.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/books/bookwindow.h b/demos/books/bookwindow.h
index 16610a2ae..070a5a75c 100644
--- a/demos/books/bookwindow.h
+++ b/demos/books/bookwindow.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/books/initdb.h b/demos/books/initdb.h
index d65fd101b..e2a33d84e 100644
--- a/demos/books/initdb.h
+++ b/demos/books/initdb.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/books/main.cpp b/demos/books/main.cpp
index 0df9c6da4..1775810db 100644
--- a/demos/books/main.cpp
+++ b/demos/books/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/boxes/basic.fsh b/demos/boxes/basic.fsh
index 8fdd0af85..73b0bd2bc 100644
--- a/demos/boxes/basic.fsh
+++ b/demos/boxes/basic.fsh
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/boxes/basic.vsh b/demos/boxes/basic.vsh
index 1b16024f5..7b20c45cc 100644
--- a/demos/boxes/basic.vsh
+++ b/demos/boxes/basic.vsh
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/boxes/boxes.pro b/demos/boxes/boxes.pro
index 59c91322d..4963fb970 100644
--- a/demos/boxes/boxes.pro
+++ b/demos/boxes/boxes.pro
@@ -44,6 +44,6 @@ wince*: {
win32-msvc* {
QMAKE_CXXFLAGS -= -Zm200
QMAKE_CFLAGS -= -Zm200
- QMAKE_CXXFLAGS += -Zm1200
- QMAKE_CFLAGS += -Zm1200
+ QMAKE_CXXFLAGS += -Zm500
+ QMAKE_CFLAGS += -Zm500
}
diff --git a/demos/boxes/dotted.fsh b/demos/boxes/dotted.fsh
index 8c251b46b..00d0aeb32 100644
--- a/demos/boxes/dotted.fsh
+++ b/demos/boxes/dotted.fsh
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/boxes/fresnel.fsh b/demos/boxes/fresnel.fsh
index 938224d43..b77867d7d 100644
--- a/demos/boxes/fresnel.fsh
+++ b/demos/boxes/fresnel.fsh
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/boxes/glass.fsh b/demos/boxes/glass.fsh
index 940bfdb43..3519db8da 100644
--- a/demos/boxes/glass.fsh
+++ b/demos/boxes/glass.fsh
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/boxes/glbuffers.cpp b/demos/boxes/glbuffers.cpp
index 9699cea39..ad736ad6c 100644
--- a/demos/boxes/glbuffers.cpp
+++ b/demos/boxes/glbuffers.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -372,7 +372,7 @@ void GLRenderTargetCube::getViewMatrix(QMatrix4x4& mat, int face)
{-1.0f, -1.0f, +1.0f},
};
- memset(mat.data(), 0, sizeof(float) * 16);
+ mat.fill(0.0f);
for (int i = 0; i < 3; ++i)
mat(i, perm[face][i]) = signs[face][i];
mat(3, 3) = 1.0f;
diff --git a/demos/boxes/glbuffers.h b/demos/boxes/glbuffers.h
index 901448f8b..9ecf54f34 100644
--- a/demos/boxes/glbuffers.h
+++ b/demos/boxes/glbuffers.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/boxes/glextensions.cpp b/demos/boxes/glextensions.cpp
index cdf4ce98f..98032ddab 100644
--- a/demos/boxes/glextensions.cpp
+++ b/demos/boxes/glextensions.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/boxes/glextensions.h b/demos/boxes/glextensions.h
index 4560b49b3..56d661adc 100644
--- a/demos/boxes/glextensions.h
+++ b/demos/boxes/glextensions.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/boxes/gltrianglemesh.h b/demos/boxes/gltrianglemesh.h
index da84fa860..2ae360028 100644
--- a/demos/boxes/gltrianglemesh.h
+++ b/demos/boxes/gltrianglemesh.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/boxes/granite.fsh b/demos/boxes/granite.fsh
index 957d4ed2c..126990aef 100644
--- a/demos/boxes/granite.fsh
+++ b/demos/boxes/granite.fsh
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/boxes/main.cpp b/demos/boxes/main.cpp
index 652436bc6..957f183eb 100644
--- a/demos/boxes/main.cpp
+++ b/demos/boxes/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -68,7 +68,7 @@ protected:
inline bool matchString(const char *extensionString, const char *subString)
{
int subStringLength = strlen(subString);
- return (strncmp(extensionString, subString, subStringLength) == 0)
+ return (strncmp(extensionString, subString, subStringLength) == 0)
&& ((extensionString[subStringLength] == ' ') || (extensionString[subStringLength] == '\0'));
}
@@ -137,11 +137,12 @@ int main(int argc, char **argv)
"This demo can be GPU and CPU intensive and may\n"
"work poorly or not at all on your system.");
+ widget->makeCurrent(); // The current context must be set before calling Scene's constructor
+ Scene scene(1024, 768, maxTextureSize);
GraphicsView view;
view.setViewport(widget);
view.setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
- widget->makeCurrent(); // The current context must be set before calling Scene's constructor
- view.setScene(new Scene(1024, 768, maxTextureSize));
+ view.setScene(&scene);
view.show();
return app.exec();
diff --git a/demos/boxes/marble.fsh b/demos/boxes/marble.fsh
index 57ea38ebe..21fb1735d 100644
--- a/demos/boxes/marble.fsh
+++ b/demos/boxes/marble.fsh
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/boxes/qtbox.cpp b/demos/boxes/qtbox.cpp
index e4a75fdb1..ea5a5d5ee 100644
--- a/demos/boxes/qtbox.cpp
+++ b/demos/boxes/qtbox.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -122,7 +122,7 @@ void ItemBase::duplicateSelectedItems(QGraphicsScene *scene)
selected = scene->selectedItems();
foreach (QGraphicsItem *item, selected) {
- ItemBase *itemBase = dynamic_cast<ItemBase *>(item);
+ ItemBase *itemBase = qgraphicsitem_cast<ItemBase *>(item);
if (itemBase)
scene->addItem(itemBase->createNew(itemBase->m_size, itemBase->pos().x() + itemBase->m_size, itemBase->pos().y()));
}
@@ -137,7 +137,7 @@ void ItemBase::deleteSelectedItems(QGraphicsScene *scene)
selected = scene->selectedItems();
foreach (QGraphicsItem *item, selected) {
- ItemBase *itemBase = dynamic_cast<ItemBase *>(item);
+ ItemBase *itemBase = qgraphicsitem_cast<ItemBase *>(item);
if (itemBase)
delete itemBase;
}
@@ -152,7 +152,7 @@ void ItemBase::growSelectedItems(QGraphicsScene *scene)
selected = scene->selectedItems();
foreach (QGraphicsItem *item, selected) {
- ItemBase *itemBase = dynamic_cast<ItemBase *>(item);
+ ItemBase *itemBase = qgraphicsitem_cast<ItemBase *>(item);
if (itemBase) {
itemBase->prepareGeometryChange();
itemBase->m_size *= 2;
@@ -171,7 +171,7 @@ void ItemBase::shrinkSelectedItems(QGraphicsScene *scene)
selected = scene->selectedItems();
foreach (QGraphicsItem *item, selected) {
- ItemBase *itemBase = dynamic_cast<ItemBase *>(item);
+ ItemBase *itemBase = qgraphicsitem_cast<ItemBase *>(item);
if (itemBase) {
itemBase->prepareGeometryChange();
itemBase->m_size /= 2;
@@ -257,6 +257,12 @@ void ItemBase::wheelEvent(QGraphicsSceneWheelEvent *event)
m_size = MIN_ITEM_SIZE;
}
+int ItemBase::type() const
+{
+ return Type;
+}
+
+
bool ItemBase::isInResizeArea(const QPointF &pos)
{
return (-pos.y() < pos.x() - m_size + 9);
@@ -313,6 +319,8 @@ void QtBox::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWi
0.5f * (right + left), 0.5f * (bottom + top), 0.0f, 1.0f
};
+ painter->beginNativePainting();
+
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadMatrixf(moveToRectMatrix);
@@ -386,6 +394,8 @@ void QtBox::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWi
glMatrixMode(GL_PROJECTION);
glPopMatrix();
+ painter->endNativePainting();
+
ItemBase::paint(painter, option, widget);
}
diff --git a/demos/boxes/qtbox.h b/demos/boxes/qtbox.h
index c1f6f79f8..f53b1147d 100644
--- a/demos/boxes/qtbox.h
+++ b/demos/boxes/qtbox.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -47,10 +47,11 @@
#include <QtGui/qvector3d.h>
#include "glbuffers.h"
-class ItemBase : public QObject, public QGraphicsItem
+class ItemBase : public QGraphicsItem
{
- Q_OBJECT
public:
+ enum { Type = UserType + 1 };
+
ItemBase(int size, int x, int y);
virtual ~ItemBase();
virtual QRectF boundingRect() const;
@@ -64,6 +65,7 @@ protected:
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
virtual void keyPressEvent(QKeyEvent *event);
virtual void wheelEvent(QGraphicsSceneWheelEvent *event);
+ virtual int type() const;
bool isInResizeArea(const QPointF &pos);
static void duplicateSelectedItems(QGraphicsScene *scene);
diff --git a/demos/boxes/reflection.fsh b/demos/boxes/reflection.fsh
index 2614b996e..8ea40496a 100644
--- a/demos/boxes/reflection.fsh
+++ b/demos/boxes/reflection.fsh
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/boxes/refraction.fsh b/demos/boxes/refraction.fsh
index 5491bf839..d5eb32317 100644
--- a/demos/boxes/refraction.fsh
+++ b/demos/boxes/refraction.fsh
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/boxes/roundedbox.cpp b/demos/boxes/roundedbox.cpp
index e2c14cfb4..cc289b68f 100644
--- a/demos/boxes/roundedbox.cpp
+++ b/demos/boxes/roundedbox.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/boxes/roundedbox.h b/demos/boxes/roundedbox.h
index 9f600fc33..d4730e0cd 100644
--- a/demos/boxes/roundedbox.h
+++ b/demos/boxes/roundedbox.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/boxes/scene.cpp b/demos/boxes/scene.cpp
index daef32678..452f4eff0 100644
--- a/demos/boxes/scene.cpp
+++ b/demos/boxes/scene.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -345,7 +345,7 @@ RenderOptionsDialog::RenderOptionsDialog()
ColorEdit *colorEdit = new ColorEdit(it->toUInt(&ok, 16), m_parameterNames.size() - 1);
m_parameterEdits << colorEdit;
layout->addWidget(colorEdit);
- connect(colorEdit, SIGNAL(colorChanged(QRgb, int)), this, SLOT(setColorParameter(QRgb, int)));
+ connect(colorEdit, SIGNAL(colorChanged(QRgb,int)), this, SLOT(setColorParameter(QRgb,int)));
++row;
} else if (type == "float") {
layout->addWidget(new QLabel(m_parameterNames.back()));
@@ -353,7 +353,7 @@ RenderOptionsDialog::RenderOptionsDialog()
FloatEdit *floatEdit = new FloatEdit(it->toFloat(&ok), m_parameterNames.size() - 1);
m_parameterEdits << floatEdit;
layout->addWidget(floatEdit);
- connect(floatEdit, SIGNAL(valueChanged(float, int)), this, SLOT(setFloatParameter(float, int)));
+ connect(floatEdit, SIGNAL(valueChanged(float,int)), this, SLOT(setFloatParameter(float,int)));
++row;
}
}
@@ -496,8 +496,8 @@ Scene::Scene(int width, int height, int maxTextureSize)
m_renderOptions->resize(m_renderOptions->sizeHint());
connect(m_renderOptions, SIGNAL(dynamicCubemapToggled(int)), this, SLOT(toggleDynamicCubemap(int)));
- connect(m_renderOptions, SIGNAL(colorParameterChanged(const QString &, QRgb)), this, SLOT(setColorParameter(const QString &, QRgb)));
- connect(m_renderOptions, SIGNAL(floatParameterChanged(const QString &, float)), this, SLOT(setFloatParameter(const QString &, float)));
+ connect(m_renderOptions, SIGNAL(colorParameterChanged(QString,QRgb)), this, SLOT(setColorParameter(QString,QRgb)));
+ connect(m_renderOptions, SIGNAL(floatParameterChanged(QString,float)), this, SLOT(setFloatParameter(QString,float)));
connect(m_renderOptions, SIGNAL(textureChanged(int)), this, SLOT(setTexture(int)));
connect(m_renderOptions, SIGNAL(shaderChanged(int)), this, SLOT(setShader(int)));
@@ -552,14 +552,15 @@ void Scene::initGL()
{
m_box = new GLRoundedBox(0.25f, 1.0f, 10);
- m_vertexShader = new QGLShader(":/res/boxes/basic.vsh", QGLShader::VertexShader);
+ m_vertexShader = new QGLShader(QGLShader::Vertex);
+ m_vertexShader->compileSourceFile(QLatin1String(":/res/boxes/basic.vsh"));
QStringList list;
list << ":/res/boxes/cubemap_posx.jpg" << ":/res/boxes/cubemap_negx.jpg" << ":/res/boxes/cubemap_posy.jpg"
<< ":/res/boxes/cubemap_negy.jpg" << ":/res/boxes/cubemap_posz.jpg" << ":/res/boxes/cubemap_negz.jpg";
m_environment = new GLTextureCube(list, qMin(1024, m_maxTextureSize));
- m_environmentShader = new QGLShader(QGLShader::FragmentShader);
- m_environmentShader->compile(environmentShaderText);
+ m_environmentShader = new QGLShader(QGLShader::Fragment);
+ m_environmentShader->compileSourceCode(environmentShaderText);
m_environmentProgram = new QGLShaderProgram;
m_environmentProgram->addShader(m_vertexShader);
m_environmentProgram->addShader(m_environmentShader);
@@ -616,7 +617,8 @@ void Scene::initGL()
files = QDir(":/res/boxes/").entryInfoList(filter, QDir::Files | QDir::Readable);
foreach (QFileInfo file, files) {
QGLShaderProgram *program = new QGLShaderProgram;
- QGLShader* shader = new QGLShader(file.absoluteFilePath(), QGLShader::FragmentShader);
+ QGLShader* shader = new QGLShader(QGLShader::Fragment);
+ shader->compileSourceFile(file.absoluteFilePath());
// The program does not take ownership over the shaders, so store them in a vector so they can be deleted afterwards.
program->addShader(m_vertexShader);
program->addShader(shader);
@@ -638,9 +640,9 @@ void Scene::initGL()
m_programs << program;
m_renderOptions->addShader(file.baseName());
- program->enable();
+ program->bind();
m_cubemaps << ((program->uniformLocation("env") != -1) ? new GLRenderTargetCube(qMin(256, m_maxTextureSize)) : 0);
- program->disable();
+ program->release();
}
if (m_programs.size() == 0)
@@ -649,6 +651,24 @@ void Scene::initGL()
m_renderOptions->emitParameterChanged();
}
+static void loadMatrix(const QMatrix4x4& m)
+{
+ GLfloat mat[16];
+ const qreal *data = m.constData();
+ for (int index = 0; index < 16; ++index)
+ mat[index] = data[index];
+ glLoadMatrixf(mat);
+}
+
+static void multMatrix(const QMatrix4x4& m)
+{
+ GLfloat mat[16];
+ const qreal *data = m.constData();
+ for (int index = 0; index < 16; ++index)
+ mat[index] = data[index];
+ glMultMatrixf(mat);
+}
+
// If one of the boxes should not be rendered, set excludeBox to its index.
// If the main box should not be rendered, set excludeBox to -1.
void Scene::renderBoxes(const QMatrix4x4 &view, int excludeBox)
@@ -673,22 +693,22 @@ void Scene::renderBoxes(const QMatrix4x4 &view, int excludeBox)
viewRotation(3, 0) = viewRotation(3, 1) = viewRotation(3, 2) = 0.0f;
viewRotation(0, 3) = viewRotation(1, 3) = viewRotation(2, 3) = 0.0f;
viewRotation(3, 3) = 1.0f;
- glLoadMatrixf(viewRotation.data());
+ loadMatrix(viewRotation);
glScalef(20.0f, 20.0f, 20.0f);
// Don't render the environment if the environment texture can't be set for the correct sampler.
if (glActiveTexture) {
m_environment->bind();
- m_environmentProgram->enable();
+ m_environmentProgram->bind();
m_environmentProgram->setUniformValue("tex", GLint(0));
m_environmentProgram->setUniformValue("env", GLint(1));
m_environmentProgram->setUniformValue("noise", GLint(2));
m_box->draw();
- m_environmentProgram->disable();
+ m_environmentProgram->release();
m_environment->unbind();
}
- glLoadMatrixf(view.data());
+ loadMatrix(view);
glEnable(GL_CULL_FACE);
glEnable(GL_LIGHTING);
@@ -700,9 +720,7 @@ void Scene::renderBoxes(const QMatrix4x4 &view, int excludeBox)
glPushMatrix();
QMatrix4x4 m;
m.rotate(m_trackBalls[1].rotation());
- m = m.transposed();
-
- glMultMatrixf(m.data());
+ multMatrix(m);
glRotatef(360.0f * i / m_programs.size(), 0.0f, 0.0f, 1.0f);
glTranslatef(2.0f, 0.0f, 0.0f);
@@ -714,14 +732,14 @@ void Scene::renderBoxes(const QMatrix4x4 &view, int excludeBox)
else
m_environment->bind();
}
- m_programs[i]->enable();
+ m_programs[i]->bind();
m_programs[i]->setUniformValue("tex", GLint(0));
m_programs[i]->setUniformValue("env", GLint(1));
m_programs[i]->setUniformValue("noise", GLint(2));
m_programs[i]->setUniformValue("view", view);
m_programs[i]->setUniformValue("invView", invView);
m_box->draw();
- m_programs[i]->disable();
+ m_programs[i]->release();
if (glActiveTexture) {
if (m_dynamicCubemap && m_cubemaps[i])
@@ -735,8 +753,7 @@ void Scene::renderBoxes(const QMatrix4x4 &view, int excludeBox)
if (-1 != excludeBox) {
QMatrix4x4 m;
m.rotate(m_trackBalls[0].rotation());
- m = m.transposed();
- glMultMatrixf(m.data());
+ multMatrix(m);
if (glActiveTexture) {
if (m_dynamicCubemap)
@@ -745,14 +762,14 @@ void Scene::renderBoxes(const QMatrix4x4 &view, int excludeBox)
m_environment->bind();
}
- m_programs[m_currentShader]->enable();
+ m_programs[m_currentShader]->bind();
m_programs[m_currentShader]->setUniformValue("tex", GLint(0));
m_programs[m_currentShader]->setUniformValue("env", GLint(1));
m_programs[m_currentShader]->setUniformValue("noise", GLint(2));
m_programs[m_currentShader]->setUniformValue("view", view);
m_programs[m_currentShader]->setUniformValue("invView", invView);
m_box->draw();
- m_programs[m_currentShader]->disable();
+ m_programs[m_currentShader]->release();
if (glActiveTexture) {
if (m_dynamicCubemap)
@@ -842,7 +859,7 @@ void Scene::renderCubemaps()
glMatrixMode(GL_PROJECTION);
glPushMatrix();
- glLoadMatrixf(mat.data());
+ loadMatrix(mat);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
@@ -855,14 +872,14 @@ void Scene::renderCubemaps()
float angle = 2.0f * PI * i / m_cubemaps.size();
- center = m_trackBalls[1].rotation().rotateVector(QVector3D(cos(angle), sin(angle), 0.0f));
+ center = m_trackBalls[1].rotation().rotatedVector(QVector3D(cos(angle), sin(angle), 0.0f));
for (int face = 0; face < 6; ++face) {
m_cubemaps[i]->begin(face);
GLRenderTargetCube::getViewMatrix(mat, face);
QVector4D v = QVector4D(-center.x(), -center.y(), -center.z(), 1.0);
- mat.setColumn(3, v * mat);
+ mat.setColumn(3, mat * v);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
renderBoxes(mat, i);
@@ -894,6 +911,7 @@ void Scene::drawBackground(QPainter *painter, const QRectF &)
float width = float(painter->device()->width());
float height = float(painter->device()->height());
+ painter->beginNativePainting();
setStates();
if (m_dynamicCubemap)
@@ -913,6 +931,8 @@ void Scene::drawBackground(QPainter *painter, const QRectF &)
defaultStates();
++m_frame;
+
+ painter->endNativePainting();
}
QPointF Scene::pixelPosToViewPos(const QPointF& p)
@@ -1028,9 +1048,9 @@ void Scene::setColorParameter(const QString &name, QRgb color)
{
// set the color in all programs
foreach (QGLShaderProgram *program, m_programs) {
- program->enable();
+ program->bind();
program->setUniformValue(program->uniformLocation(name), QColor(color));
- program->disable();
+ program->release();
}
}
@@ -1038,9 +1058,9 @@ void Scene::setFloatParameter(const QString &name, float value)
{
// set the color in all programs
foreach (QGLShaderProgram *program, m_programs) {
- program->enable();
+ program->bind();
program->setUniformValue(program->uniformLocation(name), value);
- program->disable();
+ program->release();
}
}
diff --git a/demos/boxes/scene.h b/demos/boxes/scene.h
index 8c1a2c1de..e957c8b13 100644
--- a/demos/boxes/scene.h
+++ b/demos/boxes/scene.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -108,6 +108,8 @@ private:
class GraphicsWidget : public QGraphicsProxyWidget
{
+public:
+ GraphicsWidget() : QGraphicsProxyWidget(0, Qt::Window) {}
protected:
virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value);
virtual void resizeEvent(QGraphicsSceneResizeEvent *event);
diff --git a/demos/boxes/trackball.cpp b/demos/boxes/trackball.cpp
index 0e847dba9..76324e609 100644
--- a/demos/boxes/trackball.cpp
+++ b/demos/boxes/trackball.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -92,9 +92,9 @@ void TrackBall::move(const QPointF& p, const QQuaternion &transformation)
{
QLineF delta(m_lastPos, p);
m_angularVelocity = 180*delta.length() / (PI*msecs);
- m_axis = QVector3D(delta.dy(), -delta.dx(), 0.0f).normalized();
- m_axis = transformation.rotateVector(m_axis);
- m_rotation *= QQuaternion::fromAxisAndAngle(m_axis, delta.length());
+ m_axis = QVector3D(-delta.dy(), delta.dx(), 0.0f).normalized();
+ m_axis = transformation.rotatedVector(m_axis);
+ m_rotation = QQuaternion::fromAxisAndAngle(m_axis, 180 / PI * delta.length()) * m_rotation;
}
break;
case Sphere:
@@ -113,13 +113,13 @@ void TrackBall::move(const QPointF& p, const QQuaternion &transformation)
else
currentPos3D.normalize();
- m_axis = QVector3D::crossProduct(currentPos3D, lastPos3D);
- float angle = asin(sqrt(QVector3D::dotProduct(m_axis, m_axis)));
+ m_axis = QVector3D::crossProduct(lastPos3D, currentPos3D);
+ float angle = 180 / PI * asin(sqrt(QVector3D::dotProduct(m_axis, m_axis)));
- m_angularVelocity = 180*angle / (PI*msecs);
+ m_angularVelocity = angle / msecs;
m_axis.normalize();
- m_axis = transformation.rotateVector(m_axis);
- m_rotation *= QQuaternion::fromAxisAndAngle(m_axis, angle);
+ m_axis = transformation.rotatedVector(m_axis);
+ m_rotation = QQuaternion::fromAxisAndAngle(m_axis, angle) * m_rotation;
}
break;
}
@@ -155,6 +155,6 @@ QQuaternion TrackBall::rotation() const
QTime currentTime = QTime::currentTime();
float angle = m_angularVelocity * m_lastTime.msecsTo(currentTime);
- return m_rotation * QQuaternion::fromAxisAndAngle(m_axis, angle);
+ return QQuaternion::fromAxisAndAngle(m_axis, angle) * m_rotation;
}
diff --git a/demos/boxes/trackball.h b/demos/boxes/trackball.h
index 3afbb7840..489089d61 100644
--- a/demos/boxes/trackball.h
+++ b/demos/boxes/trackball.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/boxes/wood.fsh b/demos/boxes/wood.fsh
index be5bd625d..f3185962c 100644
--- a/demos/boxes/wood.fsh
+++ b/demos/boxes/wood.fsh
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/autosaver.cpp b/demos/browser/autosaver.cpp
index ac677a492..29a384a49 100644
--- a/demos/browser/autosaver.cpp
+++ b/demos/browser/autosaver.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/autosaver.h b/demos/browser/autosaver.h
index 655946336..5a6c5aef1 100644
--- a/demos/browser/autosaver.h
+++ b/demos/browser/autosaver.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/bookmarks.cpp b/demos/browser/bookmarks.cpp
index db042d257..87e362c0f 100644
--- a/demos/browser/bookmarks.cpp
+++ b/demos/browser/bookmarks.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -72,11 +72,11 @@ BookmarksManager::BookmarksManager(QObject *parent)
, m_bookmarkRootNode(0)
, m_bookmarkModel(0)
{
- connect(this, SIGNAL(entryAdded(BookmarkNode *)),
+ connect(this, SIGNAL(entryAdded(BookmarkNode*)),
m_saveTimer, SLOT(changeOccurred()));
- connect(this, SIGNAL(entryRemoved(BookmarkNode *, int, BookmarkNode *)),
+ connect(this, SIGNAL(entryRemoved(BookmarkNode*,int,BookmarkNode*)),
m_saveTimer, SLOT(changeOccurred()));
- connect(this, SIGNAL(entryChanged(BookmarkNode *)),
+ connect(this, SIGNAL(entryChanged(BookmarkNode*)),
m_saveTimer, SLOT(changeOccurred()));
}
@@ -362,12 +362,12 @@ BookmarksModel::BookmarksModel(BookmarksManager *bookmarkManager, QObject *paren
, m_endMacro(false)
, m_bookmarksManager(bookmarkManager)
{
- connect(bookmarkManager, SIGNAL(entryAdded(BookmarkNode *)),
- this, SLOT(entryAdded(BookmarkNode *)));
- connect(bookmarkManager, SIGNAL(entryRemoved(BookmarkNode *, int, BookmarkNode *)),
- this, SLOT(entryRemoved(BookmarkNode *, int, BookmarkNode *)));
- connect(bookmarkManager, SIGNAL(entryChanged(BookmarkNode *)),
- this, SLOT(entryChanged(BookmarkNode *)));
+ connect(bookmarkManager, SIGNAL(entryAdded(BookmarkNode*)),
+ this, SLOT(entryAdded(BookmarkNode*)));
+ connect(bookmarkManager, SIGNAL(entryRemoved(BookmarkNode*,int,BookmarkNode*)),
+ this, SLOT(entryRemoved(BookmarkNode*,int,BookmarkNode*)));
+ connect(bookmarkManager, SIGNAL(entryChanged(BookmarkNode*)),
+ this, SLOT(entryChanged(BookmarkNode*)));
}
QModelIndex BookmarksModel::index(BookmarkNode *node) const
@@ -733,8 +733,8 @@ BookmarksMenu::BookmarksMenu(QWidget *parent)
: ModelMenu(parent)
, m_bookmarksManager(0)
{
- connect(this, SIGNAL(activated(const QModelIndex &)),
- this, SLOT(activated(const QModelIndex &)));
+ connect(this, SIGNAL(activated(QModelIndex)),
+ this, SLOT(activated(QModelIndex)));
setMaxRows(-1);
setHoverRole(BookmarksModel::UrlStringRole);
setSeparatorRole(BookmarksModel::SeparatorRole);
@@ -792,11 +792,11 @@ BookmarksDialog::BookmarksDialog(QWidget *parent, BookmarksManager *manager)
int header = fm.width(QLatin1Char('m')) * 40;
tree->header()->resizeSection(0, header);
tree->header()->setStretchLastSection(true);
- connect(tree, SIGNAL(activated(const QModelIndex&)),
+ connect(tree, SIGNAL(activated(QModelIndex)),
this, SLOT(open()));
tree->setContextMenuPolicy(Qt::CustomContextMenu);
- connect(tree, SIGNAL(customContextMenuRequested(const QPoint &)),
- this, SLOT(customContextMenuRequested(const QPoint &)));
+ connect(tree, SIGNAL(customContextMenuRequested(QPoint)),
+ this, SLOT(customContextMenuRequested(QPoint)));
connect(addFolderButton, SIGNAL(clicked()),
this, SLOT(newFolder()));
expandNodes(m_bookmarksManager->bookmarks());
@@ -884,9 +884,9 @@ BookmarksToolBar::BookmarksToolBar(BookmarksModel *model, QWidget *parent)
connect(this, SIGNAL(actionTriggered(QAction*)), this, SLOT(triggered(QAction*)));
setRootIndex(model->index(0, 0));
connect(m_bookmarksModel, SIGNAL(modelReset()), this, SLOT(build()));
- connect(m_bookmarksModel, SIGNAL(rowsInserted(const QModelIndex &, int, int)), this, SLOT(build()));
- connect(m_bookmarksModel, SIGNAL(rowsRemoved(const QModelIndex &, int, int)), this, SLOT(build()));
- connect(m_bookmarksModel, SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)), this, SLOT(build()));
+ connect(m_bookmarksModel, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(build()));
+ connect(m_bookmarksModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(build()));
+ connect(m_bookmarksModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(build()));
setAcceptDrops(true);
}
@@ -956,8 +956,8 @@ void BookmarksToolBar::build()
button->setArrowType(Qt::DownArrow);
button->setText(idx.data().toString());
ModelMenu *menu = new ModelMenu(this);
- connect(menu, SIGNAL(activated(const QModelIndex &)),
- this, SLOT(activated(const QModelIndex &)));
+ connect(menu, SIGNAL(activated(QModelIndex)),
+ this, SLOT(activated(QModelIndex)));
menu->setModel(m_bookmarksModel);
menu->setRootIndex(idx);
menu->addAction(new QAction(menu));
diff --git a/demos/browser/bookmarks.h b/demos/browser/bookmarks.h
index f9b920e7f..7e51eca01 100644
--- a/demos/browser/bookmarks.h
+++ b/demos/browser/bookmarks.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/browser.pro b/demos/browser/browser.pro
index 13e8a1dae..a42aa601f 100644
--- a/demos/browser/browser.pro
+++ b/demos/browser/browser.pro
@@ -3,9 +3,11 @@ TARGET = browser
QT += webkit network
CONFIG += qt warn_on
-contains(QT_BUILD_PARTS, tools): CONFIG += uitools
+contains(QT_BUILD_PARTS, tools):!embedded: CONFIG += uitools
else: DEFINES += QT_NO_UITOOLS
+release:DEFINES+=QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
+
FORMS += \
addbookmarkdialog.ui \
bookmarks.ui \
@@ -78,6 +80,16 @@ mac {
ICON = browser.icns
QMAKE_INFO_PLIST = Info_mac.plist
TARGET = Browser
+
+ # No 64-bit Flash on Mac, so build the browser 32-bit
+ contains(QT_CONFIG, x86) {
+ CONFIG -= x86_64
+ CONFIG += x86
+ }
+ contains(QT_CONFIG, ppc) {
+ CONFIG -= ppc64
+ CONFIG += ppc
+ }
}
wince*: {
@@ -89,3 +101,8 @@ target.path = $$[QT_INSTALL_DEMOS]/browser
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.plist *.icns *.ico *.rc *.pro *.html *.doc images htmls data
sources.path = $$[QT_INSTALL_DEMOS]/browser
INSTALLS += target sources
+
+symbian {
+ TARGET.UID3 = 0xA000CF70
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+}
diff --git a/demos/browser/browserapplication.cpp b/demos/browser/browserapplication.cpp
index 8262d2217..0256f8ae4 100644
--- a/demos/browser/browserapplication.cpp
+++ b/demos/browser/browserapplication.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -248,6 +248,8 @@ void BrowserApplication::loadSettings()
QUrl url = settings.value(QLatin1String("userStyleSheet")).toUrl();
defaultSettings->setUserStyleSheetUrl(url);
+ defaultSettings->setAttribute(QWebSettings::DnsPrefetchEnabled, true);
+
settings.endGroup();
}
diff --git a/demos/browser/browserapplication.h b/demos/browser/browserapplication.h
index afc3e18b9..88210bdb5 100644
--- a/demos/browser/browserapplication.h
+++ b/demos/browser/browserapplication.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/browsermainwindow.cpp b/demos/browser/browsermainwindow.cpp
index 8d4df0196..5fba09b1c 100644
--- a/demos/browser/browsermainwindow.cpp
+++ b/demos/browser/browsermainwindow.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -90,8 +90,8 @@ BrowserMainWindow::BrowserMainWindow(QWidget *parent, Qt::WindowFlags flags)
QWidget *centralWidget = new QWidget(this);
BookmarksModel *boomarksModel = BrowserApplication::bookmarksManager()->bookmarksModel();
m_bookmarksToolbar = new BookmarksToolBar(boomarksModel, this);
- connect(m_bookmarksToolbar, SIGNAL(openUrl(const QUrl&)),
- m_tabWidget, SLOT(loadUrlInCurrentTab(const QUrl&)));
+ connect(m_bookmarksToolbar, SIGNAL(openUrl(QUrl)),
+ m_tabWidget, SLOT(loadUrlInCurrentTab(QUrl)));
connect(m_bookmarksToolbar->toggleViewAction(), SIGNAL(toggled(bool)),
this, SLOT(updateBookmarksToolbarActionText(bool)));
@@ -109,22 +109,22 @@ BrowserMainWindow::BrowserMainWindow(QWidget *parent, Qt::WindowFlags flags)
centralWidget->setLayout(layout);
setCentralWidget(centralWidget);
- connect(m_tabWidget, SIGNAL(loadPage(const QString &)),
- this, SLOT(loadPage(const QString &)));
- connect(m_tabWidget, SIGNAL(setCurrentTitle(const QString &)),
- this, SLOT(slotUpdateWindowTitle(const QString &)));
- connect(m_tabWidget, SIGNAL(showStatusBarMessage(const QString&)),
- statusBar(), SLOT(showMessage(const QString&)));
- connect(m_tabWidget, SIGNAL(linkHovered(const QString&)),
- statusBar(), SLOT(showMessage(const QString&)));
+ connect(m_tabWidget, SIGNAL(loadPage(QString)),
+ this, SLOT(loadPage(QString)));
+ connect(m_tabWidget, SIGNAL(setCurrentTitle(QString)),
+ this, SLOT(slotUpdateWindowTitle(QString)));
+ connect(m_tabWidget, SIGNAL(showStatusBarMessage(QString)),
+ statusBar(), SLOT(showMessage(QString)));
+ connect(m_tabWidget, SIGNAL(linkHovered(QString)),
+ statusBar(), SLOT(showMessage(QString)));
connect(m_tabWidget, SIGNAL(loadProgress(int)),
this, SLOT(slotLoadProgress(int)));
connect(m_tabWidget, SIGNAL(tabsChanged()),
m_autoSaver, SLOT(changeOccurred()));
- connect(m_tabWidget, SIGNAL(geometryChangeRequested(const QRect &)),
- this, SLOT(geometryChangeRequested(const QRect &)));
- connect(m_tabWidget, SIGNAL(printRequested(QWebFrame *)),
- this, SLOT(printRequested(QWebFrame *)));
+ connect(m_tabWidget, SIGNAL(geometryChangeRequested(QRect)),
+ this, SLOT(geometryChangeRequested(QRect)));
+ connect(m_tabWidget, SIGNAL(printRequested(QWebFrame*)),
+ this, SLOT(printRequested(QWebFrame*)));
connect(m_tabWidget, SIGNAL(menuBarVisibilityChangeRequested(bool)),
menuBar(), SLOT(setVisible(bool)));
connect(m_tabWidget, SIGNAL(statusBarVisibilityChangeRequested(bool)),
@@ -369,10 +369,10 @@ void BrowserMainWindow::setupMenu()
// History
HistoryMenu *historyMenu = new HistoryMenu(this);
- connect(historyMenu, SIGNAL(openUrl(const QUrl&)),
- m_tabWidget, SLOT(loadUrlInCurrentTab(const QUrl&)));
- connect(historyMenu, SIGNAL(hovered(const QString&)), this,
- SLOT(slotUpdateStatusbar(const QString&)));
+ connect(historyMenu, SIGNAL(openUrl(QUrl)),
+ m_tabWidget, SLOT(loadUrlInCurrentTab(QUrl)));
+ connect(historyMenu, SIGNAL(hovered(QString)), this,
+ SLOT(slotUpdateStatusbar(QString)));
historyMenu->setTitle(tr("Hi&story"));
menuBar()->addMenu(historyMenu);
QList<QAction*> historyActions;
@@ -404,10 +404,10 @@ void BrowserMainWindow::setupMenu()
// Bookmarks
BookmarksMenu *bookmarksMenu = new BookmarksMenu(this);
- connect(bookmarksMenu, SIGNAL(openUrl(const QUrl&)),
- m_tabWidget, SLOT(loadUrlInCurrentTab(const QUrl&)));
- connect(bookmarksMenu, SIGNAL(hovered(const QString&)),
- this, SLOT(slotUpdateStatusbar(const QString&)));
+ connect(bookmarksMenu, SIGNAL(openUrl(QUrl)),
+ m_tabWidget, SLOT(loadUrlInCurrentTab(QUrl)));
+ connect(bookmarksMenu, SIGNAL(hovered(QString)),
+ this, SLOT(slotUpdateStatusbar(QString)));
bookmarksMenu->setTitle(tr("&Bookmarks"));
menuBar()->addMenu(bookmarksMenu);
@@ -433,10 +433,8 @@ void BrowserMainWindow::setupMenu()
QMenu *toolsMenu = menuBar()->addMenu(tr("&Tools"));
toolsMenu->addAction(tr("Web &Search"), this, SLOT(slotWebSearch()), QKeySequence(tr("Ctrl+K", "Web Search")));
-#ifndef Q_CC_MINGW
a = toolsMenu->addAction(tr("Enable Web &Inspector"), this, SLOT(slotToggleInspector(bool)));
a->setCheckable(true);
-#endif
QMenu *helpMenu = menuBar()->addMenu(tr("&Help"));
helpMenu->addAction(tr("About &Qt"), qApp, SLOT(aboutQt()));
@@ -455,16 +453,16 @@ void BrowserMainWindow::setupToolBar()
m_historyBack->setMenu(m_historyBackMenu);
connect(m_historyBackMenu, SIGNAL(aboutToShow()),
this, SLOT(slotAboutToShowBackMenu()));
- connect(m_historyBackMenu, SIGNAL(triggered(QAction *)),
- this, SLOT(slotOpenActionUrl(QAction *)));
+ connect(m_historyBackMenu, SIGNAL(triggered(QAction*)),
+ this, SLOT(slotOpenActionUrl(QAction*)));
m_navigationBar->addAction(m_historyBack);
m_historyForward->setIcon(style()->standardIcon(QStyle::SP_ArrowForward, 0, this));
m_historyForwardMenu = new QMenu(this);
connect(m_historyForwardMenu, SIGNAL(aboutToShow()),
this, SLOT(slotAboutToShowForwardMenu()));
- connect(m_historyForwardMenu, SIGNAL(triggered(QAction *)),
- this, SLOT(slotOpenActionUrl(QAction *)));
+ connect(m_historyForwardMenu, SIGNAL(triggered(QAction*)),
+ this, SLOT(slotOpenActionUrl(QAction*)));
m_historyForward->setMenu(m_historyForwardMenu);
m_navigationBar->addAction(m_historyForward);
@@ -478,7 +476,7 @@ void BrowserMainWindow::setupToolBar()
m_toolbarSearch = new ToolbarSearch(m_navigationBar);
m_navigationBar->addWidget(m_toolbarSearch);
- connect(m_toolbarSearch, SIGNAL(search(const QUrl&)), SLOT(loadUrl(const QUrl&)));
+ connect(m_toolbarSearch, SIGNAL(search(QUrl)), SLOT(loadUrl(QUrl)));
m_chaseWidget = new ChaseWidget(this);
m_navigationBar->addWidget(m_chaseWidget);
@@ -487,8 +485,8 @@ void BrowserMainWindow::setupToolBar()
void BrowserMainWindow::slotShowBookmarksDialog()
{
BookmarksDialog *dialog = new BookmarksDialog(this);
- connect(dialog, SIGNAL(openUrl(const QUrl&)),
- m_tabWidget, SLOT(loadUrlInCurrentTab(const QUrl&)));
+ connect(dialog, SIGNAL(openUrl(QUrl)),
+ m_tabWidget, SLOT(loadUrlInCurrentTab(QUrl)));
dialog->show();
}
@@ -552,47 +550,6 @@ void BrowserMainWindow::slotViewStatusbar()
m_autoSaver->changeOccurred();
}
-QUrl BrowserMainWindow::guessUrlFromString(const QString &string)
-{
- QString urlStr = string.trimmed();
- QRegExp test(QLatin1String("^[a-zA-Z]+\\:.*"));
-
- // Check if it looks like a qualified URL. Try parsing it and see.
- bool hasSchema = test.exactMatch(urlStr);
- if (hasSchema) {
- QUrl url = QUrl::fromEncoded(urlStr.toUtf8(), QUrl::TolerantMode);
- if (url.isValid())
- return url;
- }
-
- // Might be a file.
- if (QFile::exists(urlStr)) {
- QFileInfo info(urlStr);
- return QUrl::fromLocalFile(info.absoluteFilePath());
- }
-
- // Might be a shorturl - try to detect the schema.
- if (!hasSchema) {
- int dotIndex = urlStr.indexOf(QLatin1Char('.'));
- if (dotIndex != -1) {
- QString prefix = urlStr.left(dotIndex).toLower();
- QByteArray schema = (prefix == QLatin1String("ftp")) ? prefix.toLatin1() : "http";
- QUrl url =
- QUrl::fromEncoded(schema + "://" + urlStr.toUtf8(), QUrl::TolerantMode);
- if (url.isValid())
- return url;
- }
- }
-
- // Fall back to QUrl's own tolerant parser.
- QUrl url = QUrl::fromEncoded(string.toUtf8(), QUrl::TolerantMode);
-
- // finally for cases where the user just types in a hostname add http
- if (url.scheme().isEmpty())
- url = QUrl::fromEncoded("http://" + string.toUtf8(), QUrl::TolerantMode);
- return url;
-}
-
void BrowserMainWindow::loadUrl(const QUrl &url)
{
if (!currentTab() || !url.isValid())
@@ -677,8 +634,8 @@ void BrowserMainWindow::slotFilePrintPreview()
if (!currentTab())
return;
QPrintPreviewDialog *dialog = new QPrintPreviewDialog(this);
- connect(dialog, SIGNAL(paintRequested(QPrinter *)),
- currentTab(), SLOT(print(QPrinter *)));
+ connect(dialog, SIGNAL(paintRequested(QPrinter*)),
+ currentTab(), SLOT(print(QPrinter*)));
dialog->exec();
#endif
}
@@ -740,7 +697,7 @@ void BrowserMainWindow::closeEvent(QCloseEvent *event)
if (m_tabWidget->count() > 1) {
int ret = QMessageBox::warning(this, QString(),
tr("Are you sure you want to close the window?"
- " There are %1 tab open").arg(m_tabWidget->count()),
+ " There are %1 tabs open").arg(m_tabWidget->count()),
QMessageBox::Yes | QMessageBox::No,
QMessageBox::No);
if (ret == QMessageBox::No) {
@@ -873,7 +830,7 @@ void BrowserMainWindow::slotSwapFocus()
void BrowserMainWindow::loadPage(const QString &page)
{
- QUrl url = guessUrlFromString(page);
+ QUrl url = QUrl::fromUserInput(page);
loadUrl(url);
}
diff --git a/demos/browser/browsermainwindow.h b/demos/browser/browsermainwindow.h
index c7f17a62a..f0f95b199 100644
--- a/demos/browser/browsermainwindow.h
+++ b/demos/browser/browsermainwindow.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -68,7 +68,6 @@ public:
QSize sizeHint() const;
public:
- static QUrl guessUrlFromString(const QString &url);
TabWidget *tabWidget() const;
WebView *currentTab() const;
QByteArray saveState(bool withTabs = true) const;
diff --git a/demos/browser/chasewidget.cpp b/demos/browser/chasewidget.cpp
index 8c73f26c3..7bfd3a37a 100644
--- a/demos/browser/chasewidget.cpp
+++ b/demos/browser/chasewidget.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/chasewidget.h b/demos/browser/chasewidget.h
index b00805c20..2d34b3a69 100644
--- a/demos/browser/chasewidget.h
+++ b/demos/browser/chasewidget.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/cookiejar.cpp b/demos/browser/cookiejar.cpp
index 6083a7538..ce8aa740a 100644
--- a/demos/browser/cookiejar.cpp
+++ b/demos/browser/cookiejar.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -668,8 +668,8 @@ CookiesExceptionsDialog::CookiesExceptionsDialog(CookieJar *cookieJar, QWidget *
CookieModel *cookieModel = new CookieModel(cookieJar, this);
domainLineEdit->setCompleter(new QCompleter(cookieModel, domainLineEdit));
- connect(domainLineEdit, SIGNAL(textChanged(const QString &)),
- this, SLOT(textChanged(const QString &)));
+ connect(domainLineEdit, SIGNAL(textChanged(QString)),
+ this, SLOT(textChanged(QString)));
connect(blockButton, SIGNAL(clicked()), this, SLOT(block()));
connect(allowButton, SIGNAL(clicked()), this, SLOT(allow()));
connect(allowForSessionButton, SIGNAL(clicked()), this, SLOT(allowForSession()));
diff --git a/demos/browser/cookiejar.h b/demos/browser/cookiejar.h
index f73ef8dfe..c83f7df95 100644
--- a/demos/browser/cookiejar.h
+++ b/demos/browser/cookiejar.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/data/defaultbookmarks.xbel b/demos/browser/data/defaultbookmarks.xbel
index 1d20ac088..dce529784 100644
--- a/demos/browser/data/defaultbookmarks.xbel
+++ b/demos/browser/data/defaultbookmarks.xbel
@@ -30,6 +30,9 @@
<bookmark href="http://xkcd.com/">
<title>xkcd</title>
</bookmark>
+ <bookmark href="http://twitter.com/qtbynokia">
+ <title>Twitter</title>
+ </bookmark>
</folder>
<folder folded="yes">
<title>Bookmarks Menu</title>
diff --git a/demos/browser/downloadmanager.cpp b/demos/browser/downloadmanager.cpp
index dbef2bd49..f57fea1b7 100644
--- a/demos/browser/downloadmanager.cpp
+++ b/demos/browser/downloadmanager.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -94,8 +94,8 @@ void DownloadItem::init()
connect(m_reply, SIGNAL(readyRead()), this, SLOT(downloadReadyRead()));
connect(m_reply, SIGNAL(error(QNetworkReply::NetworkError)),
this, SLOT(error(QNetworkReply::NetworkError)));
- connect(m_reply, SIGNAL(downloadProgress(qint64, qint64)),
- this, SLOT(downloadProgress(qint64, qint64)));
+ connect(m_reply, SIGNAL(downloadProgress(qint64,qint64)),
+ this, SLOT(downloadProgress(qint64,qint64)));
connect(m_reply, SIGNAL(metaDataChanged()),
this, SLOT(metaDataChanged()));
connect(m_reply, SIGNAL(finished()),
diff --git a/demos/browser/downloadmanager.h b/demos/browser/downloadmanager.h
index a46c605fd..94f8cfef3 100644
--- a/demos/browser/downloadmanager.h
+++ b/demos/browser/downloadmanager.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/edittableview.cpp b/demos/browser/edittableview.cpp
index 7709128b1..aef19990d 100644
--- a/demos/browser/edittableview.cpp
+++ b/demos/browser/edittableview.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/edittableview.h b/demos/browser/edittableview.h
index e123db888..1ad8e4a7d 100644
--- a/demos/browser/edittableview.h
+++ b/demos/browser/edittableview.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/edittreeview.cpp b/demos/browser/edittreeview.cpp
index cfb728aa7..a06ad6fab 100644
--- a/demos/browser/edittreeview.cpp
+++ b/demos/browser/edittreeview.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/edittreeview.h b/demos/browser/edittreeview.h
index 22ffe506a..cf25ea4dc 100644
--- a/demos/browser/edittreeview.h
+++ b/demos/browser/edittreeview.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/history.cpp b/demos/browser/history.cpp
index abe9f3c27..a34e122e5 100644
--- a/demos/browser/history.cpp
+++ b/demos/browser/history.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -77,9 +77,9 @@ HistoryManager::HistoryManager(QObject *parent)
m_expiredTimer.setSingleShot(true);
connect(&m_expiredTimer, SIGNAL(timeout()),
this, SLOT(checkForExpired()));
- connect(this, SIGNAL(entryAdded(const HistoryItem &)),
+ connect(this, SIGNAL(entryAdded(HistoryItem)),
m_saveTimer, SLOT(changeOccurred()));
- connect(this, SIGNAL(entryRemoved(const HistoryItem &)),
+ connect(this, SIGNAL(entryRemoved(HistoryItem)),
m_saveTimer, SLOT(changeOccurred()));
load();
@@ -369,10 +369,10 @@ HistoryModel::HistoryModel(HistoryManager *history, QObject *parent)
Q_ASSERT(m_history);
connect(m_history, SIGNAL(historyReset()),
this, SLOT(historyReset()));
- connect(m_history, SIGNAL(entryRemoved(const HistoryItem &)),
+ connect(m_history, SIGNAL(entryRemoved(HistoryItem)),
this, SLOT(historyReset()));
- connect(m_history, SIGNAL(entryAdded(const HistoryItem &)),
+ connect(m_history, SIGNAL(entryAdded(HistoryItem)),
this, SLOT(entryAdded()));
connect(m_history, SIGNAL(entryUpdated(int)),
this, SLOT(entryUpdated(int)));
@@ -595,8 +595,8 @@ HistoryMenu::HistoryMenu(QWidget *parent)
: ModelMenu(parent)
, m_history(0)
{
- connect(this, SIGNAL(activated(const QModelIndex &)),
- this, SLOT(activated(const QModelIndex &)));
+ connect(this, SIGNAL(activated(QModelIndex)),
+ this, SLOT(activated(QModelIndex)));
setHoverRole(HistoryModel::UrlStringRole);
}
@@ -639,8 +639,8 @@ void HistoryMenu::postPopulated()
void HistoryMenu::showHistoryDialog()
{
HistoryDialog *dialog = new HistoryDialog(this);
- connect(dialog, SIGNAL(openUrl(const QUrl&)),
- this, SIGNAL(openUrl(const QUrl&)));
+ connect(dialog, SIGNAL(openUrl(QUrl)),
+ this, SIGNAL(openUrl(QUrl)));
dialog->show();
}
@@ -687,11 +687,11 @@ HistoryDialog::HistoryDialog(QWidget *parent, HistoryManager *setHistory) : QDia
int header = fm.width(QLatin1Char('m')) * 40;
tree->header()->resizeSection(0, header);
tree->header()->setStretchLastSection(true);
- connect(tree, SIGNAL(activated(const QModelIndex&)),
+ connect(tree, SIGNAL(activated(QModelIndex)),
this, SLOT(open()));
tree->setContextMenuPolicy(Qt::CustomContextMenu);
- connect(tree, SIGNAL(customContextMenuRequested(const QPoint &)),
- this, SLOT(customContextMenuRequested(const QPoint &)));
+ connect(tree, SIGNAL(customContextMenuRequested(QPoint)),
+ this, SLOT(customContextMenuRequested(QPoint)));
}
void HistoryDialog::customContextMenuRequested(const QPoint &pos)
@@ -751,12 +751,12 @@ void HistoryFilterModel::setSourceModel(QAbstractItemModel *newSourceModel)
{
if (sourceModel()) {
disconnect(sourceModel(), SIGNAL(modelReset()), this, SLOT(sourceReset()));
- disconnect(sourceModel(), SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)),
- this, SLOT(dataChanged(const QModelIndex &, const QModelIndex &)));
- disconnect(sourceModel(), SIGNAL(rowsInserted(const QModelIndex &, int, int)),
- this, SLOT(sourceRowsInserted(const QModelIndex &, int, int)));
- disconnect(sourceModel(), SIGNAL(rowsRemoved(const QModelIndex &, int, int)),
- this, SLOT(sourceRowsRemoved(const QModelIndex &, int, int)));
+ disconnect(sourceModel(), SIGNAL(dataChanged(QModelIndex,QModelIndex)),
+ this, SLOT(dataChanged(QModelIndex,QModelIndex)));
+ disconnect(sourceModel(), SIGNAL(rowsInserted(QModelIndex,int,int)),
+ this, SLOT(sourceRowsInserted(QModelIndex,int,int)));
+ disconnect(sourceModel(), SIGNAL(rowsRemoved(QModelIndex,int,int)),
+ this, SLOT(sourceRowsRemoved(QModelIndex,int,int)));
}
QAbstractProxyModel::setSourceModel(newSourceModel);
@@ -764,12 +764,12 @@ void HistoryFilterModel::setSourceModel(QAbstractItemModel *newSourceModel)
if (sourceModel()) {
m_loaded = false;
connect(sourceModel(), SIGNAL(modelReset()), this, SLOT(sourceReset()));
- connect(sourceModel(), SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)),
- this, SLOT(sourceDataChanged(const QModelIndex &, const QModelIndex &)));
- connect(sourceModel(), SIGNAL(rowsInserted(const QModelIndex &, int, int)),
- this, SLOT(sourceRowsInserted(const QModelIndex &, int, int)));
- connect(sourceModel(), SIGNAL(rowsRemoved(const QModelIndex &, int, int)),
- this, SLOT(sourceRowsRemoved(const QModelIndex &, int, int)));
+ connect(sourceModel(), SIGNAL(dataChanged(QModelIndex,QModelIndex)),
+ this, SLOT(sourceDataChanged(QModelIndex,QModelIndex)));
+ connect(sourceModel(), SIGNAL(rowsInserted(QModelIndex,int,int)),
+ this, SLOT(sourceRowsInserted(QModelIndex,int,int)));
+ connect(sourceModel(), SIGNAL(rowsRemoved(QModelIndex,int,int)),
+ this, SLOT(sourceRowsRemoved(QModelIndex,int,int)));
}
}
@@ -906,16 +906,16 @@ bool HistoryFilterModel::removeRows(int row, int count, const QModelIndex &paren
if (row < 0 || count <= 0 || row + count > rowCount(parent) || parent.isValid())
return false;
int lastRow = row + count - 1;
- disconnect(sourceModel(), SIGNAL(rowsRemoved(const QModelIndex &, int, int)),
- this, SLOT(sourceRowsRemoved(const QModelIndex &, int, int)));
+ disconnect(sourceModel(), SIGNAL(rowsRemoved(QModelIndex,int,int)),
+ this, SLOT(sourceRowsRemoved(QModelIndex,int,int)));
beginRemoveRows(parent, row, lastRow);
int oldCount = rowCount();
int start = sourceModel()->rowCount() - m_sourceRow.value(row);
int end = sourceModel()->rowCount() - m_sourceRow.value(lastRow);
sourceModel()->removeRows(start, end - start + 1);
endRemoveRows();
- connect(sourceModel(), SIGNAL(rowsRemoved(const QModelIndex &, int, int)),
- this, SLOT(sourceRowsRemoved(const QModelIndex &, int, int)));
+ connect(sourceModel(), SIGNAL(rowsRemoved(QModelIndex,int,int)),
+ this, SLOT(sourceRowsRemoved(QModelIndex,int,int)));
m_loaded = false;
if (oldCount - count != rowCount())
reset();
@@ -988,9 +988,9 @@ void HistoryCompletionModel::setSourceModel(QAbstractItemModel *newSourceModel)
{
if (sourceModel()) {
disconnect(sourceModel(), SIGNAL(modelReset()), this, SLOT(sourceReset()));
- disconnect(sourceModel(), SIGNAL(rowsInserted(const QModelIndex &, int, int)),
+ disconnect(sourceModel(), SIGNAL(rowsInserted(QModelIndex,int,int)),
this, SLOT(sourceReset()));
- disconnect(sourceModel(), SIGNAL(rowsRemoved(const QModelIndex &, int, int)),
+ disconnect(sourceModel(), SIGNAL(rowsRemoved(QModelIndex,int,int)),
this, SLOT(sourceReset()));
}
@@ -998,9 +998,9 @@ void HistoryCompletionModel::setSourceModel(QAbstractItemModel *newSourceModel)
if (newSourceModel) {
connect(newSourceModel, SIGNAL(modelReset()), this, SLOT(sourceReset()));
- connect(sourceModel(), SIGNAL(rowsInserted(const QModelIndex &, int, int)),
+ connect(sourceModel(), SIGNAL(rowsInserted(QModelIndex,int,int)),
this, SLOT(sourceReset()));
- connect(sourceModel(), SIGNAL(rowsRemoved(const QModelIndex &, int, int)),
+ connect(sourceModel(), SIGNAL(rowsRemoved(QModelIndex,int,int)),
this, SLOT(sourceReset()));
}
@@ -1177,10 +1177,10 @@ void HistoryTreeModel::setSourceModel(QAbstractItemModel *newSourceModel)
if (sourceModel()) {
disconnect(sourceModel(), SIGNAL(modelReset()), this, SLOT(sourceReset()));
disconnect(sourceModel(), SIGNAL(layoutChanged()), this, SLOT(sourceReset()));
- disconnect(sourceModel(), SIGNAL(rowsInserted(const QModelIndex &, int, int)),
- this, SLOT(sourceRowsInserted(const QModelIndex &, int, int)));
- disconnect(sourceModel(), SIGNAL(rowsRemoved(const QModelIndex &, int, int)),
- this, SLOT(sourceRowsRemoved(const QModelIndex &, int, int)));
+ disconnect(sourceModel(), SIGNAL(rowsInserted(QModelIndex,int,int)),
+ this, SLOT(sourceRowsInserted(QModelIndex,int,int)));
+ disconnect(sourceModel(), SIGNAL(rowsRemoved(QModelIndex,int,int)),
+ this, SLOT(sourceRowsRemoved(QModelIndex,int,int)));
}
QAbstractProxyModel::setSourceModel(newSourceModel);
@@ -1188,10 +1188,10 @@ void HistoryTreeModel::setSourceModel(QAbstractItemModel *newSourceModel)
if (newSourceModel) {
connect(sourceModel(), SIGNAL(modelReset()), this, SLOT(sourceReset()));
connect(sourceModel(), SIGNAL(layoutChanged()), this, SLOT(sourceReset()));
- connect(sourceModel(), SIGNAL(rowsInserted(const QModelIndex &, int, int)),
- this, SLOT(sourceRowsInserted(const QModelIndex &, int, int)));
- connect(sourceModel(), SIGNAL(rowsRemoved(const QModelIndex &, int, int)),
- this, SLOT(sourceRowsRemoved(const QModelIndex &, int, int)));
+ connect(sourceModel(), SIGNAL(rowsInserted(QModelIndex,int,int)),
+ this, SLOT(sourceRowsInserted(QModelIndex,int,int)));
+ connect(sourceModel(), SIGNAL(rowsRemoved(QModelIndex,int,int)),
+ this, SLOT(sourceRowsRemoved(QModelIndex,int,int)));
}
reset();
diff --git a/demos/browser/history.h b/demos/browser/history.h
index 2c561267f..2ae8c675a 100644
--- a/demos/browser/history.h
+++ b/demos/browser/history.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/main.cpp b/demos/browser/main.cpp
index 2d8fef797..f0df72569 100644
--- a/demos/browser/main.cpp
+++ b/demos/browser/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/modelmenu.cpp b/demos/browser/modelmenu.cpp
index 47dc9e72f..85588fb8b 100644
--- a/demos/browser/modelmenu.cpp
+++ b/demos/browser/modelmenu.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/modelmenu.h b/demos/browser/modelmenu.h
index 8e428616d..8cc683905 100644
--- a/demos/browser/modelmenu.h
+++ b/demos/browser/modelmenu.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/networkaccessmanager.cpp b/demos/browser/networkaccessmanager.cpp
index 378165235..af690377a 100644
--- a/demos/browser/networkaccessmanager.cpp
+++ b/demos/browser/networkaccessmanager.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -57,19 +57,24 @@
#include <QtNetwork/QAuthenticator>
#include <QtNetwork/QNetworkDiskCache>
#include <QtNetwork/QNetworkProxy>
+#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QtNetwork/QSslError>
NetworkAccessManager::NetworkAccessManager(QObject *parent)
- : QNetworkAccessManager(parent)
+ : QNetworkAccessManager(parent),
+ requestFinishedCount(0), requestFinishedFromCacheCount(0), requestFinishedPipelinedCount(0),
+ requestFinishedSecureCount(0)
{
- connect(this, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)),
+ connect(this, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),
SLOT(authenticationRequired(QNetworkReply*,QAuthenticator*)));
- connect(this, SIGNAL(proxyAuthenticationRequired(const QNetworkProxy&, QAuthenticator*)),
- SLOT(proxyAuthenticationRequired(const QNetworkProxy&, QAuthenticator*)));
+ connect(this, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ connect(this, SIGNAL(finished(QNetworkReply*)),
+ SLOT(requestFinished(QNetworkReply*)));
#ifndef QT_NO_OPENSSL
- connect(this, SIGNAL(sslErrors(QNetworkReply*, const QList<QSslError>&)),
- SLOT(sslErrors(QNetworkReply*, const QList<QSslError>&)));
+ connect(this, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
+ SLOT(sslErrors(QNetworkReply*,QList<QSslError>)));
#endif
loadSettings();
@@ -79,6 +84,38 @@ NetworkAccessManager::NetworkAccessManager(QObject *parent)
setCache(diskCache);
}
+QNetworkReply* NetworkAccessManager::createRequest(Operation op, const QNetworkRequest & req, QIODevice * outgoingData)
+{
+ QNetworkRequest request = req; // copy so we can modify
+ // this is a temporary hack until we properly use the pipelining flags from QtWebkit
+ // pipeline everything! :)
+ request.setAttribute(QNetworkRequest::HttpPipeliningAllowedAttribute, true);
+ return QNetworkAccessManager::createRequest(op, request, outgoingData);
+}
+
+void NetworkAccessManager::requestFinished(QNetworkReply *reply)
+{
+ requestFinishedCount++;
+
+ if (reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool() == true)
+ requestFinishedFromCacheCount++;
+
+ if (reply->attribute(QNetworkRequest::HttpPipeliningWasUsedAttribute).toBool() == true)
+ requestFinishedPipelinedCount++;
+
+ if (reply->attribute(QNetworkRequest::ConnectionEncryptedAttribute).toBool() == true)
+ requestFinishedSecureCount++;
+
+ if (requestFinishedCount % 10)
+ return;
+
+ double pctCached = (double(requestFinishedFromCacheCount) * 100.0/ double(requestFinishedCount));
+ double pctPipelined = (double(requestFinishedPipelinedCount) * 100.0/ double(requestFinishedCount));
+ double pctSecure = (double(requestFinishedSecureCount) * 100.0/ double(requestFinishedCount));
+ qDebug("STATS [%lli requests total] [%3.2f%% from cache] [%3.2f%% pipelined] [%3.2f%% SSL/TLS]", requestFinishedCount, pctCached, pctPipelined, pctSecure);
+
+}
+
void NetworkAccessManager::loadSettings()
{
QSettings settings;
diff --git a/demos/browser/networkaccessmanager.h b/demos/browser/networkaccessmanager.h
index 381cb5060..7a09da955 100644
--- a/demos/browser/networkaccessmanager.h
+++ b/demos/browser/networkaccessmanager.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -43,6 +43,7 @@
#define NETWORKACCESSMANAGER_H
#include <QtNetwork/QNetworkAccessManager>
+#include <QtNetwork/QNetworkRequest>
class NetworkAccessManager : public QNetworkAccessManager
{
@@ -51,11 +52,18 @@ class NetworkAccessManager : public QNetworkAccessManager
public:
NetworkAccessManager(QObject *parent = 0);
+ virtual QNetworkReply* createRequest ( Operation op, const QNetworkRequest & req, QIODevice * outgoingData = 0 );
+
private:
QList<QString> sslTrustedHostList;
+ qint64 requestFinishedCount;
+ qint64 requestFinishedFromCacheCount;
+ qint64 requestFinishedPipelinedCount;
+ qint64 requestFinishedSecureCount;
public slots:
void loadSettings();
+ void requestFinished(QNetworkReply *reply);
private slots:
void authenticationRequired(QNetworkReply *reply, QAuthenticator *auth);
diff --git a/demos/browser/searchlineedit.cpp b/demos/browser/searchlineedit.cpp
index a9b924ef9..a5ceface0 100644
--- a/demos/browser/searchlineedit.cpp
+++ b/demos/browser/searchlineedit.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,9 @@
ClearButton::ClearButton(QWidget *parent)
: QAbstractButton(parent)
{
+#ifndef QT_NO_CURSOR
setCursor(Qt::ArrowCursor);
+#endif // QT_NO_CURSOR
setToolTip(tr("Clear"));
setVisible(false);
setFocusPolicy(Qt::NoFocus);
@@ -103,7 +105,9 @@ SearchButton::SearchButton(QWidget *parent)
m_menu(0)
{
setObjectName(QLatin1String("SearchButton"));
+#ifndef QT_NO_CURSOR
setCursor(Qt::ArrowCursor);
+#endif //QT_NO_CURSOR
setFocusPolicy(Qt::NoFocus);
}
@@ -165,8 +169,8 @@ void SearchButton::paintEvent(QPaintEvent *event)
SearchLineEdit::SearchLineEdit(QWidget *parent) : ExLineEdit(parent),
m_searchButton(new SearchButton(this))
{
- connect(lineEdit(), SIGNAL(textChanged(const QString &)),
- this, SIGNAL(textChanged(const QString &)));
+ connect(lineEdit(), SIGNAL(textChanged(QString)),
+ this, SIGNAL(textChanged(QString)));
setLeftWidget(m_searchButton);
m_inactiveText = tr("Search");
diff --git a/demos/browser/searchlineedit.h b/demos/browser/searchlineedit.h
index fcc7149ef..186300f44 100644
--- a/demos/browser/searchlineedit.h
+++ b/demos/browser/searchlineedit.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/settings.cpp b/demos/browser/settings.cpp
index 6c49e26fe..527f3d206 100644
--- a/demos/browser/settings.cpp
+++ b/demos/browser/settings.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/settings.h b/demos/browser/settings.h
index e08b068d7..caf06c800 100644
--- a/demos/browser/settings.h
+++ b/demos/browser/settings.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/squeezelabel.cpp b/demos/browser/squeezelabel.cpp
index 6876395f9..dcd6063f9 100644
--- a/demos/browser/squeezelabel.cpp
+++ b/demos/browser/squeezelabel.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/squeezelabel.h b/demos/browser/squeezelabel.h
index 57f09b7e6..fe31d8310 100644
--- a/demos/browser/squeezelabel.h
+++ b/demos/browser/squeezelabel.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/tabwidget.cpp b/demos/browser/tabwidget.cpp
index 853117882..3ace6a39c 100644
--- a/demos/browser/tabwidget.cpp
+++ b/demos/browser/tabwidget.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -64,8 +64,8 @@ TabBar::TabBar(QWidget *parent)
{
setContextMenuPolicy(Qt::CustomContextMenu);
setAcceptDrops(true);
- connect(this, SIGNAL(customContextMenuRequested(const QPoint &)),
- this, SLOT(contextMenuRequested(const QPoint &)));
+ connect(this, SIGNAL(customContextMenuRequested(QPoint)),
+ this, SLOT(contextMenuRequested(QPoint)));
QString alt = QLatin1String("Alt+%1");
for (int i = 1; i <= 10; ++i) {
@@ -221,7 +221,7 @@ TabWidget::TabWidget(QWidget *parent)
connect(m_tabBar, SIGNAL(closeOtherTabs(int)), this, SLOT(closeOtherTabs(int)));
connect(m_tabBar, SIGNAL(reloadTab(int)), this, SLOT(reloadTab(int)));
connect(m_tabBar, SIGNAL(reloadAllTabs()), this, SLOT(reloadAllTabs()));
- connect(m_tabBar, SIGNAL(tabMoved(int, int)), this, SLOT(moveTab(int, int)));
+ connect(m_tabBar, SIGNAL(tabMoved(int,int)), this, SLOT(moveTab(int,int)));
setTabBar(m_tabBar);
setDocumentMode(true);
@@ -257,8 +257,8 @@ TabWidget::TabWidget(QWidget *parent)
m_recentlyClosedTabsMenu = new QMenu(this);
connect(m_recentlyClosedTabsMenu, SIGNAL(aboutToShow()),
this, SLOT(aboutToShowRecentTabsMenu()));
- connect(m_recentlyClosedTabsMenu, SIGNAL(triggered(QAction *)),
- this, SLOT(aboutToShowRecentTriggeredAction(QAction *)));
+ connect(m_recentlyClosedTabsMenu, SIGNAL(triggered(QAction*)),
+ this, SLOT(aboutToShowRecentTriggeredAction(QAction*)));
m_recentlyClosedTabsAction = new QAction(tr("Recently Closed Tabs"), this);
m_recentlyClosedTabsAction->setMenu(m_recentlyClosedTabsMenu);
m_recentlyClosedTabsAction->setEnabled(false);
@@ -304,18 +304,18 @@ void TabWidget::currentChanged(int index)
WebView *oldWebView = this->webView(m_lineEdits->currentIndex());
if (oldWebView) {
- disconnect(oldWebView, SIGNAL(statusBarMessage(const QString&)),
- this, SIGNAL(showStatusBarMessage(const QString&)));
- disconnect(oldWebView->page(), SIGNAL(linkHovered(const QString&, const QString&, const QString&)),
- this, SIGNAL(linkHovered(const QString&)));
+ disconnect(oldWebView, SIGNAL(statusBarMessage(QString)),
+ this, SIGNAL(showStatusBarMessage(QString)));
+ disconnect(oldWebView->page(), SIGNAL(linkHovered(QString,QString,QString)),
+ this, SIGNAL(linkHovered(QString)));
disconnect(oldWebView, SIGNAL(loadProgress(int)),
this, SIGNAL(loadProgress(int)));
}
- connect(webView, SIGNAL(statusBarMessage(const QString&)),
- this, SIGNAL(showStatusBarMessage(const QString&)));
- connect(webView->page(), SIGNAL(linkHovered(const QString&, const QString&, const QString&)),
- this, SIGNAL(linkHovered(const QString&)));
+ connect(webView, SIGNAL(statusBarMessage(QString)),
+ this, SIGNAL(showStatusBarMessage(QString)));
+ connect(webView->page(), SIGNAL(linkHovered(QString,QString,QString)),
+ this, SIGNAL(linkHovered(QString)));
connect(webView, SIGNAL(loadProgress(int)),
this, SIGNAL(loadProgress(int)));
@@ -450,16 +450,16 @@ WebView *TabWidget::newTab(bool makeCurrent)
this, SLOT(webViewIconChanged()));
connect(webView, SIGNAL(iconChanged()),
this, SLOT(webViewIconChanged()));
- connect(webView, SIGNAL(titleChanged(const QString &)),
- this, SLOT(webViewTitleChanged(const QString &)));
- connect(webView, SIGNAL(urlChanged(const QUrl &)),
- this, SLOT(webViewUrlChanged(const QUrl &)));
+ connect(webView, SIGNAL(titleChanged(QString)),
+ this, SLOT(webViewTitleChanged(QString)));
+ connect(webView, SIGNAL(urlChanged(QUrl)),
+ this, SLOT(webViewUrlChanged(QUrl)));
connect(webView->page(), SIGNAL(windowCloseRequested()),
this, SLOT(windowCloseRequested()));
- connect(webView->page(), SIGNAL(geometryChangeRequested(const QRect &)),
- this, SIGNAL(geometryChangeRequested(const QRect &)));
- connect(webView->page(), SIGNAL(printRequested(QWebFrame *)),
- this, SIGNAL(printRequested(QWebFrame *)));
+ connect(webView->page(), SIGNAL(geometryChangeRequested(QRect)),
+ this, SIGNAL(geometryChangeRequested(QRect)));
+ connect(webView->page(), SIGNAL(printRequested(QWebFrame*)),
+ this, SIGNAL(printRequested(QWebFrame*)));
connect(webView->page(), SIGNAL(menuBarVisibilityChangeRequested(bool)),
this, SIGNAL(menuBarVisibilityChangeRequested(bool)));
connect(webView->page(), SIGNAL(statusBarVisibilityChangeRequested(bool)),
@@ -560,10 +560,13 @@ void TabWidget::closeTab(int index)
}
hasFocus = tab->hasFocus();
- m_recentlyClosedTabsAction->setEnabled(true);
- m_recentlyClosedTabs.prepend(tab->url());
- if (m_recentlyClosedTabs.size() >= TabWidget::m_recentlyClosedTabsSize)
- m_recentlyClosedTabs.removeLast();
+ QWebSettings *globalSettings = QWebSettings::globalSettings();
+ if (!globalSettings->testAttribute(QWebSettings::PrivateBrowsingEnabled)) {
+ m_recentlyClosedTabsAction->setEnabled(true);
+ m_recentlyClosedTabs.prepend(tab->url());
+ if (m_recentlyClosedTabs.size() >= TabWidget::m_recentlyClosedTabsSize)
+ m_recentlyClosedTabs.removeLast();
+ }
}
QWidget *lineEdit = m_lineEdits->widget(index);
m_lineEdits->removeWidget(lineEdit);
@@ -761,7 +764,7 @@ WebActionMapper::WebActionMapper(QAction *root, QWebPage::WebAction webAction, Q
if (!m_root)
return;
connect(m_root, SIGNAL(triggered()), this, SLOT(rootTriggered()));
- connect(root, SIGNAL(destroyed(QObject *)), this, SLOT(rootDestroyed()));
+ connect(root, SIGNAL(destroyed(QObject*)), this, SLOT(rootDestroyed()));
root->setEnabled(false);
}
@@ -810,7 +813,7 @@ void WebActionMapper::childChanged()
void WebActionMapper::updateCurrent(QWebPage *currentParent)
{
if (m_currentParent)
- disconnect(m_currentParent, SIGNAL(destroyed(QObject *)),
+ disconnect(m_currentParent, SIGNAL(destroyed(QObject*)),
this, SLOT(currentDestroyed()));
m_currentParent = currentParent;
@@ -824,7 +827,7 @@ void WebActionMapper::updateCurrent(QWebPage *currentParent)
QAction *source = m_currentParent->action(m_webAction);
m_root->setChecked(source->isChecked());
m_root->setEnabled(source->isEnabled());
- connect(m_currentParent, SIGNAL(destroyed(QObject *)),
+ connect(m_currentParent, SIGNAL(destroyed(QObject*)),
this, SLOT(currentDestroyed()));
}
diff --git a/demos/browser/tabwidget.h b/demos/browser/tabwidget.h
index d146d423b..aa8b825c1 100644
--- a/demos/browser/tabwidget.h
+++ b/demos/browser/tabwidget.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/toolbarsearch.cpp b/demos/browser/toolbarsearch.cpp
index 13a1ae8fe..d34641818 100644
--- a/demos/browser/toolbarsearch.cpp
+++ b/demos/browser/toolbarsearch.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/toolbarsearch.h b/demos/browser/toolbarsearch.h
index 44256c406..06bca0aeb 100644
--- a/demos/browser/toolbarsearch.h
+++ b/demos/browser/toolbarsearch.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/urllineedit.cpp b/demos/browser/urllineedit.cpp
index 9f75b9a3d..251b9948e 100644
--- a/demos/browser/urllineedit.cpp
+++ b/demos/browser/urllineedit.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -87,8 +87,8 @@ ExLineEdit::ExLineEdit(QWidget *parent)
m_clearButton = new ClearButton(this);
connect(m_clearButton, SIGNAL(clicked()),
m_lineEdit, SLOT(clear()));
- connect(m_lineEdit, SIGNAL(textChanged(const QString&)),
- m_clearButton, SLOT(textChanged(const QString&)));
+ connect(m_lineEdit, SIGNAL(textChanged(QString)),
+ m_clearButton, SLOT(textChanged(QString)));
}
void ExLineEdit::setLeftWidget(QWidget *widget)
@@ -270,8 +270,8 @@ void UrlLineEdit::setWebView(WebView *webView)
Q_ASSERT(!m_webView);
m_webView = webView;
m_iconLabel->m_webView = webView;
- connect(webView, SIGNAL(urlChanged(const QUrl &)),
- this, SLOT(webViewUrlChanged(const QUrl &)));
+ connect(webView, SIGNAL(urlChanged(QUrl)),
+ this, SLOT(webViewUrlChanged(QUrl)));
connect(webView, SIGNAL(loadFinished(bool)),
this, SLOT(webViewIconChanged()));
connect(webView, SIGNAL(iconChanged()),
diff --git a/demos/browser/urllineedit.h b/demos/browser/urllineedit.h
index b3ad545da..a1a3ef2a3 100644
--- a/demos/browser/urllineedit.h
+++ b/demos/browser/urllineedit.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/webview.cpp b/demos/browser/webview.cpp
index 004e99592..1fcced40c 100644
--- a/demos/browser/webview.cpp
+++ b/demos/browser/webview.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,9 @@
#include <QtWebKit/QWebHitTestResult>
+#ifndef QT_NO_UITOOLS
#include <QtUiTools/QUiLoader>
+#endif //QT_NO_UITOOLS
#include <QtCore/QDebug>
#include <QtCore/QBuffer>
@@ -66,8 +68,8 @@ WebPage::WebPage(QObject *parent)
, m_openInNewTab(false)
{
setNetworkAccessManager(BrowserApplication::networkAccessManager());
- connect(this, SIGNAL(unsupportedContent(QNetworkReply *)),
- this, SLOT(handleUnsupportedContent(QNetworkReply *)));
+ connect(this, SIGNAL(unsupportedContent(QNetworkReply*)),
+ this, SLOT(handleUnsupportedContent(QNetworkReply*)));
}
BrowserMainWindow *WebPage::mainWindow()
@@ -149,6 +151,8 @@ void WebPage::handleUnsupportedContent(QNetworkReply *reply)
QFile file(QLatin1String(":/notfound.html"));
bool isOpened = file.open(QIODevice::ReadOnly);
Q_ASSERT(isOpened);
+ Q_UNUSED(isOpened)
+
QString title = tr("Error loading page: %1").arg(reply->url().toString());
QString html = QString(QLatin1String(file.readAll()))
.arg(title)
@@ -188,16 +192,16 @@ WebView::WebView(QWidget* parent)
, m_page(new WebPage(this))
{
setPage(m_page);
- connect(page(), SIGNAL(statusBarMessage(const QString&)),
- SLOT(setStatusBarText(const QString&)));
+ connect(page(), SIGNAL(statusBarMessage(QString)),
+ SLOT(setStatusBarText(QString)));
connect(this, SIGNAL(loadProgress(int)),
this, SLOT(setProgress(int)));
connect(this, SIGNAL(loadFinished(bool)),
this, SLOT(loadFinished()));
- connect(page(), SIGNAL(loadingUrl(const QUrl&)),
- this, SIGNAL(urlChanged(const QUrl &)));
- connect(page(), SIGNAL(downloadRequested(const QNetworkRequest &)),
- this, SLOT(downloadRequested(const QNetworkRequest &)));
+ connect(page(), SIGNAL(loadingUrl(QUrl)),
+ this, SIGNAL(urlChanged(QUrl)));
+ connect(page(), SIGNAL(downloadRequested(QNetworkRequest)),
+ this, SLOT(downloadRequested(QNetworkRequest)));
page()->setForwardUnsupportedContent(true);
}
diff --git a/demos/browser/webview.h b/demos/browser/webview.h
index ce8b74d72..c3b91860e 100644
--- a/demos/browser/webview.h
+++ b/demos/browser/webview.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/browser/xbel.cpp b/demos/browser/xbel.cpp
index ed6286872..da0194440 100644
--- a/demos/browser/xbel.cpp
+++ b/demos/browser/xbel.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -133,16 +133,13 @@ BookmarkNode *XbelReader::read(QIODevice *device)
{
BookmarkNode *root = new BookmarkNode(BookmarkNode::Root);
setDevice(device);
- while (!atEnd()) {
- readNext();
- if (isStartElement()) {
- QString version = attributes().value(QLatin1String("version")).toString();
- if (name() == QLatin1String("xbel")
- && (version.isEmpty() || version == QLatin1String("1.0"))) {
- readXBEL(root);
- } else {
- raiseError(QObject::tr("The file is not an XBEL version 1.0 file."));
- }
+ if (readNextStartElement()) {
+ QString version = attributes().value(QLatin1String("version")).toString();
+ if (name() == QLatin1String("xbel")
+ && (version.isEmpty() || version == QLatin1String("1.0"))) {
+ readXBEL(root);
+ } else {
+ raiseError(QObject::tr("The file is not an XBEL version 1.0 file."));
}
}
return root;
@@ -152,21 +149,15 @@ void XbelReader::readXBEL(BookmarkNode *parent)
{
Q_ASSERT(isStartElement() && name() == QLatin1String("xbel"));
- while (!atEnd()) {
- readNext();
- if (isEndElement())
- break;
-
- if (isStartElement()) {
- if (name() == QLatin1String("folder"))
- readFolder(parent);
- else if (name() == QLatin1String("bookmark"))
- readBookmarkNode(parent);
- else if (name() == QLatin1String("separator"))
- readSeparator(parent);
- else
- skipUnknownElement();
- }
+ while (readNextStartElement()) {
+ if (name() == QLatin1String("folder"))
+ readFolder(parent);
+ else if (name() == QLatin1String("bookmark"))
+ readBookmarkNode(parent);
+ else if (name() == QLatin1String("separator"))
+ readSeparator(parent);
+ else
+ skipCurrentElement();
}
}
@@ -177,26 +168,19 @@ void XbelReader::readFolder(BookmarkNode *parent)
BookmarkNode *folder = new BookmarkNode(BookmarkNode::Folder, parent);
folder->expanded = (attributes().value(QLatin1String("folded")) == QLatin1String("no"));
- while (!atEnd()) {
- readNext();
-
- if (isEndElement())
- break;
-
- if (isStartElement()) {
- if (name() == QLatin1String("title"))
- readTitle(folder);
- else if (name() == QLatin1String("desc"))
- readDescription(folder);
- else if (name() == QLatin1String("folder"))
- readFolder(folder);
- else if (name() == QLatin1String("bookmark"))
- readBookmarkNode(folder);
- else if (name() == QLatin1String("separator"))
- readSeparator(folder);
- else
- skipUnknownElement();
- }
+ while (readNextStartElement()) {
+ if (name() == QLatin1String("title"))
+ readTitle(folder);
+ else if (name() == QLatin1String("desc"))
+ readDescription(folder);
+ else if (name() == QLatin1String("folder"))
+ readFolder(folder);
+ else if (name() == QLatin1String("bookmark"))
+ readBookmarkNode(folder);
+ else if (name() == QLatin1String("separator"))
+ readSeparator(folder);
+ else
+ skipCurrentElement();
}
}
@@ -224,39 +208,18 @@ void XbelReader::readBookmarkNode(BookmarkNode *parent)
Q_ASSERT(isStartElement() && name() == QLatin1String("bookmark"));
BookmarkNode *bookmark = new BookmarkNode(BookmarkNode::Bookmark, parent);
bookmark->url = attributes().value(QLatin1String("href")).toString();
- while (!atEnd()) {
- readNext();
- if (isEndElement())
- break;
-
- if (isStartElement()) {
- if (name() == QLatin1String("title"))
- readTitle(bookmark);
- else if (name() == QLatin1String("desc"))
- readDescription(bookmark);
- else
- skipUnknownElement();
- }
+ while (readNextStartElement()) {
+ if (name() == QLatin1String("title"))
+ readTitle(bookmark);
+ else if (name() == QLatin1String("desc"))
+ readDescription(bookmark);
+ else
+ skipCurrentElement();
}
if (bookmark->title.isEmpty())
bookmark->title = QObject::tr("Unknown title");
}
-void XbelReader::skipUnknownElement()
-{
- Q_ASSERT(isStartElement());
-
- while (!atEnd()) {
- readNext();
-
- if (isEndElement())
- break;
-
- if (isStartElement())
- skipUnknownElement();
- }
-}
-
XbelWriter::XbelWriter()
{
diff --git a/demos/browser/xbel.h b/demos/browser/xbel.h
index 2bdffe1e7..8db8790c7 100644
--- a/demos/browser/xbel.h
+++ b/demos/browser/xbel.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -87,7 +87,6 @@ public:
BookmarkNode *read(QIODevice *device);
private:
- void skipUnknownElement();
void readXBEL(BookmarkNode *parent);
void readTitle(BookmarkNode *parent);
void readDescription(BookmarkNode *parent);
diff --git a/demos/chip/chip.cpp b/demos/chip/chip.cpp
index f21e66b1a..8f7b73da4 100644
--- a/demos/chip/chip.cpp
+++ b/demos/chip/chip.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/chip/chip.h b/demos/chip/chip.h
index dd987e388..104d58b83 100644
--- a/demos/chip/chip.h
+++ b/demos/chip/chip.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/chip/chip.pro b/demos/chip/chip.pro
index 53fa23b98..4339f82a9 100644
--- a/demos/chip/chip.pro
+++ b/demos/chip/chip.pro
@@ -17,3 +17,4 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES *.png *.pro *.html *.doc images
sources.path = $$[QT_INSTALL_DEMOS]/chip
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/demos/chip/main.cpp b/demos/chip/main.cpp
index c82a085c4..981bc5943 100644
--- a/demos/chip/main.cpp
+++ b/demos/chip/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/chip/mainwindow.cpp b/demos/chip/mainwindow.cpp
index 31c8f9b06..8b0f90550 100644
--- a/demos/chip/mainwindow.cpp
+++ b/demos/chip/mainwindow.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/chip/mainwindow.h b/demos/chip/mainwindow.h
index 5069d1cdd..0c74effa7 100644
--- a/demos/chip/mainwindow.h
+++ b/demos/chip/mainwindow.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/chip/view.cpp b/demos/chip/view.cpp
index a53dc2d90..3bb8dbfe5 100644
--- a/demos/chip/view.cpp
+++ b/demos/chip/view.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/chip/view.h b/demos/chip/view.h
index 64c635482..14c3f374c 100644
--- a/demos/chip/view.h
+++ b/demos/chip/view.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/composition/composition.cpp b/demos/composition/composition.cpp
index d4cc164eb..1025d3c48 100644
--- a/demos/composition/composition.cpp
+++ b/demos/composition/composition.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -377,7 +377,9 @@ void CompositionRenderer::paint(QPainter *painter)
p.setCompositionMode(QPainter::CompositionMode_Source);
p.fillRect(QRect(0, 0, m_pbuffer->width(), m_pbuffer->height()), Qt::transparent);
- p.save();
+ p.save(); // Needed when using the GL1 engine
+ p.beginNativePainting(); // Needed when using the GL2 engine
+
glBindTexture(GL_TEXTURE_2D, m_base_tex);
glEnable(GL_TEXTURE_2D);
glColor4f(1.,1.,1.,1.);
@@ -399,16 +401,21 @@ void CompositionRenderer::paint(QPainter *painter)
glEnd();
glDisable(GL_TEXTURE_2D);
- p.restore();
+
+ p.endNativePainting(); // Needed when using the GL2 engine
+ p.restore(); // Needed when using the GL1 engine
drawSource(p);
p.end();
m_pbuffer->updateDynamicTexture(m_compositing_tex);
}
- glWidget()->makeCurrent();
+ painter->beginNativePainting(); // Needed when using the GL2 engine
+ glWidget()->makeCurrent(); // Needed when using the GL1 engine
glBindTexture(GL_TEXTURE_2D, m_compositing_tex);
glEnable(GL_TEXTURE_2D);
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
glColor4f(1.,1.,1.,1.);
glBegin(GL_QUADS);
{
@@ -426,6 +433,7 @@ void CompositionRenderer::paint(QPainter *painter)
}
glEnd();
glDisable(GL_TEXTURE_2D);
+ painter->endNativePainting(); // Needed when using the GL2 engine
} else
#endif
{
@@ -449,7 +457,7 @@ void CompositionRenderer::paint(QPainter *painter)
#ifdef Q_WS_QWS
m_buffer = m_base_buffer;
#else
- memcpy(m_buffer.bits(), m_base_buffer.bits(), m_buffer.numBytes());
+ memcpy(m_buffer.bits(), m_base_buffer.bits(), m_buffer.byteCount());
#endif
{
diff --git a/demos/composition/composition.h b/demos/composition/composition.h
index 3889d3254..c40eb2398 100644
--- a/demos/composition/composition.h
+++ b/demos/composition/composition.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/composition/composition.pro b/demos/composition/composition.pro
index d5c4a601b..c820a8bc3 100644
--- a/demos/composition/composition.pro
+++ b/demos/composition/composition.pro
@@ -17,6 +17,8 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES *.png *.jpg *.pro *.html
sources.path = $$[QT_INSTALL_DEMOS]/composition
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
win32-msvc* {
QMAKE_CXXFLAGS += /Zm500
QMAKE_CFLAGS += /Zm500
diff --git a/demos/composition/main.cpp b/demos/composition/main.cpp
index dea6a115f..7a0f46bf9 100644
--- a/demos/composition/main.cpp
+++ b/demos/composition/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,11 +42,17 @@
#include "composition.h"
#include <QApplication>
+#ifdef QT_OPENGL_SUPPORT
+#include <QtOpenGL>
+#endif
int main(int argc, char **argv)
{
// Q_INIT_RESOURCE(deform);
+#ifdef QT_OPENGL_SUPPORT
+ QGL::setPreferredPaintEngine(QPaintEngine::OpenGL);
+#endif
QApplication app(argc, argv);
CompositionWidget compWidget(0);
diff --git a/demos/deform/deform.pro b/demos/deform/deform.pro
index db8484d4f..421432d21 100644
--- a/demos/deform/deform.pro
+++ b/demos/deform/deform.pro
@@ -17,3 +17,8 @@ target.path = $$[QT_INSTALL_DEMOS]/deform
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.html
sources.path = $$[QT_INSTALL_DEMOS]/deform
INSTALLS += target sources
+
+symbian {
+ TARGET.UID3 = 0xA000A63D
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+}
diff --git a/demos/deform/main.cpp b/demos/deform/main.cpp
index 50e284af0..6110a7654 100644
--- a/demos/deform/main.cpp
+++ b/demos/deform/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -68,5 +68,8 @@ int main(int argc, char **argv)
else
deformWidget.show();
+#ifdef QT_KEYPAD_NAVIGATION
+ QApplication::setNavigationMode(Qt::NavigationModeCursorAuto);
+#endif
return app.exec();
}
diff --git a/demos/deform/pathdeform.cpp b/demos/deform/pathdeform.cpp
index 165af0571..f7f6fa6f4 100644
--- a/demos/deform/pathdeform.cpp
+++ b/demos/deform/pathdeform.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@
#include <QDesktopWidget>
#include <qmath.h>
-
PathDeformControls::PathDeformControls(QWidget *parent, PathDeformRenderer* renderer, bool smallScreen)
: QWidget(parent)
{
@@ -241,6 +240,7 @@ void PathDeformControls::layoutForSmallScreen()
QRect screen_size = QApplication::desktop()->screenGeometry();
radiusSlider->setValue(qMin(screen_size.width(), screen_size.height())/5);
+
m_renderer->setText(tr("Qt"));
}
diff --git a/demos/deform/pathdeform.h b/demos/deform/pathdeform.h
index b18f838fa..7e23ef19e 100644
--- a/demos/deform/pathdeform.h
+++ b/demos/deform/pathdeform.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/demos.pro b/demos/demos.pro
index eda04dc0b..a943bfd23 100644
--- a/demos/demos.pro
+++ b/demos/demos.pro
@@ -1,27 +1,32 @@
TEMPLATE = subdirs
SUBDIRS = \
- demos_shared \
- demos_deform \
- demos_gradients \
- demos_pathstroke \
- demos_affine \
- demos_composition \
- demos_books \
- demos_interview \
- demos_mainwindow \
- demos_spreadsheet \
- demos_textedit \
- demos_chip \
- demos_embeddeddialogs \
- demos_undo \
- demos_sub-attaq
+ demos_shared \
+ demos_deform \
+ demos_gradients \
+ demos_pathstroke \
+ demos_affine \
+ demos_composition \
+ demos_books \
+ demos_interview \
+ demos_mainwindow \
+ demos_spreadsheet \
+ demos_textedit \
+ demos_chip \
+ demos_embeddeddialogs \
+ demos_undo \
+ demos_sub-attaq
+
+symbian: SUBDIRS = \
+ demos_shared \
+ demos_deform \
+ demos_pathstroke
contains(QT_CONFIG, opengl):!contains(QT_CONFIG, opengles1):!contains(QT_CONFIG, opengles1cl):!contains(QT_CONFIG, opengles2):{
SUBDIRS += demos_boxes
}
mac*: SUBDIRS += demos_macmainwindow
-wince*|embedded: SUBDIRS += embedded
+wince*|symbian|embedded|x11: SUBDIRS += embedded
!contains(QT_EDITION, Console):!cross_compile:!embedded:!wince*:SUBDIRS += demos_arthurplugin
@@ -32,13 +37,15 @@ wince*: SUBDIRS += demos_sqlbrowser
}
}
contains(QT_CONFIG, phonon):!static:SUBDIRS += demos_mediaplayer
-contains(QT_CONFIG, webkit):contains(QT_CONFIG, svg):SUBDIRS += demos_browser
+contains(QT_CONFIG, webkit):contains(QT_CONFIG, svg):!symbian:SUBDIRS += demos_browser
# install
sources.files = README *.pro
sources.path = $$[QT_INSTALL_DEMOS]
INSTALLS += sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
demos_chip.subdir = chip
demos_embeddeddialogs.subdir = embeddeddialogs
demos_shared.subdir = shared
@@ -57,7 +64,7 @@ demos_arthurplugin.subdir = arthurplugin
demos_sqlbrowser.subdir = sqlbrowser
demos_undo.subdir = undo
demos_qtdemo.subdir = qtdemo
-demos_mediaplayer.subdir = mediaplayer
+demos_mediaplayer.subdir = qmediaplayer
demos_browser.subdir = browser
diff --git a/src/3rdparty/webkit/WebCore/storage/StorageArea.cpp b/demos/embedded/anomaly/README.TXT
index e69de29bb..e69de29bb 100644
--- a/src/3rdparty/webkit/WebCore/storage/StorageArea.cpp
+++ b/demos/embedded/anomaly/README.TXT
diff --git a/demos/embedded/anomaly/anomaly.pro b/demos/embedded/anomaly/anomaly.pro
new file mode 100644
index 000000000..2871ba7c9
--- /dev/null
+++ b/demos/embedded/anomaly/anomaly.pro
@@ -0,0 +1,36 @@
+QT += network \
+ webkit
+HEADERS += src/BrowserWindow.h \
+ src/BrowserView.h \
+ src/TitleBar.h \
+ src/HomeView.h \
+ src/AddressBar.h \
+ src/BookmarksView.h \
+ src/flickcharm.h \
+ src/ZoomStrip.h \
+ src/ControlStrip.h
+SOURCES += src/Main.cpp \
+ src/BrowserWindow.cpp \
+ src/BrowserView.cpp \
+ src/TitleBar.cpp \
+ src/HomeView.cpp \
+ src/AddressBar.cpp \
+ src/BookmarksView.cpp \
+ src/flickcharm.cpp \
+ src/ZoomStrip.cpp \
+ src/ControlStrip.cpp
+RESOURCES += src/anomaly.qrc
+
+symbian {
+ TARGET.UID3 = 0xA000CF71
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ HEADERS += $$QT_SOURCE_TREE/examples/network/qftp/sym_iap_util.h
+ LIBS += -lesock -linsock -lconnmon
+ TARGET.CAPABILITY = NetworkServices
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
+}
+
+target.path = $$[QT_INSTALL_DEMOS]/embedded/anomaly
+sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro src/images
+sources.path = $$[QT_INSTALL_DEMOS]/embedded/anomaly
+INSTALLS += target sources
diff --git a/demos/embedded/anomaly/src/AddressBar.cpp b/demos/embedded/anomaly/src/AddressBar.cpp
new file mode 100644
index 000000000..9ac9cdb41
--- /dev/null
+++ b/demos/embedded/anomaly/src/AddressBar.cpp
@@ -0,0 +1,109 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demos 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 "AddressBar.h"
+
+#include <QtCore>
+#include <QtGui>
+
+class LineEdit: public QLineEdit
+{
+public:
+ LineEdit(QWidget *parent = 0): QLineEdit(parent) {}
+
+ void paintEvent(QPaintEvent *event) {
+ QLineEdit::paintEvent(event);
+ if (text().isEmpty()) {
+ QPainter p(this);
+ int flags = Qt::AlignLeft | Qt::AlignVCenter;
+ p.setPen(palette().color(QPalette::Disabled, QPalette::Text));
+ p.drawText(rect().adjusted(10, 0, 0, 0), flags, "Enter address or search terms");
+ p.end();
+ }
+ }
+};
+
+AddressBar::AddressBar(QWidget *parent)
+ : QWidget(parent)
+{
+ m_lineEdit = new LineEdit(parent);
+ connect(m_lineEdit, SIGNAL(returnPressed()), SLOT(processAddress()));
+ m_toolButton = new QToolButton(parent);
+ m_toolButton->setText("Go");
+ connect(m_toolButton, SIGNAL(clicked()), SLOT(processAddress()));
+}
+
+QSize AddressBar::sizeHint() const
+{
+ return m_lineEdit->sizeHint();
+}
+
+void AddressBar::processAddress()
+{
+ if (!m_lineEdit->text().isEmpty())
+ emit addressEntered(m_lineEdit->text());
+}
+
+void AddressBar::resizeEvent(QResizeEvent *event)
+{
+ int x, y, w, h;
+
+ m_toolButton->adjustSize();
+ x = width() - m_toolButton->width();
+ y = 0;
+ w = m_toolButton->width();
+ h = height() - 1;
+ m_toolButton->setGeometry(x, y, w, h);
+ m_toolButton->show();
+
+ x = 0;
+ y = 0;
+ w = width() - m_toolButton->width();
+ h = height() - 1;
+ m_lineEdit->setGeometry(x, y, w, h);
+ m_lineEdit->show();
+}
+
+void AddressBar::focusInEvent(QFocusEvent *event)
+{
+ m_lineEdit->setFocus();
+ QWidget::focusInEvent(event);
+}
diff --git a/demos/embedded/anomaly/src/AddressBar.h b/demos/embedded/anomaly/src/AddressBar.h
new file mode 100644
index 000000000..d5cec27bf
--- /dev/null
+++ b/demos/embedded/anomaly/src/AddressBar.h
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demos of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef ADDRESSBAR_H
+#define ADDRESSBAR_H
+
+#include <QWidget>
+
+class QLineEdit;
+class QToolButton;
+
+class AddressBar : public QWidget
+{
+ Q_OBJECT
+
+public:
+ AddressBar(QWidget *parent = 0);
+ QSize sizeHint() const;
+
+protected:
+ void resizeEvent(QResizeEvent *event);
+ void focusInEvent(QFocusEvent *event);
+
+signals:
+ void addressEntered(const QString &address);
+
+private slots:
+ void processAddress();
+
+private:
+ QLineEdit *m_lineEdit;
+ QToolButton *m_toolButton;
+};
+
+#endif // ADDRESSBAR_H
diff --git a/demos/embedded/anomaly/src/BookmarksView.cpp b/demos/embedded/anomaly/src/BookmarksView.cpp
new file mode 100644
index 000000000..c6db97046
--- /dev/null
+++ b/demos/embedded/anomaly/src/BookmarksView.cpp
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demos 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 "BookmarksView.h"
+
+#include <QtGui>
+
+BookmarksView::BookmarksView(QWidget *parent)
+ : QWidget(parent)
+{
+ QListWidget *m_iconView = new QListWidget(this);
+ connect(m_iconView, SIGNAL(itemActivated(QListWidgetItem*)), SLOT(activate(QListWidgetItem*)));
+
+ QVBoxLayout *layout = new QVBoxLayout(this);
+ setLayout(layout);
+ layout->addWidget(m_iconView);
+
+ m_iconView->addItem("www.google.com");
+ m_iconView->addItem("qt.nokia.com/doc/4.5");
+ m_iconView->addItem("news.bbc.co.uk/text_only.stm");
+ m_iconView->addItem("mobile.wikipedia.org");
+ m_iconView->addItem("qt.nokia.com");
+ m_iconView->addItem("en.wikipedia.org");
+
+ setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+}
+
+void BookmarksView::activate(QListWidgetItem *item)
+{
+ QUrl url = item->text().prepend("http://");
+ emit urlSelected(url);
+}
diff --git a/demos/embedded/anomaly/src/BookmarksView.h b/demos/embedded/anomaly/src/BookmarksView.h
new file mode 100644
index 000000000..c54000ec8
--- /dev/null
+++ b/demos/embedded/anomaly/src/BookmarksView.h
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demos of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef BOOKMARKSVIEW_H
+#define BOOKMARKSVIEW_H
+
+#include <QWidget>
+
+class QListWidgetItem;
+class QUrl;
+
+class BookmarksView : public QWidget
+{
+ Q_OBJECT
+
+public:
+ BookmarksView(QWidget *parent = 0);
+
+signals:
+ void urlSelected(const QUrl &url);
+
+private slots:
+ void activate(QListWidgetItem *item);
+};
+
+#endif // BOOKMARKSVIEW_H
diff --git a/demos/embedded/anomaly/src/BrowserView.cpp b/demos/embedded/anomaly/src/BrowserView.cpp
new file mode 100644
index 000000000..de6ac1b2e
--- /dev/null
+++ b/demos/embedded/anomaly/src/BrowserView.cpp
@@ -0,0 +1,185 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demos 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 "BrowserView.h"
+
+#include <QtGui>
+#include <QtNetwork>
+#include <QtWebKit>
+
+#include "ControlStrip.h"
+#include "TitleBar.h"
+#include "flickcharm.h"
+#include "ZoomStrip.h"
+
+#if defined (Q_OS_SYMBIAN)
+#include "sym_iap_util.h"
+#endif
+
+BrowserView::BrowserView(QWidget *parent)
+ : QWidget(parent)
+ , m_titleBar(0)
+ , m_webView(0)
+ , m_progress(0)
+ , m_currentZoom(100)
+{
+ m_titleBar = new TitleBar(this);
+ m_webView = new QWebView(this);
+ m_zoomStrip = new ZoomStrip(this);
+ m_controlStrip = new ControlStrip(this);
+
+ m_zoomLevels << 30 << 50 << 67 << 80 << 90;
+ m_zoomLevels << 100;
+ m_zoomLevels << 110 << 120 << 133 << 150 << 170 << 200 << 240 << 300;
+
+ QTimer::singleShot(0, this, SLOT(initialize()));
+}
+
+void BrowserView::initialize()
+{
+ connect(m_zoomStrip, SIGNAL(zoomInClicked()), SLOT(zoomIn()));
+ connect(m_zoomStrip, SIGNAL(zoomOutClicked()), SLOT(zoomOut()));
+
+ connect(m_controlStrip, SIGNAL(menuClicked()), SIGNAL(menuButtonClicked()));
+ connect(m_controlStrip, SIGNAL(backClicked()), m_webView, SLOT(back()));
+ connect(m_controlStrip, SIGNAL(forwardClicked()), m_webView, SLOT(forward()));
+
+ QPalette pal = m_webView->palette();
+ pal.setBrush(QPalette::Base, Qt::white);
+ m_webView->setPalette(pal);
+
+ FlickCharm *flickCharm = new FlickCharm(this);
+ flickCharm->activateOn(m_webView);
+
+ m_webView->setZoomFactor(static_cast<qreal>(m_currentZoom)/100.0);
+ connect(m_webView, SIGNAL(loadStarted()), SLOT(start()));
+ connect(m_webView, SIGNAL(loadProgress(int)), SLOT(setProgress(int)));
+ connect(m_webView, SIGNAL(loadFinished(bool)), SLOT(finish(bool)));
+ connect(m_webView, SIGNAL(urlChanged(QUrl)), SLOT(updateTitleBar()));
+
+ m_webView->setHtml("Will try to load page soon!");
+ m_webView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ m_webView->setFocus();
+#ifdef Q_OS_SYMBIAN
+ QTimer::singleShot(0, this, SLOT(setDefaultIap()));
+#endif
+}
+
+void BrowserView::start()
+{
+ m_progress = 0;
+ updateTitleBar();
+ //m_titleBar->setText(m_webView->url().toString());
+}
+
+void BrowserView::setProgress(int percent)
+{
+ m_progress = percent;
+ updateTitleBar();
+ //m_titleBar->setText(QString("Loading %1%").arg(percent));
+}
+
+void BrowserView::updateTitleBar()
+{
+ QUrl url = m_webView->url();
+ m_titleBar->setHost(url.host());
+ m_titleBar->setTitle(m_webView->title());
+ m_titleBar->setProgress(m_progress);
+}
+
+void BrowserView::finish(bool ok)
+{
+ m_progress = 0;
+ updateTitleBar();
+
+ // TODO: handle error
+ if (!ok) {
+ //m_titleBar->setText("Loading failed.");
+ }
+}
+
+void BrowserView::zoomIn()
+{
+ int i = m_zoomLevels.indexOf(m_currentZoom);
+ Q_ASSERT(i >= 0);
+ if (i < m_zoomLevels.count() - 1)
+ m_currentZoom = m_zoomLevels[i + 1];
+
+ m_webView->setZoomFactor(static_cast<qreal>(m_currentZoom)/100.0);
+}
+
+void BrowserView::zoomOut()
+{
+ int i = m_zoomLevels.indexOf(m_currentZoom);
+ Q_ASSERT(i >= 0);
+ if (i > 0)
+ m_currentZoom = m_zoomLevels[i - 1];
+
+ m_webView->setZoomFactor(static_cast<qreal>(m_currentZoom)/100.0);
+}
+
+void BrowserView::resizeEvent(QResizeEvent *event)
+{
+ QWidget::resizeEvent(event);
+
+ int h1 = m_titleBar->sizeHint().height();
+ int h2 = m_controlStrip->sizeHint().height();
+
+ m_titleBar->setGeometry(0, 0, width(), h1);
+ m_controlStrip->setGeometry(0, height() - h2, width(), h2);
+ m_webView->setGeometry(0, h1, width(), height() - h1);
+
+ int zw = m_zoomStrip->sizeHint().width();
+ int zh = m_zoomStrip->sizeHint().height();
+ m_zoomStrip->move(width() - zw, (height() - zh) / 2);
+}
+#ifdef Q_OS_SYMBIAN
+void BrowserView::setDefaultIap()
+{
+ qt_SetDefaultIap();
+ m_webView->load(QUrl("http://news.bbc.co.uk/text_only.stm"));
+}
+#endif
+
+void BrowserView::navigate(const QUrl &url)
+{
+ m_webView->load(url);
+}
diff --git a/demos/embedded/anomaly/src/BrowserView.h b/demos/embedded/anomaly/src/BrowserView.h
new file mode 100644
index 000000000..4ccac5f63
--- /dev/null
+++ b/demos/embedded/anomaly/src/BrowserView.h
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demos of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef BROWSERVIEW_H
+#define BROWSERVIEW_H
+
+#include <QWidget>
+#include <QVector>
+
+class QUrl;
+class QWebView;
+class TitleBar;
+class ControlStrip;
+class ZoomStrip;
+
+class BrowserView : public QWidget
+{
+ Q_OBJECT
+
+public:
+ BrowserView(QWidget *parent = 0);
+
+public slots:
+ void navigate(const QUrl &url);
+ void zoomIn();
+ void zoomOut();
+#ifdef Q_OS_SYMBIAN
+ void setDefaultIap();
+#endif
+
+private slots:
+ void initialize();
+ void start();
+ void setProgress(int percent);
+ void finish(bool);
+ void updateTitleBar();
+
+signals:
+ void menuButtonClicked();
+
+protected:
+ void resizeEvent(QResizeEvent *event);
+
+private:
+ TitleBar *m_titleBar;
+ QWebView *m_webView;
+ ZoomStrip *m_zoomStrip;
+ ControlStrip *m_controlStrip;
+ int m_progress;
+ int m_currentZoom;
+ QVector<int> m_zoomLevels;
+};
+
+#endif // BROWSERVIEW_H
diff --git a/demos/embedded/anomaly/src/BrowserWindow.cpp b/demos/embedded/anomaly/src/BrowserWindow.cpp
new file mode 100644
index 000000000..1036735e5
--- /dev/null
+++ b/demos/embedded/anomaly/src/BrowserWindow.cpp
@@ -0,0 +1,187 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demos 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 "BrowserWindow.h"
+
+#include <QtCore>
+#include <QtGui>
+
+#include "BrowserView.h"
+#include "HomeView.h"
+
+BrowserWindow::BrowserWindow()
+ : QWidget()
+ , m_homeView(0)
+ , m_browserView(0)
+{
+ m_timeLine = new QTimeLine(300, this);
+ m_timeLine->setCurveShape(QTimeLine::EaseInOutCurve);
+ QTimer::singleShot(0, this, SLOT(initialize()));
+}
+
+void BrowserWindow::initialize()
+{
+ m_homeView = new HomeView(this);
+ m_browserView = new BrowserView(this);
+
+ m_homeView->hide();
+ m_homeView->resize(size());
+ m_homeView->move(0, 0);
+
+ m_browserView->hide();
+ m_browserView->resize(size());
+ m_browserView->move(0, 0);
+
+ connect(m_homeView, SIGNAL(addressEntered(QString)), SLOT(gotoAddress(QString)));
+ connect(m_homeView, SIGNAL(urlActivated(QUrl)), SLOT(navigate(QUrl)));
+
+ connect(m_browserView, SIGNAL(menuButtonClicked()), SLOT(showHomeView()));
+
+ m_homeView->setVisible(false);
+ m_browserView->setVisible(false);
+ slide(0);
+
+ connect(m_timeLine, SIGNAL(frameChanged(int)), SLOT(slide(int)));
+}
+
+
+// from Demo Browser
+QUrl guessUrlFromString(const QString &string)
+{
+ QString urlStr = string.trimmed();
+ QRegExp test(QLatin1String("^[a-zA-Z]+\\:.*"));
+
+ // Check if it looks like a qualified URL. Try parsing it and see.
+ bool hasSchema = test.exactMatch(urlStr);
+ if (hasSchema) {
+ QUrl url = QUrl::fromEncoded(urlStr.toUtf8(), QUrl::TolerantMode);
+ if (url.isValid())
+ return url;
+ }
+
+ // Might be a file.
+ if (QFile::exists(urlStr)) {
+ QFileInfo info(urlStr);
+ return QUrl::fromLocalFile(info.absoluteFilePath());
+ }
+
+ // Might be a shorturl - try to detect the schema.
+ if (!hasSchema) {
+ int dotIndex = urlStr.indexOf(QLatin1Char('.'));
+ if (dotIndex != -1) {
+ QString prefix = urlStr.left(dotIndex).toLower();
+ QString schema = (prefix == QString("ftp")) ? prefix.toLatin1() : QString("http");
+ QString location = schema + "://" + urlStr;
+ QUrl url = QUrl::fromEncoded(location.toUtf8(), QUrl::TolerantMode);
+ if (url.isValid())
+ return url;
+ }
+ }
+
+ // Fall back to QUrl's own tolerant parser.
+ QUrl url = QUrl::fromEncoded(string.toUtf8(), QUrl::TolerantMode);
+
+ // finally for cases where the user just types in a hostname add http
+ if (url.scheme().isEmpty())
+ url = QUrl::fromEncoded("http://" + string.toUtf8(), QUrl::TolerantMode);
+ return url;
+}
+
+void BrowserWindow::gotoAddress(const QString &address)
+{
+ m_browserView->navigate(guessUrlFromString(address));
+ showBrowserView();
+}
+
+void BrowserWindow::navigate(const QUrl &url)
+{
+ m_browserView->navigate(url);
+ showBrowserView();
+}
+
+void BrowserWindow::slide(int pos)
+{
+ m_browserView->move(pos, 0);
+ m_homeView->move(pos - width(), 0);
+ m_browserView->show();
+ m_homeView->show();
+}
+
+void BrowserWindow::showHomeView()
+{
+ if (m_timeLine->state() != QTimeLine::NotRunning)
+ return;
+
+ m_timeLine->setFrameRange(0, width());
+ m_timeLine->start();
+ m_homeView->setFocus();
+}
+
+void BrowserWindow::showBrowserView()
+{
+ if (m_timeLine->state() != QTimeLine::NotRunning)
+ return;
+
+ m_timeLine->setFrameRange(width(), 0);
+ m_timeLine->start();
+ m_browserView->setFocus();
+}
+
+void BrowserWindow::keyReleaseEvent(QKeyEvent *event)
+{
+ QWidget::keyReleaseEvent(event);
+
+ if (event->key() == Qt::Key_F3) {
+ if (m_homeView->isVisible())
+ showBrowserView();
+ else
+ showHomeView();
+ }
+}
+
+void BrowserWindow::resizeEvent(QResizeEvent *event)
+{
+ if (m_homeView)
+ m_homeView->resize(size());
+
+ if (m_browserView)
+ m_browserView->resize(size());
+}
diff --git a/demos/embedded/anomaly/src/BrowserWindow.h b/demos/embedded/anomaly/src/BrowserWindow.h
new file mode 100644
index 000000000..9647efbfb
--- /dev/null
+++ b/demos/embedded/anomaly/src/BrowserWindow.h
@@ -0,0 +1,79 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demos of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef BROWSERWINDOW_H
+#define BROWSERWINDOW_H
+
+#include <QWidget>
+class QTimeLine;
+class QUrl;
+
+class BrowserView;
+class HomeView;
+
+class BrowserWindow : public QWidget
+{
+ Q_OBJECT
+
+public:
+ BrowserWindow();
+
+private slots:
+ void initialize();
+ void navigate(const QUrl &url);
+ void gotoAddress(const QString &address);
+
+public slots:
+ void showBrowserView();
+ void showHomeView();
+ void slide(int);
+
+protected:
+ void keyReleaseEvent(QKeyEvent *event);
+ void resizeEvent(QResizeEvent *event);
+
+private:
+ HomeView *m_homeView;
+ BrowserView *m_browserView;
+ QTimeLine *m_timeLine;
+};
+
+#endif // BROWSERWINDOW_H
diff --git a/demos/embedded/anomaly/src/ControlStrip.cpp b/demos/embedded/anomaly/src/ControlStrip.cpp
new file mode 100644
index 000000000..0e43f6f5f
--- /dev/null
+++ b/demos/embedded/anomaly/src/ControlStrip.cpp
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demos 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 "ControlStrip.h"
+
+#include <QtCore>
+#include <QtGui>
+
+ControlStrip::ControlStrip(QWidget *parent)
+ : QWidget(parent)
+{
+ menuPixmap.load(":/images/edit-find.png");
+ backPixmap.load(":/images/go-previous.png");
+ forwardPixmap.load(":/images/go-next.png");
+}
+
+QSize ControlStrip::sizeHint() const
+{
+ return minimumSizeHint();
+}
+
+QSize ControlStrip::minimumSizeHint() const
+{
+ return QSize(320, 48);
+}
+
+void ControlStrip::mousePressEvent(QMouseEvent *event)
+{
+ int h = height();
+ int x = event->pos().x();
+
+ if (x < h) {
+ emit menuClicked();
+ event->accept();
+ return;
+ }
+
+ if (x > width() - h) {
+ emit forwardClicked();
+ event->accept();
+ return;
+ }
+
+ if ((x < width() - 2 * h) && (x > width() - 3 * h)) {
+ emit backClicked();
+ event->accept();
+ return;
+ }
+}
+
+void ControlStrip::paintEvent(QPaintEvent *event)
+{
+ int h = height();
+ int s = (h - menuPixmap.height()) / 2;
+
+ QPainter p(this);
+ p.fillRect(event->rect(), QColor(32, 32, 32, 192));
+ p.setCompositionMode(QPainter::CompositionMode_SourceOver);
+ p.drawPixmap(s, s, menuPixmap);
+ p.drawPixmap(width() - 3 * h + s, s, backPixmap);
+ p.drawPixmap(width() - h + s, s, forwardPixmap);
+ p.end();
+}
diff --git a/demos/embedded/anomaly/src/ControlStrip.h b/demos/embedded/anomaly/src/ControlStrip.h
new file mode 100644
index 000000000..263557b0a
--- /dev/null
+++ b/demos/embedded/anomaly/src/ControlStrip.h
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demos of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef CONTROLSTRIP_H
+#define CONTROLSTRIP_H
+
+#include <QWidget>
+
+class ControlStrip : public QWidget
+{
+ Q_OBJECT
+
+public:
+ ControlStrip(QWidget *parent = 0);
+
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+
+signals:
+ void menuClicked();
+ void backClicked();
+ void forwardClicked();
+
+protected:
+ void paintEvent(QPaintEvent *event);
+ void mousePressEvent(QMouseEvent *event);
+
+private:
+ QPixmap menuPixmap;
+ QPixmap backPixmap;
+ QPixmap forwardPixmap;
+};
+
+#endif // CONTROLSTRIP_H
diff --git a/demos/embedded/anomaly/src/HomeView.cpp b/demos/embedded/anomaly/src/HomeView.cpp
new file mode 100644
index 000000000..572ffcc13
--- /dev/null
+++ b/demos/embedded/anomaly/src/HomeView.cpp
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demos 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 "HomeView.h"
+
+#include <QtCore>
+#include <QtGui>
+
+#include "AddressBar.h"
+#include "BookmarksView.h"
+
+HomeView::HomeView(QWidget *parent)
+ : QWidget(parent)
+ , m_addressBar(0)
+{
+ m_addressBar = new AddressBar(parent);
+ connect(m_addressBar, SIGNAL(addressEntered(QString)), SLOT(gotoAddress(QString)));
+
+ m_bookmarks = new BookmarksView(parent);
+ connect(m_bookmarks, SIGNAL(urlSelected(QUrl)), SIGNAL(urlActivated(QUrl)));
+
+ QVBoxLayout *layout = new QVBoxLayout(this);
+ layout->setMargin(4);
+ layout->setSpacing(4);
+ layout->addWidget(m_addressBar);
+ layout->addWidget(m_bookmarks);
+}
+
+void HomeView::gotoAddress(const QString &address)
+{
+ emit addressEntered(address);
+}
+
+void HomeView::focusInEvent(QFocusEvent *event)
+{
+ m_addressBar->setFocus();
+ QWidget::focusInEvent(event);
+}
diff --git a/demos/embedded/anomaly/src/HomeView.h b/demos/embedded/anomaly/src/HomeView.h
new file mode 100644
index 000000000..530f1b253
--- /dev/null
+++ b/demos/embedded/anomaly/src/HomeView.h
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demos of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef HOMEVIEW_H
+#define HOMEVIEW_H
+
+#include <QWidget>
+
+class QUrl;
+
+class AddressBar;
+class BookmarksView;
+
+class HomeView : public QWidget
+{
+ Q_OBJECT
+
+public:
+ HomeView(QWidget *parent);
+
+signals:
+ void urlActivated(const QUrl &url);
+ void addressEntered(const QString &address);
+
+private slots:
+ void gotoAddress(const QString &address);
+
+protected:
+ void focusInEvent(QFocusEvent *event);
+
+private:
+ AddressBar *m_addressBar;
+ BookmarksView *m_bookmarks;
+};
+
+#endif // HOMEVIEW_H
diff --git a/demos/embedded/anomaly/src/Main.cpp b/demos/embedded/anomaly/src/Main.cpp
new file mode 100644
index 000000000..cf32420d6
--- /dev/null
+++ b/demos/embedded/anomaly/src/Main.cpp
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demos 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>
+#include <QtGui>
+#include <QtWebKit>
+
+#include "BrowserWindow.h"
+
+int main(int argc, char *argv[])
+{
+#if !defined(Q_WS_S60)
+ QApplication::setGraphicsSystem("raster");
+#endif
+
+ QApplication app(argc, argv);
+
+ app.setApplicationName("Anomaly");
+ app.setApplicationVersion("0.0.0");
+
+ BrowserWindow window;
+#ifdef Q_OS_SYMBIAN
+ window.showFullScreen();
+ QWebSettings::globalSettings()->setObjectCacheCapacities(128*1024, 1024*1024, 1024*1024);
+ QWebSettings::globalSettings()->setMaximumPagesInCache(3);
+#else
+ window.resize(360, 640);
+ window.show();
+ app.setStyle("windows");
+#endif
+
+#ifdef QT_KEYPAD_NAVIGATION
+ QApplication::setNavigationMode(Qt::NavigationModeCursorAuto);
+#endif
+ return app.exec();
+}
diff --git a/demos/embedded/anomaly/src/TitleBar.cpp b/demos/embedded/anomaly/src/TitleBar.cpp
new file mode 100644
index 000000000..4e5fadc00
--- /dev/null
+++ b/demos/embedded/anomaly/src/TitleBar.cpp
@@ -0,0 +1,124 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demos 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 "TitleBar.h"
+
+#include <QtCore>
+#include <QtGui>
+
+TitleBar::TitleBar(QWidget *parent)
+ : QWidget(parent)
+ , m_progress(0)
+{
+ setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
+}
+
+void TitleBar::setHost(const QString &host)
+{
+ m_host = host;
+ update();
+}
+
+void TitleBar::setTitle(const QString &title)
+{
+ m_title = title;
+ update();
+}
+
+void TitleBar::setProgress(int percent)
+{
+ m_progress = percent;
+ update();
+}
+
+QSize TitleBar::sizeHint() const
+{
+ return minimumSizeHint();
+}
+
+QSize TitleBar::minimumSizeHint() const
+{
+ QFontMetrics fm = fontMetrics();
+ return QSize(100, fm.height());
+}
+
+void TitleBar::paintEvent(QPaintEvent *event)
+{
+ QString title = m_host;
+ if (!m_title.isEmpty())
+ title.append(": ").append(m_title);
+
+ QPalette pal = palette();
+ QPainter p(this);
+ p.fillRect(event->rect(), pal.color(QPalette::Highlight));
+
+ if (m_progress > 0) {
+
+ QRect box = rect();
+ box.setLeft(16);
+ box.setWidth(width() - box.left() - 110);
+
+ p.setPen(pal.color(QPalette::HighlightedText));
+ p.setOpacity(0.8);
+ p.drawText(box, Qt::AlignLeft + Qt::AlignVCenter, title);
+
+ int x = width() - 100 - 5;
+ int y = 1;
+ int h = height() - 4;
+
+ p.setOpacity(1.0);
+ p.setBrush(Qt::NoBrush);
+ p.setPen(pal.color(QPalette::HighlightedText));
+ p.drawRect(x, y, 100, h);
+ p.setPen(Qt::NoPen);
+ p.setBrush(pal.color(QPalette::HighlightedText));
+ p.drawRect(x, y, m_progress, h);
+ } else {
+
+ QRect box = rect();
+ box.setLeft(16);
+ box.setWidth(width() - box.left() - 5);
+ p.setPen(pal.color(QPalette::HighlightedText));
+ p.drawText(box, Qt::AlignLeft + Qt::AlignVCenter, title);
+ }
+
+ p.end();
+}
diff --git a/demos/embedded/anomaly/src/TitleBar.h b/demos/embedded/anomaly/src/TitleBar.h
new file mode 100644
index 000000000..d1cd41cb6
--- /dev/null
+++ b/demos/embedded/anomaly/src/TitleBar.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demos of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef TITLEBAR_H
+#define TITLEBAR_H
+
+#include <QWidget>
+
+class TitleBar : public QWidget
+{
+ Q_OBJECT
+
+public:
+ TitleBar(QWidget *parent = 0);
+
+ void setHost(const QString &host);
+ void setTitle(const QString &title);
+ void setProgress(int percent);
+
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+
+protected:
+ void paintEvent(QPaintEvent *event);
+
+private:
+ QString m_host;
+ QString m_title;
+ int m_progress;
+};
+
+#endif // TITLEBAR_H
diff --git a/demos/embedded/anomaly/src/ZoomStrip.cpp b/demos/embedded/anomaly/src/ZoomStrip.cpp
new file mode 100644
index 000000000..798131219
--- /dev/null
+++ b/demos/embedded/anomaly/src/ZoomStrip.cpp
@@ -0,0 +1,82 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demos 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 "ZoomStrip.h"
+
+#include <QtCore>
+#include <QtGui>
+
+ZoomStrip::ZoomStrip(QWidget *parent)
+ : QWidget(parent)
+{
+ zoomInPixmap.load(":/images/list-add.png");
+ zoomOutPixmap.load(":/images/list-remove.png");
+}
+
+QSize ZoomStrip::sizeHint() const
+{
+ return minimumSizeHint();
+}
+
+QSize ZoomStrip::minimumSizeHint() const
+{
+ return QSize(48, 96);
+}
+
+void ZoomStrip::mousePressEvent(QMouseEvent *event)
+{
+ if (event->pos().y() < height() / 2)
+ emit zoomInClicked();
+ else
+ emit zoomOutClicked();
+}
+
+void ZoomStrip::paintEvent(QPaintEvent *event)
+{
+ int w = width();
+ int s = (w - zoomInPixmap.width()) / 2;
+
+ QPainter p(this);
+ p.fillRect(event->rect(), QColor(128, 128, 128, 128));
+ p.drawPixmap(s, s, zoomInPixmap);
+ p.drawPixmap(s, s + w, zoomOutPixmap);
+ p.end();
+}
diff --git a/demos/embedded/anomaly/src/ZoomStrip.h b/demos/embedded/anomaly/src/ZoomStrip.h
new file mode 100644
index 000000000..48739875f
--- /dev/null
+++ b/demos/embedded/anomaly/src/ZoomStrip.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demos of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef ZOOMSTRIP_H
+#define ZOOMSTRIP_H
+
+#include <QWidget>
+
+class ZoomStrip : public QWidget
+{
+ Q_OBJECT
+
+public:
+ ZoomStrip(QWidget *parent = 0);
+
+ QSize sizeHint() const;
+ QSize minimumSizeHint() const;
+
+signals:
+ void zoomInClicked();
+ void zoomOutClicked();
+
+protected:
+ void paintEvent(QPaintEvent *event);
+ void mousePressEvent(QMouseEvent *event);
+
+private:
+ QPixmap zoomInPixmap;
+ QPixmap zoomOutPixmap;
+};
+
+#endif // ZOOMSTRIP_H
diff --git a/demos/embedded/anomaly/src/anomaly.qrc b/demos/embedded/anomaly/src/anomaly.qrc
new file mode 100644
index 000000000..601a34e79
--- /dev/null
+++ b/demos/embedded/anomaly/src/anomaly.qrc
@@ -0,0 +1,9 @@
+<RCC>
+ <qresource prefix="/" >
+ <file>images/go-next.png</file>
+ <file>images/go-previous.png</file>
+ <file>images/edit-find.png</file>
+ <file>images/list-add.png</file>
+ <file>images/list-remove.png</file>
+ </qresource>
+</RCC>
diff --git a/demos/embedded/anomaly/src/flickcharm.cpp b/demos/embedded/anomaly/src/flickcharm.cpp
new file mode 100644
index 000000000..0b9e68edf
--- /dev/null
+++ b/demos/embedded/anomaly/src/flickcharm.cpp
@@ -0,0 +1,335 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demos 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 "flickcharm.h"
+
+#include <QAbstractScrollArea>
+#include <QApplication>
+#include <QBasicTimer>
+#include <QEvent>
+#include <QHash>
+#include <QList>
+#include <QMouseEvent>
+#include <QScrollBar>
+#include <QWebFrame>
+#include <QWebView>
+
+#include <QDebug>
+
+struct FlickData {
+ typedef enum { Steady, Pressed, ManualScroll, AutoScroll, Stop } State;
+ State state;
+ QWidget *widget;
+ QPoint pressPos;
+ QPoint offset;
+ QPoint dragPos;
+ QPoint speed;
+ QList<QEvent*> ignored;
+};
+
+class FlickCharmPrivate
+{
+public:
+ QHash<QWidget*, FlickData*> flickData;
+ QBasicTimer ticker;
+};
+
+FlickCharm::FlickCharm(QObject *parent): QObject(parent)
+{
+ d = new FlickCharmPrivate;
+}
+
+FlickCharm::~FlickCharm()
+{
+ delete d;
+}
+
+void FlickCharm::activateOn(QWidget *widget)
+{
+ QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea*>(widget);
+ if (scrollArea) {
+ scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+
+ QWidget *viewport = scrollArea->viewport();
+
+ viewport->installEventFilter(this);
+ scrollArea->installEventFilter(this);
+
+ d->flickData.remove(viewport);
+ d->flickData[viewport] = new FlickData;
+ d->flickData[viewport]->widget = widget;
+ d->flickData[viewport]->state = FlickData::Steady;
+
+ return;
+ }
+
+ QWebView *webView = qobject_cast<QWebView*>(widget);
+ if (webView) {
+ QWebFrame *frame = webView->page()->mainFrame();
+ frame->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff);
+ frame->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff);
+
+ webView->installEventFilter(this);
+
+ d->flickData.remove(webView);
+ d->flickData[webView] = new FlickData;
+ d->flickData[webView]->widget = webView;
+ d->flickData[webView]->state = FlickData::Steady;
+
+ return;
+ }
+
+ qWarning() << "FlickCharm only works on QAbstractScrollArea (and derived classes)";
+ qWarning() << "or QWebView (and derived classes)";
+}
+
+void FlickCharm::deactivateFrom(QWidget *widget)
+{
+ QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea*>(widget);
+ if (scrollArea) {
+ QWidget *viewport = scrollArea->viewport();
+
+ viewport->removeEventFilter(this);
+ scrollArea->removeEventFilter(this);
+
+ delete d->flickData[viewport];
+ d->flickData.remove(viewport);
+
+ return;
+ }
+
+ QWebView *webView = qobject_cast<QWebView*>(widget);
+ if (webView) {
+ webView->removeEventFilter(this);
+
+ delete d->flickData[webView];
+ d->flickData.remove(webView);
+
+ return;
+ }
+}
+
+static QPoint scrollOffset(QWidget *widget)
+{
+ int x = 0, y = 0;
+
+ QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea*>(widget);
+ if (scrollArea) {
+ x = scrollArea->horizontalScrollBar()->value();
+ y = scrollArea->verticalScrollBar()->value();
+ }
+
+ QWebView *webView = qobject_cast<QWebView*>(widget);
+ if (webView) {
+ QWebFrame *frame = webView->page()->mainFrame();
+ x = frame->evaluateJavaScript("window.scrollX").toInt();
+ y = frame->evaluateJavaScript("window.scrollY").toInt();
+ }
+
+ return QPoint(x, y);
+}
+
+static void setScrollOffset(QWidget *widget, const QPoint &p)
+{
+ QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea*>(widget);
+ if (scrollArea) {
+ scrollArea->horizontalScrollBar()->setValue(p.x());
+ scrollArea->verticalScrollBar()->setValue(p.y());
+ }
+
+ QWebView *webView = qobject_cast<QWebView*>(widget);
+ QWebFrame *frame = webView ? webView->page()->mainFrame() : 0;
+ if (frame)
+ frame->evaluateJavaScript(QString("window.scrollTo(%1,%2);").arg(p.x()).arg(p.y()));
+}
+
+static QPoint deaccelerate(const QPoint &speed, int a = 1, int max = 64)
+{
+ int x = qBound(-max, speed.x(), max);
+ int y = qBound(-max, speed.y(), max);
+ x = (x == 0) ? x : (x > 0) ? qMax(0, x - a) : qMin(0, x + a);
+ y = (y == 0) ? y : (y > 0) ? qMax(0, y - a) : qMin(0, y + a);
+ return QPoint(x, y);
+}
+
+bool FlickCharm::eventFilter(QObject *object, QEvent *event)
+{
+ if (!object->isWidgetType())
+ return false;
+
+ QEvent::Type type = event->type();
+ if (type != QEvent::MouseButtonPress &&
+ type != QEvent::MouseButtonRelease &&
+ type != QEvent::MouseMove)
+ return false;
+
+ QMouseEvent *mouseEvent = 0;
+ switch (event->type()) {
+ case QEvent::MouseButtonPress:
+ case QEvent::MouseButtonRelease:
+ case QEvent::MouseMove:
+ mouseEvent = static_cast<QMouseEvent*>(event);
+ break;
+ }
+
+ if (!mouseEvent || mouseEvent->modifiers() != Qt::NoModifier)
+ return false;
+
+ QWidget *viewport = qobject_cast<QWidget*>(object);
+ FlickData *data = d->flickData.value(viewport);
+ if (!viewport || !data || data->ignored.removeAll(event))
+ return false;
+
+ bool consumed = false;
+ switch (data->state) {
+
+ case FlickData::Steady:
+ if (mouseEvent->type() == QEvent::MouseButtonPress)
+ if (mouseEvent->buttons() == Qt::LeftButton) {
+ consumed = true;
+ data->state = FlickData::Pressed;
+ data->pressPos = mouseEvent->pos();
+ data->offset = scrollOffset(data->widget);
+ }
+ break;
+
+ case FlickData::Pressed:
+ if (mouseEvent->type() == QEvent::MouseButtonRelease) {
+ consumed = true;
+ data->state = FlickData::Steady;
+
+ QMouseEvent *event1 = new QMouseEvent(QEvent::MouseButtonPress,
+ data->pressPos, Qt::LeftButton,
+ Qt::LeftButton, Qt::NoModifier);
+ QMouseEvent *event2 = new QMouseEvent(*mouseEvent);
+
+ data->ignored << event1;
+ data->ignored << event2;
+ QApplication::postEvent(object, event1);
+ QApplication::postEvent(object, event2);
+ }
+ if (mouseEvent->type() == QEvent::MouseMove) {
+ consumed = true;
+ data->state = FlickData::ManualScroll;
+ data->dragPos = QCursor::pos();
+ if (!d->ticker.isActive())
+ d->ticker.start(20, this);
+ }
+ break;
+
+ case FlickData::ManualScroll:
+ if (mouseEvent->type() == QEvent::MouseMove) {
+ consumed = true;
+ QPoint delta = mouseEvent->pos() - data->pressPos;
+ setScrollOffset(data->widget, data->offset - delta);
+ }
+ if (mouseEvent->type() == QEvent::MouseButtonRelease) {
+ consumed = true;
+ data->state = FlickData::AutoScroll;
+ }
+ break;
+
+ case FlickData::AutoScroll:
+ if (mouseEvent->type() == QEvent::MouseButtonPress) {
+ consumed = true;
+ data->state = FlickData::Stop;
+ data->speed = QPoint(0, 0);
+ data->pressPos = mouseEvent->pos();
+ data->offset = scrollOffset(data->widget);
+ }
+ if (mouseEvent->type() == QEvent::MouseButtonRelease) {
+ consumed = true;
+ data->state = FlickData::Steady;
+ data->speed = QPoint(0, 0);
+ }
+ break;
+
+ case FlickData::Stop:
+ if (mouseEvent->type() == QEvent::MouseButtonRelease) {
+ consumed = true;
+ data->state = FlickData::Steady;
+ }
+ if (mouseEvent->type() == QEvent::MouseMove) {
+ consumed = true;
+ data->state = FlickData::ManualScroll;
+ data->dragPos = QCursor::pos();
+ if (!d->ticker.isActive())
+ d->ticker.start(20, this);
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return consumed;
+}
+
+void FlickCharm::timerEvent(QTimerEvent *event)
+{
+ int count = 0;
+ QHashIterator<QWidget*, FlickData*> item(d->flickData);
+ while (item.hasNext()) {
+ item.next();
+ FlickData *data = item.value();
+
+ if (data->state == FlickData::ManualScroll) {
+ count++;
+ data->speed = QCursor::pos() - data->dragPos;
+ data->dragPos = QCursor::pos();
+ }
+
+ if (data->state == FlickData::AutoScroll) {
+ count++;
+ data->speed = deaccelerate(data->speed);
+ QPoint p = scrollOffset(data->widget);
+ setScrollOffset(data->widget, p - data->speed);
+ if (data->speed == QPoint(0, 0))
+ data->state = FlickData::Steady;
+ }
+ }
+
+ if (!count)
+ d->ticker.stop();
+
+ QObject::timerEvent(event);
+}
diff --git a/demos/embedded/anomaly/src/flickcharm.h b/demos/embedded/anomaly/src/flickcharm.h
new file mode 100644
index 000000000..7901dc9dc
--- /dev/null
+++ b/demos/embedded/anomaly/src/flickcharm.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the demos of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef FLICKCHARM_H
+#define FLICKCHARM_H
+
+#include <QObject>
+
+class FlickCharmPrivate;
+class QWidget;
+
+class FlickCharm: public QObject
+{
+ Q_OBJECT
+public:
+ FlickCharm(QObject *parent = 0);
+ ~FlickCharm();
+ void activateOn(QWidget *widget);
+ void deactivateFrom(QWidget *widget);
+ bool eventFilter(QObject *object, QEvent *event);
+
+protected:
+ void timerEvent(QTimerEvent *event);
+
+private:
+ FlickCharmPrivate *d;
+};
+
+#endif // FLICKCHARM_H
diff --git a/demos/embedded/anomaly/src/images/edit-find.png b/demos/embedded/anomaly/src/images/edit-find.png
new file mode 100644
index 000000000..b84b1e2fa
--- /dev/null
+++ b/demos/embedded/anomaly/src/images/edit-find.png
Binary files differ
diff --git a/demos/embedded/anomaly/src/images/go-next.png b/demos/embedded/anomaly/src/images/go-next.png
new file mode 100644
index 000000000..ed89a36cc
--- /dev/null
+++ b/demos/embedded/anomaly/src/images/go-next.png
Binary files differ
diff --git a/demos/embedded/anomaly/src/images/go-previous.png b/demos/embedded/anomaly/src/images/go-previous.png
new file mode 100644
index 000000000..44e803d51
--- /dev/null
+++ b/demos/embedded/anomaly/src/images/go-previous.png
Binary files differ
diff --git a/demos/embedded/anomaly/src/images/list-add.png b/demos/embedded/anomaly/src/images/list-add.png
new file mode 100644
index 000000000..2acdd8f51
--- /dev/null
+++ b/demos/embedded/anomaly/src/images/list-add.png
Binary files differ
diff --git a/demos/embedded/anomaly/src/images/list-remove.png b/demos/embedded/anomaly/src/images/list-remove.png
new file mode 100644
index 000000000..c5524f728
--- /dev/null
+++ b/demos/embedded/anomaly/src/images/list-remove.png
Binary files differ
diff --git a/demos/embedded/desktopservices/contenttab.cpp b/demos/embedded/desktopservices/contenttab.cpp
new file mode 100644
index 000000000..f9470e93c
--- /dev/null
+++ b/demos/embedded/desktopservices/contenttab.cpp
@@ -0,0 +1,165 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+// EXTERNAL INCLUDES
+#include <QKeyEvent>
+#include <QMessageBox>
+#include <QListWidget>
+#include <QVBoxLayout>
+#include <QFileInfoList>
+#include <QListWidgetItem>
+
+// INTERNAL INCLUDES
+
+// CLASS HEADER
+#include "contenttab.h"
+
+
+// CONSTRUCTORS & DESTRUCTORS
+ContentTab::ContentTab(QWidget *parent) :
+ QListWidget(parent)
+{
+ setDragEnabled(false);
+ setIconSize(QSize(45, 45));
+}
+
+ContentTab::~ContentTab()
+{
+}
+
+// NEW PUBLIC METHODS
+void ContentTab::init(const QDesktopServices::StandardLocation &location,
+ const QString &filter,
+ const QString &icon)
+{
+ setContentDir(location);
+ QStringList filterList;
+ filterList = filter.split(";");
+ m_ContentDir.setNameFilters(filterList);
+ setIcon(icon);
+
+ connect(this, SIGNAL(itemClicked(QListWidgetItem*)),
+ this, SLOT(openItem(QListWidgetItem*)));
+
+ populateListWidget();
+}
+
+// NEW PROTECTED METHODS
+void ContentTab::setContentDir(const QDesktopServices::StandardLocation &location)
+{
+ m_ContentDir.setPath(QDesktopServices::storageLocation(location));
+}
+
+void ContentTab::setIcon(const QString &icon)
+{
+ m_Icon = QIcon(icon);
+}
+
+void ContentTab::populateListWidget()
+{
+ QFileInfoList fileList = m_ContentDir.entryInfoList(QDir::Files, QDir::Time);
+ foreach(QFileInfo item, fileList) {
+ new QListWidgetItem(m_Icon, itemName(item), this);
+ }
+}
+
+QString ContentTab::itemName(const QFileInfo &item)
+{
+ return QString(item.baseName() + "." + item.completeSuffix());
+}
+
+QUrl ContentTab::itemUrl(QListWidgetItem *item)
+{
+ return QUrl("file:///" + m_ContentDir.absolutePath() + "/" + item->text());
+}
+
+void ContentTab::keyPressEvent(QKeyEvent *event)
+{
+ switch (event->key()) {
+ case Qt::Key_Up:
+ if (currentRow() == 0) {
+ setCurrentRow(count() - 1);
+ } else {
+ setCurrentRow(currentRow() - 1);
+ }
+ break;
+ case Qt::Key_Down:
+ if (currentRow() == (count() - 1)) {
+ setCurrentRow(0);
+ } else {
+ setCurrentRow(currentRow() + 1);
+ }
+ break;
+ case Qt::Key_Select:
+ openItem(currentItem());
+ default:
+ QListWidget::keyPressEvent(event);
+ break;
+ }
+}
+
+void ContentTab::handleErrorInOpen(QListWidgetItem *item)
+{
+ Q_UNUSED(item);
+ QMessageBox::warning(this, tr("Operation Failed"), tr("Unkown error!"), QMessageBox::Close);
+}
+
+// NEW SLOTS
+void ContentTab::openItem(QListWidgetItem *item)
+{
+#if defined(Q_OS_SYMBIAN) && defined(Q_CC_NOKIAX86)
+ // Opening music files doesn't work in Symbian emulator and in some SDKs freezes the
+ // emulator entirely, so prevent it.
+ QStringList nameFilters = m_ContentDir.nameFilters();
+ if (nameFilters.contains("*.mp3")) {
+ QMessageBox::warning(this, tr("Operation Failed"), tr("Action not supported in emulator."),
+ QMessageBox::Close);
+ } else
+#endif
+ {
+ bool ret = QDesktopServices::openUrl(itemUrl(item));
+ if (!ret)
+ handleErrorInOpen(item);
+ }
+}
+
+
+// End of File
diff --git a/demos/embedded/desktopservices/contenttab.h b/demos/embedded/desktopservices/contenttab.h
new file mode 100644
index 000000000..73edc3591
--- /dev/null
+++ b/demos/embedded/desktopservices/contenttab.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+#ifndef CONTENTTAB_H_
+#define CONTENTTAB_H_
+
+// EXTERNAL INCLUDES
+#include <QDir>
+#include <QUrl>
+#include <QIcon>
+#include <QFileInfo>
+#include <QListWidget>
+#include <QDesktopServices>
+
+// INTERNAL INCLUDES
+
+// FORWARD DECLARATIONS
+QT_BEGIN_NAMESPACE
+class QListWidgetItem;
+QT_END_NAMESPACE
+
+// CLASS DECLARATION
+
+/**
+* ContentTab class.
+*
+* This class implements general purpose tab for media files.
+*/
+class ContentTab : public QListWidget
+{
+ Q_OBJECT
+
+public: // Constructors & Destructors
+ ContentTab(QWidget *parent);
+ virtual ~ContentTab();
+
+public: // New Methods
+ virtual void init(const QDesktopServices::StandardLocation &location,
+ const QString &filter,
+ const QString &icon);
+
+protected: // New Methods
+ virtual void setContentDir(const QDesktopServices::StandardLocation &location);
+ virtual void setIcon(const QString &icon);
+ virtual void populateListWidget();
+ virtual QString itemName(const QFileInfo &item);
+ virtual QUrl itemUrl(QListWidgetItem *item);
+ virtual void handleErrorInOpen(QListWidgetItem *item);
+protected:
+ void keyPressEvent(QKeyEvent *event);
+
+public slots: // New Slots
+ virtual void openItem(QListWidgetItem *item);
+
+protected: // Owned variables
+ QDir m_ContentDir;
+ QIcon m_Icon;
+};
+
+
+#endif // CONTENTTAB_H_
+
+// End of File
diff --git a/demos/embedded/desktopservices/data/Explosion.wav b/demos/embedded/desktopservices/data/Explosion.wav
new file mode 100644
index 000000000..7b140b1c6
--- /dev/null
+++ b/demos/embedded/desktopservices/data/Explosion.wav
Binary files differ
diff --git a/demos/embedded/desktopservices/data/designer.png b/demos/embedded/desktopservices/data/designer.png
new file mode 100644
index 000000000..1485efa95
--- /dev/null
+++ b/demos/embedded/desktopservices/data/designer.png
Binary files differ
diff --git a/demos/embedded/desktopservices/data/monkey_on_64x64.png b/demos/embedded/desktopservices/data/monkey_on_64x64.png
new file mode 100644
index 000000000..990f604d9
--- /dev/null
+++ b/demos/embedded/desktopservices/data/monkey_on_64x64.png
Binary files differ
diff --git a/demos/embedded/desktopservices/data/sax.mp3 b/demos/embedded/desktopservices/data/sax.mp3
new file mode 100644
index 000000000..d77c817e0
--- /dev/null
+++ b/demos/embedded/desktopservices/data/sax.mp3
Binary files differ
diff --git a/demos/embedded/desktopservices/desktopservices.pro b/demos/embedded/desktopservices/desktopservices.pro
new file mode 100644
index 000000000..bff7c468a
--- /dev/null
+++ b/demos/embedded/desktopservices/desktopservices.pro
@@ -0,0 +1,32 @@
+TEMPLATE = app
+TARGET =
+INCLUDEPATH += .
+
+HEADERS += desktopwidget.h contenttab.h linktab.h
+SOURCES += desktopwidget.cpp contenttab.cpp linktab.cpp main.cpp
+
+RESOURCES += desktopservices.qrc
+
+music.sources = data/*.mp3 data/*.wav
+image.sources = data/*.png
+
+target.path = $$[QT_INSTALL_DEMOS]/embedded/desktopservices
+sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro
+sources.path = $$[QT_INSTALL_DEMOS]/embedded/desktopservices
+
+symbian {
+ TARGET.UID3 = 0xA000C611
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ ICON = ./resources/heart.svg
+ music.path = /data/sounds/
+ image.path = /data/images/
+ DEPLOYMENT += music image
+}
+
+wince*{
+ music.path = "\My Documents\My Music"
+ image.path = "\My Documents\My Pictures"
+ DEPLOYMENT += music image
+}
+
+INSTALLS += target sources
diff --git a/demos/embedded/desktopservices/desktopservices.qrc b/demos/embedded/desktopservices/desktopservices.qrc
new file mode 100644
index 000000000..410175ff8
--- /dev/null
+++ b/demos/embedded/desktopservices/desktopservices.qrc
@@ -0,0 +1,8 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="/">
+ <file>resources/music.png</file>
+ <file>resources/photo.png</file>
+ <file>resources/browser.png</file>
+ <file>resources/message.png</file>
+</qresource>
+</RCC>
diff --git a/demos/embedded/desktopservices/desktopwidget.cpp b/demos/embedded/desktopservices/desktopwidget.cpp
new file mode 100644
index 000000000..0d7744244
--- /dev/null
+++ b/demos/embedded/desktopservices/desktopwidget.cpp
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+// EXTERNAL INCLUDES
+#include <QTabWidget>
+#include <QVBoxLayout>
+#include <QDesktopServices>
+
+// INTERNAL INCLUDES
+#include "linktab.h"
+#include "contenttab.h"
+
+// CLASS HEADER
+#include "desktopwidget.h"
+
+// CONSTRUCTORS & DESTRUCTORS
+DesktopWidget::DesktopWidget(QWidget *parent) : QWidget(parent)
+
+{
+ QTabWidget *tabWidget = new QTabWidget(this);
+
+ // Images
+ ContentTab* imageTab = new ContentTab(tabWidget);
+ imageTab->init(QDesktopServices::PicturesLocation,
+ "*.png;*.jpg;*.jpeg;*.bmp;*.gif",
+ ":/resources/photo.png");
+ tabWidget->addTab(imageTab, tr("Images"));
+
+ // Music
+ ContentTab* musicTab = new ContentTab(tabWidget);
+ musicTab->init(QDesktopServices::MusicLocation,
+ "*.wav;*.mp3;*.mp4",
+ ":/resources/music.png");
+ tabWidget->addTab(musicTab, tr("Music"));
+
+ // Links
+ LinkTab* othersTab = new LinkTab(tabWidget);;
+ // Given icon file will be overriden by LinkTab
+ othersTab->init(QDesktopServices::PicturesLocation, "", "");
+ tabWidget->addTab(othersTab, tr("Links"));
+
+ // Layout
+ QVBoxLayout *layout = new QVBoxLayout;
+ layout->addWidget(tabWidget);
+ setLayout(layout);
+}
+
+DesktopWidget::~DesktopWidget()
+{
+}
+
+// End of file
diff --git a/demos/embedded/desktopservices/desktopwidget.h b/demos/embedded/desktopservices/desktopwidget.h
new file mode 100644
index 000000000..9ac7da2fd
--- /dev/null
+++ b/demos/embedded/desktopservices/desktopwidget.h
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+#ifndef DESKTOPWIDGET_H_
+#define DESKTOPWIDGET_H_
+
+// EXTERNAL INCLUDES
+#include <QWidget>
+
+// INTERNAL INCLUDES
+
+// FORWARD DECLARATIONS
+QT_BEGIN_NAMESPACE
+class QTabWidget;
+QT_END_NAMESPACE
+
+// CLASS DECLARATION
+/**
+* DesktopWidget class.
+*
+* Implements the main top level widget for QDesktopServices demo app.
+*/
+class DesktopWidget : public QWidget
+{
+ Q_OBJECT
+
+public: // Constructors & Destructors
+ DesktopWidget(QWidget *parent);
+ ~DesktopWidget();
+
+};
+
+#endif // DESKTOPWIDGET_H_
+
+// End of file
diff --git a/demos/embedded/desktopservices/linktab.cpp b/demos/embedded/desktopservices/linktab.cpp
new file mode 100644
index 000000000..03e20730b
--- /dev/null
+++ b/demos/embedded/desktopservices/linktab.cpp
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+// EXTERNAL INCLUDES
+#include <QUrl>
+#include <QMessageBox>
+#include <QListWidgetItem>
+
+// INTERNAL INCLUDES
+
+// CLASS HEADER
+#include "linktab.h"
+
+LinkTab::LinkTab(QWidget *parent) :
+ ContentTab(parent)
+{
+}
+
+LinkTab::~LinkTab()
+{
+}
+
+void LinkTab::populateListWidget()
+{
+ m_WebItem = new QListWidgetItem(QIcon(":/resources/browser.png"), tr("Launch Browser"), this);
+ m_MailToItem = new QListWidgetItem(QIcon(":/resources/message.png"), tr("New e-mail"), this);
+}
+
+QUrl LinkTab::itemUrl(QListWidgetItem *item)
+{
+ if (m_WebItem == item) {
+ return QUrl(tr("http://qt.nokia.com"));
+ } else if (m_MailToItem == item) {
+ return QUrl(tr("mailto:qts60-feedback@trolltech.com?subject=QtS60 feedback&body=Hello"));
+ } else {
+ // We should never endup here
+ Q_ASSERT(false);
+ return QUrl();
+ }
+}
+void LinkTab::handleErrorInOpen(QListWidgetItem *item)
+{
+ if (m_MailToItem == item) {
+ QMessageBox::warning(this, tr("Operation Failed"), tr("Please check that you have\ne-mail account defined."), QMessageBox::Close);
+ } else {
+ ContentTab::handleErrorInOpen(item);
+ }
+}
+
+// End of file
diff --git a/demos/embedded/desktopservices/linktab.h b/demos/embedded/desktopservices/linktab.h
new file mode 100644
index 000000000..06164af6e
--- /dev/null
+++ b/demos/embedded/desktopservices/linktab.h
@@ -0,0 +1,86 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+#ifndef LINKTAB_H_
+#define LINKTAB_H_
+
+// EXTERNAL INCLUDES
+
+// INTERNAL INCLUDES
+#include "contenttab.h"
+
+// FORWARD DECLARATIONS
+QT_BEGIN_NAMESPACE
+class QWidget;
+class QListWidgetItem;
+QT_END_NAMESPACE
+
+// CLASS DECLARATION
+
+/**
+* LinkTab class.
+*
+* This class implements tab for opening http and mailto links.
+*/
+class LinkTab : public ContentTab
+{
+ Q_OBJECT
+
+public: // Constructors & Destructors
+ LinkTab(QWidget *parent);
+ ~LinkTab();
+
+protected: // Derived Methods
+ virtual void populateListWidget();
+ virtual QUrl itemUrl(QListWidgetItem *item);
+ virtual void handleErrorInOpen(QListWidgetItem *item);
+
+private: // Used variables
+ QListWidgetItem *m_WebItem;
+ QListWidgetItem *m_MailToItem;
+
+private: // Owned variables
+
+};
+
+#endif // CONTENTTAB_H_
+
+// End of File
diff --git a/demos/embedded/desktopservices/main.cpp b/demos/embedded/desktopservices/main.cpp
new file mode 100644
index 000000000..99e6cf646
--- /dev/null
+++ b/demos/embedded/desktopservices/main.cpp
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 <QApplication>
+#include "desktopwidget.h"
+
+int main(int argc, char *argv[])
+{
+ Q_INIT_RESOURCE(desktopservices);
+
+ QApplication app(argc, argv);
+ DesktopWidget* myWidget = new DesktopWidget(0);
+ myWidget->showMaximized();
+
+ return app.exec();
+}
+
+// End of file
diff --git a/demos/embedded/desktopservices/resources/browser.png b/demos/embedded/desktopservices/resources/browser.png
new file mode 100644
index 000000000..9ecda6bee
--- /dev/null
+++ b/demos/embedded/desktopservices/resources/browser.png
Binary files differ
diff --git a/demos/embedded/desktopservices/resources/heart.svg b/demos/embedded/desktopservices/resources/heart.svg
new file mode 100644
index 000000000..ba5f050b0
--- /dev/null
+++ b/demos/embedded/desktopservices/resources/heart.svg
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) --><svg viewBox="100 200 550 500" height="595.27559pt" id="svg1" inkscape:version="0.40+cvs" sodipodi:docbase="C:\Documents and Settings\Jon Phillips\My Documents\projects\clipart-project\submissions" sodipodi:docname="heart-left-highlight.svg" sodipodi:version="0.32" width="595.27559pt" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg">
+<metadata>
+<rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<cc:Work rdf:about="">
+<dc:title>Heart Left-Highlight</dc:title>
+<dc:description>This is a normal valentines day heart.</dc:description>
+<dc:subject>
+<rdf:Bag>
+<rdf:li>holiday</rdf:li>
+<rdf:li>valentines</rdf:li>
+<rdf:li></rdf:li>
+<rdf:li>valentine</rdf:li>
+<rdf:li>hash(0x8a091c0)</rdf:li>
+<rdf:li>hash(0x8a0916c)</rdf:li>
+<rdf:li>signs_and_symbols</rdf:li>
+<rdf:li>hash(0x8a091f0)</rdf:li>
+<rdf:li>day</rdf:li>
+</rdf:Bag>
+</dc:subject>
+<dc:publisher>
+<cc:Agent rdf:about="http://www.openclipart.org">
+<dc:title>Jon Phillips</dc:title>
+</cc:Agent>
+</dc:publisher>
+<dc:creator>
+<cc:Agent>
+<dc:title>Jon Phillips</dc:title>
+</cc:Agent>
+</dc:creator>
+<dc:rights>
+<cc:Agent>
+<dc:title>Jon Phillips</dc:title>
+</cc:Agent>
+</dc:rights>
+<dc:date></dc:date>
+<dc:format>image/svg+xml</dc:format>
+<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+<cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+<dc:language>en</dc:language>
+</cc:Work>
+<cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+<cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+<cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+<cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+</cc:License>
+</rdf:RDF>
+</metadata>
+<defs id="defs3"/>
+<sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:current-layer="layer1" inkscape:cx="549.40674" inkscape:cy="596.00159" inkscape:document-units="px" inkscape:guide-bbox="true" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="615" inkscape:window-width="866" inkscape:window-x="88" inkscape:window-y="116" inkscape:zoom="0.35000000" pagecolor="#ffffff" showguides="true"/>
+<g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1">
+<path d="M 263.41570,235.14588 C 197.17570,235.14588 143.41575,288.90587 143.41575,355.14588 C 143.41575,489.90139 279.34890,525.23318 371.97820,658.45392 C 459.55244,526.05056 600.54070,485.59932 600.54070,355.14588 C 600.54070,288.90588 546.78080,235.14587 480.54070,235.14588 C 432.49280,235.14588 391.13910,263.51631 371.97820,304.33338 C 352.81740,263.51630 311.46370,235.14587 263.41570,235.14588 z " id="path7" sodipodi:nodetypes="ccccccc" style="fill:#e60000;fill-opacity:1.0000000;stroke:#000000;stroke-width:18.700001;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+<path d="M 265.00000,253.59375 C 207.04033,253.59375 160.00000,300.63407 160.00000,358.59375 C 160.00000,476.50415 278.91857,507.43251 359.96875,624.00000 C 366.52868,614.08205 220.00000,478.47309 220.00000,378.59375 C 220.00000,320.63407 267.04033,273.59375 325.00000,273.59375 C 325.50453,273.59375 325.99718,273.64912 326.50000,273.65625 C 309.22436,261.07286 288.00557,253.59374 265.00000,253.59375 z " id="path220" sodipodi:nodetypes="ccccccc" style="fill:#e6e6e6;fill-opacity:0.64556962;stroke:none;stroke-width:18.700001;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"/>
+</g>
+</svg>
diff --git a/demos/embedded/desktopservices/resources/message.png b/demos/embedded/desktopservices/resources/message.png
new file mode 100644
index 000000000..78917c7ca
--- /dev/null
+++ b/demos/embedded/desktopservices/resources/message.png
Binary files differ
diff --git a/demos/embedded/desktopservices/resources/music.png b/demos/embedded/desktopservices/resources/music.png
new file mode 100644
index 000000000..cc569cbd2
--- /dev/null
+++ b/demos/embedded/desktopservices/resources/music.png
Binary files differ
diff --git a/demos/embedded/desktopservices/resources/photo.png b/demos/embedded/desktopservices/resources/photo.png
new file mode 100644
index 000000000..ac81cf38b
--- /dev/null
+++ b/demos/embedded/desktopservices/resources/photo.png
Binary files differ
diff --git a/demos/embedded/digiflip/digiflip.cpp b/demos/embedded/digiflip/digiflip.cpp
new file mode 100644
index 000000000..9d6265d34
--- /dev/null
+++ b/demos/embedded/digiflip/digiflip.cpp
@@ -0,0 +1,425 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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>
+#include <QtGui>
+
+class Digits: public QWidget
+{
+ Q_OBJECT
+
+public:
+
+ enum {
+ Slide,
+ Flip,
+ Rotate
+ };
+
+ Digits(QWidget *parent)
+ : QWidget(parent)
+ , m_number(0)
+ , m_transition(Slide)
+ {
+ setAttribute(Qt::WA_OpaquePaintEvent, true);
+ setAttribute(Qt::WA_NoSystemBackground, true);
+ connect(&m_animator, SIGNAL(frameChanged(int)), SLOT(update()));
+ m_animator.setFrameRange(0, 100);
+ m_animator.setDuration(600);
+ m_animator.setCurveShape(QTimeLine::EaseInOutCurve);
+ }
+
+ void setTransition(int tr) {
+ m_transition = tr;
+ }
+
+ int transition() const {
+ return m_transition;
+ }
+
+ void setNumber(int n) {
+ if (m_number != n) {
+ m_number = qBound(0, n, 99);
+ preparePixmap();
+ update();
+ }
+ }
+
+ void flipTo(int n) {
+ if (m_number != n) {
+ m_number = qBound(0, n, 99);
+ m_lastPixmap = m_pixmap;
+ preparePixmap();
+ m_animator.stop();
+ m_animator.start();
+ }
+ }
+
+protected:
+
+ void drawFrame(QPainter *p, const QRect &rect) {
+ p->setPen(Qt::NoPen);
+ QLinearGradient gradient(rect.topLeft(), rect.bottomLeft());
+ gradient.setColorAt(0.00, QColor(245, 245, 245));
+ gradient.setColorAt(0.49, QColor(192, 192, 192));
+ gradient.setColorAt(0.51, QColor(245, 245, 245));
+ gradient.setColorAt(1.00, QColor(192, 192, 192));
+ p->setBrush(gradient);
+ QRect r = rect;
+ p->drawRoundedRect(r, 15, 15, Qt::RelativeSize);
+ r.adjust(1, 4, -1, -4);
+ p->setPen(QColor(181, 181, 181));
+ p->setBrush(Qt::NoBrush);
+ p->drawRoundedRect(r, 15, 15, Qt::RelativeSize);
+ p->setPen(QColor(159, 159, 159));
+ int y = rect.top() + rect.height() / 2 - 1;
+ p->drawLine(rect.left(), y, rect.right(), y);
+ }
+
+ QPixmap drawDigits(int n, const QRect &rect) {
+
+ int scaleFactor = 2;
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE_WM)
+ if (rect.height() > 240)
+ scaleFactor = 1;
+#endif
+
+ QString str = QString::number(n);
+ if (str.length() == 1)
+ str.prepend("0");
+
+ QFont font;
+ font.setFamily("Helvetica");
+ int fontHeight = scaleFactor * 0.55 * rect.height();
+ font.setPixelSize(fontHeight);
+ font.setBold(true);
+
+ QPixmap pixmap(rect.size() * scaleFactor);
+ pixmap.fill(Qt::transparent);
+
+ QLinearGradient gradient(QPoint(0, 0), QPoint(0, pixmap.height()));
+ gradient.setColorAt(0.00, QColor(128, 128, 128));
+ gradient.setColorAt(0.49, QColor(64, 64, 64));
+ gradient.setColorAt(0.51, QColor(128, 128, 128));
+ gradient.setColorAt(1.00, QColor(16, 16, 16));
+
+ QPainter p;
+ p.begin(&pixmap);
+ p.setFont(font);
+ QPen pen;
+ pen.setBrush(QBrush(gradient));
+ p.setPen(pen);
+ p.drawText(pixmap.rect(), Qt::AlignCenter, str);
+ p.end();
+
+ return pixmap.scaledToWidth(width(), Qt::SmoothTransformation);
+ }
+
+ void preparePixmap() {
+ m_pixmap = QPixmap(size());
+ m_pixmap.fill(Qt::transparent);
+ QPainter p;
+ p.begin(&m_pixmap);
+ p.drawPixmap(0, 0, drawDigits(m_number, rect()));
+ p.end();
+ }
+
+ void resizeEvent(QResizeEvent*) {
+ preparePixmap();
+ update();
+ }
+
+ void paintStatic() {
+ QPainter p(this);
+ p.fillRect(rect(), Qt::black);
+
+ int pad = width() / 10;
+ drawFrame(&p, rect().adjusted(pad, pad, -pad, -pad));
+ p.drawPixmap(0, 0, m_pixmap);
+ }
+
+ void paintSlide() {
+ QPainter p(this);
+ p.fillRect(rect(), Qt::black);
+
+ int pad = width() / 10;
+ QRect fr = rect().adjusted(pad, pad, -pad, -pad);
+ drawFrame(&p, fr);
+ p.setClipRect(fr);
+
+ int y = height() * m_animator.currentFrame() / 100;
+ p.drawPixmap(0, y, m_lastPixmap);
+ p.drawPixmap(0, y - height(), m_pixmap);
+ }
+
+ void paintFlip() {
+ QPainter p(this);
+#if !defined(Q_OS_SYMBIAN) && !defined(Q_OS_WINCE_WM)
+ p.setRenderHint(QPainter::SmoothPixmapTransform, true);
+ p.setRenderHint(QPainter::Antialiasing, true);
+#endif
+ p.fillRect(rect(), Qt::black);
+
+ int hw = width() / 2;
+ int hh = height() / 2;
+
+ // behind is the new pixmap
+ int pad = width() / 10;
+ QRect fr = rect().adjusted(pad, pad, -pad, -pad);
+ drawFrame(&p, fr);
+ p.drawPixmap(0, 0, m_pixmap);
+
+ int index = m_animator.currentFrame();
+
+ if (index <= 50) {
+
+ // the top part of the old pixmap is flipping
+ int angle = -180 * index / 100;
+ QTransform transform;
+ transform.translate(hw, hh);
+ transform.rotate(angle, Qt::XAxis);
+ p.setTransform(transform);
+ drawFrame(&p, fr.adjusted(-hw, -hh, -hw, -hh));
+ p.drawPixmap(-hw, -hh, m_lastPixmap);
+
+ // the bottom part is still the old pixmap
+ p.resetTransform();
+ p.setClipRect(0, hh, width(), hh);
+ drawFrame(&p, fr);
+ p.drawPixmap(0, 0, m_lastPixmap);
+ } else {
+
+ p.setClipRect(0, hh, width(), hh);
+
+ // the bottom part is still the old pixmap
+ drawFrame(&p, fr);
+ p.drawPixmap(0, 0, m_lastPixmap);
+
+ // the bottom part of the new pixmap is flipping
+ int angle = 180 - 180 * m_animator.currentFrame() / 100;
+ QTransform transform;
+ transform.translate(hw, hh);
+ transform.rotate(angle, Qt::XAxis);
+ p.setTransform(transform);
+ drawFrame(&p, fr.adjusted(-hw, -hh, -hw, -hh));
+ p.drawPixmap(-hw, -hh, m_pixmap);
+
+ }
+
+ }
+
+ void paintRotate() {
+ QPainter p(this);
+
+ int pad = width() / 10;
+ QRect fr = rect().adjusted(pad, pad, -pad, -pad);
+ drawFrame(&p, fr);
+ p.setClipRect(fr);
+
+ int angle1 = -180 * m_animator.currentFrame() / 100;
+ int angle2 = 180 - 180 * m_animator.currentFrame() / 100;
+ int angle = (m_animator.currentFrame() <= 50) ? angle1 : angle2;
+ QPixmap pix = (m_animator.currentFrame() <= 50) ? m_lastPixmap : m_pixmap;
+
+ QTransform transform;
+ transform.translate(width() / 2, height() / 2);
+ transform.rotate(angle, Qt::XAxis);
+
+ p.setTransform(transform);
+ p.setRenderHint(QPainter::SmoothPixmapTransform, true);
+ p.drawPixmap(-width() / 2, -height() / 2, pix);
+ }
+
+ void paintEvent(QPaintEvent *event) {
+ Q_UNUSED(event);
+ if (m_animator.state() == QTimeLine::Running) {
+ if (m_transition == Slide)
+ paintSlide();
+ if (m_transition == Flip)
+ paintFlip();
+ if (m_transition == Rotate)
+ paintRotate();
+ } else {
+ paintStatic();
+ }
+ }
+
+private:
+ int m_number;
+ int m_transition;
+ QPixmap m_pixmap;
+ QPixmap m_lastPixmap;
+ QTimeLine m_animator;
+};
+
+class DigiFlip : public QMainWindow
+{
+ Q_OBJECT
+
+public:
+ DigiFlip(QWidget *parent = 0)
+ : QMainWindow(parent)
+ {
+ m_hour = new Digits(this);
+ m_hour->show();
+ m_minute = new Digits(this);
+ m_minute->show();
+
+ QPalette pal = palette();
+ pal.setColor(QPalette::Window, Qt::black);
+ setPalette(pal);
+
+ m_ticker.start(1000, this);
+ QTime t = QTime::currentTime();
+ m_hour->setNumber(t.hour());
+ m_minute->setNumber(t.minute());
+ updateTime();
+
+ QAction *slideAction = new QAction("&Slide", this);
+ QAction *flipAction = new QAction("&Flip", this);
+ QAction *rotateAction = new QAction("&Rotate", this);
+ connect(slideAction, SIGNAL(triggered()), SLOT(chooseSlide()));
+ connect(flipAction, SIGNAL(triggered()), SLOT(chooseFlip()));
+ connect(rotateAction, SIGNAL(triggered()), SLOT(chooseRotate()));
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE_WM)
+ menuBar()->addAction(slideAction);
+ menuBar()->addAction(flipAction);
+ menuBar()->addAction(rotateAction);
+#else
+ addAction(slideAction);
+ addAction(flipAction);
+ addAction(rotateAction);
+ setContextMenuPolicy(Qt::ActionsContextMenu);
+#endif
+ }
+
+ void updateTime() {
+ QTime t = QTime::currentTime();
+ m_hour->flipTo(t.hour());
+ m_minute->flipTo(t.minute());
+ QString str = t.toString("hh:mm:ss");
+ str.prepend(": ");
+ if (m_hour->transition() == Digits::Slide)
+ str.prepend("Slide");
+ if (m_hour->transition() == Digits::Flip)
+ str.prepend("Flip");
+ if (m_hour->transition() == Digits::Rotate)
+ str.prepend("Rotate");
+ setWindowTitle(str);
+ }
+
+ void switchTransition(int delta) {
+ int i = (m_hour->transition() + delta + 3) % 3;
+ m_hour->setTransition(i);
+ m_minute->setTransition(i);
+ updateTime();
+ }
+
+protected:
+ void resizeEvent(QResizeEvent*) {
+ int digitsWidth = width() / 2;
+ int digitsHeight = digitsWidth * 1.2;
+
+ int y = (height() - digitsHeight) / 3;
+
+ m_hour->resize(digitsWidth, digitsHeight);
+ m_hour->move(0, y);
+
+ m_minute->resize(digitsWidth, digitsHeight);
+ m_minute->move(width() / 2, y);
+ }
+
+ void timerEvent(QTimerEvent*) {
+ updateTime();
+ }
+
+ void keyPressEvent(QKeyEvent *event) {
+ if (event->key() == Qt::Key_Right) {
+ switchTransition(1);
+ event->accept();
+ }
+ if (event->key() == Qt::Key_Left) {
+ switchTransition(-1);
+ event->accept();
+ }
+ }
+
+private slots:
+ void chooseSlide() {
+ m_hour->setTransition(0);
+ m_minute->setTransition(0);
+ updateTime();
+ }
+
+ void chooseFlip() {
+ m_hour->setTransition(1);
+ m_minute->setTransition(1);
+ updateTime();
+ }
+
+ void chooseRotate() {
+ m_hour->setTransition(2);
+ m_minute->setTransition(2);
+ updateTime();
+ }
+
+private:
+ QBasicTimer m_ticker;
+ Digits *m_hour;
+ Digits *m_minute;
+};
+
+#include "digiflip.moc"
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+ DigiFlip time;
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE_WM)
+ time.showMaximized();
+#else
+ time.resize(320, 240);
+ time.show();
+#endif
+
+ return app.exec();
+}
diff --git a/demos/embedded/digiflip/digiflip.pro b/demos/embedded/digiflip/digiflip.pro
new file mode 100644
index 000000000..4af997371
--- /dev/null
+++ b/demos/embedded/digiflip/digiflip.pro
@@ -0,0 +1,11 @@
+SOURCES = digiflip.cpp
+
+symbian {
+ TARGET.UID3 = 0xA000CF72
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+}
+
+target.path = $$[QT_INSTALL_DEMOS]/embedded/digiflip
+sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro
+sources.path = $$[QT_INSTALL_DEMOS]/embedded/digiflip
+INSTALLS += target sources
diff --git a/demos/embedded/embedded.pro b/demos/embedded/embedded.pro
index 4fd8f9f54..5bd3276d4 100644
--- a/demos/embedded/embedded.pro
+++ b/demos/embedded/embedded.pro
@@ -1,14 +1,25 @@
TEMPLATE = subdirs
-SUBDIRS = styledemo
+SUBDIRS = styledemo raycasting flickable digiflip
contains(QT_CONFIG, svg) {
- SUBDIRS += embeddedsvgviewer
- # no QProcess
+ SUBDIRS += embeddedsvgviewer \
+ desktopservices
!vxworks:!qnx:SUBDIRS += fluidlauncher
}
+SUBDIRS += lightmaps
+SUBDIRS += flightinfo
+contains(QT_CONFIG, svg) {
+ SUBDIRS += weatherinfo
+}
+
+contains(QT_CONFIG, webkit) {
+ SUBDIRS += anomaly
+}
+
# install
sources.files = README *.pro
sources.path = $$[QT_INSTALL_DEMOS]/embedded
INSTALLS += sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.cpp b/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.cpp
index 42756a42d..ea3d30a0b 100644
--- a/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.cpp
+++ b/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -143,7 +143,7 @@ void EmbeddedSvgViewer::updateImageScale()
}
-void EmbeddedSvgViewer::resizeEvent ( QResizeEvent * event )
+void EmbeddedSvgViewer::resizeEvent ( QResizeEvent * /* event */ )
{
qreal origZoom = m_zoomLevel;
diff --git a/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.h b/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.h
index 2c4aba9a3..34d4ee07d 100644
--- a/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.h
+++ b/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.pro b/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.pro
index 505e6078c..209ec1a78 100644
--- a/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.pro
+++ b/demos/embedded/embeddedsvgviewer/embeddedsvgviewer.pro
@@ -9,8 +9,13 @@ RESOURCES += embeddedsvgviewer.qrc
target.path = $$[QT_INSTALL_DEMOS]/embedded/embeddedsvgviewer
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.html *.svg files
sources.path = $$[QT_INSTALL_DEMOS]/embedded/embeddedsvgviewer
-INSTALLS += target sources
+INSTALLS += target sources
-wince*: {
+wince* {
DEPLOYMENT_PLUGIN += qsvg
}
+
+symbian {
+ TARGET.UID3 = 0xA000A640
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+}
diff --git a/demos/embedded/embeddedsvgviewer/main.cpp b/demos/embedded/embeddedsvgviewer/main.cpp
index bea441c2b..9c91fb74f 100644
--- a/demos/embedded/embeddedsvgviewer/main.cpp
+++ b/demos/embedded/embeddedsvgviewer/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -64,5 +64,8 @@ int main(int argc, char** argv)
viewer.showFullScreen();
+#ifdef QT_KEYPAD_NAVIGATION
+ QApplication::setNavigationMode(Qt::NavigationModeCursorAuto);
+#endif
return app.exec();
}
diff --git a/demos/embedded/flickable/flickable.cpp b/demos/embedded/flickable/flickable.cpp
new file mode 100644
index 000000000..bef116a18
--- /dev/null
+++ b/demos/embedded/flickable/flickable.cpp
@@ -0,0 +1,284 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 "flickable.h"
+
+#include <QtCore>
+#include <QtGui>
+
+class FlickableTicker: QObject
+{
+public:
+ FlickableTicker(Flickable *scroller) {
+ m_scroller = scroller;
+ }
+
+ void start(int interval) {
+ if (!m_timer.isActive())
+ m_timer.start(interval, this);
+ }
+
+ void stop() {
+ m_timer.stop();
+ }
+
+protected:
+ void timerEvent(QTimerEvent *event) {
+ Q_UNUSED(event);
+ m_scroller->tick();
+ }
+
+private:
+ Flickable *m_scroller;
+ QBasicTimer m_timer;
+};
+
+class FlickablePrivate
+{
+public:
+ typedef enum {
+ Steady,
+ Pressed,
+ ManualScroll,
+ AutoScroll,
+ Stop
+ } State;
+
+ State state;
+ int threshold;
+ QPoint pressPos;
+ QPoint offset;
+ QPoint delta;
+ QPoint speed;
+ FlickableTicker *ticker;
+ QTime timeStamp;
+ QWidget *target;
+ QList<QEvent*> ignoreList;
+};
+
+Flickable::Flickable()
+{
+ d = new FlickablePrivate;
+ d->state = FlickablePrivate::Steady;
+ d->threshold = 10;
+ d->ticker = new FlickableTicker(this);
+ d->timeStamp = QTime::currentTime();
+ d->target = 0;
+}
+
+Flickable::~Flickable()
+{
+ delete d;
+}
+
+void Flickable::setThreshold(int th)
+{
+ if (th >= 0)
+ d->threshold = th;
+}
+
+int Flickable::threshold() const
+{
+ return d->threshold;
+}
+
+void Flickable::setAcceptMouseClick(QWidget *target)
+{
+ d->target = target;
+}
+
+static QPoint deaccelerate(const QPoint &speed, int a = 1, int max = 64)
+{
+ int x = qBound(-max, speed.x(), max);
+ int y = qBound(-max, speed.y(), max);
+ x = (x == 0) ? x : (x > 0) ? qMax(0, x - a) : qMin(0, x + a);
+ y = (y == 0) ? y : (y > 0) ? qMax(0, y - a) : qMin(0, y + a);
+ return QPoint(x, y);
+}
+
+void Flickable::handleMousePress(QMouseEvent *event)
+{
+ event->ignore();
+
+ if (event->button() != Qt::LeftButton)
+ return;
+
+ if (d->ignoreList.removeAll(event))
+ return;
+
+ switch (d->state) {
+
+ case FlickablePrivate::Steady:
+ event->accept();
+ d->state = FlickablePrivate::Pressed;
+ d->pressPos = event->pos();
+ break;
+
+ case FlickablePrivate::AutoScroll:
+ event->accept();
+ d->state = FlickablePrivate::Stop;
+ d->speed = QPoint(0, 0);
+ d->pressPos = event->pos();
+ d->offset = scrollOffset();
+ d->ticker->stop();
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Flickable::handleMouseRelease(QMouseEvent *event)
+{
+ event->ignore();
+
+ if (event->button() != Qt::LeftButton)
+ return;
+
+ if (d->ignoreList.removeAll(event))
+ return;
+
+ QPoint delta;
+
+ switch (d->state) {
+
+ case FlickablePrivate::Pressed:
+ event->accept();
+ d->state = FlickablePrivate::Steady;
+ if (d->target) {
+ QMouseEvent *event1 = new QMouseEvent(QEvent::MouseButtonPress,
+ d->pressPos, Qt::LeftButton,
+ Qt::LeftButton, Qt::NoModifier);
+ QMouseEvent *event2 = new QMouseEvent(*event);
+ d->ignoreList << event1;
+ d->ignoreList << event2;
+ QApplication::postEvent(d->target, event1);
+ QApplication::postEvent(d->target, event2);
+ }
+ break;
+
+ case FlickablePrivate::ManualScroll:
+ event->accept();
+ delta = event->pos() - d->pressPos;
+ if (d->timeStamp.elapsed() > 100) {
+ d->timeStamp = QTime::currentTime();
+ d->speed = delta - d->delta;
+ d->delta = delta;
+ }
+ d->offset = scrollOffset();
+ d->pressPos = event->pos();
+ if (d->speed == QPoint(0, 0)) {
+ d->state = FlickablePrivate::Steady;
+ } else {
+ d->speed /= 4;
+ d->state = FlickablePrivate::AutoScroll;
+ d->ticker->start(20);
+ }
+ break;
+
+ case FlickablePrivate::Stop:
+ event->accept();
+ d->state = FlickablePrivate::Steady;
+ d->offset = scrollOffset();
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Flickable::handleMouseMove(QMouseEvent *event)
+{
+ event->ignore();
+
+ if (!(event->buttons() & Qt::LeftButton))
+ return;
+
+ if (d->ignoreList.removeAll(event))
+ return;
+
+ QPoint delta;
+
+ switch (d->state) {
+
+ case FlickablePrivate::Pressed:
+ case FlickablePrivate::Stop:
+ delta = event->pos() - d->pressPos;
+ if (delta.x() > d->threshold || delta.x() < -d->threshold ||
+ delta.y() > d->threshold || delta.y() < -d->threshold) {
+ d->timeStamp = QTime::currentTime();
+ d->state = FlickablePrivate::ManualScroll;
+ d->delta = QPoint(0, 0);
+ d->pressPos = event->pos();
+ event->accept();
+ }
+ break;
+
+ case FlickablePrivate::ManualScroll:
+ event->accept();
+ delta = event->pos() - d->pressPos;
+ setScrollOffset(d->offset - delta);
+ if (d->timeStamp.elapsed() > 100) {
+ d->timeStamp = QTime::currentTime();
+ d->speed = delta - d->delta;
+ d->delta = delta;
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Flickable::tick()
+{
+ if (d->state == FlickablePrivate:: AutoScroll) {
+ d->speed = deaccelerate(d->speed);
+ setScrollOffset(d->offset - d->speed);
+ d->offset = scrollOffset();
+ if (d->speed == QPoint(0, 0)) {
+ d->state = FlickablePrivate::Steady;
+ d->ticker->stop();
+ }
+ } else {
+ d->ticker->stop();
+ }
+}
diff --git a/demos/embedded/flickable/flickable.h b/demos/embedded/flickable/flickable.h
new file mode 100644
index 000000000..4ffa9b19a
--- /dev/null
+++ b/demos/embedded/flickable/flickable.h
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+#ifndef FLICKABLE_H
+#define FLICKABLE_H
+
+class QMouseEvent;
+class QPoint;
+class QWidget;
+
+class FlickableTicker;
+class FlickablePrivate;
+
+class Flickable
+{
+public:
+
+ Flickable();
+ virtual ~Flickable();
+
+ void setThreshold(int threshold);
+ int threshold() const;
+
+ void setAcceptMouseClick(QWidget *target);
+
+ void handleMousePress(QMouseEvent *event);
+ void handleMouseMove(QMouseEvent *event);
+ void handleMouseRelease(QMouseEvent *event);
+
+protected:
+ virtual QPoint scrollOffset() const = 0;
+ virtual void setScrollOffset(const QPoint &offset) = 0;
+
+private:
+ void tick();
+
+private:
+ FlickablePrivate *d;
+ friend class FlickableTicker;
+};
+
+#endif // FLICKABLE_H
diff --git a/demos/embedded/flickable/flickable.pro b/demos/embedded/flickable/flickable.pro
new file mode 100644
index 000000000..1052330a8
--- /dev/null
+++ b/demos/embedded/flickable/flickable.pro
@@ -0,0 +1,12 @@
+SOURCES = flickable.cpp main.cpp
+HEADERS = flickable.h
+
+symbian {
+ TARGET.UID3 = 0xA000CF73
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+}
+
+target.path = $$[QT_INSTALL_DEMOS]/embedded/flickable
+sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro
+sources.path = $$[QT_INSTALL_DEMOS]/embedded/flickable
+INSTALLS += target sources
diff --git a/demos/embedded/flickable/main.cpp b/demos/embedded/flickable/main.cpp
new file mode 100644
index 000000000..eb2c3c06d
--- /dev/null
+++ b/demos/embedded/flickable/main.cpp
@@ -0,0 +1,233 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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>
+#include <QtGui>
+
+#include "flickable.h"
+
+// Returns a list of two-word color names
+static QStringList colorPairs(int max)
+{
+ // capitalize the first letter
+ QStringList colors = QColor::colorNames();
+ colors.removeAll("transparent");
+ int num = colors.count();
+ for (int c = 0; c < num; ++c)
+ colors[c] = colors[c][0].toUpper() + colors[c].mid(1);
+
+ // combine two colors, e.g. "lime skyblue"
+ QStringList combinedColors;
+ for (int i = 0; i < num; ++i)
+ for (int j = 0; j < num; ++j)
+ combinedColors << QString("%1 %2").arg(colors[i]).arg(colors[j]);
+
+ // randomize it
+ colors.clear();
+ while (combinedColors.count()) {
+ int i = qrand() % combinedColors.count();
+ colors << combinedColors[i];
+ combinedColors.removeAt(i);
+ if (colors.count() == max)
+ break;
+ }
+
+ return colors;
+}
+
+class ColorList : public QWidget, public Flickable
+{
+ Q_OBJECT
+
+public:
+ ColorList(QWidget *parent = 0)
+ : QWidget(parent) {
+ m_offset = 0;
+ m_height = QFontMetrics(font()).height() + 5;
+ m_highlight = -1;
+ m_selected = -1;
+
+ QStringList colors = colorPairs(999);
+ for (int i = 0; i < colors.count(); ++i) {
+ QString c = colors[i];
+ QString str;
+ str.sprintf("%4d", i + 1);
+ m_colorNames << (str + " " + c);
+
+ QStringList duet = c.split(' ');
+ m_firstColor << duet[0];
+ m_secondColor << duet[1];
+ }
+
+ setAttribute(Qt::WA_OpaquePaintEvent, true);
+ setAttribute(Qt::WA_NoSystemBackground, true);
+
+ setMouseTracking(true);
+ Flickable::setAcceptMouseClick(this);
+ }
+
+protected:
+ // reimplement from Flickable
+ virtual QPoint scrollOffset() const {
+ return QPoint(0, m_offset);
+ }
+
+ // reimplement from Flickable
+ virtual void setScrollOffset(const QPoint &offset) {
+ int yy = offset.y();
+ if (yy != m_offset) {
+ m_offset = qBound(0, yy, m_height * m_colorNames.count() - height());
+ update();
+ }
+ }
+
+protected:
+ void paintEvent(QPaintEvent *event) {
+ QPainter p(this);
+ p.fillRect(event->rect(), Qt::white);
+ int start = m_offset / m_height;
+ int y = start * m_height - m_offset;
+ if (m_offset <= 0) {
+ start = 0;
+ y = -m_offset;
+ }
+ int end = start + height() / m_height + 1;
+ if (end > m_colorNames.count() - 1)
+ end = m_colorNames.count() - 1;
+ for (int i = start; i <= end; ++i, y += m_height) {
+
+ p.setBrush(Qt::NoBrush);
+ p.setPen(Qt::black);
+ if (i == m_highlight) {
+ p.fillRect(0, y, width(), m_height, QColor(0, 64, 128));
+ p.setPen(Qt::white);
+ }
+ if (i == m_selected) {
+ p.fillRect(0, y, width(), m_height, QColor(0, 128, 240));
+ p.setPen(Qt::white);
+ }
+
+ p.drawText(m_height + 2, y, width(), m_height, Qt::AlignVCenter, m_colorNames[i]);
+
+ p.setPen(Qt::NoPen);
+ p.setBrush(m_firstColor[i]);
+ p.drawRect(1, y + 1, m_height - 2, m_height - 2);
+ p.setBrush(m_secondColor[i]);
+ p.drawRect(5, y + 5, m_height - 11, m_height - 11);
+ }
+ p.end();
+ }
+
+ void keyReleaseEvent(QKeyEvent *event) {
+ if (event->key() == Qt::Key_Down) {
+ m_offset += 20;
+ event->accept();
+ update();
+ return;
+ }
+ if (event->key() == Qt::Key_Up) {
+ m_offset -= 20;
+ event->accept();
+ update();
+ return;
+ }
+ }
+
+ void mousePressEvent(QMouseEvent *event) {
+ Flickable::handleMousePress(event);
+ if (event->isAccepted())
+ return;
+
+ if (event->button() == Qt::LeftButton) {
+ int y = event->pos().y() + m_offset;
+ int i = y / m_height;
+ if (i != m_highlight) {
+ m_highlight = i;
+ m_selected = -1;
+ update();
+ }
+ event->accept();
+ }
+ }
+
+ void mouseMoveEvent(QMouseEvent *event) {
+ Flickable::handleMouseMove(event);
+ }
+
+ void mouseReleaseEvent(QMouseEvent *event) {
+ Flickable::handleMouseRelease(event);
+ if (event->isAccepted())
+ return;
+
+ if (event->button() == Qt::LeftButton) {
+ m_selected = m_highlight;
+ event->accept();
+ update();
+ }
+ }
+
+private:
+ int m_offset;
+ int m_height;
+ int m_highlight;
+ int m_selected;
+ QStringList m_colorNames;
+ QList<QColor> m_firstColor;
+ QList<QColor> m_secondColor;
+};
+
+#include "main.moc"
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+ ColorList list;
+ list.setWindowTitle("Kinetic Scrolling");
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE_WM)
+ list.showMaximized();
+#else
+ list.resize(320, 320);
+ list.show();
+#endif
+
+ return app.exec();
+}
diff --git a/demos/embedded/flightinfo/aircraft.png b/demos/embedded/flightinfo/aircraft.png
new file mode 100644
index 000000000..2312bcc9f
--- /dev/null
+++ b/demos/embedded/flightinfo/aircraft.png
Binary files differ
diff --git a/demos/embedded/flightinfo/flightinfo.cpp b/demos/embedded/flightinfo/flightinfo.cpp
new file mode 100644
index 000000000..fdfbd1c93
--- /dev/null
+++ b/demos/embedded/flightinfo/flightinfo.cpp
@@ -0,0 +1,415 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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>
+#include <QtGui>
+#include <QtNetwork>
+
+#if defined (Q_OS_SYMBIAN)
+#include "sym_iap_util.h"
+#endif
+
+#include "ui_form.h"
+
+#define FLIGHTVIEW_URL "http://mobile.flightview.com/TrackByFlight.aspx"
+#define FLIGHTVIEW_RANDOM "http://mobile.flightview.com/TrackSampleFlight.aspx"
+
+// strips all invalid constructs that might trip QXmlStreamReader
+static QString sanitized(const QString &xml)
+{
+ QString data = xml;
+
+ // anything up to the html tag
+ int i = data.indexOf("<html");
+ if (i > 0)
+ data.remove(0, i - 1);
+
+ // everything inside the head tag
+ i = data.indexOf("<head");
+ if (i > 0)
+ data.remove(i, data.indexOf("</head>") - i + 7);
+
+ // invalid link for JavaScript code
+ while (true) {
+ i = data.indexOf("onclick=\"gotoUrl(");
+ if (i < 0)
+ break;
+ data.remove(i, data.indexOf('\"', i + 9) - i + 1);
+ }
+
+ // all inline frames
+ while (true) {
+ i = data.indexOf("<iframe");
+ if (i < 0)
+ break;
+ data.remove(i, data.indexOf("</iframe>") - i + 8);
+ }
+
+ // entities
+ data.remove("&nbsp;");
+ data.remove("&copy;");
+
+ return data;
+}
+
+class FlightInfo : public QMainWindow
+{
+ Q_OBJECT
+
+private:
+
+ Ui_Form ui;
+ QUrl m_url;
+ QDate m_searchDate;
+ QPixmap m_map;
+
+public:
+
+ FlightInfo(QMainWindow *parent = 0): QMainWindow(parent) {
+
+ QWidget *w = new QWidget(this);
+ ui.setupUi(w);
+ setCentralWidget(w);
+
+ ui.searchBar->hide();
+ ui.infoBox->hide();
+ connect(ui.searchButton, SIGNAL(clicked()), SLOT(startSearch()));
+ connect(ui.flightEdit, SIGNAL(returnPressed()), SLOT(startSearch()));
+
+ setWindowTitle("Flight Info");
+ QTimer::singleShot(0, this, SLOT(delayedInit()));
+
+ // Rendered from the public-domain vectorized aircraft
+ // http://openclipart.org/media/people/Jarno
+ m_map = QPixmap(":/aircraft.png");
+
+ QAction *searchTodayAction = new QAction("Today's Flight", this);
+ QAction *searchYesterdayAction = new QAction("Yesterday's Flight", this);
+ QAction *randomAction = new QAction("Random Flight", this);
+ connect(searchTodayAction, SIGNAL(triggered()), SLOT(today()));
+ connect(searchYesterdayAction, SIGNAL(triggered()), SLOT(yesterday()));
+ connect(randomAction, SIGNAL(triggered()), SLOT(randomFlight()));
+#if defined(Q_OS_SYMBIAN)
+ menuBar()->addAction(searchTodayAction);
+ menuBar()->addAction(searchYesterdayAction);
+ menuBar()->addAction(randomAction);
+#else
+ addAction(searchTodayAction);
+ addAction(searchYesterdayAction);
+ addAction(randomAction);
+ setContextMenuPolicy(Qt::ActionsContextMenu);
+#endif
+ }
+
+private slots:
+ void delayedInit() {
+#if defined(Q_OS_SYMBIAN)
+ qt_SetDefaultIap();
+#endif
+ }
+
+
+ void handleNetworkData(QNetworkReply *networkReply) {
+ if (!networkReply->error()) {
+ // Assume UTF-8 encoded
+ QByteArray data = networkReply->readAll();
+ QString xml = QString::fromUtf8(data);
+ digest(xml);
+ }
+ networkReply->deleteLater();
+ networkReply->manager()->deleteLater();
+ }
+
+ void handleMapData(QNetworkReply *networkReply) {
+ if (!networkReply->error()) {
+ m_map.loadFromData(networkReply->readAll());
+ update();
+ }
+ networkReply->deleteLater();
+ networkReply->manager()->deleteLater();
+ }
+
+ void today() {
+ QDateTime timestamp = QDateTime::currentDateTime();
+ m_searchDate = timestamp.date();
+ searchFlight();
+ }
+
+ void yesterday() {
+ QDateTime timestamp = QDateTime::currentDateTime();
+ timestamp = timestamp.addDays(-1);
+ m_searchDate = timestamp.date();
+ searchFlight();
+ }
+
+ void searchFlight() {
+ ui.searchBar->show();
+ ui.infoBox->hide();
+ ui.flightStatus->hide();
+ ui.flightName->setText("Enter flight number");
+ m_map = QPixmap();
+ update();
+ }
+
+ void startSearch() {
+ ui.searchBar->hide();
+ QString flight = ui.flightEdit->text().simplified();
+ if (!flight.isEmpty())
+ request(flight, m_searchDate);
+ }
+
+ void randomFlight() {
+ request(QString(), QDate::currentDate());
+ }
+
+public slots:
+
+ void request(const QString &flightCode, const QDate &date) {
+
+ setWindowTitle("Loading...");
+
+ QString code = flightCode.simplified();
+ QString airlineCode = code.left(2).toUpper();
+ QString flightNumber = code.mid(2, code.length());
+
+ ui.flightName->setText("Searching for " + code);
+
+ m_url = QUrl(FLIGHTVIEW_URL);
+ m_url.addEncodedQueryItem("view", "detail");
+ m_url.addEncodedQueryItem("al", QUrl::toPercentEncoding(airlineCode));
+ m_url.addEncodedQueryItem("fn", QUrl::toPercentEncoding(flightNumber));
+ m_url.addEncodedQueryItem("dpdat", QUrl::toPercentEncoding(date.toString("yyyyMMdd")));
+
+ if (code.isEmpty()) {
+ // random flight as sample
+ m_url = QUrl(FLIGHTVIEW_RANDOM);
+ ui.flightName->setText("Getting a random flight...");
+ }
+
+ QNetworkAccessManager *manager = new QNetworkAccessManager(this);
+ connect(manager, SIGNAL(finished(QNetworkReply*)),
+ this, SLOT(handleNetworkData(QNetworkReply*)));
+ manager->get(QNetworkRequest(m_url));
+ }
+
+
+private:
+
+ void digest(const QString &content) {
+
+ setWindowTitle("Flight Info");
+ QString data = sanitized(content);
+
+ // do we only get the flight list?
+ // we grab the first leg in the flight list
+ // then fetch another URL for the real flight info
+ int i = data.indexOf("a href=\"?view=detail");
+ if (i > 0) {
+ QString href = data.mid(i, data.indexOf('\"', i + 8) - i + 1);
+ QRegExp regex("dpap=([A-Za-z0-9]+)");
+ regex.indexIn(href);
+ QString airport = regex.cap(1);
+ m_url.addEncodedQueryItem("dpap", QUrl::toPercentEncoding(airport));
+ QNetworkAccessManager *manager = new QNetworkAccessManager(this);
+ connect(manager, SIGNAL(finished(QNetworkReply*)),
+ this, SLOT(handleNetworkData(QNetworkReply*)));
+ manager->get(QNetworkRequest(m_url));
+ return;
+ }
+
+ QXmlStreamReader xml(data);
+ bool inFlightName = false;
+ bool inFlightStatus = false;
+ bool inFlightMap = false;
+ bool inFieldName = false;
+ bool inFieldValue = false;
+
+ QString flightName;
+ QString flightStatus;
+ QStringList fieldNames;
+ QStringList fieldValues;
+
+ while (!xml.atEnd()) {
+ xml.readNext();
+
+ if (xml.tokenType() == QXmlStreamReader::StartElement) {
+ QStringRef className = xml.attributes().value("class");
+ inFlightName |= xml.name() == "h1";
+ inFlightStatus |= className == "FlightDetailHeaderStatus";
+ inFlightMap |= className == "flightMap";
+ if (xml.name() == "td" && !className.isEmpty()) {
+ QString cn = className.toString();
+ if (cn.contains("fieldTitle")) {
+ inFieldName = true;
+ fieldNames += QString();
+ fieldValues += QString();
+ }
+ if (cn.contains("fieldValue"))
+ inFieldValue = true;
+ }
+ if (xml.name() == "img" && inFlightMap) {
+ QString src = xml.attributes().value("src").toString();
+ src.prepend("http://mobile.flightview.com");
+ QUrl url = QUrl::fromPercentEncoding(src.toAscii());
+ QNetworkAccessManager *manager = new QNetworkAccessManager(this);
+ connect(manager, SIGNAL(finished(QNetworkReply*)),
+ this, SLOT(handleMapData(QNetworkReply*)));
+ manager->get(QNetworkRequest(url));
+ }
+ }
+
+ if (xml.tokenType() == QXmlStreamReader::EndElement) {
+ inFlightName &= xml.name() != "h1";
+ inFlightStatus &= xml.name() != "div";
+ inFlightMap &= xml.name() != "div";
+ inFieldName &= xml.name() != "td";
+ inFieldValue &= xml.name() != "td";
+ }
+
+ if (xml.tokenType() == QXmlStreamReader::Characters) {
+ if (inFlightName)
+ flightName += xml.text();
+ if (inFlightStatus)
+ flightStatus += xml.text();
+ if (inFieldName)
+ fieldNames.last() += xml.text();
+ if (inFieldValue)
+ fieldValues.last() += xml.text();
+ }
+ }
+
+ if (fieldNames.isEmpty()) {
+ QString code = ui.flightEdit->text().simplified().left(10);
+ QString msg = QString("Flight %1 is not found").arg(code);
+ ui.flightName->setText(msg);
+ return;
+ }
+
+ ui.flightName->setText(flightName);
+ flightStatus.remove("Status: ");
+ ui.flightStatus->setText(flightStatus);
+ ui.flightStatus->show();
+
+ QStringList whiteList;
+ whiteList << "Departure";
+ whiteList << "Arrival";
+ whiteList << "Scheduled";
+ whiteList << "Takeoff";
+ whiteList << "Estimated";
+ whiteList << "Term-Gate";
+
+ QString text;
+ text = QString("<table width=%1>").arg(width() - 25);
+ for (int i = 0; i < fieldNames.count(); i++) {
+ QString fn = fieldNames[i].simplified();
+ if (fn.endsWith(':'))
+ fn = fn.left(fn.length() - 1);
+ if (!whiteList.contains(fn))
+ continue;
+
+ QString fv = fieldValues[i].simplified();
+ bool special = false;
+ special |= fn.startsWith("Departure");
+ special |= fn.startsWith("Arrival");
+ text += "<tr>";
+ if (special) {
+ text += "<td align=center colspan=2>";
+ text += "<b><font size=+1>" + fv + "</font></b>";
+ text += "</td>";
+ } else {
+ text += "<td align=right>";
+ text += fn;
+ text += " : ";
+ text += "&nbsp;";
+ text += "</td>";
+ text += "<td>";
+ text += fv;
+ text += "</td>";
+ }
+ text += "</tr>";
+ }
+ text += "</table>";
+ ui.detailedInfo->setText(text);
+ ui.infoBox->show();
+ }
+
+ void resizeEvent(QResizeEvent *event) {
+ Q_UNUSED(event);
+ ui.detailedInfo->setMaximumWidth(width() - 25);
+ }
+
+ void paintEvent(QPaintEvent *event) {
+ QMainWindow::paintEvent(event);
+ QPainter p(this);
+ p.fillRect(rect(), QColor(131, 171, 210));
+ if (!m_map.isNull()) {
+ int x = (width() - m_map.width()) / 2;
+ int space = ui.infoBox->pos().y();
+ if (!ui.infoBox->isVisible())
+ space = height();
+ int top = ui.titleBox->height();
+ int y = qMax(top, (space - m_map.height()) / 2);
+ p.drawPixmap(x, y, m_map);
+ }
+ p.end();
+ }
+
+};
+
+
+#include "flightinfo.moc"
+
+int main(int argc, char **argv)
+{
+ Q_INIT_RESOURCE(flightinfo);
+
+ QApplication app(argc, argv);
+
+ FlightInfo w;
+#if defined(Q_OS_SYMBIAN)
+ w.showMaximized();
+#else
+ w.resize(360, 504);
+ w.show();
+#endif
+
+ return app.exec();
+}
diff --git a/demos/embedded/flightinfo/flightinfo.pro b/demos/embedded/flightinfo/flightinfo.pro
new file mode 100644
index 000000000..8e5535cbd
--- /dev/null
+++ b/demos/embedded/flightinfo/flightinfo.pro
@@ -0,0 +1,19 @@
+TEMPLATE = app
+TARGET = flightinfo
+SOURCES = flightinfo.cpp
+FORMS += form.ui
+RESOURCES = flightinfo.qrc
+QT += network
+
+symbian {
+ TARGET.UID3 = 0xA000CF74
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ HEADERS += $$QT_SOURCE_TREE/examples/network/qftp/sym_iap_util.h
+ LIBS += -lesock -lconnmon -linsock
+ TARGET.CAPABILITY = NetworkServices
+}
+
+target.path = $$[QT_INSTALL_DEMOS]/embedded/flightinfo
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro
+sources.path = $$[QT_INSTALL_DEMOS]/embedded/flightinfo
+INSTALLS += target sources
diff --git a/demos/embedded/flightinfo/flightinfo.qrc b/demos/embedded/flightinfo/flightinfo.qrc
new file mode 100644
index 000000000..babea7e0c
--- /dev/null
+++ b/demos/embedded/flightinfo/flightinfo.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/" >
+ <file>aircraft.png</file>
+ </qresource>
+</RCC>
diff --git a/demos/embedded/flightinfo/form.ui b/demos/embedded/flightinfo/form.ui
new file mode 100644
index 000000000..3a24c758a
--- /dev/null
+++ b/demos/embedded/flightinfo/form.ui
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>220</width>
+ <height>171</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QFrame" name="titleBox">
+ <property name="styleSheet">
+ <string>QFrame {
+background-color: #45629a;
+}
+
+QLabel {
+color: white;
+}</string>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <property name="lineWidth">
+ <number>0</number>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="margin">
+ <number>4</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="flightName">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Powered by FlightView</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="flightStatus">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="styleSheet">
+ <string>background-color: white;
+color: #45629a;</string>
+ </property>
+ <property name="lineWidth">
+ <number>0</number>
+ </property>
+ <property name="text">
+ <string>Ready</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ <property name="margin">
+ <number>4</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QFrame" name="searchBar">
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="margin">
+ <number>5</number>
+ </property>
+ <item>
+ <widget class="QLineEdit" name="flightEdit">
+ <property name="styleSheet">
+ <string>color: black;
+border: 1px solid black;
+background: white;
+selection-background-color: lightgray;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="searchButton">
+ <property name="styleSheet">
+ <string>color: rgb(255, 255, 255);
+background-color: rgb(85, 85, 255);
+padding: 2px;
+border: 2px solid rgb(0, 0, 127);</string>
+ </property>
+ <property name="text">
+ <string>Search</string>
+ </property>
+ <property name="toolButtonStyle">
+ <enum>Qt::ToolButtonTextBesideIcon</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>58</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QFrame" name="infoBox">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="styleSheet">
+ <string>QFrame { border: 2px solid white;
+border-radius: 10px;
+margin: 5px;
+background-color: rgba(69, 98, 154, 192); }</string>
+ </property>
+ <property name="frameShape">
+ <enum>QFrame::NoFrame</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>QFrame::Raised</enum>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="margin">
+ <number>5</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="detailedInfo">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="styleSheet">
+ <string>color: white;
+border: none;
+background-color: none;</string>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::RichText</enum>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ <property name="textInteractionFlags">
+ <set>Qt::NoTextInteraction</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/demos/embedded/fluidlauncher/config_s60/config.xml b/demos/embedded/fluidlauncher/config_s60/config.xml
new file mode 100644
index 000000000..176f52e0f
--- /dev/null
+++ b/demos/embedded/fluidlauncher/config_s60/config.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<demolauncher>
+ <demos>
+ <example filename="embeddedsvgviewer" name="SVG Viewer" image="screenshots/embeddedsvgviewer_s60.png" args="/data/images/qt/demos/embeddedsvgviewer/shapes.svg"/>
+ <example filename="styledemo" name="Stylesheets" image="screenshots/styledemo_s60.png"/>
+ <example filename="deform" name="Vector Deformation" image="screenshots/deform.png" args="-small-screen"/>
+ <example filename="pathstroke" name="Path Stroking" image="screenshots/pathstroke.png" args="-small-screen"/>
+ <example filename="wiggly" name="Wiggly Text" image="screenshots/wiggly_s60.png" args="-small-screen"/>
+ <example filename="qftp" name="Ftp Client" image="screenshots/ftp_s60.png"/>
+ <example filename="context2d" name="Context2d" image="screenshots/context2d_s60.png" args="-small-screen"/>
+ <example filename="saxbookmarks" name="SaxBookmarks" image="screenshots/saxbookmarks_s60.png"/>
+ <example filename="desktopservices" name="Desktop Services" image="screenshots/desktopservices_s60.png"/>
+ <example filename="fridgemagnets" name="Fridge Magnets" image="screenshots/fridgemagnets_s60.png" args="-small-screen"/>
+ <example filename="softkeys" name="Softkeys" image="screenshots/softkeys_s60.png"/>
+ <example filename="anomaly" name="Anomaly Browser" image="screenshots/anomaly_s60.png"/>
+ <example filename="raycasting" name="Ray casting" image="screenshots/raycasting.png"/>
+ <example filename="lightmaps" name="OpenStreetMap" image="screenshots/lightmaps.png"/>
+ <example filename="flightinfo" name="Flight Info" image="screenshots/flightinfo_s60.png"/>
+ <example filename="weatherinfo" name="Weather Info" image="screenshots/weatherinfo.png"/>
+ <example filename="flickable" name="Kinetic Scrolling" image="screenshots/flickable.png"/>
+ <example filename="digiflip" name="Flipping Clock" image="screenshots/digiflip.png"/>
+ <example filename="qmediaplayer" name="Media Player" image="screenshots/mediaplayer.png" args="-small-screen"/>
+ </demos>
+ <slideshow timeout="60000" interval="10000">
+ <imagedir dir="slides"/>
+ </slideshow>
+</demolauncher>
diff --git a/demos/embedded/fluidlauncher/demoapplication.cpp b/demos/embedded/fluidlauncher/demoapplication.cpp
index 6f7159a2f..54c48c533 100644
--- a/demos/embedded/fluidlauncher/demoapplication.cpp
+++ b/demos/embedded/fluidlauncher/demoapplication.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,28 +21,27 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
#include <QDebug>
#include <QDir>
-
+
#include "demoapplication.h"
@@ -60,8 +60,8 @@ DemoApplication::DemoApplication(QString executableName, QString caption, QStrin
process.setProcessChannelMode(QProcess::ForwardedChannels);
- QObject::connect( &process, SIGNAL(finished(int, QProcess::ExitStatus)),
- this, SLOT(processFinished(int, QProcess::ExitStatus)));
+ QObject::connect( &process, SIGNAL(finished(int,QProcess::ExitStatus)),
+ this, SLOT(processFinished(int,QProcess::ExitStatus)));
QObject::connect( &process, SIGNAL(error(QProcess::ProcessError)),
this, SLOT(processError(QProcess::ProcessError)));
diff --git a/demos/embedded/fluidlauncher/demoapplication.h b/demos/embedded/fluidlauncher/demoapplication.h
index e4e7d2998..0fa67c030 100644
--- a/demos/embedded/fluidlauncher/demoapplication.h
+++ b/demos/embedded/fluidlauncher/demoapplication.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,26 +21,25 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
-#ifndef DEMO_APPLICATION_H
+#ifndef DEMO_APPLICATION_H
#define DEMO_APPLICATION_H
#include <QPixmap>
diff --git a/demos/embedded/fluidlauncher/fluidlauncher.cpp b/demos/embedded/fluidlauncher/fluidlauncher.cpp
index 27ec5b478..5e8cc03a7 100644
--- a/demos/embedded/fluidlauncher/fluidlauncher.cpp
+++ b/demos/embedded/fluidlauncher/fluidlauncher.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,31 +21,32 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
-#include <QtXml>
+#include <QXmlStreamReader>
#include "fluidlauncher.h"
#define DEFAULT_INPUT_TIMEOUT 10000
+#define SIZING_FACTOR_HEIGHT 6/10
+#define SIZING_FACTOR_WIDTH 6/10
FluidLauncher::FluidLauncher(QStringList* args)
{
@@ -52,6 +54,11 @@ FluidLauncher::FluidLauncher(QStringList* args)
slideShowWidget = new SlideShow();
inputTimer = new QTimer();
+ addWidget(pictureFlowWidget);
+ addWidget(slideShowWidget);
+ setCurrentWidget(pictureFlowWidget);
+ pictureFlowWidget->setFocus();
+
QRect screen_size = QApplication::desktop()->screenGeometry();
QObject::connect(pictureFlowWidget, SIGNAL(itemActivated(int)), this, SLOT(launchApplication(int)));
@@ -62,7 +69,11 @@ FluidLauncher::FluidLauncher(QStringList* args)
inputTimer->setSingleShot(true);
inputTimer->setInterval(DEFAULT_INPUT_TIMEOUT);
- pictureFlowWidget->setSlideSize(QSize( (screen_size.width()*2)/5, (screen_size.height()*2)/5 ));
+ const int h = screen_size.height() * SIZING_FACTOR_HEIGHT;
+ const int w = screen_size.width() * SIZING_FACTOR_WIDTH;
+ const int hh = qMin(h, w);
+ const int ww = hh / 3 * 2;
+ pictureFlowWidget->setSlideSize(QSize(ww, hh));
bool success;
int configIndex = args->indexOf("-config");
@@ -74,7 +85,7 @@ FluidLauncher::FluidLauncher(QStringList* args)
if (success) {
populatePictureFlow();
- pictureFlowWidget->showFullScreen();
+ showFullScreen();
inputTimer->start();
} else {
pictureFlowWidget->setAttribute(Qt::WA_DeleteOnClose, true);
@@ -100,61 +111,97 @@ bool FluidLauncher::loadConfig(QString configPath)
slideShowWidget->clearImages();
- QDomDocument xmlDoc;
- xmlDoc.setContent(&xmlFile, true);
+ xmlFile.open(QIODevice::ReadOnly);
+ QXmlStreamReader reader(&xmlFile);
+ while (!reader.atEnd()) {
+ reader.readNext();
- QDomElement rootElement = xmlDoc.documentElement();
-
- // Process the demos node:
- QDomNodeList demoNodes = rootElement.firstChildElement("demos").elementsByTagName("example");
- for (int i=0; i<demoNodes.size(); i++) {
- QDomElement element = demoNodes.item(i).toElement();
-
- if (element.hasAttribute("filename")) {
- DemoApplication* newDemo = new DemoApplication(
- element.attribute("filename"),
- element.attribute("name", "Unamed Demo"),
- element.attribute("image"),
- element.attribute("args").split(" "));
- demoList.append(newDemo);
+ if (reader.isStartElement()) {
+ if (reader.name() == "demos")
+ parseDemos(reader);
+ else if(reader.name() == "slideshow")
+ parseSlideshow(reader);
}
}
+ if (reader.hasError()) {
+ qDebug() << QString("Error parsing %1 on line %2 column %3: \n%4")
+ .arg(configPath)
+ .arg(reader.lineNumber())
+ .arg(reader.columnNumber())
+ .arg(reader.errorString());
+ }
- // Process the slideshow node:
- QDomElement slideshowElement = rootElement.firstChildElement("slideshow");
+ // Append an exit Item
+ DemoApplication* exitItem = new DemoApplication(QString(), QLatin1String("Exit Embedded Demo"), QString(), QStringList());
+ demoList.append(exitItem);
- if (slideshowElement.hasAttribute("timeout")) {
- bool valid;
- int timeout = slideshowElement.attribute("timeout").toInt(&valid);
- if (valid)
- inputTimer->setInterval(timeout);
- }
+ return true;
+}
- if (slideshowElement.hasAttribute("interval")) {
- bool valid;
- int interval = slideshowElement.attribute("interval").toInt(&valid);
- if (valid)
- slideShowWidget->setSlideInterval(interval);
+
+void FluidLauncher::parseDemos(QXmlStreamReader& reader)
+{
+ while (!reader.atEnd()) {
+ reader.readNext();
+ if (reader.isStartElement() && reader.name() == "example") {
+ QXmlStreamAttributes attrs = reader.attributes();
+ QStringRef filename = attrs.value("filename");
+ if (!filename.isEmpty()) {
+ QStringRef name = attrs.value("name");
+ QStringRef image = attrs.value("image");
+ QStringRef args = attrs.value("args");
+
+ DemoApplication* newDemo = new DemoApplication(
+ filename.toString(),
+ name.isEmpty() ? "Unamed Demo" : name.toString(),
+ image.toString(),
+ args.toString().split(" "));
+ demoList.append(newDemo);
+ }
+ } else if(reader.isEndElement() && reader.name() == "demos") {
+ return;
+ }
}
+}
- for (QDomNode node=slideshowElement.firstChild(); !node.isNull(); node=node.nextSibling()) {
- QDomElement element = node.toElement();
+void FluidLauncher::parseSlideshow(QXmlStreamReader& reader)
+{
+ QXmlStreamAttributes attrs = reader.attributes();
+
+ QStringRef timeout = attrs.value("timeout");
+ bool valid;
+ if (!timeout.isEmpty()) {
+ int t = timeout.toString().toInt(&valid);
+ if (valid)
+ inputTimer->setInterval(t);
+ }
- if (element.tagName() == "imagedir")
- slideShowWidget->addImageDir(element.attribute("dir"));
- else if (element.tagName() == "image")
- slideShowWidget->addImage(element.attribute("image"));
+ QStringRef interval = attrs.value("interval");
+ if (!interval.isEmpty()) {
+ int i = interval.toString().toInt(&valid);
+ if (valid)
+ slideShowWidget->setSlideInterval(i);
}
- // Append an exit Item
- DemoApplication* exitItem = new DemoApplication(QString(), QLatin1String("Exit Embedded Demo"), QString(), QStringList());
- demoList.append(exitItem);
+ while (!reader.atEnd()) {
+ reader.readNext();
+ if (reader.isStartElement()) {
+ QXmlStreamAttributes attrs = reader.attributes();
+ if (reader.name() == "imagedir") {
+ QStringRef dir = attrs.value("dir");
+ slideShowWidget->addImageDir(dir.toString());
+ } else if(reader.name() == "image") {
+ QStringRef image = attrs.value("image");
+ slideShowWidget->addImage(image.toString());
+ }
+ } else if(reader.isEndElement() && reader.name() == "slideshow") {
+ return;
+ }
+ }
- return true;
}
-
void FluidLauncher::populatePictureFlow()
{
pictureFlowWidget->setSlideCount(demoList.count());
@@ -180,7 +227,6 @@ void FluidLauncher::launchApplication(int index)
}
inputTimer->stop();
- pictureFlowWidget->hide();
QObject::connect(demoList[index], SIGNAL(demoFinished()), this, SLOT(demoFinished()));
@@ -192,6 +238,7 @@ void FluidLauncher::switchToLauncher()
{
slideShowWidget->stopShow();
inputTimer->start();
+ setCurrentWidget(pictureFlowWidget);
}
@@ -211,11 +258,32 @@ void FluidLauncher::switchToSlideshow()
{
inputTimer->stop();
slideShowWidget->startShow();
+ setCurrentWidget(slideShowWidget);
}
void FluidLauncher::demoFinished()
{
- pictureFlowWidget->showFullScreen();
+ setCurrentWidget(pictureFlowWidget);
inputTimer->start();
+
+ // Bring the Fluidlauncher to the foreground to allow selecting another demo
+ raise();
+ activateWindow();
}
+void FluidLauncher::changeEvent(QEvent* event)
+{
+ if (event->type() == QEvent::ActivationChange) {
+ if (isActiveWindow()) {
+ if(currentWidget() == pictureFlowWidget) {
+ resetInputTimeout();
+ } else {
+ slideShowWidget->startShow();
+ }
+ } else {
+ inputTimer->stop();
+ slideShowWidget->stopShow();
+ }
+ }
+ QStackedWidget::changeEvent(event);
+}
diff --git a/demos/embedded/fluidlauncher/fluidlauncher.h b/demos/embedded/fluidlauncher/fluidlauncher.h
index 77d09802e..ff742e2ae 100644
--- a/demos/embedded/fluidlauncher/fluidlauncher.h
+++ b/demos/embedded/fluidlauncher/fluidlauncher.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -44,12 +44,13 @@
#include <QtGui>
#include <QTimer>
+#include <QStringRef>
#include "pictureflow.h"
#include "slideshow.h"
#include "demoapplication.h"
-class FluidLauncher : public QObject
+class FluidLauncher : public QStackedWidget
{
Q_OBJECT
@@ -64,6 +65,9 @@ public slots:
void inputTimedout();
void demoFinished();
+protected:
+ void changeEvent(QEvent *event);
+
private:
PictureFlow* pictureFlowWidget;
SlideShow* slideShowWidget;
@@ -73,7 +77,8 @@ private:
bool loadConfig(QString configPath);
void populatePictureFlow();
void switchToSlideshow();
-
+ void parseDemos(QXmlStreamReader& reader);
+ void parseSlideshow(QXmlStreamReader& reader);
};
diff --git a/demos/embedded/fluidlauncher/fluidlauncher.pro b/demos/embedded/fluidlauncher/fluidlauncher.pro
index 76d12adf8..b47f6a037 100644
--- a/demos/embedded/fluidlauncher/fluidlauncher.pro
+++ b/demos/embedded/fluidlauncher/fluidlauncher.pro
@@ -1,8 +1,7 @@
TEMPLATE = app
-TARGET =
+TARGET =
DEPENDPATH += .
INCLUDEPATH += .
-QT += xml
# Input
HEADERS += \
@@ -40,7 +39,8 @@ wince*{
$$QT_BUILD_TREE/demos/pathstroke/$${BUILD_DIR}/pathstroke.exe \
$$QT_BUILD_TREE/examples/graphicsview/elasticnodes/$${BUILD_DIR}/elasticnodes.exe \
$$QT_BUILD_TREE/examples/widgets/wiggly/$${BUILD_DIR}/wiggly.exe \
- $$QT_BUILD_TREE/examples/painting/concentriccircles/$${BUILD_DIR}/concentriccircles.exe
+ $$QT_BUILD_TREE/examples/painting/concentriccircles/$${BUILD_DIR}/concentriccircles.exe \
+ $$QT_BUILD_TREE/examples/draganddrop/$${BUILD_DIR}/fridgemagnets.exe
executables.path = .
@@ -54,3 +54,156 @@ wince*{
DEPLOYMENT_PLUGIN += qgif qjpeg qmng qsvg
}
+
+symbian {
+ load(data_caging_paths)
+
+ TARGET.UID3 = 0xA000A641
+ ICON = $$QT_SOURCE_TREE/src/s60installs/qt.svg
+
+ executables.sources = \
+ styledemo.exe \
+ deform.exe \
+ pathstroke.exe \
+ wiggly.exe \
+ qftp.exe \
+ saxbookmarks.exe \
+ desktopservices.exe \
+ fridgemagnets.exe \
+ softkeys.exe \
+ raycasting.exe \
+ flickable.exe \
+ digiflip.exe \
+ lightmaps.exe \
+ flightinfo.exe
+
+ executables.path = /sys/bin
+
+ reg_resource.sources = \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/styledemo_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/deform_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/pathstroke_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/wiggly_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/qftp_reg.rsc\
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/saxbookmarks_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/desktopservices_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/fridgemagnets_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/softkeys_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/raycasting_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/flickable_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/digiflip_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/lightmaps_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/flightinfo_reg.rsc
+
+ contains(QT_CONFIG, phonon) {
+ reg_resource.sources += $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/qmediaplayer_reg.rsc
+ }
+
+
+ reg_resource.path = $$REG_RESOURCE_IMPORT_DIR
+
+ resource.sources = \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/styledemo.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/deform.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/pathstroke.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/wiggly.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/qftp.rsc\
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/saxbookmarks.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/desktopservices.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/fridgemagnets.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/softkeys.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/raycasting.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/flickable.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/digiflip.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/lightmaps.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/flightinfo.rsc
+
+
+ resource.path = $$APP_RESOURCE_DIR
+
+ mifs.sources = \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/fluidlauncher.mif \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/styledemo.mif \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/deform.mif \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/pathstroke.mif \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/wiggly.mif \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/qftp.mif \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/saxbookmarks.mif \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/desktopservices.mif \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/fridgemagnets.mif \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/softkeys.mif \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/raycasting.mif \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/flickable.mif \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/digiflip.mif \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/lightmaps.mif \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/flightinfo.mif
+ mifs.path = $$APP_RESOURCE_DIR
+
+ contains(QT_CONFIG, svg) {
+ executables.sources += \
+ embeddedsvgviewer.exe \
+ weatherinfo.exe
+
+ reg_resource.sources += \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/embeddedsvgviewer_reg.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/weatherinfo_reg.rsc
+
+ resource.sources += \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/embeddedsvgviewer.rsc \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/weatherinfo.rsc
+
+ mifs.sources += \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/embeddedsvgviewer.mif \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/weatherinfo.mif
+
+ }
+ contains(QT_CONFIG, webkit) {
+ executables.sources += anomaly.exe
+ reg_resource.sources += $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/anomaly_reg.rsc
+ resource.sources += $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/anomaly.rsc
+ mifs.sources += \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/anomaly.mif
+ }
+
+ contains(QT_CONFIG, phonon) {
+ executables.sources += qmediaplayer.exe
+ resource.sources += $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/qmediaplayer.rsc
+ mifs.sources += \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/qmediaplayer.mif
+ }
+
+ contains(QT_CONFIG, script) {
+ executables.sources += context2d.exe
+ reg_resource.sources += $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/context2d_reg.rsc
+ resource.sources += $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/context2d.rsc
+ mifs.sources += \
+ $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/context2d.mif
+ }
+
+ files.sources = $$PWD/screenshots $$PWD/slides
+ files.path = .
+
+ config.sources = $$PWD/config_s60/config.xml
+ config.path = .
+
+ viewerimages.sources = $$PWD/../embeddedsvgviewer/shapes.svg
+ viewerimages.path = /data/images/qt/demos/embeddedsvgviewer
+
+ # demos/mediaplayer make also use of these files.
+ desktopservices_music.sources = \
+ $$PWD/../desktopservices/data/*.mp3 \
+ $$PWD/../desktopservices/data/*.wav
+ desktopservices_music.path = /data/sounds
+
+ desktopservices_images.sources = $$PWD/../desktopservices/data/*.png
+ desktopservices_images.path = /data/images
+
+ saxbookmarks.sources = $$PWD/../../../examples/xml/saxbookmarks/frank.xbel
+ saxbookmarks.sources += $$PWD/../../../examples/xml/saxbookmarks/jennifer.xbel
+ saxbookmarks.path = /data/qt/saxbookmarks
+
+ DEPLOYMENT += config files executables viewerimages saxbookmarks reg_resource resource \
+ mifs desktopservices_music desktopservices_images
+
+ TARGET.EPOCHEAPSIZE = 100000 20000000
+}
diff --git a/demos/embedded/fluidlauncher/main.cpp b/demos/embedded/fluidlauncher/main.cpp
index 85094ca57..4fa556555 100644
--- a/demos/embedded/fluidlauncher/main.cpp
+++ b/demos/embedded/fluidlauncher/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/embedded/fluidlauncher/pictureflow.cpp b/demos/embedded/fluidlauncher/pictureflow.cpp
index f0fedf4be..39c2f18e7 100644
--- a/demos/embedded/fluidlauncher/pictureflow.cpp
+++ b/demos/embedded/fluidlauncher/pictureflow.cpp
@@ -1,64 +1,41 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This is a version of the Pictureflow animated image show widget modified by Nokia.
+** This file is part of the ActiveQt framework of the Qt Toolkit.
**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
**
-** 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.
+** "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.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
+** 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$
**
-** 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 the <organization> 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 ``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 Nokia Corporation 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.
-**
****************************************************************************/
/*
@@ -106,6 +83,14 @@
#include <QDebug>
+static const int captionFontSize =
+#ifdef Q_WS_S60
+ 8;
+#else
+ 14;
+#endif
+
+
// uncomment this to enable bilinear filtering for texture mapping
// gives much better rendering, at the cost of memory space
// #define PICTUREFLOW_BILINEAR_FILTER
@@ -740,14 +725,14 @@ void PictureFlowPrivate::render()
QPainter painter;
painter.begin(&buffer);
- QFont font("Arial", 14);
+ QFont font("Arial", captionFontSize);
font.setBold(true);
painter.setFont(font);
painter.setPen(Qt::white);
//painter.setPen(QColor(255,255,255,127));
if (!captions.isEmpty())
- painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/2),
+ painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/4),
Qt::AlignCenter, captions[centerIndex]);
painter.end();
@@ -788,18 +773,18 @@ void PictureFlowPrivate::render()
QPainter painter;
painter.begin(&buffer);
- QFont font("Arial", 14);
+ QFont font("Arial", captionFontSize);
font.setBold(true);
painter.setFont(font);
int leftTextIndex = (step>0) ? centerIndex : centerIndex-1;
painter.setPen(QColor(255,255,255, (255-fade) ));
- painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/2),
+ painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/4),
Qt::AlignCenter, captions[leftTextIndex]);
painter.setPen(QColor(255,255,255, fade));
- painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/2),
+ painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/4),
Qt::AlignCenter, captions[leftTextIndex+1]);
painter.end();
@@ -1263,6 +1248,12 @@ void PictureFlow::keyPressEvent(QKeyEvent* event)
return;
}
+ if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Select) {
+ emit itemActivated(d->getTarget());
+ event->accept();
+ return;
+ }
+
event->ignore();
}
diff --git a/demos/embedded/fluidlauncher/pictureflow.h b/demos/embedded/fluidlauncher/pictureflow.h
index adede7850..3c3dbb910 100644
--- a/demos/embedded/fluidlauncher/pictureflow.h
+++ b/demos/embedded/fluidlauncher/pictureflow.h
@@ -1,63 +1,41 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This is a version of the Pictureflow animated image show widget modified by Nokia.
+** This file is part of the ActiveQt framework of the Qt Toolkit.
**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
**
-** 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.
+** "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.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
+** 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$
**
-** 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 the <organization> 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 ``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 Nokia Corporation 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.
**
****************************************************************************/
diff --git a/demos/embedded/fluidlauncher/screenshots/anomaly_s60.png b/demos/embedded/fluidlauncher/screenshots/anomaly_s60.png
new file mode 100644
index 000000000..8d537f470
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/anomaly_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/context2d_s60.png b/demos/embedded/fluidlauncher/screenshots/context2d_s60.png
new file mode 100644
index 000000000..9c288c903
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/context2d_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/desktopservices_s60.png b/demos/embedded/fluidlauncher/screenshots/desktopservices_s60.png
new file mode 100644
index 000000000..64018f4be
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/desktopservices_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/digiflip.png b/demos/embedded/fluidlauncher/screenshots/digiflip.png
new file mode 100644
index 000000000..c31a6f8b8
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/digiflip.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/embeddedsvgviewer_s60.png b/demos/embedded/fluidlauncher/screenshots/embeddedsvgviewer_s60.png
new file mode 100644
index 000000000..74f4ad1a1
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/embeddedsvgviewer_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/flickable.png b/demos/embedded/fluidlauncher/screenshots/flickable.png
new file mode 100644
index 000000000..bad14bfed
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/flickable.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/flightinfo_s60.png b/demos/embedded/fluidlauncher/screenshots/flightinfo_s60.png
new file mode 100644
index 000000000..8e74d7794
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/flightinfo_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/fridgemagnets_s60.png b/demos/embedded/fluidlauncher/screenshots/fridgemagnets_s60.png
new file mode 100644
index 000000000..d31875d2f
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/fridgemagnets_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/ftp_s60.png b/demos/embedded/fluidlauncher/screenshots/ftp_s60.png
new file mode 100644
index 000000000..5858dafd0
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/ftp_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/lightmaps.png b/demos/embedded/fluidlauncher/screenshots/lightmaps.png
new file mode 100644
index 000000000..18aa74da4
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/lightmaps.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/mediaplayer.png b/demos/embedded/fluidlauncher/screenshots/mediaplayer.png
index 1304a19ad..c9fd43c8d 100644
--- a/demos/embedded/fluidlauncher/screenshots/mediaplayer.png
+++ b/demos/embedded/fluidlauncher/screenshots/mediaplayer.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/raycasting.png b/demos/embedded/fluidlauncher/screenshots/raycasting.png
new file mode 100644
index 000000000..b6b738acb
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/raycasting.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/saxbookmarks_s60.png b/demos/embedded/fluidlauncher/screenshots/saxbookmarks_s60.png
new file mode 100644
index 000000000..54b6321e9
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/saxbookmarks_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/softkeys_s60.png b/demos/embedded/fluidlauncher/screenshots/softkeys_s60.png
new file mode 100644
index 000000000..df090e2c6
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/softkeys_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/styledemo_s60.png b/demos/embedded/fluidlauncher/screenshots/styledemo_s60.png
new file mode 100644
index 000000000..57480fba6
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/styledemo_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/weatherinfo.png b/demos/embedded/fluidlauncher/screenshots/weatherinfo.png
new file mode 100644
index 000000000..7e2389114
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/weatherinfo.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/screenshots/wiggly_s60.png b/demos/embedded/fluidlauncher/screenshots/wiggly_s60.png
new file mode 100644
index 000000000..9c4cab3a7
--- /dev/null
+++ b/demos/embedded/fluidlauncher/screenshots/wiggly_s60.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/slides/demo_1.png b/demos/embedded/fluidlauncher/slides/demo_1.png
index d2952e527..d53d19d7a 100644
--- a/demos/embedded/fluidlauncher/slides/demo_1.png
+++ b/demos/embedded/fluidlauncher/slides/demo_1.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/slides/demo_2.png b/demos/embedded/fluidlauncher/slides/demo_2.png
index 1899825ee..f137de057 100644
--- a/demos/embedded/fluidlauncher/slides/demo_2.png
+++ b/demos/embedded/fluidlauncher/slides/demo_2.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/slides/demo_5.png b/demos/embedded/fluidlauncher/slides/demo_5.png
index 239f08aa7..0bb1781b2 100644
--- a/demos/embedded/fluidlauncher/slides/demo_5.png
+++ b/demos/embedded/fluidlauncher/slides/demo_5.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/slides/demo_6.png b/demos/embedded/fluidlauncher/slides/demo_6.png
index 0addf370f..9daba675d 100644
--- a/demos/embedded/fluidlauncher/slides/demo_6.png
+++ b/demos/embedded/fluidlauncher/slides/demo_6.png
Binary files differ
diff --git a/demos/embedded/fluidlauncher/slideshow.cpp b/demos/embedded/fluidlauncher/slideshow.cpp
index cb05a775c..55daedfd7 100644
--- a/demos/embedded/fluidlauncher/slideshow.cpp
+++ b/demos/embedded/fluidlauncher/slideshow.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -83,7 +83,8 @@ void SlideShowPrivate::showNextSlide()
-SlideShow::SlideShow()
+SlideShow::SlideShow(QWidget* parent) :
+ QWidget(parent)
{
d = new SlideShowPrivate;
@@ -125,7 +126,6 @@ void SlideShow::clearImages()
void SlideShow::startShow()
{
- showFullScreen();
d->interSlideTimer.start(d->slideInterval, this);
d->showNextSlide();
update();
@@ -134,7 +134,6 @@ void SlideShow::startShow()
void SlideShow::stopShow()
{
- hide();
d->interSlideTimer.stop();
}
diff --git a/demos/embedded/fluidlauncher/slideshow.h b/demos/embedded/fluidlauncher/slideshow.h
index 0bb6ed3ac..214652e24 100644
--- a/demos/embedded/fluidlauncher/slideshow.h
+++ b/demos/embedded/fluidlauncher/slideshow.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,26 +21,25 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
-#ifndef SLIDESHOW_H
+#ifndef SLIDESHOW_H
#define SLIDESHOW_H
#include <QWidget>
@@ -53,7 +53,7 @@ class SlideShow : public QWidget
Q_PROPERTY(int slideInterval READ slideInterval WRITE setSlideInterval)
public:
- SlideShow();
+ SlideShow(QWidget* parent = 0);
~SlideShow();
void addImage(QString filename);
void addImageDir(QString dirName);
diff --git a/demos/embedded/lightmaps/lightmaps.cpp b/demos/embedded/lightmaps/lightmaps.cpp
new file mode 100644
index 000000000..ea34ae61b
--- /dev/null
+++ b/demos/embedded/lightmaps/lightmaps.cpp
@@ -0,0 +1,579 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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>
+#include <QtGui>
+#include <QtNetwork>
+
+#if defined (Q_OS_SYMBIAN)
+#include "sym_iap_util.h"
+#endif
+
+#include <math.h>
+
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
+
+// how long (milliseconds) the user need to hold (after a tap on the screen)
+// before triggering the magnifying glass feature
+// 701, a prime number, is the sum of 229, 233, 239
+// (all three are also prime numbers, consecutive!)
+#define HOLD_TIME 701
+
+// maximum size of the magnifier
+// Hint: see above to find why I picked this one :)
+#define MAX_MAGNIFIER 229
+
+uint qHash(const QPoint& p)
+{
+ return p.x() * 17 ^ p.y();
+}
+
+// tile size in pixels
+const int tdim = 256;
+
+QPointF tileForCoordinate(qreal lat, qreal lng, int zoom)
+{
+ qreal zn = static_cast<qreal>(1 << zoom);
+ qreal tx = (lng + 180.0) / 360.0;
+ qreal ty = (1.0 - log(tan(lat * M_PI / 180.0) +
+ 1.0 / cos(lat * M_PI / 180.0)) / M_PI) / 2.0;
+ return QPointF(tx * zn, ty * zn);
+}
+
+qreal longitudeFromTile(qreal tx, int zoom)
+{
+ qreal zn = static_cast<qreal>(1 << zoom);
+ qreal lat = tx / zn * 360.0 - 180.0;
+ return lat;
+}
+
+qreal latitudeFromTile(qreal ty, int zoom)
+{
+ qreal zn = static_cast<qreal>(1 << zoom);
+ qreal n = M_PI - 2 * M_PI * ty / zn;
+ qreal lng = 180.0 / M_PI * atan(0.5 * (exp(n) - exp(-n)));
+ return lng;
+}
+
+class SlippyMap: public QObject
+{
+ Q_OBJECT
+
+public:
+ int width;
+ int height;
+ int zoom;
+ qreal latitude;
+ qreal longitude;
+
+ SlippyMap(QObject *parent = 0)
+ : QObject(parent)
+ , width(400)
+ , height(300)
+ , zoom(15)
+ , latitude(59.9138204)
+ , longitude(10.7387413) {
+ m_emptyTile = QPixmap(tdim, tdim);
+ m_emptyTile.fill(Qt::lightGray);
+
+ QNetworkDiskCache *cache = new QNetworkDiskCache;
+ cache->setCacheDirectory(QDesktopServices::storageLocation
+ (QDesktopServices::CacheLocation));
+ m_manager.setCache(cache);
+ connect(&m_manager, SIGNAL(finished(QNetworkReply*)),
+ this, SLOT(handleNetworkData(QNetworkReply*)));
+ }
+
+ void invalidate() {
+ if (width <= 0 || height <= 0)
+ return;
+
+ QPointF ct = tileForCoordinate(latitude, longitude, zoom);
+ qreal tx = ct.x();
+ qreal ty = ct.y();
+
+ // top-left corner of the center tile
+ int xp = width / 2 - (tx - floor(tx)) * tdim;
+ int yp = height / 2 - (ty - floor(ty)) * tdim;
+
+ // first tile vertical and horizontal
+ int xa = (xp + tdim - 1) / tdim;
+ int ya = (yp + tdim - 1) / tdim;
+ int xs = static_cast<int>(tx) - xa;
+ int ys = static_cast<int>(ty) - ya;
+
+ // offset for top-left tile
+ m_offset = QPoint(xp - xa * tdim, yp - ya * tdim);
+
+ // last tile vertical and horizontal
+ int xe = static_cast<int>(tx) + (width - xp - 1) / tdim;
+ int ye = static_cast<int>(ty) + (height - yp - 1) / tdim;
+
+ // build a rect
+ m_tilesRect = QRect(xs, ys, xe - xs + 1, ye - ys + 1);
+
+ if (m_url.isEmpty())
+ download();
+
+ emit updated(QRect(0, 0, width, height));
+ }
+
+ void render(QPainter *p, const QRect &rect) {
+ for (int x = 0; x <= m_tilesRect.width(); ++x)
+ for (int y = 0; y <= m_tilesRect.height(); ++y) {
+ QPoint tp(x + m_tilesRect.left(), y + m_tilesRect.top());
+ QRect box = tileRect(tp);
+ if (rect.intersects(box)) {
+ if (m_tilePixmaps.contains(tp))
+ p->drawPixmap(box, m_tilePixmaps.value(tp));
+ else
+ p->drawPixmap(box, m_emptyTile);
+ }
+ }
+ }
+
+ void pan(const QPoint &delta) {
+ QPointF dx = QPointF(delta) / qreal(tdim);
+ QPointF center = tileForCoordinate(latitude, longitude, zoom) - dx;
+ latitude = latitudeFromTile(center.y(), zoom);
+ longitude = longitudeFromTile(center.x(), zoom);
+ invalidate();
+ }
+
+private slots:
+
+ void handleNetworkData(QNetworkReply *reply) {
+ QImage img;
+ QPoint tp = reply->request().attribute(QNetworkRequest::User).toPoint();
+ QUrl url = reply->url();
+ if (!reply->error())
+ if (!img.load(reply, 0))
+ img = QImage();
+ reply->deleteLater();
+ m_tilePixmaps[tp] = QPixmap::fromImage(img);
+ if (img.isNull())
+ m_tilePixmaps[tp] = m_emptyTile;
+ emit updated(tileRect(tp));
+
+ // purge unused spaces
+ QRect bound = m_tilesRect.adjusted(-2, -2, 2, 2);
+ foreach(QPoint tp, m_tilePixmaps.keys())
+ if (!bound.contains(tp))
+ m_tilePixmaps.remove(tp);
+
+ download();
+ }
+
+ void download() {
+ QPoint grab(0, 0);
+ for (int x = 0; x <= m_tilesRect.width(); ++x)
+ for (int y = 0; y <= m_tilesRect.height(); ++y) {
+ QPoint tp = m_tilesRect.topLeft() + QPoint(x, y);
+ if (!m_tilePixmaps.contains(tp)) {
+ grab = tp;
+ break;
+ }
+ }
+ if (grab == QPoint(0, 0)) {
+ m_url = QUrl();
+ return;
+ }
+
+ QString path = "http://tile.openstreetmap.org/%1/%2/%3.png";
+ m_url = QUrl(path.arg(zoom).arg(grab.x()).arg(grab.y()));
+ QNetworkRequest request;
+ request.setUrl(m_url);
+ request.setRawHeader("User-Agent", "Nokia (Qt) Graphics Dojo 1.0");
+ request.setAttribute(QNetworkRequest::User, QVariant(grab));
+ m_manager.get(request);
+ }
+
+signals:
+ void updated(const QRect &rect);
+
+protected:
+ QRect tileRect(const QPoint &tp) {
+ QPoint t = tp - m_tilesRect.topLeft();
+ int x = t.x() * tdim + m_offset.x();
+ int y = t.y() * tdim + m_offset.y();
+ return QRect(x, y, tdim, tdim);
+ }
+
+private:
+ QPoint m_offset;
+ QRect m_tilesRect;
+ QPixmap m_emptyTile;
+ QHash<QPoint, QPixmap> m_tilePixmaps;
+ QNetworkAccessManager m_manager;
+ QUrl m_url;
+};
+
+class LightMaps: public QWidget
+{
+ Q_OBJECT
+
+public:
+ LightMaps(QWidget *parent = 0)
+ : QWidget(parent)
+ , pressed(false)
+ , snapped(false)
+ , zoomed(false)
+ , invert(false) {
+ m_normalMap = new SlippyMap(this);
+ m_largeMap = new SlippyMap(this);
+ connect(m_normalMap, SIGNAL(updated(QRect)), SLOT(updateMap(QRect)));
+ connect(m_largeMap, SIGNAL(updated(QRect)), SLOT(update()));
+ }
+
+ void setCenter(qreal lat, qreal lng) {
+ m_normalMap->latitude = lat;
+ m_normalMap->longitude = lng;
+ m_normalMap->invalidate();
+ m_largeMap->invalidate();
+ }
+
+public slots:
+ void toggleNightMode() {
+ invert = !invert;
+ update();
+ }
+
+private slots:
+ void updateMap(const QRect &r) {
+ update(r);
+ }
+
+protected:
+
+ void activateZoom() {
+ zoomed = true;
+ tapTimer.stop();
+ m_largeMap->zoom = m_normalMap->zoom + 1;
+ m_largeMap->width = m_normalMap->width * 2;
+ m_largeMap->height = m_normalMap->height * 2;
+ m_largeMap->latitude = m_normalMap->latitude;
+ m_largeMap->longitude = m_normalMap->longitude;
+ m_largeMap->invalidate();
+ update();
+ }
+
+ void resizeEvent(QResizeEvent *) {
+ m_normalMap->width = width();
+ m_normalMap->height = height();
+ m_normalMap->invalidate();
+ m_largeMap->width = m_normalMap->width * 2;
+ m_largeMap->height = m_normalMap->height * 2;
+ m_largeMap->invalidate();
+ }
+
+ void paintEvent(QPaintEvent *event) {
+ QPainter p;
+ p.begin(this);
+ m_normalMap->render(&p, event->rect());
+ p.setPen(Qt::black);
+#if defined(Q_OS_SYMBIAN)
+ QFont font = p.font();
+ font.setPixelSize(13);
+ p.setFont(font);
+#endif
+ p.drawText(rect(), Qt::AlignBottom | Qt::TextWordWrap,
+ "Map data CCBYSA 2009 OpenStreetMap.org contributors");
+ p.end();
+
+ if (zoomed) {
+ int dim = qMin(width(), height());
+ int magnifierSize = qMin(MAX_MAGNIFIER, dim * 2 / 3);
+ int radius = magnifierSize / 2;
+ int ring = radius - 15;
+ QSize box = QSize(magnifierSize, magnifierSize);
+
+ // reupdate our mask
+ if (maskPixmap.size() != box) {
+ maskPixmap = QPixmap(box);
+ maskPixmap.fill(Qt::transparent);
+
+ QRadialGradient g;
+ g.setCenter(radius, radius);
+ g.setFocalPoint(radius, radius);
+ g.setRadius(radius);
+ g.setColorAt(1.0, QColor(255, 255, 255, 0));
+ g.setColorAt(0.5, QColor(128, 128, 128, 255));
+
+ QPainter mask(&maskPixmap);
+ mask.setRenderHint(QPainter::Antialiasing);
+ mask.setCompositionMode(QPainter::CompositionMode_Source);
+ mask.setBrush(g);
+ mask.setPen(Qt::NoPen);
+ mask.drawRect(maskPixmap.rect());
+ mask.setBrush(QColor(Qt::transparent));
+ mask.drawEllipse(g.center(), ring, ring);
+ mask.end();
+ }
+
+ QPoint center = dragPos - QPoint(0, radius);
+ center = center + QPoint(0, radius / 2);
+ QPoint corner = center - QPoint(radius, radius);
+
+ QPoint xy = center * 2 - QPoint(radius, radius);
+
+ // only set the dimension to the magnified portion
+ if (zoomPixmap.size() != box) {
+ zoomPixmap = QPixmap(box);
+ zoomPixmap.fill(Qt::lightGray);
+ }
+ if (true) {
+ QPainter p(&zoomPixmap);
+ p.translate(-xy);
+ m_largeMap->render(&p, QRect(xy, box));
+ p.end();
+ }
+
+ QPainterPath clipPath;
+ clipPath.addEllipse(center, ring, ring);
+
+ QPainter p(this);
+ p.setRenderHint(QPainter::Antialiasing);
+ p.setClipPath(clipPath);
+ p.drawPixmap(corner, zoomPixmap);
+ p.setClipping(false);
+ p.drawPixmap(corner, maskPixmap);
+ p.setPen(Qt::gray);
+ p.drawPath(clipPath);
+ }
+ if (invert) {
+ QPainter p(this);
+ p.setCompositionMode(QPainter::CompositionMode_Difference);
+ p.fillRect(event->rect(), Qt::white);
+ p.end();
+ }
+ }
+
+ void timerEvent(QTimerEvent *) {
+ if (!zoomed)
+ activateZoom();
+ update();
+ }
+
+ void mousePressEvent(QMouseEvent *event) {
+ if (event->buttons() != Qt::LeftButton)
+ return;
+ pressed = snapped = true;
+ pressPos = dragPos = event->pos();
+ tapTimer.stop();
+ tapTimer.start(HOLD_TIME, this);
+ }
+
+ void mouseMoveEvent(QMouseEvent *event) {
+ if (!event->buttons())
+ return;
+ if (!zoomed) {
+ if (!pressed || !snapped) {
+ QPoint delta = event->pos() - pressPos;
+ pressPos = event->pos();
+ m_normalMap->pan(delta);
+ return;
+ } else {
+ const int threshold = 10;
+ QPoint delta = event->pos() - pressPos;
+ if (snapped) {
+ snapped &= delta.x() < threshold;
+ snapped &= delta.y() < threshold;
+ snapped &= delta.x() > -threshold;
+ snapped &= delta.y() > -threshold;
+ }
+ if (!snapped)
+ tapTimer.stop();
+ }
+ } else {
+ dragPos = event->pos();
+ update();
+ }
+ }
+
+ void mouseReleaseEvent(QMouseEvent *) {
+ zoomed = false;
+ update();
+ }
+
+ void keyPressEvent(QKeyEvent *event) {
+ if (!zoomed) {
+ if (event->key() == Qt::Key_Left)
+ m_normalMap->pan(QPoint(20, 0));
+ if (event->key() == Qt::Key_Right)
+ m_normalMap->pan(QPoint(-20, 0));
+ if (event->key() == Qt::Key_Up)
+ m_normalMap->pan(QPoint(0, 20));
+ if (event->key() == Qt::Key_Down)
+ m_normalMap->pan(QPoint(0, -20));
+ if (event->key() == Qt::Key_Z || event->key() == Qt::Key_Select) {
+ dragPos = QPoint(width() / 2, height() / 2);
+ activateZoom();
+ }
+ } else {
+ if (event->key() == Qt::Key_Z || event->key() == Qt::Key_Select) {
+ zoomed = false;
+ update();
+ }
+ QPoint delta(0, 0);
+ if (event->key() == Qt::Key_Left)
+ delta = QPoint(-15, 0);
+ if (event->key() == Qt::Key_Right)
+ delta = QPoint(15, 0);
+ if (event->key() == Qt::Key_Up)
+ delta = QPoint(0, -15);
+ if (event->key() == Qt::Key_Down)
+ delta = QPoint(0, 15);
+ if (delta != QPoint(0, 0)) {
+ dragPos += delta;
+ update();
+ }
+ }
+ }
+
+private:
+ SlippyMap *m_normalMap;
+ SlippyMap *m_largeMap;
+ bool pressed;
+ bool snapped;
+ QPoint pressPos;
+ QPoint dragPos;
+ QBasicTimer tapTimer;
+ bool zoomed;
+ QPixmap zoomPixmap;
+ QPixmap maskPixmap;
+ bool invert;
+};
+
+class MapZoom : public QMainWindow
+{
+ Q_OBJECT
+
+private:
+ LightMaps *map;
+
+public:
+ MapZoom(): QMainWindow(0) {
+ map = new LightMaps(this);
+ setCentralWidget(map);
+ map->setFocus();
+
+ QAction *osloAction = new QAction("&Oslo", this);
+ QAction *berlinAction = new QAction("&Berlin", this);
+ QAction *jakartaAction = new QAction("&Jakarta", this);
+ QAction *nightModeAction = new QAction("Night Mode", this);
+ nightModeAction->setCheckable(true);
+ nightModeAction->setChecked(false);
+ QAction *osmAction = new QAction("About OpenStreetMap", this);
+ connect(osloAction, SIGNAL(triggered()), SLOT(chooseOslo()));
+ connect(berlinAction, SIGNAL(triggered()), SLOT(chooseBerlin()));
+ connect(jakartaAction, SIGNAL(triggered()), SLOT(chooseJakarta()));
+ connect(nightModeAction, SIGNAL(triggered()), map, SLOT(toggleNightMode()));
+ connect(osmAction, SIGNAL(triggered()), SLOT(aboutOsm()));
+
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE_WM)
+ menuBar()->addAction(osloAction);
+ menuBar()->addAction(berlinAction);
+ menuBar()->addAction(jakartaAction);
+ menuBar()->addAction(nightModeAction);
+ menuBar()->addAction(osmAction);
+#else
+ QMenu *menu = menuBar()->addMenu("&Options");
+ menu->addAction(osloAction);
+ menu->addAction(berlinAction);
+ menu->addAction(jakartaAction);
+ menu->addSeparator();
+ menu->addAction(nightModeAction);
+ menu->addAction(osmAction);
+#endif
+
+ QTimer::singleShot(0, this, SLOT(delayedInit()));
+ }
+
+private slots:
+
+ void delayedInit() {
+#if defined(Q_OS_SYMBIAN)
+ qt_SetDefaultIap();
+#endif
+ }
+
+ void chooseOslo() {
+ map->setCenter(59.9138204, 10.7387413);
+ }
+
+ void chooseBerlin() {
+ map->setCenter(52.52958999943302, 13.383053541183472);
+ }
+
+ void chooseJakarta() {
+ map->setCenter(-6.211544, 106.845172);
+ }
+
+ void aboutOsm() {
+ QDesktopServices::openUrl(QUrl("http://www.openstreetmap.org"));
+ }
+};
+
+
+#include "lightmaps.moc"
+
+int main(int argc, char **argv)
+{
+#if defined(Q_WS_X11)
+ QApplication::setGraphicsSystem("raster");
+#endif
+
+ QApplication app(argc, argv);
+ app.setApplicationName("LightMaps");
+
+ MapZoom w;
+ w.setWindowTitle("OpenStreetMap");
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE_WM)
+ w.showMaximized();
+#else
+ w.resize(600, 450);
+ w.show();
+#endif
+
+ return app.exec();
+}
diff --git a/demos/embedded/lightmaps/lightmaps.pro b/demos/embedded/lightmaps/lightmaps.pro
new file mode 100644
index 000000000..c9bfa0a8d
--- /dev/null
+++ b/demos/embedded/lightmaps/lightmaps.pro
@@ -0,0 +1,17 @@
+TEMPLATE = app
+SOURCES = lightmaps.cpp
+QT += network
+
+symbian {
+ TARGET.UID3 = 0xA000CF75
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ HEADERS += $$QT_SOURCE_TREE/examples/network/qftp/sym_iap_util.h
+ LIBS += -lesock -lconnmon -linsock
+ TARGET.CAPABILITY = NetworkServices
+ TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
+}
+
+target.path = $$[QT_INSTALL_DEMOS]/embedded/lightmaps
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro
+sources.path = $$[QT_INSTALL_DEMOS]/embedded/lightmaps
+INSTALLS += target sources
diff --git a/demos/embedded/raycasting/raycasting.cpp b/demos/embedded/raycasting/raycasting.cpp
new file mode 100644
index 000000000..cb08b517c
--- /dev/null
+++ b/demos/embedded/raycasting/raycasting.cpp
@@ -0,0 +1,391 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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>
+#include <QtGui>
+
+#include <math.h>
+
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
+
+#define WORLD_SIZE 8
+int world_map[WORLD_SIZE][WORLD_SIZE] = {
+ { 1, 1, 1, 1, 6, 1, 1, 1 },
+ { 1, 0, 0, 1, 0, 0, 0, 7 },
+ { 1, 1, 0, 1, 0, 1, 1, 1 },
+ { 6, 0, 0, 0, 0, 0, 0, 3 },
+ { 1, 8, 8, 0, 8, 0, 8, 1 },
+ { 2, 2, 0, 0, 8, 8, 7, 1 },
+ { 3, 0, 0, 0, 0, 0, 0, 5 },
+ { 2, 2, 2, 2, 7, 4, 4, 4 },
+};
+
+#define TEXTURE_SIZE 64
+#define TEXTURE_BLOCK (TEXTURE_SIZE * TEXTURE_SIZE)
+
+class Raycasting: public QWidget
+{
+public:
+ Raycasting(QWidget *parent = 0)
+ : QWidget(parent)
+ , angle(0.5)
+ , playerPos(1.5, 1.5)
+ , angleDelta(0)
+ , moveDelta(0)
+ , touchDevice(false) {
+
+ // http://www.areyep.com/RIPandMCS-TextureLibrary.html
+ textureImg.load(":/textures.png");
+ textureImg = textureImg.convertToFormat(QImage::Format_ARGB32);
+ Q_ASSERT(textureImg.width() == TEXTURE_SIZE * 2);
+ Q_ASSERT(textureImg.bytesPerLine() == 4 * TEXTURE_SIZE * 2);
+ textureCount = textureImg.height() / TEXTURE_SIZE;
+
+ watch.start();
+ ticker.start(25, this);
+ setAttribute(Qt::WA_OpaquePaintEvent, true);
+ setMouseTracking(false);
+ }
+
+ void updatePlayer() {
+ int interval = qBound(20, watch.elapsed(), 250);
+ watch.start();
+ angle += angleDelta * interval / 1000;
+ qreal step = moveDelta * interval / 1000;
+ qreal dx = cos(angle) * step;
+ qreal dy = sin(angle) * step;
+ QPointF pos = playerPos + 3 * QPointF(dx, dy);
+ int xi = static_cast<int>(pos.x());
+ int yi = static_cast<int>(pos.y());
+ if (world_map[yi][xi] == 0)
+ playerPos = playerPos + QPointF(dx, dy);
+ }
+
+ void showFps() {
+ static QTime frameTick;
+ static int totalFrame = 0;
+ if (!(totalFrame & 31)) {
+ int elapsed = frameTick.elapsed();
+ frameTick.start();
+ int fps = 32 * 1000 / (1 + elapsed);
+ setWindowTitle(QString("Raycasting (%1 FPS)").arg(fps));
+ }
+ totalFrame++;
+ }
+
+ void render() {
+
+ // setup the screen surface
+ if (buffer.size() != bufferSize)
+ buffer = QImage(bufferSize, QImage::Format_ARGB32);
+ int bufw = buffer.width();
+ int bufh = buffer.height();
+ if (bufw <= 0 || bufh <= 0)
+ return;
+
+ // we intentionally cheat here, to avoid detach
+ const uchar *ptr = buffer.bits();
+ QRgb *start = (QRgb*)(ptr);
+ QRgb stride = buffer.bytesPerLine() / 4;
+ QRgb *finish = start + stride * bufh;
+
+ // prepare the texture pointer
+ const uchar *src = textureImg.bits();
+ const QRgb *texsrc = reinterpret_cast<const QRgb*>(src);
+
+ // cast all rays here
+ qreal sina = sin(angle);
+ qreal cosa = cos(angle);
+ qreal u = cosa - sina;
+ qreal v = sina + cosa;
+ qreal du = 2 * sina / bufw;
+ qreal dv = -2 * cosa / bufw;
+
+ for (int ray = 0; ray < bufw; ++ray, u += du, v += dv) {
+ // everytime this ray advances 'u' units in x direction,
+ // it also advanced 'v' units in y direction
+ qreal uu = (u < 0) ? -u : u;
+ qreal vv = (v < 0) ? -v : v;
+ qreal duu = 1 / uu;
+ qreal dvv = 1 / vv;
+ int stepx = (u < 0) ? -1 : 1;
+ int stepy = (v < 0) ? -1 : 1;
+
+ // the cell in the map that we need to check
+ qreal px = playerPos.x();
+ qreal py = playerPos.y();
+ int mapx = static_cast<int>(px);
+ int mapy = static_cast<int>(py);
+
+ // the position and texture for the hit
+ int texture = 0;
+ qreal hitdist = 0.1;
+ qreal texofs = 0;
+ bool dark = false;
+
+ // first hit at constant x and constant y lines
+ qreal distx = (u > 0) ? (mapx + 1 - px) * duu : (px - mapx) * duu;
+ qreal disty = (v > 0) ? (mapy + 1 - py) * dvv : (py - mapy) * dvv;
+
+ // loop until we hit something
+ while (texture <= 0) {
+ if (distx > disty) {
+ // shorter distance to a hit in constant y line
+ hitdist = disty;
+ disty += dvv;
+ mapy += stepy;
+ texture = world_map[mapy][mapx];
+ if (texture > 0) {
+ dark = true;
+ if (stepy > 0) {
+ qreal ofs = px + u * (mapy - py) / v;
+ texofs = ofs - floor(ofs);
+ } else {
+ qreal ofs = px + u * (mapy + 1 - py) / v;
+ texofs = ofs - floor(ofs);
+ }
+ }
+ } else {
+ // shorter distance to a hit in constant x line
+ hitdist = distx;
+ distx += duu;
+ mapx += stepx;
+ texture = world_map[mapy][mapx];
+ if (texture > 0) {
+ if (stepx > 0) {
+ qreal ofs = py + v * (mapx - px) / u;
+ texofs = ofs - floor(ofs);
+ } else {
+ qreal ofs = py + v * (mapx + 1 - px) / u;
+ texofs = ceil(ofs) - ofs;
+ }
+ }
+ }
+ }
+
+ // get the texture, note that the texture image
+ // has two textures horizontally, "normal" vs "dark"
+ int col = static_cast<int>(texofs * TEXTURE_SIZE);
+ col = qBound(0, col, TEXTURE_SIZE - 1);
+ texture = (texture - 1) % textureCount;
+ const QRgb *tex = texsrc + TEXTURE_BLOCK * texture * 2 +
+ (TEXTURE_SIZE * 2 * col);
+ if (dark)
+ tex += TEXTURE_SIZE;
+
+ // start from the texture center (horizontally)
+ int h = static_cast<int>(bufw / hitdist / 2);
+ int dy = (TEXTURE_SIZE << 12) / h;
+ int p1 = ((TEXTURE_SIZE / 2) << 12) - dy;
+ int p2 = p1 + dy;
+
+ // start from the screen center (vertically)
+ // y1 will go up (decrease), y2 will go down (increase)
+ int y1 = bufh / 2;
+ int y2 = y1 + 1;
+ QRgb *pixel1 = start + y1 * stride + ray;
+ QRgb *pixel2 = pixel1 + stride;
+
+ // map the texture to the sliver
+ while (y1 >= 0 && y2 < bufh && p1 >= 0) {
+ *pixel1 = tex[p1 >> 12];
+ *pixel2 = tex[p2 >> 12];
+ p1 -= dy;
+ p2 += dy;
+ --y1;
+ ++y2;
+ pixel1 -= stride;
+ pixel2 += stride;
+ }
+
+ // ceiling and floor
+ for (; pixel1 > start; pixel1 -= stride)
+ *pixel1 = qRgb(0, 0, 0);
+ for (; pixel2 < finish; pixel2 += stride)
+ *pixel2 = qRgb(96, 96, 96);
+ }
+
+ update(QRect(QPoint(0, 0), bufferSize));
+ }
+
+protected:
+
+ void resizeEvent(QResizeEvent*) {
+#if defined(Q_OS_WINCE_WM)
+ touchDevice = true;
+#elif defined(Q_OS_SYMBIAN)
+ // FIXME: use HAL
+ if (width() > 480 || height() > 480)
+ touchDevice = true;
+#else
+ touchDevice = false;
+#endif
+ if (touchDevice) {
+ if (width() < height()) {
+ trackPad = QRect(0, height() / 2, width(), height() / 2);
+ centerPad = QPoint(width() / 2, height() * 3 / 4);
+ bufferSize = QSize(width(), height() / 2);
+ } else {
+ trackPad = QRect(width() / 2, 0, width() / 2, height());
+ centerPad = QPoint(width() * 3 / 4, height() / 2);
+ bufferSize = QSize(width() / 2, height());
+ }
+ } else {
+ trackPad = QRect();
+ bufferSize = size();
+ }
+ update();
+ }
+
+ void timerEvent(QTimerEvent*) {
+ updatePlayer();
+ render();
+ showFps();
+ }
+
+ void paintEvent(QPaintEvent *event) {
+ QPainter p(this);
+ p.setCompositionMode(QPainter::CompositionMode_Source);
+
+ p.drawImage(event->rect(), buffer, event->rect());
+
+ if (touchDevice && event->rect().intersects(trackPad)) {
+ p.fillRect(trackPad, Qt::white);
+ p.setPen(QPen(QColor(224, 224, 224), 6));
+ int rad = qMin(trackPad.width(), trackPad.height()) * 0.3;
+ p.drawEllipse(centerPad, rad, rad);
+
+ p.setPen(Qt::NoPen);
+ p.setBrush(Qt::gray);
+
+ QPolygon poly;
+ poly << QPoint(-30, 0);
+ poly << QPoint(0, -40);
+ poly << QPoint(30, 0);
+
+ p.translate(centerPad);
+ for (int i = 0; i < 4; ++i) {
+ p.rotate(90);
+ p.translate(0, 20 - rad);
+ p.drawPolygon(poly);
+ p.translate(0, rad - 20);
+ }
+ }
+
+ p.end();
+ }
+
+ void keyPressEvent(QKeyEvent *event) {
+ event->accept();
+ if (event->key() == Qt::Key_Left)
+ angleDelta = 1.3 * M_PI;
+ if (event->key() == Qt::Key_Right)
+ angleDelta = -1.3 * M_PI;
+ if (event->key() == Qt::Key_Up)
+ moveDelta = 2.5;
+ if (event->key() == Qt::Key_Down)
+ moveDelta = -2.5;
+ }
+
+ void keyReleaseEvent(QKeyEvent *event) {
+ event->accept();
+ if (event->key() == Qt::Key_Left)
+ angleDelta = (angleDelta > 0) ? 0 : angleDelta;
+ if (event->key() == Qt::Key_Right)
+ angleDelta = (angleDelta < 0) ? 0 : angleDelta;
+ if (event->key() == Qt::Key_Up)
+ moveDelta = (moveDelta > 0) ? 0 : moveDelta;
+ if (event->key() == Qt::Key_Down)
+ moveDelta = (moveDelta < 0) ? 0 : moveDelta;
+ }
+
+ void mousePressEvent(QMouseEvent *event) {
+ qreal dx = centerPad.x() - event->pos().x();
+ qreal dy = centerPad.y() - event->pos().y();
+ angleDelta = dx * 2 * M_PI / width();
+ moveDelta = dy * 10 / height();
+ }
+
+ void mouseMoveEvent(QMouseEvent *event) {
+ qreal dx = centerPad.x() - event->pos().x();
+ qreal dy = centerPad.y() - event->pos().y();
+ angleDelta = dx * 2 * M_PI / width();
+ moveDelta = dy * 10 / height();
+ }
+
+ void mouseReleaseEvent(QMouseEvent*) {
+ angleDelta = 0;
+ moveDelta = 0;
+ }
+
+private:
+ QTime watch;
+ QBasicTimer ticker;
+ QImage buffer;
+ qreal angle;
+ QPointF playerPos;
+ qreal angleDelta;
+ qreal moveDelta;
+ QImage textureImg;
+ int textureCount;
+ bool touchDevice;
+ QRect trackPad;
+ QPoint centerPad;
+ QSize bufferSize;
+};
+
+int main(int argc, char **argv)
+{
+ QApplication app(argc, argv);
+
+ Raycasting w;
+ w.setWindowTitle("Raycasting");
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE_WM)
+ w.showMaximized();
+#else
+ w.resize(640, 480);
+ w.show();
+#endif
+
+ return app.exec();
+}
diff --git a/demos/embedded/raycasting/raycasting.pro b/demos/embedded/raycasting/raycasting.pro
new file mode 100644
index 000000000..82d0812e8
--- /dev/null
+++ b/demos/embedded/raycasting/raycasting.pro
@@ -0,0 +1,13 @@
+TEMPLATE = app
+SOURCES = raycasting.cpp
+RESOURCES += raycasting.qrc
+
+symbian {
+ TARGET.UID3 = 0xA000CF76
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+}
+
+target.path = $$[QT_INSTALL_DEMOS]/embedded/raycasting
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro
+sources.path = $$[QT_INSTALL_DEMOS]/embedded/raycasting
+INSTALLS += target sources
diff --git a/demos/embedded/raycasting/raycasting.qrc b/demos/embedded/raycasting/raycasting.qrc
new file mode 100644
index 000000000..974a06093
--- /dev/null
+++ b/demos/embedded/raycasting/raycasting.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/" >
+ <file>textures.png</file>
+ </qresource>
+</RCC>
diff --git a/demos/embedded/raycasting/textures.png b/demos/embedded/raycasting/textures.png
new file mode 100644
index 000000000..2eb1ba7ff
--- /dev/null
+++ b/demos/embedded/raycasting/textures.png
Binary files differ
diff --git a/demos/embedded/styledemo/files/application.qss b/demos/embedded/styledemo/files/application.qss
index a632ad1c8..432fe6bc7 100644
--- a/demos/embedded/styledemo/files/application.qss
+++ b/demos/embedded/styledemo/files/application.qss
@@ -6,7 +6,7 @@ QWidget#StyleWidget
QLabel, QAbstractButton
{
- font: 18px bold;
+ font: bold;
color: beige;
}
diff --git a/demos/embedded/styledemo/files/blue.qss b/demos/embedded/styledemo/files/blue.qss
index aa87277f8..ac8671b5e 100644
--- a/demos/embedded/styledemo/files/blue.qss
+++ b/demos/embedded/styledemo/files/blue.qss
@@ -5,7 +5,7 @@
QLabel, QAbstractButton
{
- font: 10pt bold;
+ font: bold;
color: yellow;
}
@@ -28,7 +28,6 @@ QAbstractButton
border-style: solid;
border-radius: 5;
padding: 3px;
- qproperty-focusPolicy: NoFocus;
}
QAbstractButton:pressed
diff --git a/demos/embedded/styledemo/files/khaki.qss b/demos/embedded/styledemo/files/khaki.qss
index 9c0f77caa..b0d4a0fa6 100644
--- a/demos/embedded/styledemo/files/khaki.qss
+++ b/demos/embedded/styledemo/files/khaki.qss
@@ -16,7 +16,6 @@ QPushButton, QToolButton {
padding: 3px;
/* min-width: 96px; */
/* min-height: 48px; */
- qproperty-focusPolicy: NoFocus
}
QPushButton:hover, QToolButton:hover {
@@ -30,7 +29,7 @@ QPushButton:pressed, QToolButton:pressed {
}
QLabel, QAbstractButton {
- font: italic 11pt "Times New Roman";
+ font: italic "Times New Roman";
}
QFrame, QLabel#title {
diff --git a/demos/embedded/styledemo/files/transparent.qss b/demos/embedded/styledemo/files/transparent.qss
index e3a991265..b38eb366f 100644
--- a/demos/embedded/styledemo/files/transparent.qss
+++ b/demos/embedded/styledemo/files/transparent.qss
@@ -6,7 +6,6 @@ QWidget#StyleWidget
QLabel, QAbstractButton
{
- font: 13pt;
color: beige;
}
diff --git a/demos/embedded/styledemo/main.cpp b/demos/embedded/styledemo/main.cpp
index 7aab5323b..76b5642e1 100644
--- a/demos/embedded/styledemo/main.cpp
+++ b/demos/embedded/styledemo/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,8 +48,8 @@ int main(int argc, char *argv[])
Q_INIT_RESOURCE(styledemo);
app.setApplicationName("style");
- app.setOrganizationName("Trolltech");
- app.setOrganizationDomain("com.trolltech");
+ app.setOrganizationName("Nokia");
+ app.setOrganizationDomain("com.nokia.qt");
StyleWidget widget;
widget.showFullScreen();
diff --git a/demos/embedded/styledemo/styledemo.pro b/demos/embedded/styledemo/styledemo.pro
index ee5e4d6cc..2125f3b1b 100644
--- a/demos/embedded/styledemo/styledemo.pro
+++ b/demos/embedded/styledemo/styledemo.pro
@@ -10,3 +10,8 @@ target.path = $$[QT_INSTALL_DEMOS]/embedded/styledemo
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro *.html
sources.path = $$[QT_INSTALL_DEMOS]/embedded/styledemo
INSTALLS += target sources
+
+symbian {
+ TARGET.UID3 = 0xA000A63F
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+}
diff --git a/demos/embedded/styledemo/stylewidget.cpp b/demos/embedded/styledemo/stylewidget.cpp
index 1a2f83f70..b96063afb 100644
--- a/demos/embedded/styledemo/stylewidget.cpp
+++ b/demos/embedded/styledemo/stylewidget.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/embedded/styledemo/stylewidget.h b/demos/embedded/styledemo/stylewidget.h
index 7fe0a76d4..b4d3f89ee 100644
--- a/demos/embedded/styledemo/stylewidget.h
+++ b/demos/embedded/styledemo/stylewidget.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/embedded/styledemo/stylewidget.ui b/demos/embedded/styledemo/stylewidget.ui
index 586faeac4..767f44aea 100644
--- a/demos/embedded/styledemo/stylewidget.ui
+++ b/demos/embedded/styledemo/stylewidget.ui
@@ -1,135 +1,127 @@
-<ui version="4.0" >
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
<class>StyleWidget</class>
- <widget class="QWidget" name="StyleWidget" >
- <property name="geometry" >
+ <widget class="QWidget" name="StyleWidget">
+ <property name="geometry">
<rect>
<x>0</x>
<y>0</y>
- <width>339</width>
- <height>230</height>
+ <width>184</width>
+ <height>245</height>
</rect>
</property>
- <property name="windowTitle" >
+ <property name="windowTitle">
<string>Form</string>
</property>
- <layout class="QVBoxLayout" name="verticalLayout" >
- <property name="margin" >
- <number>3</number>
- </property>
- <item>
- <widget class="QGroupBox" name="groupBox" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Expanding" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="title" >
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0" colspan="2">
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
<string>Styles</string>
</property>
- <layout class="QHBoxLayout" >
- <property name="spacing" >
- <number>3</number>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <property name="margin">
+ <number>4</number>
</property>
- <property name="margin" >
- <number>3</number>
+ <property name="spacing">
+ <number>4</number>
</property>
- <item>
- <widget class="QPushButton" name="noStyle" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="MinimumExpanding" hsizetype="Minimum" >
+ <item row="0" column="0">
+ <widget class="QPushButton" name="transparentStyle">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="focusPolicy" >
- <enum>Qt::NoFocus</enum>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
</property>
- <property name="text" >
- <string>No-Style</string>
+ <property name="text">
+ <string>Transp.</string>
</property>
- <property name="checkable" >
+ <property name="checkable">
<bool>true</bool>
</property>
- <property name="checked" >
- <bool>true</bool>
+ <property name="checked">
+ <bool>false</bool>
</property>
- <property name="autoExclusive" >
+ <property name="autoExclusive">
<bool>true</bool>
</property>
</widget>
</item>
- <item>
- <widget class="QPushButton" name="blueStyle" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="MinimumExpanding" hsizetype="Minimum" >
+ <item row="2" column="0">
+ <widget class="QPushButton" name="blueStyle">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="focusPolicy" >
- <enum>Qt::NoFocus</enum>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
</property>
- <property name="text" >
+ <property name="text">
<string>Blue</string>
</property>
- <property name="checkable" >
+ <property name="checkable">
<bool>true</bool>
</property>
- <property name="checked" >
+ <property name="checked">
<bool>false</bool>
</property>
- <property name="autoExclusive" >
+ <property name="autoExclusive">
<bool>true</bool>
</property>
</widget>
</item>
- <item>
- <widget class="QPushButton" name="khakiStyle" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="MinimumExpanding" hsizetype="Minimum" >
+ <item row="0" column="1">
+ <widget class="QPushButton" name="khakiStyle">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="focusPolicy" >
- <enum>Qt::NoFocus</enum>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
</property>
- <property name="text" >
+ <property name="text">
<string>Khaki</string>
</property>
- <property name="checkable" >
+ <property name="checkable">
<bool>true</bool>
</property>
- <property name="checked" >
+ <property name="checked">
<bool>false</bool>
</property>
- <property name="autoExclusive" >
+ <property name="autoExclusive">
<bool>true</bool>
</property>
</widget>
</item>
- <item>
- <widget class="QPushButton" name="transparentStyle" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="MinimumExpanding" hsizetype="Minimum" >
+ <item row="2" column="1">
+ <widget class="QPushButton" name="noStyle">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="focusPolicy" >
- <enum>Qt::NoFocus</enum>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
</property>
- <property name="text" >
- <string>Transparent</string>
+ <property name="text">
+ <string>None</string>
</property>
- <property name="checkable" >
+ <property name="checkable">
<bool>true</bool>
</property>
- <property name="checked" >
- <bool>false</bool>
+ <property name="checked">
+ <bool>true</bool>
</property>
- <property name="autoExclusive" >
+ <property name="autoExclusive">
<bool>true</bool>
</property>
</widget>
@@ -137,12 +129,12 @@
</layout>
</widget>
</item>
- <item>
- <spacer name="verticalSpacer_3" >
- <property name="orientation" >
+ <item row="1" column="0" colspan="2">
+ <spacer name="verticalSpacer_3">
+ <property name="orientation">
<enum>Qt::Vertical</enum>
</property>
- <property name="sizeHint" stdset="0" >
+ <property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
@@ -150,161 +142,145 @@
</property>
</spacer>
</item>
- <item>
- <widget class="QFrame" name="frame" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="MinimumExpanding" hsizetype="Expanding" >
+ <item row="2" column="0" colspan="2">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="margin">
+ <number>4</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Value:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSpinBox" name="spinBox">
+ <property name="focusPolicy">
+ <enum>Qt::WheelFocus</enum>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ <property name="keyboardTracking">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="3" column="0">
+ <widget class="QScrollBar" name="horizontalScrollBar">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
- <property name="frameShape" >
- <enum>QFrame::StyledPanel</enum>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>24</height>
+ </size>
</property>
- <property name="frameShadow" >
- <enum>QFrame::Raised</enum>
+ <property name="focusPolicy">
+ <enum>Qt::TabFocus</enum>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
</property>
- <layout class="QVBoxLayout" name="frameLayout" >
- <property name="margin" >
- <number>3</number>
- </property>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout" >
- <item>
- <widget class="QLabel" name="label" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="MinimumExpanding" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text" >
- <string>My Value is:</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QSpinBox" name="spinBox" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="focusPolicy" >
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="alignment" >
- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
- </property>
- <property name="keyboardTracking" >
- <bool>false</bool>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QGridLayout" name="gridLayout" >
- <item row="0" column="0" >
- <widget class="QScrollBar" name="horizontalScrollBar" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize" >
- <size>
- <width>0</width>
- <height>24</height>
- </size>
- </property>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item row="1" column="0" >
- <widget class="QPushButton" name="pushButton_2" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="focusPolicy" >
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text" >
- <string>Show Scroller</string>
- </property>
- <property name="checkable" >
- <bool>true</bool>
- </property>
- <property name="checked" >
- <bool>true</bool>
- </property>
- <property name="flat" >
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item row="0" column="1" >
- <widget class="QScrollBar" name="horizontalScrollBar_2" >
- <property name="minimumSize" >
- <size>
- <width>0</width>
- <height>24</height>
- </size>
- </property>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item row="1" column="1" >
- <widget class="QPushButton" name="pushButton" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="focusPolicy" >
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text" >
- <string>Enable Scroller</string>
- </property>
- <property name="checkable" >
- <bool>true</bool>
- </property>
- <property name="checked" >
- <bool>true</bool>
- </property>
- <property name="flat" >
- <bool>false</bool>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- </layout>
</widget>
</item>
- <item>
- <spacer name="verticalSpacer" >
- <property name="orientation" >
+ <item row="3" column="1">
+ <widget class="QScrollBar" name="horizontalScrollBar_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>24</height>
+ </size>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::TabFocus</enum>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QPushButton" name="pushButton_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="text">
+ <string>Show</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ <property name="flat">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="QPushButton" name="pushButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="text">
+ <string>Enable</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ <property name="flat">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0" colspan="2">
+ <spacer name="verticalSpacer">
+ <property name="orientation">
<enum>Qt::Vertical</enum>
</property>
- <property name="sizeType" >
+ <property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
- <property name="sizeHint" stdset="0" >
+ <property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
@@ -312,37 +288,33 @@
</property>
</spacer>
</item>
- <item>
- <layout class="QHBoxLayout" >
- <item>
- <spacer>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0" >
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QPushButton" name="close" >
- <property name="focusPolicy" >
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text" >
- <string>Close</string>
- </property>
- </widget>
- </item>
- </layout>
+ <item row="6" column="0">
+ <spacer>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="6" column="1">
+ <widget class="QPushButton" name="close">
+ <property name="focusPolicy">
+ <enum>Qt::StrongFocus</enum>
+ </property>
+ <property name="text">
+ <string>Close</string>
+ </property>
+ </widget>
</item>
</layout>
</widget>
<resources>
- <include location="StyleDemo.qrc" />
+ <include location="StyleDemo.qrc"/>
</resources>
<connections>
<connection>
@@ -351,13 +323,13 @@
<receiver>horizontalScrollBar_2</receiver>
<slot>setValue(int)</slot>
<hints>
- <hint type="sourcelabel" >
- <x>134</x>
- <y>196</y>
+ <hint type="sourcelabel">
+ <x>84</x>
+ <y>147</y>
</hint>
- <hint type="destinationlabel" >
- <x>523</x>
- <y>193</y>
+ <hint type="destinationlabel">
+ <x>166</x>
+ <y>147</y>
</hint>
</hints>
</connection>
@@ -367,13 +339,13 @@
<receiver>horizontalScrollBar</receiver>
<slot>setValue(int)</slot>
<hints>
- <hint type="sourcelabel" >
- <x>577</x>
- <y>199</y>
+ <hint type="sourcelabel">
+ <x>166</x>
+ <y>147</y>
</hint>
- <hint type="destinationlabel" >
- <x>127</x>
- <y>207</y>
+ <hint type="destinationlabel">
+ <x>84</x>
+ <y>147</y>
</hint>
</hints>
</connection>
@@ -383,13 +355,13 @@
<receiver>horizontalScrollBar_2</receiver>
<slot>setEnabled(bool)</slot>
<hints>
- <hint type="sourcelabel" >
- <x>566</x>
- <y>241</y>
+ <hint type="sourcelabel">
+ <x>166</x>
+ <y>175</y>
</hint>
- <hint type="destinationlabel" >
- <x>492</x>
- <y>207</y>
+ <hint type="destinationlabel">
+ <x>166</x>
+ <y>147</y>
</hint>
</hints>
</connection>
@@ -399,13 +371,13 @@
<receiver>horizontalScrollBar</receiver>
<slot>setVisible(bool)</slot>
<hints>
- <hint type="sourcelabel" >
- <x>123</x>
- <y>239</y>
+ <hint type="sourcelabel">
+ <x>84</x>
+ <y>175</y>
</hint>
- <hint type="destinationlabel" >
- <x>123</x>
- <y>184</y>
+ <hint type="destinationlabel">
+ <x>84</x>
+ <y>147</y>
</hint>
</hints>
</connection>
@@ -415,13 +387,29 @@
<receiver>horizontalScrollBar_2</receiver>
<slot>setValue(int)</slot>
<hints>
- <hint type="sourcelabel" >
- <x>603</x>
- <y>136</y>
+ <hint type="sourcelabel">
+ <x>166</x>
+ <y>115</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>166</x>
+ <y>147</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>horizontalScrollBar_2</sender>
+ <signal>valueChanged(int)</signal>
+ <receiver>spinBox</receiver>
+ <slot>setValue(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>132</x>
+ <y>132</y>
</hint>
- <hint type="destinationlabel" >
- <x>575</x>
- <y>199</y>
+ <hint type="destinationlabel">
+ <x>135</x>
+ <y>110</y>
</hint>
</hints>
</connection>
diff --git a/demos/embedded/weatherinfo/icons/README.txt b/demos/embedded/weatherinfo/icons/README.txt
new file mode 100644
index 000000000..d38415321
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/README.txt
@@ -0,0 +1,5 @@
+The scalable icons are from:
+
+http://tango.freedesktop.org/Tango_Icon_Library
+http://darkobra.deviantart.com/art/Tango-Weather-Icon-Pack-98024429
+
diff --git a/demos/embedded/weatherinfo/icons/weather-few-clouds.svg b/demos/embedded/weatherinfo/icons/weather-few-clouds.svg
new file mode 100644
index 000000000..a53e3d627
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-few-clouds.svg
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" id="svg1306">
+ <defs id="defs1308">
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient6724" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/>
+ <linearGradient xlink:href="#linearGradient6549" id="linearGradient6722" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/>
+ <linearGradient xlink:href="#linearGradient6527" id="linearGradient6720" gradientUnits="userSpaceOnUse" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient6718" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/>
+ <linearGradient xlink:href="#linearGradient6513" id="linearGradient6716" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/>
+ <linearGradient xlink:href="#linearGradient6497" id="linearGradient6714" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/>
+ <linearGradient xlink:href="#linearGradient6470" id="linearGradient6712" gradientUnits="userSpaceOnUse" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient6839" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/>
+ <linearGradient id="linearGradient6549">
+ <stop offset="0" id="stop6551" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6553" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6549" id="linearGradient6837" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/>
+ <linearGradient id="linearGradient6527">
+ <stop offset="0" id="stop6530" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6532" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6527" id="linearGradient6835" gradientUnits="userSpaceOnUse" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/>
+ <linearGradient id="linearGradient6538">
+ <stop offset="0" id="stop6540" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6542" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient6833" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/>
+ <linearGradient id="linearGradient6513">
+ <stop offset="0" id="stop6515" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6517" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6513" id="linearGradient6831" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/>
+ <linearGradient id="linearGradient6497">
+ <stop offset="0" id="stop6499" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6501" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6497" id="linearGradient6829" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/>
+ <linearGradient id="linearGradient6470">
+ <stop offset="0" id="stop6472" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6474" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6470" id="linearGradient6827" gradientUnits="userSpaceOnUse" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/>
+ <linearGradient id="linearGradient4083">
+ <stop id="stop4085" offset="0" stop-color="#ffffff" stop-opacity="0"/>
+ <stop offset="0.75" id="stop4089" stop-color="#ffffff" stop-opacity="0"/>
+ <stop id="stop4087" offset="1" stop-color="#ffffff" stop-opacity="1"/>
+ </linearGradient>
+ <linearGradient id="linearGradient4032">
+ <stop id="stop4034" offset="0" stop-color="#fff7c2" stop-opacity="0.63829786"/>
+ <stop offset="0.59394139" id="stop4036" stop-color="#fcaf3e" stop-opacity="0.18348624"/>
+ <stop id="stop4038" offset="0.83850551" stop-color="#fcaf3e" stop-opacity="0.50458717"/>
+ <stop id="stop4040" offset="1" stop-color="#fcaf3e" stop-opacity="1"/>
+ </linearGradient>
+ <linearGradient id="linearGradient4026">
+ <stop id="stop4028" offset="0" stop-color="#fff9c6" stop-opacity="1"/>
+ <stop offset="0.54166669" id="stop4042" stop-color="#fff28c" stop-opacity="1"/>
+ <stop id="stop4030" offset="1" stop-color="#ffea85" stop-opacity="1"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient4026" id="linearGradient3168" gradientUnits="userSpaceOnUse" x1="-28.968945" y1="-25.326815" x2="-37.19698" y2="-9.5590506"/>
+ <radialGradient xlink:href="#linearGradient4032" id="radialGradient4020" cx="-33.519073" cy="-22.113297" fx="-33.519073" fy="-22.113297" r="9.5" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.487739,1.292402,-1.10267,0.497242,-41.77393,32.41492)"/>
+ <radialGradient xlink:href="#linearGradient4083" id="radialGradient4081" cx="23.99999" cy="23.381506" fx="23.99999" fy="23.381506" r="19.141981" gradientTransform="matrix(1.006701,2.235326e-16,-2.23715e-16,1.007522,-0.160816,0.426981)" gradientUnits="userSpaceOnUse"/>
+ </defs>
+
+ <metadata id="metadata1311">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:title>weather-clear</dc:title>
+ <dc:date>January 2006</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Ryan Collier (pseudo)</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>http://www.tango-project.org</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://www.pseudocode.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>weather</rdf:li>
+ <rdf:li>applet</rdf:li>
+ <rdf:li>notification</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license rdf:resource="http://creativecommons.org/licenses/publicdomain/"/>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Garrett LeSage</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ </cc:Work>
+ <cc:License rdf:about="http://creativecommons.org/licenses/publicdomain/">
+ <cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/>
+ <cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/>
+ <cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g id="layer1">
+ <g transform="translate(-263.99,459.9855)">
+ <path d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z " fill="#c4c5c2" fill-opacity="1.0000000" stroke="#888a85" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z " opacity="1.0000000" fill="url(#linearGradient6827)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" opacity="1.0000000" fill="url(#linearGradient6829)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <rect y="-438.00000" x="271.00000" height="9.0000000" width="20.000000" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)" opacity="1.0000000" fill="url(#linearGradient6831)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="url(#linearGradient6833)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(-1.000000,0.000000)">
+ <path d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z " opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z " opacity="1.0000000" fill="url(#linearGradient6835)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <path transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient6837)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z " fill="#888a85" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ <g transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)">
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="url(#linearGradient6839)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ </g>
+ <g>
+ <g opacity="0.7">
+ <path d="M 24 2.5 L 21.625 9.1875 C 22.399034 9.0641318 23.191406 9 24 9 C 24.808594 9 25.600966 9.0641317 26.375 9.1875 L 24 2.5 z M 8.8125 8.78125 L 11.84375 15.21875 C 12.779034 13.928569 13.928569 12.779034 15.21875 11.84375 L 8.8125 8.78125 z M 39.21875 8.78125 L 32.78125 11.84375 C 34.071431 12.779034 35.220966 13.928569 36.15625 15.21875 L 39.21875 8.78125 z M 9.1875 21.59375 L 2.5 23.96875 L 9.1875 26.34375 C 9.0673373 25.57952 9 24.797813 9 24 C 9 23.180625 9.0608858 22.377571 9.1875 21.59375 z M 38.8125 21.625 C 38.935868 22.399034 39 23.191406 39 24 C 39 24.808594 38.935868 25.600966 38.8125 26.375 L 45.5 24 L 38.8125 21.625 z M 11.84375 32.78125 L 8.8125 39.1875 L 15.21875 36.15625 C 13.928569 35.220966 12.779034 34.071431 11.84375 32.78125 z M 36.15625 32.78125 C 35.229789 34.05926 34.087617 35.194799 32.8125 36.125 L 39.21875 39.1875 L 36.15625 32.78125 z M 21.625 38.8125 L 24 45.5 L 26.375 38.8125 C 25.600966 38.935868 24.808594 39 24 39 C 23.191406 39 22.399034 38.935868 21.625 38.8125 z " fill="#fce94f" fill-opacity="1" stroke="#fcaf3e" stroke-width="0.73732895" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/>
+ <path d="M 24 5.25 L 22.65625 9.0625 C 23.098888 9.0231486 23.547187 9 24 9 C 24.452813 9 24.901112 9.0231486 25.34375 9.0625 L 24 5.25 z M 10.78125 10.75 L 12.5 14.375 C 13.071538 13.694089 13.724004 13.038745 14.40625 12.46875 L 10.78125 10.75 z M 37.25 10.75 L 33.625 12.46875 C 34.304675 13.038189 34.961811 13.695325 35.53125 14.375 L 37.25 10.75 z M 9.0625 22.625 L 5.28125 23.96875 L 9.0625 25.3125 C 9.024981 24.880146 9 24.442031 9 24 C 9 23.536406 9.0212735 23.077908 9.0625 22.625 z M 38.9375 22.65625 C 38.976851 23.098888 39 23.547187 39 24 C 39 24.452813 38.976851 24.901112 38.9375 25.34375 L 42.71875 24 L 38.9375 22.65625 z M 35.53125 33.59375 C 34.958293 34.27954 34.309985 34.957363 33.625 35.53125 L 37.25 37.25 L 35.53125 33.59375 z M 12.5 33.625 L 10.78125 37.21875 L 14.375 35.5 C 13.702932 34.935884 13.064116 34.297068 12.5 33.625 z M 22.65625 38.9375 L 24 42.71875 L 25.34375 38.9375 C 24.901112 38.976851 24.452813 39 24 39 C 23.547187 39 23.098888 38.976851 22.65625 38.9375 z " fill="none" fill-opacity="1" stroke="url(#radialGradient4081)" stroke-width="0.84646249" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/>
+ </g>
+ <g>
+ <g>
+ <path transform="matrix(0.778062,-1.061285,1.061287,0.778062,67.47952,3.641324)" d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z" fill="#ffee54" fill-opacity="1" stroke="#fcaf3e" stroke-width="0.75991178" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/>
+ <path transform="matrix(1.244257,-0.167707,0.216642,1.251844,67.61648,40.527)" d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z" fill="url(#radialGradient4020)" fill-opacity="1" stroke="none" stroke-width="1.01737845" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/>
+ <path transform="matrix(0.715791,-0.976349,0.97635,0.715792,64.00044,5.269544)" d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z" fill="none" fill-opacity="1" stroke="url(#linearGradient3168)" stroke-width="0.82601947" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(-248.99,467.9855)">
+ <path d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z " fill="#c4c5c2" fill-opacity="1.0000000" stroke="#888a85" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z " opacity="1.0000000" fill="url(#linearGradient6712)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" opacity="1.0000000" fill="url(#linearGradient6714)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <rect y="-438.00000" x="271.00000" height="9.0000000" width="20.000000" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)" opacity="1.0000000" fill="url(#linearGradient6716)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="url(#linearGradient6718)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(-1.000000,0.000000)">
+ <path d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z " opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z " opacity="1.0000000" fill="url(#linearGradient6720)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <path transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient6722)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z " fill="#888a85" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ <g transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)">
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="url(#linearGradient6724)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-fog.svg b/demos/embedded/weatherinfo/icons/weather-fog.svg
new file mode 100644
index 000000000..56a244420
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-fog.svg
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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:xlink="http://www.w3.org/1999/xlink" width="48" height="48" id="svg2670" version="1.0">
+ <defs id="defs2672">
+ <linearGradient id="linearGradient6549">
+ <stop offset="0" id="stop6551" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6553" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient id="linearGradient6527">
+ <stop offset="0" id="stop6530" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6532" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient id="linearGradient6538">
+ <stop offset="0" id="stop6540" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6542" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient id="linearGradient6513">
+ <stop offset="0" id="stop6515" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6517" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient id="linearGradient6497">
+ <stop offset="0" id="stop6499" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6501" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient id="linearGradient6470">
+ <stop offset="0" id="stop6472" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6474" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6470" id="linearGradient5689" gradientUnits="userSpaceOnUse" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/>
+ <linearGradient xlink:href="#linearGradient6497" id="linearGradient5691" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/>
+ <linearGradient xlink:href="#linearGradient6513" id="linearGradient5693" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient5695" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/>
+ <linearGradient xlink:href="#linearGradient6527" id="linearGradient5697" gradientUnits="userSpaceOnUse" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/>
+ <linearGradient xlink:href="#linearGradient6549" id="linearGradient5699" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient5701" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/>
+ <linearGradient xlink:href="#linearGradient6470" id="linearGradient5703" gradientUnits="userSpaceOnUse" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/>
+ <linearGradient xlink:href="#linearGradient6497" id="linearGradient5705" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/>
+ <linearGradient xlink:href="#linearGradient6513" id="linearGradient5707" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient5709" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/>
+ <linearGradient xlink:href="#linearGradient6527" id="linearGradient5711" gradientUnits="userSpaceOnUse" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/>
+ <linearGradient xlink:href="#linearGradient6549" id="linearGradient5713" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient5715" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/>
+ </defs>
+
+ <metadata id="metadata2675">
+ <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>
+ <g id="layer1">
+ <g transform="translate(5e-6,-4)">
+ <g transform="translate(-248.99871,466.5)" opacity="0.45">
+ <path d="M 280.5,-445.5 C 278.22917,-445.5 276.39009,-443.94972 275.78125,-441.875 C 275.08802,-442.23883 274.33674,-442.5 273.5,-442.5 C 270.74,-442.5 268.49999,-440.26001 268.5,-437.5 C 268.5,-436.92107 268.66252,-436.3923 268.84375,-435.875 C 267.47028,-435.10426 266.5,-433.686 266.5,-432 C 266.5,-429.516 268.516,-427.49999 271,-427.5 C 271.17713,-427.5 289.82287,-427.5 290,-427.5 C 292.48399,-427.5 294.5,-429.516 294.5,-432 C 294.5,-433.686 293.52972,-435.10426 292.15625,-435.875 C 292.33749,-436.39229 292.5,-436.92108 292.5,-437.5 C 292.5,-440.26 290.26,-442.49999 287.5,-442.5 C 286.66326,-442.5 285.91198,-442.23883 285.21875,-441.875 C 284.60991,-443.94972 282.77083,-445.5 280.5,-445.5 z" fill="#c4c5c2" fill-opacity="1" stroke="#888a85" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 280.5,-445 C 278.31028,-445 276.7764,-443.66423 276.10445,-441.15648 C 275.43599,-441.5001 274.55686,-441.98983 273.75,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.1124,-434.89433 267,-433.73178 267,-432.24973 C 267,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294,-429.90368 294,-432.24973 C 294,-433.8421 292.8876,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.051 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.6082,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445 280.5,-445 z" opacity="1" fill="url(#linearGradient5689)" fill-opacity="1" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <g>
+ <path transform="matrix(1.056604,0,0,1.056604,-24.19818,21.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path transform="matrix(1.056604,0,0,1.056604,-24.19818,21.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="url(#linearGradient5691)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ <rect width="20" height="9" x="271" y="-438" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" transform="matrix(0.90566,0,0,0.90566,9.830195,-35.68869)" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <g>
+ <path transform="matrix(1.056604,0,0,1.056604,-17.19811,24.86321)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path transform="matrix(1.056604,0,0,1.056604,-17.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="url(#linearGradient5693)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ <g>
+ <path transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="url(#linearGradient5695)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ <g transform="translate(-1,0)">
+ <path d="M 280.46875,-440.96875 C 276.88937,-440.96875 274,-438.04812 274,-434.46875 C 274,-432.09807 275.34943,-430.13096 277.25,-429 L 283.71875,-429 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.5 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 280.5,-441 C 276.912,-441 274,-438.08799 274,-434.5 C 274,-432.1236 275.34485,-430.13368 277.25,-429 L 283.75,-429 C 285.65515,-430.13368 287,-432.1236 287,-434.5 C 287,-438.088 284.088,-440.99999 280.5,-441 z" opacity="1" fill="url(#linearGradient5697)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ <path d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" transform="matrix(0.90566,0,0,0.90566,9.830296,-35.68884)" opacity="1" fill="url(#linearGradient5699)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 292.9564,-437.33396 C 292.95487,-434.6494 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.9564,-437.33396 292.9564,-437.33396 z" fill="#888a85" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
+ <g transform="matrix(1.142857,0,0,1.142857,-28.57139,67.00008)">
+ <path transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="url(#linearGradient5701)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ </g>
+ <path d="M 31.501294,21.49982 C 29.311574,21.49982 27.777694,22.83559 27.105744,25.34334 C 26.437284,24.99972 25.558154,24.50999 24.751294,24.50999 C 22.034784,24.50999 19.996154,26.44881 19.996164,29.05553 C 19.996164,29.6023 20.263374,30.38897 20.438124,30.87754 C 19.113694,31.60549 18.001294,32.76804 18.001294,34.25009 C 18.001294,36.59614 19.547464,38.50018 22.340574,38.50018 C 22.511384,38.50018 40.491214,38.50018 40.662014,38.50018 C 43.433024,38.50018 45.001294,36.59614 45.001294,34.25009 C 45.001294,32.65772 43.888894,31.5834 42.564464,30.85545 C 42.739224,30.36689 43.028534,29.60229 43.028534,29.05553 C 43.028534,26.44882 40.912724,24.4879 38.251304,24.48789 C 37.444434,24.48789 36.609494,24.97763 35.941034,25.32125 C 35.292184,22.89971 33.691024,21.49982 31.501294,21.49982 z" opacity="0.45" fill="#ffffff" fill-opacity="1" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <g transform="translate(-264.0013,462.5)" opacity="0.45">
+ <path d="M 280.5,-445.5 C 278.22917,-445.5 276.39009,-443.94972 275.78125,-441.875 C 275.08802,-442.23883 274.33674,-442.5 273.5,-442.5 C 270.74,-442.5 268.49999,-440.26001 268.5,-437.5 C 268.5,-436.92107 268.66252,-436.3923 268.84375,-435.875 C 267.47028,-435.10426 266.5,-433.686 266.5,-432 C 266.5,-429.516 268.516,-427.49999 271,-427.5 C 271.17713,-427.5 289.82287,-427.5 290,-427.5 C 292.48399,-427.5 294.5,-429.516 294.5,-432 C 294.5,-433.686 293.52972,-435.10426 292.15625,-435.875 C 292.33749,-436.39229 292.5,-436.92108 292.5,-437.5 C 292.5,-440.26 290.26,-442.49999 287.5,-442.5 C 286.66326,-442.5 285.91198,-442.23883 285.21875,-441.875 C 284.60991,-443.94972 282.77083,-445.5 280.5,-445.5 z" fill="#c4c5c2" fill-opacity="1" stroke="#888a85" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 280.5,-445 C 278.31028,-445 276.7764,-443.66423 276.10445,-441.15648 C 275.43599,-441.5001 274.55686,-441.98983 273.75,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.1124,-434.89433 267,-433.73178 267,-432.24973 C 267,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294,-429.90368 294,-432.24973 C 294,-433.8421 292.8876,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.051 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.6082,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445 280.5,-445 z" opacity="1" fill="url(#linearGradient5703)" fill-opacity="1" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <g>
+ <path transform="matrix(1.056604,0,0,1.056604,-24.19818,21.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path transform="matrix(1.056604,0,0,1.056604,-24.19818,21.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="url(#linearGradient5705)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ <rect width="20" height="9" x="271" y="-438" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" transform="matrix(0.90566,0,0,0.90566,9.830195,-35.68869)" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <g>
+ <path transform="matrix(1.056604,0,0,1.056604,-17.19811,24.86321)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path transform="matrix(1.056604,0,0,1.056604,-17.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="url(#linearGradient5707)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ <g>
+ <path transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="url(#linearGradient5709)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ <g transform="translate(-1,0)">
+ <path d="M 280.46875,-440.96875 C 276.88937,-440.96875 274,-438.04812 274,-434.46875 C 274,-432.09807 275.34943,-430.13096 277.25,-429 L 283.71875,-429 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.5 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 280.5,-441 C 276.912,-441 274,-438.08799 274,-434.5 C 274,-432.1236 275.34485,-430.13368 277.25,-429 L 283.75,-429 C 285.65515,-430.13368 287,-432.1236 287,-434.5 C 287,-438.088 284.088,-440.99999 280.5,-441 z" opacity="1" fill="url(#linearGradient5711)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ <path d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" transform="matrix(0.90566,0,0,0.90566,9.830296,-35.68884)" opacity="1" fill="url(#linearGradient5713)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 292.9564,-437.33396 C 292.95487,-434.6494 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.9564,-437.33396 292.9564,-437.33396 z" fill="#888a85" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
+ <g transform="matrix(1.142857,0,0,1.142857,-28.57139,67.00008)">
+ <path transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="#c4c5c2" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)" d="M 291.6875,-437.59375 A 3.3125,3.3125 0 1 1 285.0625,-437.59375 A 3.3125,3.3125 0 1 1 291.6875,-437.59375 z" opacity="1" fill="url(#linearGradient5715)" fill-opacity="1" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ </g>
+ <path d="M 16.498705,17.499819 C 14.308985,17.499819 12.775105,18.835589 12.103155,21.343339 C 11.434695,20.999719 10.555565,20.509989 9.748705,20.509989 C 7.032195,20.509989 4.993565,22.448809 4.993575,25.055529 C 4.993575,25.602299 5.260785,26.388969 5.435535,26.877539 C 4.111105,27.605489 2.998705,28.768039 2.998705,30.250089 C 2.998705,32.596139 4.544875,34.500179 7.337985,34.500179 C 7.508795,34.500179 25.488624,34.500179 25.659424,34.500179 C 28.430434,34.500179 29.998704,32.596139 29.998704,30.250089 C 29.998704,28.657719 28.886304,27.583399 27.561874,26.855449 C 27.736634,26.366889 28.025944,25.602289 28.025944,25.055529 C 28.025944,22.448819 25.910134,20.487899 23.248714,20.487889 C 22.441844,20.487889 21.606904,20.977629 20.938444,21.321249 C 20.289594,18.899709 18.688434,17.499819 16.498705,17.499819 z" opacity="0.45" fill="#ffffff" fill-opacity="1" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-haze.svg b/demos/embedded/weatherinfo/icons/weather-haze.svg
new file mode 100644
index 000000000..b31811f12
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-haze.svg
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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:xlink="http://www.w3.org/1999/xlink" width="48" height="48" id="svg14353" version="1.0">
+
+ <defs id="defs14355">
+ <linearGradient id="linearGradient8371">
+ <stop offset="0" id="stop8373" stop-color="#e8d277" stop-opacity="1"/>
+ <stop offset="1" id="stop8375" stop-color="#e8d277" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient id="linearGradient9362">
+ <stop id="stop9364" offset="0" stop-color="#392100" stop-opacity="1"/>
+ <stop id="stop9366" offset="1" stop-color="#392100" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient id="linearGradient7010">
+ <stop offset="0" id="stop7012" stop-color="#aec2d7" stop-opacity="1"/>
+ <stop id="stop9915" offset="1" stop-color="#81a0c1" stop-opacity="1"/>
+ </linearGradient>
+ <linearGradient id="linearGradient6825">
+ <stop offset="0" id="stop6827" stop-color="#3a2400" stop-opacity="1"/>
+ <stop id="stop6833" offset="0.28565985" stop-color="#8c5600" stop-opacity="1"/>
+ <stop offset="1" id="stop6829" stop-color="#a36400" stop-opacity="1"/>
+ </linearGradient>
+ <linearGradient id="linearGradient6772">
+ <stop offset="0" id="stop6774" stop-color="#888a85" stop-opacity="1"/>
+ <stop offset="1" id="stop6776" stop-color="#eeeeec" stop-opacity="1"/>
+ </linearGradient>
+ <linearGradient id="linearGradient6764">
+ <stop offset="0" id="stop6766" stop-color="#eeeeec" stop-opacity="1"/>
+ <stop offset="1" id="stop6768" stop-color="#eeeeec" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient id="linearGradient6746">
+ <stop offset="0" id="stop6748" stop-color="#eeeeec" stop-opacity="1"/>
+ <stop offset="1" id="stop6750" stop-color="#eeeeec" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient id="linearGradient6728">
+ <stop offset="0" id="stop6730" stop-color="#babdb6" stop-opacity="1"/>
+ <stop offset="1" id="stop6732" stop-color="#babdb6" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient id="linearGradient6685">
+ <stop offset="0" id="stop6687" stop-color="#000000" stop-opacity="1"/>
+ <stop offset="1" id="stop6689" stop-color="#000000" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient id="linearGradient6631">
+ <stop offset="0" id="stop6633" stop-color="#555753" stop-opacity="1"/>
+ <stop id="stop6639" offset="0.0343047" stop-color="#eeeeec" stop-opacity="0.49803922"/>
+ <stop offset="0.06714281" id="stop6641" stop-color="#555753" stop-opacity="1"/>
+ <stop id="stop6643" offset="0.08441304" stop-color="#eeeeec" stop-opacity="0.49803922"/>
+ <stop offset="0.13726114" id="stop6645" stop-color="#555753" stop-opacity="1"/>
+ <stop id="stop6647" offset="0.15779018" stop-color="#eeeeec" stop-opacity="0.49803922"/>
+ <stop offset="0.21104114" id="stop6649" stop-color="#555753" stop-opacity="1"/>
+ <stop id="stop6651" offset="0.23053712" stop-color="#eeeeec" stop-opacity="0.49803922"/>
+ <stop offset="0.27452311" id="stop6653" stop-color="#555753" stop-opacity="1"/>
+ <stop id="stop6655" offset="0.29490501" stop-color="#eeeeec" stop-opacity="0.49803922"/>
+ <stop offset="0.34954464" id="stop6657" stop-color="#555753" stop-opacity="1"/>
+ <stop id="stop6659" offset="0.36960241" stop-color="#eeeeec" stop-opacity="0.49803922"/>
+ <stop offset="0.4220143" id="stop6675" stop-color="#555753" stop-opacity="1"/>
+ <stop id="stop6677" offset="0.44345734" stop-color="#eeeeec" stop-opacity="0.49803922"/>
+ <stop offset="0.50078195" id="stop6679" stop-color="#555753" stop-opacity="1"/>
+ <stop id="stop6681" offset="0.52629334" stop-color="#eeeeec" stop-opacity="0.49803922"/>
+ <stop offset="0.57410157" id="stop6683" stop-color="#555753" stop-opacity="1"/>
+ <stop id="stop6693" offset="0.5898369" stop-color="#eeeeec" stop-opacity="0.49803922"/>
+ <stop offset="0.64333093" id="stop6695" stop-color="#555753" stop-opacity="1"/>
+ <stop id="stop6697" offset="0.66151941" stop-color="#eeeeec" stop-opacity="0.49803922"/>
+ <stop offset="0.70865703" id="stop6699" stop-color="#555753" stop-opacity="1"/>
+ <stop id="stop6701" offset="0.72415513" stop-color="#eeeeec" stop-opacity="0.49803922"/>
+ <stop offset="1" id="stop6661" stop-color="#555753" stop-opacity="1"/>
+ </linearGradient>
+ <radialGradient xlink:href="#linearGradient7010" id="radialGradient6968" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.2893727,-0.2474294,0.6139915,0.7180729,9.91225,5.2335615)" cx="17.055056" cy="3.5953908" fx="17.055056" fy="3.5953908" r="24"/>
+ <linearGradient xlink:href="#linearGradient6825" id="linearGradient7066" gradientUnits="userSpaceOnUse" x1="37.997959" y1="18.245197" x2="37.997959" y2="39.658928"/>
+ <linearGradient xlink:href="#linearGradient6772" id="linearGradient7068" gradientUnits="userSpaceOnUse" x1="7.8838124" y1="18.558826" x2="7.8838124" y2="34.97258"/>
+ <linearGradient xlink:href="#linearGradient6728" id="linearGradient7070" gradientUnits="userSpaceOnUse" x1="15.133464" y1="32.587334" x2="17.008692" y2="32.587334"/>
+ <linearGradient xlink:href="#linearGradient6631" id="linearGradient7072" gradientUnits="userSpaceOnUse" x1="-0.52151477" y1="29.500589" x2="18.516363" y2="14.809909"/>
+ <radialGradient xlink:href="#linearGradient6685" id="radialGradient7074" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-0.5944965,-3.8328271e-7,4.1781509e-7,-0.6480585,194.52841,528.49324)" cx="122" cy="401.95938" fx="122" fy="401.95938" r="6.7283827"/>
+ <linearGradient xlink:href="#linearGradient6728" id="linearGradient7076" gradientUnits="userSpaceOnUse" x1="15.072129" y1="21.263441" x2="17.008948" y2="21.263441"/>
+ <linearGradient xlink:href="#linearGradient6746" id="linearGradient7078" gradientUnits="userSpaceOnUse" x1="15.526249" y1="2.097311" x2="15.526249" y2="14.758003"/>
+ <linearGradient xlink:href="#linearGradient6764" id="linearGradient7080" gradientUnits="userSpaceOnUse" x1="11.884123" y1="10.724713" x2="6.123559" y2="29.316263"/>
+ <linearGradient xlink:href="#linearGradient9362" id="linearGradient7082" gradientUnits="userSpaceOnUse" x1="8.5806656" y1="20.995518" x2="8.5806656" y2="23.085056"/>
+ <linearGradient xlink:href="#linearGradient9362" id="linearGradient7084" gradientUnits="userSpaceOnUse" gradientTransform="translate(25.006402,2.9778958e-7)" x1="8.5806656" y1="20.995518" x2="8.5806656" y2="23.085056"/>
+ <linearGradient xlink:href="#linearGradient9362" id="linearGradient7086" gradientUnits="userSpaceOnUse" gradientTransform="translate(35.006405,2.9778958e-7)" x1="8.5806656" y1="20.995518" x2="8.5806656" y2="23.085056"/>
+ <linearGradient xlink:href="#linearGradient6825" id="linearGradient7132" gradientUnits="userSpaceOnUse" x1="37.997959" y1="18.245197" x2="37.997959" y2="39.658928"/>
+ <linearGradient xlink:href="#linearGradient6772" id="linearGradient7134" gradientUnits="userSpaceOnUse" x1="7.8838124" y1="18.558826" x2="7.8838124" y2="34.97258"/>
+ <linearGradient xlink:href="#linearGradient6728" id="linearGradient7136" gradientUnits="userSpaceOnUse" x1="15.133464" y1="32.587334" x2="17.008692" y2="32.587334"/>
+ <linearGradient xlink:href="#linearGradient6631" id="linearGradient7138" gradientUnits="userSpaceOnUse" x1="-0.52151477" y1="29.500589" x2="18.516363" y2="14.809909"/>
+ <radialGradient xlink:href="#linearGradient6685" id="radialGradient7140" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-0.5944965,-3.8328271e-7,4.1781509e-7,-0.6480585,194.52841,528.49324)" cx="122" cy="401.95938" fx="122" fy="401.95938" r="6.7283827"/>
+ <linearGradient xlink:href="#linearGradient6728" id="linearGradient7142" gradientUnits="userSpaceOnUse" x1="15.072129" y1="21.263441" x2="17.008948" y2="21.263441"/>
+ <linearGradient xlink:href="#linearGradient6746" id="linearGradient7144" gradientUnits="userSpaceOnUse" x1="15.526249" y1="2.097311" x2="15.526249" y2="14.758003"/>
+ <linearGradient xlink:href="#linearGradient6764" id="linearGradient7146" gradientUnits="userSpaceOnUse" x1="11.884123" y1="10.724713" x2="6.123559" y2="29.316263"/>
+ <linearGradient xlink:href="#linearGradient9362" id="linearGradient7148" gradientUnits="userSpaceOnUse" x1="8.5806656" y1="20.995518" x2="8.5806656" y2="23.085056"/>
+ <linearGradient xlink:href="#linearGradient9362" id="linearGradient7150" gradientUnits="userSpaceOnUse" gradientTransform="translate(25.006402,2.9778958e-7)" x1="8.5806656" y1="20.995518" x2="8.5806656" y2="23.085056"/>
+ <linearGradient xlink:href="#linearGradient9362" id="linearGradient7152" gradientUnits="userSpaceOnUse" gradientTransform="translate(35.006405,2.9778958e-7)" x1="8.5806656" y1="20.995518" x2="8.5806656" y2="23.085056"/>
+ <filter id="filter7663" x="-0.1147047" width="1.2294094" y="-0.12580788" height="1.2516158">
+ <feGaussianBlur stdDeviation="2.2006423" id="feGaussianBlur7665"/>
+ </filter>
+ <linearGradient xlink:href="#linearGradient8371" id="linearGradient8377" x1="24" y1="45.998173" x2="24" y2="2.0644991" gradientUnits="userSpaceOnUse"/>
+ </defs>
+ <metadata id="metadata14358">
+ <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>
+ <g id="layer1">
+ <rect width="47" height="47" x="0.5" y="0.5" fill="url(#radialGradient6968)" fill-opacity="1" fill-rule="evenodd" stroke="#132c50" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <g transform="translate(-1.6037056e-2,3.090275e-2)">
+ <path d="M 1.5112736,46.463508 L 46.518528,46.463508 L 46.518528,20.097311 L 42.49936,11.994593 L 37.997439,20.097311 L 33.503201,11.994593 L 29.51269,20.097311 L 29.51269,40.518226 L 17.513556,40.518226 L 17.513556,15.979513 L 18.991385,15.979513 L 15.625234,5.482499 L 11.994559,15.979622 L 13.487574,15.979622 L 13.487574,22.494238 L 8.5736236,16.493825 L 1.5112736,16.493825 L 1.5112736,46.463508 z" fill="#888a85" fill-rule="evenodd" stroke="#888a85" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="round" stroke-opacity="1"/>
+ <path d="M 46.499202,19.996278 L 46.499164,39.496968 L 29.497928,39.514749 L 29.496716,20.073218 L 33.471729,13.30179 L 37.969149,19.742327 L 42.464705,13.30179 L 46.499202,19.996278 z" fill="url(#linearGradient7066)" fill-opacity="1" fill-rule="evenodd" stroke="#331f00" stroke-width="1px" stroke-linecap="round" stroke-linejoin="miter" stroke-opacity="1"/>
+ <path d="M 30.4991,19.359794 L 30.495194,38.512814 L 45.998784,38.497189" opacity="0.25" fill="none" fill-rule="evenodd" stroke="#eeeeec" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
+ <rect y="14.973112" x="13.484319" height="24.544136" width="4.027225" fill="#eeeeec" fill-opacity="1" fill-rule="evenodd" stroke="#2e3436" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <rect y="25.958162" x="1.5003295" height="13.560402" width="14.000328" fill="url(#linearGradient7068)" fill-opacity="1" fill-rule="evenodd" stroke="#2e3436" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 16.000204,26.158288 L 17.008692,26.165076 L 17.006997,39.016383 L 16.000204,39.016383 L 16.000204,26.158288 z" fill="url(#linearGradient7070)" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 1.5018555,16.471187 L 1.5018555,26.192359 L 16.519497,26.192359 L 8.5470601,16.471187 L 1.5018555,16.471187 z" fill="#7f4f01" fill-opacity="1" fill-rule="evenodd" stroke="#392100" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="round" stroke-opacity="1"/>
+ <path d="M 46.494238,19.981528 L 42.46863,15.428034 L 37.978753,20.107557 L 33.495519,15.782001 L 28.445309,22.028089 L 33.475653,11.989135 L 37.973073,19.908885 L 42.468629,12.0045 L 46.494238,19.981528 z" fill="#d3d7cf" fill-rule="evenodd" stroke="#d3d7cf" stroke-width="1.10000002" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/>
+ <path d="M 1.9983315,16.96932 L 1.9983315,25.690091 L 15.466816,25.690091 L 8.3170492,16.96932 L 1.9983315,16.96932 z" opacity="0.5" fill="url(#linearGradient7072)" fill-opacity="1" fill-rule="evenodd" stroke="url(#radialGradient7074)" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="round" stroke-opacity="1"/>
+ <path d="M 15.632485,5.4903604 L 12.001677,15.991016 L 19.003769,15.992368 L 15.632485,5.4903604 z" fill="#532323" fill-opacity="1" fill-rule="evenodd" stroke="#2a1111" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="round" stroke-opacity="1"/>
+ <path d="M 13.983416,22.32144 L 13.983416,16.492941 L 17.007669,16.492941 L 17.007669,21.219904 L 17.008948,26.033783 C 17.008949,26.039055 16.935124,25.911261 16.894583,25.856332 L 13.983416,22.32144 z" fill="url(#linearGradient7076)" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 15.595391,8.6350832 L 13.413573,14.980794 L 17.638924,14.980794 L 15.595391,8.6350832 z" opacity="0.5" fill="none" fill-rule="evenodd" stroke="url(#linearGradient7078)" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
+ <path d="M 1.9974392,25.190652 L 14.412292,25.190652 L 8.0819463,17.470171 L 2.0013455,17.470171" opacity="0.5" fill="none" fill-rule="evenodd" stroke="url(#linearGradient7080)" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
+ <g fill="#fce94f">
+ <rect width="2" height="2" x="30.999861" y="22.002562" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <rect width="2" height="2" x="34.001801" y="22.000923" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <rect width="2" height="2" x="40.997707" y="22.000923" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <rect width="2" height="2" x="9.0004454" y="22.002562" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <rect width="2" height="2" x="6.0018048" y="22.002562" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ <g>
+ <path d="M 4.4711906,23.06274 L 5.7618436,21.495518 L 11.216391,21.495518 L 12.507043,23.06274" fill="url(#linearGradient7082)" fill-opacity="1" fill-rule="evenodd" stroke="#392100" stroke-width="1px" stroke-linecap="round" stroke-linejoin="miter" stroke-opacity="1"/>
+ <path d="M 29.477593,23.06274 L 30.768246,21.495518 L 36.222793,21.495518 L 37.513445,23.06274" fill="url(#linearGradient7084)" fill-opacity="1" fill-rule="evenodd" stroke="#392100" stroke-width="1px" stroke-linecap="round" stroke-linejoin="miter" stroke-opacity="1"/>
+ <path d="M 39.477596,23.06274 L 40.768249,21.495518 L 43.203584,21.495518 L 44.822027,23.06274" fill="url(#linearGradient7086)" fill-opacity="1" fill-rule="evenodd" stroke="#392100" stroke-width="1px" stroke-linecap="round" stroke-linejoin="miter" stroke-opacity="1"/>
+ </g>
+ </g>
+ <g transform="translate(-7.6824584e-3,3.0729835e-2)" filter="url(#filter7663)" opacity="0.6">
+ <path d="M 1.4995548,46.463508 L 46.518528,46.463508 L 46.518528,20.097311 L 42.49936,11.994593 L 37.997439,20.097311 L 33.503201,11.994593 L 29.51269,20.097311 L 29.51269,40.518226 L 17.513556,40.518226 L 17.513556,15.979513 L 18.991385,15.979513 L 15.625234,5.482499 L 11.994559,15.979622 L 13.487574,15.979622 L 13.487574,22.494238 L 8.5736236,16.493825 L 1.4995548,16.493825 L 1.4995548,46.463508 z" fill="#888a85" fill-rule="evenodd" stroke="#888a85" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="round" stroke-opacity="1"/>
+ <path d="M 46.499202,19.996278 L 46.499164,39.496968 L 29.497928,39.514749 L 29.496716,20.073218 L 33.471729,13.30179 L 37.969149,19.742327 L 42.464705,13.30179 L 46.499202,19.996278 z" fill="url(#linearGradient7132)" fill-opacity="1" fill-rule="evenodd" stroke="#331f00" stroke-width="1px" stroke-linecap="round" stroke-linejoin="miter" stroke-opacity="1"/>
+ <path d="M 30.4991,19.359794 L 30.495194,38.512814 L 45.998784,38.497189" opacity="0.25000000000000000" fill="none" fill-rule="evenodd" stroke="#eeeeec" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
+ <rect y="14.973112" x="13.484319" height="24.544136" width="4.027225" fill="#eeeeec" fill-opacity="1" fill-rule="evenodd" stroke="#2e3436" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <rect y="25.958162" x="1.5003295" height="13.560402" width="14.000328" fill="url(#linearGradient7134)" fill-opacity="1" fill-rule="evenodd" stroke="#2e3436" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 16.000204,26.158288 L 17.008692,26.165076 L 17.006997,39.016383 L 16.000204,39.016383 L 16.000204,26.158288 z" fill="url(#linearGradient7136)" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 1.5018555,16.471187 L 1.5018555,26.192359 L 16.519497,26.192359 L 8.5470601,16.471187 L 1.5018555,16.471187 z" fill="#7f4f01" fill-opacity="1" fill-rule="evenodd" stroke="#392100" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="round" stroke-opacity="1"/>
+ <path d="M 46.494238,19.981528 L 42.46863,15.428034 L 37.978753,20.107557 L 33.495519,15.782001 L 28.445309,22.028089 L 33.475653,11.989135 L 37.973073,19.908885 L 42.468629,12.0045 L 46.494238,19.981528 z" fill="#d3d7cf" fill-rule="evenodd" stroke="#d3d7cf" stroke-width="1.10000002000000000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/>
+ <path d="M 1.9983315,16.96932 L 1.9983315,25.690091 L 15.466816,25.690091 L 8.3170492,16.96932 L 1.9983315,16.96932 z" opacity="0.50000000000000000" fill="url(#linearGradient7138)" fill-opacity="1" fill-rule="evenodd" stroke="url(#radialGradient7140)" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="round" stroke-opacity="1"/>
+ <path d="M 15.632485,5.4903604 L 12.001677,15.991016 L 19.003769,15.992368 L 15.632485,5.4903604 z" fill="#532323" fill-opacity="1" fill-rule="evenodd" stroke="#2a1111" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="round" stroke-opacity="1"/>
+ <path d="M 13.983416,22.32144 L 13.983416,16.492941 L 17.007669,16.492941 L 17.007669,21.219904 L 17.008948,26.033783 C 17.008949,26.039055 16.935124,25.911261 16.894583,25.856332 L 13.983416,22.32144 z" fill="url(#linearGradient7142)" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 15.595391,8.6350832 L 13.413573,14.980794 L 17.638924,14.980794 L 15.595391,8.6350832 z" opacity="0.50000000000000000" fill="none" fill-rule="evenodd" stroke="url(#linearGradient7144)" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
+ <path d="M 1.9974392,25.190652 L 14.412292,25.190652 L 8.0819463,17.470171 L 2.0013455,17.470171" opacity="0.50000000000000000" fill="none" fill-rule="evenodd" stroke="url(#linearGradient7146)" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
+ <g fill="#fce94f">
+ <rect width="2" height="2" x="30.999861" y="22.002562" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <rect width="2" height="2" x="34.001801" y="22.000923" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <rect width="2" height="2" x="40.997707" y="22.000923" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <rect width="2" height="2" x="9.0004454" y="22.002562" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <rect width="2" height="2" x="6.0018048" y="22.002562" fill="#fce94f" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ <g>
+ <path d="M 4.4711906,23.06274 L 5.7618436,21.495518 L 11.216391,21.495518 L 12.507043,23.06274" fill="url(#linearGradient7148)" fill-opacity="1" fill-rule="evenodd" stroke="#392100" stroke-width="1px" stroke-linecap="round" stroke-linejoin="miter" stroke-opacity="1"/>
+ <path d="M 29.477593,23.06274 L 30.768246,21.495518 L 36.222793,21.495518 L 37.513445,23.06274" fill="url(#linearGradient7150)" fill-opacity="1" fill-rule="evenodd" stroke="#392100" stroke-width="1px" stroke-linecap="round" stroke-linejoin="miter" stroke-opacity="1"/>
+ <path d="M 39.477596,23.06274 L 40.768249,21.495518 L 43.203584,21.495518 L 44.822027,23.06274" fill="url(#linearGradient7152)" fill-opacity="1" fill-rule="evenodd" stroke="#392100" stroke-width="1px" stroke-linecap="round" stroke-linejoin="miter" stroke-opacity="1"/>
+ </g>
+ </g>
+ <rect width="45" height="45" x="1.5" y="1.5" opacity="0.5" fill="none" fill-opacity="1" fill-rule="evenodd" stroke="#eeeeec" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <rect width="44" height="43.933674" x="2" y="2.0644991" opacity="0.5" fill="url(#linearGradient8377)" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-icy.svg b/demos/embedded/weatherinfo/icons/weather-icy.svg
new file mode 100644
index 000000000..2c45b3331
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-icy.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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:xlink="http://www.w3.org/1999/xlink" width="48" height="48" id="svg6619" version="1.0">
+ <defs id="defs6621">
+ <linearGradient id="linearGradient7440">
+ <stop offset="0" id="stop7442" stop-color="#eeeeec" stop-opacity="1"/>
+ <stop offset="1" id="stop7444" stop-color="#eeeeec" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient id="linearGradient7430">
+ <stop offset="0" id="stop7432" stop-color="#eeeeec" stop-opacity="1"/>
+ <stop offset="1" id="stop7434" stop-color="#eeeeec" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient id="linearGradient7392">
+ <stop offset="0" id="stop7394" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop7396" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient id="linearGradient7380">
+ <stop offset="0" id="stop7382" stop-color="#cedeef" stop-opacity="1"/>
+ <stop offset="1" id="stop7384" stop-color="#cedeef" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient7380" id="linearGradient7386" x1="18.165867" y1="9.2548895" x2="20.711481" y2="21.572344" gradientUnits="userSpaceOnUse"/>
+ <radialGradient xlink:href="#linearGradient7392" id="radialGradient7398" cx="17.700384" cy="13.797695" fx="17.700384" fy="13.797695" r="1.4135723" gradientTransform="matrix(1,0,0,1.0652174,6.1248392e-7,-0.8998502)" gradientUnits="userSpaceOnUse"/>
+ <radialGradient xlink:href="#linearGradient7392" id="radialGradient7402" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1,0,0,1.0652174,6.1248392e-7,-0.8998502)" cx="17.700384" cy="13.797695" fx="17.700384" fy="13.797695" r="1.4135723"/>
+ <radialGradient xlink:href="#linearGradient7430" id="radialGradient7438" cx="10.693982" cy="16.471191" fx="10.693982" fy="16.471191" r="0.553137" gradientTransform="matrix(2.1647007,0,0,0.8888889,-12.455288,1.8301322)" gradientUnits="userSpaceOnUse"/>
+ <radialGradient xlink:href="#linearGradient7440" id="radialGradient7448" cx="10.693982" cy="16.471191" fx="10.693982" fy="16.471191" r="0.553137" gradientTransform="matrix(2.2783611,0,0,0.8888889,-13.670771,1.8301322)" gradientUnits="userSpaceOnUse"/>
+ </defs>
+
+ <metadata id="metadata6624">
+ <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>
+ <g id="layer1">
+ <g>
+ <path d="M 24 10.375 C 11.701921 10.375 1.71875 12.767211 1.71875 15.71875 C 1.71875 17.498261 5.3609075 19.059125 10.9375 20.03125 L 14.3125 46.90625 L 17.9375 26.1875 L 21.3125 41.90625 L 25.5625 23.71875 L 28.03125 37.6875 L 32.3125 22.9375 L 34.84375 33.0625 L 38.375 19.8125 C 43.199321 18.83144 46.28125 17.354051 46.28125 15.71875 C 46.28125 12.767211 36.298079 10.375 24 10.375 z " fill="#729fcf" fill-rule="evenodd" stroke="#204a87" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="round" stroke-opacity="1"/>
+ <path d="M 24.013525,20.535861 C 29.915498,20.535861 35.256377,19.860148 39.169775,19.061611 C 41.126474,18.662343 42.702812,18.185066 43.857275,17.628422 C 45.011738,17.071777 45.794775,16.382816 45.794775,15.758562 C 45.794775,15.111496 45.011739,14.383887 43.857275,13.827243 C 42.702811,13.270598 41.126474,12.706404 39.169775,12.307136 C 35.256377,11.508599 29.915498,10.878502 24.013525,10.878502 C 18.111552,10.878502 12.739423,11.552057 8.826025,12.350594 C 6.8693258,12.749862 5.2929887,13.270598 4.138525,13.827243 C 2.9840613,14.383887 2.201025,14.939123 2.201025,15.758562 C 2.201025,16.578001 2.9840613,17.071777 4.138525,17.628422 C 5.2929887,18.185066 6.8693258,18.662343 8.826025,19.061611 M 8.826025,19.061611 C 12.739423,19.860148 18.111552,20.535861 24.013525,20.535861 M 24.013525,11.738416 C 29.832893,11.738416 35.083852,12.397075 38.857275,13.16705 C 40.743987,13.552037 42.268014,14.087721 43.263525,14.567724 C 44.259036,15.047727 44.669775,15.382119 44.669775,15.758562 C 44.669775,16.135005 44.259035,16.407937 43.263525,16.88794 C 42.268015,17.367943 40.743986,17.840596 38.857275,18.225584 C 35.083852,18.995559 29.832893,19.652061 24.013525,19.652061 C 18.194157,19.652061 12.911948,18.995559 9.138525,18.225584 C 7.2518134,17.840596 5.7277856,17.367943 4.732275,16.88794 C 3.7367644,16.407937 3.326025,16.135005 3.326025,15.758562 C 3.326025,15.382119 3.7367644,15.047727 4.732275,14.567724 C 5.7277856,14.087721 7.2518134,13.595495 9.138525,13.210508 C 12.911948,12.440533 18.194157,11.738416 24.013525,11.738416 z" opacity="0.5" fill="#eeeeec" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1.14379668" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 20.220231,11.00128 L 29.138835,20.368103 L 24.21511,20.523801 L 15.180538,11.370038 L 20.220231,11.00128 z" fill="#cedeef" fill-rule="evenodd" stroke="none" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1" fill-opacity="1"/>
+ <path d="M 11.915494,19.751601 L 14.481435,40.163892 L 16.883534,26.331262 C 17.063009,24.706837 18.883373,24.906404 18.990928,26.307141 L 21.349551,37.344431 L 24.506026,23.859196 C 24.638961,22.408831 26.471791,22.275606 26.60475,23.905247 L 28.263765,33.272727 L 31.29544,22.83487 C 31.632247,21.540581 33.13534,21.733731 33.309125,22.813719 L 34.878361,29.055058 L 37.413573,19.544174" fill="none" fill-rule="evenodd" stroke="#eeeeec" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1" stroke-miterlimit="7" stroke-dasharray="none" opacity="0.5"/>
+ <path d="M 24.796795,10.87836 L 33.030717,20.024802 L 31.057055,20.187957 L 22.768625,10.889409 L 24.796795,10.87836 z" fill="#cedeef" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
+ <path d="M 28.334973,10.980368 L 36.114053,19.582843 L 35.115621,19.734949 L 27.305235,10.925125 L 28.334973,10.980368 z" fill="#cedeef" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1"/>
+ <path d="M 24.276568,13.090909 C 16.315524,13.346336 6.9039601,14.217661 2.7042254,16.717029 C 1.2906531,14.934699 3.0729833,13.828425 9.2804097,12.230474 C 14.942786,11.172151 20.784867,10.869471 24.346019,10.869471 C 29.101893,10.979193 33.366216,11.259555 39.81653,12.450903 C 39.81653,12.450903 46.858243,14.197968 45.56759,16.287597 C 41.461334,13.814622 33.948682,12.944657 24.276568,13.090909 z" fill="url(#linearGradient7386)" fill-rule="evenodd" stroke="none" stroke-width="1px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1" fill-opacity="1"/>
+ <path transform="matrix(2.1222827,0,0,1.9923469,-21.167011,-16.108233)" d="M 19.113956,13.797695 A 1.4135723,1.5057619 0 1 1 16.286812,13.797695 A 1.4135723,1.5057619 0 1 1 19.113956,13.797695 z" opacity="1" fill="url(#radialGradient7398)" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="7" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path transform="matrix(1.8078704,0,0,1.0169271,-3.0298763,-5.1757356)" d="M 11.247119,16.471191 A 0.553137,0.49167734 0 1 1 10.140845,16.471191 A 0.553137,0.49167734 0 1 1 11.247119,16.471191 z" opacity="1" fill="#eeeeec" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="7" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path transform="matrix(4.4701088,0,0,4.6249999,-65.908816,-42.825863)" d="M 19.113956,13.797695 A 1.4135723,1.5057619 0 1 1 16.286812,13.797695 A 1.4135723,1.5057619 0 1 1 19.113956,13.797695 z" opacity="1" fill="url(#radialGradient7402)" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="7" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path transform="matrix(4.5196759,0,0,1.0169271,-35.029811,3.0059967)" d="M 11.247119,16.471191 A 0.553137,0.49167734 0 1 1 10.140845,16.471191 A 0.553137,0.49167734 0 1 1 11.247119,16.471191 z" opacity="1" fill="url(#radialGradient7438)" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="7" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path transform="matrix(0,4.5196759,-2.0338541,0,46.913063,-27.253478)" d="M 11.247119,16.471191 A 0.553137,0.49167734 0 1 1 10.140845,16.471191 A 0.553137,0.49167734 0 1 1 11.247119,16.471191 z" opacity="1" fill="url(#radialGradient7448)" fill-opacity="1" fill-rule="evenodd" stroke="none" stroke-width="1" stroke-linecap="square" stroke-linejoin="round" stroke-miterlimit="7" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-overcast.svg b/demos/embedded/weatherinfo/icons/weather-overcast.svg
new file mode 100644
index 000000000..cf7721413
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-overcast.svg
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" id="svg1306">
+ <defs id="defs1308">
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient10670" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/>
+ <linearGradient xlink:href="#linearGradient6549" id="linearGradient10668" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/>
+ <linearGradient xlink:href="#linearGradient6527" id="linearGradient10666" gradientUnits="userSpaceOnUse" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient10664" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/>
+ <linearGradient xlink:href="#linearGradient6513" id="linearGradient10662" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/>
+ <linearGradient xlink:href="#linearGradient6497" id="linearGradient10660" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/>
+ <linearGradient xlink:href="#linearGradient6470" id="linearGradient10658" gradientUnits="userSpaceOnUse" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient10656" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/>
+ <linearGradient id="linearGradient6549">
+ <stop offset="0" id="stop6551" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6553" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6549" id="linearGradient10654" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/>
+ <linearGradient id="linearGradient6527">
+ <stop offset="0" id="stop6530" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6532" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6527" id="linearGradient10652" gradientUnits="userSpaceOnUse" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/>
+ <linearGradient id="linearGradient6538">
+ <stop offset="0" id="stop6540" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6542" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient10650" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/>
+ <linearGradient id="linearGradient6513">
+ <stop offset="0" id="stop6515" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6517" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6513" id="linearGradient10648" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/>
+ <linearGradient id="linearGradient6497">
+ <stop offset="0" id="stop6499" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6501" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6497" id="linearGradient10646" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/>
+ <linearGradient id="linearGradient6470">
+ <stop offset="0" id="stop6472" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6474" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6470" id="linearGradient10644" gradientUnits="userSpaceOnUse" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/>
+ <linearGradient id="linearGradient7834">
+ <stop offset="0" id="stop7836" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop7838" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient7834" id="linearGradient10642" gradientUnits="userSpaceOnUse" x1="-156.29044" y1="-100.53421" x2="-153.09810" y2="-96.544556"/>
+ <linearGradient id="linearGradient8397">
+ <stop offset="0" id="stop8400" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8402" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8397" id="linearGradient10640" gradientUnits="userSpaceOnUse" x1="238.00478" y1="-388.47476" x2="245.65462" y2="-382.64539"/>
+ <linearGradient id="linearGradient8315">
+ <stop offset="0" id="stop8317" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8319" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8315" id="linearGradient10638" gradientUnits="userSpaceOnUse" x1="230.87598" y1="-390.43951" x2="235.25652" y2="-386.95901"/>
+ <linearGradient id="linearGradient8381">
+ <stop offset="0" id="stop8383" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8385" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8381" id="linearGradient10636" gradientUnits="userSpaceOnUse" x1="246.74042" y1="-391.31381" x2="252.69785" y2="-385.35165"/>
+ <linearGradient id="linearGradient8331">
+ <stop offset="0" id="stop8333" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8335" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8331" id="linearGradient10634" gradientUnits="userSpaceOnUse" x1="240.07379" y1="-393.40720" x2="245.82706" y2="-388.55029"/>
+ <linearGradient id="linearGradient8302">
+ <stop offset="0" id="stop8304" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8306" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8302" id="linearGradient10632" gradientUnits="userSpaceOnUse" gradientTransform="translate(69.00259,102.0000)" x1="228.50261" y1="-392.30591" x2="278.91510" y2="-375.37952"/>
+ </defs>
+
+ <metadata id="metadata1311">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:title>weather-overcast</dc:title>
+ <dc:date>January 2006</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Ryan Collier (pseudo)</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>http://www.tango-project.org</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://www.pseudocode.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>weather</rdf:li>
+ <rdf:li>applet</rdf:li>
+ <rdf:li>notify</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license rdf:resource="http://creativecommons.org/licenses/publicdomain/"/>
+ </cc:Work>
+ <cc:License rdf:about="http://creativecommons.org/licenses/publicdomain/">
+ <cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/>
+ <cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/>
+ <cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g id="layer1">
+ <g transform="translate(-287.0000,298.0000)">
+ <path d="M 311.50259,-296.00000 C 308.73017,-296.00000 306.39436,-294.42629 305.09634,-292.18750 C 304.15198,-292.66254 303.13115,-293.00000 302.00259,-293.00000 C 298.13859,-293.00000 295.00259,-289.86400 295.00259,-286.00000 C 295.00259,-282.13600 298.13859,-279.00000 302.00259,-279.00000 C 304.42226,-279.00000 306.43268,-280.31932 307.69009,-282.18750 C 308.82429,-281.49788 310.07907,-281.00000 311.50259,-281.00000 C 312.41571,-281.00000 313.25554,-281.23202 314.06509,-281.53125 C 314.57503,-280.66352 315.24421,-279.95153 316.06509,-279.37500 C 316.05785,-279.24462 316.00259,-279.13218 316.00259,-279.00000 C 316.00259,-275.13600 319.13858,-272.00000 323.00259,-272.00000 C 326.86659,-272.00000 330.00259,-275.13600 330.00259,-279.00000 C 330.00259,-281.36969 328.74361,-283.35834 326.94009,-284.62500 C 326.94733,-284.75538 327.00259,-284.86782 327.00259,-285.00000 C 327.00259,-288.86400 323.86660,-292.00000 320.00259,-292.00000 C 319.37989,-292.00000 318.82740,-291.77781 318.25259,-291.62500 C 317.05806,-294.18384 314.51125,-296.00000 311.50259,-296.00000 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 311.50259,-295.00000 C 308.72211,-295.00000 306.36808,-293.23815 305.44009,-290.78125 C 304.45467,-291.49069 303.30866,-292.00000 302.00259,-292.00000 C 298.69059,-292.00000 296.00259,-289.31200 296.00259,-286.00000 C 296.00259,-282.68800 298.69059,-280.00000 302.00259,-280.00000 C 304.43034,-280.00000 306.49583,-281.45558 307.44009,-283.53125 C 308.56085,-282.61369 309.94223,-282.00000 311.50259,-282.00000 C 312.57713,-282.00000 313.54687,-282.31896 314.44009,-282.78125 C 314.83849,-281.78149 315.54123,-280.99493 316.37759,-280.34375 C 316.19758,-279.74813 316.00259,-279.15410 316.00259,-278.50000 C 316.00259,-274.91200 318.91459,-272.00000 322.50259,-272.00000 C 326.09059,-272.00000 329.00259,-274.91200 329.00259,-278.50000 C 329.00259,-280.86079 327.66826,-282.83019 325.78384,-283.96875 C 325.84643,-284.31598 326.00259,-284.63483 326.00259,-285.00000 C 326.00259,-288.31200 323.31459,-291.00000 320.00259,-291.00000 C 319.14961,-291.00000 318.33129,-290.82132 317.59634,-290.50000 C 316.74257,-293.09388 314.38110,-294.99999 311.50259,-295.00000 z " opacity="1.0000000" fill="url(#linearGradient10632)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.964447,0.000000,0.000000,0.964447,89.29111,91.52621)" d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g transform="translate(69.00259,102.0000)">
+ <path d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" transform="matrix(0.882630,0.000000,0.000000,0.882630,27.18078,-46.89094)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" transform="matrix(0.882630,0.000000,0.000000,0.882630,27.18078,-46.89094)" opacity="1.0000000" fill="url(#linearGradient10634)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(69.00259,102.0000)">
+ <path d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" transform="matrix(0.911728,0.000000,0.000000,0.911728,21.45407,-34.76637)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" transform="matrix(0.911728,0.000000,0.000000,0.911728,21.45407,-34.76637)" opacity="1.0000000" fill="url(#linearGradient10636)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(69.00259,102.0000)">
+ <path d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" transform="matrix(1.142799,0.000000,0.000000,1.142799,-33.76771,55.27704)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" transform="matrix(1.142799,0.000000,0.000000,1.142799,-33.76771,55.27704)" opacity="1.0000000" fill="url(#linearGradient10638)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(69.00259,102.0000)">
+ <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(1.038636,0.000000,0.000000,1.038636,-9.150940,14.48994)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(1.038636,0.000000,0.000000,1.038636,-9.150933,14.48993)" opacity="1.0000000" fill="url(#linearGradient10640)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="matrix(0.935028,0.000000,0.000000,0.935028,446.8280,-187.6162)" stroke="none">
+ <path d="M -151.93750 -96.937500 A 3.1250000 3.1250000 0 1 1 -158.18750,-96.937500 A 3.1250000 3.1250000 0 1 1 -151.93750 -96.937500 z" transform="matrix(1.737733,0.000000,0.000000,1.737733,110.8322,70.07649)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="0.33115697" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M -151.93750 -96.937500 A 3.1250000 3.1250000 0 1 1 -158.18750,-96.937500 A 3.1250000 3.1250000 0 1 1 -151.93750 -96.937500 z" transform="matrix(1.737733,0.000000,0.000000,1.737733,110.8948,70.01402)" opacity="1.0000000" fill="url(#linearGradient10642)" fill-opacity="1.0000000" stroke="none" stroke-width="0.45224530" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(38.00259,162.0000)">
+ <path d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z " fill="#c4c5c2" fill-opacity="1.0000000" stroke="#888a85" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z " opacity="1.0000000" fill="url(#linearGradient10644)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10646)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <rect width="20.000000" height="9.0000000" x="271.00000" y="-438.00000" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10648)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10650)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(-1.000000,0.000000)">
+ <path d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z " opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z " opacity="1.0000000" fill="url(#linearGradient10652)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)" opacity="1.0000000" fill="url(#linearGradient10654)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z " fill="#888a85" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ <g transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)">
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10656)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ </g>
+ <g transform="translate(23.00000,158.0000)">
+ <path d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z " fill="#c4c5c2" fill-opacity="1.0000000" stroke="#888a85" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z " opacity="1.0000000" fill="url(#linearGradient10658)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10660)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <rect width="20.000000" height="9.0000000" x="271.00000" y="-438.00000" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10662)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10664)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(-1.000000,0.000000)">
+ <path d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z " opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z " opacity="1.0000000" fill="url(#linearGradient10666)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)" opacity="1.0000000" fill="url(#linearGradient10668)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z " fill="#888a85" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ <g transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)">
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10670)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-showers.svg b/demos/embedded/weatherinfo/icons/weather-showers.svg
new file mode 100644
index 000000000..017665da3
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-showers.svg
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" id="svg1306">
+ <defs id="defs1308">
+ <linearGradient xlink:href="#linearGradient2254" id="linearGradient11348" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.070878,0.000000,-0.535439,0.674858,287.5142,77.50802)" x1="-137.49608" y1="-425.28664" x2="-130.60854" y2="-425.28665"/>
+ <linearGradient xlink:href="#linearGradient2254" id="linearGradient11346" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.070879,0.000000,-0.535439,0.674857,277.5140,77.50780)" x1="-137.49608" y1="-425.28664" x2="-130.60854" y2="-425.28665"/>
+ <linearGradient xlink:href="#linearGradient2254" id="linearGradient11344" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.088439,0.000000,-0.544220,0.674842,265.9811,77.50139)" x1="-137.49608" y1="-425.28664" x2="-130.60854" y2="-425.28665"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient13352" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/>
+ <linearGradient xlink:href="#linearGradient6549" id="linearGradient13350" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/>
+ <linearGradient xlink:href="#linearGradient6527" id="linearGradient13347" gradientUnits="userSpaceOnUse" gradientTransform="translate(-35.00007,207.0001)" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient13345" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/>
+ <linearGradient xlink:href="#linearGradient6513" id="linearGradient13343" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/>
+ <linearGradient xlink:href="#linearGradient6497" id="linearGradient13341" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/>
+ <linearGradient xlink:href="#linearGradient6470" id="linearGradient13339" gradientUnits="userSpaceOnUse" gradientTransform="translate(-34.00007,207.0001)" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient13337" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/>
+ <linearGradient id="linearGradient6549">
+ <stop offset="0" id="stop6551" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6553" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6549" id="linearGradient13335" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/>
+ <linearGradient id="linearGradient6527">
+ <stop offset="0" id="stop6530" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6532" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6527" id="linearGradient13333" gradientUnits="userSpaceOnUse" gradientTransform="translate(-35.00007,207.0001)" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/>
+ <linearGradient id="linearGradient6538">
+ <stop offset="0" id="stop6540" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6542" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient13331" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/>
+ <linearGradient id="linearGradient6513">
+ <stop offset="0" id="stop6515" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6517" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6513" id="linearGradient13329" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/>
+ <linearGradient id="linearGradient6497">
+ <stop offset="0" id="stop6499" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6501" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6497" id="linearGradient13327" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/>
+ <linearGradient id="linearGradient6470">
+ <stop offset="0" id="stop6472" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6474" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6470" id="linearGradient13325" gradientUnits="userSpaceOnUse" gradientTransform="translate(-34.00007,207.0001)" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/>
+ <linearGradient id="linearGradient8397">
+ <stop offset="0" id="stop8400" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8402" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8397" id="linearGradient13323" gradientUnits="userSpaceOnUse" x1="238.00478" y1="-388.47476" x2="245.65462" y2="-382.64539"/>
+ <linearGradient id="linearGradient8315">
+ <stop offset="0" id="stop8317" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8319" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8315" id="linearGradient13321" gradientUnits="userSpaceOnUse" x1="230.87598" y1="-390.43951" x2="235.25652" y2="-386.95901"/>
+ <linearGradient id="linearGradient8381">
+ <stop offset="0" id="stop8383" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8385" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8381" id="linearGradient13319" gradientUnits="userSpaceOnUse" x1="246.74042" y1="-391.31381" x2="252.69785" y2="-385.35165"/>
+ <linearGradient id="linearGradient8331">
+ <stop offset="0" id="stop8333" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8335" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8331" id="linearGradient13317" gradientUnits="userSpaceOnUse" x1="240.07379" y1="-393.40720" x2="245.82706" y2="-388.55029"/>
+ <linearGradient id="linearGradient8302">
+ <stop offset="0" id="stop8304" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8306" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8302" id="linearGradient13315" gradientUnits="userSpaceOnUse" gradientTransform="translate(69.00000,155.0000)" x1="228.50261" y1="-392.30591" x2="266.36395" y2="-379.26862"/>
+ <linearGradient id="linearGradient2254">
+ <stop offset="0" id="stop2256" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop2258" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ </defs>
+
+ <metadata id="metadata1311">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:title>weather-showers</dc:title>
+ <dc:date>January 2006</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Ryan collier (pseudo)</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>http://www.tango-project.org</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://www.pseudocode.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>weather</rdf:li>
+ <rdf:li>appplet</rdf:li>
+ <rdf:li>notify</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license rdf:resource="http://creativecommons.org/licenses/publicdomain/"/>
+ </cc:Work>
+ <cc:License rdf:about="http://creativecommons.org/licenses/publicdomain/">
+ <cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/>
+ <cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/>
+ <cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g id="layer1">
+ <g transform="translate(-339.9823,245.0132)">
+ <rect transform="matrix(1.000000,0.000000,-0.600523,0.799607,0.000000,0.000000)" ry="1.5179254" rx="2.3596079" y="-270.75461" x="189.68199" height="17.509083" width="32.962067" opacity="1.0000000" fill="#729fcf" fill-opacity="1.0000000" stroke="#3465a4" stroke-width="1.0817814" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g transform="matrix(1.000000,0.000000,0.000000,0.999611,0.000000,-7.862650e-2)" opacity="0.80000001">
+ <path d="M 352.47790,-216.00000 L 359.39580,-216.00000 C 360.69054,-216.00000 361.33008,-215.50056 360.82979,-214.88017 L 352.15249,-204.12015 C 351.65217,-203.49974 350.20707,-203.00030 348.91233,-203.00030 L 344.86943,-203.00030 C 343.57469,-203.00030 342.30979,-202.95120 343.43545,-204.12015 C 343.43545,-204.12015 352.47790,-216.00000 352.47790,-216.00000 z " fill="url(#linearGradient11344)" fill-opacity="1.0000000" stroke="none" stroke-width="1.1547011" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 362.74641,-216.00000 L 369.42169,-216.00000 C 370.69552,-216.00000 371.32477,-215.50054 370.83253,-214.88014 L 362.29523,-204.11987 C 361.80299,-203.49946 360.38121,-203.00000 359.10738,-203.00000 L 353.00000,-203.00000 C 353.00000,-203.00000 362.74641,-216.00000 362.74641,-216.00000 z " fill="url(#linearGradient11346)" fill-opacity="1.0000000" stroke="none" stroke-width="1.1547011" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 372.74640,-216.00000 L 379.42169,-216.00000 C 380.69553,-216.00000 381.32477,-215.50053 380.83253,-214.88014 L 372.29523,-204.11986 C 371.80299,-203.49945 370.38122,-203.00000 369.10738,-203.00000 L 363.00000,-203.00000 C 363.00000,-203.00000 372.74640,-216.00000 372.74640,-216.00000 z " fill="url(#linearGradient11348)" fill-opacity="1.0000000" stroke="none" stroke-width="1.1547011" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ </g>
+ <g transform="matrix(0.999675,0.000000,0.000000,1.000000,-286.8562,245.0000)">
+ <g>
+ <path d="M 311.50000,-242.99998 C 308.72758,-242.99998 306.39177,-241.42627 305.09375,-239.18748 C 304.14939,-239.66252 303.12856,-239.99998 302.00000,-239.99998 C 298.13600,-239.99998 295.00000,-236.86398 295.00000,-232.99998 C 295.00000,-229.13598 298.13600,-225.99998 302.00000,-225.99998 C 304.41967,-225.99998 306.43009,-227.31930 307.68750,-229.18748 C 308.82170,-228.49786 310.07648,-227.99998 311.50000,-227.99998 C 312.41312,-227.99998 313.25295,-228.23200 314.06250,-228.53123 C 314.57244,-227.66350 315.24162,-226.95151 316.06250,-226.37498 C 316.05526,-226.24460 316.00000,-226.13216 316.00000,-225.99998 C 316.00000,-222.13598 319.13599,-218.99998 323.00000,-218.99998 C 326.86400,-218.99998 330.00000,-222.13598 330.00000,-225.99998 C 330.00000,-228.36967 328.74102,-230.35832 326.93750,-231.62498 C 326.94474,-231.75536 327.00000,-231.86780 327.00000,-231.99998 C 327.00000,-235.86398 323.86401,-238.99998 320.00000,-238.99998 C 319.37730,-238.99998 318.82481,-238.77779 318.25000,-238.62498 C 317.05547,-241.18382 314.50866,-242.99998 311.50000,-242.99998 z " opacity="1.0000000" fill="#555753" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 311.50000,-241.99998 C 308.71952,-241.99998 306.36549,-240.23813 305.43750,-237.78123 C 304.45208,-238.49067 303.30607,-238.99998 302.00000,-238.99998 C 298.68800,-238.99998 296.00000,-236.31198 296.00000,-232.99998 C 296.00000,-229.68798 298.68800,-226.99998 302.00000,-226.99998 C 304.42775,-226.99998 306.49324,-228.45556 307.43750,-230.53123 C 308.55826,-229.61367 309.93964,-228.99998 311.50000,-228.99998 C 312.57454,-228.99998 313.54428,-229.31894 314.43750,-229.78123 C 314.83590,-228.78147 315.53864,-227.99491 316.37500,-227.34373 C 316.19499,-226.74811 316.00000,-226.15408 316.00000,-225.49998 C 316.00000,-221.91198 318.91200,-218.99998 322.50000,-218.99998 C 326.08800,-218.99998 329.00000,-221.91198 329.00000,-225.49998 C 329.00000,-227.86077 327.66567,-229.83017 325.78125,-230.96873 C 325.84384,-231.31596 326.00000,-231.63481 326.00000,-231.99998 C 326.00000,-235.31198 323.31200,-237.99998 320.00000,-237.99998 C 319.14702,-237.99998 318.32870,-237.82130 317.59375,-237.49998 C 316.73998,-240.09386 314.37851,-241.99997 311.50000,-241.99998 z " opacity="1.0000000" fill="url(#linearGradient13315)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(0.964447,0.000000,0.000000,0.964447,89.28852,144.5262)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g>
+ <path transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" opacity="0.49444440" fill="url(#linearGradient13317)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g>
+ <path transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" opacity="0.49444440" fill="url(#linearGradient13319)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g>
+ <path transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" opacity="0.49444440" fill="url(#linearGradient13321)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g>
+ <path transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84906,169.4899)" d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84907,169.4899)" d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" opacity="0.49444440" fill="url(#linearGradient13323)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ </g>
+ <g transform="translate(72.00007,7.999930)">
+ <path d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z " fill="#888a85" fill-opacity="1.0000000" stroke="#555753" stroke-width="1.0001625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z " opacity="1.0000000" fill="url(#linearGradient13325)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" opacity="0.47777775" fill="url(#linearGradient13327)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <rect width="20.000000" height="9.0000000" x="236.99994" y="-230.99992" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" opacity="0.47777775" fill="url(#linearGradient13329)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" opacity="0.47777775" fill="url(#linearGradient13331)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z " opacity="0.47777775" fill="url(#linearGradient13333)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" opacity="0.47777775" fill="url(#linearGradient13335)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z " fill="#555753" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" opacity="0.47777775" fill="url(#linearGradient13337)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(56.98577,3.983930)">
+ <path d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z " fill="#888a85" fill-opacity="1.0000000" stroke="#555753" stroke-width="1.0001625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z " opacity="1.0000000" fill="url(#linearGradient13339)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" opacity="0.47777775" fill="url(#linearGradient13341)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <rect width="20.000000" height="9.0000000" x="236.99994" y="-230.99992" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" opacity="0.47777775" fill="url(#linearGradient13343)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" opacity="0.47777775" fill="url(#linearGradient13345)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z " opacity="0.47777775" fill="url(#linearGradient13347)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" opacity="0.47777775" fill="url(#linearGradient13350)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z " fill="#555753" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" opacity="0.47777775" fill="url(#linearGradient13352)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-sleet.svg b/demos/embedded/weatherinfo/icons/weather-sleet.svg
new file mode 100644
index 000000000..bf2306ff3
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-sleet.svg
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" id="svg1306">
+ <defs id="defs1308">
+ <linearGradient id="linearGradient5358">
+ <stop offset="0" id="stop5360" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop5362" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient id="linearGradient5346">
+ <stop offset="0" id="stop5348" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop5350" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient13352" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/>
+ <linearGradient xlink:href="#linearGradient6549" id="linearGradient13350" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/>
+ <linearGradient xlink:href="#linearGradient6527" id="linearGradient13347" gradientUnits="userSpaceOnUse" gradientTransform="translate(-35.00007,207.0001)" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient13345" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/>
+ <linearGradient xlink:href="#linearGradient6513" id="linearGradient13343" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/>
+ <linearGradient xlink:href="#linearGradient6497" id="linearGradient13341" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/>
+ <linearGradient xlink:href="#linearGradient6470" id="linearGradient13339" gradientUnits="userSpaceOnUse" gradientTransform="translate(-34.00007,207.0001)" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient13337" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/>
+ <linearGradient id="linearGradient6549">
+ <stop offset="0" id="stop6551" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6553" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6549" id="linearGradient13335" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/>
+ <linearGradient id="linearGradient6527">
+ <stop offset="0" id="stop6530" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6532" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6527" id="linearGradient13333" gradientUnits="userSpaceOnUse" gradientTransform="translate(-35.00007,207.0001)" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/>
+ <linearGradient id="linearGradient6538">
+ <stop offset="0" id="stop6540" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6542" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient13331" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/>
+ <linearGradient id="linearGradient6513">
+ <stop offset="0" id="stop6515" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6517" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6513" id="linearGradient13329" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/>
+ <linearGradient id="linearGradient6497">
+ <stop offset="0" id="stop6499" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6501" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6497" id="linearGradient13327" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/>
+ <linearGradient id="linearGradient6470">
+ <stop offset="0" id="stop6472" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6474" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6470" id="linearGradient13325" gradientUnits="userSpaceOnUse" gradientTransform="translate(-34.00007,207.0001)" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/>
+ <linearGradient id="linearGradient8397">
+ <stop offset="0" id="stop8400" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8402" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8397" id="linearGradient13323" gradientUnits="userSpaceOnUse" x1="238.00478" y1="-388.47476" x2="245.65462" y2="-382.64539"/>
+ <linearGradient id="linearGradient8315">
+ <stop offset="0" id="stop8317" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8319" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8315" id="linearGradient13321" gradientUnits="userSpaceOnUse" x1="230.87598" y1="-390.43951" x2="235.25652" y2="-386.95901"/>
+ <linearGradient id="linearGradient8381">
+ <stop offset="0" id="stop8383" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8385" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8381" id="linearGradient13319" gradientUnits="userSpaceOnUse" x1="246.74042" y1="-391.31381" x2="252.69785" y2="-385.35165"/>
+ <linearGradient id="linearGradient8331">
+ <stop offset="0" id="stop8333" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8335" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8331" id="linearGradient13317" gradientUnits="userSpaceOnUse" x1="240.07379" y1="-393.40720" x2="245.82706" y2="-388.55029"/>
+ <linearGradient id="linearGradient8302">
+ <stop offset="0" id="stop8304" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8306" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8302" id="linearGradient13315" gradientUnits="userSpaceOnUse" gradientTransform="translate(69.00000,155.0000)" x1="228.50261" y1="-392.30591" x2="266.36395" y2="-379.26862"/>
+ <radialGradient xlink:href="#linearGradient5346" id="radialGradient8290" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)" cx="21.920311" cy="-382.96454" fx="21.920311" fy="-382.96454" r="21.743534"/>
+ <linearGradient xlink:href="#linearGradient5358" id="linearGradient8292" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)" x1="6.8942904" y1="-359.82382" x2="27.400387" y2="-381.30222"/>
+ <radialGradient xlink:href="#linearGradient5346" id="radialGradient8294" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)" cx="21.920311" cy="-382.96454" fx="21.920311" fy="-382.96454" r="21.743534"/>
+ <linearGradient xlink:href="#linearGradient5358" id="linearGradient8296" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)" x1="6.8942904" y1="-359.82382" x2="27.400387" y2="-381.30222"/>
+ <radialGradient xlink:href="#linearGradient5346" id="radialGradient8298" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)" cx="21.920311" cy="-382.96454" fx="21.920311" fy="-382.96454" r="21.743534"/>
+ <linearGradient xlink:href="#linearGradient5358" id="linearGradient8300" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)" x1="6.8942904" y1="-359.82382" x2="27.400387" y2="-381.30222"/>
+ <radialGradient xlink:href="#linearGradient5346" id="radialGradient8302" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)" cx="21.920311" cy="-382.96454" fx="21.920311" fy="-382.96454" r="21.743534"/>
+ <linearGradient xlink:href="#linearGradient5358" id="linearGradient8304" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)" x1="6.8942904" y1="-359.82382" x2="27.400387" y2="-381.30222"/>
+ <radialGradient xlink:href="#linearGradient5346" id="radialGradient8306" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)" cx="21.920311" cy="-382.96454" fx="21.920311" fy="-382.96454" r="21.743534"/>
+ <linearGradient xlink:href="#linearGradient5358" id="linearGradient8308" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)" x1="6.8942904" y1="-359.82382" x2="27.400387" y2="-381.30222"/>
+ <radialGradient xlink:href="#linearGradient5346" id="radialGradient8310" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)" cx="21.920311" cy="-382.96454" fx="21.920311" fy="-382.96454" r="21.743534"/>
+ <linearGradient xlink:href="#linearGradient5358" id="linearGradient8312" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)" x1="6.8942904" y1="-359.82382" x2="27.400387" y2="-381.30222"/>
+ </defs>
+
+ <metadata id="metadata1311">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:title>weather-showers</dc:title>
+ <dc:date>January 2006</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Ryan collier (pseudo)</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>http://www.tango-project.org</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://www.pseudocode.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>weather</rdf:li>
+ <rdf:li>appplet</rdf:li>
+ <rdf:li>notify</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/"/>
+ </cc:Work>
+ <cc:License rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+ <cc:requires rdf:resource="http://web.resource.org/cc/Notice"/>
+ <cc:requires rdf:resource="http://web.resource.org/cc/Attribution"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+ <cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g id="layer1">
+ <g>
+ <g transform="matrix(0.999675,0.000000,0.000000,1.000000,-286.8562,245.0000)">
+ <g>
+ <path d="M 311.50000,-242.99998 C 308.72758,-242.99998 306.39177,-241.42627 305.09375,-239.18748 C 304.14939,-239.66252 303.12856,-239.99998 302.00000,-239.99998 C 298.13600,-239.99998 295.00000,-236.86398 295.00000,-232.99998 C 295.00000,-229.13598 298.13600,-225.99998 302.00000,-225.99998 C 304.41967,-225.99998 306.43009,-227.31930 307.68750,-229.18748 C 308.82170,-228.49786 310.07648,-227.99998 311.50000,-227.99998 C 312.41312,-227.99998 313.25295,-228.23200 314.06250,-228.53123 C 314.57244,-227.66350 315.24162,-226.95151 316.06250,-226.37498 C 316.05526,-226.24460 316.00000,-226.13216 316.00000,-225.99998 C 316.00000,-222.13598 319.13599,-218.99998 323.00000,-218.99998 C 326.86400,-218.99998 330.00000,-222.13598 330.00000,-225.99998 C 330.00000,-228.36967 328.74102,-230.35832 326.93750,-231.62498 C 326.94474,-231.75536 327.00000,-231.86780 327.00000,-231.99998 C 327.00000,-235.86398 323.86401,-238.99998 320.00000,-238.99998 C 319.37730,-238.99998 318.82481,-238.77779 318.25000,-238.62498 C 317.05547,-241.18382 314.50866,-242.99998 311.50000,-242.99998 z " opacity="1.0000000" fill="#555753" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 311.50000,-241.99998 C 308.71952,-241.99998 306.36549,-240.23813 305.43750,-237.78123 C 304.45208,-238.49067 303.30607,-238.99998 302.00000,-238.99998 C 298.68800,-238.99998 296.00000,-236.31198 296.00000,-232.99998 C 296.00000,-229.68798 298.68800,-226.99998 302.00000,-226.99998 C 304.42775,-226.99998 306.49324,-228.45556 307.43750,-230.53123 C 308.55826,-229.61367 309.93964,-228.99998 311.50000,-228.99998 C 312.57454,-228.99998 313.54428,-229.31894 314.43750,-229.78123 C 314.83590,-228.78147 315.53864,-227.99491 316.37500,-227.34373 C 316.19499,-226.74811 316.00000,-226.15408 316.00000,-225.49998 C 316.00000,-221.91198 318.91200,-218.99998 322.50000,-218.99998 C 326.08800,-218.99998 329.00000,-221.91198 329.00000,-225.49998 C 329.00000,-227.86077 327.66567,-229.83017 325.78125,-230.96873 C 325.84384,-231.31596 326.00000,-231.63481 326.00000,-231.99998 C 326.00000,-235.31198 323.31200,-237.99998 320.00000,-237.99998 C 319.14702,-237.99998 318.32870,-237.82130 317.59375,-237.49998 C 316.73998,-240.09386 314.37851,-241.99997 311.50000,-241.99998 z " opacity="1.0000000" fill="url(#linearGradient13315)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.964447,0.000000,0.000000,0.964447,89.28852,144.5262)" d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g>
+ <path d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" opacity="0.49444440" fill="url(#linearGradient13317)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g>
+ <path d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" opacity="0.49444440" fill="url(#linearGradient13319)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g>
+ <path d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" opacity="0.49444440" fill="url(#linearGradient13321)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g>
+ <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84906,169.4899)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84907,169.4899)" opacity="0.49444440" fill="url(#linearGradient13323)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ </g>
+ <g transform="translate(72.00007,7.999930)">
+ <path d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z " fill="#888a85" fill-opacity="1.0000000" stroke="#555753" stroke-width="1.0001625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z " opacity="1.0000000" fill="url(#linearGradient13325)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13327)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <rect y="-230.99992" x="236.99994" height="9.0000000" width="20.000000" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13329)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13331)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z " opacity="0.47777775" fill="url(#linearGradient13333)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13335)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z " fill="#555753" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13337)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(56.98577,3.983930)">
+ <path d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z " fill="#888a85" fill-opacity="1.0000000" stroke="#555753" stroke-width="1.0001625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z " opacity="1.0000000" fill="url(#linearGradient13339)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13341)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <rect y="-230.99992" x="236.99994" height="9.0000000" width="20.000000" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13343)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13345)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z " opacity="0.47777775" fill="url(#linearGradient13347)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13350)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z " fill="#555753" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13352)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ </g>
+ <g transform="translate(17.177973,-2)">
+ <g transform="translate(-219.67784,275.47179)">
+ <path d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z" fill="#729fcf" fill-opacity="1" stroke="#204a87" stroke-width="1.07456863" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z" opacity="0.46111109" fill="url(#radialGradient8290)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z" opacity="1" fill="url(#linearGradient8292)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ <g transform="translate(-239.67784,265.47959)">
+ <path d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z" fill="#729fcf" fill-opacity="1" stroke="#204a87" stroke-width="1.07456863" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z" opacity="0.46111109" fill="url(#radialGradient8294)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z" opacity="1" fill="url(#linearGradient8296)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ <g transform="translate(-210.67944,272.47179)">
+ <path d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z" fill="#729fcf" fill-opacity="1" stroke="#204a87" stroke-width="1.07456863" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z" opacity="0.46111109" fill="url(#radialGradient8298)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z" opacity="1" fill="url(#linearGradient8300)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ <g transform="translate(-241.67794,275.47309)">
+ <path d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z" fill="#729fcf" fill-opacity="1" stroke="#204a87" stroke-width="1.07456863" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z" opacity="0.46111109" fill="url(#radialGradient8302)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z" opacity="1" fill="url(#linearGradient8304)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ <g transform="translate(-231.67944,270.47179)">
+ <path d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z" fill="#729fcf" fill-opacity="1" stroke="#204a87" stroke-width="1.07456863" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z" opacity="0.46111109" fill="url(#radialGradient8306)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z" opacity="1" fill="url(#linearGradient8308)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ <g transform="translate(-217.67944,265.47959)">
+ <path d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z" fill="#729fcf" fill-opacity="1" stroke="#204a87" stroke-width="1.07456863" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z" opacity="0.46111109" fill="url(#radialGradient8310)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z" opacity="1" fill="url(#linearGradient8312)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ </g>
+ <g transform="translate(-162.99643,221.88968)">
+ <path d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z" transform="matrix(0.68552,0,0,0.68552,151.7017,27.15827)" opacity="1" fill="#ffffff" fill-opacity="1" stroke="#729fcf" stroke-width="1.45874679" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z" transform="matrix(0.915572,0,0,0.915587,152.4091,103.5577)" opacity="1" fill="#ffffff" fill-opacity="1" stroke="#729fcf" stroke-width="1.09220433" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z" transform="matrix(0.672406,0,0,0.683742,153.0708,34.62149)" opacity="1" fill="#ffffff" fill-opacity="1" stroke="#729fcf" stroke-width="1.47481608" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z" transform="matrix(0.6823,0,0,0.680269,181.797,30.49471)" opacity="1" fill="#ffffff" fill-opacity="1" stroke="#729fcf" stroke-width="1.4678179" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z" transform="matrix(1.107132,0,0,1.117168,157.2177,164.9217)" opacity="1" fill="#ffffff" fill-opacity="1" stroke="#729fcf" stroke-width="0.89916825" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z" transform="matrix(1.127592,0,0,1.05183,161.6119,151.3731)" opacity="1" fill="#ffffff" fill-opacity="1" stroke="#729fcf" stroke-width="0.91822928" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 31.819805,-316.77872 A 2.2097087,2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087,2.2097087 0 1 1 31.819805,-316.77872 z" transform="matrix(0.685519,0,0,0.680487,164.6869,34.56369)" opacity="1" fill="#ffffff" fill-opacity="1" stroke="#729fcf" stroke-width="1.46413279" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-snow.svg b/demos/embedded/weatherinfo/icons/weather-snow.svg
new file mode 100644
index 000000000..a91946f7a
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-snow.svg
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" id="svg1306">
+ <defs id="defs1308">
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient10630" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/>
+ <linearGradient xlink:href="#linearGradient6549" id="linearGradient10628" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/>
+ <linearGradient xlink:href="#linearGradient6527" id="linearGradient10626" gradientUnits="userSpaceOnUse" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient10624" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/>
+ <linearGradient xlink:href="#linearGradient6513" id="linearGradient10622" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/>
+ <linearGradient xlink:href="#linearGradient6497" id="linearGradient10620" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/>
+ <linearGradient xlink:href="#linearGradient6470" id="linearGradient10618" gradientUnits="userSpaceOnUse" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient10616" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/>
+ <linearGradient id="linearGradient6549">
+ <stop offset="0" id="stop6551" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6553" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6549" id="linearGradient10614" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/>
+ <linearGradient id="linearGradient6527">
+ <stop offset="0" id="stop6530" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6532" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6527" id="linearGradient10612" gradientUnits="userSpaceOnUse" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/>
+ <linearGradient id="linearGradient6538">
+ <stop offset="0" id="stop6540" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6542" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient10610" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/>
+ <linearGradient id="linearGradient6513">
+ <stop offset="0" id="stop6515" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6517" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6513" id="linearGradient10608" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/>
+ <linearGradient id="linearGradient6497">
+ <stop offset="0" id="stop6499" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6501" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6497" id="linearGradient10606" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/>
+ <linearGradient id="linearGradient6470">
+ <stop offset="0" id="stop6472" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6474" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6470" id="linearGradient10604" gradientUnits="userSpaceOnUse" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/>
+ <linearGradient id="linearGradient7834">
+ <stop offset="0" id="stop7836" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop7838" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient7834" id="linearGradient10602" gradientUnits="userSpaceOnUse" x1="-156.29044" y1="-100.53421" x2="-153.09810" y2="-96.544556"/>
+ <linearGradient id="linearGradient8397">
+ <stop offset="0" id="stop8400" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8402" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8397" id="linearGradient10600" gradientUnits="userSpaceOnUse" x1="238.00478" y1="-388.47476" x2="245.65462" y2="-382.64539"/>
+ <linearGradient id="linearGradient8315">
+ <stop offset="0" id="stop8317" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8319" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8315" id="linearGradient10598" gradientUnits="userSpaceOnUse" x1="230.87598" y1="-390.43951" x2="235.25652" y2="-386.95901"/>
+ <linearGradient id="linearGradient8381">
+ <stop offset="0" id="stop8383" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8385" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8381" id="linearGradient10596" gradientUnits="userSpaceOnUse" x1="246.74042" y1="-391.31381" x2="252.69785" y2="-385.35165"/>
+ <linearGradient id="linearGradient8331">
+ <stop offset="0" id="stop8333" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8335" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8331" id="linearGradient10594" gradientUnits="userSpaceOnUse" x1="240.07379" y1="-393.40720" x2="245.82706" y2="-388.55029"/>
+ <linearGradient id="linearGradient8302">
+ <stop offset="0" id="stop8304" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8306" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8302" id="linearGradient10592" gradientUnits="userSpaceOnUse" gradientTransform="translate(122.0230,102.0000)" x1="228.50261" y1="-392.30591" x2="278.91510" y2="-375.37952"/>
+ </defs>
+
+ <metadata id="metadata1311">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:title>weather-snow</dc:title>
+ <dc:date>January 2006</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Ryan Collier (pseudo)</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>http://www.tango-project.org</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://www.pseudocode.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>weather</rdf:li>
+ <rdf:li>applet</rdf:li>
+ <rdf:li>notification</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license rdf:resource="http://creativecommons.org/licenses/publicdomain/"/>
+ </cc:Work>
+ <cc:License rdf:about="http://creativecommons.org/licenses/publicdomain/">
+ <cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/>
+ <cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/>
+ <cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g id="layer1">
+ <g transform="translate(-340.0455,298.0001)">
+ <path d="M 364.52300,-296.00000 C 361.75058,-296.00000 359.41477,-294.42629 358.11675,-292.18750 C 357.17239,-292.66254 356.15156,-293.00000 355.02300,-293.00000 C 351.15900,-293.00000 348.02300,-289.86400 348.02300,-286.00000 C 348.02300,-282.13600 351.15900,-279.00000 355.02300,-279.00000 C 357.44267,-279.00000 359.45309,-280.31932 360.71050,-282.18750 C 361.84470,-281.49788 363.09948,-281.00000 364.52300,-281.00000 C 365.43612,-281.00000 366.27595,-281.23202 367.08550,-281.53125 C 367.59544,-280.66352 368.26462,-279.95153 369.08550,-279.37500 C 369.07826,-279.24462 369.02300,-279.13218 369.02300,-279.00000 C 369.02300,-275.13600 372.15899,-272.00000 376.02300,-272.00000 C 379.88700,-272.00000 383.02300,-275.13600 383.02300,-279.00000 C 383.02300,-281.36969 381.76402,-283.35834 379.96050,-284.62500 C 379.96774,-284.75538 380.02300,-284.86782 380.02300,-285.00000 C 380.02300,-288.86400 376.88701,-292.00000 373.02300,-292.00000 C 372.40030,-292.00000 371.84781,-291.77781 371.27300,-291.62500 C 370.07847,-294.18384 367.53166,-296.00000 364.52300,-296.00000 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 364.52300,-295.00000 C 361.74252,-295.00000 359.38849,-293.23815 358.46050,-290.78125 C 357.47508,-291.49069 356.32907,-292.00000 355.02300,-292.00000 C 351.71100,-292.00000 349.02300,-289.31200 349.02300,-286.00000 C 349.02300,-282.68800 351.71100,-280.00000 355.02300,-280.00000 C 357.45075,-280.00000 359.51624,-281.45558 360.46050,-283.53125 C 361.58126,-282.61369 362.96264,-282.00000 364.52300,-282.00000 C 365.59754,-282.00000 366.56728,-282.31896 367.46050,-282.78125 C 367.85890,-281.78149 368.56164,-280.99493 369.39800,-280.34375 C 369.21799,-279.74813 369.02300,-279.15410 369.02300,-278.50000 C 369.02300,-274.91200 371.93500,-272.00000 375.52300,-272.00000 C 379.11100,-272.00000 382.02300,-274.91200 382.02300,-278.50000 C 382.02300,-280.86079 380.68867,-282.83019 378.80425,-283.96875 C 378.86684,-284.31598 379.02300,-284.63483 379.02300,-285.00000 C 379.02300,-288.31200 376.33500,-291.00000 373.02300,-291.00000 C 372.17002,-291.00000 371.35170,-290.82132 370.61675,-290.50000 C 369.76298,-293.09388 367.40151,-294.99999 364.52300,-295.00000 z " opacity="1.0000000" fill="url(#linearGradient10592)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.964447,0.000000,0.000000,0.964447,142.3115,91.52621)" d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g transform="translate(122.0230,102.0000)">
+ <path d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" transform="matrix(0.882630,0.000000,0.000000,0.882630,27.18078,-46.89094)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" transform="matrix(0.882630,0.000000,0.000000,0.882630,27.18078,-46.89094)" opacity="1.0000000" fill="url(#linearGradient10594)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(122.0230,102.0000)">
+ <path d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" transform="matrix(0.911728,0.000000,0.000000,0.911728,21.45407,-34.76637)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" transform="matrix(0.911728,0.000000,0.000000,0.911728,21.45407,-34.76637)" opacity="1.0000000" fill="url(#linearGradient10596)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(122.0230,102.0000)">
+ <path d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" transform="matrix(1.142799,0.000000,0.000000,1.142799,-33.76771,55.27704)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" transform="matrix(1.142799,0.000000,0.000000,1.142799,-33.76771,55.27704)" opacity="1.0000000" fill="url(#linearGradient10598)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(122.0230,102.0000)">
+ <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(1.038636,0.000000,0.000000,1.038636,-9.150940,14.48994)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(1.038636,0.000000,0.000000,1.038636,-9.150933,14.48993)" opacity="1.0000000" fill="url(#linearGradient10600)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="matrix(0.935028,0.000000,0.000000,0.935028,499.8484,-187.6162)" stroke="none">
+ <path d="M -151.93750 -96.937500 A 3.1250000 3.1250000 0 1 1 -158.18750,-96.937500 A 3.1250000 3.1250000 0 1 1 -151.93750 -96.937500 z" transform="matrix(1.737733,0.000000,0.000000,1.737733,110.8322,70.07649)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="0.33115697" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M -151.93750 -96.937500 A 3.1250000 3.1250000 0 1 1 -158.18750,-96.937500 A 3.1250000 3.1250000 0 1 1 -151.93750 -96.937500 z" transform="matrix(1.737733,0.000000,0.000000,1.737733,110.8948,70.01402)" opacity="1.0000000" fill="url(#linearGradient10602)" fill-opacity="1.0000000" stroke="none" stroke-width="0.45224530" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(91.02300,162.0000)">
+ <path d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z " fill="#c4c5c2" fill-opacity="1.0000000" stroke="#888a85" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z " opacity="1.0000000" fill="url(#linearGradient10604)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10606)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <rect width="20.000000" height="9.0000000" x="271.00000" y="-438.00000" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10608)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10610)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(-1.000000,0.000000)">
+ <path d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z " opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z " opacity="1.0000000" fill="url(#linearGradient10612)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)" opacity="1.0000000" fill="url(#linearGradient10614)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z " fill="#888a85" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ <g transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)">
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10616)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ </g>
+ <g transform="translate(76.02041,158.0000)">
+ <path d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z " fill="#c4c5c2" fill-opacity="1.0000000" stroke="#888a85" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z " opacity="1.0000000" fill="url(#linearGradient10618)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10620)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <rect width="20.000000" height="9.0000000" x="271.00000" y="-438.00000" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10622)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10624)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(-1.000000,0.000000)">
+ <path d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z " opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z " opacity="1.0000000" fill="url(#linearGradient10626)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)" opacity="1.0000000" fill="url(#linearGradient10628)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z " fill="#888a85" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ <g transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)">
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient10630)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(-163.0077,222.0147)">
+ <path transform="matrix(0.685520,0.000000,0.000000,0.685520,151.7017,27.15827)" d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z" opacity="1.0000000" fill="#ffffff" fill-opacity="1.0000000" stroke="#729fcf" stroke-width="1.4587468" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.915572,0.000000,0.000000,0.915587,152.4091,103.5577)" d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z" opacity="1.0000000" fill="#ffffff" fill-opacity="1.0000000" stroke="#729fcf" stroke-width="1.0922043" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.672406,0.000000,0.000000,0.683742,153.0708,34.62149)" d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z" opacity="1.0000000" fill="#ffffff" fill-opacity="1.0000000" stroke="#729fcf" stroke-width="1.4748161" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.682300,0.000000,0.000000,0.680269,181.7970,30.49471)" d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z" opacity="1.0000000" fill="#ffffff" fill-opacity="1.0000000" stroke="#729fcf" stroke-width="1.4678179" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.107132,0.000000,0.000000,1.117168,157.2177,164.9217)" d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z" opacity="1.0000000" fill="#ffffff" fill-opacity="1.0000000" stroke="#729fcf" stroke-width="0.89916825" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.127592,0.000000,0.000000,1.051830,161.6119,151.3731)" d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z" opacity="1.0000000" fill="#ffffff" fill-opacity="1.0000000" stroke="#729fcf" stroke-width="0.91822928" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.685519,0.000000,0.000000,0.680487,164.6869,34.56369)" d="M 31.819805 -316.77872 A 2.2097087 2.2097087 0 1 1 27.400387,-316.77872 A 2.2097087 2.2097087 0 1 1 31.819805 -316.77872 z" opacity="1.0000000" fill="#ffffff" fill-opacity="1.0000000" stroke="#729fcf" stroke-width="1.4641328" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-storm.svg b/demos/embedded/weatherinfo/icons/weather-storm.svg
new file mode 100644
index 000000000..1ad47ab69
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-storm.svg
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" id="svg1306">
+ <defs id="defs1308">
+ <linearGradient id="linearGradient8397">
+ <stop offset="0" id="stop8400" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8402" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8397" id="linearGradient13503" gradientUnits="userSpaceOnUse" x1="238.00478" y1="-388.47476" x2="245.65462" y2="-382.64539"/>
+ <linearGradient id="linearGradient8315">
+ <stop offset="0" id="stop8317" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8319" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8315" id="linearGradient13501" gradientUnits="userSpaceOnUse" x1="230.87598" y1="-390.43951" x2="235.25652" y2="-386.95901"/>
+ <linearGradient id="linearGradient8381">
+ <stop offset="0" id="stop8383" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8385" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8381" id="linearGradient13499" gradientUnits="userSpaceOnUse" x1="246.74042" y1="-391.31381" x2="252.69785" y2="-385.35165"/>
+ <linearGradient id="linearGradient8331">
+ <stop offset="0" id="stop8333" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8335" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8331" id="linearGradient13497" gradientUnits="userSpaceOnUse" x1="240.07379" y1="-393.40720" x2="245.82706" y2="-388.55029"/>
+ <linearGradient id="linearGradient8302">
+ <stop offset="0" id="stop8304" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8306" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8302" id="linearGradient13495" gradientUnits="userSpaceOnUse" gradientTransform="translate(69.00000,155.0000)" x1="228.50261" y1="-392.30591" x2="266.36395" y2="-379.26862"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient13143" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/>
+ <linearGradient xlink:href="#linearGradient6549" id="linearGradient13141" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/>
+ <linearGradient xlink:href="#linearGradient6527" id="linearGradient13139" gradientUnits="userSpaceOnUse" gradientTransform="translate(-35.00007,207.0001)" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient13137" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/>
+ <linearGradient xlink:href="#linearGradient6513" id="linearGradient13135" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/>
+ <linearGradient xlink:href="#linearGradient6497" id="linearGradient13133" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/>
+ <linearGradient xlink:href="#linearGradient6470" id="linearGradient13131" gradientUnits="userSpaceOnUse" gradientTransform="translate(-34.00007,207.0001)" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/>
+ <linearGradient xlink:href="#linearGradient8874" id="linearGradient11195" gradientUnits="userSpaceOnUse" gradientTransform="translate(14.15871,7.082841)" x1="-190.47688" y1="-332.51181" x2="-196.19046" y2="-328.53433"/>
+ <linearGradient xlink:href="#linearGradient8904" id="linearGradient11193" gradientUnits="userSpaceOnUse" gradientTransform="translate(13.80516,2.840199)" x1="-191.28896" y1="-328.07861" x2="-192.41396" y2="-315.32861"/>
+ <linearGradient id="linearGradient8874">
+ <stop offset="0" id="stop8876" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8878" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8874" id="linearGradient11191" gradientUnits="userSpaceOnUse" gradientTransform="translate(14.15871,7.082841)" x1="-190.47688" y1="-332.51181" x2="-196.19046" y2="-328.53433"/>
+ <linearGradient id="linearGradient8904">
+ <stop offset="0" id="stop8906" stop-color="#fcaf3e" stop-opacity="1"/>
+ <stop offset="1" id="stop8908" stop-color="#fcaf3e" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8904" id="linearGradient11189" gradientUnits="userSpaceOnUse" gradientTransform="translate(13.80516,2.840199)" x1="-191.28896" y1="-328.07861" x2="-192.41396" y2="-315.32861"/>
+ <radialGradient xlink:href="#linearGradient5123" id="radialGradient13211" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.930946,6.185702e-16,-2.842711e-16,0.448244,245.3644,184.9256)" cx="-229.75000" cy="-343.95554" fx="-229.75000" fy="-343.95554" r="14.501380"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient13157" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/>
+ <linearGradient id="linearGradient6549">
+ <stop offset="0" id="stop6551" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6553" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6549" id="linearGradient13155" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/>
+ <linearGradient id="linearGradient6527">
+ <stop offset="0" id="stop6530" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6532" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6527" id="linearGradient13153" gradientUnits="userSpaceOnUse" gradientTransform="translate(-35.00007,207.0001)" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/>
+ <linearGradient id="linearGradient6538">
+ <stop offset="0" id="stop6540" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6542" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient13151" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/>
+ <linearGradient id="linearGradient6513">
+ <stop offset="0" id="stop6515" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6517" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6513" id="linearGradient13149" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/>
+ <linearGradient id="linearGradient6497">
+ <stop offset="0" id="stop6499" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6501" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6497" id="linearGradient13147" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/>
+ <linearGradient id="linearGradient6470">
+ <stop offset="0" id="stop6472" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6474" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6470" id="linearGradient13145" gradientUnits="userSpaceOnUse" gradientTransform="translate(-34.00007,207.0001)" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/>
+ <linearGradient id="linearGradient5123">
+ <stop offset="0" id="stop5125" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop5127" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <radialGradient xlink:href="#linearGradient5123" id="radialGradient13068" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.930946,6.185702e-16,-2.842711e-16,0.448244,229.9269,180.9261)" cx="-229.75000" cy="-343.95554" fx="-229.75000" fy="-343.95554" r="14.501380"/>
+ </defs>
+
+ <metadata id="metadata1311">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:title>weather-storm</dc:title>
+ <dc:date>January 2006</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Ryan Collier</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>http://www.tango-project.org</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://www.pseudocode.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>weather</rdf:li>
+ <rdf:li>applet</rdf:li>
+ <rdf:li>notify</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license rdf:resource="http://creativecommons.org/licenses/publicdomain/"/>
+ </cc:Work>
+ <cc:License rdf:about="http://creativecommons.org/licenses/publicdomain/">
+ <cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/>
+ <cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/>
+ <cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g id="layer1">
+ <g transform="translate(-287.0204,244.9995)">
+ <path d="M 311.50000,-242.99998 C 308.72758,-242.99998 306.39177,-241.42627 305.09375,-239.18748 C 304.14939,-239.66252 303.12856,-239.99998 302.00000,-239.99998 C 298.13600,-239.99998 295.00000,-236.86398 295.00000,-232.99998 C 295.00000,-229.13598 298.13600,-225.99998 302.00000,-225.99998 C 304.41967,-225.99998 306.43009,-227.31930 307.68750,-229.18748 C 308.82170,-228.49786 310.07648,-227.99998 311.50000,-227.99998 C 312.41312,-227.99998 313.25295,-228.23200 314.06250,-228.53123 C 314.57244,-227.66350 315.24162,-226.95151 316.06250,-226.37498 C 316.05526,-226.24460 316.00000,-226.13216 316.00000,-225.99998 C 316.00000,-222.13598 319.13599,-218.99998 323.00000,-218.99998 C 326.86400,-218.99998 330.00000,-222.13598 330.00000,-225.99998 C 330.00000,-228.36967 328.74102,-230.35832 326.93750,-231.62498 C 326.94474,-231.75536 327.00000,-231.86780 327.00000,-231.99998 C 327.00000,-235.86398 323.86401,-238.99998 320.00000,-238.99998 C 319.37730,-238.99998 318.82481,-238.77779 318.25000,-238.62498 C 317.05547,-241.18382 314.50866,-242.99998 311.50000,-242.99998 z " opacity="1.0000000" fill="#555753" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 311.50000,-241.99998 C 308.71952,-241.99998 306.36549,-240.23813 305.43750,-237.78123 C 304.45208,-238.49067 303.30607,-238.99998 302.00000,-238.99998 C 298.68800,-238.99998 296.00000,-236.31198 296.00000,-232.99998 C 296.00000,-229.68798 298.68800,-226.99998 302.00000,-226.99998 C 304.42775,-226.99998 306.49324,-228.45556 307.43750,-230.53123 C 308.55826,-229.61367 309.93964,-228.99998 311.50000,-228.99998 C 312.57454,-228.99998 313.54428,-229.31894 314.43750,-229.78123 C 314.83590,-228.78147 315.53864,-227.99491 316.37500,-227.34373 C 316.19499,-226.74811 316.00000,-226.15408 316.00000,-225.49998 C 316.00000,-221.91198 318.91200,-218.99998 322.50000,-218.99998 C 326.08800,-218.99998 329.00000,-221.91198 329.00000,-225.49998 C 329.00000,-227.86077 327.66567,-229.83017 325.78125,-230.96873 C 325.84384,-231.31596 326.00000,-231.63481 326.00000,-231.99998 C 326.00000,-235.31198 323.31200,-237.99998 320.00000,-237.99998 C 319.14702,-237.99998 318.32870,-237.82130 317.59375,-237.49998 C 316.73998,-240.09386 314.37851,-241.99997 311.50000,-241.99998 z " opacity="1.0000000" fill="url(#linearGradient13495)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.964447,0.000000,0.000000,0.964447,89.28852,144.5262)" d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g>
+ <path d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" opacity="0.49444440" fill="url(#linearGradient13497)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g>
+ <path d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" opacity="0.49444440" fill="url(#linearGradient13499)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g>
+ <path d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" opacity="0.49444440" fill="url(#linearGradient13501)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g>
+ <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84906,169.4899)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84907,169.4899)" opacity="0.49444440" fill="url(#linearGradient13503)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ </g>
+ <g transform="translate(208.8564,357.8851)">
+ <path d="M -173.24571,-327.59122 L -176.37021,-323.31202 L -172.59078,-323.31202 C -172.59078,-323.31202 -175.29396,-318.78622 -180.16632,-310.38562 C -178.07014,-318.33294 -177.21353,-321.35581 -177.21353,-321.35581 L -182.37682,-321.35581 L -178.33401,-327.59122 L -173.24571,-327.59122 z " fill="#edd400" fill-opacity="1.0000000" fill-rule="evenodd" stroke="url(#linearGradient11189)" stroke-width="1.0000006px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ <path d="M -173.75946,-327.84461 L -177.50268,-322.68152 L -173.54648,-322.85830 C -173.54648,-322.85830 -173.68639,-322.39837 -178.55875,-313.99777 C -176.46257,-321.94509 -176.48985,-321.96275 -176.48985,-321.96275 L -181.38797,-321.87436 L -177.69871,-327.57944 L -173.75946,-327.84461 z " opacity="1.0000000" fill="url(#linearGradient11191)" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000006px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(-215.0060,252.9994)">
+ <path d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z " fill="#888a85" fill-opacity="1.0000000" stroke="#555753" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z " opacity="1.0000000" fill="url(#linearGradient13131)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13133)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <rect y="-230.99992" x="236.99994" height="9.0000000" width="20.000000" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13135)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13137)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z " opacity="0.47777775" fill="url(#linearGradient13139)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13141)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z " fill="#555753" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13143)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(192.8564,354.8851)">
+ <path d="M -173.24571,-327.59122 L -176.37021,-323.31202 L -172.59078,-323.31202 C -172.59078,-323.31202 -175.29396,-318.78622 -180.16632,-310.38562 C -178.07014,-318.33294 -177.21353,-321.35581 -177.21353,-321.35581 L -182.37682,-321.35581 L -178.33401,-327.59122 L -173.24571,-327.59122 z " fill="#edd400" fill-opacity="1.0000000" fill-rule="evenodd" stroke="url(#linearGradient11193)" stroke-width="1.0000006px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ <path d="M -173.75946,-327.84461 L -177.50268,-322.68152 L -173.54648,-322.85830 C -173.54648,-322.85830 -173.68639,-322.39837 -178.55875,-313.99777 C -176.46257,-321.94509 -176.48985,-321.96275 -176.48985,-321.96275 L -181.38797,-321.87436 L -177.69871,-327.57944 L -173.75946,-327.84461 z " opacity="1.0000000" fill="url(#linearGradient11195)" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000006px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ </g>
+ <path d="M 31.626355,14.999520 C 29.626255,14.999520 27.940775,16.079020 27.095785,17.614460 C 26.500875,17.392550 25.851145,17.261090 25.169835,17.261090 C 22.339625,17.261090 20.052305,19.379260 20.052305,21.978590 C 20.052305,22.432340 20.196835,22.835420 20.327445,23.250720 C 18.945125,24.115990 17.979615,25.504290 17.979615,27.155450 C 17.979615,29.808280 18.631235,32.148800 23.207195,31.961300 C 23.252315,31.959450 40.658675,32.058280 40.907605,31.943270 C 43.992815,32.169220 44.979615,29.497540 44.979615,27.243810 C 44.979615,25.543300 44.142675,24.193960 42.670345,23.366220 C 42.718305,23.107660 42.631785,22.815030 42.631785,22.543970 C 42.631785,19.944650 40.326135,17.826480 37.495915,17.826480 C 37.102425,17.826480 36.763515,17.961300 36.395375,18.038500 C 35.656915,16.270380 33.810365,14.999520 31.626355,14.999520 z " opacity="1.0000000" fill="url(#radialGradient13211)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000004" stroke-linejoin="round" stroke-miterlimit="4.0000000" stroke-dasharray="none" stroke-opacity="1.0000000"/>
+ <g transform="translate(-230.0203,248.9834)">
+ <path d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z " fill="#888a85" fill-opacity="1.0000000" stroke="#555753" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z " opacity="1.0000000" fill="url(#linearGradient13145)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13147)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <rect y="-230.99992" x="236.99994" height="9.0000000" width="20.000000" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13149)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13151)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z " opacity="0.47777775" fill="url(#linearGradient13153)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13155)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z " fill="#555753" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="0.47777775" fill="url(#linearGradient13157)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <path d="M 16.188855,11.000000 C 14.188755,11.000000 12.503275,12.079500 11.658285,13.614940 C 11.063375,13.393030 10.413645,13.261570 9.7323346,13.261570 C 6.9021246,13.261570 4.6148046,15.379740 4.6148046,17.979070 C 4.6148046,18.432820 4.7593346,18.835900 4.8899446,19.251200 C 3.5076246,20.116470 2.5421146,21.504770 2.5421146,23.155930 C 2.5421146,25.808760 3.1937346,28.149280 7.7696946,27.961780 C 7.8148146,27.959930 25.221175,28.058760 25.470105,27.943750 C 28.555315,28.169700 29.542115,25.498020 29.542115,23.244290 C 29.542115,21.543780 28.705175,20.194440 27.232845,19.366700 C 27.280805,19.108140 27.194285,18.815510 27.194285,18.544450 C 27.194285,15.945130 24.888635,13.826960 22.058415,13.826960 C 21.664925,13.826960 21.326015,13.961780 20.957875,14.038980 C 20.219415,12.270860 18.372865,11.000000 16.188855,11.000000 z " opacity="1.0000000" fill="url(#radialGradient13068)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000004" stroke-linejoin="round" stroke-miterlimit="4.0000000" stroke-dasharray="none" stroke-opacity="1.0000000"/>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-sunny-very-few-clouds.svg b/demos/embedded/weatherinfo/icons/weather-sunny-very-few-clouds.svg
new file mode 100644
index 000000000..a27d30a37
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-sunny-very-few-clouds.svg
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" id="svg1306">
+ <defs id="defs1308">
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient6839" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/>
+ <linearGradient id="linearGradient6549">
+ <stop offset="0" id="stop6551" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6553" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6549" id="linearGradient6837" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/>
+ <linearGradient id="linearGradient6527">
+ <stop offset="0" id="stop6530" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6532" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6527" id="linearGradient6835" gradientUnits="userSpaceOnUse" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/>
+ <linearGradient id="linearGradient6538">
+ <stop offset="0" id="stop6540" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6542" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient6833" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/>
+ <linearGradient id="linearGradient6513">
+ <stop offset="0" id="stop6515" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6517" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6513" id="linearGradient6831" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/>
+ <linearGradient id="linearGradient6497">
+ <stop offset="0" id="stop6499" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6501" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6497" id="linearGradient6829" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/>
+ <linearGradient id="linearGradient6470">
+ <stop offset="0" id="stop6472" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6474" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6470" id="linearGradient6827" gradientUnits="userSpaceOnUse" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/>
+ <linearGradient id="linearGradient4083">
+ <stop id="stop4085" offset="0" stop-color="#ffffff" stop-opacity="0"/>
+ <stop offset="0.75" id="stop4089" stop-color="#ffffff" stop-opacity="0"/>
+ <stop id="stop4087" offset="1" stop-color="#ffffff" stop-opacity="1"/>
+ </linearGradient>
+ <linearGradient id="linearGradient4032">
+ <stop id="stop4034" offset="0" stop-color="#fff7c2" stop-opacity="0.63829786"/>
+ <stop offset="0.59394139" id="stop4036" stop-color="#fcaf3e" stop-opacity="0.18348624"/>
+ <stop id="stop4038" offset="0.83850551" stop-color="#fcaf3e" stop-opacity="0.50458717"/>
+ <stop id="stop4040" offset="1" stop-color="#fcaf3e" stop-opacity="1"/>
+ </linearGradient>
+ <linearGradient id="linearGradient4026">
+ <stop id="stop4028" offset="0" stop-color="#fff9c6" stop-opacity="1"/>
+ <stop offset="0.54166669" id="stop4042" stop-color="#fff28c" stop-opacity="1"/>
+ <stop id="stop4030" offset="1" stop-color="#ffea85" stop-opacity="1"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient4026" id="linearGradient3168" gradientUnits="userSpaceOnUse" x1="-28.968945" y1="-25.326815" x2="-37.19698" y2="-9.5590506"/>
+ <radialGradient xlink:href="#linearGradient4032" id="radialGradient4020" cx="-33.519073" cy="-22.113297" fx="-33.519073" fy="-22.113297" r="9.5" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.487739,1.292402,-1.10267,0.497242,-41.77393,32.41492)"/>
+ <radialGradient xlink:href="#linearGradient4083" id="radialGradient4081" cx="23.99999" cy="23.381506" fx="23.99999" fy="23.381506" r="19.141981" gradientTransform="matrix(1.006701,2.235326e-16,-2.23715e-16,1.007522,-0.160816,0.426981)" gradientUnits="userSpaceOnUse"/>
+ </defs>
+
+ <metadata id="metadata1311">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:title>weather-clear</dc:title>
+ <dc:date>January 2006</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Ryan Collier (pseudo)</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>http://www.tango-project.org</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://www.pseudocode.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>weather</rdf:li>
+ <rdf:li>applet</rdf:li>
+ <rdf:li>notification</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/"/>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Garrett LeSage</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ </cc:Work>
+ <cc:License rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+ <cc:requires rdf:resource="http://web.resource.org/cc/Notice"/>
+ <cc:requires rdf:resource="http://web.resource.org/cc/Attribution"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+ <cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g id="layer1">
+ <g>
+ <g opacity="0.7">
+ <path d="M 24 2.5 L 21.625 9.1875 C 22.399034 9.0641318 23.191406 9 24 9 C 24.808594 9 25.600966 9.0641317 26.375 9.1875 L 24 2.5 z M 8.8125 8.78125 L 11.84375 15.21875 C 12.779034 13.928569 13.928569 12.779034 15.21875 11.84375 L 8.8125 8.78125 z M 39.21875 8.78125 L 32.78125 11.84375 C 34.071431 12.779034 35.220966 13.928569 36.15625 15.21875 L 39.21875 8.78125 z M 9.1875 21.59375 L 2.5 23.96875 L 9.1875 26.34375 C 9.0673373 25.57952 9 24.797813 9 24 C 9 23.180625 9.0608858 22.377571 9.1875 21.59375 z M 38.8125 21.625 C 38.935868 22.399034 39 23.191406 39 24 C 39 24.808594 38.935868 25.600966 38.8125 26.375 L 45.5 24 L 38.8125 21.625 z M 11.84375 32.78125 L 8.8125 39.1875 L 15.21875 36.15625 C 13.928569 35.220966 12.779034 34.071431 11.84375 32.78125 z M 36.15625 32.78125 C 35.229789 34.05926 34.087617 35.194799 32.8125 36.125 L 39.21875 39.1875 L 36.15625 32.78125 z M 21.625 38.8125 L 24 45.5 L 26.375 38.8125 C 25.600966 38.935868 24.808594 39 24 39 C 23.191406 39 22.399034 38.935868 21.625 38.8125 z " fill="#fce94f" fill-opacity="1" stroke="#fcaf3e" stroke-width="0.73732895" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/>
+ <path d="M 24 5.25 L 22.65625 9.0625 C 23.098888 9.0231486 23.547187 9 24 9 C 24.452813 9 24.901112 9.0231486 25.34375 9.0625 L 24 5.25 z M 10.78125 10.75 L 12.5 14.375 C 13.071538 13.694089 13.724004 13.038745 14.40625 12.46875 L 10.78125 10.75 z M 37.25 10.75 L 33.625 12.46875 C 34.304675 13.038189 34.961811 13.695325 35.53125 14.375 L 37.25 10.75 z M 9.0625 22.625 L 5.28125 23.96875 L 9.0625 25.3125 C 9.024981 24.880146 9 24.442031 9 24 C 9 23.536406 9.0212735 23.077908 9.0625 22.625 z M 38.9375 22.65625 C 38.976851 23.098888 39 23.547187 39 24 C 39 24.452813 38.976851 24.901112 38.9375 25.34375 L 42.71875 24 L 38.9375 22.65625 z M 35.53125 33.59375 C 34.958293 34.27954 34.309985 34.957363 33.625 35.53125 L 37.25 37.25 L 35.53125 33.59375 z M 12.5 33.625 L 10.78125 37.21875 L 14.375 35.5 C 13.702932 34.935884 13.064116 34.297068 12.5 33.625 z M 22.65625 38.9375 L 24 42.71875 L 25.34375 38.9375 C 24.901112 38.976851 24.452813 39 24 39 C 23.547187 39 23.098888 38.976851 22.65625 38.9375 z " fill="none" fill-opacity="1" stroke="url(#radialGradient4081)" stroke-width="0.84646249" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/>
+ </g>
+ <g>
+ <g>
+ <path transform="matrix(0.778062,-1.061285,1.061287,0.778062,67.47952,3.641324)" d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z" fill="#ffee54" fill-opacity="1" stroke="#fcaf3e" stroke-width="0.75991178" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/>
+ <path transform="matrix(1.244257,-0.167707,0.216642,1.251844,67.61648,40.527)" d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z" fill="url(#radialGradient4020)" fill-opacity="1" stroke="none" stroke-width="1.01737845" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/>
+ <path transform="matrix(0.715791,-0.976349,0.97635,0.715792,64.00044,5.269544)" d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z" fill="none" fill-opacity="1" stroke="url(#linearGradient3168)" stroke-width="0.82601947" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/>
+ </g>
+ </g>
+ </g>
+ <g transform="translate(-263.99,459.9855)">
+ <path d="M 280.50000,-445.50000 C 278.22917,-445.50000 276.39009,-443.94972 275.78125,-441.87500 C 275.08802,-442.23883 274.33674,-442.50000 273.50000,-442.50000 C 270.74000,-442.50000 268.49999,-440.26001 268.50000,-437.50000 C 268.50000,-436.92107 268.66252,-436.39230 268.84375,-435.87500 C 267.47028,-435.10426 266.50000,-433.68600 266.50000,-432.00000 C 266.50000,-429.51600 268.51600,-427.49999 271.00000,-427.50000 C 271.17713,-427.50000 289.82287,-427.50000 290.00000,-427.50000 C 292.48399,-427.50000 294.50000,-429.51600 294.50000,-432.00000 C 294.50000,-433.68600 293.52972,-435.10426 292.15625,-435.87500 C 292.33749,-436.39229 292.50000,-436.92108 292.50000,-437.50000 C 292.50000,-440.26000 290.26000,-442.49999 287.50000,-442.50000 C 286.66326,-442.50000 285.91198,-442.23883 285.21875,-441.87500 C 284.60991,-443.94972 282.77083,-445.50000 280.50000,-445.50000 z " fill="#c4c5c2" fill-opacity="1.0000000" stroke="#888a85" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 280.50000,-445.00000 C 278.31028,-445.00000 276.77640,-443.66423 276.10445,-441.15648 C 275.43599,-441.50010 274.55686,-441.98983 273.75000,-441.98983 C 271.03349,-441.98983 268.99486,-440.05101 268.99487,-437.44429 C 268.99487,-436.89752 269.26208,-436.11085 269.43683,-435.62228 C 268.11240,-434.89433 267.00000,-433.73178 267.00000,-432.24973 C 267.00000,-429.90368 268.54617,-427.99964 271.33928,-427.99964 C 271.51009,-427.99964 289.48992,-427.99964 289.66072,-427.99964 C 292.43173,-427.99964 294.00000,-429.90368 294.00000,-432.24973 C 294.00000,-433.84210 292.88760,-434.91642 291.56317,-435.64437 C 291.73793,-436.13293 292.02724,-436.89753 292.02724,-437.44429 C 292.02724,-440.05100 289.91143,-442.01192 287.25001,-442.01193 C 286.44314,-442.01193 285.60820,-441.52219 284.93974,-441.17857 C 284.29089,-443.60011 282.68973,-445.00000 280.50000,-445.00000 z " opacity="1.0000000" fill="url(#linearGradient6827)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-24.19818,21.86331)" opacity="1.0000000" fill="url(#linearGradient6829)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <rect y="-438.00000" x="271.00000" height="9.0000000" width="20.000000" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830195,-35.68869)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19811,24.86321)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-17.19818,24.86331)" opacity="1.0000000" fill="url(#linearGradient6831)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="url(#linearGradient6833)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(-1.000000,0.000000)">
+ <path d="M 280.46875,-440.96875 C 276.88937,-440.96875 274.00000,-438.04812 274.00000,-434.46875 C 274.00000,-432.09807 275.34943,-430.13096 277.25000,-429.00000 L 283.71875,-429.00000 C 285.61932,-430.13096 286.96875,-432.12931 286.96875,-434.50000 C 286.96875,-438.07938 284.04812,-440.96875 280.46875,-440.96875 z " opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 280.50000,-441.00000 C 276.91200,-441.00000 274.00000,-438.08799 274.00000,-434.50000 C 274.00000,-432.12360 275.34485,-430.13368 277.25000,-429.00000 L 283.75000,-429.00000 C 285.65515,-430.13368 287.00000,-432.12360 287.00000,-434.50000 C 287.00000,-438.08800 284.08800,-440.99999 280.50000,-441.00000 z " opacity="1.0000000" fill="url(#linearGradient6835)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <path transform="matrix(0.905660,0.000000,0.000000,0.905660,9.830296,-35.68884)" d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" opacity="1.0000000" fill="url(#linearGradient6837)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 292.95640,-437.33396 C 292.95487,-434.64940 289.68714,-433.62001 289.68714,-433.62001 C 289.68714,-433.62001 292.03588,-435.24596 292.02399,-437.32502 C 292.02399,-437.32502 292.95640,-437.33396 292.95640,-437.33396 z " fill="#888a85" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ <g transform="matrix(1.142857,0.000000,0.000000,1.142857,-28.57139,67.00008)">
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="#c4c5c2" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-31.19818,24.86331)" opacity="1.0000000" fill="url(#linearGradient6839)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-sunny.svg b/demos/embedded/weatherinfo/icons/weather-sunny.svg
new file mode 100644
index 000000000..248199cc4
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-sunny.svg
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" id="svg1306">
+ <defs id="defs1308">
+ <linearGradient id="linearGradient4083">
+ <stop id="stop4085" offset="0" stop-color="#ffffff" stop-opacity="0"/>
+ <stop offset="0.75" id="stop4089" stop-color="#ffffff" stop-opacity="0"/>
+ <stop id="stop4087" offset="1" stop-color="#ffffff" stop-opacity="1"/>
+ </linearGradient>
+ <linearGradient id="linearGradient4032">
+ <stop id="stop4034" offset="0" stop-color="#fff7c2" stop-opacity="0.63829786"/>
+ <stop offset="0.59394139" id="stop4036" stop-color="#fcaf3e" stop-opacity="0.18348624"/>
+ <stop id="stop4038" offset="0.83850551" stop-color="#fcaf3e" stop-opacity="0.50458717"/>
+ <stop id="stop4040" offset="1" stop-color="#fcaf3e" stop-opacity="1"/>
+ </linearGradient>
+ <linearGradient id="linearGradient4026">
+ <stop id="stop4028" offset="0" stop-color="#fff9c6" stop-opacity="1"/>
+ <stop offset="0.54166669" id="stop4042" stop-color="#fff28c" stop-opacity="1"/>
+ <stop id="stop4030" offset="1" stop-color="#ffea85" stop-opacity="1"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient4026" id="linearGradient3168" gradientUnits="userSpaceOnUse" x1="-28.968945" y1="-25.326815" x2="-37.19698" y2="-9.5590506"/>
+ <radialGradient xlink:href="#linearGradient4032" id="radialGradient4020" cx="-33.519073" cy="-22.113297" fx="-33.519073" fy="-22.113297" r="9.5" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.487739,1.292402,-1.10267,0.497242,-41.77393,32.41492)"/>
+ <radialGradient xlink:href="#linearGradient4083" id="radialGradient4081" cx="23.99999" cy="23.381506" fx="23.99999" fy="23.381506" r="19.141981" gradientTransform="matrix(1.006701,2.235326e-16,-2.23715e-16,1.007522,-0.160816,0.426981)" gradientUnits="userSpaceOnUse"/>
+ </defs>
+
+ <metadata id="metadata1311">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:title>weather-clear</dc:title>
+ <dc:date>January 2006</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Ryan Collier (pseudo)</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>http://www.tango-project.org</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://www.pseudocode.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>weather</rdf:li>
+ <rdf:li>applet</rdf:li>
+ <rdf:li>notification</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/"/>
+ <dc:contributor>
+ <cc:Agent>
+ <dc:title>Garrett LeSage</dc:title>
+ </cc:Agent>
+ </dc:contributor>
+ </cc:Work>
+ <cc:License rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+ <cc:requires rdf:resource="http://web.resource.org/cc/Notice"/>
+ <cc:requires rdf:resource="http://web.resource.org/cc/Attribution"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+ <cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g id="layer1">
+ <g>
+ <g opacity="0.7">
+ <path d="M 24 2.5 L 21.625 9.1875 C 22.399034 9.0641318 23.191406 9 24 9 C 24.808594 9 25.600966 9.0641317 26.375 9.1875 L 24 2.5 z M 8.8125 8.78125 L 11.84375 15.21875 C 12.779034 13.928569 13.928569 12.779034 15.21875 11.84375 L 8.8125 8.78125 z M 39.21875 8.78125 L 32.78125 11.84375 C 34.071431 12.779034 35.220966 13.928569 36.15625 15.21875 L 39.21875 8.78125 z M 9.1875 21.59375 L 2.5 23.96875 L 9.1875 26.34375 C 9.0673373 25.57952 9 24.797813 9 24 C 9 23.180625 9.0608858 22.377571 9.1875 21.59375 z M 38.8125 21.625 C 38.935868 22.399034 39 23.191406 39 24 C 39 24.808594 38.935868 25.600966 38.8125 26.375 L 45.5 24 L 38.8125 21.625 z M 11.84375 32.78125 L 8.8125 39.1875 L 15.21875 36.15625 C 13.928569 35.220966 12.779034 34.071431 11.84375 32.78125 z M 36.15625 32.78125 C 35.229789 34.05926 34.087617 35.194799 32.8125 36.125 L 39.21875 39.1875 L 36.15625 32.78125 z M 21.625 38.8125 L 24 45.5 L 26.375 38.8125 C 25.600966 38.935868 24.808594 39 24 39 C 23.191406 39 22.399034 38.935868 21.625 38.8125 z " fill="#fce94f" fill-opacity="1" stroke="#fcaf3e" stroke-width="0.73732895" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/>
+ <path d="M 24 5.25 L 22.65625 9.0625 C 23.098888 9.0231486 23.547187 9 24 9 C 24.452813 9 24.901112 9.0231486 25.34375 9.0625 L 24 5.25 z M 10.78125 10.75 L 12.5 14.375 C 13.071538 13.694089 13.724004 13.038745 14.40625 12.46875 L 10.78125 10.75 z M 37.25 10.75 L 33.625 12.46875 C 34.304675 13.038189 34.961811 13.695325 35.53125 14.375 L 37.25 10.75 z M 9.0625 22.625 L 5.28125 23.96875 L 9.0625 25.3125 C 9.024981 24.880146 9 24.442031 9 24 C 9 23.536406 9.0212735 23.077908 9.0625 22.625 z M 38.9375 22.65625 C 38.976851 23.098888 39 23.547187 39 24 C 39 24.452813 38.976851 24.901112 38.9375 25.34375 L 42.71875 24 L 38.9375 22.65625 z M 35.53125 33.59375 C 34.958293 34.27954 34.309985 34.957363 33.625 35.53125 L 37.25 37.25 L 35.53125 33.59375 z M 12.5 33.625 L 10.78125 37.21875 L 14.375 35.5 C 13.702932 34.935884 13.064116 34.297068 12.5 33.625 z M 22.65625 38.9375 L 24 42.71875 L 25.34375 38.9375 C 24.901112 38.976851 24.452813 39 24 39 C 23.547187 39 23.098888 38.976851 22.65625 38.9375 z " fill="none" fill-opacity="1" stroke="url(#radialGradient4081)" stroke-width="0.84646249" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/>
+ </g>
+ <g>
+ <g>
+ <path transform="matrix(0.778062,-1.061285,1.061287,0.778062,67.47952,3.641324)" d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z" fill="#ffee54" fill-opacity="1" stroke="#fcaf3e" stroke-width="0.75991178" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/>
+ <path transform="matrix(1.244257,-0.167707,0.216642,1.251844,67.61648,40.527)" d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z" fill="url(#radialGradient4020)" fill-opacity="1" stroke="none" stroke-width="1.01737845" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/>
+ <path transform="matrix(0.715791,-0.976349,0.97635,0.715792,64.00044,5.269544)" d="M -22.5 -17.5 A 9.5 9.5 0 1 1 -41.5,-17.5 A 9.5 9.5 0 1 1 -22.5 -17.5 z" fill="none" fill-opacity="1" stroke="url(#linearGradient3168)" stroke-width="0.82601947" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="4" stroke-dasharray="none" stroke-opacity="1"/>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/icons/weather-thundershower.svg b/demos/embedded/weatherinfo/icons/weather-thundershower.svg
new file mode 100644
index 000000000..e1c2286f8
--- /dev/null
+++ b/demos/embedded/weatherinfo/icons/weather-thundershower.svg
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" id="svg1306">
+ <defs id="defs1308">
+ <linearGradient id="linearGradient5358">
+ <stop offset="0" id="stop5360" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop5362" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient id="linearGradient5346">
+ <stop offset="0" id="stop5348" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop5350" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient id="linearGradient8397">
+ <stop offset="0" id="stop8400" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8402" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8397" id="linearGradient13503" gradientUnits="userSpaceOnUse" x1="238.00478" y1="-388.47476" x2="245.65462" y2="-382.64539"/>
+ <linearGradient id="linearGradient8315">
+ <stop offset="0" id="stop8317" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8319" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8315" id="linearGradient13501" gradientUnits="userSpaceOnUse" x1="230.87598" y1="-390.43951" x2="235.25652" y2="-386.95901"/>
+ <linearGradient id="linearGradient8381">
+ <stop offset="0" id="stop8383" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8385" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8381" id="linearGradient13499" gradientUnits="userSpaceOnUse" x1="246.74042" y1="-391.31381" x2="252.69785" y2="-385.35165"/>
+ <linearGradient id="linearGradient8331">
+ <stop offset="0" id="stop8333" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8335" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8331" id="linearGradient13497" gradientUnits="userSpaceOnUse" x1="240.07379" y1="-393.40720" x2="245.82706" y2="-388.55029"/>
+ <linearGradient id="linearGradient8302">
+ <stop offset="0" id="stop8304" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8306" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8302" id="linearGradient13495" gradientUnits="userSpaceOnUse" gradientTransform="translate(69.00000,155.0000)" x1="228.50261" y1="-392.30591" x2="266.36395" y2="-379.26862"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient13143" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/>
+ <linearGradient xlink:href="#linearGradient6549" id="linearGradient13141" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/>
+ <linearGradient xlink:href="#linearGradient6527" id="linearGradient13139" gradientUnits="userSpaceOnUse" gradientTransform="translate(-35.00007,207.0001)" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient13137" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/>
+ <linearGradient xlink:href="#linearGradient6513" id="linearGradient13135" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/>
+ <linearGradient xlink:href="#linearGradient6497" id="linearGradient13133" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/>
+ <linearGradient xlink:href="#linearGradient6470" id="linearGradient13131" gradientUnits="userSpaceOnUse" gradientTransform="translate(-34.00007,207.0001)" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/>
+ <linearGradient xlink:href="#linearGradient8874" id="linearGradient11195" gradientUnits="userSpaceOnUse" gradientTransform="translate(14.15871,7.082841)" x1="-190.47688" y1="-332.51181" x2="-196.19046" y2="-328.53433"/>
+ <linearGradient xlink:href="#linearGradient8904" id="linearGradient11193" gradientUnits="userSpaceOnUse" gradientTransform="translate(13.80516,2.840199)" x1="-191.28896" y1="-328.07861" x2="-192.41396" y2="-315.32861"/>
+ <linearGradient id="linearGradient8874">
+ <stop offset="0" id="stop8876" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop8878" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8874" id="linearGradient11191" gradientUnits="userSpaceOnUse" gradientTransform="translate(14.15871,7.082841)" x1="-190.47688" y1="-332.51181" x2="-196.19046" y2="-328.53433"/>
+ <linearGradient id="linearGradient8904">
+ <stop offset="0" id="stop8906" stop-color="#fcaf3e" stop-opacity="1"/>
+ <stop offset="1" id="stop8908" stop-color="#fcaf3e" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient8904" id="linearGradient11189" gradientUnits="userSpaceOnUse" gradientTransform="translate(13.80516,2.840199)" x1="-191.28896" y1="-328.07861" x2="-192.41396" y2="-315.32861"/>
+ <radialGradient xlink:href="#linearGradient5123" id="radialGradient13211" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.930946,6.185702e-16,-2.842711e-16,0.448244,245.3644,184.9256)" cx="-229.75000" cy="-343.95554" fx="-229.75000" fy="-343.95554" r="14.501380"/>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient13157" gradientUnits="userSpaceOnUse" x1="284.80219" y1="-441.23294" x2="288.89954" y2="-436.83109"/>
+ <linearGradient id="linearGradient6549">
+ <stop offset="0" id="stop6551" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6553" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6549" id="linearGradient13155" gradientUnits="userSpaceOnUse" x1="286.66589" y1="-439.48358" x2="289.76562" y2="-436.70703"/>
+ <linearGradient id="linearGradient6527">
+ <stop offset="0" id="stop6530" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6532" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6527" id="linearGradient13153" gradientUnits="userSpaceOnUse" gradientTransform="translate(-35.00007,207.0001)" x1="275.94193" y1="-437.10501" x2="279.97546" y2="-431.91833"/>
+ <linearGradient id="linearGradient6538">
+ <stop offset="0" id="stop6540" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6542" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6538" id="linearGradient13151" gradientUnits="userSpaceOnUse" x1="285.94086" y1="-439.93900" x2="289.39124" y2="-436.44290"/>
+ <linearGradient id="linearGradient6513">
+ <stop offset="0" id="stop6515" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6517" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6513" id="linearGradient13149" gradientUnits="userSpaceOnUse" x1="286.51172" y1="-441.29074" x2="289.85379" y2="-436.14453"/>
+ <linearGradient id="linearGradient6497">
+ <stop offset="0" id="stop6499" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6501" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6497" id="linearGradient13147" gradientUnits="userSpaceOnUse" x1="287.51730" y1="-439.75281" x2="289.67633" y2="-436.32199"/>
+ <linearGradient id="linearGradient6470">
+ <stop offset="0" id="stop6472" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop6474" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient xlink:href="#linearGradient6470" id="linearGradient13145" gradientUnits="userSpaceOnUse" gradientTransform="translate(-34.00007,207.0001)" x1="271.02170" y1="-441.05182" x2="285.02859" y2="-431.96991"/>
+ <linearGradient id="linearGradient5123">
+ <stop offset="0" id="stop5125" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" id="stop5127" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ <radialGradient xlink:href="#linearGradient5123" id="radialGradient13068" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.930946,6.185702e-16,-2.842711e-16,0.448244,229.9269,180.9261)" cx="-229.75000" cy="-343.95554" fx="-229.75000" fy="-343.95554" r="14.501380"/>
+ <radialGradient xlink:href="#linearGradient5346" id="radialGradient23739" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)" cx="21.920311" cy="-382.96454" fx="21.920311" fy="-382.96454" r="21.743534"/>
+ <linearGradient xlink:href="#linearGradient5358" id="linearGradient23741" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)" x1="6.8942904" y1="-359.82382" x2="27.400387" y2="-381.30222"/>
+ <radialGradient xlink:href="#linearGradient5346" id="radialGradient23743" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)" cx="21.920311" cy="-382.96454" fx="21.920311" fy="-382.96454" r="21.743534"/>
+ <linearGradient xlink:href="#linearGradient5358" id="linearGradient23745" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)" x1="6.8942904" y1="-359.82382" x2="27.400387" y2="-381.30222"/>
+ <radialGradient xlink:href="#linearGradient5346" id="radialGradient23747" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.065158e-2,4.154803e-2,-6.201499e-2,0.109408,207.4757,-189.8182)" cx="21.920311" cy="-382.96454" fx="21.920311" fy="-382.96454" r="21.743534"/>
+ <linearGradient xlink:href="#linearGradient5358" id="linearGradient23749" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-5.358613e-2,0.102849,-9.281434e-2,-5.937964e-2,198.9051,-255.6893)" x1="6.8942904" y1="-359.82382" x2="27.400387" y2="-381.30222"/>
+ </defs>
+
+ <metadata id="metadata1311">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:title>weather-storm</dc:title>
+ <dc:date>January 2006</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Ryan Collier</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:publisher>
+ <cc:Agent>
+ <dc:title>http://www.tango-project.org</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:source>http://www.pseudocode.org</dc:source>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>weather</rdf:li>
+ <rdf:li>applet</rdf:li>
+ <rdf:li>notify</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/"/>
+ </cc:Work>
+ <cc:License rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+ <cc:requires rdf:resource="http://web.resource.org/cc/Notice"/>
+ <cc:requires rdf:resource="http://web.resource.org/cc/Attribution"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+ <cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g id="layer1">
+ <g>
+ <g transform="translate(-287.0204,244.9995)">
+ <path d="M 311.50000,-242.99998 C 308.72758,-242.99998 306.39177,-241.42627 305.09375,-239.18748 C 304.14939,-239.66252 303.12856,-239.99998 302.00000,-239.99998 C 298.13600,-239.99998 295.00000,-236.86398 295.00000,-232.99998 C 295.00000,-229.13598 298.13600,-225.99998 302.00000,-225.99998 C 304.41967,-225.99998 306.43009,-227.31930 307.68750,-229.18748 C 308.82170,-228.49786 310.07648,-227.99998 311.50000,-227.99998 C 312.41312,-227.99998 313.25295,-228.23200 314.06250,-228.53123 C 314.57244,-227.66350 315.24162,-226.95151 316.06250,-226.37498 C 316.05526,-226.24460 316.00000,-226.13216 316.00000,-225.99998 C 316.00000,-222.13598 319.13599,-218.99998 323.00000,-218.99998 C 326.86400,-218.99998 330.00000,-222.13598 330.00000,-225.99998 C 330.00000,-228.36967 328.74102,-230.35832 326.93750,-231.62498 C 326.94474,-231.75536 327.00000,-231.86780 327.00000,-231.99998 C 327.00000,-235.86398 323.86401,-238.99998 320.00000,-238.99998 C 319.37730,-238.99998 318.82481,-238.77779 318.25000,-238.62498 C 317.05547,-241.18382 314.50866,-242.99998 311.50000,-242.99998 z " opacity="1.0000000" fill="#555753" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 311.50000,-241.99998 C 308.71952,-241.99998 306.36549,-240.23813 305.43750,-237.78123 C 304.45208,-238.49067 303.30607,-238.99998 302.00000,-238.99998 C 298.68800,-238.99998 296.00000,-236.31198 296.00000,-232.99998 C 296.00000,-229.68798 298.68800,-226.99998 302.00000,-226.99998 C 304.42775,-226.99998 306.49324,-228.45556 307.43750,-230.53123 C 308.55826,-229.61367 309.93964,-228.99998 311.50000,-228.99998 C 312.57454,-228.99998 313.54428,-229.31894 314.43750,-229.78123 C 314.83590,-228.78147 315.53864,-227.99491 316.37500,-227.34373 C 316.19499,-226.74811 316.00000,-226.15408 316.00000,-225.49998 C 316.00000,-221.91198 318.91200,-218.99998 322.50000,-218.99998 C 326.08800,-218.99998 329.00000,-221.91198 329.00000,-225.49998 C 329.00000,-227.86077 327.66567,-229.83017 325.78125,-230.96873 C 325.84384,-231.31596 326.00000,-231.63481 326.00000,-231.99998 C 326.00000,-235.31198 323.31200,-237.99998 320.00000,-237.99998 C 319.14702,-237.99998 318.32870,-237.82130 317.59375,-237.49998 C 316.73998,-240.09386 314.37851,-241.99997 311.50000,-241.99998 z " opacity="1.0000000" fill="url(#linearGradient13495)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" transform="matrix(0.964447,0.000000,0.000000,0.964447,89.28852,144.5262)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <g>
+ <path transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.882630,0.000000,0.000000,0.882630,96.18078,108.1091)" d="M 250.18322 -389.30136 A 6.2313786 6.2313786 0 1 1 237.72046,-389.30136 A 6.2313786 6.2313786 0 1 1 250.18322 -389.30136 z" opacity="0.49444440" fill="url(#linearGradient13497)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g>
+ <path transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(0.911728,0.000000,0.000000,0.911728,90.45407,120.2336)" d="M 257.25429 -385.78790 A 6.0325046 6.0325046 0 1 1 245.18928,-385.78790 A 6.0325046 6.0325046 0 1 1 257.25429 -385.78790 z" opacity="0.49444440" fill="url(#linearGradient13499)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g>
+ <path transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.142799,0.000000,0.000000,1.142799,35.23229,210.2770)" d="M 237.80885 -387.88715 A 4.3752232 4.3752232 0 1 1 229.05840,-387.88715 A 4.3752232 4.3752232 0 1 1 237.80885 -387.88715 z" opacity="0.49444440" fill="url(#linearGradient13501)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g>
+ <path transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84906,169.4899)" d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path transform="matrix(1.038636,0.000000,0.000000,1.038636,59.84907,169.4899)" d="M 248.54804 -383.66660 A 6.7396116 6.7396116 0 1 1 235.06881,-383.66660 A 6.7396116 6.7396116 0 1 1 248.54804 -383.66660 z" opacity="0.49444440" fill="url(#linearGradient13503)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ </g>
+ <g transform="translate(208.8564,357.8851)">
+ <path d="M -173.24571,-327.59122 L -176.37021,-323.31202 L -172.59078,-323.31202 C -172.59078,-323.31202 -175.29396,-318.78622 -180.16632,-310.38562 C -178.07014,-318.33294 -177.21353,-321.35581 -177.21353,-321.35581 L -182.37682,-321.35581 L -178.33401,-327.59122 L -173.24571,-327.59122 z " fill="#edd400" fill-opacity="1.0000000" fill-rule="evenodd" stroke="url(#linearGradient11189)" stroke-width="1.0000006px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ <path d="M -173.75946,-327.84461 L -177.50268,-322.68152 L -173.54648,-322.85830 C -173.54648,-322.85830 -173.68639,-322.39837 -178.55875,-313.99777 C -176.46257,-321.94509 -176.48985,-321.96275 -176.48985,-321.96275 L -181.38797,-321.87436 L -177.69871,-327.57944 L -173.75946,-327.84461 z " opacity="1.0000000" fill="url(#linearGradient11191)" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000006px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(-215.0060,252.9994)">
+ <path d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z " fill="#888a85" fill-opacity="1.0000000" stroke="#555753" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z " opacity="1.0000000" fill="url(#linearGradient13131)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" opacity="0.47777775" fill="url(#linearGradient13133)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <rect width="20.000000" height="9.0000000" x="236.99994" y="-230.99992" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" opacity="0.47777775" fill="url(#linearGradient13135)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" opacity="0.47777775" fill="url(#linearGradient13137)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z " opacity="0.47777775" fill="url(#linearGradient13139)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" opacity="0.47777775" fill="url(#linearGradient13141)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z " fill="#555753" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" opacity="0.47777775" fill="url(#linearGradient13143)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <g transform="translate(192.8564,354.8851)">
+ <path d="M -173.24571,-327.59122 L -176.37021,-323.31202 L -172.59078,-323.31202 C -172.59078,-323.31202 -175.29396,-318.78622 -180.16632,-310.38562 C -178.07014,-318.33294 -177.21353,-321.35581 -177.21353,-321.35581 L -182.37682,-321.35581 L -178.33401,-327.59122 L -173.24571,-327.59122 z " fill="#edd400" fill-opacity="1.0000000" fill-rule="evenodd" stroke="url(#linearGradient11193)" stroke-width="1.0000006px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ <path d="M -173.75946,-327.84461 L -177.50268,-322.68152 L -173.54648,-322.85830 C -173.54648,-322.85830 -173.68639,-322.39837 -178.55875,-313.99777 C -176.46257,-321.94509 -176.48985,-321.96275 -176.48985,-321.96275 L -181.38797,-321.87436 L -177.69871,-327.57944 L -173.75946,-327.84461 z " opacity="1.0000000" fill="url(#linearGradient11195)" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000006px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ </g>
+ <path d="M 31.626355,14.999520 C 29.626255,14.999520 27.940775,16.079020 27.095785,17.614460 C 26.500875,17.392550 25.851145,17.261090 25.169835,17.261090 C 22.339625,17.261090 20.052305,19.379260 20.052305,21.978590 C 20.052305,22.432340 20.196835,22.835420 20.327445,23.250720 C 18.945125,24.115990 17.979615,25.504290 17.979615,27.155450 C 17.979615,29.808280 18.631235,32.148800 23.207195,31.961300 C 23.252315,31.959450 40.658675,32.058280 40.907605,31.943270 C 43.992815,32.169220 44.979615,29.497540 44.979615,27.243810 C 44.979615,25.543300 44.142675,24.193960 42.670345,23.366220 C 42.718305,23.107660 42.631785,22.815030 42.631785,22.543970 C 42.631785,19.944650 40.326135,17.826480 37.495915,17.826480 C 37.102425,17.826480 36.763515,17.961300 36.395375,18.038500 C 35.656915,16.270380 33.810365,14.999520 31.626355,14.999520 z " opacity="1.0000000" fill="url(#radialGradient13211)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000004" stroke-linejoin="round" stroke-miterlimit="4.0000000" stroke-dasharray="none" stroke-opacity="1.0000000"/>
+ <g transform="translate(-230.0203,248.9834)">
+ <path d="M 246.49993,-238.49993 C 244.22910,-238.49993 242.39002,-236.94965 241.78118,-234.87493 C 241.08795,-235.23876 240.33667,-235.49993 239.49993,-235.49993 C 236.73993,-235.49993 234.49992,-233.25994 234.49993,-230.49993 C 234.49993,-229.92100 234.66245,-229.39223 234.84368,-228.87493 C 233.47021,-228.10419 232.49993,-226.68593 232.49993,-224.99993 C 232.49993,-222.51593 234.51593,-220.49992 236.99993,-220.49993 C 237.17706,-220.49993 255.82280,-220.49993 255.99993,-220.49993 C 258.48392,-220.49993 260.49993,-222.51593 260.49993,-224.99993 C 260.49993,-226.68593 259.52965,-228.10419 258.15618,-228.87493 C 258.33742,-229.39222 258.49993,-229.92101 258.49993,-230.49993 C 258.49993,-233.25993 256.25993,-235.49992 253.49993,-235.49993 C 252.66319,-235.49993 251.91191,-235.23876 251.21868,-234.87493 C 250.60984,-236.94965 248.77076,-238.49993 246.49993,-238.49993 z " fill="#888a85" fill-opacity="1.0000000" stroke="#555753" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 246.49993,-237.99993 C 244.31021,-237.99993 242.77633,-236.66416 242.10438,-234.15641 C 241.43592,-234.50003 240.55679,-234.98976 239.74993,-234.98976 C 237.03342,-234.98976 234.99479,-233.05094 234.99480,-230.44422 C 234.99480,-229.89745 235.26201,-229.11078 235.43676,-228.62221 C 234.11233,-227.89426 232.99993,-226.73171 232.99993,-225.24966 C 232.99993,-222.90361 234.54610,-220.99957 237.33921,-220.99957 C 237.51002,-220.99957 255.48985,-220.99957 255.66065,-220.99957 C 258.43166,-220.99957 259.99993,-222.90361 259.99993,-225.24966 C 259.99993,-226.84203 258.88753,-227.91635 257.56310,-228.64430 C 257.73786,-229.13286 258.02717,-229.89746 258.02717,-230.44422 C 258.02717,-233.05093 255.91136,-235.01185 253.24994,-235.01186 C 252.44307,-235.01186 251.60813,-234.52212 250.93967,-234.17850 C 250.29082,-236.60004 248.68966,-237.99993 246.49993,-237.99993 z " opacity="1.0000000" fill="url(#linearGradient13145)" fill-opacity="1.0000000" stroke="none" stroke-width="0.99999958" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-58.19825,228.8634)" opacity="0.47777775" fill="url(#linearGradient13147)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <rect width="20.000000" height="9.0000000" x="236.99994" y="-230.99992" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16987,171.3114)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19818,231.8633)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-51.19825,231.8634)" opacity="0.47777775" fill="url(#linearGradient13149)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.056604,0.000000,0.000000,1.056604,-65.19825,231.8634)" opacity="0.47777775" fill="url(#linearGradient13151)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 245.46868,-233.96868 C 241.88930,-233.96868 238.99993,-231.04805 238.99993,-227.46868 C 238.99993,-225.09800 240.34936,-223.13089 242.24993,-221.99993 L 248.71868,-221.99993 C 250.61925,-223.13089 251.96868,-225.12924 251.96868,-227.49993 C 251.96868,-231.07931 249.04805,-233.96868 245.46868,-233.96868 z " opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 245.49993,-233.99993 C 241.91193,-233.99993 238.99993,-231.08792 238.99993,-227.49993 C 238.99993,-225.12353 240.34478,-223.13361 242.24993,-221.99993 L 248.74993,-221.99993 C 250.65508,-223.13361 251.99993,-225.12353 251.99993,-227.49993 C 251.99993,-231.08793 249.08793,-233.99992 245.49993,-233.99993 z " opacity="0.47777775" fill="url(#linearGradient13153)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(0.905660,0.000000,0.000000,0.905660,-24.16977,171.3113)" opacity="0.47777775" fill="url(#linearGradient13155)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 258.95633,-230.33389 C 258.95480,-227.64933 255.68707,-226.61994 255.68707,-226.61994 C 255.68707,-226.61994 258.03581,-228.24589 258.02392,-230.32495 C 258.02392,-230.32495 258.95633,-230.33389 258.95633,-230.33389 z " fill="#555753" fill-opacity="1.0000000" fill-rule="evenodd" stroke="none" stroke-width="1.0000000px" stroke-linecap="butt" stroke-linejoin="miter" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" opacity="1.0000000" fill="#888a85" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ <path d="M 291.68750 -437.59375 A 3.3125000 3.3125000 0 1 1 285.06250,-437.59375 A 3.3125000 3.3125000 0 1 1 291.68750 -437.59375 z" transform="matrix(1.207547,0.000000,0.000000,1.207547,-98.22652,302.4154)" opacity="0.47777775" fill="url(#linearGradient13157)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000000" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2.0000000" stroke-dasharray="none" stroke-dashoffset="0.0000000" stroke-opacity="1.0000000"/>
+ </g>
+ <path d="M 16.188855,11.000000 C 14.188755,11.000000 12.503275,12.079500 11.658285,13.614940 C 11.063375,13.393030 10.413645,13.261570 9.7323346,13.261570 C 6.9021246,13.261570 4.6148046,15.379740 4.6148046,17.979070 C 4.6148046,18.432820 4.7593346,18.835900 4.8899446,19.251200 C 3.5076246,20.116470 2.5421146,21.504770 2.5421146,23.155930 C 2.5421146,25.808760 3.1937346,28.149280 7.7696946,27.961780 C 7.8148146,27.959930 25.221175,28.058760 25.470105,27.943750 C 28.555315,28.169700 29.542115,25.498020 29.542115,23.244290 C 29.542115,21.543780 28.705175,20.194440 27.232845,19.366700 C 27.280805,19.108140 27.194285,18.815510 27.194285,18.544450 C 27.194285,15.945130 24.888635,13.826960 22.058415,13.826960 C 21.664925,13.826960 21.326015,13.961780 20.957875,14.038980 C 20.219415,12.270860 18.372865,11.000000 16.188855,11.000000 z " opacity="1.0000000" fill="url(#radialGradient13068)" fill-opacity="1.0000000" stroke="none" stroke-width="1.0000004" stroke-linejoin="round" stroke-miterlimit="4.0000000" stroke-dasharray="none" stroke-opacity="1.0000000"/>
+ <g transform="translate(-212.91035,271.43)">
+ <path d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z" fill="#729fcf" fill-opacity="1" stroke="#204a87" stroke-width="1.07456863" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z" opacity="0.46111109" fill="url(#radialGradient23739)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z" opacity="1" fill="url(#linearGradient23741)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ <g transform="translate(-193.78094,269.3383)">
+ <path d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z" fill="#729fcf" fill-opacity="1" stroke="#204a87" stroke-width="1.07456863" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z" opacity="0.46111109" fill="url(#radialGradient23743)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z" opacity="1" fill="url(#linearGradient23745)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ <g transform="translate(-225.96722,264.58414)">
+ <path d="M 231.62587,-228.77086 C 230.58662,-229.36665 230.23015,-230.68774 230.83016,-231.71967 C 232.16166,-233.80243 233.93524,-233.26584 234.84231,-235.46138 C 236.10323,-234.12777 235.63545,-227.21367 231.62587,-228.77086 z" fill="#729fcf" fill-opacity="1" stroke="#204a87" stroke-width="1.07456863" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="2" stroke-dasharray="none" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 234.31017,-229.9035 C 233.82059,-229.03976 232.73502,-228.74348 231.88703,-229.24216 C 231.03903,-229.74084 230.74816,-230.84657 231.23774,-231.71031 C 231.72733,-232.57405 233.84374,-232.16235 234.58388,-234 C 235.43187,-233.50133 234.79976,-230.76724 234.31017,-229.9035 z" opacity="0.46111109" fill="url(#radialGradient23747)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/>
+ <path d="M 233.02237,-229 C 228.40776,-230.07384 233.25985,-233.71939 234,-232.92154 C 230.4176,-231.55118 233.02237,-229 233.02237,-229 z" opacity="1" fill="url(#linearGradient23749)" fill-opacity="1" stroke="none" stroke-width="1.07457018" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="0" stroke-dashoffset="0" stroke-opacity="1"/>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/demos/embedded/weatherinfo/weatherinfo.cpp b/demos/embedded/weatherinfo/weatherinfo.cpp
new file mode 100644
index 000000000..842f05bbe
--- /dev/null
+++ b/demos/embedded/weatherinfo/weatherinfo.cpp
@@ -0,0 +1,511 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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>
+#include <QtGui>
+#include <QtNetwork>
+#include <QtSvg>
+
+#if defined (Q_OS_SYMBIAN)
+#include "sym_iap_util.h"
+#endif
+
+class WeatherInfo: public QMainWindow
+{
+ Q_OBJECT
+
+private:
+
+ QGraphicsView *m_view;
+ QGraphicsScene m_scene;
+ QString city;
+ QGraphicsRectItem *m_statusItem;
+ QGraphicsTextItem *m_temperatureItem;
+ QGraphicsTextItem *m_conditionItem;
+ QGraphicsSvgItem *m_iconItem;
+ QList<QGraphicsRectItem*> m_forecastItems;
+ QList<QGraphicsTextItem*> m_dayItems;
+ QList<QGraphicsSvgItem*> m_conditionItems;
+ QList<QGraphicsTextItem*> m_rangeItems;
+ QTimeLine m_timeLine;
+ QHash<QString, QString> m_icons;
+
+public:
+ WeatherInfo(QWidget *parent = 0): QMainWindow(parent) {
+
+ m_view = new QGraphicsView(this);
+ setCentralWidget(m_view);
+
+ setupScene();
+ m_view->setScene(&m_scene);
+ m_view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ m_view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+
+ m_view->setFrameShape(QFrame::NoFrame);
+ setWindowTitle("Weather Info");
+
+ QStringList cities;
+ cities << "Oslo";
+ cities << "Berlin";
+ cities << "Brisbane";
+ cities << "Helsinki";
+ cities << "San Diego";
+ for (int i = 0; i < cities.count(); ++i) {
+ QAction *action = new QAction(cities[i], this);
+ connect(action, SIGNAL(triggered()), SLOT(chooseCity()));
+ addAction(action);
+#if defined(Q_OS_SYMBIAN)
+ menuBar()->addAction(action);
+#endif
+ }
+ setContextMenuPolicy(Qt::ActionsContextMenu);
+
+ QTimer::singleShot(0, this, SLOT(delayedInit()));
+ }
+
+private slots:
+ void delayedInit() {
+#if defined(Q_OS_SYMBIAN)
+ qt_SetDefaultIap();
+#else
+ request("Oslo");
+#endif
+ }
+
+private slots:
+
+ void chooseCity() {
+ QAction *action = qobject_cast<QAction*>(sender());
+ if (action)
+ request(action->text());
+ }
+
+ void handleNetworkData(QNetworkReply *networkReply) {
+ QUrl url = networkReply->url();
+ if (!networkReply->error())
+ digest(QString::fromUtf8(networkReply->readAll()));
+ networkReply->deleteLater();
+ networkReply->manager()->deleteLater();
+ }
+
+ void animate(int frame) {
+ qreal progress = static_cast<qreal>(frame) / 100;
+#if QT_VERSION >= 0x040500
+ m_iconItem->setOpacity(progress);
+#endif
+ qreal hw = width() / 2.0;
+ m_statusItem->setPos(-hw + hw * progress, 0);
+ for (int i = 0; i < m_forecastItems.count(); ++i) {
+ qreal ofs = i * 0.5 / m_forecastItems.count();
+ qreal alpha = qBound(qreal(0), 2 * (progress - ofs), qreal(1));
+#if QT_VERSION >= 0x040500
+ m_conditionItems[i]->setOpacity(alpha);
+#endif
+ QPointF pos = m_forecastItems[i]->pos();
+ if (width() > height()) {
+ qreal fx = width() - width() * 0.4 * alpha;
+ m_forecastItems[i]->setPos(fx, pos.y());
+ } else {
+ qreal fx = height() - height() * 0.5 * alpha;
+ m_forecastItems[i]->setPos(pos.x(), fx);
+ }
+ }
+ }
+
+private:
+
+ void setupScene() {
+
+ QColor textColor = palette().color(QPalette::WindowText);
+ QFont textFont = font();
+ textFont.setBold(true);
+ textFont.setPointSize(textFont.pointSize() * 2);
+
+ m_temperatureItem = m_scene.addText(QString(), textFont);
+ m_temperatureItem->setDefaultTextColor(textColor);
+
+ m_conditionItem = m_scene.addText(QString(), textFont);
+ m_conditionItem->setDefaultTextColor(textColor);
+
+ m_iconItem = new QGraphicsSvgItem;
+ m_scene.addItem(m_iconItem);
+
+ m_statusItem = m_scene.addRect(0, 0, 10, 10);
+ m_statusItem->setPen(Qt::NoPen);
+ m_statusItem->setBrush(Qt::NoBrush);
+ m_temperatureItem->setParentItem(m_statusItem);
+ m_conditionItem->setParentItem(m_statusItem);
+ m_iconItem->setParentItem(m_statusItem);
+
+ connect(&m_timeLine, SIGNAL(frameChanged(int)), SLOT(animate(int)));
+ m_timeLine.setDuration(1100);
+ m_timeLine.setFrameRange(0, 100);
+ m_timeLine.setCurveShape(QTimeLine::EaseInCurve);
+ }
+
+ void request(const QString &location) {
+ QUrl url("http://www.google.com/ig/api");
+ url.addEncodedQueryItem("hl", "en");
+ url.addEncodedQueryItem("weather", QUrl::toPercentEncoding(location));
+
+ QNetworkAccessManager *manager = new QNetworkAccessManager(this);
+ connect(manager, SIGNAL(finished(QNetworkReply*)),
+ this, SLOT(handleNetworkData(QNetworkReply*)));
+ manager->get(QNetworkRequest(url));
+
+ city = QString();
+ setWindowTitle("Loading...");
+ }
+
+ QString extractIcon(const QString &data) {
+ if (m_icons.isEmpty()) {
+ m_icons["mostly_cloudy"] = "weather-few-clouds";
+ m_icons["cloudy"] = "weather-overcast";
+ m_icons["mostly_sunny"] = "weather-sunny-very-few-clouds";
+ m_icons["partly_cloudy"] = "weather-sunny-very-few-clouds";
+ m_icons["sunny"] = "weather-sunny";
+ m_icons["flurries"] = "weather-snow";
+ m_icons["fog"] = "weather-fog";
+ m_icons["haze"] = "weather-haze";
+ m_icons["icy"] = "weather-icy";
+ m_icons["sleet"] = "weather-sleet";
+ m_icons["chance_of_sleet"] = "weather-sleet";
+ m_icons["snow"] = "weather-snow";
+ m_icons["chance_of_snow"] = "weather-snow";
+ m_icons["mist"] = "weather-showers";
+ m_icons["rain"] = "weather-showers";
+ m_icons["chance_of_rain"] = "weather-showers";
+ m_icons["storm"] = "weather-storm";
+ m_icons["chance_of_storm"] = "weather-storm";
+ m_icons["thunderstorm"] = "weather-thundershower";
+ m_icons["chance_of_tstorm"] = "weather-thundershower";
+ }
+ QRegExp regex("([\\w]+).gif$");
+ if (regex.indexIn(data) != -1) {
+ QString i = regex.cap();
+ i = i.left(i.length() - 4);
+ QString name = m_icons.value(i);
+ if (!name.isEmpty()) {
+ name.prepend(":/icons/");
+ name.append(".svg");
+ return name;
+ }
+ }
+ return QString();
+ }
+
+ static QString toCelcius(QString t, QString unit) {
+ bool ok = false;
+ int degree = t.toInt(&ok);
+ if (!ok)
+ return QString();
+ if (unit != "SI")
+ degree = ((degree - 32) * 5 + 8)/ 9;
+ return QString::number(degree) + QChar(176);
+ }
+
+
+#define GET_DATA_ATTR xml.attributes().value("data").toString()
+
+ void digest(const QString &data) {
+
+ QColor textColor = palette().color(QPalette::WindowText);
+ QString unitSystem;
+
+ delete m_iconItem;
+ m_iconItem = new QGraphicsSvgItem();
+ m_scene.addItem(m_iconItem);
+ m_iconItem->setParentItem(m_statusItem);
+ qDeleteAll(m_dayItems);
+ qDeleteAll(m_conditionItems);
+ qDeleteAll(m_rangeItems);
+ qDeleteAll(m_forecastItems);
+ m_dayItems.clear();
+ m_conditionItems.clear();
+ m_rangeItems.clear();
+ m_forecastItems.clear();
+
+ QXmlStreamReader xml(data);
+ while (!xml.atEnd()) {
+ xml.readNext();
+ if (xml.tokenType() == QXmlStreamReader::StartElement) {
+ if (xml.name() == "city") {
+ city = GET_DATA_ATTR;
+ setWindowTitle(city);
+ }
+ if (xml.name() == "unit_system")
+ unitSystem = xml.attributes().value("data").toString();
+ // Parse current weather conditions
+ if (xml.name() == "current_conditions") {
+ while (!xml.atEnd()) {
+ xml.readNext();
+ if (xml.name() == "current_conditions")
+ break;
+ if (xml.tokenType() == QXmlStreamReader::StartElement) {
+ if (xml.name() == "condition") {
+ m_conditionItem->setPlainText(GET_DATA_ATTR);
+ }
+ if (xml.name() == "icon") {
+ QString name = extractIcon(GET_DATA_ATTR);
+ if (!name.isEmpty()) {
+ delete m_iconItem;
+ m_iconItem = new QGraphicsSvgItem(name);
+ m_scene.addItem(m_iconItem);
+ m_iconItem->setParentItem(m_statusItem);
+ }
+ }
+ if (xml.name() == "temp_c") {
+ QString s = GET_DATA_ATTR + QChar(176);
+ m_temperatureItem->setPlainText(s);
+ }
+ }
+ }
+ }
+ // Parse and collect the forecast conditions
+ if (xml.name() == "forecast_conditions") {
+ QGraphicsTextItem *dayItem = 0;
+ QGraphicsSvgItem *statusItem = 0;
+ QString lowT, highT;
+ while (!xml.atEnd()) {
+ xml.readNext();
+ if (xml.name() == "forecast_conditions") {
+ if (dayItem && statusItem &&
+ !lowT.isEmpty() && !highT.isEmpty()) {
+ m_dayItems << dayItem;
+ m_conditionItems << statusItem;
+ QString txt = highT + '/' + lowT;
+ QGraphicsTextItem* rangeItem;
+ rangeItem = m_scene.addText(txt);
+ rangeItem->setDefaultTextColor(textColor);
+ m_rangeItems << rangeItem;
+ QGraphicsRectItem *box;
+ box = m_scene.addRect(0, 0, 10, 10);
+ box->setPen(Qt::NoPen);
+ box->setBrush(Qt::NoBrush);
+ m_forecastItems << box;
+ dayItem->setParentItem(box);
+ statusItem->setParentItem(box);
+ rangeItem->setParentItem(box);
+ } else {
+ delete dayItem;
+ delete statusItem;
+ }
+ break;
+ }
+ if (xml.tokenType() == QXmlStreamReader::StartElement) {
+ if (xml.name() == "day_of_week") {
+ QString s = GET_DATA_ATTR;
+ dayItem = m_scene.addText(s.left(3));
+ dayItem->setDefaultTextColor(textColor);
+ }
+ if (xml.name() == "icon") {
+ QString name = extractIcon(GET_DATA_ATTR);
+ if (!name.isEmpty()) {
+ statusItem = new QGraphicsSvgItem(name);
+ m_scene.addItem(statusItem);
+ }
+ }
+ if (xml.name() == "low")
+ lowT = toCelcius(GET_DATA_ATTR, unitSystem);
+ if (xml.name() == "high")
+ highT = toCelcius(GET_DATA_ATTR, unitSystem);
+ }
+ }
+ }
+
+ }
+ }
+
+ m_timeLine.stop();
+ layoutItems();
+ animate(0);
+ m_timeLine.start();
+ }
+
+ void layoutItems() {
+ m_scene.setSceneRect(0, 0, width() - 1, height() - 1);
+ m_view->centerOn(width() / 2, height() / 2);
+ if (width() > height())
+ layoutItemsLandscape();
+ else
+ layoutItemsPortrait();
+ }
+
+ void layoutItemsLandscape() {
+ m_statusItem->setRect(0, 0, width() / 2 - 1, height() - 1);
+
+ if (!m_iconItem->boundingRect().isEmpty()) {
+ qreal dim = qMin(width() * 0.6, height() * 0.8);
+ qreal pad = (height() - dim) / 2;
+ qreal sw = dim / m_iconItem->boundingRect().width();
+ qreal sh = dim / m_iconItem->boundingRect().height();
+ m_iconItem->setTransform(QTransform().scale(sw, sh));
+ m_iconItem->setPos(1, pad);
+ }
+
+ m_temperatureItem->setPos(2, 2);
+ qreal h = m_conditionItem->boundingRect().height();
+ m_conditionItem->setPos(10, height() - h);
+
+ if (m_dayItems.count()) {
+ qreal left = width() * 0.6;
+ qreal h = height() / m_dayItems.count();
+ QFont textFont = font();
+ textFont.setPixelSize(static_cast<int>(h * 0.3));
+ qreal statusWidth = 0;
+ qreal rangeWidth = 0;
+ for (int i = 0; i < m_dayItems.count(); ++i) {
+ m_dayItems[i]->setFont(textFont);
+ QRectF brect = m_dayItems[i]->boundingRect();
+ statusWidth = qMax(statusWidth, brect.width());
+ brect = m_rangeItems[i]->boundingRect();
+ rangeWidth = qMax(rangeWidth, brect.width());
+ }
+ qreal space = width() - left - statusWidth - rangeWidth;
+ qreal dim = qMin(h, space);
+ qreal pad = statusWidth + (space - dim) / 2;
+ for (int i = 0; i < m_dayItems.count(); ++i) {
+ qreal base = h * i;
+ m_forecastItems[i]->setPos(left, base);
+ m_forecastItems[i]->setRect(0, 0, width() - left, h);
+ QRectF brect = m_dayItems[i]->boundingRect();
+ qreal ofs = (h - brect.height()) / 2;
+ m_dayItems[i]->setPos(0, ofs);
+ brect = m_rangeItems[i]->boundingRect();
+ ofs = (h - brect.height()) / 2;
+ m_rangeItems[i]->setPos(width() - rangeWidth - left, ofs);
+ brect = m_conditionItems[i]->boundingRect();
+ ofs = (h - dim) / 2;
+ m_conditionItems[i]->setPos(pad, ofs);
+ if (brect.isEmpty())
+ continue;
+ qreal sw = dim / brect.width();
+ qreal sh = dim / brect.height();
+ m_conditionItems[i]->setTransform(QTransform().scale(sw, sh));
+ }
+ }
+ }
+
+ void layoutItemsPortrait() {
+
+ m_statusItem->setRect(0, 0, width() - 1, height() / 2 - 1);
+
+ if (!m_iconItem->boundingRect().isEmpty()) {
+ qreal dim = qMin(width() * 0.8, height() * 0.4);
+ qreal ofsy = (height() / 2 - dim) / 2;
+ qreal ofsx = (width() - dim) / 3;
+ qreal sw = dim / m_iconItem->boundingRect().width();
+ qreal sh = dim / m_iconItem->boundingRect().height();
+ m_iconItem->setTransform(QTransform().scale(sw, sh));
+ m_iconItem->setPos(ofsx, ofsy);
+ }
+
+ m_temperatureItem->setPos(2, 2);
+ qreal ch = m_conditionItem->boundingRect().height();
+ qreal cw = m_conditionItem->boundingRect().width();
+ m_conditionItem->setPos(width() - cw , height() / 2 - ch - 20);
+
+ if (m_dayItems.count()) {
+ qreal top = height() * 0.5;
+ qreal w = width() / m_dayItems.count();
+ qreal statusHeight = 0;
+ qreal rangeHeight = 0;
+ for (int i = 0; i < m_dayItems.count(); ++i) {
+ m_dayItems[i]->setFont(font());
+ QRectF brect = m_dayItems[i]->boundingRect();
+ statusHeight = qMax(statusHeight, brect.height());
+ brect = m_rangeItems[i]->boundingRect();
+ rangeHeight = qMax(rangeHeight, brect.height());
+ }
+ qreal space = height() - top - statusHeight - rangeHeight;
+ qreal dim = qMin(w, space);
+
+ qreal boxh = statusHeight + rangeHeight + dim;
+ qreal pad = (height() - top - boxh) / 2;
+
+ for (int i = 0; i < m_dayItems.count(); ++i) {
+ qreal base = w * i;
+ m_forecastItems[i]->setPos(base, top);
+ m_forecastItems[i]->setRect(0, 0, w, boxh);
+ QRectF brect = m_dayItems[i]->boundingRect();
+ qreal ofs = (w - brect.width()) / 2;
+ m_dayItems[i]->setPos(ofs, pad);
+
+ brect = m_rangeItems[i]->boundingRect();
+ ofs = (w - brect.width()) / 2;
+ m_rangeItems[i]->setPos(ofs, pad + statusHeight + dim);
+
+ brect = m_conditionItems[i]->boundingRect();
+ ofs = (w - dim) / 2;
+ m_conditionItems[i]->setPos(ofs, pad + statusHeight);
+ if (brect.isEmpty())
+ continue;
+ qreal sw = dim / brect.width();
+ qreal sh = dim / brect.height();
+ m_conditionItems[i]->setTransform(QTransform().scale(sw, sh));
+ }
+ }
+ }
+
+
+ void resizeEvent(QResizeEvent *event) {
+ Q_UNUSED(event);
+ layoutItems();
+ }
+
+};
+
+#include "weatherinfo.moc"
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+
+ WeatherInfo w;
+#if defined(Q_OS_SYMBIAN)
+ w.showMaximized();
+#else
+ w.resize(520, 288);
+ w.show();
+#endif
+
+ return app.exec();
+}
diff --git a/demos/embedded/weatherinfo/weatherinfo.pro b/demos/embedded/weatherinfo/weatherinfo.pro
new file mode 100644
index 000000000..57f168468
--- /dev/null
+++ b/demos/embedded/weatherinfo/weatherinfo.pro
@@ -0,0 +1,18 @@
+TEMPLATE = app
+TARGET = weatherinfo
+SOURCES = weatherinfo.cpp
+RESOURCES = weatherinfo.qrc
+QT += network svg
+
+symbian {
+ TARGET.UID3 = 0xA000CF77
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+ HEADERS += $$QT_SOURCE_TREE/examples/network/qftp/sym_iap_util.h
+ LIBS += -lesock -lconnmon -linsock
+ TARGET.CAPABILITY = NetworkServices
+}
+
+target.path = $$[QT_INSTALL_DEMOS]/embedded/weatherinfo
+sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro
+sources.path = $$[QT_INSTALL_DEMOS]/embedded/weatherinfo
+INSTALLS += target sources
diff --git a/demos/embedded/weatherinfo/weatherinfo.qrc b/demos/embedded/weatherinfo/weatherinfo.qrc
new file mode 100644
index 000000000..6e9d22435
--- /dev/null
+++ b/demos/embedded/weatherinfo/weatherinfo.qrc
@@ -0,0 +1,16 @@
+<RCC>
+ <qresource prefix="/" >
+ <file>icons/weather-few-clouds.svg</file>
+ <file>icons/weather-fog.svg</file>
+ <file>icons/weather-haze.svg</file>
+ <file>icons/weather-icy.svg</file>
+ <file>icons/weather-overcast.svg</file>
+ <file>icons/weather-showers.svg</file>
+ <file>icons/weather-sleet.svg</file>
+ <file>icons/weather-snow.svg</file>
+ <file>icons/weather-storm.svg</file>
+ <file>icons/weather-sunny.svg</file>
+ <file>icons/weather-sunny-very-few-clouds.svg</file>
+ <file>icons/weather-thundershower.svg</file>
+ </qresource>
+</RCC>
diff --git a/demos/embeddeddialogs/customproxy.cpp b/demos/embeddeddialogs/customproxy.cpp
index 7d32e4007..10c09c972 100644
--- a/demos/embeddeddialogs/customproxy.cpp
+++ b/demos/embeddeddialogs/customproxy.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/embeddeddialogs/customproxy.h b/demos/embeddeddialogs/customproxy.h
index 5e14b0c8c..73d598952 100644
--- a/demos/embeddeddialogs/customproxy.h
+++ b/demos/embeddeddialogs/customproxy.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/embeddeddialogs/embeddeddialog.cpp b/demos/embeddeddialogs/embeddeddialog.cpp
index 9723a68ec..19ea6cb46 100644
--- a/demos/embeddeddialogs/embeddeddialog.cpp
+++ b/demos/embeddeddialogs/embeddeddialog.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -61,8 +61,8 @@ EmbeddedDialog::EmbeddedDialog(QWidget *parent)
this, SLOT(layoutDirectionChanged(int)));
connect(ui->spacing, SIGNAL(valueChanged(int)),
this, SLOT(spacingChanged(int)));
- connect(ui->fontComboBox, SIGNAL(currentFontChanged(const QFont &)),
- this, SLOT(fontChanged(const QFont &)));
+ connect(ui->fontComboBox, SIGNAL(currentFontChanged(QFont)),
+ this, SLOT(fontChanged(QFont)));
connect(ui->style, SIGNAL(activated(QString)),
this, SLOT(styleChanged(QString)));
}
diff --git a/demos/embeddeddialogs/embeddeddialog.h b/demos/embeddeddialogs/embeddeddialog.h
index 8f09d5aa9..5bf6c1c53 100644
--- a/demos/embeddeddialogs/embeddeddialog.h
+++ b/demos/embeddeddialogs/embeddeddialog.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/embeddeddialogs/embeddeddialogs.pro b/demos/embeddeddialogs/embeddeddialogs.pro
index a38e3e8f9..d3ef44286 100644
--- a/demos/embeddeddialogs/embeddeddialogs.pro
+++ b/demos/embeddeddialogs/embeddeddialogs.pro
@@ -15,3 +15,5 @@ target.path = $$[QT_INSTALL_DEMOS]/embeddeddialogs
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.png *.jpg *.plist *.icns *.ico *.rc *.pro *.html *.doc images
sources.path = $$[QT_INSTALL_DEMOS]/embeddeddialogs
INSTALLS += target sources
+
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/demos/embeddeddialogs/main.cpp b/demos/embeddeddialogs/main.cpp
index 4cbbffd37..d76824a9f 100644
--- a/demos/embeddeddialogs/main.cpp
+++ b/demos/embeddeddialogs/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/gradients/gradients.cpp b/demos/gradients/gradients.cpp
index d8c57be92..898c191f2 100644
--- a/demos/gradients/gradients.cpp
+++ b/demos/gradients/gradients.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -78,7 +78,7 @@ ShadeWidget::ShadeWidget(ShadeType type, QWidget *parent)
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
- connect(m_hoverPoints, SIGNAL(pointsChanged(const QPolygonF &)), this, SIGNAL(colorsChanged()));
+ connect(m_hoverPoints, SIGNAL(pointsChanged(QPolygonF)), this, SIGNAL(colorsChanged()));
}
@@ -355,8 +355,8 @@ GradientWidget::GradientWidget(QWidget *parent)
defaultsGroupLayout->addWidget(default3Button);
editorGroupLayout->addWidget(default4Button);
- connect(m_editor, SIGNAL(gradientStopsChanged(const QGradientStops &)),
- m_renderer, SLOT(setGradientStops(const QGradientStops &)));
+ connect(m_editor, SIGNAL(gradientStopsChanged(QGradientStops)),
+ m_renderer, SLOT(setGradientStops(QGradientStops)));
connect(m_linearButton, SIGNAL(clicked()), m_renderer, SLOT(setLinearGradient()));
connect(m_radialButton, SIGNAL(clicked()), m_renderer, SLOT(setRadialGradient()));
diff --git a/demos/gradients/gradients.h b/demos/gradients/gradients.h
index 891eb6372..354c27a63 100644
--- a/demos/gradients/gradients.h
+++ b/demos/gradients/gradients.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/gradients/gradients.pro b/demos/gradients/gradients.pro
index 167572bd4..21cd57d10 100644
--- a/demos/gradients/gradients.pro
+++ b/demos/gradients/gradients.pro
@@ -16,3 +16,5 @@ target.path = $$[QT_INSTALL_DEMOS]/gradients
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.html
sources.path = $$[QT_INSTALL_DEMOS]/gradients
INSTALLS += target sources
+
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/demos/gradients/main.cpp b/demos/gradients/main.cpp
index 34200a97a..c70cdb747 100644
--- a/demos/gradients/main.cpp
+++ b/demos/gradients/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,8 +53,10 @@ int main(int argc, char **argv)
QStyle *arthurStyle = new ArthurStyle();
gradientWidget.setStyle(arthurStyle);
QList<QWidget *> widgets = qFindChildren<QWidget *>(&gradientWidget);
- foreach (QWidget *w, widgets)
+ foreach (QWidget *w, widgets) {
w->setStyle(arthurStyle);
+ w->setAttribute(Qt::WA_AcceptTouchEvents);
+ }
gradientWidget.show();
return app.exec();
diff --git a/demos/interview/interview.pro b/demos/interview/interview.pro
index c01375520..1e5f9b817 100644
--- a/demos/interview/interview.pro
+++ b/demos/interview/interview.pro
@@ -16,3 +16,4 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES README *.pro images
sources.path = $$[QT_INSTALL_DEMOS]/interview
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/demos/interview/main.cpp b/demos/interview/main.cpp
index f84a2ccab..f851abf41 100644
--- a/demos/interview/main.cpp
+++ b/demos/interview/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/interview/model.cpp b/demos/interview/model.cpp
index fbd3e71b1..645378f4e 100644
--- a/demos/interview/model.cpp
+++ b/demos/interview/model.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/interview/model.h b/demos/interview/model.h
index 7660a8eb0..2d8b01ebd 100644
--- a/demos/interview/model.h
+++ b/demos/interview/model.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/macmainwindow/macmainwindow.h b/demos/macmainwindow/macmainwindow.h
index 9088a46ee..417fb27b3 100644
--- a/demos/macmainwindow/macmainwindow.h
+++ b/demos/macmainwindow/macmainwindow.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/macmainwindow/macmainwindow.mm b/demos/macmainwindow/macmainwindow.mm
index e3d493205..91b1531cb 100644
--- a/demos/macmainwindow/macmainwindow.mm
+++ b/demos/macmainwindow/macmainwindow.mm
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/macmainwindow/main.cpp b/demos/macmainwindow/main.cpp
index 5df2587bf..5d2add1a9 100644
--- a/demos/macmainwindow/main.cpp
+++ b/demos/macmainwindow/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/mainwindow/colorswatch.cpp b/demos/mainwindow/colorswatch.cpp
index fdabd1f5e..30cf779e8 100644
--- a/demos/mainwindow/colorswatch.cpp
+++ b/demos/mainwindow/colorswatch.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/mainwindow/colorswatch.h b/demos/mainwindow/colorswatch.h
index 9f857f208..a4c79e200 100644
--- a/demos/mainwindow/colorswatch.h
+++ b/demos/mainwindow/colorswatch.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/mainwindow/main.cpp b/demos/mainwindow/main.cpp
index 48a3bd9f8..b04d7ea6f 100644
--- a/demos/mainwindow/main.cpp
+++ b/demos/mainwindow/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/mainwindow/mainwindow.cpp b/demos/mainwindow/mainwindow.cpp
index 88910e137..162d0490e 100644
--- a/demos/mainwindow/mainwindow.cpp
+++ b/demos/mainwindow/mainwindow.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/mainwindow/mainwindow.h b/demos/mainwindow/mainwindow.h
index 6c1f7958a..f07c8c59b 100644
--- a/demos/mainwindow/mainwindow.h
+++ b/demos/mainwindow/mainwindow.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/mainwindow/mainwindow.pro b/demos/mainwindow/mainwindow.pro
index 9853a55a4..8e9bdc271 100644
--- a/demos/mainwindow/mainwindow.pro
+++ b/demos/mainwindow/mainwindow.pro
@@ -14,3 +14,4 @@ sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.png *.jpg *.pro
sources.path = $$[QT_INSTALL_DEMOS]/mainwindow
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/demos/mainwindow/toolbar.cpp b/demos/mainwindow/toolbar.cpp
index d3f3e60f2..72c04be82 100644
--- a/demos/mainwindow/toolbar.cpp
+++ b/demos/mainwindow/toolbar.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/mainwindow/toolbar.h b/demos/mainwindow/toolbar.h
index 263fde0b9..4d678ccaf 100644
--- a/demos/mainwindow/toolbar.h
+++ b/demos/mainwindow/toolbar.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/mediaplayer/main.cpp b/demos/mediaplayer/main.cpp
deleted file mode 100644
index 8a6d71e68..000000000
--- a/demos/mediaplayer/main.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-***************************************************************************/
-
-#include <QtGui>
-#include "mediaplayer.h"
-
-int main (int argc, char *argv[])
-{
- Q_INIT_RESOURCE(mediaplayer);
- QApplication app(argc, argv);
- app.setApplicationName("Media Player");
- app.setOrganizationName("Qt");
- app.setQuitOnLastWindowClosed(true);
-
- QString fileString = app.arguments().value(1);
- MediaPlayer player(fileString);
- player.show();
-
- return app.exec();
-}
-
diff --git a/demos/mediaplayer/mediaplayer.cpp b/demos/mediaplayer/mediaplayer.cpp
deleted file mode 100644
index 5a69e4f0a..000000000
--- a/demos/mediaplayer/mediaplayer.cpp
+++ /dev/null
@@ -1,840 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-***************************************************************************/
-
-#include <QtGui>
-
-#define SLIDER_RANGE 8
-
-#include "mediaplayer.h"
-#include "ui_settings.h"
-
-
-class MediaVideoWidget : public Phonon::VideoWidget
-{
-public:
- MediaVideoWidget(MediaPlayer *player, QWidget *parent = 0) :
- Phonon::VideoWidget(parent), m_player(player), m_action(this)
- {
- m_action.setCheckable(true);
- m_action.setChecked(false);
- m_action.setShortcut(QKeySequence( Qt::AltModifier + Qt::Key_Return));
- m_action.setShortcutContext(Qt::WindowShortcut);
- connect(&m_action, SIGNAL(toggled(bool)), SLOT(setFullScreen(bool)));
- addAction(&m_action);
- setAcceptDrops(true);
- }
-
-protected:
- void mouseDoubleClickEvent(QMouseEvent *e)
- {
- Phonon::VideoWidget::mouseDoubleClickEvent(e);
- setFullScreen(!isFullScreen());
- }
-
- void keyPressEvent(QKeyEvent *e)
- {
- if (e->key() == Qt::Key_Space && !e->modifiers()) {
- m_player->playPause();
- e->accept();
- return;
- } else if (e->key() == Qt::Key_Escape && !e->modifiers()) {
- setFullScreen(false);
- e->accept();
- return;
- }
- Phonon::VideoWidget::keyPressEvent(e);
- }
-
- bool event(QEvent *e)
- {
- switch(e->type())
- {
- case QEvent::Close:
- //we just ignore the cose events on the video widget
- //this prevents ALT+F4 from having an effect in fullscreen mode
- e->ignore();
- return true;
- case QEvent::MouseMove:
-#ifndef QT_NO_CURSOR
- unsetCursor();
-#endif
- //fall through
- case QEvent::WindowStateChange:
- {
- //we just update the state of the checkbox, in case it wasn't already
- m_action.setChecked(windowState() & Qt::WindowFullScreen);
- const Qt::WindowFlags flags = m_player->windowFlags();
- if (windowState() & Qt::WindowFullScreen) {
- m_timer.start(1000, this);
- } else {
- m_timer.stop();
-#ifndef QT_NO_CURSOR
- unsetCursor();
-#endif
- }
- }
- break;
- default:
- break;
- }
-
- return Phonon::VideoWidget::event(e);
- }
-
- void timerEvent(QTimerEvent *e)
- {
- if (e->timerId() == m_timer.timerId()) {
- //let's store the cursor shape
-#ifndef QT_NO_CURSOR
- setCursor(Qt::BlankCursor);
-#endif
- }
- Phonon::VideoWidget::timerEvent(e);
- }
-
- void dropEvent(QDropEvent *e)
- {
- m_player->handleDrop(e);
- }
-
- void dragEnterEvent(QDragEnterEvent *e) {
- if (e->mimeData()->hasUrls())
- e->acceptProposedAction();
- }
-
-private:
- MediaPlayer *m_player;
- QBasicTimer m_timer;
- QAction m_action;
-};
-
-
-MediaPlayer::MediaPlayer(const QString &filePath) :
- playButton(0), nextEffect(0), settingsDialog(0), ui(0),
- m_AudioOutput(Phonon::VideoCategory),
- m_videoWidget(new MediaVideoWidget(this))
-{
- setWindowTitle(tr("Media Player"));
- setContextMenuPolicy(Qt::CustomContextMenu);
- m_videoWidget->setContextMenuPolicy(Qt::CustomContextMenu);
-
- QSize buttonSize(34, 28);
-
- QPushButton *openButton = new QPushButton(this);
-
- openButton->setIcon(style()->standardIcon(QStyle::SP_DialogOpenButton));
- QPalette bpal;
- QColor arrowcolor = bpal.buttonText().color();
- if (arrowcolor == Qt::black)
- arrowcolor = QColor(80, 80, 80);
- bpal.setBrush(QPalette::ButtonText, arrowcolor);
- openButton->setPalette(bpal);
-
- rewindButton = new QPushButton(this);
- rewindButton->setIcon(style()->standardIcon(QStyle::SP_MediaSkipBackward));
-
- forwardButton = new QPushButton(this);
- forwardButton->setIcon(style()->standardIcon(QStyle::SP_MediaSkipForward));
- forwardButton->setEnabled(false);
-
- playButton = new QPushButton(this);
- playIcon = style()->standardIcon(QStyle::SP_MediaPlay);
- pauseIcon = style()->standardIcon(QStyle::SP_MediaPause);
- playButton->setIcon(playIcon);
-
- slider = new Phonon::SeekSlider(this);
- slider->setMediaObject(&m_MediaObject);
- volume = new Phonon::VolumeSlider(&m_AudioOutput);
-
- QVBoxLayout *vLayout = new QVBoxLayout(this);
- vLayout->setContentsMargins(8, 8, 8, 8);
-
- QHBoxLayout *layout = new QHBoxLayout();
-
- info = new QLabel(this);
- info->setMinimumHeight(70);
- info->setAcceptDrops(false);
- info->setMargin(2);
- info->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
- info->setLineWidth(2);
- info->setAutoFillBackground(true);
-
- QPalette palette;
- palette.setBrush(QPalette::WindowText, Qt::white);
-#ifndef Q_WS_MAC
- openButton->setMinimumSize(54, buttonSize.height());
- rewindButton->setMinimumSize(buttonSize);
- forwardButton->setMinimumSize(buttonSize);
- playButton->setMinimumSize(buttonSize);
-#endif
- info->setStyleSheet("border-image:url(:/images/screen.png) ; border-width:3px");
- info->setPalette(palette);
- info->setText(tr("<center>No media</center>"));
-
- volume->setFixedWidth(120);
-
- layout->addWidget(openButton);
- layout->addWidget(rewindButton);
- layout->addWidget(playButton);
- layout->addWidget(forwardButton);
-
- layout->addStretch();
- layout->addWidget(volume);
-
- vLayout->addWidget(info);
- initVideoWindow();
- vLayout->addWidget(&m_videoWindow);
- QVBoxLayout *buttonPanelLayout = new QVBoxLayout();
- m_videoWindow.hide();
- buttonPanelLayout->addLayout(layout);
-
- timeLabel = new QLabel(this);
- progressLabel = new QLabel(this);
- QWidget *sliderPanel = new QWidget(this);
- QHBoxLayout *sliderLayout = new QHBoxLayout();
- sliderLayout->addWidget(slider);
- sliderLayout->addWidget(timeLabel);
- sliderLayout->addWidget(progressLabel);
- sliderLayout->setContentsMargins(0, 0, 0, 0);
- sliderPanel->setLayout(sliderLayout);
-
- buttonPanelLayout->addWidget(sliderPanel);
- buttonPanelLayout->setContentsMargins(0, 0, 0, 0);
-#ifdef Q_OS_MAC
- layout->setSpacing(4);
- buttonPanelLayout->setSpacing(0);
- info->setMinimumHeight(100);
- info->setFont(QFont("verdana", 15));
- // QStyle *flatButtonStyle = new QWindowsStyle;
- openButton->setFocusPolicy(Qt::NoFocus);
- // openButton->setStyle(flatButtonStyle);
- // playButton->setStyle(flatButtonStyle);
- // rewindButton->setStyle(flatButtonStyle);
- // forwardButton->setStyle(flatButtonStyle);
- #endif
- QWidget *buttonPanelWidget = new QWidget(this);
- buttonPanelWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
- buttonPanelWidget->setLayout(buttonPanelLayout);
- vLayout->addWidget(buttonPanelWidget);
-
- QHBoxLayout *labelLayout = new QHBoxLayout();
-
- vLayout->addLayout(labelLayout);
- setLayout(vLayout);
-
- // Create menu bar:
- fileMenu = new QMenu(this);
- QAction *openFileAction = fileMenu->addAction(tr("Open &File..."));
- QAction *openUrlAction = fileMenu->addAction(tr("Open &Location..."));
-
- fileMenu->addSeparator();
- QMenu *aspectMenu = fileMenu->addMenu(tr("&Aspect ratio"));
- QActionGroup *aspectGroup = new QActionGroup(aspectMenu);
- connect(aspectGroup, SIGNAL(triggered(QAction *)), this, SLOT(aspectChanged(QAction *)));
- aspectGroup->setExclusive(true);
- QAction *aspectActionAuto = aspectMenu->addAction(tr("Auto"));
- aspectActionAuto->setCheckable(true);
- aspectActionAuto->setChecked(true);
- aspectGroup->addAction(aspectActionAuto);
- QAction *aspectActionScale = aspectMenu->addAction(tr("Scale"));
- aspectActionScale->setCheckable(true);
- aspectGroup->addAction(aspectActionScale);
- QAction *aspectAction16_9 = aspectMenu->addAction(tr("16/9"));
- aspectAction16_9->setCheckable(true);
- aspectGroup->addAction(aspectAction16_9);
- QAction *aspectAction4_3 = aspectMenu->addAction(tr("4/3"));
- aspectAction4_3->setCheckable(true);
- aspectGroup->addAction(aspectAction4_3);
-
- QMenu *scaleMenu = fileMenu->addMenu(tr("&Scale mode"));
- QActionGroup *scaleGroup = new QActionGroup(scaleMenu);
- connect(scaleGroup, SIGNAL(triggered(QAction *)), this, SLOT(scaleChanged(QAction *)));
- scaleGroup->setExclusive(true);
- QAction *scaleActionFit = scaleMenu->addAction(tr("Fit in view"));
- scaleActionFit->setCheckable(true);
- scaleActionFit->setChecked(true);
- scaleGroup->addAction(scaleActionFit);
- QAction *scaleActionCrop = scaleMenu->addAction(tr("Scale and crop"));
- scaleActionCrop->setCheckable(true);
- scaleGroup->addAction(scaleActionCrop);
-
- fileMenu->addSeparator();
- QAction *settingsAction = fileMenu->addAction(tr("&Settings..."));
-
- // Setup signal connections:
- connect(rewindButton, SIGNAL(clicked()), this, SLOT(rewind()));
- //connect(openButton, SIGNAL(clicked()), this, SLOT(openFile()));
- openButton->setMenu(fileMenu);
-
- connect(playButton, SIGNAL(clicked()), this, SLOT(playPause()));
- connect(forwardButton, SIGNAL(clicked()), this, SLOT(forward()));
- //connect(openButton, SIGNAL(clicked()), this, SLOT(openFile()));
- connect(settingsAction, SIGNAL(triggered(bool)), this, SLOT(showSettingsDialog()));
- connect(openUrlAction, SIGNAL(triggered(bool)), this, SLOT(openUrl()));
- connect(openFileAction, SIGNAL(triggered(bool)), this, SLOT(openFile()));
-
- connect(m_videoWidget, SIGNAL(customContextMenuRequested(const QPoint &)), SLOT(showContextMenu(const QPoint &)));
- connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), SLOT(showContextMenu(const QPoint &)));
- connect(&m_MediaObject, SIGNAL(metaDataChanged()), this, SLOT(updateInfo()));
- connect(&m_MediaObject, SIGNAL(totalTimeChanged(qint64)), this, SLOT(updateTime()));
- connect(&m_MediaObject, SIGNAL(tick(qint64)), this, SLOT(updateTime()));
- connect(&m_MediaObject, SIGNAL(finished()), this, SLOT(finished()));
- connect(&m_MediaObject, SIGNAL(stateChanged(Phonon::State, Phonon::State)), this, SLOT(stateChanged(Phonon::State, Phonon::State)));
- connect(&m_MediaObject, SIGNAL(bufferStatus(int)), this, SLOT(bufferStatus(int)));
-
- rewindButton->setEnabled(false);
- playButton->setEnabled(false);
- setAcceptDrops(true);
-
- m_audioOutputPath = Phonon::createPath(&m_MediaObject, &m_AudioOutput);
- Phonon::createPath(&m_MediaObject, m_videoWidget);
-
- if (!filePath.isEmpty())
- setFile(filePath);
- resize(minimumSizeHint());
-}
-
-void MediaPlayer::stateChanged(Phonon::State newstate, Phonon::State oldstate)
-{
- Q_UNUSED(oldstate);
-
- if (oldstate == Phonon::LoadingState) {
- m_videoWindow.setVisible(m_MediaObject.hasVideo());
- info->setVisible(!m_MediaObject.hasVideo());
- QRect videoHintRect = QRect(QPoint(0, 0), m_videoWindow.sizeHint());
- QRect newVideoRect = QApplication::desktop()->screenGeometry().intersected(videoHintRect);
- if (m_MediaObject.hasVideo()){
- // Flush event que so that sizeHint takes the
- // recently shown/hidden m_videoWindow into account:
- qApp->processEvents();
- resize(sizeHint());
- } else
- resize(minimumSize());
- }
-
- switch (newstate) {
- case Phonon::ErrorState:
- QMessageBox::warning(this, "Phonon Mediaplayer", m_MediaObject.errorString(), QMessageBox::Close);
- if (m_MediaObject.errorType() == Phonon::FatalError) {
- playButton->setEnabled(false);
- rewindButton->setEnabled(false);
- } else {
- m_MediaObject.pause();
- }
- break;
- case Phonon::PausedState:
- case Phonon::StoppedState:
- playButton->setIcon(playIcon);
- if (m_MediaObject.currentSource().type() != Phonon::MediaSource::Invalid){
- playButton->setEnabled(true);
- rewindButton->setEnabled(true);
- } else {
- playButton->setEnabled(false);
- rewindButton->setEnabled(false);
- }
- break;
- case Phonon::PlayingState:
- playButton->setEnabled(true);
- playButton->setIcon(pauseIcon);
- if (m_MediaObject.hasVideo())
- m_videoWindow.show();
- // Fall through
- case Phonon::BufferingState:
- rewindButton->setEnabled(true);
- break;
- case Phonon::LoadingState:
- rewindButton->setEnabled(false);
- break;
- }
-
-}
-
-void MediaPlayer::initSettingsDialog()
-{
- settingsDialog = new QDialog(this);
- ui = new Ui_settings();
- ui->setupUi(settingsDialog);
-
- connect(ui->brightnessSlider, SIGNAL(valueChanged(int)), this, SLOT(setBrightness(int)));
- connect(ui->hueSlider, SIGNAL(valueChanged(int)), this, SLOT(setHue(int)));
- connect(ui->saturationSlider, SIGNAL(valueChanged(int)), this, SLOT(setSaturation(int)));
- connect(ui->contrastSlider , SIGNAL(valueChanged(int)), this, SLOT(setContrast(int)));
- connect(ui->aspectCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(setAspect(int)));
- connect(ui->scalemodeCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(setScale(int)));
-
- ui->brightnessSlider->setValue(int(m_videoWidget->brightness() * SLIDER_RANGE));
- ui->hueSlider->setValue(int(m_videoWidget->hue() * SLIDER_RANGE));
- ui->saturationSlider->setValue(int(m_videoWidget->saturation() * SLIDER_RANGE));
- ui->contrastSlider->setValue(int(m_videoWidget->contrast() * SLIDER_RANGE));
- ui->aspectCombo->setCurrentIndex(m_videoWidget->aspectRatio());
- ui->scalemodeCombo->setCurrentIndex(m_videoWidget->scaleMode());
- connect(ui->effectButton, SIGNAL(clicked()), this, SLOT(configureEffect()));
-
-#ifdef Q_WS_X11
- //Cross fading is not currently implemented in the GStreamer backend
- ui->crossFadeSlider->setVisible(false);
- ui->crossFadeLabel->setVisible(false);
- ui->crossFadeLabel1->setVisible(false);
- ui->crossFadeLabel2->setVisible(false);
- ui->crossFadeLabel3->setVisible(false);
-#endif
- ui->crossFadeSlider->setValue((int)(2 * m_MediaObject.transitionTime() / 1000.0f));
-
- // Insert audio devices:
- QList<Phonon::AudioOutputDevice> devices = Phonon::BackendCapabilities::availableAudioOutputDevices();
- for (int i=0; i<devices.size(); i++){
- QString itemText = devices[i].name();
- if (!devices[i].description().isEmpty()) {
- itemText += QString::fromLatin1(" (%1)").arg(devices[i].description());
- }
- ui->deviceCombo->addItem(itemText);
- if (devices[i] == m_AudioOutput.outputDevice())
- ui->deviceCombo->setCurrentIndex(i);
- }
-
- // Insert audio effects:
- ui->audioEffectsCombo->addItem(tr("<no effect>"));
- QList<Phonon::Effect *> currEffects = m_audioOutputPath.effects();
- Phonon::Effect *currEffect = currEffects.size() ? currEffects[0] : 0;
- QList<Phonon::EffectDescription> availableEffects = Phonon::BackendCapabilities::availableAudioEffects();
- for (int i=0; i<availableEffects.size(); i++){
- ui->audioEffectsCombo->addItem(availableEffects[i].name());
- if (currEffect && availableEffects[i] == currEffect->description())
- ui->audioEffectsCombo->setCurrentIndex(i+1);
- }
- connect(ui->audioEffectsCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(effectChanged()));
-
-}
-
-void MediaPlayer::effectChanged()
-{
- int currentIndex = ui->audioEffectsCombo->currentIndex();
- if (currentIndex) {
- QList<Phonon::EffectDescription> availableEffects = Phonon::BackendCapabilities::availableAudioEffects();
- Phonon::EffectDescription chosenEffect = availableEffects[currentIndex - 1];
-
- QList<Phonon::Effect *> currEffects = m_audioOutputPath.effects();
- Phonon::Effect *currentEffect = currEffects.size() ? currEffects[0] : 0;
-
- // Deleting the running effect will stop playback, it is deleted when removed from path
- if (nextEffect && !(currentEffect && (currentEffect->description().name() == nextEffect->description().name())))
- delete nextEffect;
-
- nextEffect = new Phonon::Effect(chosenEffect);
- }
- ui->effectButton->setEnabled(currentIndex);
-}
-
-void MediaPlayer::showSettingsDialog()
-{
- if (!settingsDialog)
- initSettingsDialog();
-
- float oldBrightness = m_videoWidget->brightness();
- float oldHue = m_videoWidget->hue();
- float oldSaturation = m_videoWidget->saturation();
- float oldContrast = m_videoWidget->contrast();
- Phonon::VideoWidget::AspectRatio oldAspect = m_videoWidget->aspectRatio();
- Phonon::VideoWidget::ScaleMode oldScale = m_videoWidget->scaleMode();
- int currentEffect = ui->audioEffectsCombo->currentIndex();
- settingsDialog->exec();
-
- if (settingsDialog->result() == QDialog::Accepted){
- m_MediaObject.setTransitionTime((int)(1000 * float(ui->crossFadeSlider->value()) / 2.0f));
- QList<Phonon::AudioOutputDevice> devices = Phonon::BackendCapabilities::availableAudioOutputDevices();
- m_AudioOutput.setOutputDevice(devices[ui->deviceCombo->currentIndex()]);
- QList<Phonon::Effect *> currEffects = m_audioOutputPath.effects();
- QList<Phonon::EffectDescription> availableEffects = Phonon::BackendCapabilities::availableAudioEffects();
-
- if (ui->audioEffectsCombo->currentIndex() > 0){
- Phonon::Effect *currentEffect = currEffects.size() ? currEffects[0] : 0;
- if (!currentEffect || currentEffect->description() != nextEffect->description()){
- foreach(Phonon::Effect *effect, currEffects) {
- m_audioOutputPath.removeEffect(effect);
- delete effect;
- }
- m_audioOutputPath.insertEffect(nextEffect);
- }
- } else {
- foreach(Phonon::Effect *effect, currEffects) {
- m_audioOutputPath.removeEffect(effect);
- delete effect;
- nextEffect = 0;
- }
- }
- } else {
- // Restore previous settings
- m_videoWidget->setBrightness(oldBrightness);
- m_videoWidget->setSaturation(oldSaturation);
- m_videoWidget->setHue(oldHue);
- m_videoWidget->setContrast(oldContrast);
- m_videoWidget->setAspectRatio(oldAspect);
- m_videoWidget->setScaleMode(oldScale);
- ui->audioEffectsCombo->setCurrentIndex(currentEffect);
- }
-}
-
-void MediaPlayer::initVideoWindow()
-{
- QVBoxLayout *videoLayout = new QVBoxLayout();
- videoLayout->addWidget(m_videoWidget);
- videoLayout->setContentsMargins(0, 0, 0, 0);
- m_videoWindow.setLayout(videoLayout);
- m_videoWindow.setMinimumSize(100, 100);
-}
-
-
-void MediaPlayer::configureEffect()
-{
- if (!nextEffect)
- return;
-
-
- QList<Phonon::Effect *> currEffects = m_audioOutputPath.effects();
- const QList<Phonon::EffectDescription> availableEffects = Phonon::BackendCapabilities::availableAudioEffects();
- if (ui->audioEffectsCombo->currentIndex() > 0) {
- Phonon::EffectDescription chosenEffect = availableEffects[ui->audioEffectsCombo->currentIndex() - 1];
-
- QDialog effectDialog;
- effectDialog.setWindowTitle(tr("Configure effect"));
- QVBoxLayout *topLayout = new QVBoxLayout(&effectDialog);
-
- QLabel *description = new QLabel("<b>Description:</b><br>" + chosenEffect.description(), &effectDialog);
- description->setWordWrap(true);
- topLayout->addWidget(description);
-
- QScrollArea *scrollArea = new QScrollArea(&effectDialog);
- topLayout->addWidget(scrollArea);
-
- QVariantList savedParamValues;
- foreach(Phonon::EffectParameter param, nextEffect->parameters()) {
- savedParamValues << nextEffect->parameterValue(param);
- }
-
- QWidget *scrollWidget = new Phonon::EffectWidget(nextEffect);
- scrollWidget->setMinimumWidth(320);
- scrollWidget->setContentsMargins(10, 10, 10,10);
- scrollArea->setWidget(scrollWidget);
-
- QDialogButtonBox *bbox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, &effectDialog);
- connect(bbox->button(QDialogButtonBox::Ok), SIGNAL(clicked()), &effectDialog, SLOT(accept()));
- connect(bbox->button(QDialogButtonBox::Cancel), SIGNAL(clicked()), &effectDialog, SLOT(reject()));
- topLayout->addWidget(bbox);
-
- effectDialog.exec();
-
- if (effectDialog.result() != QDialog::Accepted) {
- //we need to restore the paramaters values
- int currentIndex = 0;
- foreach(Phonon::EffectParameter param, nextEffect->parameters()) {
- nextEffect->setParameterValue(param, savedParamValues.at(currentIndex++));
- }
-
- }
- }
-}
-
-void MediaPlayer::handleDrop(QDropEvent *e)
-{
- QList<QUrl> urls = e->mimeData()->urls();
- if (e->proposedAction() == Qt::MoveAction){
- // Just add to the queue:
- for (int i=0; i<urls.size(); i++)
- m_MediaObject.enqueue(Phonon::MediaSource(urls[i].toLocalFile()));
- } else {
- // Create new queue:
- m_MediaObject.clearQueue();
- if (urls.size() > 0) {
- QString fileName = urls[0].toLocalFile();
- QDir dir(fileName);
- if (dir.exists()) {
- dir.setFilter(QDir::Files);
- QStringList entries = dir.entryList();
- if (entries.size() > 0) {
- setFile(fileName + QDir::separator() + entries[0]);
- for (int i=1; i< entries.size(); ++i)
- m_MediaObject.enqueue(fileName + QDir::separator() + entries[i]);
- }
- } else {
- setFile(fileName);
- for (int i=1; i<urls.size(); i++)
- m_MediaObject.enqueue(Phonon::MediaSource(urls[i].toLocalFile()));
- }
- }
- }
- forwardButton->setEnabled(m_MediaObject.queue().size() > 0);
- m_MediaObject.play();
-}
-
-void MediaPlayer::dropEvent(QDropEvent *e)
-{
- if (e->mimeData()->hasUrls() && e->proposedAction() != Qt::LinkAction) {
- e->acceptProposedAction();
- handleDrop(e);
- } else {
- e->ignore();
- }
-}
-
-void MediaPlayer::dragEnterEvent(QDragEnterEvent *e)
-{
- dragMoveEvent(e);
-}
-
-void MediaPlayer::dragMoveEvent(QDragMoveEvent *e)
-{
- if (e->mimeData()->hasUrls()) {
- if (e->proposedAction() == Qt::CopyAction || e->proposedAction() == Qt::MoveAction){
- e->acceptProposedAction();
- }
- }
-}
-
-void MediaPlayer::playPause()
-{
- if (m_MediaObject.state() == Phonon::PlayingState)
- m_MediaObject.pause();
- else {
- if (m_MediaObject.currentTime() == m_MediaObject.totalTime())
- m_MediaObject.seek(0);
- m_MediaObject.play();
- }
-}
-
-void MediaPlayer::setFile(const QString &fileName)
-{
- setWindowTitle(fileName.right(fileName.length() - fileName.lastIndexOf('/') - 1));
- m_MediaObject.setCurrentSource(Phonon::MediaSource(fileName));
- m_MediaObject.play();
-}
-
-void MediaPlayer::openFile()
-{
- QStringList fileNames = QFileDialog::getOpenFileNames(this);
- m_MediaObject.clearQueue();
- if (fileNames.size() > 0) {
- QString fileName = fileNames[0];
- setFile(fileName);
- for (int i=1; i<fileNames.size(); i++)
- m_MediaObject.enqueue(Phonon::MediaSource(fileNames[i]));
- }
- forwardButton->setEnabled(m_MediaObject.queue().size() > 0);
-}
-
-void MediaPlayer::bufferStatus(int percent)
-{
- if (percent == 0 || percent == 100)
- progressLabel->setText(QString());
- else {
- QString str = QString::fromLatin1("(%1%)").arg(percent);
- progressLabel->setText(str);
- }
-}
-
-void MediaPlayer::setSaturation(int val)
-{
- m_videoWidget->setSaturation(val / qreal(SLIDER_RANGE));
-}
-
-void MediaPlayer::setHue(int val)
-{
- m_videoWidget->setHue(val / qreal(SLIDER_RANGE));
-}
-
-void MediaPlayer::setAspect(int val)
-{
- m_videoWidget->setAspectRatio(Phonon::VideoWidget::AspectRatio(val));
-}
-
-void MediaPlayer::setScale(int val)
-{
- m_videoWidget->setScaleMode(Phonon::VideoWidget::ScaleMode(val));
-}
-
-void MediaPlayer::setBrightness(int val)
-{
- m_videoWidget->setBrightness(val / qreal(SLIDER_RANGE));
-}
-
-void MediaPlayer::setContrast(int val)
-{
- m_videoWidget->setContrast(val / qreal(SLIDER_RANGE));
-}
-
-void MediaPlayer::updateInfo()
-{
- int maxLength = 30;
- QString font = "<font color=#ffeeaa>";
- QString fontmono = "<font family=\"monospace,courier new\" color=#ffeeaa>";
-
- QMap <QString, QString> metaData = m_MediaObject.metaData();
- QString trackArtist = metaData.value("ARTIST");
- if (trackArtist.length() > maxLength)
- trackArtist = trackArtist.left(maxLength) + "...";
-
- QString trackTitle = metaData.value("TITLE");
- int trackBitrate = metaData.value("BITRATE").toInt();
-
- QString fileName;
- if (m_MediaObject.currentSource().type() == Phonon::MediaSource::Url) {
- fileName = m_MediaObject.currentSource().url().toString();
- } else {
- fileName = m_MediaObject.currentSource().fileName();
- fileName = fileName.right(fileName.length() - fileName.lastIndexOf('/') - 1);
- if (fileName.length() > maxLength)
- fileName = fileName.left(maxLength) + "...";
- }
-
- QString title;
- if (!trackTitle.isEmpty()) {
- if (trackTitle.length() > maxLength)
- trackTitle = trackTitle.left(maxLength) + "...";
- title = "Title: " + font + trackTitle + "<br></font>";
- } else if (!fileName.isEmpty()) {
- if (fileName.length() > maxLength)
- fileName = fileName.left(maxLength) + "...";
- title = font + fileName + "</font>";
- if (m_MediaObject.currentSource().type() == Phonon::MediaSource::Url) {
- title.prepend("Url: ");
- } else {
- title.prepend("File: ");
- }
- }
-
- QString artist;
- if (!trackArtist.isEmpty())
- artist = "Artist: " + font + trackArtist + "</font>";
-
- QString bitrate;
- if (trackBitrate != 0)
- bitrate = "<br>Bitrate: " + font + QString::number(trackBitrate/1000) + "kbit</font>";
-
- info->setText(title + artist + bitrate);
-}
-
-void MediaPlayer::updateTime()
-{
- long len = m_MediaObject.totalTime();
- long pos = m_MediaObject.currentTime();
- QString timeString;
- if (pos || len)
- {
- int sec = pos/1000;
- int min = sec/60;
- int hour = min/60;
- int msec = pos;
-
- QTime playTime(hour%60, min%60, sec%60, msec%1000);
- sec = len / 1000;
- min = sec / 60;
- hour = min / 60;
- msec = len;
-
- QTime stopTime(hour%60, min%60, sec%60, msec%1000);
- QString timeFormat = "m:ss";
- if (hour > 0)
- timeFormat = "h:mm:ss";
- timeString = playTime.toString(timeFormat);
- if (len)
- timeString += " / " + stopTime.toString(timeFormat);
- }
- timeLabel->setText(timeString);
-}
-
-void MediaPlayer::rewind()
-{
- m_MediaObject.seek(0);
-}
-
-void MediaPlayer::forward()
-{
- QList<Phonon::MediaSource> queue = m_MediaObject.queue();
- if (queue.size() > 0) {
- m_MediaObject.setCurrentSource(queue[0]);
- forwardButton->setEnabled(queue.size() > 1);
- m_MediaObject.play();
- }
-}
-
-void MediaPlayer::openUrl()
-{
- QSettings settings;
- settings.beginGroup(QLatin1String("BrowserMainWindow"));
- QString sourceURL = settings.value("location").toString();
- bool ok = false;
- sourceURL = QInputDialog::getText(this, tr("Open Location"), tr("Please enter a valid address here:"), QLineEdit::Normal, sourceURL, &ok);
- if (ok && !sourceURL.isEmpty()) {
- setWindowTitle(sourceURL.right(sourceURL.length() - sourceURL.lastIndexOf('/') - 1));
- m_MediaObject.setCurrentSource(Phonon::MediaSource(QUrl::fromEncoded(sourceURL.toUtf8())));
- m_MediaObject.play();
- settings.setValue("location", sourceURL);
- }
-}
-
-void MediaPlayer::finished()
-{
-}
-
-void MediaPlayer::showContextMenu(const QPoint &p)
-{
- fileMenu->popup(m_videoWidget->isFullScreen() ? p : mapToGlobal(p));
-}
-
-void MediaPlayer::scaleChanged(QAction *act)
-{
- if (act->text() == tr("Scale and crop"))
- m_videoWidget->setScaleMode(Phonon::VideoWidget::ScaleAndCrop);
- else
- m_videoWidget->setScaleMode(Phonon::VideoWidget::FitInView);
-}
-
-void MediaPlayer::aspectChanged(QAction *act)
-{
- if (act->text() == tr("16/9"))
- m_videoWidget->setAspectRatio(Phonon::VideoWidget::AspectRatio16_9);
- else if (act->text() == tr("Scale"))
- m_videoWidget->setAspectRatio(Phonon::VideoWidget::AspectRatioWidget);
- else if (act->text() == tr("4/3"))
- m_videoWidget->setAspectRatio(Phonon::VideoWidget::AspectRatio4_3);
- else
- m_videoWidget->setAspectRatio(Phonon::VideoWidget::AspectRatioAuto);
-}
-
diff --git a/demos/mediaplayer/mediaplayer.h b/demos/mediaplayer/mediaplayer.h
deleted file mode 100644
index 44ca9c075..000000000
--- a/demos/mediaplayer/mediaplayer.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-***************************************************************************/
-
-#ifndef MEDIALAYER_H
-#define MEDIAPLAYER_H
-
-#include <QtGui/QWidget>
-#include <QtGui/QApplication>
-#include <QtCore/QTimerEvent>
-#include <QtGui/QShowEvent>
-#include <QtGui/QIcon>
-
-#include <Phonon/AudioOutput>
-#include <Phonon/BackendCapabilities>
-#include <Phonon/Effect>
-#include <Phonon/EffectParameter>
-#include <Phonon/EffectWidget>
-#include <Phonon/MediaObject>
-#include <Phonon/SeekSlider>
-#include <Phonon/VideoWidget>
-#include <Phonon/VolumeSlider>
-
-QT_BEGIN_NAMESPACE
-class QPushButton;
-class QLabel;
-class QSlider;
-class QTextEdit;
-class QMenu;
-class Ui_settings;
-QT_END_NAMESPACE
-
-class MediaPlayer :
- public QWidget
-{
- Q_OBJECT
-public:
- MediaPlayer(const QString &);
-
- void dragEnterEvent(QDragEnterEvent *e);
- void dragMoveEvent(QDragMoveEvent *e);
- void dropEvent(QDropEvent *e);
- void handleDrop(QDropEvent *e);
- void setFile(const QString &text);
- void initVideoWindow();
- void initSettingsDialog();
-
-public slots:
- void openFile();
- void rewind();
- void forward();
- void updateInfo();
- void updateTime();
- void finished();
- void playPause();
- void scaleChanged(QAction *);
- void aspectChanged(QAction *);
-
-private slots:
- void setAspect(int);
- void setScale(int);
- void setSaturation(int);
- void setContrast(int);
- void setHue(int);
- void setBrightness(int);
- void stateChanged(Phonon::State newstate, Phonon::State oldstate);
- void effectChanged();
- void showSettingsDialog();
- void showContextMenu(const QPoint &);
- void bufferStatus(int percent);
- void openUrl();
- void configureEffect();
-
-private:
- QIcon playIcon;
- QIcon pauseIcon;
- QMenu *fileMenu;
- QPushButton *playButton;
- QPushButton *rewindButton;
- QPushButton *forwardButton;
- Phonon::SeekSlider *slider;
- QLabel *timeLabel;
- QLabel *progressLabel;
- Phonon::VolumeSlider *volume;
- QSlider *m_hueSlider;
- QSlider *m_satSlider;
- QSlider *m_contSlider;
- QLabel *info;
- Phonon::Effect *nextEffect;
- QDialog *settingsDialog;
- Ui_settings *ui;
-
- QWidget m_videoWindow;
- Phonon::MediaObject m_MediaObject;
- Phonon::AudioOutput m_AudioOutput;
- Phonon::VideoWidget *m_videoWidget;
- Phonon::Path m_audioOutputPath;
-};
-
-#endif //MEDIAPLAYER_H
diff --git a/demos/mediaplayer/mediaplayer.pro b/demos/mediaplayer/mediaplayer.pro
deleted file mode 100644
index c64abd9b0..000000000
--- a/demos/mediaplayer/mediaplayer.pro
+++ /dev/null
@@ -1,28 +0,0 @@
-######################################################################
-# Automatically generated by qmake (2.01a) Thu Aug 23 18:02:14 2007
-######################################################################
-
-TEMPLATE = app
-TARGET =
-DEPENDPATH += . build src ui
-
-QT += phonon
-
-FORMS += settings.ui
-RESOURCES += mediaplayer.qrc
-
-!win32:CONFIG += CONSOLE
-
-SOURCES += main.cpp mediaplayer.cpp
-HEADERS += mediaplayer.h
-
-target.path = $$[QT_INSTALL_DEMOS]/mediaplayer
-sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro *.html *.doc images
-sources.path = $$[QT_INSTALL_DEMOS]/mediaplayer
-INSTALLS += target sources
-
-wince*{
-DEPLOYMENT_PLUGIN += phonon_ds9 phonon_waveout
-}
-
-
diff --git a/demos/mediaplayer/settings.ui b/demos/mediaplayer/settings.ui
deleted file mode 100644
index d2cedd429..000000000
--- a/demos/mediaplayer/settings.ui
+++ /dev/null
@@ -1,464 +0,0 @@
-<ui version="4.0" >
- <class>settings</class>
- <widget class="QDialog" name="settings" >
- <property name="geometry" >
- <rect>
- <x>0</x>
- <y>0</y>
- <width>360</width>
- <height>362</height>
- </rect>
- </property>
- <property name="windowTitle" >
- <string>Settings</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_2" >
- <item>
- <widget class="QGroupBox" name="groupBox" >
- <property name="title" >
- <string>Video options:</string>
- </property>
- <property name="flat" >
- <bool>true</bool>
- </property>
- <layout class="QGridLayout" name="gridLayout" >
- <item row="0" column="0" >
- <widget class="QLabel" name="label_9" >
- <property name="text" >
- <string>Contrast:</string>
- </property>
- </widget>
- </item>
- <item row="0" column="1" colspan="2" >
- <widget class="QSlider" name="contrastSlider" >
- <property name="minimum" >
- <number>-8</number>
- </property>
- <property name="maximum" >
- <number>8</number>
- </property>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="tickPosition" >
- <enum>QSlider::TicksBelow</enum>
- </property>
- <property name="tickInterval" >
- <number>4</number>
- </property>
- </widget>
- </item>
- <item row="1" column="0" >
- <widget class="QLabel" name="label_8" >
- <property name="text" >
- <string>Brightness:</string>
- </property>
- </widget>
- </item>
- <item row="1" column="1" colspan="2" >
- <widget class="QSlider" name="brightnessSlider" >
- <property name="minimum" >
- <number>-8</number>
- </property>
- <property name="maximum" >
- <number>8</number>
- </property>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="tickPosition" >
- <enum>QSlider::TicksBelow</enum>
- </property>
- <property name="tickInterval" >
- <number>4</number>
- </property>
- </widget>
- </item>
- <item row="2" column="0" >
- <widget class="QLabel" name="label_7" >
- <property name="text" >
- <string>Saturation:</string>
- </property>
- </widget>
- </item>
- <item row="2" column="1" colspan="2" >
- <widget class="QSlider" name="saturationSlider" >
- <property name="minimum" >
- <number>-8</number>
- </property>
- <property name="maximum" >
- <number>8</number>
- </property>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="tickPosition" >
- <enum>QSlider::TicksBelow</enum>
- </property>
- <property name="tickInterval" >
- <number>4</number>
- </property>
- </widget>
- </item>
- <item row="3" column="0" >
- <widget class="QLabel" name="label_2" >
- <property name="text" >
- <string>Hue:</string>
- </property>
- </widget>
- </item>
- <item row="3" column="1" colspan="2" >
- <widget class="QSlider" name="hueSlider" >
- <property name="minimum" >
- <number>-8</number>
- </property>
- <property name="maximum" >
- <number>8</number>
- </property>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="tickPosition" >
- <enum>QSlider::TicksBelow</enum>
- </property>
- <property name="tickInterval" >
- <number>4</number>
- </property>
- </widget>
- </item>
- <item row="4" column="0" colspan="2" >
- <widget class="QLabel" name="label_10" >
- <property name="text" >
- <string>Aspect ratio:</string>
- </property>
- </widget>
- </item>
- <item row="4" column="2" >
- <widget class="QComboBox" name="aspectCombo" >
- <property name="minimumSize" >
- <size>
- <width>180</width>
- <height>0</height>
- </size>
- </property>
- <item>
- <property name="text" >
- <string>Auto</string>
- </property>
- </item>
- <item>
- <property name="text" >
- <string>Stretch</string>
- </property>
- </item>
- <item>
- <property name="text" >
- <string>4/3</string>
- </property>
- </item>
- <item>
- <property name="text" >
- <string>16/9</string>
- </property>
- </item>
- </widget>
- </item>
- <item row="5" column="0" colspan="2" >
- <widget class="QLabel" name="label_11" >
- <property name="text" >
- <string>Scale Mode:</string>
- </property>
- </widget>
- </item>
- <item row="5" column="2" >
- <widget class="QComboBox" name="scalemodeCombo" >
- <property name="minimumSize" >
- <size>
- <width>180</width>
- <height>0</height>
- </size>
- </property>
- <item>
- <property name="text" >
- <string>Fit in view</string>
- </property>
- </item>
- <item>
- <property name="text" >
- <string>Scale and crop</string>
- </property>
- </item>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="QGroupBox" name="groupBox_2" >
- <property name="title" >
- <string>Audio options:</string>
- </property>
- <property name="flat" >
- <bool>true</bool>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout" >
- <item>
- <layout class="QHBoxLayout" >
- <item>
- <widget class="QLabel" name="label" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize" >
- <size>
- <width>90</width>
- <height>0</height>
- </size>
- </property>
- <property name="text" >
- <string>Audio device:</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QComboBox" name="deviceCombo" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout" >
- <item>
- <widget class="QLabel" name="label_6" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize" >
- <size>
- <width>90</width>
- <height>0</height>
- </size>
- </property>
- <property name="text" >
- <string>Audio effect:</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QComboBox" name="audioEffectsCombo" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Maximum" hsizetype="Minimum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="effectButton" >
- <property name="enabled" >
- <bool>false</bool>
- </property>
- <property name="text" >
- <string>Setup</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" >
- <item>
- <widget class="QLabel" name="crossFadeLabel" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize" >
- <size>
- <width>90</width>
- <height>0</height>
- </size>
- </property>
- <property name="text" >
- <string>Cross fade:</string>
- </property>
- <property name="alignment" >
- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
- </property>
- </widget>
- </item>
- <item>
- <layout class="QVBoxLayout" >
- <item>
- <widget class="QSlider" name="crossFadeSlider" >
- <property name="sizePolicy" >
- <sizepolicy vsizetype="Fixed" hsizetype="Minimum" >
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimum" >
- <number>-20</number>
- </property>
- <property name="maximum" >
- <number>20</number>
- </property>
- <property name="singleStep" >
- <number>1</number>
- </property>
- <property name="pageStep" >
- <number>2</number>
- </property>
- <property name="value" >
- <number>0</number>
- </property>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="tickPosition" >
- <enum>QSlider::TicksBelow</enum>
- </property>
- </widget>
- </item>
- <item>
- <layout class="QHBoxLayout" >
- <item>
- <widget class="QLabel" name="crossFadeLabel1" >
- <property name="font" >
- <font>
- <pointsize>9</pointsize>
- </font>
- </property>
- <property name="text" >
- <string>-10 Sec</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0" >
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QLabel" name="crossFadeLabel2" >
- <property name="font" >
- <font>
- <pointsize>9</pointsize>
- </font>
- </property>
- <property name="text" >
- <string>0</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0" >
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QLabel" name="crossFadeLabel3" >
- <property name="font" >
- <font>
- <pointsize>9</pointsize>
- </font>
- </property>
- <property name="text" >
- <string>10 Sec</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- </layout>
- </item>
- </layout>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="QDialogButtonBox" name="buttonBox" >
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="standardButtons" >
- <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections>
- <connection>
- <sender>buttonBox</sender>
- <signal>accepted()</signal>
- <receiver>settings</receiver>
- <slot>accept()</slot>
- <hints>
- <hint type="sourcelabel" >
- <x>248</x>
- <y>254</y>
- </hint>
- <hint type="destinationlabel" >
- <x>157</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>buttonBox</sender>
- <signal>rejected()</signal>
- <receiver>settings</receiver>
- <slot>reject()</slot>
- <hints>
- <hint type="sourcelabel" >
- <x>316</x>
- <y>260</y>
- </hint>
- <hint type="destinationlabel" >
- <x>286</x>
- <y>274</y>
- </hint>
- </hints>
- </connection>
- </connections>
-</ui>
diff --git a/demos/pathstroke/main.cpp b/demos/pathstroke/main.cpp
index 2b3b93235..67f4639b4 100644
--- a/demos/pathstroke/main.cpp
+++ b/demos/pathstroke/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -57,13 +57,18 @@ int main(int argc, char **argv)
QStyle *arthurStyle = new ArthurStyle();
pathStrokeWidget.setStyle(arthurStyle);
QList<QWidget *> widgets = qFindChildren<QWidget *>(&pathStrokeWidget);
- foreach (QWidget *w, widgets)
+ foreach (QWidget *w, widgets) {
w->setStyle(arthurStyle);
+ w->setAttribute(Qt::WA_AcceptTouchEvents);
+ }
if (smallScreen)
pathStrokeWidget.showFullScreen();
else
pathStrokeWidget.show();
+#ifdef QT_KEYPAD_NAVIGATION
+ QApplication::setNavigationMode(Qt::NavigationModeCursorAuto);
+#endif
return app.exec();
}
diff --git a/demos/pathstroke/pathstroke.cpp b/demos/pathstroke/pathstroke.cpp
index aa990a9e7..e072f0a2c 100644
--- a/demos/pathstroke/pathstroke.cpp
+++ b/demos/pathstroke/pathstroke.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -402,6 +402,7 @@ PathStrokeRenderer::PathStrokeRenderer(QWidget *parent, bool smallScreen)
m_penStyle = Qt::SolidLine;
m_wasAnimated = true;
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ setAttribute(Qt::WA_AcceptTouchEvents);
}
void PathStrokeRenderer::paint(QPainter *painter)
@@ -510,10 +511,6 @@ void PathStrokeRenderer::updatePoints()
Q_ASSERT(m_points.size() == m_vectors.size());
for (int i=0; i<m_points.size(); ++i) {
-
- if (i == m_activePoint)
- continue;
-
QPointF pos = m_points.at(i);
QPointF vec = m_vectors.at(i);
pos += vec;
@@ -532,6 +529,8 @@ void PathStrokeRenderer::updatePoints()
void PathStrokeRenderer::mousePressEvent(QMouseEvent *e)
{
+ if (!m_fingerPointMapping.isEmpty())
+ return;
setDescriptionEnabled(false);
m_activePoint = -1;
qreal distance = -1;
@@ -556,6 +555,8 @@ void PathStrokeRenderer::mousePressEvent(QMouseEvent *e)
void PathStrokeRenderer::mouseMoveEvent(QMouseEvent *e)
{
+ if (!m_fingerPointMapping.isEmpty())
+ return;
// If we've moved more then 25 pixels, assume user is dragging
if (!m_mouseDrag && QPoint(m_mousePress - e->pos()).manhattanLength() > 25)
m_mouseDrag = true;
@@ -568,6 +569,8 @@ void PathStrokeRenderer::mouseMoveEvent(QMouseEvent *e)
void PathStrokeRenderer::mouseReleaseEvent(QMouseEvent *)
{
+ if (!m_fingerPointMapping.isEmpty())
+ return;
m_activePoint = -1;
setAnimation(m_wasAnimated);
@@ -586,6 +589,90 @@ void PathStrokeRenderer::timerEvent(QTimerEvent *e)
// }
}
+bool PathStrokeRenderer::event(QEvent *e)
+{
+ bool touchBegin = false;
+ switch (e->type()) {
+ case QEvent::TouchBegin:
+ touchBegin = true;
+ case QEvent::TouchUpdate:
+ {
+ const QTouchEvent *const event = static_cast<const QTouchEvent*>(e);
+ const QList<QTouchEvent::TouchPoint> points = event->touchPoints();
+ foreach (const QTouchEvent::TouchPoint &touchPoint, points) {
+ const int id = touchPoint.id();
+ switch (touchPoint.state()) {
+ case Qt::TouchPointPressed:
+ {
+ // find the point, move it
+ QSet<int> activePoints = QSet<int>::fromList(m_fingerPointMapping.values());
+ int activePoint = -1;
+ qreal distance = -1;
+ const int pointsCount = m_points.size();
+ for (int i=0; i<pointsCount; ++i) {
+ if (activePoints.contains(i))
+ continue;
+
+ qreal d = QLineF(touchPoint.pos(), m_points.at(i)).length();
+ if ((distance < 0 && d < 12 * m_pointSize) || d < distance) {
+ distance = d;
+ activePoint = i;
+ }
+ }
+ if (activePoint != -1) {
+ m_fingerPointMapping.insert(touchPoint.id(), activePoint);
+ m_points[activePoint] = touchPoint.pos();
+ }
+ }
+ break;
+ case Qt::TouchPointReleased:
+ {
+ // move the point and release
+ QHash<int,int>::iterator it = m_fingerPointMapping.find(id);
+ m_points[it.value()] = touchPoint.pos();
+ m_fingerPointMapping.erase(it);
+ }
+ break;
+ case Qt::TouchPointMoved:
+ {
+ // move the point
+ const int pointIdx = m_fingerPointMapping.value(id, -1);
+ if (pointIdx >= 0)
+ m_points[pointIdx] = touchPoint.pos();
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ if (m_fingerPointMapping.isEmpty()) {
+ e->ignore();
+ return false;
+ } else {
+ if (touchBegin) {
+ m_wasAnimated = m_timer.isActive();
+ setAnimation(false);
+ }
+ update();
+ return true;
+ }
+ }
+ break;
+ case QEvent::TouchEnd:
+ if (m_fingerPointMapping.isEmpty()) {
+ e->ignore();
+ return false;
+ }
+ m_fingerPointMapping.clear();
+ setAnimation(m_wasAnimated);
+ return true;
+ break;
+ default:
+ break;
+ }
+ return QWidget::event(e);
+}
+
void PathStrokeRenderer::setAnimation(bool animation)
{
m_timer.stop();
diff --git a/demos/pathstroke/pathstroke.h b/demos/pathstroke/pathstroke.h
index ec5c4a5a7..e8695154c 100644
--- a/demos/pathstroke/pathstroke.h
+++ b/demos/pathstroke/pathstroke.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,6 +60,7 @@ public:
void mouseMoveEvent(QMouseEvent *e);
void mouseReleaseEvent(QMouseEvent *e);
void timerEvent(QTimerEvent *e);
+ bool event(QEvent *e);
QSize sizeHint() const { return QSize(500, 500); }
@@ -118,6 +119,8 @@ private:
bool m_smallScreen;
QPoint m_mousePress;
bool m_mouseDrag;
+
+ QHash<int, int> m_fingerPointMapping;
};
class PathStrokeControls : public QWidget
diff --git a/demos/pathstroke/pathstroke.pro b/demos/pathstroke/pathstroke.pro
index 50b4de249..43f20b681 100644
--- a/demos/pathstroke/pathstroke.pro
+++ b/demos/pathstroke/pathstroke.pro
@@ -18,3 +18,7 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.html
sources.path = $$[QT_INSTALL_DEMOS]/pathstroke
INSTALLS += target sources
+symbian {
+ TARGET.UID3 = 0xA000A63E
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+}
diff --git a/demos/mediaplayer/images/screen.png b/demos/qmediaplayer/images/screen.png
index a15df92e1..a15df92e1 100644
--- a/demos/mediaplayer/images/screen.png
+++ b/demos/qmediaplayer/images/screen.png
Binary files differ
diff --git a/demos/qmediaplayer/main.cpp b/demos/qmediaplayer/main.cpp
new file mode 100644
index 000000000..66aa445cb
--- /dev/null
+++ b/demos/qmediaplayer/main.cpp
@@ -0,0 +1,89 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 <QtGui>
+#include "mediaplayer.h"
+
+int main (int argc, char *argv[])
+{
+ Q_INIT_RESOURCE(mediaplayer);
+ QApplication app(argc, argv);
+ app.setApplicationName("Media Player");
+ app.setOrganizationName("Qt");
+ app.setQuitOnLastWindowClosed(true);
+
+ bool hasSmallScreen =
+#ifdef Q_OS_SYMBIAN
+ /* On Symbian, we always want fullscreen. One reason is that it's not
+ * possible to launch any demos from the fluidlauncher due to a
+ * limitation in the emulator. */
+ true
+#else
+ false
+#endif
+ ;
+
+ QString fileString;
+ const QStringList args(app.arguments());
+ /* We have a minor problem here, we accept two arguments, both are
+ * optional:
+ * - A file name
+ * - the option "-small-screen", so let's try to cope with that.
+ */
+ for (int i = 0; i < args.count(); ++i) {
+ const QString &at = args.at(i);
+
+ if (at == QLatin1String("-small-screen"))
+ hasSmallScreen = true;
+ else if (i > 0) // We don't want the app name.
+ fileString = at;
+ }
+
+ MediaPlayer player(fileString, hasSmallScreen);
+
+ if (hasSmallScreen)
+ player.showMaximized();
+ else
+ player.show();
+
+ return app.exec();
+}
+
diff --git a/demos/qmediaplayer/mediaplayer.cpp b/demos/qmediaplayer/mediaplayer.cpp
new file mode 100644
index 000000000..8f6848fba
--- /dev/null
+++ b/demos/qmediaplayer/mediaplayer.cpp
@@ -0,0 +1,939 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 <QtGui>
+
+#define SLIDER_RANGE 8
+
+#include "mediaplayer.h"
+#include "ui_settings.h"
+
+
+MediaVideoWidget::MediaVideoWidget(MediaPlayer *player, QWidget *parent) :
+ Phonon::VideoWidget(parent), m_player(player), m_action(this)
+{
+ m_action.setCheckable(true);
+ m_action.setChecked(false);
+ m_action.setShortcut(QKeySequence( Qt::AltModifier + Qt::Key_Return));
+ m_action.setShortcutContext(Qt::WindowShortcut);
+ connect(&m_action, SIGNAL(toggled(bool)), SLOT(setFullScreen(bool)));
+ addAction(&m_action);
+ setAcceptDrops(true);
+}
+
+void MediaVideoWidget::setFullScreen(bool enabled)
+{
+ Phonon::VideoWidget::setFullScreen(enabled);
+ emit fullScreenChanged(enabled);
+}
+
+void MediaVideoWidget::mouseDoubleClickEvent(QMouseEvent *e)
+{
+ Phonon::VideoWidget::mouseDoubleClickEvent(e);
+ setFullScreen(!isFullScreen());
+}
+
+void MediaVideoWidget::keyPressEvent(QKeyEvent *e)
+{
+ if(!e->modifiers()) {
+ // On non-QWERTY Symbian key-based devices, there is no space key.
+ // The zero key typically is marked with a space character.
+ if (e->key() == Qt::Key_Space || e->key() == Qt::Key_0) {
+ m_player->playPause();
+ e->accept();
+ return;
+ }
+
+ // On Symbian devices, there is no key which maps to Qt::Key_Escape
+ // On devices which lack a backspace key (i.e. non-QWERTY devices),
+ // the 'C' key maps to Qt::Key_Backspace
+ else if (e->key() == Qt::Key_Escape || e->key() == Qt::Key_Backspace) {
+ setFullScreen(false);
+ e->accept();
+ return;
+ }
+ }
+ Phonon::VideoWidget::keyPressEvent(e);
+}
+
+bool MediaVideoWidget::event(QEvent *e)
+{
+ switch(e->type())
+ {
+ case QEvent::Close:
+ //we just ignore the cose events on the video widget
+ //this prevents ALT+F4 from having an effect in fullscreen mode
+ e->ignore();
+ return true;
+ case QEvent::MouseMove:
+#ifndef QT_NO_CURSOR
+ unsetCursor();
+#endif
+ //fall through
+ case QEvent::WindowStateChange:
+ {
+ //we just update the state of the checkbox, in case it wasn't already
+ m_action.setChecked(windowState() & Qt::WindowFullScreen);
+ const Qt::WindowFlags flags = m_player->windowFlags();
+ if (windowState() & Qt::WindowFullScreen) {
+ m_timer.start(1000, this);
+ } else {
+ m_timer.stop();
+#ifndef QT_NO_CURSOR
+ unsetCursor();
+#endif
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ return Phonon::VideoWidget::event(e);
+}
+
+void MediaVideoWidget::timerEvent(QTimerEvent *e)
+{
+ if (e->timerId() == m_timer.timerId()) {
+ //let's store the cursor shape
+#ifndef QT_NO_CURSOR
+ setCursor(Qt::BlankCursor);
+#endif
+ }
+ Phonon::VideoWidget::timerEvent(e);
+}
+
+void MediaVideoWidget::dropEvent(QDropEvent *e)
+{
+ m_player->handleDrop(e);
+}
+
+void MediaVideoWidget::dragEnterEvent(QDragEnterEvent *e) {
+ if (e->mimeData()->hasUrls())
+ e->acceptProposedAction();
+}
+
+
+MediaPlayer::MediaPlayer(const QString &filePath,
+ const bool hasSmallScreen) :
+ playButton(0), nextEffect(0), settingsDialog(0), ui(0),
+ m_AudioOutput(Phonon::VideoCategory),
+ m_videoWidget(new MediaVideoWidget(this)),
+ m_hasSmallScreen(hasSmallScreen)
+{
+ setWindowTitle(tr("Media Player"));
+ setContextMenuPolicy(Qt::CustomContextMenu);
+ m_videoWidget->setContextMenuPolicy(Qt::CustomContextMenu);
+
+ QSize buttonSize(34, 28);
+
+ QPushButton *openButton = new QPushButton(this);
+
+ openButton->setIcon(style()->standardIcon(QStyle::SP_DialogOpenButton));
+ QPalette bpal;
+ QColor arrowcolor = bpal.buttonText().color();
+ if (arrowcolor == Qt::black)
+ arrowcolor = QColor(80, 80, 80);
+ bpal.setBrush(QPalette::ButtonText, arrowcolor);
+ openButton->setPalette(bpal);
+
+ rewindButton = new QPushButton(this);
+ rewindButton->setIcon(style()->standardIcon(QStyle::SP_MediaSkipBackward));
+
+ forwardButton = new QPushButton(this);
+ forwardButton->setIcon(style()->standardIcon(QStyle::SP_MediaSkipForward));
+ forwardButton->setEnabled(false);
+
+ playButton = new QPushButton(this);
+ playIcon = style()->standardIcon(QStyle::SP_MediaPlay);
+ pauseIcon = style()->standardIcon(QStyle::SP_MediaPause);
+ playButton->setIcon(playIcon);
+
+ slider = new Phonon::SeekSlider(this);
+ slider->setMediaObject(&m_MediaObject);
+ volume = new Phonon::VolumeSlider(&m_AudioOutput);
+
+ QVBoxLayout *vLayout = new QVBoxLayout(this);
+ vLayout->setContentsMargins(8, 8, 8, 8);
+
+ QHBoxLayout *layout = new QHBoxLayout();
+
+ info = new QLabel(this);
+ info->setMinimumHeight(70);
+ info->setAcceptDrops(false);
+ info->setMargin(2);
+ info->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
+ info->setLineWidth(2);
+ info->setAutoFillBackground(true);
+
+ QPalette palette;
+ palette.setBrush(QPalette::WindowText, Qt::white);
+#ifndef Q_WS_MAC
+ openButton->setMinimumSize(54, buttonSize.height());
+ rewindButton->setMinimumSize(buttonSize);
+ forwardButton->setMinimumSize(buttonSize);
+ playButton->setMinimumSize(buttonSize);
+#endif
+ info->setStyleSheet("border-image:url(:/images/screen.png) ; border-width:3px");
+ info->setPalette(palette);
+ info->setText(tr("<center>No media</center>"));
+
+ volume->setFixedWidth(120);
+
+ layout->addWidget(openButton);
+ layout->addWidget(rewindButton);
+ layout->addWidget(playButton);
+ layout->addWidget(forwardButton);
+
+ layout->addStretch();
+ layout->addWidget(volume);
+
+ vLayout->addWidget(info);
+ initVideoWindow();
+ vLayout->addWidget(&m_videoWindow);
+ QVBoxLayout *buttonPanelLayout = new QVBoxLayout();
+ m_videoWindow.hide();
+ buttonPanelLayout->addLayout(layout);
+
+ timeLabel = new QLabel(this);
+ progressLabel = new QLabel(this);
+ QWidget *sliderPanel = new QWidget(this);
+ QHBoxLayout *sliderLayout = new QHBoxLayout();
+ sliderLayout->addWidget(slider);
+ sliderLayout->addWidget(timeLabel);
+ sliderLayout->addWidget(progressLabel);
+ sliderLayout->setContentsMargins(0, 0, 0, 0);
+ sliderPanel->setLayout(sliderLayout);
+
+ buttonPanelLayout->addWidget(sliderPanel);
+ buttonPanelLayout->setContentsMargins(0, 0, 0, 0);
+#ifdef Q_OS_MAC
+ layout->setSpacing(4);
+ buttonPanelLayout->setSpacing(0);
+ info->setMinimumHeight(100);
+ info->setFont(QFont("verdana", 15));
+ // QStyle *flatButtonStyle = new QWindowsStyle;
+ openButton->setFocusPolicy(Qt::NoFocus);
+ // openButton->setStyle(flatButtonStyle);
+ // playButton->setStyle(flatButtonStyle);
+ // rewindButton->setStyle(flatButtonStyle);
+ // forwardButton->setStyle(flatButtonStyle);
+ #endif
+ QWidget *buttonPanelWidget = new QWidget(this);
+ buttonPanelWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
+ buttonPanelWidget->setLayout(buttonPanelLayout);
+ vLayout->addWidget(buttonPanelWidget);
+
+ QHBoxLayout *labelLayout = new QHBoxLayout();
+
+ vLayout->addLayout(labelLayout);
+ setLayout(vLayout);
+
+ // Create menu bar:
+ fileMenu = new QMenu(this);
+ QAction *openFileAction = fileMenu->addAction(tr("Open &File..."));
+ QAction *openUrlAction = fileMenu->addAction(tr("Open &Location..."));
+ QAction *const openLinkAction = fileMenu->addAction(tr("Open &RAM File..."));
+
+ connect(openLinkAction, SIGNAL(triggered(bool)), this, SLOT(openRamFile()));
+
+ fileMenu->addSeparator();
+ QMenu *aspectMenu = fileMenu->addMenu(tr("&Aspect ratio"));
+ QActionGroup *aspectGroup = new QActionGroup(aspectMenu);
+ connect(aspectGroup, SIGNAL(triggered(QAction*)), this, SLOT(aspectChanged(QAction*)));
+ aspectGroup->setExclusive(true);
+ QAction *aspectActionAuto = aspectMenu->addAction(tr("Auto"));
+ aspectActionAuto->setCheckable(true);
+ aspectActionAuto->setChecked(true);
+ aspectGroup->addAction(aspectActionAuto);
+ QAction *aspectActionScale = aspectMenu->addAction(tr("Scale"));
+ aspectActionScale->setCheckable(true);
+ aspectGroup->addAction(aspectActionScale);
+ QAction *aspectAction16_9 = aspectMenu->addAction(tr("16/9"));
+ aspectAction16_9->setCheckable(true);
+ aspectGroup->addAction(aspectAction16_9);
+ QAction *aspectAction4_3 = aspectMenu->addAction(tr("4/3"));
+ aspectAction4_3->setCheckable(true);
+ aspectGroup->addAction(aspectAction4_3);
+
+ QMenu *scaleMenu = fileMenu->addMenu(tr("&Scale mode"));
+ QActionGroup *scaleGroup = new QActionGroup(scaleMenu);
+ connect(scaleGroup, SIGNAL(triggered(QAction*)), this, SLOT(scaleChanged(QAction*)));
+ scaleGroup->setExclusive(true);
+ QAction *scaleActionFit = scaleMenu->addAction(tr("Fit in view"));
+ scaleActionFit->setCheckable(true);
+ scaleActionFit->setChecked(true);
+ scaleGroup->addAction(scaleActionFit);
+ QAction *scaleActionCrop = scaleMenu->addAction(tr("Scale and crop"));
+ scaleActionCrop->setCheckable(true);
+ scaleGroup->addAction(scaleActionCrop);
+
+ m_fullScreenAction = fileMenu->addAction(tr("Full screen video"));
+ m_fullScreenAction->setCheckable(true);
+ m_fullScreenAction->setEnabled(false); // enabled by hasVideoChanged
+ bool b = connect(m_fullScreenAction, SIGNAL(toggled(bool)), m_videoWidget, SLOT(setFullScreen(bool)));
+ Q_ASSERT(b);
+ b = connect(m_videoWidget, SIGNAL(fullScreenChanged(bool)), m_fullScreenAction, SLOT(setChecked(bool)));
+ Q_ASSERT(b);
+
+ fileMenu->addSeparator();
+ QAction *settingsAction = fileMenu->addAction(tr("&Settings..."));
+
+ // Setup signal connections:
+ connect(rewindButton, SIGNAL(clicked()), this, SLOT(rewind()));
+ //connect(openButton, SIGNAL(clicked()), this, SLOT(openFile()));
+ openButton->setMenu(fileMenu);
+
+ connect(playButton, SIGNAL(clicked()), this, SLOT(playPause()));
+ connect(forwardButton, SIGNAL(clicked()), this, SLOT(forward()));
+ //connect(openButton, SIGNAL(clicked()), this, SLOT(openFile()));
+ connect(settingsAction, SIGNAL(triggered(bool)), this, SLOT(showSettingsDialog()));
+ connect(openUrlAction, SIGNAL(triggered(bool)), this, SLOT(openUrl()));
+ connect(openFileAction, SIGNAL(triggered(bool)), this, SLOT(openFile()));
+
+ connect(m_videoWidget, SIGNAL(customContextMenuRequested(const QPoint &)), SLOT(showContextMenu(const QPoint &)));
+ connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), SLOT(showContextMenu(const QPoint &)));
+ connect(&m_MediaObject, SIGNAL(metaDataChanged()), this, SLOT(updateInfo()));
+ connect(&m_MediaObject, SIGNAL(totalTimeChanged(qint64)), this, SLOT(updateTime()));
+ connect(&m_MediaObject, SIGNAL(tick(qint64)), this, SLOT(updateTime()));
+ connect(&m_MediaObject, SIGNAL(finished()), this, SLOT(finished()));
+ connect(&m_MediaObject, SIGNAL(stateChanged(Phonon::State,Phonon::State)), this, SLOT(stateChanged(Phonon::State,Phonon::State)));
+ connect(&m_MediaObject, SIGNAL(bufferStatus(int)), this, SLOT(bufferStatus(int)));
+ connect(&m_MediaObject, SIGNAL(hasVideoChanged(bool)), this, SLOT(hasVideoChanged(bool)));
+
+ rewindButton->setEnabled(false);
+ playButton->setEnabled(false);
+ setAcceptDrops(true);
+
+ m_audioOutputPath = Phonon::createPath(&m_MediaObject, &m_AudioOutput);
+ Phonon::createPath(&m_MediaObject, m_videoWidget);
+
+ if (!filePath.isEmpty())
+ setFile(filePath);
+ resize(minimumSizeHint());
+}
+
+void MediaPlayer::stateChanged(Phonon::State newstate, Phonon::State oldstate)
+{
+ Q_UNUSED(oldstate);
+
+ if (oldstate == Phonon::LoadingState) {
+ QRect videoHintRect = QRect(QPoint(0, 0), m_videoWindow.sizeHint());
+ QRect newVideoRect = QApplication::desktop()->screenGeometry().intersected(videoHintRect);
+ if (!m_hasSmallScreen) {
+ if (m_MediaObject.hasVideo()) {
+ // Flush event que so that sizeHint takes the
+ // recently shown/hidden m_videoWindow into account:
+ qApp->processEvents();
+ resize(sizeHint());
+ } else
+ resize(minimumSize());
+ }
+ }
+
+ switch (newstate) {
+ case Phonon::ErrorState:
+ if (m_MediaObject.errorType() == Phonon::FatalError) {
+ playButton->setEnabled(false);
+ rewindButton->setEnabled(false);
+ } else {
+ m_MediaObject.pause();
+ }
+ QMessageBox::warning(this, "Phonon Mediaplayer", m_MediaObject.errorString(), QMessageBox::Close);
+ break;
+
+ case Phonon::StoppedState:
+ m_videoWidget->setFullScreen(false);
+ // Fall through
+ case Phonon::PausedState:
+ playButton->setIcon(playIcon);
+ if (m_MediaObject.currentSource().type() != Phonon::MediaSource::Invalid){
+ playButton->setEnabled(true);
+ rewindButton->setEnabled(true);
+ } else {
+ playButton->setEnabled(false);
+ rewindButton->setEnabled(false);
+ }
+ break;
+ case Phonon::PlayingState:
+ playButton->setEnabled(true);
+ playButton->setIcon(pauseIcon);
+ if (m_MediaObject.hasVideo())
+ m_videoWindow.show();
+ // Fall through
+ case Phonon::BufferingState:
+ rewindButton->setEnabled(true);
+ break;
+ case Phonon::LoadingState:
+ rewindButton->setEnabled(false);
+ break;
+ }
+
+}
+
+void MediaPlayer::initSettingsDialog()
+{
+ settingsDialog = new QDialog(this);
+ ui = new Ui_settings();
+ ui->setupUi(settingsDialog);
+
+ connect(ui->brightnessSlider, SIGNAL(valueChanged(int)), this, SLOT(setBrightness(int)));
+ connect(ui->hueSlider, SIGNAL(valueChanged(int)), this, SLOT(setHue(int)));
+ connect(ui->saturationSlider, SIGNAL(valueChanged(int)), this, SLOT(setSaturation(int)));
+ connect(ui->contrastSlider , SIGNAL(valueChanged(int)), this, SLOT(setContrast(int)));
+ connect(ui->aspectCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(setAspect(int)));
+ connect(ui->scalemodeCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(setScale(int)));
+
+ ui->brightnessSlider->setValue(int(m_videoWidget->brightness() * SLIDER_RANGE));
+ ui->hueSlider->setValue(int(m_videoWidget->hue() * SLIDER_RANGE));
+ ui->saturationSlider->setValue(int(m_videoWidget->saturation() * SLIDER_RANGE));
+ ui->contrastSlider->setValue(int(m_videoWidget->contrast() * SLIDER_RANGE));
+ ui->aspectCombo->setCurrentIndex(m_videoWidget->aspectRatio());
+ ui->scalemodeCombo->setCurrentIndex(m_videoWidget->scaleMode());
+ connect(ui->effectButton, SIGNAL(clicked()), this, SLOT(configureEffect()));
+
+#ifdef Q_WS_X11
+ //Cross fading is not currently implemented in the GStreamer backend
+ ui->crossFadeSlider->setVisible(false);
+ ui->crossFadeLabel->setVisible(false);
+ ui->crossFadeLabel1->setVisible(false);
+ ui->crossFadeLabel2->setVisible(false);
+ ui->crossFadeLabel3->setVisible(false);
+#endif
+ ui->crossFadeSlider->setValue((int)(2 * m_MediaObject.transitionTime() / 1000.0f));
+
+ // Insert audio devices:
+ QList<Phonon::AudioOutputDevice> devices = Phonon::BackendCapabilities::availableAudioOutputDevices();
+ for (int i=0; i<devices.size(); i++){
+ QString itemText = devices[i].name();
+ if (!devices[i].description().isEmpty()) {
+ itemText += QString::fromLatin1(" (%1)").arg(devices[i].description());
+ }
+ ui->deviceCombo->addItem(itemText);
+ if (devices[i] == m_AudioOutput.outputDevice())
+ ui->deviceCombo->setCurrentIndex(i);
+ }
+
+ // Insert audio effects:
+ ui->audioEffectsCombo->addItem(tr("<no effect>"));
+ QList<Phonon::Effect *> currEffects = m_audioOutputPath.effects();
+ Phonon::Effect *currEffect = currEffects.size() ? currEffects[0] : 0;
+ QList<Phonon::EffectDescription> availableEffects = Phonon::BackendCapabilities::availableAudioEffects();
+ for (int i=0; i<availableEffects.size(); i++){
+ ui->audioEffectsCombo->addItem(availableEffects[i].name());
+ if (currEffect && availableEffects[i] == currEffect->description())
+ ui->audioEffectsCombo->setCurrentIndex(i+1);
+ }
+ connect(ui->audioEffectsCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(effectChanged()));
+
+}
+
+void MediaPlayer::effectChanged()
+{
+ int currentIndex = ui->audioEffectsCombo->currentIndex();
+ if (currentIndex) {
+ QList<Phonon::EffectDescription> availableEffects = Phonon::BackendCapabilities::availableAudioEffects();
+ Phonon::EffectDescription chosenEffect = availableEffects[currentIndex - 1];
+
+ QList<Phonon::Effect *> currEffects = m_audioOutputPath.effects();
+ Phonon::Effect *currentEffect = currEffects.size() ? currEffects[0] : 0;
+
+ // Deleting the running effect will stop playback, it is deleted when removed from path
+ if (nextEffect && !(currentEffect && (currentEffect->description().name() == nextEffect->description().name())))
+ delete nextEffect;
+
+ nextEffect = new Phonon::Effect(chosenEffect);
+ }
+ ui->effectButton->setEnabled(currentIndex);
+}
+
+void MediaPlayer::showSettingsDialog()
+{
+ const bool hasPausedForDialog = playPauseForDialog();
+
+ if (!settingsDialog)
+ initSettingsDialog();
+
+ float oldBrightness = m_videoWidget->brightness();
+ float oldHue = m_videoWidget->hue();
+ float oldSaturation = m_videoWidget->saturation();
+ float oldContrast = m_videoWidget->contrast();
+ Phonon::VideoWidget::AspectRatio oldAspect = m_videoWidget->aspectRatio();
+ Phonon::VideoWidget::ScaleMode oldScale = m_videoWidget->scaleMode();
+ int currentEffect = ui->audioEffectsCombo->currentIndex();
+ settingsDialog->exec();
+
+ if (settingsDialog->result() == QDialog::Accepted){
+ m_MediaObject.setTransitionTime((int)(1000 * float(ui->crossFadeSlider->value()) / 2.0f));
+ QList<Phonon::AudioOutputDevice> devices = Phonon::BackendCapabilities::availableAudioOutputDevices();
+ m_AudioOutput.setOutputDevice(devices[ui->deviceCombo->currentIndex()]);
+ QList<Phonon::Effect *> currEffects = m_audioOutputPath.effects();
+ QList<Phonon::EffectDescription> availableEffects = Phonon::BackendCapabilities::availableAudioEffects();
+
+ if (ui->audioEffectsCombo->currentIndex() > 0){
+ Phonon::Effect *currentEffect = currEffects.size() ? currEffects[0] : 0;
+ if (!currentEffect || currentEffect->description() != nextEffect->description()){
+ foreach(Phonon::Effect *effect, currEffects) {
+ m_audioOutputPath.removeEffect(effect);
+ delete effect;
+ }
+ m_audioOutputPath.insertEffect(nextEffect);
+ }
+ } else {
+ foreach(Phonon::Effect *effect, currEffects) {
+ m_audioOutputPath.removeEffect(effect);
+ delete effect;
+ nextEffect = 0;
+ }
+ }
+ } else {
+ // Restore previous settings
+ m_videoWidget->setBrightness(oldBrightness);
+ m_videoWidget->setSaturation(oldSaturation);
+ m_videoWidget->setHue(oldHue);
+ m_videoWidget->setContrast(oldContrast);
+ m_videoWidget->setAspectRatio(oldAspect);
+ m_videoWidget->setScaleMode(oldScale);
+ ui->audioEffectsCombo->setCurrentIndex(currentEffect);
+ }
+
+ if (hasPausedForDialog)
+ m_MediaObject.play();
+}
+
+void MediaPlayer::initVideoWindow()
+{
+ QVBoxLayout *videoLayout = new QVBoxLayout();
+ videoLayout->addWidget(m_videoWidget);
+ videoLayout->setContentsMargins(0, 0, 0, 0);
+ m_videoWindow.setLayout(videoLayout);
+ m_videoWindow.setMinimumSize(100, 100);
+}
+
+
+void MediaPlayer::configureEffect()
+{
+ if (!nextEffect)
+ return;
+
+
+ QList<Phonon::Effect *> currEffects = m_audioOutputPath.effects();
+ const QList<Phonon::EffectDescription> availableEffects = Phonon::BackendCapabilities::availableAudioEffects();
+ if (ui->audioEffectsCombo->currentIndex() > 0) {
+ Phonon::EffectDescription chosenEffect = availableEffects[ui->audioEffectsCombo->currentIndex() - 1];
+
+ QDialog effectDialog;
+ effectDialog.setWindowTitle(tr("Configure effect"));
+ QVBoxLayout *topLayout = new QVBoxLayout(&effectDialog);
+
+ QLabel *description = new QLabel("<b>Description:</b><br>" + chosenEffect.description(), &effectDialog);
+ description->setWordWrap(true);
+ topLayout->addWidget(description);
+
+ QScrollArea *scrollArea = new QScrollArea(&effectDialog);
+ topLayout->addWidget(scrollArea);
+
+ QVariantList savedParamValues;
+ foreach(Phonon::EffectParameter param, nextEffect->parameters()) {
+ savedParamValues << nextEffect->parameterValue(param);
+ }
+
+ QWidget *scrollWidget = new Phonon::EffectWidget(nextEffect);
+ scrollWidget->setMinimumWidth(320);
+ scrollWidget->setContentsMargins(10, 10, 10,10);
+ scrollArea->setWidget(scrollWidget);
+
+ QDialogButtonBox *bbox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, &effectDialog);
+ connect(bbox->button(QDialogButtonBox::Ok), SIGNAL(clicked()), &effectDialog, SLOT(accept()));
+ connect(bbox->button(QDialogButtonBox::Cancel), SIGNAL(clicked()), &effectDialog, SLOT(reject()));
+ topLayout->addWidget(bbox);
+
+ effectDialog.exec();
+
+ if (effectDialog.result() != QDialog::Accepted) {
+ //we need to restore the paramaters values
+ int currentIndex = 0;
+ foreach(Phonon::EffectParameter param, nextEffect->parameters()) {
+ nextEffect->setParameterValue(param, savedParamValues.at(currentIndex++));
+ }
+
+ }
+ }
+}
+
+void MediaPlayer::handleDrop(QDropEvent *e)
+{
+ QList<QUrl> urls = e->mimeData()->urls();
+ if (e->proposedAction() == Qt::MoveAction){
+ // Just add to the queue:
+ for (int i=0; i<urls.size(); i++)
+ m_MediaObject.enqueue(Phonon::MediaSource(urls[i].toLocalFile()));
+ } else {
+ // Create new queue:
+ m_MediaObject.clearQueue();
+ if (urls.size() > 0) {
+ QString fileName = urls[0].toLocalFile();
+ QDir dir(fileName);
+ if (dir.exists()) {
+ dir.setFilter(QDir::Files);
+ QStringList entries = dir.entryList();
+ if (entries.size() > 0) {
+ setFile(fileName + QDir::separator() + entries[0]);
+ for (int i=1; i< entries.size(); ++i)
+ m_MediaObject.enqueue(fileName + QDir::separator() + entries[i]);
+ }
+ } else {
+ setFile(fileName);
+ for (int i=1; i<urls.size(); i++)
+ m_MediaObject.enqueue(Phonon::MediaSource(urls[i].toLocalFile()));
+ }
+ }
+ }
+ forwardButton->setEnabled(m_MediaObject.queue().size() > 0);
+ m_MediaObject.play();
+}
+
+void MediaPlayer::dropEvent(QDropEvent *e)
+{
+ if (e->mimeData()->hasUrls() && e->proposedAction() != Qt::LinkAction) {
+ e->acceptProposedAction();
+ handleDrop(e);
+ } else {
+ e->ignore();
+ }
+}
+
+void MediaPlayer::dragEnterEvent(QDragEnterEvent *e)
+{
+ dragMoveEvent(e);
+}
+
+void MediaPlayer::dragMoveEvent(QDragMoveEvent *e)
+{
+ if (e->mimeData()->hasUrls()) {
+ if (e->proposedAction() == Qt::CopyAction || e->proposedAction() == Qt::MoveAction){
+ e->acceptProposedAction();
+ }
+ }
+}
+
+void MediaPlayer::playPause()
+{
+ if (m_MediaObject.state() == Phonon::PlayingState)
+ m_MediaObject.pause();
+ else {
+ if (m_MediaObject.currentTime() == m_MediaObject.totalTime())
+ m_MediaObject.seek(0);
+ m_MediaObject.play();
+ }
+}
+
+void MediaPlayer::setFile(const QString &fileName)
+{
+ setWindowTitle(fileName.right(fileName.length() - fileName.lastIndexOf('/') - 1));
+ m_MediaObject.setCurrentSource(Phonon::MediaSource(fileName));
+ m_MediaObject.play();
+}
+
+bool MediaPlayer::playPauseForDialog()
+{
+ // If we're running on a small screen, we want to pause the video when
+ // popping up dialogs. We neither want to tamper with the state if the
+ // user has paused.
+ if (m_hasSmallScreen && m_MediaObject.hasVideo()) {
+ if (Phonon::PlayingState == m_MediaObject.state()) {
+ m_MediaObject.pause();
+ return true;
+ }
+ }
+ return false;
+}
+
+void MediaPlayer::openFile()
+{
+ const bool hasPausedForDialog = playPauseForDialog();
+
+ QStringList fileNames = QFileDialog::getOpenFileNames(this, QString(),
+ QDesktopServices::storageLocation(QDesktopServices::MusicLocation));
+
+ if (hasPausedForDialog)
+ m_MediaObject.play();
+
+ m_MediaObject.clearQueue();
+ if (fileNames.size() > 0) {
+ QString fileName = fileNames[0];
+ setFile(fileName);
+ for (int i=1; i<fileNames.size(); i++)
+ m_MediaObject.enqueue(Phonon::MediaSource(fileNames[i]));
+ }
+ forwardButton->setEnabled(m_MediaObject.queue().size() > 0);
+}
+
+void MediaPlayer::bufferStatus(int percent)
+{
+ if (percent == 0 || percent == 100)
+ progressLabel->setText(QString());
+ else {
+ QString str = QString::fromLatin1("(%1%)").arg(percent);
+ progressLabel->setText(str);
+ }
+}
+
+void MediaPlayer::setSaturation(int val)
+{
+ m_videoWidget->setSaturation(val / qreal(SLIDER_RANGE));
+}
+
+void MediaPlayer::setHue(int val)
+{
+ m_videoWidget->setHue(val / qreal(SLIDER_RANGE));
+}
+
+void MediaPlayer::setAspect(int val)
+{
+ m_videoWidget->setAspectRatio(Phonon::VideoWidget::AspectRatio(val));
+}
+
+void MediaPlayer::setScale(int val)
+{
+ m_videoWidget->setScaleMode(Phonon::VideoWidget::ScaleMode(val));
+}
+
+void MediaPlayer::setBrightness(int val)
+{
+ m_videoWidget->setBrightness(val / qreal(SLIDER_RANGE));
+}
+
+void MediaPlayer::setContrast(int val)
+{
+ m_videoWidget->setContrast(val / qreal(SLIDER_RANGE));
+}
+
+void MediaPlayer::updateInfo()
+{
+ int maxLength = 30;
+ QString font = "<font color=#ffeeaa>";
+ QString fontmono = "<font family=\"monospace,courier new\" color=#ffeeaa>";
+
+ QMap <QString, QString> metaData = m_MediaObject.metaData();
+ QString trackArtist = metaData.value("ARTIST");
+ if (trackArtist.length() > maxLength)
+ trackArtist = trackArtist.left(maxLength) + "...";
+
+ QString trackTitle = metaData.value("TITLE");
+ int trackBitrate = metaData.value("BITRATE").toInt();
+
+ QString fileName;
+ if (m_MediaObject.currentSource().type() == Phonon::MediaSource::Url) {
+ fileName = m_MediaObject.currentSource().url().toString();
+ } else {
+ fileName = m_MediaObject.currentSource().fileName();
+ fileName = fileName.right(fileName.length() - fileName.lastIndexOf('/') - 1);
+ if (fileName.length() > maxLength)
+ fileName = fileName.left(maxLength) + "...";
+ }
+
+ QString title;
+ if (!trackTitle.isEmpty()) {
+ if (trackTitle.length() > maxLength)
+ trackTitle = trackTitle.left(maxLength) + "...";
+ title = "Title: " + font + trackTitle + "<br></font>";
+ } else if (!fileName.isEmpty()) {
+ if (fileName.length() > maxLength)
+ fileName = fileName.left(maxLength) + "...";
+ title = font + fileName + "</font>";
+ if (m_MediaObject.currentSource().type() == Phonon::MediaSource::Url) {
+ title.prepend("Url: ");
+ } else {
+ title.prepend("File: ");
+ }
+ }
+
+ QString artist;
+ if (!trackArtist.isEmpty())
+ artist = "Artist: " + font + trackArtist + "</font>";
+
+ QString bitrate;
+ if (trackBitrate != 0)
+ bitrate = "<br>Bitrate: " + font + QString::number(trackBitrate/1000) + "kbit</font>";
+
+ info->setText(title + artist + bitrate);
+}
+
+void MediaPlayer::updateTime()
+{
+ long len = m_MediaObject.totalTime();
+ long pos = m_MediaObject.currentTime();
+ QString timeString;
+ if (pos || len)
+ {
+ int sec = pos/1000;
+ int min = sec/60;
+ int hour = min/60;
+ int msec = pos;
+
+ QTime playTime(hour%60, min%60, sec%60, msec%1000);
+ sec = len / 1000;
+ min = sec / 60;
+ hour = min / 60;
+ msec = len;
+
+ QTime stopTime(hour%60, min%60, sec%60, msec%1000);
+ QString timeFormat = "m:ss";
+ if (hour > 0)
+ timeFormat = "h:mm:ss";
+ timeString = playTime.toString(timeFormat);
+ if (len)
+ timeString += " / " + stopTime.toString(timeFormat);
+ }
+ timeLabel->setText(timeString);
+}
+
+void MediaPlayer::rewind()
+{
+ m_MediaObject.seek(0);
+}
+
+void MediaPlayer::forward()
+{
+ QList<Phonon::MediaSource> queue = m_MediaObject.queue();
+ if (queue.size() > 0) {
+ m_MediaObject.setCurrentSource(queue[0]);
+ forwardButton->setEnabled(queue.size() > 1);
+ m_MediaObject.play();
+ }
+}
+
+void MediaPlayer::openUrl()
+{
+ QSettings settings;
+ settings.beginGroup(QLatin1String("BrowserMainWindow"));
+ QString sourceURL = settings.value("location").toString();
+ bool ok = false;
+ sourceURL = QInputDialog::getText(this, tr("Open Location"), tr("Please enter a valid address here:"), QLineEdit::Normal, sourceURL, &ok);
+ if (ok && !sourceURL.isEmpty()) {
+ setWindowTitle(sourceURL.right(sourceURL.length() - sourceURL.lastIndexOf('/') - 1));
+ m_MediaObject.setCurrentSource(Phonon::MediaSource(QUrl::fromEncoded(sourceURL.toUtf8())));
+ m_MediaObject.play();
+ settings.setValue("location", sourceURL);
+ }
+}
+
+/*!
+ \since 4.6
+ */
+void MediaPlayer::openRamFile()
+{
+ QSettings settings;
+ settings.beginGroup(QLatin1String("BrowserMainWindow"));
+
+ const QStringList fileNameList(QFileDialog::getOpenFileNames(this,
+ QString(),
+ settings.value("openRamFile").toString(),
+ QLatin1String("RAM files (*.ram)")));
+
+ if (fileNameList.isEmpty())
+ return;
+
+ QFile linkFile;
+ QList<QUrl> list;
+ QByteArray sourceURL;
+ for (int i = 0; i < fileNameList.count(); i++ ) {
+ linkFile.setFileName(fileNameList[i]);
+ if (linkFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ while (!linkFile.atEnd()) {
+ sourceURL = linkFile.readLine().trimmed();
+ if (!sourceURL.isEmpty()) {
+ const QUrl url(QUrl::fromEncoded(sourceURL));
+ if (url.isValid())
+ list.append(url);
+ }
+ }
+ linkFile.close();
+ }
+ }
+
+ if (!list.isEmpty()) {
+ m_MediaObject.setCurrentSource(Phonon::MediaSource(list[0]));
+ m_MediaObject.play();
+ for (int i = 1; i < list.count(); i++)
+ m_MediaObject.enqueue(Phonon::MediaSource(list[i]));
+ }
+
+ forwardButton->setEnabled(!m_MediaObject.queue().isEmpty());
+ settings.setValue("openRamFile", fileNameList[0]);
+}
+
+void MediaPlayer::finished()
+{
+}
+
+void MediaPlayer::showContextMenu(const QPoint &p)
+{
+ fileMenu->popup(m_videoWidget->isFullScreen() ? p : mapToGlobal(p));
+}
+
+void MediaPlayer::scaleChanged(QAction *act)
+{
+ if (act->text() == tr("Scale and crop"))
+ m_videoWidget->setScaleMode(Phonon::VideoWidget::ScaleAndCrop);
+ else
+ m_videoWidget->setScaleMode(Phonon::VideoWidget::FitInView);
+}
+
+void MediaPlayer::aspectChanged(QAction *act)
+{
+ if (act->text() == tr("16/9"))
+ m_videoWidget->setAspectRatio(Phonon::VideoWidget::AspectRatio16_9);
+ else if (act->text() == tr("Scale"))
+ m_videoWidget->setAspectRatio(Phonon::VideoWidget::AspectRatioWidget);
+ else if (act->text() == tr("4/3"))
+ m_videoWidget->setAspectRatio(Phonon::VideoWidget::AspectRatio4_3);
+ else
+ m_videoWidget->setAspectRatio(Phonon::VideoWidget::AspectRatioAuto);
+}
+
+void MediaPlayer::hasVideoChanged(bool bHasVideo)
+{
+ info->setVisible(!bHasVideo);
+ m_videoWindow.setVisible(bHasVideo);
+ m_fullScreenAction->setEnabled(bHasVideo);
+}
diff --git a/demos/qmediaplayer/mediaplayer.h b/demos/qmediaplayer/mediaplayer.h
new file mode 100644
index 000000000..14ed4accd
--- /dev/null
+++ b/demos/qmediaplayer/mediaplayer.h
@@ -0,0 +1,176 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+***************************************************************************/
+
+#ifndef MEDIALAYER_H
+#define MEDIAPLAYER_H
+
+#include <QtGui/QWidget>
+#include <QtGui/QApplication>
+#include <QtCore/QTimerEvent>
+#include <QtGui/QShowEvent>
+#include <QtGui/QIcon>
+#include <QtCore/QBasicTimer>
+#include <QtGui/QAction>
+
+#include <Phonon/AudioOutput>
+#include <Phonon/BackendCapabilities>
+#include <Phonon/Effect>
+#include <Phonon/EffectParameter>
+#include <Phonon/EffectWidget>
+#include <Phonon/MediaObject>
+#include <Phonon/SeekSlider>
+#include <Phonon/VideoWidget>
+#include <Phonon/VolumeSlider>
+
+QT_BEGIN_NAMESPACE
+class QPushButton;
+class QLabel;
+class QSlider;
+class QTextEdit;
+class QMenu;
+class Ui_settings;
+QT_END_NAMESPACE
+
+class MediaPlayer;
+
+class MediaVideoWidget : public Phonon::VideoWidget
+{
+ Q_OBJECT
+
+public:
+ MediaVideoWidget(MediaPlayer *player, QWidget *parent = 0);
+
+public slots:
+ // Over-riding non-virtual Phonon::VideoWidget slot
+ void setFullScreen(bool);
+
+signals:
+ void fullScreenChanged(bool);
+
+protected:
+ void mouseDoubleClickEvent(QMouseEvent *e);
+ void keyPressEvent(QKeyEvent *e);
+ bool event(QEvent *e);
+ void timerEvent(QTimerEvent *e);
+ void dropEvent(QDropEvent *e);
+ void dragEnterEvent(QDragEnterEvent *e);
+
+private:
+ MediaPlayer *m_player;
+ QBasicTimer m_timer;
+ QAction m_action;
+};
+
+class MediaPlayer :
+ public QWidget
+{
+ Q_OBJECT
+public:
+ MediaPlayer(const QString &,
+ const bool hasSmallScreen);
+
+ void dragEnterEvent(QDragEnterEvent *e);
+ void dragMoveEvent(QDragMoveEvent *e);
+ void dropEvent(QDropEvent *e);
+ void handleDrop(QDropEvent *e);
+ void setFile(const QString &text);
+ void initVideoWindow();
+ void initSettingsDialog();
+
+public slots:
+ void openFile();
+ void rewind();
+ void forward();
+ void updateInfo();
+ void updateTime();
+ void finished();
+ void playPause();
+ void scaleChanged(QAction *);
+ void aspectChanged(QAction *);
+
+private slots:
+ void setAspect(int);
+ void setScale(int);
+ void setSaturation(int);
+ void setContrast(int);
+ void setHue(int);
+ void setBrightness(int);
+ void stateChanged(Phonon::State newstate, Phonon::State oldstate);
+ void effectChanged();
+ void showSettingsDialog();
+ void showContextMenu(const QPoint& point);
+ void bufferStatus(int percent);
+ void openUrl();
+ void openRamFile();
+ void configureEffect();
+ void hasVideoChanged(bool);
+
+private:
+ bool playPauseForDialog();
+
+ QIcon playIcon;
+ QIcon pauseIcon;
+ QMenu *fileMenu;
+ QPushButton *playButton;
+ QPushButton *rewindButton;
+ QPushButton *forwardButton;
+ Phonon::SeekSlider *slider;
+ QLabel *timeLabel;
+ QLabel *progressLabel;
+ Phonon::VolumeSlider *volume;
+ QSlider *m_hueSlider;
+ QSlider *m_satSlider;
+ QSlider *m_contSlider;
+ QLabel *info;
+ Phonon::Effect *nextEffect;
+ QDialog *settingsDialog;
+ Ui_settings *ui;
+ QAction *m_fullScreenAction;
+
+ QWidget m_videoWindow;
+ Phonon::MediaObject m_MediaObject;
+ Phonon::AudioOutput m_AudioOutput;
+ MediaVideoWidget *m_videoWidget;
+ Phonon::Path m_audioOutputPath;
+ const bool m_hasSmallScreen;
+};
+
+#endif //MEDIAPLAYER_H
diff --git a/demos/mediaplayer/mediaplayer.qrc b/demos/qmediaplayer/mediaplayer.qrc
index bcdf404eb..bcdf404eb 100644
--- a/demos/mediaplayer/mediaplayer.qrc
+++ b/demos/qmediaplayer/mediaplayer.qrc
diff --git a/demos/qmediaplayer/qmediaplayer.pro b/demos/qmediaplayer/qmediaplayer.pro
new file mode 100644
index 000000000..9407a81ff
--- /dev/null
+++ b/demos/qmediaplayer/qmediaplayer.pro
@@ -0,0 +1,37 @@
+######################################################################
+# Automatically generated by qmake (2.01a) Thu Aug 23 18:02:14 2007
+######################################################################
+
+TEMPLATE = app
+DEPENDPATH += . build src ui
+
+QT += phonon
+
+FORMS += settings.ui
+RESOURCES += mediaplayer.qrc
+
+!win32:CONFIG += CONSOLE
+
+SOURCES += main.cpp mediaplayer.cpp
+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
+INSTALLS += target sources
+
+wince*{
+DEPLOYMENT_PLUGIN += phonon_ds9 phonon_waveout
+}
+
+symbian {
+ TARGET.UID3 = 0xA000C613
+
+ addFiles.sources = ../embedded/desktopservices/data/sax.mp3
+ addFiles.path = /data/sounds/
+ DEPLOYMENT += addFiles
+
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
+ TARGET.CAPABILITY="NetworkServices"
+}
diff --git a/demos/qmediaplayer/settings.ui b/demos/qmediaplayer/settings.ui
new file mode 100644
index 000000000..03bd70e94
--- /dev/null
+++ b/demos/qmediaplayer/settings.ui
@@ -0,0 +1,495 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>settings</class>
+ <widget class="QDialog" name="settings">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>175</width>
+ <height>397</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Settings</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>Video options:</string>
+ </property>
+ <property name="flat">
+ <bool>true</bool>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="5" column="2">
+ <widget class="QComboBox" name="scalemodeCombo">
+ <property name="sizeAdjustPolicy">
+ <enum>QComboBox::AdjustToContentsOnFirstShow</enum>
+ </property>
+ <item>
+ <property name="text">
+ <string>Fit in view</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Scale and crop</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string>Contrast:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" colspan="2">
+ <widget class="QSlider" name="contrastSlider">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="minimum">
+ <number>-8</number>
+ </property>
+ <property name="maximum">
+ <number>8</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::TicksBelow</enum>
+ </property>
+ <property name="tickInterval">
+ <number>4</number>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string>Brightness:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" colspan="2">
+ <widget class="QSlider" name="brightnessSlider">
+ <property name="minimum">
+ <number>-8</number>
+ </property>
+ <property name="maximum">
+ <number>8</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::TicksBelow</enum>
+ </property>
+ <property name="tickInterval">
+ <number>4</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string>Saturation:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1" colspan="2">
+ <widget class="QSlider" name="saturationSlider">
+ <property name="minimum">
+ <number>-8</number>
+ </property>
+ <property name="maximum">
+ <number>8</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::TicksBelow</enum>
+ </property>
+ <property name="tickInterval">
+ <number>4</number>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Hue:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1" colspan="2">
+ <widget class="QSlider" name="hueSlider">
+ <property name="minimum">
+ <number>-8</number>
+ </property>
+ <property name="maximum">
+ <number>8</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::TicksBelow</enum>
+ </property>
+ <property name="tickInterval">
+ <number>4</number>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0" colspan="2">
+ <widget class="QLabel" name="label_10">
+ <property name="text">
+ <string>Aspect ratio:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="2">
+ <widget class="QComboBox" name="aspectCombo">
+ <property name="sizeAdjustPolicy">
+ <enum>QComboBox::AdjustToContentsOnFirstShow</enum>
+ </property>
+ <item>
+ <property name="text">
+ <string>Auto</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Stretch</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>4/3</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>16/9</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="5" column="0" colspan="2">
+ <widget class="QLabel" name="label_11">
+ <property name="text">
+ <string>Scale Mode:</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ <zorder>scalemodeCombo</zorder>
+ <zorder>label_9</zorder>
+ <zorder>contrastSlider</zorder>
+ <zorder>label_8</zorder>
+ <zorder>brightnessSlider</zorder>
+ <zorder>label_7</zorder>
+ <zorder>saturationSlider</zorder>
+ <zorder>label_2</zorder>
+ <zorder>hueSlider</zorder>
+ <zorder>label_10</zorder>
+ <zorder>aspectCombo</zorder>
+ <zorder>label_11</zorder>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="title">
+ <string>Audio options:</string>
+ </property>
+ <property name="flat">
+ <bool>true</bool>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout">
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>10</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Audio device:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="deviceCombo">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>10</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="sizeAdjustPolicy">
+ <enum>QComboBox::AdjustToMinimumContentsLength</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label_6">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>10</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Audio effect:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="audioEffectsCombo">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>10</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="sizeAdjustPolicy">
+ <enum>QComboBox::AdjustToMinimumContentsLength</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="effectButton">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Setup</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout">
+ <item>
+ <widget class="QLabel" name="crossFadeLabel">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>10</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string>Cross fade:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout">
+ <item>
+ <widget class="QSlider" name="crossFadeSlider">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimum">
+ <number>-20</number>
+ </property>
+ <property name="maximum">
+ <number>20</number>
+ </property>
+ <property name="singleStep">
+ <number>1</number>
+ </property>
+ <property name="pageStep">
+ <number>2</number>
+ </property>
+ <property name="value">
+ <number>0</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::TicksBelow</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout">
+ <item>
+ <widget class="QLabel" name="crossFadeLabel1">
+ <property name="font">
+ <font>
+ <pointsize>9</pointsize>
+ </font>
+ </property>
+ <property name="text">
+ <string>-10 Sec</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>0</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QLabel" name="crossFadeLabel2">
+ <property name="font">
+ <font>
+ <pointsize>9</pointsize>
+ </font>
+ </property>
+ <property name="text">
+ <string>0</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>0</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QLabel" name="crossFadeLabel3">
+ <property name="font">
+ <font>
+ <pointsize>9</pointsize>
+ </font>
+ </property>
+ <property name="text">
+ <string>10 Sec </string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>settings</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>settings</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/demos/qtdemo/colors.cpp b/demos/qtdemo/colors.cpp
index b1b5e9a6d..3299d59f8 100644
--- a/demos/qtdemo/colors.cpp
+++ b/demos/qtdemo/colors.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -274,6 +274,8 @@ void Colors::parseArgs(int argc, char *argv[])
+ "[-low] [-ticker-letters<int>] [-ticker-speed<float>] [-no-ticker-morph] "
+ "[-ticker-morph-speed<float>] [-ticker-text<string>]");
exit(0);
+ } else if (s == "-verbose") {
+ // this option was already handled above
} else{
QMessageBox::warning(0, "QtDemo", QString("Unrecognized argument:\n") + s);
exit(0);
diff --git a/demos/qtdemo/colors.h b/demos/qtdemo/colors.h
index 5a3c6f43c..bcea56d61 100644
--- a/demos/qtdemo/colors.h
+++ b/demos/qtdemo/colors.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/demoitem.cpp b/demos/qtdemo/demoitem.cpp
index 813edfc21..d5f8ae005 100644
--- a/demos/qtdemo/demoitem.cpp
+++ b/demos/qtdemo/demoitem.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/demoitem.h b/demos/qtdemo/demoitem.h
index 87807c05d..9312d63dd 100644
--- a/demos/qtdemo/demoitem.h
+++ b/demos/qtdemo/demoitem.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/demoitemanimation.cpp b/demos/qtdemo/demoitemanimation.cpp
index 5ab17efa0..385a2d38c 100644
--- a/demos/qtdemo/demoitemanimation.cpp
+++ b/demos/qtdemo/demoitemanimation.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/demoitemanimation.h b/demos/qtdemo/demoitemanimation.h
index 8ab6e2c2e..050657cb2 100644
--- a/demos/qtdemo/demoitemanimation.h
+++ b/demos/qtdemo/demoitemanimation.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/demoscene.cpp b/demos/qtdemo/demoscene.cpp
index ce65f49cf..2318806a1 100644
--- a/demos/qtdemo/demoscene.cpp
+++ b/demos/qtdemo/demoscene.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/demoscene.h b/demos/qtdemo/demoscene.h
index 517d12ed2..22c1117d7 100644
--- a/demos/qtdemo/demoscene.h
+++ b/demos/qtdemo/demoscene.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/demotextitem.cpp b/demos/qtdemo/demotextitem.cpp
index a18f53ffd..b560003d5 100644
--- a/demos/qtdemo/demotextitem.cpp
+++ b/demos/qtdemo/demotextitem.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/demotextitem.h b/demos/qtdemo/demotextitem.h
index 9bfa30875..fb73e07ee 100644
--- a/demos/qtdemo/demotextitem.h
+++ b/demos/qtdemo/demotextitem.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/dockitem.cpp b/demos/qtdemo/dockitem.cpp
index a8db34dea..2cb09be3b 100644
--- a/demos/qtdemo/dockitem.cpp
+++ b/demos/qtdemo/dockitem.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/dockitem.h b/demos/qtdemo/dockitem.h
index 1db1dfd14..b297eeb09 100644
--- a/demos/qtdemo/dockitem.h
+++ b/demos/qtdemo/dockitem.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/examplecontent.cpp b/demos/qtdemo/examplecontent.cpp
index f929d6530..dc1781cad 100644
--- a/demos/qtdemo/examplecontent.cpp
+++ b/demos/qtdemo/examplecontent.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/examplecontent.h b/demos/qtdemo/examplecontent.h
index bc85056a3..e9bde6649 100644
--- a/demos/qtdemo/examplecontent.h
+++ b/demos/qtdemo/examplecontent.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/guide.cpp b/demos/qtdemo/guide.cpp
index 487e026d6..d7dcb9669 100644
--- a/demos/qtdemo/guide.cpp
+++ b/demos/qtdemo/guide.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/guide.h b/demos/qtdemo/guide.h
index d8625cb87..74af01400 100644
--- a/demos/qtdemo/guide.h
+++ b/demos/qtdemo/guide.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/guidecircle.cpp b/demos/qtdemo/guidecircle.cpp
index 58f62b2f0..1a888d6a0 100644
--- a/demos/qtdemo/guidecircle.cpp
+++ b/demos/qtdemo/guidecircle.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/guidecircle.h b/demos/qtdemo/guidecircle.h
index 9275a2219..87ec47122 100644
--- a/demos/qtdemo/guidecircle.h
+++ b/demos/qtdemo/guidecircle.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/guideline.cpp b/demos/qtdemo/guideline.cpp
index d51eb21e0..9318d481b 100644
--- a/demos/qtdemo/guideline.cpp
+++ b/demos/qtdemo/guideline.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/guideline.h b/demos/qtdemo/guideline.h
index 80dbb0bbc..eed9918d6 100644
--- a/demos/qtdemo/guideline.h
+++ b/demos/qtdemo/guideline.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/headingitem.cpp b/demos/qtdemo/headingitem.cpp
index d325549f7..3ddc6d19f 100644
--- a/demos/qtdemo/headingitem.cpp
+++ b/demos/qtdemo/headingitem.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/headingitem.h b/demos/qtdemo/headingitem.h
index 087d435c1..120a4214a 100644
--- a/demos/qtdemo/headingitem.h
+++ b/demos/qtdemo/headingitem.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/imageitem.cpp b/demos/qtdemo/imageitem.cpp
index 1d9e25185..33320c1f9 100644
--- a/demos/qtdemo/imageitem.cpp
+++ b/demos/qtdemo/imageitem.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/imageitem.h b/demos/qtdemo/imageitem.h
index acaa7e073..4096e7627 100644
--- a/demos/qtdemo/imageitem.h
+++ b/demos/qtdemo/imageitem.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/itemcircleanimation.cpp b/demos/qtdemo/itemcircleanimation.cpp
index a8fc4d713..74c3e6acc 100644
--- a/demos/qtdemo/itemcircleanimation.cpp
+++ b/demos/qtdemo/itemcircleanimation.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -302,6 +302,7 @@ void ItemCircleAnimation::setupGuides()
int y = 20;
this->qtGuide1 = new GuideCircle(QRectF(x, y, 260, 260), -36, 342);
+ this->currGuide = 0;
new GuideLine(QPointF(x + 240, y + 268), this->qtGuide1);
new GuideLine(QPointF(x + 265, y + 246), this->qtGuide1);
new GuideLine(QPointF(x + 158, y + 134), this->qtGuide1);
diff --git a/demos/qtdemo/itemcircleanimation.h b/demos/qtdemo/itemcircleanimation.h
index a6bcb9b0c..b64762590 100644
--- a/demos/qtdemo/itemcircleanimation.h
+++ b/demos/qtdemo/itemcircleanimation.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/letteritem.cpp b/demos/qtdemo/letteritem.cpp
index 817927800..f3c8da22f 100644
--- a/demos/qtdemo/letteritem.cpp
+++ b/demos/qtdemo/letteritem.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/letteritem.h b/demos/qtdemo/letteritem.h
index 7d6834e7d..6492f67df 100644
--- a/demos/qtdemo/letteritem.h
+++ b/demos/qtdemo/letteritem.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/main.cpp b/demos/qtdemo/main.cpp
index 6dc12000c..287b8c7f0 100644
--- a/demos/qtdemo/main.cpp
+++ b/demos/qtdemo/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/mainwindow.cpp b/demos/qtdemo/mainwindow.cpp
index 5839b0c1f..2fc4e03a2 100644
--- a/demos/qtdemo/mainwindow.cpp
+++ b/demos/qtdemo/mainwindow.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/mainwindow.h b/demos/qtdemo/mainwindow.h
index 634a026b4..c85c907db 100644
--- a/demos/qtdemo/mainwindow.h
+++ b/demos/qtdemo/mainwindow.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/menucontent.cpp b/demos/qtdemo/menucontent.cpp
index f54874857..e605e8a5a 100644
--- a/demos/qtdemo/menucontent.cpp
+++ b/demos/qtdemo/menucontent.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/menucontent.h b/demos/qtdemo/menucontent.h
index 7a01852ae..b511e2276 100644
--- a/demos/qtdemo/menucontent.h
+++ b/demos/qtdemo/menucontent.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/menumanager.cpp b/demos/qtdemo/menumanager.cpp
index 005194aca..d5f802c30 100644
--- a/demos/qtdemo/menumanager.cpp
+++ b/demos/qtdemo/menumanager.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -324,9 +324,10 @@ void MenuManager::launchExample(const QString &name)
#ifdef Q_OS_WIN
//make sure it finds the dlls on windows
- QString curpath = QString::fromLocal8Bit(qgetenv("PATH").constData());
- QString newpath = QString("PATH=%1;%2").arg(QLibraryInfo::location(QLibraryInfo::BinariesPath), curpath);
- process->setEnvironment(QStringList(newpath));
+ QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
+ env.insert(QLatin1String("PATH"), QLibraryInfo::location(QLibraryInfo::BinariesPath)
+ + QLatin1Char(';') + env.value(QLatin1String("Path")));
+ process->setProcessEnvironment(env);
#endif
if (info[name]["changedirectory"] != "false"){
diff --git a/demos/qtdemo/menumanager.h b/demos/qtdemo/menumanager.h
index 80758e4f5..39e2f2d38 100644
--- a/demos/qtdemo/menumanager.h
+++ b/demos/qtdemo/menumanager.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/qtdemo.pro b/demos/qtdemo/qtdemo.pro
index 163ed17f6..011ea0c41 100644
--- a/demos/qtdemo/qtdemo.pro
+++ b/demos/qtdemo/qtdemo.pro
@@ -6,6 +6,8 @@ DESTDIR = $$DEMO_DESTDIR/bin
OBJECTS_DIR = .obj
MOC_DIR = .moc
INSTALLS += target sources
+
+
QT += xml network
contains(QT_CONFIG, opengl) {
@@ -67,6 +69,8 @@ ICON = qtdemo.icns
QMAKE_INFO_PLIST = Info_mac.plist
}
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
# install
target.path = $$[QT_INSTALL_BINS]
sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES qtdemo.pro images xml *.ico *.icns *.rc *.plist
diff --git a/demos/qtdemo/scanitem.cpp b/demos/qtdemo/scanitem.cpp
index 6438d896c..853b760a2 100644
--- a/demos/qtdemo/scanitem.cpp
+++ b/demos/qtdemo/scanitem.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/scanitem.h b/demos/qtdemo/scanitem.h
index 8abc1b35d..7ec563ed8 100644
--- a/demos/qtdemo/scanitem.h
+++ b/demos/qtdemo/scanitem.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/score.cpp b/demos/qtdemo/score.cpp
index 10c257809..45e6afafb 100644
--- a/demos/qtdemo/score.cpp
+++ b/demos/qtdemo/score.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/score.h b/demos/qtdemo/score.h
index 05ecab7f4..b51dd7b59 100644
--- a/demos/qtdemo/score.h
+++ b/demos/qtdemo/score.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/textbutton.cpp b/demos/qtdemo/textbutton.cpp
index 7a37ac1ea..51a34028d 100644
--- a/demos/qtdemo/textbutton.cpp
+++ b/demos/qtdemo/textbutton.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/textbutton.h b/demos/qtdemo/textbutton.h
index 6ae762b99..c5eb9c6b9 100644
--- a/demos/qtdemo/textbutton.h
+++ b/demos/qtdemo/textbutton.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/qtdemo/xml/examples.xml b/demos/qtdemo/xml/examples.xml
index 6c8ddb05b..e3240ab32 100644
--- a/demos/qtdemo/xml/examples.xml
+++ b/demos/qtdemo/xml/examples.xml
@@ -16,7 +16,7 @@
<example filename="embeddeddialogs" name="Embedded Dialogs" />
<example filename="interview" name="Interview" />
<example filename="browser" name="Browser" />
- <example filename="mediaplayer" name="Media Player" />
+ <example filename="qmediaplayer" name="Media Player" />
<example filename="boxes" name="Boxes" />
<example filename="sub-attaq" name="Sub-attaq" />
</demos>
@@ -25,7 +25,7 @@
<example filename="appchooser" name="Appchooser" />
<example filename="easing" name="Easing Curves" />
<example filename="moveblocks" name="Moving Blocks" />
- <example filename="states" name="UI States" />
+ <example filename="states" name="States" />
<example filename="stickman" name="Stickman" />
</category>
<category dirname="qtconcurrent" name="Concurrent Programming">
@@ -87,6 +87,7 @@
<example filename="combowidgetmapper" name="Combo Widget Mapper" />
<example filename="dirview" name="Directory View" />
<example filename="fetchmore" name="Fetch More" />
+ <example filename="frozencolumn" name="Frozen Column" />
<example filename="pixelator" name="Pixelator" />
<example filename="puzzle" name="Puzzle " image="itemviewspuzzle-example.png"/>
<example filename="simpledommodel" name="Simple DOM Model" />
@@ -121,7 +122,7 @@
<example filename="network-chat" name="Network Chat Client" />
<example filename="fortuneclient" name="Fortune Client" />
<example filename="fortuneserver" name="Fortune Server" />
- <example filename="ftp" changedirectory="false" name="FTP Client" />
+ <example filename="qftp" changedirectory="false" name="FTP Client" />
<example filename="http" changedirectory="false" name="HTTP Client" />
<example filename="loopback" name="Loopback" />
<example filename="threadedfortuneserver" name="Threaded Fort. Server" />
@@ -152,9 +153,9 @@
<example filename="transformations" name="Transformations" />
</category>
<category dirname="phonon" name="Phonon">
- <example filename="musicplayer" name="Music Player" />
+ <example filename="qmusicplayer" name="Music Player" />
</category>
- <category dirname="multimedia/audio" name="Multimedia">
+ <category dirname="multimedia" name="Multimedia">
<example filename="audiodevices" name="Audio Devices" />
<example filename="audiooutput" name="Audio Output" />
<example filename="audioinput" name="Audio Input" />
@@ -184,7 +185,6 @@
<category dirname="statemachine" name="State Machine">
<example filename="eventtransitions" name="Event Transitions" />
<example filename="rogue" name="Rogue" />
- <example filename="tankgame" name="Tank Game" />
<example filename="trafficlight" name="Traffic Light" />
<example filename="twowaybutton" name="Two-way Button" />
</category>
@@ -196,6 +196,7 @@
<example filename="completer" name="Completer" />
<example filename="customcompleter" name="Custom Completer" />
<example filename="i18n" name="Internationalization" />
+ <example filename="inputpanel" name="Input Panel" />
<example filename="plugandpaint" name="Plug and Paint" />
<example filename="regexp" name="Regular Expressions" />
<example filename="settingseditor" name="Settings Editor" />
diff --git a/demos/shared/arthurstyle.cpp b/demos/shared/arthurstyle.cpp
index eece79dde..76e8a3fd5 100644
--- a/demos/shared/arthurstyle.cpp
+++ b/demos/shared/arthurstyle.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/shared/arthurstyle.h b/demos/shared/arthurstyle.h
index 95feaca19..8081df156 100644
--- a/demos/shared/arthurstyle.h
+++ b/demos/shared/arthurstyle.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/shared/arthurwidgets.cpp b/demos/shared/arthurwidgets.cpp
index 6ec5a3cf8..d9c495534 100644
--- a/demos/shared/arthurwidgets.cpp
+++ b/demos/shared/arthurwidgets.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/shared/arthurwidgets.h b/demos/shared/arthurwidgets.h
index 3aba30b29..7b02bcd5c 100644
--- a/demos/shared/arthurwidgets.h
+++ b/demos/shared/arthurwidgets.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,13 +49,32 @@
#if defined(QT_OPENGL_SUPPORT)
#include <QGLWidget>
+#include <QEvent>
class GLWidget : public QGLWidget
{
public:
GLWidget(QWidget *parent)
- : QGLWidget(QGLFormat(QGL::SampleBuffers), parent) {}
+ : QGLWidget(QGLFormat(QGL::SampleBuffers), parent)
+ {
+ setAttribute(Qt::WA_AcceptTouchEvents);
+ }
void disableAutoBufferSwap() { setAutoBufferSwap(false); }
void paintEvent(QPaintEvent *) { parentWidget()->update(); }
+protected:
+ bool event(QEvent *event)
+ {
+ switch (event->type()) {
+ case QEvent::TouchBegin:
+ case QEvent::TouchUpdate:
+ case QEvent::TouchEnd:
+ event->ignore();
+ return false;
+ break;
+ default:
+ break;
+ }
+ return QGLWidget::event(event);
+ }
};
#endif
diff --git a/demos/shared/hoverpoints.cpp b/demos/shared/hoverpoints.cpp
index 1d7b08f8e..d8c72f33d 100644
--- a/demos/shared/hoverpoints.cpp
+++ b/demos/shared/hoverpoints.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,6 +53,7 @@ HoverPoints::HoverPoints(QWidget *widget, PointShape shape)
{
m_widget = widget;
widget->installEventFilter(this);
+ widget->setAttribute(Qt::WA_AcceptTouchEvents);
m_connectionType = CurveConnection;
m_sortType = NoSort;
@@ -65,7 +66,7 @@ HoverPoints::HoverPoints(QWidget *widget, PointShape shape)
m_editable = true;
m_enabled = true;
- connect(this, SIGNAL(pointsChanged(const QPolygonF &)),
+ connect(this, SIGNAL(pointsChanged(QPolygonF)),
m_widget, SLOT(update()));
}
@@ -86,6 +87,8 @@ bool HoverPoints::eventFilter(QObject *object, QEvent *event)
case QEvent::MouseButtonPress:
{
+ if (!m_fingerPointMapping.isEmpty())
+ return true;
QMouseEvent *me = (QMouseEvent *) event;
QPointF clickPos = me->pos();
@@ -147,13 +150,90 @@ bool HoverPoints::eventFilter(QObject *object, QEvent *event)
break;
case QEvent::MouseButtonRelease:
+ if (!m_fingerPointMapping.isEmpty())
+ return true;
m_currentIndex = -1;
break;
case QEvent::MouseMove:
+ if (!m_fingerPointMapping.isEmpty())
+ return true;
if (m_currentIndex >= 0)
movePoint(m_currentIndex, ((QMouseEvent *)event)->pos());
break;
+ case QEvent::TouchBegin:
+ case QEvent::TouchUpdate:
+ {
+ const QTouchEvent *const touchEvent = static_cast<const QTouchEvent*>(event);
+ const QList<QTouchEvent::TouchPoint> points = touchEvent->touchPoints();
+ const qreal pointSize = qMax(m_pointSize.width(), m_pointSize.height());
+ foreach (const QTouchEvent::TouchPoint &touchPoint, points) {
+ const int id = touchPoint.id();
+ switch (touchPoint.state()) {
+ case Qt::TouchPointPressed:
+ {
+ // find the point, move it
+ QSet<int> activePoints = QSet<int>::fromList(m_fingerPointMapping.values());
+ int activePoint = -1;
+ qreal distance = -1;
+ const int pointsCount = m_points.size();
+ const int activePointCount = activePoints.size();
+ if (pointsCount == 2 && activePointCount == 1) { // only two points
+ activePoint = activePoints.contains(0) ? 1 : 0;
+ } else {
+ for (int i=0; i<pointsCount; ++i) {
+ if (activePoints.contains(i))
+ continue;
+
+ qreal d = QLineF(touchPoint.pos(), m_points.at(i)).length();
+ if ((distance < 0 && d < 12 * pointSize) || d < distance) {
+ distance = d;
+ activePoint = i;
+ }
+
+ }
+ }
+ if (activePoint != -1) {
+ m_fingerPointMapping.insert(touchPoint.id(), activePoint);
+ movePoint(activePoint, touchPoint.pos());
+ }
+ }
+ break;
+ case Qt::TouchPointReleased:
+ {
+ // move the point and release
+ QHash<int,int>::iterator it = m_fingerPointMapping.find(id);
+ movePoint(it.value(), touchPoint.pos());
+ m_fingerPointMapping.erase(it);
+ }
+ break;
+ case Qt::TouchPointMoved:
+ {
+ // move the point
+ const int pointIdx = m_fingerPointMapping.value(id, -1);
+ if (pointIdx >= 0) // do we track this point?
+ movePoint(pointIdx, touchPoint.pos());
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ if (m_fingerPointMapping.isEmpty()) {
+ event->ignore();
+ return false;
+ } else {
+ return true;
+ }
+ }
+ break;
+ case QEvent::TouchEnd:
+ if (m_fingerPointMapping.isEmpty()) {
+ event->ignore();
+ return false;
+ }
+ return true;
+ break;
case QEvent::Resize:
{
@@ -262,6 +342,8 @@ static QPointF bound_point(const QPointF &point, const QRectF &bounds, int lock)
void HoverPoints::setPoints(const QPolygonF &points)
{
+ if (points.size() != m_points.size())
+ m_fingerPointMapping.clear();
m_points.clear();
for (int i=0; i<points.size(); ++i)
m_points << bound_point(points.at(i), boundingRect(), 0);
diff --git a/demos/shared/hoverpoints.h b/demos/shared/hoverpoints.h
index efd34cf6e..23ac8c1e1 100644
--- a/demos/shared/hoverpoints.h
+++ b/demos/shared/hoverpoints.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -133,6 +133,8 @@ private:
bool m_editable;
bool m_enabled;
+ QHash<int, int> m_fingerPointMapping;
+
QPen m_pointPen;
QBrush m_pointBrush;
QPen m_connectionPen;
diff --git a/demos/shared/shared.pri b/demos/shared/shared.pri
index b5515950a..1541fa724 100644
--- a/demos/shared/shared.pri
+++ b/demos/shared/shared.pri
@@ -16,5 +16,6 @@ contains(CONFIG, debug_and_release_target) {
hpux-acc*:LIBS += $$SHARED_FOLDER/libdemo_shared.a
hpuxi-acc*:LIBS += $$SHARED_FOLDER/libdemo_shared.a
-!hpuxi-acc*:!hpux-acc*:LIBS += -ldemo_shared
+symbian:LIBS += -ldemo_shared.lib
+!hpuxi-acc*:!hpux-acc*:!symbian:LIBS += -ldemo_shared
diff --git a/demos/shared/shared.pro b/demos/shared/shared.pro
index cabce25d1..0f7137fea 100644
--- a/demos/shared/shared.pro
+++ b/demos/shared/shared.pro
@@ -29,5 +29,10 @@ target.path = $$[QT_INSTALL_DEMOS]/shared
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.pri images
sources.path = $$[QT_INSTALL_DEMOS]/shared
INSTALLS += sources
+
!cross_compile:INSTALLS += target
+symbian {
+ TARGET.UID3 = 0xA000A63C
+ include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+}
diff --git a/demos/spreadsheet/main.cpp b/demos/spreadsheet/main.cpp
index 0d7bb4a49..fc8ed93ae 100644
--- a/demos/spreadsheet/main.cpp
+++ b/demos/spreadsheet/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/spreadsheet/printview.cpp b/demos/spreadsheet/printview.cpp
index bcdec8133..0f667c7ea 100644
--- a/demos/spreadsheet/printview.cpp
+++ b/demos/spreadsheet/printview.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/spreadsheet/printview.h b/demos/spreadsheet/printview.h
index 310667225..04b97d7fd 100644
--- a/demos/spreadsheet/printview.h
+++ b/demos/spreadsheet/printview.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/spreadsheet/spreadsheet.cpp b/demos/spreadsheet/spreadsheet.cpp
index 97e070eb7..73c8037f4 100644
--- a/demos/spreadsheet/spreadsheet.cpp
+++ b/demos/spreadsheet/spreadsheet.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -73,9 +73,9 @@ SpreadSheet::SpreadSheet(int rows, int cols, QWidget *parent)
setCentralWidget(table);
statusBar();
- connect(table, SIGNAL(currentItemChanged(QTableWidgetItem*, QTableWidgetItem*)),
+ connect(table, SIGNAL(currentItemChanged(QTableWidgetItem*,QTableWidgetItem*)),
this, SLOT(updateStatus(QTableWidgetItem*)));
- connect(table, SIGNAL(currentItemChanged(QTableWidgetItem*, QTableWidgetItem*)),
+ connect(table, SIGNAL(currentItemChanged(QTableWidgetItem*,QTableWidgetItem*)),
this, SLOT(updateColor(QTableWidgetItem*)));
connect(table, SIGNAL(currentItemChanged(QTableWidgetItem*,QTableWidgetItem*)),
this, SLOT(updateLineEdit(QTableWidgetItem*)));
@@ -420,7 +420,7 @@ void SpreadSheet::actionMath_helper(const QString &title, const QString &op)
&cell1, &cell2, &out)) {
int row, col;
decode_pos(out, &row, &col);
- table->item(row, col)->setText(tr("%1, %2, %3").arg(op, cell1, cell2));
+ table->item(row, col)->setText(tr("%1 %2 %3").arg(op, cell1, cell2));
}
}
@@ -523,6 +523,7 @@ void SpreadSheet::setupContents()
table->setItem(8, 2, new SpreadSheetItem("1240"));
table->setItem(9, 2, new SpreadSheetItem());
+ table->item(9, 2)->setBackgroundColor(Qt::lightGray);
// column 3
table->setItem(0, 3, new SpreadSheetItem("Currency"));
@@ -623,8 +624,8 @@ void SpreadSheet::print()
QPrintPreviewDialog dlg(&printer);
PrintView view;
view.setModel(table->model());
- connect(&dlg, SIGNAL(paintRequested(QPrinter *)),
- &view, SLOT(print(QPrinter *)));
+ connect(&dlg, SIGNAL(paintRequested(QPrinter*)),
+ &view, SLOT(print(QPrinter*)));
dlg.exec();
#endif
}
diff --git a/demos/spreadsheet/spreadsheet.h b/demos/spreadsheet/spreadsheet.h
index d0a7fb681..7753fbd34 100644
--- a/demos/spreadsheet/spreadsheet.h
+++ b/demos/spreadsheet/spreadsheet.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/spreadsheet/spreadsheet.pro b/demos/spreadsheet/spreadsheet.pro
index 6ed001658..6b38abe35 100644
--- a/demos/spreadsheet/spreadsheet.pro
+++ b/demos/spreadsheet/spreadsheet.pro
@@ -31,3 +31,4 @@ sources.files = $$SOURCES $$RESOURCES *.pro images $$HEADERS
sources.path = $$[QT_INSTALL_DEMOS]/spreadsheet
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/demos/spreadsheet/spreadsheetdelegate.cpp b/demos/spreadsheet/spreadsheetdelegate.cpp
index a7d801fb4..d80ccdb6d 100644
--- a/demos/spreadsheet/spreadsheetdelegate.cpp
+++ b/demos/spreadsheet/spreadsheetdelegate.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/spreadsheet/spreadsheetdelegate.h b/demos/spreadsheet/spreadsheetdelegate.h
index d61d7002c..61af96c77 100644
--- a/demos/spreadsheet/spreadsheetdelegate.h
+++ b/demos/spreadsheet/spreadsheetdelegate.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/spreadsheet/spreadsheetitem.cpp b/demos/spreadsheet/spreadsheetitem.cpp
index de6683e00..f5293c002 100644
--- a/demos/spreadsheet/spreadsheetitem.cpp
+++ b/demos/spreadsheet/spreadsheetitem.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/spreadsheet/spreadsheetitem.h b/demos/spreadsheet/spreadsheetitem.h
index fc0a9439d..0e62cfb03 100644
--- a/demos/spreadsheet/spreadsheetitem.h
+++ b/demos/spreadsheet/spreadsheetitem.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/sqlbrowser/browser.cpp b/demos/sqlbrowser/browser.cpp
index 6fe3f8165..6d0644043 100644
--- a/demos/sqlbrowser/browser.cpp
+++ b/demos/sqlbrowser/browser.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/sqlbrowser/browser.h b/demos/sqlbrowser/browser.h
index 1cfb07ac5..24f5caabc 100644
--- a/demos/sqlbrowser/browser.h
+++ b/demos/sqlbrowser/browser.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/sqlbrowser/connectionwidget.cpp b/demos/sqlbrowser/connectionwidget.cpp
index 0afd721a4..d49069a0a 100644
--- a/demos/sqlbrowser/connectionwidget.cpp
+++ b/demos/sqlbrowser/connectionwidget.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/sqlbrowser/connectionwidget.h b/demos/sqlbrowser/connectionwidget.h
index 8ec3935f9..a0a0ce3bd 100644
--- a/demos/sqlbrowser/connectionwidget.h
+++ b/demos/sqlbrowser/connectionwidget.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/sqlbrowser/main.cpp b/demos/sqlbrowser/main.cpp
index 47be464c3..6771f19ef 100644
--- a/demos/sqlbrowser/main.cpp
+++ b/demos/sqlbrowser/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/sqlbrowser/qsqlconnectiondialog.cpp b/demos/sqlbrowser/qsqlconnectiondialog.cpp
index d57ac7d9d..47a9ac132 100644
--- a/demos/sqlbrowser/qsqlconnectiondialog.cpp
+++ b/demos/sqlbrowser/qsqlconnectiondialog.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/sqlbrowser/qsqlconnectiondialog.h b/demos/sqlbrowser/qsqlconnectiondialog.h
index 2bd84ff85..863ea1665 100644
--- a/demos/sqlbrowser/qsqlconnectiondialog.h
+++ b/demos/sqlbrowser/qsqlconnectiondialog.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/sqlbrowser/sqlbrowser.pro b/demos/sqlbrowser/sqlbrowser.pro
index 920e8a001..3a8036d0f 100644
--- a/demos/sqlbrowser/sqlbrowser.pro
+++ b/demos/sqlbrowser/sqlbrowser.pro
@@ -18,6 +18,8 @@ sources.files = $$SOURCES $$HEADERS $$FORMS *.pro
sources.path = $$[QT_INSTALL_DEMOS]/sqlbrowser
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
+
wince*: {
DEPLOYMENT_PLUGIN += qsqlite
}
diff --git a/demos/sub-attaq/animationmanager.cpp b/demos/sub-attaq/animationmanager.cpp
index 09a2a1b99..b3fc8e1b0 100644
--- a/demos/sub-attaq/animationmanager.cpp
+++ b/demos/sub-attaq/animationmanager.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -62,11 +62,18 @@ AnimationManager *AnimationManager::self()
void AnimationManager::registerAnimation(QAbstractAnimation *anim)
{
+ QObject::connect(anim, SIGNAL(destroyed(QObject*)), this, SLOT(unregisterAnimation_helper(QObject*)));
animations.append(anim);
}
+void AnimationManager::unregisterAnimation_helper(QObject *obj)
+{
+ unregisterAnimation(static_cast<QAbstractAnimation*>(obj));
+}
+
void AnimationManager::unregisterAnimation(QAbstractAnimation *anim)
{
+ QObject::disconnect(anim, SIGNAL(destroyed(QObject*)), this, SLOT(unregisterAnimation_helper(QObject*)));
animations.removeAll(anim);
}
@@ -77,16 +84,14 @@ void AnimationManager::unregisterAllAnimations()
void AnimationManager::pauseAll()
{
- foreach (QAbstractAnimation* animation, animations)
- {
+ foreach (QAbstractAnimation* animation, animations) {
if (animation->state() == QAbstractAnimation::Running)
animation->pause();
}
}
void AnimationManager::resumeAll()
{
- foreach (QAbstractAnimation* animation, animations)
- {
+ foreach (QAbstractAnimation* animation, animations) {
if (animation->state() == QAbstractAnimation::Paused)
animation->resume();
}
diff --git a/demos/sub-attaq/animationmanager.h b/demos/sub-attaq/animationmanager.h
index f48fe3468..48d84d1a3 100644
--- a/demos/sub-attaq/animationmanager.h
+++ b/demos/sub-attaq/animationmanager.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -62,6 +62,9 @@ public slots:
void pauseAll();
void resumeAll();
+private slots:
+ void unregisterAnimation_helper(QObject *obj);
+
private:
static AnimationManager *instance;
QList<QAbstractAnimation *> animations;
diff --git a/demos/sub-attaq/boat.cpp b/demos/sub-attaq/boat.cpp
index 579974323..6fed9a922 100644
--- a/demos/sub-attaq/boat.cpp
+++ b/demos/sub-attaq/boat.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -46,7 +46,6 @@
#include "pixmapitem.h"
#include "graphicsscene.h"
#include "animationmanager.h"
-#include "custompropertyanimation.h"
#include "qanimationstate.h"
//Qt
@@ -60,87 +59,43 @@
static QAbstractAnimation *setupDestroyAnimation(Boat *boat)
{
QSequentialAnimationGroup *group = new QSequentialAnimationGroup(boat);
-#if QT_VERSION >=0x040500
- PixmapItem *step1 = new PixmapItem(QString("explosion/boat/step1"),GraphicsScene::Big, boat);
- step1->setZValue(6);
- PixmapItem *step2 = new PixmapItem(QString("explosion/boat/step2"),GraphicsScene::Big, boat);
- step2->setZValue(6);
- PixmapItem *step3 = new PixmapItem(QString("explosion/boat/step3"),GraphicsScene::Big, boat);
- step3->setZValue(6);
- PixmapItem *step4 = new PixmapItem(QString("explosion/boat/step4"),GraphicsScene::Big, boat);
- step4->setZValue(6);
- step1->setOpacity(0);
- step2->setOpacity(0);
- step3->setOpacity(0);
- step4->setOpacity(0);
- CustomPropertyAnimation *anim1 = new CustomPropertyAnimation(boat);
- anim1->setMemberFunctions((QGraphicsItem*)step1, &QGraphicsItem::opacity, &QGraphicsItem::setOpacity);
- anim1->setDuration(100);
- anim1->setEndValue(1);
- CustomPropertyAnimation *anim2 = new CustomPropertyAnimation(boat);
- anim2->setMemberFunctions((QGraphicsItem*)step2, &QGraphicsItem::opacity, &QGraphicsItem::setOpacity);
- anim2->setDuration(100);
- anim2->setEndValue(1);
- CustomPropertyAnimation *anim3 = new CustomPropertyAnimation(boat);
- anim3->setMemberFunctions((QGraphicsItem*)step3, &QGraphicsItem::opacity, &QGraphicsItem::setOpacity);
- anim3->setDuration(100);
- anim3->setEndValue(1);
- CustomPropertyAnimation *anim4 = new CustomPropertyAnimation(boat);
- anim4->setMemberFunctions((QGraphicsItem*)step4, &QGraphicsItem::opacity, &QGraphicsItem::setOpacity);
- anim4->setDuration(100);
- anim4->setEndValue(1);
- CustomPropertyAnimation *anim5 = new CustomPropertyAnimation(boat);
- anim5->setMemberFunctions((QGraphicsItem*)step1, &QGraphicsItem::opacity, &QGraphicsItem::setOpacity);
- anim5->setDuration(100);
- anim5->setEndValue(0);
- CustomPropertyAnimation *anim6 = new CustomPropertyAnimation(boat);
- anim6->setMemberFunctions((QGraphicsItem*)step2, &QGraphicsItem::opacity, &QGraphicsItem::setOpacity);
- anim6->setDuration(100);
- anim6->setEndValue(0);
- CustomPropertyAnimation *anim7 = new CustomPropertyAnimation(boat);
- anim7->setMemberFunctions((QGraphicsItem*)step3, &QGraphicsItem::opacity, &QGraphicsItem::setOpacity);
- anim7->setDuration(100);
- anim7->setEndValue(0);
- CustomPropertyAnimation *anim8 = new CustomPropertyAnimation(boat);
- anim8->setMemberFunctions((QGraphicsItem*)step4, &QGraphicsItem::opacity, &QGraphicsItem::setOpacity);
- anim8->setDuration(100);
- anim8->setEndValue(0);
- group->addAnimation(anim1);
- group->addAnimation(anim2);
- group->addAnimation(anim3);
- group->addAnimation(anim4);
- group->addAnimation(anim5);
- group->addAnimation(anim6);
- group->addAnimation(anim7);
- group->addAnimation(anim8);
-#else
- // work around for a bug where we don't transition if the duration is zero.
- QtPauseAnimation *anim = new QtPauseAnimation(group);
- anim->setDuration(1);
- group->addAnimation(anim);
-#endif
+ for (int i = 1; i <= 4; i++) {
+ PixmapItem *step = new PixmapItem(QString("explosion/boat/step%1").arg(i),GraphicsScene::Big, boat);
+ step->setZValue(6);
+ step->setOpacity(0);
+
+ //fade-in
+ QPropertyAnimation *anim = new QPropertyAnimation(step, "opacity");
+ anim->setEndValue(1);
+ anim->setDuration(100);
+ group->insertAnimation(i-1, anim);
+
+ //and then fade-out
+ QPropertyAnimation *anim2 = new QPropertyAnimation(step, "opacity");
+ anim2->setEndValue(0);
+ anim2->setDuration(100);
+ group->addAnimation(anim2);
+ }
+
AnimationManager::self()->registerAnimation(group);
return group;
}
-Boat::Boat(QGraphicsItem * parent, Qt::WindowFlags wFlags)
- : QGraphicsWidget(parent,wFlags), speed(0), bombsAlreadyLaunched(0), direction(Boat::None), movementAnimation(0)
+Boat::Boat() : PixmapItem(QString("boat"), GraphicsScene::Big),
+ speed(0), bombsAlreadyLaunched(0), direction(Boat::None), movementAnimation(0)
{
- pixmapItem = new PixmapItem(QString("boat"),GraphicsScene::Big, this);
setZValue(4);
- setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
- setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsFocusable);
- resize(pixmapItem->boundingRect().size());
+ setFlags(QGraphicsItem::ItemIsFocusable);
//The movement animation used to animate the boat
movementAnimation = new QPropertyAnimation(this, "pos");
- //The movement animation used to animate the boat
+ //The destroy animation used to explode the boat
destroyAnimation = setupDestroyAnimation(this);
- //We setup the state machien of the boat
+ //We setup the state machine of the boat
machine = new QStateMachine(this);
QState *moving = new QState(machine);
StopState *stopState = new StopState(this, moving);
@@ -223,13 +178,13 @@ Boat::Boat(QGraphicsItem * parent, Qt::WindowFlags wFlags)
destroyedState->setAnimation(destroyAnimation);
//Play a nice animation when the boat is destroyed
- moving->addTransition(this, SIGNAL(boatDestroyed()),destroyedState);
+ moving->addTransition(this, SIGNAL(boatDestroyed()), destroyedState);
//Transition to final state when the destroyed animation is finished
destroyedState->addTransition(destroyedState, SIGNAL(animationFinished()), final);
//The machine has finished to be executed, then the boat is dead
- connect(machine,SIGNAL(finished()),this, SIGNAL(boatExecutionFinished()));
+ connect(machine,SIGNAL(finished()), this, SIGNAL(boatExecutionFinished()));
}
@@ -255,7 +210,6 @@ void Boat::updateBoatMovement()
}
movementAnimation->stop();
- movementAnimation->setStartValue(pos());
if (direction == Boat::Left) {
movementAnimation->setEndValue(QPointF(0,y()));
diff --git a/demos/sub-attaq/boat.h b/demos/sub-attaq/boat.h
index b80f6dced..0b4de1e59 100644
--- a/demos/sub-attaq/boat.h
+++ b/demos/sub-attaq/boat.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,13 +42,8 @@
#ifndef __BOAT__H__
#define __BOAT__H__
-//Qt
-#include <QtCore/QObject>
-#include <QtGui/QKeyEvent>
-
-#include <QtGui/QGraphicsWidget>
+#include "pixmapitem.h"
-class PixmapItem;
class Bomb;
QT_BEGIN_NAMESPACE
class QVariantAnimation;
@@ -56,7 +51,7 @@ class QAbstractAnimation;
class QStateMachine;
QT_END_NAMESPACE
-class Boat : public QGraphicsWidget
+class Boat : public PixmapItem
{
Q_OBJECT
public:
@@ -66,7 +61,7 @@ public:
Right
};
enum { Type = UserType + 2 };
- Boat(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = 0);
+ Boat();
void destroy();
void run();
void stop();
@@ -95,7 +90,6 @@ private:
QVariantAnimation *movementAnimation;
QAbstractAnimation *destroyAnimation;
QStateMachine *machine;
- PixmapItem *pixmapItem;
};
#endif //__BOAT__H__
diff --git a/demos/sub-attaq/boat_p.h b/demos/sub-attaq/boat_p.h
index 5fcde6295..6eb52b6f0 100644
--- a/demos/sub-attaq/boat_p.h
+++ b/demos/sub-attaq/boat_p.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the examples of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -67,22 +67,16 @@ static const int MAX_BOMB = 5;
class KeyStopTransition : public QKeyEventTransition
{
public:
- KeyStopTransition(Boat *boat, QEvent::Type type, int key)
- : QKeyEventTransition(boat, type, key)
+ KeyStopTransition(Boat *b, QEvent::Type t, int k)
+ : QKeyEventTransition(b, t, k), boat(b), key(k)
{
- this->boat = boat;
- this->key = key;
}
protected:
virtual bool eventTest(QEvent *event)
{
- Q_UNUSED(event);
if (!QKeyEventTransition::eventTest(event))
return false;
- if (boat->currentSpeed() == 1)
- return true;
- else
- return false;
+ return (boat->currentSpeed() == 1);
}
private:
Boat * boat;
@@ -93,23 +87,16 @@ private:
class KeyMoveTransition : public QKeyEventTransition
{
public:
- KeyMoveTransition(Boat *boat, QEvent::Type type, int key)
- : QKeyEventTransition(boat, type, key)
+ KeyMoveTransition(Boat *b, QEvent::Type t, int k)
+ : QKeyEventTransition(b, t, k), boat(b), key(k)
{
- this->boat = boat;
- this->key = key;
}
protected:
virtual bool eventTest(QEvent *event)
{
- Q_UNUSED(event);
if (!QKeyEventTransition::eventTest(event))
return false;
- if (boat->currentSpeed() >= 0)
- return true;
- else
- return false;
-
+ return (boat->currentSpeed() >= 0);
}
void onTransition(QEvent *)
{
@@ -132,22 +119,16 @@ private:
{
public:
KeyLaunchTransition(Boat *boat, QEvent::Type type, int key)
- : QKeyEventTransition(boat, type, key)
+ : QKeyEventTransition(boat, type, key), boat(boat), key(key)
{
- this->boat = boat;
- this->key = key;
}
protected:
virtual bool eventTest(QEvent *event)
{
- Q_UNUSED(event);
if (!QKeyEventTransition::eventTest(event))
return false;
//We have enough bomb?
- if (boat->bombsLaunched() < MAX_BOMB)
- return true;
- else
- return false;
+ return (boat->bombsLaunched() < MAX_BOMB);
}
private:
Boat * boat;
@@ -158,9 +139,8 @@ private:
class MoveStateRight : public QState
{
public:
- MoveStateRight(Boat *boat,QState *parent = 0) : QState(parent)
+ MoveStateRight(Boat *boat,QState *parent = 0) : QState(parent), boat(boat)
{
- this->boat = boat;
}
protected:
void onEntry(QEvent *)
@@ -176,9 +156,8 @@ private:
class MoveStateLeft : public QState
{
public:
- MoveStateLeft(Boat *boat,QState *parent = 0) : QState(parent)
+ MoveStateLeft(Boat *boat,QState *parent = 0) : QState(parent), boat(boat)
{
- this->boat = boat;
}
protected:
void onEntry(QEvent *)
@@ -194,9 +173,8 @@ private:
class StopState : public QState
{
public:
- StopState(Boat *boat,QState *parent = 0) : QState(parent)
+ StopState(Boat *boat,QState *parent = 0) : QState(parent), boat(boat)
{
- this->boat = boat;
}
protected:
void onEntry(QEvent *)
@@ -213,9 +191,8 @@ private:
class LaunchStateRight : public QState
{
public:
- LaunchStateRight(Boat *boat,QState *parent = 0) : QState(parent)
+ LaunchStateRight(Boat *boat,QState *parent = 0) : QState(parent), boat(boat)
{
- this->boat = boat;
}
protected:
void onEntry(QEvent *)
@@ -235,9 +212,8 @@ private:
class LaunchStateLeft : public QState
{
public:
- LaunchStateLeft(Boat *boat,QState *parent = 0) : QState(parent)
+ LaunchStateLeft(Boat *boat,QState *parent = 0) : QState(parent), boat(boat)
{
- this->boat = boat;
}
protected:
void onEntry(QEvent *)
diff --git a/demos/sub-attaq/bomb.cpp b/demos/sub-attaq/bomb.cpp
index b047341d7..a0096a017 100644
--- a/demos/sub-attaq/bomb.cpp
+++ b/demos/sub-attaq/bomb.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,19 +52,14 @@
#include <QtCore/QStateMachine>
#include <QtCore/QFinalState>
-Bomb::Bomb(QGraphicsItem * parent, Qt::WindowFlags wFlags)
- : QGraphicsWidget(parent,wFlags), launchAnimation(0)
+Bomb::Bomb() : PixmapItem(QString("bomb"), GraphicsScene::Big)
{
- pixmapItem = new PixmapItem(QString("bomb"),GraphicsScene::Big, this);
- setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
- setFlags(QGraphicsItem::ItemIsMovable);
setZValue(2);
- resize(pixmapItem->boundingRect().size());
}
void Bomb::launch(Bomb::Direction direction)
{
- launchAnimation = new QSequentialAnimationGroup();
+ QSequentialAnimationGroup *launchAnimation = new QSequentialAnimationGroup;
AnimationManager::self()->registerAnimation(launchAnimation);
qreal delta = direction == Right ? 20 : - 20;
QPropertyAnimation *anim = new QPropertyAnimation(this, "pos");
@@ -79,8 +74,8 @@ void Bomb::launch(Bomb::Direction direction)
anim->setEndValue(QPointF(x() + delta*2,scene()->height()));
anim->setDuration(y()/2*60);
launchAnimation->addAnimation(anim);
- connect(anim,SIGNAL(valueChanged(const QVariant &)),this,SLOT(onAnimationLaunchValueChanged(const QVariant &)));
-
+ connect(anim,SIGNAL(valueChanged(QVariant)),this,SLOT(onAnimationLaunchValueChanged(QVariant)));
+ connect(this, SIGNAL(bombExploded()), launchAnimation, SLOT(stop()));
//We setup the state machine of the bomb
QStateMachine *machine = new QStateMachine(this);
@@ -94,7 +89,7 @@ void Bomb::launch(Bomb::Direction direction)
machine->setInitialState(launched);
//### Add a nice animation when the bomb is destroyed
- launched->addTransition(this, SIGNAL(bombExplosed()),final);
+ launched->addTransition(this, SIGNAL(bombExploded()),final);
//If the animation is finished, then we move to the final state
launched->addTransition(launched, SIGNAL(animationFinished()), final);
@@ -119,6 +114,5 @@ void Bomb::onAnimationLaunchValueChanged(const QVariant &)
void Bomb::destroy()
{
- launchAnimation->stop();
- emit bombExplosed();
+ emit bombExploded();
}
diff --git a/demos/sub-attaq/bomb.h b/demos/sub-attaq/bomb.h
index 60d3fabad..ec059b58a 100644
--- a/demos/sub-attaq/bomb.h
+++ b/demos/sub-attaq/bomb.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,13 +42,9 @@
#ifndef __BOMB__H__
#define __BOMB__H__
-//Qt
-#include <QtGui/QGraphicsWidget>
-#include <QtCore/QAnimationGroup>
+#include "pixmapitem.h"
-class PixmapItem;
-
-class Bomb : public QGraphicsWidget
+class Bomb : public PixmapItem
{
Q_OBJECT
public:
@@ -56,20 +52,16 @@ public:
Left = 0,
Right
};
- Bomb(QGraphicsItem * parent = 0, Qt::WindowFlags wFlags = 0);
+ Bomb();
void launch(Direction direction);
void destroy();
signals:
- void bombExplosed();
+ void bombExploded();
void bombExecutionFinished();
private slots:
void onAnimationLaunchValueChanged(const QVariant &);
-
-private:
- QAnimationGroup *launchAnimation;
- PixmapItem *pixmapItem;
};
#endif //__BOMB__H__
diff --git a/demos/sub-attaq/custompropertyanimation.cpp b/demos/sub-attaq/custompropertyanimation.cpp
deleted file mode 100644
index 3975ce4cd..000000000
--- a/demos/sub-attaq/custompropertyanimation.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "custompropertyanimation.h"
-
-// Qt
-#include <QtCore/qdebug.h>
-
-CustomPropertyAnimation::CustomPropertyAnimation(QObject *parent) :
- QVariantAnimation(parent), animProp(0)
-{
-}
-
-CustomPropertyAnimation::~CustomPropertyAnimation()
-{
-}
-
-void CustomPropertyAnimation::setProperty(AbstractProperty *_animProp)
-{
- if (animProp == _animProp)
- return;
- delete animProp;
- animProp = _animProp;
-}
-
-/*!
- \reimp
- */
-void CustomPropertyAnimation::updateCurrentValue(const QVariant &value)
-{
- if (!animProp || state() == QAbstractAnimation::Stopped)
- return;
-
- animProp->write(value);
-}
-
-
-/*!
- \reimp
-*/
-void CustomPropertyAnimation::updateState(QAbstractAnimation::State oldState, QAbstractAnimation::State newState)
-{
- // Initialize start value
- if (oldState == QAbstractAnimation::Stopped) {
- if (!animProp)
- return;
- QVariant def = animProp->read();
- if (def.isValid()) {
- const int t = def.userType();
- KeyValues values = keyValues();
- //this ensures that all the keyValues are of type t
- for (int i = 0; i < values.count(); ++i) {
- QVariantAnimation::KeyValue &pair = values[i];
- if (pair.second.userType() != t)
- pair.second.convert(static_cast<QVariant::Type>(t));
- }
- //let's now update the key values
- setKeyValues(values);
- }
-
- if ((animProp && !startValue().isValid() && currentTime() == 0)
- || (currentTime() == duration() && currentLoop() == (loopCount() - 1))) {
- setStartValue(def);
- }
- }
-
- QVariantAnimation::updateState(oldState, newState);
-}
-
-#include "moc_custompropertyanimation.cpp"
diff --git a/demos/sub-attaq/custompropertyanimation.h b/demos/sub-attaq/custompropertyanimation.h
deleted file mode 100644
index 7146887ab..000000000
--- a/demos/sub-attaq/custompropertyanimation.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef CUSTOMPROPERTYANIMATION_H
-#define CUSTOMPROPERTYANIMATION_H
-
-#include <QtCore/qvariantanimation.h>
-
-QT_BEGIN_NAMESPACE
-class QGraphicsItem;
-QT_END_NAMESPACE
-
-struct AbstractProperty
-{
- virtual QVariant read() const = 0;
- virtual void write(const QVariant &value) = 0;
-};
-
-
-class CustomPropertyAnimation : public QVariantAnimation
-{
- Q_OBJECT
-
- template <typename Target, typename T, typename T2 = T>
- class MemberFunctionProperty : public AbstractProperty
- {
- public:
- typedef T (Target::*Getter)(void) const;
- typedef void (Target::*Setter)(T2);
-
- MemberFunctionProperty(Target* target, Getter getter, Setter setter)
- : m_target(target), m_getter(getter), m_setter(setter) {}
-
- virtual void write(const QVariant &value)
- {
- if (m_setter) (m_target->*m_setter)(qVariantValue<T>(value));
- }
-
- virtual QVariant read() const
- {
- if (m_getter) return qVariantFromValue<T>((m_target->*m_getter)());
- return QVariant();
- }
-
- private:
- Target *m_target;
- Getter m_getter;
- Setter m_setter;
- };
-
-public:
- CustomPropertyAnimation(QObject *parent = 0);
- ~CustomPropertyAnimation();
-
- template<class Target, typename T>
- void setMemberFunctions(Target* target, T (Target::*getter)() const, void (Target::*setter)(const T& ))
- {
- setProperty(new MemberFunctionProperty<Target, T, const T&>(target, getter, setter));
- }
-
- template<class Target, typename T>
- void setMemberFunctions(Target* target, T (Target::*getter)() const, void (Target::*setter)(T))
- {
- setProperty(new MemberFunctionProperty<Target, T>(target, getter, setter));
- }
-
- void updateCurrentValue(const QVariant &value);
- void updateState(QAbstractAnimation::State oldState, QAbstractAnimation::State newState);
- void setProperty(AbstractProperty *animProp);
-
-private:
- Q_DISABLE_COPY(CustomPropertyAnimation);
- AbstractProperty *animProp;
-};
-
-#endif // CUSTOMPROPERTYANIMATION_H
diff --git a/demos/sub-attaq/graphicsscene.cpp b/demos/sub-attaq/graphicsscene.cpp
index 210cb0eb0..71d4fe73a 100644
--- a/demos/sub-attaq/graphicsscene.cpp
+++ b/demos/sub-attaq/graphicsscene.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -47,10 +47,10 @@
#include "torpedo.h"
#include "bomb.h"
#include "pixmapitem.h"
-#include "custompropertyanimation.h"
#include "animationmanager.h"
#include "qanimationstate.h"
#include "progressitem.h"
+#include "textinformationitem.h"
//Qt
#include <QtCore/QPropertyAnimation>
@@ -67,39 +67,10 @@
#include <QtGui/QGraphicsSceneMouseEvent>
#include <QtCore/QXmlStreamReader>
-//helper function that creates an animation for position and inserts it into group
-static CustomPropertyAnimation *addGraphicsItemPosAnimation(QSequentialAnimationGroup *group,
- QGraphicsItem *item, const QPointF &endPos)
-{
- CustomPropertyAnimation *ret = new CustomPropertyAnimation(group);
- ret->setMemberFunctions(item, &QGraphicsItem::pos, &QGraphicsItem::setPos);
- ret->setEndValue(endPos);
- ret->setDuration(200);
- ret->setEasingCurve(QEasingCurve::OutElastic);
- group->addPause(50);
- return ret;
-}
-
-//helper function that creates an animation for opacity and inserts it into group
-static void addGraphicsItemFadeoutAnimation(QAnimationGroup *group, QGraphicsItem *item)
-{
-#if QT_VERSION >=0x040500
- CustomPropertyAnimation *anim = new CustomPropertyAnimation(group);
- anim->setMemberFunctions(item, &QGraphicsItem::opacity, &QGraphicsItem::setOpacity);
- anim->setDuration(800);
- anim->setEndValue(0);
- anim->setEasingCurve(QEasingCurve::OutQuad);
-#else
- // work around for a bug where we don't transition if the duration is zero.
- QtPauseAnimation *anim = new QtPauseAnimation(group);
- anim->setDuration(1);
-#endif
-}
-
GraphicsScene::GraphicsScene(int x, int y, int width, int height, Mode mode)
- : QGraphicsScene(x,y,width,height), mode(mode), newAction(0), quitAction(0), boat(0)
+ : QGraphicsScene(x , y, width, height), mode(mode), boat(new Boat)
{
- backgroundItem = new PixmapItem(QString("background"),mode);
+ PixmapItem *backgroundItem = new PixmapItem(QString("background"),mode);
backgroundItem->setZValue(1);
backgroundItem->setPos(0,0);
addItem(backgroundItem);
@@ -112,8 +83,9 @@ GraphicsScene::GraphicsScene(int x, int y, int width, int height, Mode mode)
//The item that display score and level
progressItem = new ProgressItem(backgroundItem);
+ textInformationItem = new TextInformationItem(backgroundItem);
+ textInformationItem->hide();
//We create the boat
- boat = new Boat();
addItem(boat);
boat->setPos(this->width()/2, sealLevel() - boat->size().height());
boat->hide();
@@ -127,28 +99,21 @@ GraphicsScene::GraphicsScene(int x, int y, int width, int height, Mode mode)
while (!reader.atEnd()) {
reader.readNext();
if (reader.tokenType() == QXmlStreamReader::StartElement) {
- if (reader.name() == "submarine")
- {
+ if (reader.name() == "submarine") {
SubmarineDescription desc;
desc.name = reader.attributes().value("name").toString();
desc.points = reader.attributes().value("points").toString().toInt();
desc.type = reader.attributes().value("type").toString().toInt();
submarinesData.append(desc);
- }
- if (reader.name() == "level")
- {
+ } else if (reader.name() == "level") {
currentLevel.id = reader.attributes().value("id").toString().toInt();
currentLevel.name = reader.attributes().value("name").toString();
+ } else if (reader.name() == "subinstance") {
+ currentLevel.submarines.append(qMakePair(reader.attributes().value("type").toString().toInt(), reader.attributes().value("nb").toString().toInt()));
}
- if (reader.name() == "subinstance")
- {
- currentLevel.submarines.append(qMakePair(reader.attributes().value("type").toString().toInt(),reader.attributes().value("nb").toString().toInt()));
- }
- }
- if (reader.tokenType() == QXmlStreamReader::EndElement) {
- if (reader.name() == "level")
- {
- levelsData.insert(currentLevel.id,currentLevel);
+ } else if (reader.tokenType() == QXmlStreamReader::EndElement) {
+ if (reader.name() == "level") {
+ levelsData.insert(currentLevel.id, currentLevel);
currentLevel.submarines.clear();
}
}
@@ -157,80 +122,52 @@ GraphicsScene::GraphicsScene(int x, int y, int width, int height, Mode mode)
qreal GraphicsScene::sealLevel() const
{
- if (mode == Big)
- return 220;
- else
- return 160;
+ return (mode == Big) ? 220 : 160;
}
-void GraphicsScene::setupScene(const QList<QAction *> &actions)
+void GraphicsScene::setupScene(QAction *newAction, QAction *quitAction)
{
- newAction = actions.at(0);
- quitAction = actions.at(1);
-
- QGraphicsItem *logo_s = addWelcomeItem(QPixmap(":/logo-s"));
- QGraphicsItem *logo_u = addWelcomeItem(QPixmap(":/logo-u"));
- QGraphicsItem *logo_b = addWelcomeItem(QPixmap(":/logo-b"));
- QGraphicsItem *logo_dash = addWelcomeItem(QPixmap(":/logo-dash"));
- QGraphicsItem *logo_a = addWelcomeItem(QPixmap(":/logo-a"));
- QGraphicsItem *logo_t = addWelcomeItem(QPixmap(":/logo-t"));
- QGraphicsItem *logo_t2 = addWelcomeItem(QPixmap(":/logo-t2"));
- QGraphicsItem *logo_a2 = addWelcomeItem(QPixmap(":/logo-a2"));
- QGraphicsItem *logo_q = addWelcomeItem(QPixmap(":/logo-q"));
- QGraphicsItem *logo_excl = addWelcomeItem(QPixmap(":/logo-excl"));
- logo_s->setZValue(3);
- logo_u->setZValue(4);
- logo_b->setZValue(5);
- logo_dash->setZValue(6);
- logo_a->setZValue(7);
- logo_t->setZValue(8);
- logo_t2->setZValue(9);
- logo_a2->setZValue(10);
- logo_q->setZValue(11);
- logo_excl->setZValue(12);
- logo_s->setPos(QPointF(-1000, -1000));
- logo_u->setPos(QPointF(-800, -1000));
- logo_b->setPos(QPointF(-600, -1000));
- logo_dash->setPos(QPointF(-400, -1000));
- logo_a->setPos(QPointF(1000, 2000));
- logo_t->setPos(QPointF(800, 2000));
- logo_t2->setPos(QPointF(600, 2000));
- logo_a2->setPos(QPointF(400, 2000));
- logo_q->setPos(QPointF(200, 2000));
- logo_excl->setPos(QPointF(0, 2000));
+ static const int nLetters = 10;
+ static struct {
+ char const *pix;
+ qreal initX, initY;
+ qreal destX, destY;
+ } logoData[nLetters] = {
+ {"s", -1000, -1000, 300, 150 },
+ {"u", -800, -1000, 350, 150 },
+ {"b", -600, -1000, 400, 120 },
+ {"dash", -400, -1000, 460, 150 },
+ {"a", 1000, 2000, 350, 250 },
+ {"t", 800, 2000, 400, 250 },
+ {"t2", 600, 2000, 430, 250 },
+ {"a2", 400, 2000, 465, 250 },
+ {"q", 200, 2000, 510, 250 },
+ {"excl", 0, 2000, 570, 220 } };
QSequentialAnimationGroup * lettersGroupMoving = new QSequentialAnimationGroup(this);
QParallelAnimationGroup * lettersGroupFading = new QParallelAnimationGroup(this);
- //creation of the animations for moving letters
- addGraphicsItemPosAnimation(lettersGroupMoving, logo_s, QPointF(300, 150));
- addGraphicsItemPosAnimation(lettersGroupMoving, logo_u, QPointF(350, 150));
- addGraphicsItemPosAnimation(lettersGroupMoving, logo_b, QPointF(400, 120));
- addGraphicsItemPosAnimation(lettersGroupMoving, logo_dash, QPointF(460, 150));
- addGraphicsItemPosAnimation(lettersGroupMoving, logo_a, QPointF(350, 250));
- addGraphicsItemPosAnimation(lettersGroupMoving, logo_t, QPointF(400, 250));
- addGraphicsItemPosAnimation(lettersGroupMoving, logo_t2, QPointF(430, 250));
- addGraphicsItemPosAnimation(lettersGroupMoving, logo_a2, QPointF(465, 250));
- addGraphicsItemPosAnimation(lettersGroupMoving, logo_q, QPointF(510, 250));
- addGraphicsItemPosAnimation(lettersGroupMoving, logo_excl, QPointF(570, 220));
-
- //creation of the animations for fading out the letters
- addGraphicsItemFadeoutAnimation(lettersGroupFading, logo_s);
- addGraphicsItemFadeoutAnimation(lettersGroupFading, logo_u);
- addGraphicsItemFadeoutAnimation(lettersGroupFading, logo_b);
- addGraphicsItemFadeoutAnimation(lettersGroupFading, logo_dash);
- addGraphicsItemFadeoutAnimation(lettersGroupFading, logo_a);
- addGraphicsItemFadeoutAnimation(lettersGroupFading, logo_t);
- addGraphicsItemFadeoutAnimation(lettersGroupFading, logo_t2);
- addGraphicsItemFadeoutAnimation(lettersGroupFading, logo_a2);
- addGraphicsItemFadeoutAnimation(lettersGroupFading, logo_q);
- addGraphicsItemFadeoutAnimation(lettersGroupFading, logo_excl);
- connect(lettersGroupFading, SIGNAL(finished()), this, SLOT(onIntroAnimationFinished()));
+ for (int i = 0; i < nLetters; ++i) {
+ PixmapItem *logo = new PixmapItem(QLatin1String(":/logo-") + logoData[i].pix, this);
+ logo->setPos(logoData[i].initX, logoData[i].initY);
+ logo->setZValue(i + 3);
+ //creation of the animations for moving letters
+ QPropertyAnimation *moveAnim = new QPropertyAnimation(logo, "pos", lettersGroupMoving);
+ moveAnim->setEndValue(QPointF(logoData[i].destX, logoData[i].destY));
+ moveAnim->setDuration(200);
+ moveAnim->setEasingCurve(QEasingCurve::OutElastic);
+ lettersGroupMoving->addPause(50);
+ //creation of the animations for fading out the letters
+ QPropertyAnimation *fadeAnim = new QPropertyAnimation(logo, "opacity", lettersGroupFading);
+ fadeAnim->setDuration(800);
+ fadeAnim->setEndValue(0);
+ fadeAnim->setEasingCurve(QEasingCurve::OutQuad);
+ }
QStateMachine *machine = new QStateMachine(this);
//This state is when the player is playing
- PlayState *gameState = new PlayState(this,machine);
+ PlayState *gameState = new PlayState(this, machine);
//Final state
QFinalState *final = new QFinalState(machine);
@@ -244,15 +181,15 @@ void GraphicsScene::setupScene(const QList<QAction *> &actions)
lettersFadingState->setAnimation(lettersGroupFading);
//if new game then we fade out the welcome screen and start playing
- lettersMovingState->addTransition(newAction, SIGNAL(triggered()),lettersFadingState);
- lettersFadingState->addTransition(lettersFadingState, SIGNAL(animationFinished()),gameState);
+ lettersMovingState->addTransition(newAction, SIGNAL(triggered()), lettersFadingState);
+ lettersFadingState->addTransition(lettersFadingState, SIGNAL(animationFinished()), gameState);
//New Game is triggered then player start playing
- gameState->addTransition(newAction, SIGNAL(triggered()),gameState);
+ gameState->addTransition(newAction, SIGNAL(triggered()), gameState);
//Wanna quit, then connect to CTRL+Q
- gameState->addTransition(quitAction, SIGNAL(triggered()),final);
- lettersMovingState->addTransition(quitAction, SIGNAL(triggered()),final);
+ gameState->addTransition(quitAction, SIGNAL(triggered()), final);
+ lettersMovingState->addTransition(quitAction, SIGNAL(triggered()), final);
//Welcome screen is the initial state
machine->setInitialState(lettersMovingState);
@@ -260,7 +197,7 @@ void GraphicsScene::setupScene(const QList<QAction *> &actions)
machine->start();
//We reach the final state, then we quit
- connect(machine,SIGNAL(finished()),this, SLOT(onQuitGameTriggered()));
+ connect(machine, SIGNAL(finished()), qApp, SLOT(quit()));
}
void GraphicsScene::addItem(Bomb *bomb)
@@ -289,16 +226,6 @@ void GraphicsScene::addItem(QGraphicsItem *item)
QGraphicsScene::addItem(item);
}
-void GraphicsScene::mousePressEvent (QGraphicsSceneMouseEvent * event)
-{
- event->ignore();
-}
-
-void GraphicsScene::onQuitGameTriggered()
-{
- qApp->closeAllWindows();
-}
-
void GraphicsScene::onBombExecutionFinished()
{
Bomb *bomb = qobject_cast<Bomb *>(sender());
@@ -319,32 +246,26 @@ void GraphicsScene::onSubMarineExecutionFinished()
{
SubMarine *submarine = qobject_cast<SubMarine *>(sender());
submarines.remove(submarine);
- if (submarines.count() == 0) {
+ if (submarines.count() == 0)
emit allSubMarineDestroyed(submarine->points());
- } else {
+ else
emit subMarineDestroyed(submarine->points());
- }
submarine->deleteLater();
}
-int GraphicsScene::remainingSubMarines() const
-{
- return submarines.count();
-}
-
void GraphicsScene::clearScene()
{
- foreach (SubMarine *sub,submarines) {
+ foreach (SubMarine *sub, submarines) {
sub->destroy();
sub->deleteLater();
}
- foreach (Torpedo *torpedo,torpedos) {
+ foreach (Torpedo *torpedo, torpedos) {
torpedo->destroy();
torpedo->deleteLater();
}
- foreach (Bomb *bomb,bombs) {
+ foreach (Bomb *bomb, bombs) {
bomb->destroy();
bomb->deleteLater();
}
@@ -357,18 +278,5 @@ void GraphicsScene::clearScene()
boat->stop();
boat->hide();
+ boat->setEnabled(true);
}
-
-QGraphicsPixmapItem *GraphicsScene::addWelcomeItem(const QPixmap &pm)
-{
- QGraphicsPixmapItem *item = addPixmap(pm);
- welcomeItems << item;
- return item;
-}
-
-void GraphicsScene::onIntroAnimationFinished()
-{
- qDeleteAll(welcomeItems);
- welcomeItems.clear();
-}
-
diff --git a/demos/sub-attaq/graphicsscene.h b/demos/sub-attaq/graphicsscene.h
index 1501db816..ce2c91fca 100644
--- a/demos/sub-attaq/graphicsscene.h
+++ b/demos/sub-attaq/graphicsscene.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,6 +54,7 @@ class Torpedo;
class Bomb;
class PixmapItem;
class ProgressItem;
+class TextInformationItem;
QT_BEGIN_NAMESPACE
class QAction;
QT_END_NAMESPACE
@@ -81,40 +82,30 @@ public:
GraphicsScene(int x, int y, int width, int height, Mode mode = Big);
qreal sealLevel() const;
- void setupScene(const QList<QAction *> &actions);
+ void setupScene(QAction *newAction, QAction *quitAction);
void addItem(Bomb *bomb);
void addItem(Torpedo *torpedo);
void addItem(SubMarine *submarine);
void addItem(QGraphicsItem *item);
- int remainingSubMarines() const;
void clearScene();
- QGraphicsPixmapItem *addWelcomeItem(const QPixmap &pm);
signals:
void subMarineDestroyed(int);
void allSubMarineDestroyed(int);
-protected:
- void mousePressEvent (QGraphicsSceneMouseEvent * event);
-
private slots:
- void onQuitGameTriggered();
void onBombExecutionFinished();
void onTorpedoExecutionFinished();
void onSubMarineExecutionFinished();
- void onIntroAnimationFinished();
private:
Mode mode;
- PixmapItem *backgroundItem;
ProgressItem *progressItem;
- QAction * newAction;
- QAction * quitAction;
+ TextInformationItem *textInformationItem;
Boat *boat;
QSet<SubMarine *> submarines;
QSet<Bomb *> bombs;
QSet<Torpedo *> torpedos;
- QVector<QGraphicsPixmapItem *> welcomeItems;
QVector<SubmarineDescription> submarinesData;
QHash<int, LevelDescription> levelsData;
diff --git a/demos/sub-attaq/main.cpp b/demos/sub-attaq/main.cpp
index e46a6d8c7..fae2c1fa2 100644
--- a/demos/sub-attaq/main.cpp
+++ b/demos/sub-attaq/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/sub-attaq/mainwindow.cpp b/demos/sub-attaq/mainwindow.cpp
index 26cfc6749..45e5554b8 100644
--- a/demos/sub-attaq/mainwindow.cpp
+++ b/demos/sub-attaq/mainwindow.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,42 +56,27 @@
MainWindow::MainWindow() : QMainWindow(0)
{
- QMenuBar *menuBar = new QMenuBar;
- QMenu *file = new QMenu(tr("&File"),menuBar);
+ QMenu *file = menuBar()->addMenu(tr("&File"));
- QAction *newAction = new QAction(tr("New Game"),file);
+ QAction *newAction = file->addAction(tr("New Game"));
newAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_N));
- file->addAction(newAction);
- QAction *quitAction = new QAction(tr("Quit"),file);
+ QAction *quitAction = file->addAction(tr("Quit"));
quitAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_Q));
- file->addAction(quitAction);
-
- menuBar->addMenu(file);
- setMenuBar(menuBar);
- QStringList list = QApplication::arguments();
- if (list.contains("-fullscreen")) {
- scene = new GraphicsScene(0, 0, 750, 400,GraphicsScene::Small);
+ if (QApplication::arguments().contains("-fullscreen")) {
+ scene = new GraphicsScene(0, 0, 750, 400, GraphicsScene::Small);
setWindowState(Qt::WindowFullScreen);
} else {
scene = new GraphicsScene(0, 0, 880, 630);
layout()->setSizeConstraint(QLayout::SetFixedSize);
}
- view = new QGraphicsView(scene,this);
+ view = new QGraphicsView(scene, this);
view->setAlignment(Qt::AlignLeft | Qt::AlignTop);
- QList<QAction *> actions;
- actions << newAction << quitAction;
- scene->setupScene(actions);
+ scene->setupScene(newAction, quitAction);
#ifndef QT_NO_OPENGL
- view->setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
+ view->setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
#endif
setCentralWidget(view);
-
}
-
-MainWindow::~MainWindow()
-{
-}
-
diff --git a/demos/sub-attaq/mainwindow.h b/demos/sub-attaq/mainwindow.h
index 434b98ce2..12a73640b 100644
--- a/demos/sub-attaq/mainwindow.h
+++ b/demos/sub-attaq/mainwindow.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ class MainWindow : public QMainWindow
Q_OBJECT
public:
MainWindow();
- ~MainWindow();
private:
GraphicsScene *scene;
diff --git a/demos/sub-attaq/pixmapitem.cpp b/demos/sub-attaq/pixmapitem.cpp
index 5ab5583d3..fcc7ce99c 100644
--- a/demos/sub-attaq/pixmapitem.cpp
+++ b/demos/sub-attaq/pixmapitem.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -43,17 +43,34 @@
#include "pixmapitem.h"
//Qt
-#include <QtCore/QDir>
+#include <QPainter>
-PixmapItem::PixmapItem(const QString &fileName,GraphicsScene::Mode mode, QGraphicsItem * parent) : QGraphicsPixmapItem(parent),name(fileName)
+PixmapItem::PixmapItem(const QString &fileName,GraphicsScene::Mode mode, QGraphicsItem * parent) : QGraphicsObject(parent)
{
- loadPixmap(mode);
+ if (mode == GraphicsScene::Big)
+ pix = ":/big/" + fileName;
+ else
+ pix = ":/small/" + fileName;
}
-void PixmapItem::loadPixmap(GraphicsScene::Mode mode)
+PixmapItem::PixmapItem(const QString &fileName, QGraphicsScene *scene) : QGraphicsObject(), pix(fileName)
{
- if (mode == GraphicsScene::Big)
- setPixmap(":/big/" + name);
- else
- setPixmap(":/small/" + name);
+ scene->addItem(this);
}
+
+QSizeF PixmapItem::size() const
+{
+ return pix.size();
+}
+
+QRectF PixmapItem::boundingRect() const
+{
+ return QRectF(QPointF(0, 0), pix.size());
+}
+
+void PixmapItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
+{
+ painter->drawPixmap(0, 0, pix);
+}
+
+
diff --git a/demos/sub-attaq/pixmapitem.h b/demos/sub-attaq/pixmapitem.h
index 97d6f63ef..57f831a77 100644
--- a/demos/sub-attaq/pixmapitem.h
+++ b/demos/sub-attaq/pixmapitem.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -46,18 +46,18 @@
#include "graphicsscene.h"
//Qt
-#include <QtGui/QGraphicsPixmapItem>
+#include <QtGui/QGraphicsObject>
-class PixmapItem : public QGraphicsPixmapItem
+class PixmapItem : public QGraphicsObject
{
public:
PixmapItem(const QString &fileName, GraphicsScene::Mode mode, QGraphicsItem * parent = 0);
-
+ PixmapItem(const QString &fileName, QGraphicsScene *scene);
+ QSizeF size() const;
+ QRectF boundingRect() const;
+ void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *);
private:
- void loadPixmap(GraphicsScene::Mode mode);
-
- QString name;
- QPixmap pixmap;
+ QPixmap pix;
};
#endif //__PIXMAPITEM__H__
diff --git a/demos/sub-attaq/progressitem.cpp b/demos/sub-attaq/progressitem.cpp
index c20ebd00e..af8450081 100644
--- a/demos/sub-attaq/progressitem.cpp
+++ b/demos/sub-attaq/progressitem.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/sub-attaq/progressitem.h b/demos/sub-attaq/progressitem.h
index 60873b6b3..5b91b5811 100644
--- a/demos/sub-attaq/progressitem.h
+++ b/demos/sub-attaq/progressitem.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/sub-attaq/qanimationstate.cpp b/demos/sub-attaq/qanimationstate.cpp
index ccb788da6..28db6ecd2 100644
--- a/demos/sub-attaq/qanimationstate.cpp
+++ b/demos/sub-attaq/qanimationstate.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtGui module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/sub-attaq/qanimationstate.h b/demos/sub-attaq/qanimationstate.h
index cb605f3a6..be42405df 100644
--- a/demos/sub-attaq/qanimationstate.h
+++ b/demos/sub-attaq/qanimationstate.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtGui module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/sub-attaq/states.cpp b/demos/sub-attaq/states.cpp
index 4cc4af9da..742095eb1 100644
--- a/demos/sub-attaq/states.cpp
+++ b/demos/sub-attaq/states.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -47,13 +47,13 @@
#include "torpedo.h"
#include "animationmanager.h"
#include "progressitem.h"
+#include "textinformationitem.h"
//Qt
#include <QtGui/QMessageBox>
#include <QtGui/QGraphicsView>
#include <QtCore/QStateMachine>
#include <QtGui/QKeyEventTransition>
-#include <QtCore/QSignalEvent>
#include <QtCore/QFinalState>
PlayState::PlayState(GraphicsScene *scene, QState *parent)
@@ -67,6 +67,7 @@ PlayState::PlayState(GraphicsScene *scene, QState *parent)
PlayState::~PlayState()
{
+ delete machine;
}
void PlayState::onEntry(QEvent *)
@@ -74,13 +75,15 @@ void PlayState::onEntry(QEvent *)
//We are now playing?
if (machine) {
machine->stop();
+ //we hide the information
+ scene->textInformationItem->hide();
scene->clearScene();
currentLevel = 0;
score = 0;
delete machine;
}
- machine = new QStateMachine(this);
+ machine = new QStateMachine;
//This state is when player is playing
LevelState *levelState = new LevelState(scene, this, machine);
@@ -165,7 +168,7 @@ void LevelState::initializeLevel()
scene->boat->setCurrentDirection(Boat::None);
scene->boat->setBombsLaunched(0);
scene->boat->show();
- scene->setFocusItem(scene->boat,Qt::OtherFocusReason);
+ scene->setFocusItem(scene->boat, Qt::OtherFocusReason);
scene->boat->run();
scene->progressItem->setScore(game->score);
@@ -226,8 +229,15 @@ void LostState::onEntry(QEvent *)
//We clear the scene
scene->clearScene();
- //we have only one view
- QMessageBox::information(scene->views().at(0),"You lose",message);
+ //We inform the player
+ scene->textInformationItem->setMessage(message);
+ scene->textInformationItem->show();
+}
+
+void LostState::onExit(QEvent *)
+{
+ //we hide the information
+ scene->textInformationItem->hide();
}
/** Win State */
@@ -242,7 +252,7 @@ void WinState::onEntry(QEvent *)
QString message;
if (scene->levelsData.size() - 1 != game->currentLevel) {
- message = QString("You win the level %1. Your score is %2.\nPress Space to continue after closing this dialog.").arg(game->currentLevel+1).arg(game->score);
+ message = QString("You win the level %1. Your score is %2.\nPress Space to continue.").arg(game->currentLevel+1).arg(game->score);
//We increment the level number
game->currentLevel++;
} else {
@@ -253,18 +263,20 @@ void WinState::onEntry(QEvent *)
game->score = 0;
}
- //we have only one view
- QMessageBox::information(scene->views().at(0),"You win",message);
+ //We inform the player
+ scene->textInformationItem->setMessage(message);
+ scene->textInformationItem->show();
}
-/** UpdateScore State */
-UpdateScoreState::UpdateScoreState(PlayState *game, QState *parent) : QState(parent)
+void WinState::onExit(QEvent *)
{
- this->game = game;
+ //we hide the information
+ scene->textInformationItem->hide();
}
-void UpdateScoreState::onEntry(QEvent *e)
+
+/** UpdateScore State */
+UpdateScoreState::UpdateScoreState(PlayState *g, QState *parent) : QState(parent), game(g)
{
- QState::onEntry(e);
}
/** Win transition */
@@ -279,12 +291,10 @@ bool UpdateScoreTransition::eventTest(QEvent *event)
{
if (!QSignalTransition::eventTest(event))
return false;
- else {
- QSignalEvent *se = static_cast<QSignalEvent*>(event);
- game->score += se->arguments().at(0).toInt();
- scene->progressItem->setScore(game->score);
- return true;
- }
+ QStateMachine::SignalEvent *se = static_cast<QStateMachine::SignalEvent*>(event);
+ game->score += se->arguments().at(0).toInt();
+ scene->progressItem->setScore(game->score);
+ return true;
}
/** Win transition */
@@ -299,12 +309,10 @@ bool WinTransition::eventTest(QEvent *event)
{
if (!QSignalTransition::eventTest(event))
return false;
- else {
- QSignalEvent *se = static_cast<QSignalEvent*>(event);
- game->score += se->arguments().at(0).toInt();
- scene->progressItem->setScore(game->score);
- return true;
- }
+ QStateMachine::SignalEvent *se = static_cast<QStateMachine::SignalEvent*>(event);
+ game->score += se->arguments().at(0).toInt();
+ scene->progressItem->setScore(game->score);
+ return true;
}
/** Space transition */
@@ -316,12 +324,7 @@ CustomSpaceTransition::CustomSpaceTransition(QWidget *widget, PlayState *game, Q
bool CustomSpaceTransition::eventTest(QEvent *event)
{
- Q_UNUSED(event);
if (!QKeyEventTransition::eventTest(event))
return false;
- if (game->currentLevel != 0)
- return true;
- else
- return false;
-
+ return (game->currentLevel != 0);
}
diff --git a/demos/sub-attaq/states.h b/demos/sub-attaq/states.h
index 22e713661..f588e5d66 100644
--- a/demos/sub-attaq/states.h
+++ b/demos/sub-attaq/states.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -113,6 +113,7 @@ public:
protected:
void onEntry(QEvent *);
+ void onExit(QEvent *);
private :
GraphicsScene *scene;
PlayState *game;
@@ -125,6 +126,7 @@ public:
protected:
void onEntry(QEvent *);
+ void onExit(QEvent *);
private :
GraphicsScene *scene;
PlayState *game;
@@ -134,8 +136,6 @@ class UpdateScoreState : public QState
{
public:
UpdateScoreState(PlayState *game, QState *parent);
-protected:
- void onEntry(QEvent *);
private:
QPropertyAnimation *scoreAnimation;
PlayState *game;
diff --git a/demos/sub-attaq/sub-attaq.pro b/demos/sub-attaq/sub-attaq.pro
index ad1327d50..b5aa465d0 100644
--- a/demos/sub-attaq/sub-attaq.pro
+++ b/demos/sub-attaq/sub-attaq.pro
@@ -1,5 +1,4 @@
contains(QT_CONFIG, opengl):QT += opengl
-
HEADERS += boat.h \
bomb.h \
mainwindow.h \
@@ -11,9 +10,9 @@ HEADERS += boat.h \
states.h \
boat_p.h \
submarine_p.h \
- custompropertyanimation.h \
qanimationstate.h \
- progressitem.h
+ progressitem.h \
+ textinformationitem.h
SOURCES += boat.cpp \
bomb.cpp \
main.cpp \
@@ -24,14 +23,19 @@ SOURCES += boat.cpp \
graphicsscene.cpp \
animationmanager.cpp \
states.cpp \
- custompropertyanimation.cpp \
qanimationstate.cpp \
- progressitem.cpp
+ progressitem.cpp \
+ textinformationitem.cpp
RESOURCES += subattaq.qrc
# install
-target.path = $$[QT_INSTALL_DEMOS]/animation/sub-attaq
-sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS sub-attaq.pro pics
-sources.path = $$[QT_INSTALL_DEMOS]/animation/sub-attaq
-INSTALLS += target sources
-
+target.path = $$[QT_INSTALL_DEMOS]/sub-attaq
+sources.files = $$SOURCES \
+ $$HEADERS \
+ $$RESOURCES \
+ $$FORMS \
+ sub-attaq.pro \
+ pics
+sources.path = $$[QT_INSTALL_DEMOS]/sub-attaq
+INSTALLS += target \
+ sources
diff --git a/demos/sub-attaq/submarine.cpp b/demos/sub-attaq/submarine.cpp
index 383005df8..f71b81c98 100644
--- a/demos/sub-attaq/submarine.cpp
+++ b/demos/sub-attaq/submarine.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -46,7 +46,6 @@
#include "pixmapitem.h"
#include "graphicsscene.h"
#include "animationmanager.h"
-#include "custompropertyanimation.h"
#include "qanimationstate.h"
#include <QtCore/QPropertyAnimation>
@@ -57,63 +56,28 @@
static QAbstractAnimation *setupDestroyAnimation(SubMarine *sub)
{
QSequentialAnimationGroup *group = new QSequentialAnimationGroup(sub);
-#if QT_VERSION >=0x040500
- PixmapItem *step1 = new PixmapItem(QString("explosion/submarine/step1"),GraphicsScene::Big, sub);
- step1->setZValue(6);
- PixmapItem *step2 = new PixmapItem(QString("explosion/submarine/step2"),GraphicsScene::Big, sub);
- step2->setZValue(6);
- PixmapItem *step3 = new PixmapItem(QString("explosion/submarine/step3"),GraphicsScene::Big, sub);
- step3->setZValue(6);
- PixmapItem *step4 = new PixmapItem(QString("explosion/submarine/step4"),GraphicsScene::Big, sub);
- step4->setZValue(6);
- step1->setOpacity(0);
- step2->setOpacity(0);
- step3->setOpacity(0);
- step4->setOpacity(0);
- CustomPropertyAnimation *anim1 = new CustomPropertyAnimation(sub);
- anim1->setMemberFunctions((QGraphicsItem*)step1, &QGraphicsItem::opacity, &QGraphicsItem::setOpacity);
- anim1->setDuration(100);
- anim1->setEndValue(1);
- CustomPropertyAnimation *anim2 = new CustomPropertyAnimation(sub);
- anim2->setMemberFunctions((QGraphicsItem*)step2, &QGraphicsItem::opacity, &QGraphicsItem::setOpacity);
- anim2->setDuration(100);
- anim2->setEndValue(1);
- CustomPropertyAnimation *anim3 = new CustomPropertyAnimation(sub);
- anim3->setMemberFunctions((QGraphicsItem*)step3, &QGraphicsItem::opacity, &QGraphicsItem::setOpacity);
- anim3->setDuration(100);
- anim3->setEndValue(1);
- CustomPropertyAnimation *anim4 = new CustomPropertyAnimation(sub);
- anim4->setMemberFunctions((QGraphicsItem*)step4, &QGraphicsItem::opacity, &QGraphicsItem::setOpacity);
- anim4->setDuration(100);
- anim4->setEndValue(1);
- group->addAnimation(anim1);
- group->addAnimation(anim2);
- group->addAnimation(anim3);
- group->addAnimation(anim4);
-#else
- // work around for a bug where we don't transition if the duration is zero.
- QtPauseAnimation *anim = new QtPauseAnimation(group);
- anim->setDuration(1);
- group->addAnimation(anim);
-#endif
+ for (int i = 1; i <= 4; ++i) {
+ PixmapItem *step = new PixmapItem(QString::fromLatin1("explosion/submarine/step%1").arg(i), GraphicsScene::Big, sub);
+ step->setZValue(6);
+ step->setOpacity(0);
+ QPropertyAnimation *anim = new QPropertyAnimation(step, "opacity", group);
+ anim->setDuration(100);
+ anim->setEndValue(1);
+ }
AnimationManager::self()->registerAnimation(group);
return group;
}
-SubMarine::SubMarine(int type, const QString &name, int points, QGraphicsItem * parent, Qt::WindowFlags wFlags)
- : QGraphicsWidget(parent,wFlags), subType(type), subName(name), subPoints(points), speed(0), direction(SubMarine::None)
+SubMarine::SubMarine(int type, const QString &name, int points) : PixmapItem(QString("submarine"), GraphicsScene::Big),
+ subType(type), subName(name), subPoints(points), speed(0), direction(SubMarine::None)
{
- pixmapItem = new PixmapItem(QString("submarine"),GraphicsScene::Big, this);
- setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
setZValue(5);
- setFlags(QGraphicsItem::ItemIsMovable);
- resize(pixmapItem->boundingRect().width(),pixmapItem->boundingRect().height());
setTransformOriginPoint(boundingRect().center());
graphicsRotation = new QGraphicsRotation(this);
- graphicsRotation->setAxis(QVector3D(0, 1, 0));
- graphicsRotation->setOrigin(QPointF(size().width()/2, size().height()/2));
+ graphicsRotation->setAxis(Qt::YAxis);
+ graphicsRotation->setOrigin(QVector3D(size().width()/2, size().height()/2, 0));
QList<QGraphicsTransform *> r;
r.append(graphicsRotation);
setTransformations(r);
@@ -163,7 +127,7 @@ SubMarine::SubMarine(int type, const QString &name, int points, QGraphicsItem *
machine->start();
}
-int SubMarine::points()
+int SubMarine::points() const
{
return subPoints;
}
@@ -202,7 +166,7 @@ void SubMarine::launchTorpedo(int speed)
Torpedo * torp = new Torpedo();
GraphicsScene *scene = static_cast<GraphicsScene *>(this->scene());
scene->addItem(torp);
- torp->setPos(x(), y());
+ torp->setPos(pos());
torp->setCurrentSpeed(speed);
torp->launch();
}
diff --git a/demos/sub-attaq/submarine.h b/demos/sub-attaq/submarine.h
index 1e33ba0fd..326a1c848 100644
--- a/demos/sub-attaq/submarine.h
+++ b/demos/sub-attaq/submarine.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -43,15 +43,13 @@
#define __SUBMARINE__H__
//Qt
-#include <QtCore/QVariantAnimation>
-#include <QtGui/QGraphicsWidget>
#include <QtGui/QGraphicsTransform>
-class PixmapItem;
+#include "pixmapitem.h"
class Torpedo;
-class SubMarine : public QGraphicsWidget
+class SubMarine : public PixmapItem
{
Q_OBJECT
public:
@@ -61,9 +59,9 @@ public:
Right
};
enum { Type = UserType + 1 };
- SubMarine(int type, const QString &name, int points, QGraphicsItem * parent = 0, Qt::WindowFlags wFlags = 0);
+ SubMarine(int type, const QString &name, int points);
- int points();
+ int points() const;
void setCurrentDirection(Movement direction);
enum Movement currentDirection() const;
@@ -89,7 +87,6 @@ private:
int subPoints;
int speed;
Movement direction;
- PixmapItem *pixmapItem;
QGraphicsRotation *graphicsRotation;
};
diff --git a/demos/sub-attaq/submarine_p.h b/demos/sub-attaq/submarine_p.h
index 520fe2fd4..64a0cf769 100644
--- a/demos/sub-attaq/submarine_p.h
+++ b/demos/sub-attaq/submarine_p.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the examples of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -94,7 +94,6 @@ protected:
movementAnimation->setEndValue(QPointF(submarine->scene()->width()-submarine->size().width(),submarine->y()));
movementAnimation->setDuration((submarine->scene()->width()-submarine->size().width()-submarine->x())/submarine->currentSpeed()*12);
}
- movementAnimation->setStartValue(submarine->pos());
QAnimationState::onEntry(e);
}
diff --git a/demos/sub-attaq/textinformationitem.cpp b/demos/sub-attaq/textinformationitem.cpp
new file mode 100644
index 000000000..1b0c831be
--- /dev/null
+++ b/demos/sub-attaq/textinformationitem.cpp
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "textinformationitem.h"
+#include "pixmapitem.h"
+
+TextInformationItem::TextInformationItem (QGraphicsItem * parent)
+ : QGraphicsTextItem(parent)
+{
+ setFont(QFont("Comic Sans MS", 15));
+}
+#include <QDebug>
+void TextInformationItem::setMessage(const QString& text)
+{
+ setHtml(text);
+ setPos(parentItem()->boundingRect().center().x() - boundingRect().size().width()/2 , parentItem()->boundingRect().center().y());
+}
diff --git a/demos/sub-attaq/textinformationitem.h b/demos/sub-attaq/textinformationitem.h
new file mode 100644
index 000000000..c69ec5fb0
--- /dev/null
+++ b/demos/sub-attaq/textinformationitem.h
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef TEXTINFORMATIONITEM_H
+#define TEXTINFORMATIONITEM_H
+
+//Qt
+#include <QtGui/QGraphicsTextItem>
+
+class TextInformationItem : public QGraphicsTextItem
+{
+public:
+ TextInformationItem(QGraphicsItem * parent = 0);
+ void setMessage(const QString& text);
+};
+
+#endif // TEXTINFORMATIONITEM_H
diff --git a/demos/sub-attaq/torpedo.cpp b/demos/sub-attaq/torpedo.cpp
index 8072cdac5..1f4ce16ea 100644
--- a/demos/sub-attaq/torpedo.cpp
+++ b/demos/sub-attaq/torpedo.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,24 +51,21 @@
#include <QtCore/QStateMachine>
#include <QtCore/QFinalState>
-Torpedo::Torpedo(QGraphicsItem * parent, Qt::WindowFlags wFlags)
- : QGraphicsWidget(parent,wFlags), currentSpeed(0), launchAnimation(0)
+Torpedo::Torpedo() : PixmapItem(QString::fromLatin1("torpedo"),GraphicsScene::Big),
+ currentSpeed(0)
{
- pixmapItem = new PixmapItem(QString::fromLatin1("torpedo"),GraphicsScene::Big, this);
setZValue(2);
- setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
- setFlags(QGraphicsItem::ItemIsMovable);
- resize(pixmapItem->boundingRect().size());
}
void Torpedo::launch()
{
- launchAnimation = new QPropertyAnimation(this, "pos");
+ QPropertyAnimation *launchAnimation = new QPropertyAnimation(this, "pos");
AnimationManager::self()->registerAnimation(launchAnimation);
launchAnimation->setEndValue(QPointF(x(),qobject_cast<GraphicsScene *>(scene())->sealLevel() - 15));
launchAnimation->setEasingCurve(QEasingCurve::InQuad);
launchAnimation->setDuration(y()/currentSpeed*10);
- connect(launchAnimation,SIGNAL(valueChanged(const QVariant &)),this,SLOT(onAnimationLaunchValueChanged(const QVariant &)));
+ connect(launchAnimation,SIGNAL(valueChanged(QVariant)),this,SLOT(onAnimationLaunchValueChanged(QVariant)));
+ connect(this,SIGNAL(torpedoExploded()), launchAnimation, SLOT(stop()));
//We setup the state machine of the torpedo
QStateMachine *machine = new QStateMachine(this);
@@ -83,7 +80,7 @@ void Torpedo::launch()
machine->setInitialState(launched);
//### Add a nice animation when the torpedo is destroyed
- launched->addTransition(this, SIGNAL(torpedoExplosed()),final);
+ launched->addTransition(this, SIGNAL(torpedoExploded()),final);
//If the animation is finished, then we move to the final state
launched->addTransition(launched, SIGNAL(animationFinished()), final);
@@ -106,15 +103,12 @@ void Torpedo::setCurrentSpeed(int speed)
void Torpedo::onAnimationLaunchValueChanged(const QVariant &)
{
foreach (QGraphicsItem *item , collidingItems(Qt::IntersectsItemBoundingRect)) {
- if (item->type() == Boat::Type) {
- Boat *b = static_cast<Boat *>(item);
+ if (Boat *b = qgraphicsitem_cast<Boat*>(item))
b->destroy();
- }
}
}
void Torpedo::destroy()
{
- launchAnimation->stop();
- emit torpedoExplosed();
+ emit torpedoExploded();
}
diff --git a/demos/sub-attaq/torpedo.h b/demos/sub-attaq/torpedo.h
index 9c920402a..03f277db5 100644
--- a/demos/sub-attaq/torpedo.h
+++ b/demos/sub-attaq/torpedo.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtCore module of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,25 +42,19 @@
#ifndef __TORPEDO__H__
#define __TORPEDO__H__
-//Qt
-#include <QtCore/QObject>
-
-#include <QtCore/QVariantAnimation>
-#include <QtGui/QGraphicsWidget>
-
-class PixmapItem;
+#include "pixmapitem.h"
-class Torpedo : public QGraphicsWidget
+class Torpedo : public PixmapItem
{
Q_OBJECT
public:
- Torpedo(QGraphicsItem * parent = 0, Qt::WindowFlags wFlags = 0);
+ Torpedo();
void launch();
void setCurrentSpeed(int speed);
void destroy();
signals:
- void torpedoExplosed();
+ void torpedoExploded();
void torpedoExecutionFinished();
private slots:
@@ -68,8 +62,6 @@ private slots:
private:
int currentSpeed;
- PixmapItem *pixmapItem;
- QVariantAnimation *launchAnimation;
};
#endif //__TORPEDO__H__
diff --git a/demos/symbianpkgrules.pri b/demos/symbianpkgrules.pri
new file mode 100644
index 000000000..c511836b4
--- /dev/null
+++ b/demos/symbianpkgrules.pri
@@ -0,0 +1,15 @@
+!symbian: error(Only include this file for Symbian platforms)
+
+RSS_RULES ="group_name=\"QtDemos\";"
+
+vendorinfo = \
+ "; Localised Vendor name" \
+ "%{\"Nokia, Qt\"}" \
+ " " \
+ "; Unique Vendor name" \
+ ":\"Nokia, Qt\"" \
+ " "
+
+default_deployment.pkg_prerules += vendorinfo
+
+isEmpty(ICON):ICON = $$QT_SOURCE_TREE/src/s60installs/qt.svg
diff --git a/demos/textedit/example.html b/demos/textedit/example.html
index 19b552073..6327b5f8f 100644
--- a/demos/textedit/example.html
+++ b/demos/textedit/example.html
@@ -26,7 +26,7 @@ p, li { white-space: pre-wrap; }
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p>
<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"><span style=" font-size:16pt; font-weight:600;">Images</span></p>
<p style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:16pt; font-weight:600;"><span style=" font-size:11pt; font-weight:400;">Inline images are treated like ordinary ranges of characters in the text editor, so they flow with the surrounding text. Images can also be selected in the same way as text, making it easy to cut, copy, and paste them. </span></p>
-<p align="justify" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"><img src=":/images/logo32.png" /><span style=" font-style:italic;"> Try to select this image by clicking and dragging over it with the mouse, or use the text cursor to select it by holding down Shift and using the arrow keys. You can then cut or copy it, and pasting it into different parts of this document.</span></p>
+<p align="justify" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"><img src=":/images/logo32.png" /><span style=" font-style:italic;"> Try to select this image by clicking and dragging over it with the mouse, or use the text cursor to select it by holding down Shift and using the arrow keys. You can then cut or copy it, and paste it into different parts of this document.</span></p>
<p align="justify" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"><span style=" font-size:16pt; font-weight:600;">Tables</span></p>
<p align="justify" style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:16pt; font-weight:600;"><span style=" font-size:11pt; font-weight:400;">QTextEdit can arrange and format tables, supporting features such as row and column spans, text formatting within cells, and size constraints for columns. </span></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:11pt;"></p>
diff --git a/demos/textedit/main.cpp b/demos/textedit/main.cpp
index fda6a64bd..54a0d86a4 100644
--- a/demos/textedit/main.cpp
+++ b/demos/textedit/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/textedit/textedit.cpp b/demos/textedit/textedit.cpp
index bf57eab23..a9c0f40ac 100644
--- a/demos/textedit/textedit.cpp
+++ b/demos/textedit/textedit.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -88,8 +88,8 @@ TextEdit::TextEdit(QWidget *parent)
}
textEdit = new QTextEdit(this);
- connect(textEdit, SIGNAL(currentCharFormatChanged(const QTextCharFormat &)),
- this, SLOT(currentCharFormatChanged(const QTextCharFormat &)));
+ connect(textEdit, SIGNAL(currentCharFormatChanged(QTextCharFormat)),
+ this, SLOT(currentCharFormatChanged(QTextCharFormat)));
connect(textEdit, SIGNAL(cursorPositionChanged()),
this, SLOT(cursorPositionChanged()));
@@ -128,7 +128,9 @@ TextEdit::TextEdit(QWidget *parent)
connect(textEdit, SIGNAL(copyAvailable(bool)), actionCut, SLOT(setEnabled(bool)));
connect(textEdit, SIGNAL(copyAvailable(bool)), actionCopy, SLOT(setEnabled(bool)));
+#ifndef QT_NO_CLIPBOARD
connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(clipboardDataChanged()));
+#endif
QString initialFile = ":/example.html";
const QStringList args = QCoreApplication::arguments();
@@ -259,7 +261,9 @@ void TextEdit::setupEditActions()
a->setShortcut(QKeySequence::Paste);
tb->addAction(a);
menu->addAction(a);
+#ifndef QT_NO_CLIPBOARD
actionPaste->setEnabled(!QApplication::clipboard()->text().isEmpty());
+#endif
}
void TextEdit::setupTextActions()
@@ -310,7 +314,7 @@ void TextEdit::setupTextActions()
menu->addSeparator();
QActionGroup *grp = new QActionGroup(this);
- connect(grp, SIGNAL(triggered(QAction *)), this, SLOT(textAlign(QAction *)));
+ connect(grp, SIGNAL(triggered(QAction*)), this, SLOT(textAlign(QAction*)));
// Make sure the alignLeft is always left of the alignRight
if (QApplication::isLeftToRight()) {
@@ -373,8 +377,8 @@ void TextEdit::setupTextActions()
comboFont = new QFontComboBox(tb);
tb->addWidget(comboFont);
- connect(comboFont, SIGNAL(activated(const QString &)),
- this, SLOT(textFamily(const QString &)));
+ connect(comboFont, SIGNAL(activated(QString)),
+ this, SLOT(textFamily(QString)));
comboSize = new QComboBox(tb);
comboSize->setObjectName("comboSize");
@@ -385,8 +389,8 @@ void TextEdit::setupTextActions()
foreach(int size, db.standardSizes())
comboSize->addItem(QString::number(size));
- connect(comboSize, SIGNAL(activated(const QString &)),
- this, SLOT(textSize(const QString &)));
+ connect(comboSize, SIGNAL(activated(QString)),
+ this, SLOT(textSize(QString)));
comboSize->setCurrentIndex(comboSize->findText(QString::number(QApplication::font()
.pointSize())));
}
@@ -507,7 +511,7 @@ void TextEdit::filePrintPreview()
#ifndef QT_NO_PRINTER
QPrinter printer(QPrinter::HighResolution);
QPrintPreviewDialog preview(&printer, this);
- connect(&preview, SIGNAL(paintRequested(QPrinter *)), SLOT(printPreview(QPrinter *)));
+ connect(&preview, SIGNAL(paintRequested(QPrinter*)), SLOT(printPreview(QPrinter*)));
preview.exec();
#endif
}
@@ -676,7 +680,9 @@ void TextEdit::cursorPositionChanged()
void TextEdit::clipboardDataChanged()
{
+#ifndef QT_NO_CLIPBOARD
actionPaste->setEnabled(!QApplication::clipboard()->text().isEmpty());
+#endif
}
void TextEdit::about()
diff --git a/demos/textedit/textedit.doc b/demos/textedit/textedit.doc
deleted file mode 100644
index 53279b93e..000000000
--- a/demos/textedit/textedit.doc
+++ /dev/null
@@ -1,18 +0,0 @@
-/*! \page textedit-example.html
-
- \ingroup examples
- \title Text Edit Example
-
- This example displays a text editor with the user interface written
- in pure C++.
-
- A similar example which uses \link designer-manual.book Qt
- Designer\endlink to produce the user interface is in the \link
- designer-manual.book Qt Designer manual\endlink.
-
-
- See \c{$QTDIR/examples/textedit} for the source code.
-
-*/
-
-
diff --git a/demos/textedit/textedit.h b/demos/textedit/textedit.h
index b94abf1ed..a043ba592 100644
--- a/demos/textedit/textedit.h
+++ b/demos/textedit/textedit.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/textedit/textedit.pro b/demos/textedit/textedit.pro
index 1ef4256a7..9669ec891 100644
--- a/demos/textedit/textedit.pro
+++ b/demos/textedit/textedit.pro
@@ -19,3 +19,4 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.html *.doc images
sources.path = $$[QT_INSTALL_DEMOS]/textedit
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/demos/textedit/textedit.qdoc b/demos/textedit/textedit.qdoc
new file mode 100644
index 000000000..6bebea543
--- /dev/null
+++ b/demos/textedit/textedit.qdoc
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 textedit-example.html
+
+ \ingroup examples
+ \title Text Edit Example
+
+ This example displays a text editor with the user interface written
+ in pure C++.
+
+ A similar example which uses \link designer-manual.book Qt
+ Designer\endlink to produce the user interface is in the \link
+ designer-manual.book Qt Designer manual\endlink.
+
+
+ See \c{$QTDIR/examples/textedit} for the source code.
+
+*/
+
+
diff --git a/demos/undo/commands.cpp b/demos/undo/commands.cpp
index ad0199826..44adb1d6f 100644
--- a/demos/undo/commands.cpp
+++ b/demos/undo/commands.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/undo/commands.h b/demos/undo/commands.h
index 5f6c04f2d..37bd02b61 100644
--- a/demos/undo/commands.h
+++ b/demos/undo/commands.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/undo/document.cpp b/demos/undo/document.cpp
index 0340c4218..0ad101c86 100644
--- a/demos/undo/document.cpp
+++ b/demos/undo/document.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/undo/document.h b/demos/undo/document.h
index 933959701..5e4b93c93 100644
--- a/demos/undo/document.h
+++ b/demos/undo/document.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/undo/main.cpp b/demos/undo/main.cpp
index 78db55fa5..94547fcc5 100644
--- a/demos/undo/main.cpp
+++ b/demos/undo/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/undo/mainwindow.cpp b/demos/undo/mainwindow.cpp
index 353f06bd3..2c0b194ca 100644
--- a/demos/undo/mainwindow.cpp
+++ b/demos/undo/mainwindow.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/undo/mainwindow.h b/demos/undo/mainwindow.h
index 4d1810c04..5125ec392 100644
--- a/demos/undo/mainwindow.h
+++ b/demos/undo/mainwindow.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the demonstration applications of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/demos/undo/undo.pro b/demos/undo/undo.pro
index e26d07c4b..0667bdd92 100644
--- a/demos/undo/undo.pro
+++ b/demos/undo/undo.pro
@@ -15,3 +15,4 @@ sources.files = $$SOURCES $$HEADERS *.pro icons $$RESOURCES $$FORMS
sources.path = $$[QT_INSTALL_DEMOS]/undo
INSTALLS += target sources
+symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
diff --git a/dist/README b/dist/README
index d8ab95893..e7dfb192b 100644
--- a/dist/README
+++ b/dist/README
@@ -6,30 +6,39 @@ http://qt.nokia.com/doc/latest/qt4-intro.html for details.
The Qt 4.x series is not binary compatible or source compatible with
the 3.x series. For more information on porting from Qt 3 to Qt 4, see
-http://qt.nokia.com/doc/latest/porting4.html .
+http://qt.nokia.com/doc/latest/porting4.html.
INSTALLING Qt
+If you have a source package (a .tar.gz, or .zip file), follow the
+instructions in the INSTALL file.
+
On Windows and Mac OS X, if you want to install the precompiled binary
packages, simply launch the package and follow the instructions in the
installation wizard.
-On Mac OS X, the binary package requires Mac OS X 10.4.x (Tiger) or
+For Mac OS X Carbon, the binary package requires Mac OS X 10.4 (Tiger) or
later and GCC 4.0.1 to develop applications. Its applications will run
-on Mac OS X 10.3.9 and above.
+on Mac OS X 10.4 and above.
-If you have a source package (a .tar.gz, .tar.bz2, or .zip file),
-follow the instructions in the INSTALL file.
+For Mac OS X Cocoa, the binary package requires Mac OS X 10.5 (Leopard) or
+later and GCC 4.0.1 to develop applications. Its applications will run
+on Mac OS X 10.5 and above.
DEMOS AND EXAMPLES
Once Qt is installed, we suggest that you take a look at the demos and
-examples to see Qt in action. Run the Qt Examples and Demos either by
+examples to see Qt in action.
+
+For desktop computers, run the Qt Examples and Demos either by
typing 'qtdemo' on the command line or through the desktop's Start
menu. On Mac OS X, you can find it in /Developers/Applications/Qt.
+For embedded devices, launch the Qt 'fluidlauncher' demo, either through
+the platforms filebrowser or the built in menu system.
+
REFERENCE DOCUMENTATION
@@ -37,60 +46,13 @@ The Qt reference documentation is available locally in Qt's doc/html
directory. You can use Qt Assistant to view it; to launch Assistant,
type 'assistant' on the command line or use the Start menu. On Mac OS
X, you can find it in /Developer/Applications/Qt. The latest
-documentation is available at http://qt.nokia.com/doc/ .
+documentation is available at http://qt.nokia.com/doc/.
SUPPORTED PLATFORMS
-For this release, the following platforms have been tested:
-
- win32-g++ (mingw)
- win32-msvc
- win32-msvc2003
- win32-msvc2005
- win32-msvc2008
-
- aix-xlc
- aix-xlc-64
- hpux-acc
- hpux-acc-64
- hpux-acc-o64
- hpux-g++
- hpux-g++-64
- hpuxi-acc-32
- hpuxi-acc-64
- linux-g++
- linux-icc
- linux-icc-32
- linux-icc-64
- solaris-cc
- solaris-cc-64
- solaris-g++
- solaris-g++-64
-
- macx-g++
- macx-g++42
-
- qws/linux-x86-g++
- qws/linux-arm-g++
-
- wince50standard-armv4i-msvc2005
- wince50standard-armv4i-msvc2008
- wince50standard-mipsii-msvc2005
- wince50standard-mipsii-msvc2008
- wince50standard-x86-msvc2005
- wince50standard-x86-msvc2008
- wincewm50pocket-msvc2005
- wincewm50pocket-msvc2008
- wincewm50smart-msvc2005
- wincewm50smart-msvc2008
- wincewm60professional-msvc2005
- wincewm60professional-msvc2008
- wincewm60standard-msvc2005
- wincewm60standard-msvc2008
-
For a complete list of supported platforms, see
-http://qt.nokia.com/doc/latest/supported-platforms.html.
+http://qt.nokia.com/doc/%SHORTVERSION%/supported-platforms.html.
COMMERCIAL EDITIONS
@@ -103,16 +65,18 @@ the QtCore, QtGui (except QGraphicsView), QtTest, QtDBus and
Qt3Support modules.
For a full listing of the contents of each module, please refer to
-http://qt.nokia.com/doc/latest/modules.html
+http://qt.nokia.com/doc/%SHORTVERSION%/modules.html
HOW TO REPORT A BUG
If you think you have found a bug in Qt, we would like to hear about
-it so that we can fix it. Before reporting a bug, please check
-http://qt.nokia.com/developer/faqs/ and
-http://qt.nokia.com/products/appdev/platform/platforms/ to see if
-the issue is already known.
+it so that we can fix it. The Qt bug tracking system is open to the
+public at http://bugreports.qt.nokia.com/.
+
+Before reporting a bug, please use the bug-tracker's search functions
+and consult http://qt.nokia.com/developer/faqs/ to see if the issue is
+already known.
Always include the following information in your bug report: the name
and version number of your compiler; the name and version number of
@@ -121,11 +85,9 @@ configure options it was compiled with.
If the problem you are reporting is only visible at run-time, try to
create a small test program that shows the problem when run. Often,
-such a program can be created with some minor changes to one of the
-many example programs in Qt's examples directory. Please submit the
-bug report using the Task Tracker on the Qt website:
-
-http://qt.nokia.com/developer/task-tracker
+such a program can be created with some minor changes to one of the many
+example programs in Qt's examples directory, or to the autotests that
+are available in the public source repository on http://qt.gitorious.org/.
Qt is a trademark of Nokia Corporation and/or its subsidiary(-ies).
diff --git a/dist/changes-4.4.4-temple b/dist/changes-4.4.4-temple
new file mode 100644
index 000000000..25f1f0bcb
--- /dev/null
+++ b/dist/changes-4.4.4-temple
@@ -0,0 +1,65 @@
+Qt for S60 4.4.4 Temple introduces new ported modules and few other improvements.
+It guarantees no source or binary compatibility between any other versions.
+
+Some of the changes listed in this file include internal issue tracking
+numbers.
+
+This file only lists changes specific to Qt for S60.
+
+
+****************************************************************************
+* Platform Specific Changes *
+****************************************************************************
+
+Qt for S60
+----------
+ * Changes to qmake:
+ * [228860] Fixed bld.inf and .mmp generation when not under Qt src tree,
+ i.e. when the makespec is default.
+ * [231121] Added no_icon CONFIG keyword to suppress showing application
+ icon in the application menu.
+ * [233497] EPOCROOT is no longer required as environment variable as long
+ as a Symbian device can be determined.
+ * [234551] Generated .pkg files no longer include Qt libraries directly,
+ instead they have a dependency to a separate QtLibs package.
+ * [234555] Added support for generic mmp file content in form of
+ MMP_RULES variable. Also, EXPORTUNFROZEN is now defined using this
+ variable instead of being hardcoded.
+ * [234557] Improved user ability to control include order via INCLUDEPATH
+ variable.
+ * [234557] Support for STDDLL, STDEXE and STDLIB Open C target types via
+ stdbinary CONFIG keyword.
+ * [235975] The -r switch is no longer required with qmake to recurse
+ subdirs template.
+ * Fixed: Resources with similar basenames corrupted makefile.
+
+ * [230751] Improved Elastic Nodes application stability.
+ * [230752] Mouse drag events work now.
+ * [234558] Ported QSharedMemory.
+ * [234559] Ported QSystemSemaphore.
+ * [234560] Ported all of QtXml.
+ * [234561] Ported all of QtScript.
+ * [234562] Ported all of QtSvg.
+ * [234869] QFileDialog no longer uses desktop layout in Qt for S60.
+ * QtNetwork now supports SSL.
+ * If current path returned by Open C doesn't exist when queried, it is
+ created.
+ * All supported libs and plugins built under src dir now have proper UIDs.
+ * Fixed GCCE build breaking on atomics.
+ * Improved fonts support:
+ * Anti aliasing
+ * Italic/bold
+ * Higher text layout precision
+ * QPixmapCache size limited to 2MB.
+ * Createpackage script looks for RnD certs in Qt installation root instead
+ of EPOCROOT.
+ * Iconengines plugins included in the default build.
+ * More examples and demos added in the default build to showcase newly
+ ported modules.
+ * QFileSystemWatcher thread stack size increased to avoid crashing when
+ entering directories that need AllFiles capability.
+ * Createpackage will now support signing with custom certificates in
+ addition to default ones.
+ * A perl script patch_capabilities.pl is provided for changing capabilities
+ of all binaries specified in a single .pkg file.
+ \ No newline at end of file
diff --git a/dist/changes-4.5.0-garden b/dist/changes-4.5.0-garden
new file mode 100644
index 000000000..ce258e763
--- /dev/null
+++ b/dist/changes-4.5.0-garden
@@ -0,0 +1,241 @@
+Qt 4.5.0-garden
+---------------
+
+The Qt for S60 "Garden" release is the fourth pre-release from the
+Qt for S60 porting project. "Garden" is based on the Qt 4.5 codebase
+and release focus has been on proper GUI integration.
+
+Up to and including change: b7621555cb1d1c97967dd40d63dd7e85a418407c
+
+Lists just S60 fixes, for general 4.5.0 changes go to:
+
+ http://qt.nokia.com/developer/changes/changes-4.5.0
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Task Tracker:
+
+ http://qt.nokia.com/developer/task-tracker
+
+Each of these identifiers can be entered in the task tracker to obtain
+more information about a particular change. Sometimes the task is internal
+and cannot be viewed by the public, a lot of them are non-public for Qt for
+S60 at the moment.
+
+****************************************************************************
+* New features *
+****************************************************************************
+
+New modules
+-----------
+
+- qtmain
+ * Added a small static library called qtmain which is linked in
+ automatically for Qt applications on S60. qtmain includes an
+ implementation of E32Main() that sets up Qt correctly for S60. This
+ means that Qt no longer links to libcrt0.lib but uses qtmain instead.
+ However, if you are not linking against QtGui, you'll still have to
+ link to libcrt0.
+
+New classes
+------------
+
+- QS60Style
+ * Native look for Qt applications on S60 3.1 and later versions. The
+ style picks up the current theme parts, palettes and font settings
+ through the skinserver and uses these when painting in Qt.
+ The layout data for different resolutions is considered.
+
+Ported classes
+--------------
+
+- QDesktopServices
+ * Provides methods for accessing common desktop services: Opening the
+ browser with an url, launching documents with the standard application
+ and getting default system directories.
+
+- QClipboard
+ * Provides access to the window system clipboard.
+
+- QSysInfo
+ * QSysInfo class provides information about the system.
+
+Features
+--------
+
+- Input methods
+ * QInputMethodEvent will now be generated by Qt.
+ To use it, widgets must set the attribute WA_InputMethodEnabled and
+ implement QWidget::inputMethodQuery(...).
+ * Qt will use the underlaying FEP framework from S60.
+ * Multitap and T9 supported.
+ * Virtual keyboard for touch phones is supported.
+ * Most of the Qt widgets already have support for input methods.
+
+- Drag-n-Drop
+ * At the moment works only within same Qt process.
+
+- STL support for QtS60
+ * use -stl switch when configuring Qt.
+
+Optimizations
+-------------
+
+
+****************************************************************************
+* Build issues *
+****************************************************************************
+
+- Fixed compilation on private S60 platforms by adding neccessary include paths.
+- Fix compiler error if --gnu flag is given to RVCT.
+
+
+****************************************************************************
+* Changes to existing classes *
+****************************************************************************
+
+- qapplication_s60.cpp (non-public)
+ * Simplified by introduction of qtmain.
+ * added CCoeControl to be the native representation of QWidget.
+ * Use window group from CEikonEnv instead of creating our own.
+ * No need to create/destroy RWsSession, this is now done by the Avkon
+ application.
+ * Handle pointer events from QSymbianControl.
+ * Stopped using QETWidget for translation, now handled by
+ QSymbianControl.
+ * MouseButtonDblClick mapped to EModifierDoubleClick (after dblclick
+ Symbian will send mouseButtonRelease.
+
+- QApplication
+ * Implemented setDoubleClickInterval(...).
+ * Improved widgetAt().
+ * Added support for resizing widget's when the screen orientation
+ changes from portrait to landscape. For fullscreen and maximized
+ widgets this will ensure that they look correct in the new screen
+ layout.
+
+- qwindowsurface_s60.cpp (non-public)
+ * Stopped creating our own CWindowGc based on the RWindow and get
+ SystemGc from the CCoeControl we are currently painting on instead.
+
+- qeventdispatcher_s60.cpp
+ * Stopped using Active Objects to recieve events, we get them from
+ C*AppUi and CCoeControl instead.
+
+- QWidget
+ * Proper implementation for QDesktopWidget::availableGeometry.
+ * Improved raising and lowering widgets.
+ * Implemented setWindowTitle(...).
+ * Implemented QWidget::setWindowIcon(...) and made it to react to
+ different statuspane layouts.
+ * Improved focus handling (improved setFocus_sys).
+ * Fixed native window scrolling. Only use accelerated scroll if we are
+ scrolling a window owning widget.
+ * Improved setWindowState(...).
+ * Added implementation for createDefaultWindowSurface_sys().
+ * Added implementation for setMask_sys().
+ * Not creating a backing store for the top level widget (saves memory).
+ * winId() now returns a CCoeControl instead of RWindow.
+
+- QMenuBar
+ * Added support for using native S60 menues.
+ * Supported infinite level of menues inside menues.
+ * Supported checkboxes next to menu items).
+
+- QtCore and QtGui
+ * link to CONE and Uikon libraries and stop linking to glib and gthread.
+ * Renamed qt_deployment.pro to qt_libs.pro as it is more consistent.
+
+- Event loop / Event dispatcher
+ * We now integrate with the native loop, allowing CActiveScheduler and
+ QEventLoop to be used interchangably.
+ * Enabled posted events to work from the Symbian active scheduler too.
+ * Enable use of QEventLoop::ExcludeSocketEvents on Symbian.
+ * Improved handling of zero timers.
+
+- QColumnView
+ * Fixed a typo in one instance of QT_NO_QCOLUMNVIEW.
+
+- font rendering
+ * Speed increase
+ * Correctly render RTL text
+ * Proper shaping of complex writing systems
+ * Automatic font linking (aka merging) of different writing systems
+ * Rudimentary fallback glyph outline support
+ * Defaults to Symbians native (usually iType based) font rendering.
+ Alternatively, supports FreeType. Configure with -qt-freetype.
+
+- qcore_symbian_p.h (non-public)
+ * Added helper functions to convert QRect <-> TRect.
+ * Renamed qstringToTPtrC to qt_QString2TPtrC.
+ * Added helper function qt_TDisplayMode2Format.
+ * Added helper function to convert QSize <-> TSize.
+ * Added helper function to convert QString ->HBufC.
+ * Added helper function to convert TDesC -> QString.
+
+- QGraphicsSystem
+ * QRasterPixmapData(...) is specified as default pixmap data for S60.
+
+- QPixmap
+ * Improved grabWindow(...) when it comes to selecting client rect.
+
+- QDirModel
+ * Returns root dir name similary as done in Windows
+
+- QFSFileEngine
+ * copy(...) now uses Symbian native copy implementation which is more efficient
+ and doesn't leave temp files behind
+
+- QLocale
+ * Now has Symbian system locale support.
+
+****************************************************************************
+* Examples and demos *
+****************************************************************************
+
+****************************************************************************
+* Tools *
+****************************************************************************
+
+- qmake
+ * Support for QMAKE_EXTRA_TARGETS and QMAKE_EXTRA_COMPILERS variables.
+ * Support BLD_INF_RULES variable. Adds entries to generated bld.inf file
+ * Added 'make' targets '<build>-<platform>' 'distclean' and 'run'
+ * New platform_paths.prf and data_caging_paths.prf contain several
+ variables and replacement functions for including known paths.
+ * The .pro file qt_libs.pro was moved to src/s60installs.
+ * Support for ICON variable for setting application icon.
+ * Support for RSS_RULES variable, which enables entries to be added to
+ generated application registration files.
+ * When bulding qmake and other bootstrapped tools we now use
+ "-warnings on" instead of "-warnings all".
+ * Improved error message if calls to $$system() fails.
+ * Fixed several issues when qmake is built for platform win32-mwc.
+ * Moved mocing step to the build step so it is not longer required to
+ do "abld build" or "abld makefile" to remoc.
+ * Improved "make clean".
+ * Increased max heap to 8Mb.
+ * Enabled __CC_ARM flag used by some versions of RVCT.
+ * Removed hard coded INCLUDEPATH from qmake - developer can control
+ the whole include path hierachy.
+ * Symbian export mechanism is no longer used for emulator deployment,
+ instead copy commands are generated to wrapper makefile and
+ executed during final phase of building, after post link.
+ * Removed -O1 flag from WINSCW builds.
+ * Added qmake function (size) to ask number of items in QStringList.
+ * Qt demos are now installed to QtDemos folder in S60 emulator.
+ * Qt examples are now installed to QtExamples folder in S60 emulator/HW.
+ * Plugin stubs suffix changed to ".qtplugin".
+ * Paths containing $${EPOCROOT}/epoc32 will now properly generate
+ absolute paths in mmps.
+
+
+-configure
+ * Defaults for FREETYPE and SCRIPTTOOLS set to "no".
+
+****************************************************************************
+* Plugins *
+****************************************************************************
+
+****************************************************************************
+* Important Behavior Changes *
+****************************************************************************
diff --git a/dist/changes-4.5.2-tower b/dist/changes-4.5.2-tower
new file mode 100644
index 000000000..8252c295d
--- /dev/null
+++ b/dist/changes-4.5.2-tower
@@ -0,0 +1,436 @@
+Qt 4.5.2-tower
+---------------
+
+The Qt for S60 "Tower" release is the fifth pre-release from the Qt for
+S60 porting project. "Tower" is based on the Qt 4.5 codebase (mostly Qt 4.5.2).
+
+This list of changes lists S60 specific fixes only,
+for general 4.5.x changes go to:
+
+ http://qt.nokia.com/developer/changes/changes-4.5.0
+ http://qt.nokia.com/developer/changes/changes-4.5.1
+ http://qt.nokia.com/developer/changes/changes-4.5.2 (partially in Tower)
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Task Tracker:
+
+ http://qt.nokia.com/developer/task-tracker
+
+Each of these identifiers can be entered in the task tracker to obtain
+more information about a particular change. Sometimes the task is internal
+and cannot be viewed by the public, a lot of them are non-public for Qt for
+S60 at the moment.
+
+****************************************************************************
+* New features *
+****************************************************************************
+
+New modules
+-----------
+
+- Input methods
+ * Added events to support opening and closing the virtual keyboard, called
+ software input panel in Qt.
+ * Added an option to QApplication to choose between single or double click
+ input panel activation.
+ * Added input method hints API to Qt. These can be used to instruct input methods
+ to only allow certain characters or tailor their appearance.
+ * Added Qt::ImAnchorPosition to support querying for selections through input
+ methods.
+ * Added QInputMethodEvent::Selection to support setting the selection through
+ input methods.
+
+- Phonon
+ * The Phonon library is now part of Qt, but it comes without a backend.
+ This means that applications can build and run against the Phonon
+ library, but there is currently no S60 backend plugin providing actual
+ multimedia playback. Possible alternatives such as Helix and MMF are
+ being investigated.
+
+- QtSql
+ * Implemented QtSql module with sqlite3 backend. For now backend is
+ provided only in binary format.
+
+- QtWebkit
+ * Experimental webkit build for S60. Can be enabled by passing -webkit
+ to configure.
+
+New classes
+------------
+
+- QScopedPointer
+ * Smart pointer, which deletes pointer when destroyed.
+
+Ported classes
+--------------
+
+- QColormap
+ * Added basic implementation of QColormap for Symbian.
+
+- QLocalSocket and QLocalServer
+ * Added support for QLocalSocket and QLocalServer on Symbian.
+
+- QSound
+ * Implemented CMdaAudioPlayerUtility based Symbian backend for QSound.
+
+Features
+--------
+
+- QApplication
+ * Implemented QApplication::beep() for Symbian.
+
+- QPixmap
+ * Added supported for converting to/from CFbsBitmap
+
+- QSslSocket
+ * Added support for -openssl option i.e. runtime resolving of OpenSSL
+ symbols.
+
+- QWidget
+ * Basic widgets are now navigatable and usable via keypad on SDK 3
+ FP 1 and FP 2.
+ * Widgets can now be made semi-transparent on systems that support it
+ using Qt::WA_TranslucentBackground.
+
+- Exception safety
+ * Improving the exception safety of Qt, not yet complete.
+ * Added support for translating between Symbian leaves and standard C++
+ exceptions.
+
+Optimizations
+-------------
+
+- qdrawhelper
+ * Optimized drawing operations for RVCT builds, particulary for ARMV6.
+
+- QFont
+ * Use cached DPI for metrics.
+
+- qwidget_s60.cpp
+ * Avoid unnecessary calls to FocusChanged in Symbian.
+
+- qwindowsurface_s60.cpp
+ * Avoid updating raster buffer pointer on window hide
+
+Documentation
+-------------
+
+- exceptionsafety.qdoc
+ * A guide to exception safety in Qt.
+
+- symbian-exceptionsafety.qdoc
+ * A guide to integrating exception safety in Qt with Symbian.
+
+****************************************************************************
+* Code clean-up *
+****************************************************************************
+
+- Cleanup qeventdispatcher_unix.cpp
+ * 247268: All qeventdispatcher_unix.cpp changes were reverted since
+ this file is not anymore used in Symbian OS branch.
+
+- Cleanup QtNetwork workarounds implemented earlier due to Open C bugs.
+ * 247287: Removed getaddrinfo workaround.
+ * 247288: Removed waitForConnected workaround.
+ * 247289: Removed qt_socket_accept workaround.
+ * 247290: Removed qt_socket_connect workaround.
+ * 247290: Removed E32IONREAD workaround.
+ * 247293: Removed nativeHasPendingDatagrams workaround.
+ * 247295: Removed QNativeSocketEnginePrivate::nativeRead EPIPE
+ workaround.
+
+- Other code clean-ups
+ * 247278: Removed unnecessary includes from qbackingstore.cpp.
+ * Fixed Q_OS_SYMBIAN ifdef usage in qfiledialog_p.h.
+ * 247272: Removed qtestnetworkservers.h dependency, used
+ network-settings.h.
+ * Revert "Work around compiler bug on Nokia Metrowerks compiler."
+ * Remove UI highlights being inverted colors based on highlight text
+ colors.
+
+****************************************************************************
+* Build issues *
+****************************************************************************
+
+- Macros
+ * QT_NO_DEBUG now properly defined in release mode.
+
+- QTest
+ * Fixed testlib export macros for RVCT builds.
+
+- Namespaces
+ * Now builds when -qtnamespace option is defined.
+
+****************************************************************************
+* Changes to existing classes *
+****************************************************************************
+
+- QApplication
+ * 252798: Fixed layout when orientation changed via
+ AknAppUi::SetOrientationL.
+ * Generating MouseEvents has gone through several changes.
+ * qt_init() has been changed: auto flush is always enabled for
+ window server sessions on 3.1 SDK for both UDEB and UREL.
+ * Added support for '-graphics-system' command line option
+
+- QCoeFepInputContext (non-public)
+ * Fixes FEP crash when changing the focused Qt widget to NULL.
+ * Fixed a bug where the virtual keyboard could not be opened if there
+ was only one input widget.
+ * Fixed a crash in FEP when exiting application.
+
+- QDebug
+ * Fixed debug printing (incl. qWarning, qFatal) for strings longer
+ than 256 characters.
+ * introduce a breakpoint to get the emulator to stop in the debugger
+ when qFatal is called
+
+- QDesktopServices
+ * Fixed forwardslash/backslash usage as an path separator.
+ * Switched QDesktopServices mail-to URL handling to RSendAs in Symbian,
+ due to the fact that CSendUi requires extensive capabilities to work
+ correctly. Currently e-mail sending with qdesktopservices::openUrl
+ works in Symbian only if e-mail account already exists.
+
+- QDesktopWidget
+ * 253930: Implement proper resize behavior and emit necessary signals.
+
+- QEventDispatcherSymbian (non-public)
+ * Lowered the timeout for reprioritizing the process to 100ms.
+ * Fixed ASSERT panic in Symbian event dispatcher.
+ * 246600: Fix problem in eventdispatcher destructor / AO canceling.
+ * Fixed active scheduler removal when calling QThread::terminate.
+ * Fix to Open C bug: select sometimes returns -1 and errno is
+ ECONNREFUSED.
+ * Fix a crash when using QEventLoop::ExcludeSocketNotifiers flag.
+ * Changed to round robin scheduling for Qt's active objects. Other
+ active objects will still be scheduled like before.
+ * Fixed crash if events are posted before QApplication construction
+
+- QFontDataBase
+ * Now, also fonts from the user's /resources/fonts directories are
+ available.
+
+- QFontEngine
+ * Fix the vertical advance of glyph metrics.
+
+- QFontMetrics
+ * Fixed the boundingRect calculation for text.
+
+- QGraphicsView
+ * Added support for virtual keyboard to the the viewport.
+
+- QGraphicsTextItem
+ * Added support for virtual keyboard.
+
+- QHostInfo
+ * Added support for host lookups with multiple ipv4 addresses.
+
+- QInputContext
+ * Added QInputContext::s60FilterEvent().
+
+- QIoDevice
+ * Fixed compilation error when QIODEVICE_DEBUG is defined.
+
+- QKeyMapper (non-public)
+ * Fixed a broken keymapping where Enter key would be mapped to Tab.
+
+- QLocale
+ * Removed workaround for missing tzname symbol, fixes QLocal timeZone
+ implementation for Symbian.
+
+- QLocalSocket
+ * Connecting to QLocalServer is always done in blocking mode.
+
+- QMenuBar
+ * Native menus are handled properly even when application has multiple
+ QMainWindows.
+ * Fixed a bug causing both native and qt menu to be created.
+ * Fix for disappearing options menu after coming back from dialog.
+
+- QNativeSocketEnginePrivate (non-public)
+ * Socket connect and listen failure is indicated in exception set.
+ (Workaround to Open C bug)
+
+- QNetworkInterface
+ * Fixed R-handle leak in Symbian version of qnetworkinterface_unix.cpp.
+ * Introduced a new qnetworkinterface_symbian.cpp, because there wasn't
+ really anything common to UNIX equivalent.
+
+- QPixmap
+ * Added fromSymbianCFbsBitmap() and toSymbianCFbsBitmap().
+
+- QPlainTextEdit
+ * Added support for virtual keyboard.
+
+- QPluginLoader
+ * QPluginLoader will look for plugin stubs from the same folder on other
+ drives if it can't find them from the indicated drive.
+
+- QS60Style
+ * Added subElementRect implementation for SE_ItemViewItemCheckIndicator.
+ * Added support for E90 layouts.
+ * Added support for QScrollArea, QTextEditor, QGroupBox, QTreeView,
+ QToolBar and QDial styling.
+ * Better support for theme and layout changes.
+ * Better support for themed palettes and themed text colors.
+ * Better support for multiselection in item views.
+ * Better theming for QTable and QPanel.
+ * Better support of highlight graphics and texts for QLists, QTreeViews,
+ QCalendarWidgets and QComboBoxes.
+ * Support polishing fonts. Fonts are no longer changed within the drawing
+ code.
+ * Draw spinbox arrowbuttons side-by-side, instead one on top of the other.
+ * Harmonize widget drawing so that widgets are of similar height.
+ * Support check states for QLists and QPushButtons.
+ * Support flat QPushButtons.
+ * Support busy indicator.
+ * Support QScrollBar pressed state.
+ * Support QPushButton disabled theme graphics.
+ * Separate theme background for QDialogs.
+ * Clarify QToolButton pressed state.
+ * Removed linedrawing of panels and groupboxes.
+ * Fix palette-polution for a style that is activated from an application
+ after S60Style has been in use.
+ * Fix for frame masks with color depth other than EGrey2.
+ * Fix for squeezed QTabBars.
+ * Fix memory leak when color skinning graphics.
+ * Show focus/Editfocus visualization for KeyPad navigation on
+ SDK 3 FP 1 and FP 2.
+ * Fix for overwriting user specified palettes.
+
+- QSelectThread (non-public)
+ * We force monitoring sockets exception status as well, and not
+ just read/write.
+ * Notification related to the particular socket signaled via exception
+ fd_set will be mapped to the appropriate read/write notification.
+
+- QTemporaryFile
+ * Fixed temporary file rename in Symbian OS.
+
+- QTest
+ * Disable keypad navigation for autotests by default
+
+- QTextEdit
+ * Added support for virtual keyboard.
+
+- QThread
+ * Fixed thread termination in Symbian OS.
+
+- QUdpSocket
+ * Updated BindFlag documentation to reflect behaviour on Symbian OS.
+ * Wrote hack for QUdpSocket::writeDatagram return value in Symbian OS.
+
+- QWidget
+ * Added API for setting softkeys.
+ * Fixed background painting. Background can now be overwritten from
+ setting the respective palette role.
+ * Add support for Qt::WA_TranslucentBackground.
+
+- Many classes
+ * Improved exception safety.
+
+****************************************************************************
+* Examples and demos *
+****************************************************************************
+
+- Anomaly browser
+ * Added to demonstrate QtWebkit usage.
+
+- Deform, Pathstroke, and Wiggly
+ * Removed Symbian specific animation timer fixes since more generic
+ fix was made to event dispatcher.
+
+- DesktopServices
+ * Implemented content filters for desktopservices example.
+ * Added error handling to qdesktopservices example when openUrl fails.
+
+- Drilldown
+ * Added to demonstrate QtSql usage in Symbian OS.
+
+- Fluidlauncher
+ * Removed ugly workaround to make emulator deployment work correctly,
+ since the issue has been fixed in qmake.
+ * Included drilldown to demonstrate QtSql usage.
+ * Updated screenshots to S60 style.
+ * Added softkeys example.
+ * Added Anomaly browser to fluidlauncher.
+
+- Ftp
+ * Enabled default IAP setting for FTP example.
+ * IAP dialog will show after FTP UI is on screen.
+ * If active IAP exist that one will be used.
+
+- SecureSocketClient
+ * Fixed build issue caused by lack of cursor.
+
+- Softkeys
+ * New example showing how to use softkeys API in QWidget.
+
+****************************************************************************
+* Tools *
+****************************************************************************
+
+- configure
+ * -cetest is no longer a supported switch for configure.
+ * -stl option is enabled by default for Symbian OS
+ * -openssl option is enabled by default for Symbian OS.
+ * -fpu option enables vfpu type selection for ARM targets.
+
+- qmake
+ * Support for generating Symbian "test" targets: CONFIG += symbian_test.
+ * Support for Symbian Build System, version 2 (aka Raptor) via
+ symbian-sbsv2 mkspec.
+ * PAGED keyword is added to all MMP files by default, except in S60 3.1
+ builds.
+ * Read-only flag is no longer preserved when deploying files into
+ emulator environment.
+ * Changed the timestamp to ISO format in all files generated
+ by qmake for symbian-* mkspecs.
+ * Qt's VERSION variable will now generate VERSION keyword in mmp files.
+ * Made Open C include paths handling bit more robust.
+ * Support both Symbian Foundation header structure in /epoc32/include,
+ as well as old Symbian/S60 structure
+
+- Release package creation
+ * Removed the obsolete script to create release package.
+
+- Createpackage script
+ * Now creates packages with .sis suffix.
+
+- Patch_capabilities script
+ * Will now patch also vendor id in binaries and the UID in the pkg file.
+
+
+****************************************************************************
+* Documentation *
+****************************************************************************
+
+- qmake-manual
+ * 250370: Added documentation for ICON keyword.
+
+****************************************************************************
+* Plugins *
+****************************************************************************
+
+- S60 version specific plugins
+ * Isolated S60 version dependent functionality to S60 version specific
+ plugins (qts60plugin_x_y.dll) to make it possible for single build to
+ run on any supported device, even if with reduced functionality on
+ some.
+
+****************************************************************************
+* Important Behavior Changes *
+****************************************************************************
+
+- Qt libs
+ * Qt libs are now built with "All -Tcb" capabilities always. It is now
+ always necessary to run patch_capabilities.pl script if self-signing
+ of Qt libs is desired.
+ * QtCore and QtSql made UNPAGED when installed via SIS file as a
+ workaround for an obscure crash when they are paged.
+ * qt_libs.pro updated to reflect Open C dependencies, as Qt requires
+ 1.5.0 and newer release.
+ * Qt libs are now build with the "STDCPP" mmp flag. On platforms from
+ TB9.2, Qt code will throw std::bad_alloc exceptions on allocation
+ failure.
diff --git a/dist/changes-4.5.3 b/dist/changes-4.5.3
index df282b045..189baeed8 100644
--- a/dist/changes-4.5.3
+++ b/dist/changes-4.5.3
@@ -17,107 +17,124 @@ Each of these identifiers can be entered in the task tracker to obtain more
information about a particular change.
****************************************************************************
-* General *
-****************************************************************************
-
-General Improvements
---------------------
-
-- Documentation and Examples
-
-Third party components
-----------------------
-
-
-****************************************************************************
* Library *
****************************************************************************
+- QColorDialog
+ * [256164] Fixed the setting of alpha values in QColorDialog.
-****************************************************************************
-* Database Drivers *
-****************************************************************************
+- QDirIterator
+ * [258230] Fixed inconsistencies in value returned from
+ QDirIterator::next().
+- QDoubleSpinBox
+ * [255019] Fixed a crash when using large value for decimals.
-****************************************************************************
-* Platform Specific Changes *
-****************************************************************************
+- QFileDialog
+ * [None] Fix a bug when activating HideNameFilterDetails on Windows filedialog.
+ * [258084] QFileDialog static functions doesn't honor the DontUseNativeDialog flag.
-Qt for Linux/X11
-----------------
+- QGraphicsItem
+ * [258956] Fix ancestor flags that are not correctly update when reparenting.
+- QGraphicsView
+ * [258356] Fix the hand scrolling in QGraphicsView that will stop unexpectedly.
-Qt for Windows
---------------
+- QGraphicsWidget
+ * [257232] Fix regression in clip path calculation for QGraphicsWidget.
+- QInputDialog
+ * [255502] Fixed bug in getDouble().
-Qt for Mac OS X
----------------
+- QNetworkAccessManager
+ * [256240] Proper handling of HTTP redirect in AlwaysCache mode.
+ * [257662] Fix timing issues that could trigger double sending of an
+ HTTP request.
+ * [256630] Fix usage of QProgressDialog together with QNetworkReply.
+- QPainter
+ * [254105] Fixed potential segmentation fault when setting empty clip
+ rectangle.
+ * [256549] Fixed inconsistent behavior between paint engines when
+ setting an IntersectClip after doing setClipping(false).
+ * [254407] Fixed rendering issue with outline drawing using
+ projective transforms.
+ * [258776] Fixed rounding bug in drawImage().
-Qt for Embedded Linux
----------------------
+- QPainterPath
+ * [251909] Fixed bug in QPainterPath::united() / simplified().
+- QSslCertificate
+ * [256066] Fix loading of a PEM when the length was a multiple of 64.
-Qt for Windows CE
------------------
-
+- QTemporaryFile
+ * [260165] Fixed a bug where temporary files would be left behind when
+ copying a file to a non-existing directory.
****************************************************************************
-* Compiler Specific Changes *
+* Database Drivers *
****************************************************************************
+- [QT-353] (ODBC) Fixed issue of forward only datasets failing when not
+ explicitly set so.
+- [222678] Fixed QSqlTableModel: trying to delete the wrong row.
+- (Interbase) Fixed crash when calling numRows on unknown query type.
+- Fixed several database autotests.
+- Fixed determination of end of odbc string on deficient driver.
+- Fixed formatting of date strings in psql driver.
+- Fixed mysql queries automatically getting prepared. Now have to explicitly
+ prepare them if you want that functionality.
+- Fixed failure when QSqlTableModel has null fields to update.
+- Fixed missing isnan/isinf on some platforms (needed for postgres driver)
+- Fixed ::record for dialect 3 named tables in interbase/firebird.
+- Fixed invalid length for numeric fields in oracle.
+- (ODBC) Fixed non-unicode strings should be strings, not bytearrays.
****************************************************************************
-* Tools *
+* Platform Specific Changes *
****************************************************************************
-- Build System
-
-- Assistant
-
-
-- Designer
-
-
-- Linguist
- - Linguist GUI
-
- - lupdate
-
- - lrelease
-
-
-- rcc
-
-
-- moc
-
-
-- uic
-
-
-- uic3
-
-
-- qmake
-
-
-- configure
+Qt for Linux/X11
+----------------
+- Fixed a bug where an empty KDEDIRS variable would bring /share into the icon
+ search path.
+- [KDE 191759] Plasma spinning in endless loop.
+- QClipboard can copy/paste on all screens in a multiscreen configuration.
+- Fixed a bug that prevented QClipboard to work after some time.
-- qtconfig
+Qt for Mac OS X
+---------------
+- [252088] Drag and drop events will now consider the
+ WA_TransparentForMouseEvents in Cocoa port.
+- [255428] Fixed an issue when calling QWidget::raise() on hidden windows
+ making them visible in Cocoa port.
+- [256269] Window resize events triggered from QWidget::adjustSize() will now
+ be sent as a non-spontaneous event in the Cocoa port.
+- [258822] Fixed a crash when inserting the same menu twice in a menubar in
+ Cocoa port.
+- Fixed the wizard background images for Snow Leopard.
-- qt3to4
+Qt for Windows
+-----------------
+- [250188] Fixed size windows will show the maximize button if asked explicitely.
+Qt for Windows CE
+-----------------
+- [260702] Fixed restoring of minimized Windows.
****************************************************************************
* Plugins *
****************************************************************************
-
-****************************************************************************
-* Important Behavior Changes *
-****************************************************************************
+- DirectFB
+ * Make autorepeat work for DirectFB keyboard driver.
+ * Fix a crash when resizing windows.
+ * Fix an off by one when flipping surfaces that could lead to artifacts.
+ * Make painting operations with QRegion clips go to DirectFB rather than
+ Raster (when possible).
+ * Make porter duff operations work for blits.
+ * Various optimizations.
+ * Handle more operations in hw.
diff --git a/dist/changes-4.5.4 b/dist/changes-4.5.4
new file mode 100644
index 000000000..abaf4f029
--- /dev/null
+++ b/dist/changes-4.5.4
@@ -0,0 +1,123 @@
+Qt 4.5.4 is a bug-fix release. It maintains both forward and backward
+compatibility (source and binary) with Qt 4.5.0. For more details,
+refer to the online documentation included in this distribution. The
+documentation is also available online:
+
+ http://doc.trolltech.com/4.5
+
+The Qt version 4.5 series is binary compatible with the 4.4.x series.
+Applications compiled for 4.4 will continue to run with 4.5.
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Task Tracker:
+
+ http://www.qtsoftware.com/developer/task-tracker
+
+Each of these identifiers can be entered in the task tracker to obtain more
+information about a particular change.
+
+****************************************************************************
+* General *
+****************************************************************************
+
+General Improvements
+--------------------
+
+- Documentation and Examples
+
+Third party components
+----------------------
+
+
+****************************************************************************
+* Library *
+****************************************************************************
+
+
+****************************************************************************
+* Database Drivers *
+****************************************************************************
+
+
+****************************************************************************
+* Platform Specific Changes *
+****************************************************************************
+
+Qt for Linux/X11
+----------------
+
+
+Qt for Windows
+--------------
+
+
+Qt for Mac OS X
+---------------
+
+
+Qt for Embedded Linux
+---------------------
+
+
+Qt for Windows CE
+-----------------
+
+
+****************************************************************************
+* Compiler Specific Changes *
+****************************************************************************
+
+
+****************************************************************************
+* Tools *
+****************************************************************************
+
+- Build System
+
+- Assistant
+
+
+- Designer
+
+
+- Linguist
+ - Linguist GUI
+
+ - lupdate
+
+ - lrelease
+
+
+- rcc
+
+
+- moc
+
+
+- uic
+
+
+- uic3
+
+
+- qmake
+
+
+- configure
+
+
+- qtconfig
+
+
+- qt3to4
+
+
+****************************************************************************
+* Plugins *
+****************************************************************************
+
+
+****************************************************************************
+* Important Behavior Changes *
+****************************************************************************
+
diff --git a/dist/changes-4.6.0 b/dist/changes-4.6.0
index bf18b14f9..3e7d33bcc 100644
--- a/dist/changes-4.6.0
+++ b/dist/changes-4.6.0
@@ -8,39 +8,1044 @@ The Qt version 4.6 series is binary compatible with the 4.5.x series.
Applications compiled for 4.5 will continue to run with 4.6.
Some of the changes listed in this file include issue tracking numbers
-corresponding to tasks in the Task Tracker:
+corresponding to tasks in the Qt Bug Tracker, the (now obsolete) Task
+Tracker, or the Merge Request queue of the public source repository.
- http://qt.nokia.com/developer/task-tracker
-
-Each of these identifiers can be entered in the task tracker to obtain more
-information about a particular change.
+Qt Bug Tracker: http://bugreports.qt.nokia.com
+Task Tracker: http://qt.nokia.com/developer/task-tracker
+Merge Request: http://qt.gitorious.org
****************************************************************************
* General *
****************************************************************************
+New features
+------------
+
+ - QState, QStateMachine
+ * New classes for state machine framework added to QtCore.
+
+ - QAbstractAnimation
+ * New animation framework added to QtCore
+
+ - QTouchEvent
+ * New class for handling multitouch events added to QtGui
+
+ - QGesture, QGestureRecognizer
+ * New gesture framework added to QtGui
+
+ - QMatrix4x4, QGenericMatrix, QVector2D, QVector3D, QVector4D, QQuaternion
+ * New classes to support 3D applications.
+
+ - QGLShaderProgram, QGLShader
+ * New classes for using shader programs written in the GL Shading Language.
+
+ - QGraphicsEffect
+ * New classes for applying graphics effects to graphics items and widgets.
+
+ - QWebElement
+ * New class for DOM access added to QtWebKit
+
+ - QAudioInput, QAudioOutput
+ * New audio input and output classes.
+
+ - QAbstractVideoSurface, QVideoFrame
+ * New abstract video output classes.
+
+ - OpenVG graphics system added.
+
+ - Added 800x480 screen mode to qvfb configuration dialog.
+
+ - Improved support for input methods in graphics view.
+
+ - [MR#1742] Added new multimedia keys to the Qt::Key enum.
+
+ - Boxes demo ported to use new 3D math and shader program classes.
+
+ - QtTest now supports outputting XUnit XML documents, for integrating
+ with existing continuous integration systems. This is enabled by
+ running the test program with the -xunitxml option.
+
+ - QtDBus
+ * The minimum required version of the D-Bus reference library is
+ now 0.93.
+ * Support for reading and writing of custom property types added.
+ * Support for getting return arguments in remote method invocation
+ via QMetaMethod::invokeMethod.
+
+ - The QtScript module is now based on the 3rdparty JavaScriptCore library. It
+ is only available under the LGPL or a compatible license.
+
+Optimizations
+-------------
+
+ - Optimized rendering strategy in QGraphicsView
+ * See list of Important Behavior Changes below
+
+ - Improved delivery of posted events on Windows
****************************************************************************
* Library *
****************************************************************************
- * [245219] Added QXmlQuery::setFocus(const QString &focus);
+QtCore
+------
+ - QAbstractItemModel
+ * [MR#972] Added API to move items
+ * [MR#1072] Added function beginResetModel() / endResetModel()
+
+
+ - QByteArray
+ * New overloads for QByteArray::insert() and QByteArray::prepend().
+ * [MR#1286] Added value_type typedef for STL compatibility
+
+ - QEventDispatcherGlib (internal class)
+ * Fix a regression introduced in 4.5.3 that would cause timers to not
+ be delivered.
+
+ - QEventDispatcherUNIX (internal class)
+ * Improve detection of monotonic clock support to include
+ non-POSIX.1-2001 compliant systems.
+ * [250681] Fix time change detection on UNIX systems without monotonic
+ timers.
+
+ - QEventDispatcherWin32 (internal class)
+ * Changed the threshold for using multimedia timers to 20ms (was 10ms).
+ * Changed the way Qt's posted events are sent by the event
+ dispatcher. They are now driven on top of a Windows message
+ instead of an explicit call in processEvents(). This means that
+ posted events are sent even when a Windows modal message loop is
+ running (for example, when the user is moving a window or when a
+ native modal dialog is visible).
+ * Fixed a bug that would allow the same timer id to be used by multiple
+ QTimer instances.
+
+ - QFile
+ * Make QFile::resize() more robust when operating on buffered files.
+
+ - QObject
+ * [259514] fixed a possible dead-lock in the destructor.
+ * Added the possibility to pass the flag Qt::UniqueConnection to
+ QObject::connect.
+ * Fixed race conditions that occured when moving object to threads
+ while connecting.
+
+ - QPluginLoader
+ * Improved performance of plugin loading by reusing the plugin cache
+ instead of loading it every time.
+
+ - QProcessEnvironment
+ * New class; support for easy access to key/value pairs in the process
+ environment.
+
+ - QRegExp
+ * New pattern syntax "QRegExp::WildcardUnix" with wildcard character
+ escaping.
+
+ - QScopedPointer
+ * New pointer class for cleaning up objects when leaving the current
+ scope.
+
+ - QSharedPointer
+ * Added support for creating the object along with the internal private
+ data in one single memory allocation. (QSharedPointer::create)
+ * Fixed a bug where, in a race condition, QSharedPointer could track a
+ pointer that was being deleted.
+
+ - QTextCodec
+ * Instantiate the CP949 codec when building with -no-iconv.
+
+ - QTextStream
+ * [221316] Fixed crash on large input.
+ * Improved reading utf8/utf16/utf32 data by correctly skipping the
+ ByteOrderMark when reading data by one character at a time.
+
+ - QThread
+ * [249997] Document that QThread priority has no effect on Linux.
+
+ - QUrl
+ * Made QUrl hostname parser a lot stricter, requiring compliance
+ to STD3 to validate, thus preventing invalid hostnames from
+ being accepted. See below in "Important Behavior Changes".
+
+ - QUuid
+ * [QTBUG-3543] Fixed a bug in createUuid() which caused multiple
+ threads to generate the identical UUID sequences.
+
+ - QVariant
+ * Many optimisations.
+ * Added QVariant::toFloat() and QVariant::toReal().
+ * Added QVariant(float) constructor.
+ * qvariant_cast<QVariant> and qVariantFromValue<QVariant> are now
+ identity functions.
+ * Added support for math3d types.
+
+ - QWeakPointer
+ * Added support for tracking QObject-derived classes that aren't
+ attached to a QSharedPointer.
+ * Added QWeakPointer::data which allows you to obtain the pointer
+ being tracked (without protection).
+ * Added operator-> like the above data(), but requires a #define.
+
+ - QXmlStreamWriter
+ * [256468] Fixed comment indentation.
+
+QtGui
+-----
+
+ - Qt::escape
+ * Now escape the double quote (&quot;).
+
+ - QAbstractItemView
+ * [256502] Fixes selectionModel::hasSelection return value after
+ model::reset.
+ * [MR#1426] Fixes some issues with Shift-selection
+ * [MR#1668] New QAbstractItemView::setDefaultDropAction
+
+ - QApplication
+ * [QTBUG-739] Removed internal widgets from QApplication::topLevelWidgets().
+
+ - QCalendarWidget
+ * [252943] QCalendarWidget::setDateTextFormat() reset the format if the
+ date is invalid.
+
+ - QColumnView
+ * [246999] Fixed view not updating when the model changed dynamically.
+
+ - QComboBox
+ * [220195] Fixed keyboard search when current index is -1.
+
+ - QCompleter
+ * [246056] Fixed a possible assertion when setting the completer prefix.
+
+ - QEvent
+ * Introduced RequestSoftwareInputPanel and CloseSoftwareInputPanel events.
+
+ - QFontDialog
+ * [256466] Fixed the dialog not always returning the selected style.
+
+ - QFontEngine
+ * [QTBUG-2354] Support certain 'Microsoft' platform symbol fonts which
+ also contain a regular unicode table for exactly the symbol range of
+ code points.
+
+ - QFontEngineQPF
+ * Make alphaMapForGlyph() generate the correct color table for
+ Indexed8 and Mono glyph images. Fixed the "all glyphs are white
+ boxes" problem in OpenGL1 paint engine.
+
+ - QFontMetrics
+ * [176401] Account for right bearing in bounding rect.
+
+ - QGraphicsAnchorLayout
+ * Support for expanding size policy has been removed. (The Qt 4.6 Beta
+ had support for it).
+
+ - QGraphicsBlurEffect
+ * Since the 4.6 Beta, Qt::RenderHint has been moved to
+ QGraphicsBlurEffect::BlurHint.
+ * Input contexts are not activated for disabled widgets anymore.
+ * [250555] Data copied from Mozilla Firefox can now be pasted correctly to
+ a Qt application.
+
+ - QGraphicsItem
+ * Many optimizations.
+ * Fixed bug and improved accuracy of QGraphicsItem::childrenBoundingRect().
+ * Introduced QGraphicsItem::ItemHasNoContents.
+ * Introduced QGraphicsItem::ItemSendsGeometryChanges (see Behavioral
+ Changes).
+ * Introduced QGraphicsItem::focusProxy(), focus proxy support.
+ * Introduced QGraphicsItem::ItemNegativeZStacksBehindParent.
+ * Introduced QGraphicsItem::ItemIsPanel, light-weight window support.
+ * Introduced modality support for QGraphicsItem panels.
+ * Introduced activation support.
+ * Introduced QGraphicsItem::stackBefore().
+ * Cached items are now always invalidated when update() is called.
+ * Added input hints.
+ * Added a new set of properties to set a transformation on an item.
+
+ - QGraphicsLayout
+ * Introduced QGraphicsLayout::addChildLayoutItem().
+
+ - QGraphicsObject
+ * New class; inherits QGraphicsItem and adds notification signals and
+ property declarations.
+
+ - QGraphicsProxyWidget
+ * [251407] Fixed window flag handling. Now QGraphicsProxyWidget's flags
+ win.
+ * Fix Qt::ClickFocus policy.
+
+ - QGraphicsScene
+ * Many optimizations.
+ * [245317] Fixes to mouse grabbing behavior.
+ * Fixed delivery of double-click events after explicit grab and then ungrab.
+ * Rewrote the internal rendering to use a recursive instead of an iterative
+ approach.
+ * Ensure hover enter events are delivered when an item is pressed.
+ * Introduced activation support.
+ * Fixed bugs in initial focus support.
+
+ - QGraphicsTextItem
+ * Now inherits from QGraphicsObject instead.
+
+ - QGraphicsTransform
+ * New class; eases animation of transformations for QGraphicsItem.
+
+ - QGraphicsView
+ * Many optimizations.
+ * Fix mapToScene(QRect) to avoid extra unnecessary adjustments.
+ * Introduced QGraphicsView::isTransformed().
+ * [QTBUG-4151] Items with parent that sets ItemClipsChildrenToShape were
+ sometimes invisible.
+
+ - QGraphicsWidget
+ * Now inherits from QGraphicsObject instead.
+ * Interactive resizing of top level windows now respects height-for-width
+ constraints.
+ * Reduced memory footprint.
+
+ - QHeaderView
+ * [208320] Make sure the sort indicator is taken into account for the size
+ hint.
+ * [255574] Make sure the size hint for the section depends on visible
+ sections.
+
+ - QImageReader
+ * [255627] Fix floating point exception in
+ QImageReader::setScaledSize(QSize(0, 0)).
+
+ - QLineEdit
+ * [248948] Clear selection when redoing a delete operation.
+ * [QTBUG-5261] Fixed bug where erasing characters from a textedit did not
+ update the text.
+
+ - QListView
+ * [243335] Fixed the visualRect to return correct values when the widget is
+ not yet shown.
+ * [MR#666] Fixed selection with Shift-Arrow/Shift-Click in QListView's IconMode
+
+ - QMainWindow
+ * [226060] Adding actions to a toolbar would always make the next toolbar
+ move.
+
+ - QMenu
+ * [252610] Fixed position of the shortcut text while setting a stylesheet
+ on menu items
+
+ - QMenuBar
+ * [260873] Fix mouse interaction while undocking a widget from the main
+ window
+ * Dock areas didn't get a splitter if their dock widgets were not
+ resizable.
+
+ - QPaintDevice
+ * New qt_paint_device_metric() function to replace the friend declarations
+ for window surface classes that need to access metric().
+
+ - QPainter
+ * [QTBUG-1666] Made QPainter::drawText() respect Qt::TextDontClip flag
+ also in vertical direction.
+ * [254658] Improved clipping performance in OpenGL paint engine.
+
+ - QPainterPath
+ * [QTBUG-1537] Fixed bug where the points of a rounded rectangle were added
+ in counter-clockwise order instead of clockwise order like other shapes.
+
+ - QPen
+ * [QTBUG-2738] Made QPen::setDashOffset() work with non-custom dashed lines.
+
+ - QPixmap
+ * Optimized width(), height(), isNull() and depth().
+ * [QTBUG-2832] Fixed bug where calling fill on pixmap with active painter
+ could crash.
+
+ - QPlainTextEdit
+ * Fixed crash when clicking on a text edit which was smaller than the
+ height of the font used.
+
+ - QPlastiqueStyle
+ * [QTBUG-3555] Fixed a bug in the Plastique style that would cause an
+ ASSERT failure in QFont when the application font has a pixel size set.
+
+ - QPrinter
+ * [QTBUG-4497] Removed redundant SetPen command in the postscript code when
+ reusing a QPrinter object.
+
+ - QPrintPreviewDialog now uses a QMainWindow with a proper QToolBar, instead
+ of a plain layout.
+
+ - QPushButton
+ * [255581] Fixed sizeHint recalculation bug.
+
+ - QRasterPaintEngine
+ * [QTBUG-4210] Fixed bug where bitmaps were painted black instead of in pen
+ colour.
+
+ - QRegion
+ * Minor optimizations.
+
+ - QSortFilterProxyModel
+ * [251296] Fixed bugs in which filtered items could not be filtered.
+
+ - QSplitter
+ * [206494] Added ability to style pressed slider with stylesheet.
+
+ - QSpinBox
+ * [259226] Fixed setting a stylesheet on a QSpinBox to change the arrow
+ position.
+ * [255051] Fixed sizeHint update bug.
+
+ - QStandardItemModel
+ * [255652] Fixed crash while using takeRow with a QSortFilterProxyModel.
+
+ - QStroker
+ * [QTBUG-5212] Fixed bug where thick strokes around small shapes could
+ cause holes in the stroke.
+
+ - QTabBar
+ * [196326] Fixed having a stylesheet on a QTabBar resulted in some tab
+ names being slightly clipped.
+ * [241383] Added ability to style the close tab button with style sheet
+
+ - QTableView
+ * [191545] Selections work more similarly to well-known spreadsheets.
+ * [234926] Fixed sorting after changing QTableView header.
+ * [244651] [245327] [250193] [QTBUG-5062] Spans get plenty of love with
+ performance improvements, support for row/column insertioa and removal,
+ and better keyboard navigation.
+
+ - QTableWidget
+ * [234641] Fixed takeItem to cause the view to be updated.
+
+ - QTextDocument
+ * [207189] Support setting font size using short hand syntax in the
+ CSS "font" property.
+ * [201228] Remove implicit margin on bullet lists when exporting to HTML.
+ * [240086] Fixed bug which caused floating objects which span several
+ pages to float into the second page of the document even when it's
+ the only existing object, causing the document to contain a blank
+ first page.
+ * [240325] Even with wrap mode set to Qt::TextWordWrap, the layout
+ would sometimes break outside word boundaries when floating objects
+ affected the width available to the text.
+ * [MR#681] Added support for roman numbering for lists
+ * [MR#1753] Fixed escaping HTML attributes QTextDocument::toHtml()
+
+
+ - QTextLayout
+ * [QTBUG-4468] Count tabs as multiple characters when applying a fixed
+ column width.
+ * [176401] Take into account the negative right bearing of the last
+ character in an item of text if the glyph extends beyond its ascent.
+
+ - QToolTip
+ * Fixed a bug where tooltips were not shown in popups (Windows only).
+
+ - QTreeView
+ * [234930] Be able to use :has-children and :has-sibillings in a stylesheet.
+ * [252616] Set QStyleOptionViewItemV4::OnlyOne flag when painting spanning
+ columns.
+ * [245654] Fixed expandAll when deleting and recreating a mode for the tree.
+ * [239271] Fixed missing update when adding a row when the first column is
+ hidden.
+ * [258225] Fixed scrollTo with center and bottom.
+
+ - QTreeWidget
+ * [253109] Shows the widget when calling setItemWidget.
+ * [MR#1393] Use stable sorting.
+
+ - QWidget
+ * Added inputMethodHints property.
+ * [201649] Added QWidget::previousInFocusChain.
+ * [254563] Fixed a crash when setting focus in a widget tree that
+ contains invisible widgets.
+ * [QTBUG-5012] Fixed uninitialized background when using QWidget::render
+ with Qt::WA_NoSystemBackground and window opacity set.
+
+QtDBus
+------
+
+ - QDBusConnection
+ * Made sending of invalid/incomplete messages consistently fail with error
+ (no more assertions).
+ * [249528/QTBUG-3833] Added an overload of connect() that allows one to
+ specify strings for matching arguments.
+
+ - QDBusServiceWatcher
+ * New class; supports efficiently watching for a service to be created,
+ deleted or to change owners.
+
+QtNetwork
+---------
+
+ - QAbstractSocket
+ * Only disconnect from host when all bytes have been written.
+ * New setSocketOption method.
+
+ - QHttp
+ * Do not buffer the complete POST data anymore when HTTPS is used.
+ * QHttp is now obsolete and replaced by QNetworkAccessManager.
+
+ - QLocalServer
+ * Fix timeout when waiting for a connection on Unix.
+
+ - QNativeSocketEngine
+ * Do not set the OS socket send and receive buffer size. The OS
+ should auto tune these values for us.
+
+ - QNetworkAcessManager
+ * [242916] Add possibility to send HTTP DELETE requests.
+ * Connection count per HTTP server increased to 6 on Desktop, 3 on Symbian.
+ * Optional HTTP pipelining support.
+ * General HTTP performance improvements.
+
+ - QNetworkReply
+ * [257322] Add possibility to ignore specific SSL errors.
+ * New isFinished() method.
+
+ - QSslCertificate
+ * [251830] Fix version() and serialNumber() methods.
+
+ - QSslSocket
+ * [257322] Add possibility to ignore specific SSL errors.
+ * Fix build with openssl 1.0.0 betas.
+ * Trigger a SSL transmission when reading from the socket. In certain
+ cases the connection stalled when a buffer limit was used.
+
+QtOpenGL
+--------
+
+ - QGLColormap
+ * setEntry() was inserting entries instead of replacing them.
+ * Clarified documentation for isEmpty().
+
+ - QGLContext
+ * Fix RGB565 mode in bindTexture().
+ * Map mipmaps work on OpenGL/ES 2.0 systems in bindTexture().
+ * Improve performance of QGLContext::currentContext().
+
+ - QGLFormat
+ * Increase unit test coverage and fix some long-standing issues.
+ * Improve performance of code that tests QGLFormat options.
+ * operator==() now tests for equality on all fields.
+
+ - QGLFramebufferObject
+ * Add support for the ARB_framebuffer_object, OES_framebuffer_object,
+ and OES_packed_depth_stencil extensions.
+ * Unbind the texture after it is initialized.
+ * Don't destroy the texture target on cleanup if one wasn't created.
+
+ - QGLFramebufferObjectFormat
+ * New class for controlling fbo options.
+
+ - Improvements to context sharing and object cleanup logic.
+
+ - QGLGradientCache
+ * [249919] Clean up the gradient cache in the right context.
+
+ - OpenGL (ES) 2.0 Paint Engine
+ * Re-written the OpenGL (ES) 2.0 Paint Engine's shader manager to use new
+ shader API and to allow custom code from E.g. Pixmap Filters to be
+ instered into the fragment "pipeline".
+ * Fixed conical gradients.
+
+ - Added a static function, QGL::setPreferredPaintEngine(), to allow users
+ to set the preferred GL paint engine.
+
+ - Cleaned up usage of OpenGL extensions. QtOpenGL now uses the OpenGL 2.0
+ names of methods rather than using the EXT postfix. However, when resolving
+ extensions, QtOpenGL will also try postfixing EXT if the OpenGL 2.0 name is
+ not found.
+
+ - Fix QGLWidget::showFullscreen() on EGL platforms.
+
+ - Added lots of OpenGL autotests.
+
+QtScript
+--------
+
+ - Many optimizations.
+ - Improved ECMA script compliance.
+ - New method, QScriptString::toArrayIndex(), for converting QScriptString
+ to a QtScript array index.
+
+QtSql
+-----
+
+ - [QTBUG-3162] Views for Sql table models should not reset state on failed
+ queries.
+ - [QTBUG-5251] Fix retrieval of SQL 'TIME' information for PostgreSQL.
+ - Better error checking in case of failed query.
+ - [QTBUG-5179] Fixed floating point number truncation in qsqlpsql plugin.
+ - [QTBUG-551] Fixed Oracle batchExec using strings as out params.
+ - Updated sqlite to 3.6.19 + readded our patches.
+ - [QTBUG-3736] ODBC: Retrieved in ascii, should be stored in ascii.
+ - Fixed issue with multiple lookups to same table/field in
+ QSqlRelationalTableModel.
+ - Updated documentation of setForwardOnly.
+ - [QT-754] TDS: Fixed improper formatting of date values.
+ - TDS: Fixed missing field/table name escaping.
+ - ODBC: Fixed setForwardOnly not being reset on when the query is reset.
+ - [QTBUG-4510] Add reconnection option to the mysql driver.
+ - [222678] Fixed QSqlTableModel: trying to delete the wrong row.
+ - Interbase: Fixed crash when calling numRows on unknown query type.
+ - DB2: Don't return an error when the table is just empty.
+ - [17327] Added OCI support for synonyms to tables created by another user.
+ - [176267] Fixed mysql driver not knowing the difference between tables and
+ views.
+ - Fixed determination of end of ODBC string on deficient drivers.
+ - Added ability to open sqlite databases readonly.
+ - Fixed race condition on reopening an ODBC connection.
+ - Fixed invalid use of statics in the defaultCasing code.
+ - Fixed proper quoting under odbc.
+ - [252450 & 246125] Fixed failed queries due to MySql driver auto-preparing.
+ - QSqlDatabase now has a database level precisionPolicy. Queries now default
+ to this.
+ - Add proper iODBC linking support.
+
+QtSvg
+-----
+
+ - QSvgHandler
+ * [245602] [204686] Fixed gradient and solid-color referencing.
+ * [202426] Made attribute inheritance work with 'use' tags.
+ * [250618] Fixed gradient on strokes.
+ * [254040] Added support for 'vector-effect'.
+
+ - QSvgPaintEngine
+ * [257052] Changed drawImage() to ignore aspect ratio.
+
+QtWebKit
+--------
+
+ - Many bug fixes.
+
+ - QWebElement
+ * New class; introduced to implement DOM like operations on a web page.
+
+ - QWebFrame
+ * New properties for an URL and a focus management.
+ * New signals delivering current loading status.
+
+ - QWebInspector
+ * New class for embedding the WebInspector as a QWidget
+
+ - QWebHistory
+ * Streaming operators for saving and restoring QWebHistory's state.
+
+ - QWebPage
+ * New property; preferredContentsSize for setting layout of the page in the
+ viewport.
+ * New slot; shouldInterruptJavaScript, called when JavaScript program is
+ running too long.
+
+ - QWebSecurityOrigin:
+ * New functions for defining local URL schemes.
+
+ - QWebSettings
+ * New options for text encoding and off-line web application cache (HTML5).
+
+ - QWebView
+ * Support for render hints.
+
+QtXml
+-----
+
+ - QDomDocument
+ * Set the codec to UTF-8 if codec not present or unknown.
+
+QtXmlPatterns
+-------------
+
+ - QXmlQuery
+ * [245219] Added QXmlQuery::setFocus(const QString &focus).
+
+Qt Plugins
+----------
+
+ - Tiff plugin
+ * [258526] Rotate the image if the tiff file contains an orientation tag.
+ * [254317] Add support for mono and indexed format
+
+Third party components
+----------------------
+
+ - Updated FreeType to version 2.3.9.
+
+ - Updated harfbuzz to the latest version from fd.org.
+
+ - Updated sqlite to version 3.6.19.
+
+ - Updated libpng to version 1.2.40
+
****************************************************************************
* Platform Specific Changes *
****************************************************************************
+ - Added support for the Symbian platform with integration for the S60
+ framework.
+
+ - Added community supported Qt ports for QNX and VxWorks. See platform
+ notes in the Qt documentation for details.
+
+ - Improved support for AIX using IBM's Visual Age C/C++ compiler
+ version 7 (xlC).
+
+ - Improved support for Solaris using Sun Studio 12 (CC 5.9).
+
+Qt for Unix (X11 and Mac OS X)
+------------------------------
+
+ - Added support for thread-safe FD_CLOEXEC file-descriptor creation
+ where supported by the operating system (currently only Linux).
+
+ - Ensured that system calls where EINTR is a possible result are
+ properly restarted.
+
+Qt for Linux/X11
+----------------
+
+ - KDE Integration: Improved the integration into KDE desktop (loading of KDE
+ palette, usage of KColorDialog and KFileDialog) using the GuiPlatformPlugin
+
+ - Fixed pasting the clipboard content to non-Qt application on X11 when the
+ requested format is image/ppm.
+
+ - On X11, Qt now supports the _NET_WM_SYNC protocol.
+
+ - On X11, Qt now supports the SAVE_TARGET protocol that allows to keep
+ clipboard contents if the application that owns the clipboards exits
+
+ - [QTBUG-4652] On X11, clipboard content can be properly retrieved even when
+ an application asks for the unsupported target. This fixes copying and
+ pasting data when using Synergy.
+
+ - [MR#797] Fixed a crash when using QX11EmbedContainer/Widget on x86_64.
+
+ - [MR#1111] Emit workAreaResized when _NET_WORKAREA is changed on X11.
+
+ - [QTBUG-3620] Fixed bug on X11 that caused bitmap fonts to become so small
+ it was unreadable when printed or presented in a print preview widget.
+
+ - Improved EGL integration on X11 (including better visual selection).
+
+ - Made Qt::WA_TranslucentBackground work in combination with native
+ child widgets.
+
+ - Support Qt::WA_TranslucentBackground on top-level QGLWidgets on X11, both
+ (EGL & glX). This allows OpenGL (& ES) rendering to semi-transparent widgets
+ if a compositing window manager is running.
+
+ - Support OpenGL texture_from_pixmap extension on X11 (EGL & glX) when
+ calling QPainter::drawPixmap() with the OpenGL paint engine, or calling
+ QGLContext::bindTexture() on an X11 QPixmap. If the
+ GLX_EXT_texture_from_pixmap or EGL_NOKIA_texture_from_pixmap extensions are
+ present, Qt will attempt to use glXBindTexImageEXT or eglBindTexImage to
+ bind the pixmap to a texture, rather than copying the pixel data.
+
+ - Add new experimental QX11GLPixmapData backend for QPixmap. This pixmap
+ backend uses regular X11 pixmaps to store the image data, however it uses
+ OpenGL to render into them.
+
+ - Tablet: Disable event compression of events of type QTabletEvent when the
+ current event is accepted by the receiver.
+
+ - [QTBUG-4242] Fixed a bug that allowed the user to close a window
+ event though the program is using the QEventLoop::ExcludeUserInputEvents
+ flag.
+
+ - [255559] Fixed generation of XdndLeave events to include the correct
+ source id.
+
+ - [258319] Avoid division by zero on some Xlib/Xserver implementations.
+
+ - Fixed the default QWidget size on X servers with Xinerama to give widgets
+ a default size that should fit on a single screen.
+
+ - Support _NET_WORKAREA on X servers with Xinerama (previously this property
+ was ignored).
+
+Qt for Windows
+--------------
+
- Significant external contribution from Milan Burda for planned removal
of (non-unicode) Windows 9x/ME support.
- QRegion is no longer a GDI object by default. This means it is no
- longer subjuect to gui-thread only nor does it potentially impact
+ longer subject to gui-thread only nor does it potentially impact
the 10.000 GDI object limit per process. By explicitly calling
.handle() a GDI object will be created and memory managed by
QRegion. The native handle is for reading out only. Any GDI calls
made on the HRGN handle will not affect the QRegion.
+ - The reading code of QLocalSocket on Windows has been rewritten to improve
+ reading performance.
+
+ - On Windows when a file cannot be accessed (stat()ed), we are now restoring
+ the error mode to the original value.
+
+ - [259221] QFileInfo::symLinkTarget() now supports NTFS symbolic links
+ thanks to Konstantin Ritt (merge request 1217).
+ - [251554] Fixed openUrl("mailto:") with Thunderbird on Windows.
+ - [254501] QDestopServices now supports cyrillic file names.
+ - Fixed an issue which prevents moving fixed size windows using titlebar.
+ - [258087] Fixed an issue on Vista which returns incorrect file paths when
+ using QFileDialog::getOpenFileNames()
+ - [253763] Fixed a focus issue when using out-of-process ActiveQt controls.
+ - [255912] Mouse move events will not be delivered to a blocked widget.
+ - [225588] Enabled IME reconversion support.
+
+ - Phonon on Windows
+ * Now much more reliable when reading a file through a QIODevice.
+ * If Video Mixing Renderer 9 is not available, falls back to software
+ rendering.
+ * Fixed a flicker issue when switching source with a transition time of 0.
+
+ - [QTBUG-4445] Fixed bug on Windows that caused problems when printing
+ text where several characters were represented by a single glyph, e.g.
+ a double 't' with the Calibri font.
+
+ - Added QSysInfo::WV_WINDOWS7 and QSysInfo::WV_6_1.
+
+ - Changed QPrintDialog under Windows to use PrintDlgEx, instead of the old
+ deprecated PrintDlg call.
+
+Qt for Mac OS X
+---------------
+
+ - General changes on Mac OS X:
+ * Mac OS X version support: Support for 10.3(Panther) has been dropped and
+ support for 10.6(Snow Leopard) has been added.
+ * The Cocoa port now supports static linking.
+ * The Cocoa port now supports the Qt3Support library (with the exception of
+ Q3FileDialog) to ease the transition from Carbon to Cocoa.
+ * The Cocoa binary packages are now Intel only (universal i386 and x86_64).
+ * Snow Leopard notes:
+ - Gcc 4.2 is used by default. Configure with -platform macx-g++40 to
+ select 4.0.
+ - Using the 10.4u SDK requires gcc 4.0.
+ - Configuring for the Cocoa port (-cocoa) produces 64-bit binaries by
+ default. Use the -arch flags to override.
+ - Building for ppc64 is no longer supported by the gcc tool chain.
+ - Building for ppc is still supported.
+ * Added support for GetURL events on Mac OS X.
+
+ - General bug fixes:
+ * [123740] Fixed an issue with dead keys on Mac (cocoa) on French keyboard
+ layout.
+ * [258438] Enabled Emacs style keyboard shortcuts.
+ * [QTBUG-4418] Fixed maximizing and restoring a window.
+
+ - Cocoa bug fixes:
+ * [252088] Drag Leave events will be delivered correctly on Cocoa.
+ * [257661] Cocoa now uses the correct line ending for clipboard plain text.
+ * [258173] Fixed an issue which caused "whatsthis" pointer to flicker.
+ * Fixed some warnings that might get printed when reparenting QGLWidget.
+ * Fixed stacking order of modal dialogs so that they never rearrange level,
+ or hide in the background.
+ * Fixed problem with plugins written with Qt that closes down the native
+ application when hiding a modal dialog.
+ * Fixed problem that native applications cannot quit when using plugins
+ written with Qt from a native application.
+ * Fixed problem that the menubar is not restored correctly when using
+ plugins written with Qt from a native application.
+ * The event dispatcher now integrates better with native applications that
+ spin the event loop themselves.
+ * Using Qt::AA_MacPluginApplication will now disable the use of native
+ menubars on Mac.
+ * Sliders and scroll views in Qt now use pixel scrolling for mouse devices
+ that support this.
+ * Wheel events can now contain a delta with a value as low as 1 for mouse
+ devices that use pixel scrolling.
+
+Qt for Embedded Linux
+---------------------
+
+ - Added QMAKE_LIBS_OPENGL_ES1, QMAKE_LIBS_OPENGL_ES1CL and
+ QMAKE_LIBS_OPENGL_ES2 qmake variables for specifying OpenGL ES
+ specific libraries.
+
+ - Compilation fixes for OpenGL/ES 1.0 and OpenGL/ES 1.1 Common Lite.
+
+ - Phonon on Windows
+ * Now much more reliable when reading a file through a QIODevice.
+ * If Video Mixing Renderer 9 is not available, falls back to software
+ rendering.
+ * Fixed a flicker issue when switching source with a transition time of 0
+
+ - [QTBUG-3620] Fixed bug on X11 that caused bitmap fonts to become so small
+ it was unreadable when printed or presented in a print preview widget.
+
+ - [QTBUG-4445] Fixed bug on Windows that caused problems when printing
+ text where several characters were represented by a single glyph, e.g.
+ a double 't' with the Calibri font.
+
+ - EGL and OpenGL/ES
+ * Protect the use of version-specific EGL symbols with #ifdef's.
+ * Make sure an EGL context is current when resolving GL extensions.
+ * Introduce "lazyDoneCurrent" for optimizing context switching in
+ paint engines.
+ * Separate EGLSurface from QEglContext so that the same context can
+ be used with multiple surfaces.
+ * Move common functions from system-specific files to qgl_egl.cpp.
+ * Fix a memory leak of EGLSurface's in QGLContext.
+ * Fix detection of pbuffers on OpenGL/ES systems.
+ * EGL_SAMPLES was being set to the wrong value for multisampled surfaces.
+
+ - PowerVR
+ * Make the code better at detecting MBX vs SGX header files.
+ * Fix 32-bit screen support - some code was still assuming 16-bit.
+ * Stop GL window surfaces double-flushing their contents.
+ * Remove surface holder, which never worked all that well.
+ * Implement screen rotations.
+
+ - Mouse and keyboard drivers
+ * Removed obsolete drivers (vr41xx, yopy, sl5000, bus mouse).
+ * Added a new LinuxInput driver for both mouse and keyboard.
+ * Added keymap support for QWS via standard Linux .kmap files.
+ (complete with dead-keys, compose-key and LED handling).
+
+ - Remove obsolete OpenGL/ES screen drivers: hybrid, ahigl.
+
+ - Send enter/leave events also to child widgets.
+
+ - Fix crash when instantiating multiple QApplications.
+
+ - Optimize software cursor by using native image format instead of 8-bit.
+
+ - [255828] Avoid window decoration flicker on show.
+
+ - [255495] Fix blend function crash on AVR32.
+
+ - Fix qconfig configurations.
+
+ - Add powerpc mkspec and remove "empty" ppc mkspec .
+
+DirectFB
+--------
+
+ - When running Qt/DirectFB the DirectFB window id of a top level QWidget can
+ be queried using property("_q_DirectFBWindowID")
+
+ - Allow setting the background color of the primary layer in DirectFB with
+ connect options. QWS_DISPLAY=directfb:bgcolor=red or
+ QWS_DISPLAY=directfb:bgcolor=\#aabbccdd
+
+ - Add support for rendering mouse cursor using a top level window when cursor
+ support is not working in IDirectFBDisplayLayer. Define
+ QT_DIRECTFB_WINDOW_AS_CURSOR to enable.
+
+ - Add experimental support for optimized locking/unlocking of surfaces. Enable
+ by defining QT_DIRECTFB_SUBSURFACE.
+
+ - Fix a bug to conceptually allow using QDirectFBScreen as a subscreen of a
+ proxy screen. Don't make QDirectFBScreen::instance() assume that
+ QScreen::instance() is a QDirectFBScreen.
+
+ - Optimize move/resize operations with DirectFB. With a properly configured
+ DirectFB these operations are handled for us and we don't need to force a
+ repaint of the window.
+
+ - Support top level window opacity in DirectFB
+
+ - Fix a bug when loading RGB32 images that would lead to rendering issues.
+
+ - Fix a bug when painting with invalid pens/brushes.
+
+ - Fix a bug that would show up when QWidget::scroll is called.
+
+ - Implement support for loading pixmaps using IDirectFBImageProvider.
+
+ - Disable color table support by default. This seems to work incorrectly on
+ most boards and loading these images will generally require an image
+ conversion anyway.
+
+ - Fix a crash when resizing windows.
+
+ - Compile with versions < 1.0. We still recommend using newer versions.
+
+ - Considerable code cleanup
+
+ - Various optimizations regarding painting, loading of images and creation of
+ surfaces.
+
+ - Allow forcibly falling back to raster engine for painting operations by
+ exporting QT_DIRECTFB_FORCE_RASTER=1
+
+ - Reenable support for RGB32 primary surface.
+
+
+Qt for Windows CE
+-----------------
+
+ - On Windows CE the link time code generation has been disabled by default to
+ be consistent with win32-msvc200x.
+ - The default button size has been reduced in the Windows mobile style.
+ - [QTBUG-3613] QWizard issues have been fixed on Windows mobile.
+ - [254673] Restoring minimized widgets fixed for Windows mobile and
+ Windows CE.
+ - [255242] Seeking within large files (bigger than 0x80000000 bytes) fixed
+ on Windows CE.
+ - [257352] When configuring Qt for Windows CE, configure points the user to
+ setcepaths, when its done.
+ - [259850] Added a makespec template for Windows CE 6.
+ - Fixed the hardcoded GL library names for Windows CE.
+
+****************************************************************************
+* Tools *
+****************************************************************************
+
+ - Designer
+ * [233683] Promoted Widgets are now stored correctly in scratchpad.
+ * [249823] Added search functionality to the resource browser.
+ * [254282] Enabled the use of promoted widgets in form templates.
+ * [254824] Made it possible to override the createAction()/createWidget()
+ functions of QUiLoader.
+ * [256332] Enabled deleting all pages of a QTabWidget or QStackedWidget.
+ * [259238] Fixed menubar/menu editing in right-to-left mode.
+ * [259918] Fixed setting of object names for container pages not to use
+ localized strings.
+ * [260658] Fixed saving of alpha values set in the palette editor.
+ * It is now possible to further specify the kind of custom widget string
+ properties using XML tags.
+
+ - uic
+ * [260784] Generated code for retranslateUi doesn't cause compiler warnings
+ anymore.
+
+ - uic3
+ * [128859] Fixed code generation of QLabel's wordWrap property.
+
+ - qdoc3
+ * Changed qdoc3 binary to be in bin/ instead of a platform specific location.
+
+ - Linguist
+ * Linguist GUI: Experimental support for editing multi-length strings.
+ * lupdate is now again the only tool which can parse program code.
+ * lupdate
+ - Actually guess the target language from the file name.
+ - Make -{source,target}-language actually override values from files.
+ - C++ parser
+ * Properly support "using namespace", etc.
+ * Remove the obsolete TRANSLATOR hack relating to "using namespace".
+ * Support attaching meta data to translatable message.
+ * Actually use the argument of Q_DECLARE_TR_FUNCTION.
+ * Optimization.
+ * Bug fixes and robustness improvements.
+ * lrelease
+ - Add -markuntranslated <prefix> option.
+ * Both lupdate & lrelease
+ - Accuracy improvements of the qmake .pro file parser.
+ - Support for ID-based translations. Somewhat experimental.
+ * lconvert
+ - Add --sort-contexts option.
+ - Add --locations option (complementing lupdate).
+ - Add --no-ui-lines option (complementing lupdate).
+
+
****************************************************************************
* Important Behavior Changes *
****************************************************************************
@@ -49,10 +1054,20 @@ information about a particular change.
this is that Nokia focuses on OpenGL for desktop hardware accelerated
rendering.
- - When mixing OpenGL and QPainter calls you need to first call syncState()
- on the paint engine, for example "painter->paintEngine()->syncState()".
- This is to ensure that the engine flushes any pending drawing and sets up
- the GL modelview/projection matrices properly.
+ - The default engine used to draw onto OpenGL buffers has changed in
+ Qt 4.6. The QPaintEngine::OpenGL2 engine is now used as the default
+ engine. This *may* cause compatibility problems for applications
+ that use a mix of QPainter and native OpenGL calls to draw into a GL
+ buffer. Use the QGL::setPreferredPaintEngine() function to enforce
+ usage of the old GL paint engine.
+
+ - When mixing OpenGL and QPainter calls you need to surround your
+ custom OpenGL calls with QPainter::beginNativePainting() and
+ QPainter::endNativePainting().
+ This is to ensure that the paint engine flushes any pending drawing and sets
+ up the GL modelview/projection matrices properly before you can issue custom
+ OpenGL calls, and to let the paint engine synchronize to the painter state
+ before resuming regular QPainter based drawing.
- Graphics View has undergone heavy optimization work, and as a result of
this work, the following behavior changes were introduced.
@@ -79,30 +1094,83 @@ information about a particular change.
- QDesktopWidget on X11 no longer emits the resized(int) signal when screens
are added or removed. This was not done on other platforms. Use the
- screenCountChanged signal instead
-
+ screenCountChanged signal instead.
+
- QUrl's parser is more strict when for hostnames in URLs. QUrl now
enforces STD 3 rules:
-
+
* each individual hostname section (between dots) must be at most
63 ASCII characters in length;
-
+
* only letters, digits, and the hyphen character are allowed in the
ASCII range; letters outside the ASCII range follow the normal
IDN rules
-
+
That means QUrl no longer accepts some URLs that were invalid
before, but weren't interpreted as such.
-
+
- The Unix configure-time check for STL is stricter now in Qt
- 4.6.0. This means some legacy STL implementations may fail to pass
+ 4.6. This means some legacy STL implementations may fail to pass
the test and, therefore, Qt will automatically disable STL support.
-
+
This is a binary-compatible change: existing code will continue to
work without being recompiled. However, it affects the source code,
since some STL-compatibility API will not be enabled.
-
+
Platforms affected by this change:
* solaris-cc-* with the default (Cstd) C++ STL library
recommendation: use -library=stlport4
See Sun Studio's documentation for the effects of this option
+
+ - QVariant has now a new implicit constructor that takes a float. This
+ means that code that assigned a float to a variant would create a
+ variant with userType QMetaType::Float, instead of QVariant::Double.
+
+ - QDataStream will now read and write all floating point numbers with the
+ same precision, regardless of whether it's streamed into or out from a
+ float or double. This is to maintain compatibility across platforms with
+ a different default precision for qreal. The default is 64-bit precision
+ for all floating point numbers, and this can be changed using the new
+ function setFloatingPointPrecision(). Set Qt_4_5 as the version of the
+ QDataStream to get the behavior of previous versions.
+
+ - On Mac OS X, QDesktopServices::storageLocation(DataLocation) now includes
+ QCoreApplication::organizationName() and QCoreApplication::applicationName()
+ if those are set. This matches the behavior on the other platforms.
+
+ - The Animation Framework
+ * currentTime() now returns the complete current time including previous
+ loops.
+ * currentLoopTime() returns the time inside the current loop.
+ * stateChanged signal sends the new state as first parameter and old state
+ as the second.
+ * QAnimationGroup::clearAnimations() has been renamed to clear().
+ * QAnimationGroup::insertAnimationAt() has been renamed to
+ insertAnimation().
+ * QAnimationGroup::takeAnimationAt() has been renamed to takeAnimation().
+ * QSequentialAnimationGroup::insertPauseAt() has been renamed to
+ insertPause().
+ * [QT-941] Avoids timer ticks when there are only pause animations running.
+
+- Refactoring in OpenGL examples to improve portability and utilize the
+ Animation framework for animation. The hellogl and overpainting examples
+ now compile on OpenGL/ES 1.1. Also common code is factored.
+
+- Changed QWebFrame::setHtml() and setContent() to not affect the back/forward
+ and the session history.
+
+- qmake no longer adds Qt internal dependencies to the linker when Qt
+ is built in shared mode (not static). This means that applications
+ that made use of platform-specific API may need to adjust the LIBS
+ variable in their .pro files to match:
+
+ X11: LIBS += -lX11
+ Mac: LIBS += -framework AppKit -framework Carbon
+
+- QtScript: Behavior changes due to using JavaScriptCore in the back-end:
+ * QDateTime is no longer used for date parsing and string conversion of
+ Date objects; instead the (more compliant) date processing from
+ JavaScriptCore is used.
+ * RegExp objects are no longer thin wrappers around QRegExp; they are now
+ "proper" JavaScript RegExp objects.
+
diff --git a/dist/changes-4.6.1 b/dist/changes-4.6.1
new file mode 100644
index 000000000..689635826
--- /dev/null
+++ b/dist/changes-4.6.1
@@ -0,0 +1,159 @@
+Qt 4.6.1 is a bug-fix release. It maintains both forward and backward
+compatibility (source and binary) with Qt 4.6.0. For more details,
+refer to the online documentation included in this distribution. The
+documentation is also available online:
+
+ http://qt.nokia.com/doc/4.6
+
+The Qt version 4.6 series is binary compatible with the 4.5.x series.
+Applications compiled for 4.5 will continue to run with 4.6.
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Qt Bug Tracker, the (now obsolete) Task
+Tracker, or the Merge Request queue of the public source repository.
+
+Qt Bug Tracker: http://bugreports.qt.nokia.com
+Task Tracker: http://qt.nokia.com/developer/task-tracker
+Merge Request: http://qt.gitorious.org
+
+****************************************************************************
+* General *
+****************************************************************************
+
+New features
+------------
+
+ - SomeClass, SomeOtherClass
+ * New classes for foo, bar and baz
+
+Optimizations
+-------------
+
+ - Optimized foo in QSomeClass
+ * See list of Important Behavior Changes below
+
+
+****************************************************************************
+* Library *
+****************************************************************************
+
+QtCore
+------
+
+ - foo
+ * bar
+
+QtGui
+-----
+
+ - foo
+ * bar
+
+QtDBus
+------
+
+ - foo
+ * bar
+
+QtNetwork
+---------
+
+ - foo
+ * bar
+
+QtOpenGL
+--------
+
+ - foo
+ * bar
+
+QtScript
+--------
+
+ - foo
+ * bar
+
+QtSql
+-----
+
+ - foo
+ * bar
+
+QtXml
+-----
+
+ - foo
+ * bar
+
+Qt Plugins
+----------
+
+ - foo
+ * bar
+
+Third party components
+----------------------
+
+ - Updated foo to version 2.3.9.
+
+ - Updated bar to the latest version from baz.org.
+
+
+****************************************************************************
+* Platform Specific Changes *
+****************************************************************************
+
+Qt for Unix (X11 and Mac OS X)
+------------------------------
+
+ -
+
+Qt for Linux/X11
+----------------
+
+ -
+
+Qt for Windows
+--------------
+
+ -
+
+Qt for Mac OS X
+---------------
+
+ -
+
+Qt for Embedded Linux
+---------------------
+
+ -
+
+DirectFB
+--------
+
+ -
+
+Qt for Windows CE
+-----------------
+
+ -
+
+****************************************************************************
+* Tools *
+****************************************************************************
+
+ - Designer
+ * foo
+
+ - qdoc3
+ * bar
+
+ - Linguist
+ * baz
+
+****************************************************************************
+* Important Behavior Changes *
+****************************************************************************
+
+ -
+
diff --git a/dist/changes-4.7.0 b/dist/changes-4.7.0
new file mode 100644
index 000000000..92f52448a
--- /dev/null
+++ b/dist/changes-4.7.0
@@ -0,0 +1,122 @@
+Qt 4.7 introduces many new features and improvements as well as bugfixes
+over the 4.6.x series. For more details, refer to the online documentation
+included in this distribution. The documentation is also available online:
+
+ http://doc.trolltech.com/4.7
+
+The Qt version 4.7 series is binary compatible with the 4.6.x series.
+Applications compiled for 4.6 will continue to run with 4.7.
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Task Tracker:
+
+ http://www.qtsoftware.com/developer/task-tracker
+
+Each of these identifiers can be entered in the task tracker to obtain more
+information about a particular change.
+
+****************************************************************************
+* General *
+****************************************************************************
+
+General Improvements
+--------------------
+
+- Documentation and Examples
+
+Third party components
+----------------------
+
+
+****************************************************************************
+* Library *
+****************************************************************************
+
+
+****************************************************************************
+* Database Drivers *
+****************************************************************************
+
+
+****************************************************************************
+* Platform Specific Changes *
+****************************************************************************
+
+Qt for Linux/X11
+----------------
+
+
+Qt for Windows
+--------------
+
+
+Qt for Mac OS X
+---------------
+
+
+Qt for Embedded Linux
+---------------------
+
+
+Qt for Windows CE
+-----------------
+
+
+****************************************************************************
+* Compiler Specific Changes *
+****************************************************************************
+
+
+****************************************************************************
+* Tools *
+****************************************************************************
+
+- Build System
+
+- Assistant
+
+
+- Designer
+
+
+- Linguist
+ - Linguist GUI
+
+ - lupdate
+
+ - lrelease
+
+
+- rcc
+
+
+- moc
+
+
+- uic
+
+
+- uic3
+
+
+- qmake
+
+
+- configure
+
+
+- qtconfig
+
+
+- qt3to4
+
+
+****************************************************************************
+* Plugins *
+****************************************************************************
+
+
+****************************************************************************
+* Important Behavior Changes *
+****************************************************************************
+
diff --git a/doc/doc.pri b/doc/doc.pri
index 13d481fa3..d4fdcd841 100644
--- a/doc/doc.pri
+++ b/doc/doc.pri
@@ -2,7 +2,7 @@
# Qt documentation build
#####################################################################
-DOCS_GENERATION_DEFINES = -Dopensourceedition
+DOCS_GENERATION_DEFINES =
GENERATOR = $$QT_BUILD_TREE/bin/qhelpgenerator
win32:!win32-g++ {
@@ -14,16 +14,12 @@ win32:!win32-g++ {
}
$$unixstyle {
- QDOC = cd $$QT_SOURCE_TREE/tools/qdoc3/test && QT_BUILD_TREE=$$QT_BUILD_TREE QT_SOURCE_TREE=$$QT_SOURCE_TREE $$QT_BUILD_TREE/tools/qdoc3/qdoc3 $$DOCS_GENERATION_DEFINES
+ QDOC = cd $$QT_SOURCE_TREE/tools/qdoc3/test && QT_BUILD_TREE=$$QT_BUILD_TREE QT_SOURCE_TREE=$$QT_SOURCE_TREE $$QT_BUILD_TREE/bin/qdoc3 $$DOCS_GENERATION_DEFINES
} else {
- QDOC = cd $$QT_SOURCE_TREE/tools/qdoc3/test && set QT_BUILD_TREE=$$QT_BUILD_TREE&& set QT_SOURCE_TREE=$$QT_SOURCE_TREE&& $$QT_BUILD_TREE/tools/qdoc3/qdoc3.exe $$DOCS_GENERATION_DEFINES
+ QDOC = cd $$QT_SOURCE_TREE/tools/qdoc3/test && set QT_BUILD_TREE=$$QT_BUILD_TREE&& set QT_SOURCE_TREE=$$QT_SOURCE_TREE&& $$QT_BUILD_TREE/bin/qdoc3.exe $$DOCS_GENERATION_DEFINES
QDOC = $$replace(QDOC, "/", "\\")
}
-macx {
- ADP_DOCS_QDOCCONF_FILE = qt-build-docs-with-xcode.qdocconf
-} else {
- ADP_DOCS_QDOCCONF_FILE = qt-build-docs.qdocconf
-}
+ADP_DOCS_QDOCCONF_FILE = qt-build-docs.qdocconf
QT_DOCUMENTATION = ($$QDOC qt-api-only.qdocconf assistant.qdocconf designer.qdocconf \
linguist.qdocconf qmake.qdocconf) && \
(cd $$QT_BUILD_TREE && \
diff --git a/doc/src/accelerators.qdoc b/doc/src/accelerators.qdoc
deleted file mode 100644
index 4376730d8..000000000
--- a/doc/src/accelerators.qdoc
+++ /dev/null
@@ -1,137 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page accelerators.html
- \title Standard Accelerator Keys
- \ingroup gui-programming
-
- Applications invariably need to define accelerator keys for actions.
- Qt fully supports accelerators, for example with \l Q3Accel::shortcutKey().
-
- Here are Microsoft's recommendations for accelerator keys, with
- comments about the Open Group's recommendations where they exist
- and differ. For most commands, the Open Group either has no advice or
- agrees with Microsoft.
-
- The emboldened letter plus Alt is Microsoft's recommended choice, and
- we recommend supporting it. For an Apply button, for example, we
- recommend QAbstractButton::setText(\link QWidget::tr() tr \endlink("&Apply"));
-
- If you have conflicting commands (e.g. About and Apply buttons in the
- same dialog), you must decide for yourself.
-
- \list
- \i \bold{\underline{A}}bout
- \i Always on \bold{\underline{T}}op
- \i \bold{\underline{A}}pply
- \i \bold{\underline{B}}ack
- \i \bold{\underline{B}}rowse
- \i \bold{\underline{C}}lose (CDE: Alt+F4; Alt+F4 is "close window" in Windows)
- \i \bold{\underline{C}}opy (CDE: Ctrl+C, Ctrl+Insert)
- \i \bold{\underline{C}}opy Here
- \i Create \bold{\underline{S}}hortcut
- \i Create \bold{\underline{S}}hortcut Here
- \i Cu\bold{\underline{t}}
- \i \bold{\underline{D}}elete
- \i \bold{\underline{E}}dit
- \i \bold{\underline{E}}xit (CDE: E\bold{\underline{x}}it)
- \i \bold{\underline{E}}xplore
- \i \bold{\underline{F}}ile
- \i \bold{\underline{F}}ind
- \i \bold{\underline{H}}elp
- \i Help \bold{\underline{T}}opics
- \i \bold{\underline{H}}ide
- \i \bold{\underline{I}}nsert
- \i Insert \bold{\underline{O}}bject
- \i \bold{\underline{L}}ink Here
- \i Ma\bold{\underline{x}}imize
- \i Mi\bold{\underline{n}}imize
- \i \bold{\underline{M}}ove
- \i \bold{\underline{M}}ove Here
- \i \bold{\underline{N}}ew
- \i \bold{\underline{N}}ext
- \i \bold{\underline{N}}o
- \i \bold{\underline{O}}pen
- \i Open \bold{\underline{W}}ith
- \i Page Set\bold{\underline{u}}p
- \i \bold{\underline{P}}aste
- \i Paste \bold{\underline{L}}ink
- \i Paste \bold{\underline{S}}hortcut
- \i Paste \bold{\underline{S}}pecial
- \i \bold{\underline{P}}ause
- \i \bold{\underline{P}}lay
- \i \bold{\underline{P}}rint
- \i \bold{\underline{P}}rint Here
- \i P\bold{\underline{r}}operties
- \i \bold{\underline{Q}}uick View
- \i \bold{\underline{R}}edo (CDE: Ctrl+Y, Shift+Alt+Backspace)
- \i \bold{\underline{R}}epeat
- \i \bold{\underline{R}}estore
- \i \bold{\underline{R}}esume
- \i \bold{\underline{R}}etry
- \i \bold{\underline{R}}un
- \i \bold{\underline{S}}ave
- \i Save \bold{\underline{A}}s
- \i Select \bold{\underline{A}}ll
- \i Se\bold{\underline{n}}d To
- \i \bold{\underline{S}}how
- \i \bold{\underline{S}}ize
- \i S\bold{\underline{p}}lit
- \i \bold{\underline{S}}top
- \i \bold{\underline{U}}ndo (CDE: Ctrl+Z or Alt+Backspace)
- \i \bold{\underline{V}}iew
- \i \bold{\underline{W}}hat's This?
- \i \bold{\underline{W}}indow
- \i \bold{\underline{Y}}es
- \endlist
-
- There are also a lot of other keys and actions (that use other
- modifier keys than Alt). See the Microsoft and The Open Group
- documentation for details.
-
- The
- \l{http://www.amazon.com/exec/obidos/ASIN/0735605661/trolltech/t}{Microsoft book}
- has ISBN 0735605661. The corresponding Open Group
- book is very hard to find, rather expensive and we cannot recommend
- it. However, if you really want it, ogpubs@opengroup.org might be able
- to help. Ask them for ISBN 1859121047.
-*/
diff --git a/doc/src/accessible.qdoc b/doc/src/accessible.qdoc
deleted file mode 100644
index 8daff5ac1..000000000
--- a/doc/src/accessible.qdoc
+++ /dev/null
@@ -1,600 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page accessible.html
- \title Accessibility
- \ingroup accessibility
-
- \tableofcontents
-
- \section1 Introduction
-
- Accessibility in computer software is making applications usable
- for people with disabilities. This could be achieved by providing
- keyboard shortcuts, a high-contrast user interface that uses
- specially selected colors and fonts, or support for assistive tools
- such as screen readers and braille displays.
-
- An application does not usually communicate directly with
- assistive tools but through an assistive technology, which is a
- bridge for exchange of information between the applications and
- the tools. Information about user interface elements, such
- as buttons and scroll bars, is exposed to the assistive technologies.
- Qt supports Microsoft Active Accessibility (MSAA) on Windows and
- Mac OS X Accessibility on Mac OS X.
- On Unix/X11, support is preliminary. The individual technologies
- are abstracted from Qt, and there is only a single interface to
- consider. We will use MSAA throughout this document when we need
- to address technology related issues.
-
- In this overview document, we will examine the overall Qt
- accessibility architecture, and how to implement accessibility for
- custom widgets and elements.
-
- \section1 Architecture
-
- Providing accessibility is a collaboration between accessibility
- compliant applications, the assistive technology, and the
- assistive tools.
-
- \image accessibilityarchitecture.png
-
- Accessibility compliant applications are called AT-Servers while
- assistive tools are called AT-Clients. A Qt application will
- typically be an AT-Server, but specialized programs might also
- function like AT-Clients. We will refer to clients and servers
- when talking about AT-Clients and AT-Servers in the rest of this
- document.
-
- We will from now on focus on the Qt accessibility interface and
- how it is implemented to create Qt applications that support
- accessibility.
-
- \section2 Accessibility in Qt
-
- When we communicate with the assistive technologies, we need to
- describe Qt's user interface in a way that they can understand. Qt
- applications use QAccessibleInterface to expose information about the
- individual UI elements. Currently, Qt provides support for its widgets
- and widget parts, e.g., slider handles, but the interface could
- also be implemented for any QObject if necessary. QAccessible
- contains enums that describe the UI. The description is mainly
- based on MSAA and is independent of Qt. We will examine the enums
- in the course of this document.
-
- The structure of the UI is represented as a tree of
- QAccessibleInterface subclasses. You can think of this as a
- representation of a UI like the QObject tree built by Qt. Objects
- can be widgets or widget parts (such as scroll bar handles). We
- examine the tree in detail in the next section.
-
- Servers notify clients through \l{QAccessible::}{updateAccessibility()}
- about changes in objects by sending events, and the clients
- register to receive the events. The available events are defined
- by the QAccessible::Event enum. The clients may then query for
- the object that generated the event through
- QAccessible::queryAccessibleInterface().
-
- Three of the enums in QAccessible help clients query and alter
- accessible objects:
-
- \list
- \o \l{QAccessible::}{Role}: Describes the role the object
- fills in the user interface, e.g., if it is a main
- window, a text caret, or a cell in an item view.
- \o \l{QAccessible::}{Action}: The actions that the
- clients can perform on the objects, e.g., pushing a
- button.
- \o \l{QAccessible::}{Relation}: Describes the relationship
- between objects in the object tree.
- This is used for navigation.
- \endlist
-
- The clients also have some possibilities to get the content of
- objects, e.g., a button's text; the object provides strings
- defined by the QAccessible::Text enum, that give information
- about content.
-
- The objects can be in a number of different states as defined by
- the \l{QAccessible::}{State} enum. Examples of states are whether
- the object is disabled, if it has focus, or if it provides a pop-up
- menu.
-
- \section2 The Accessible Object Tree
-
- As mentioned, a tree structure is built from the accessible
- objects of an application. By navigating through the tree, the
- clients can access all elements in the UI. Object relations give
- clients information about the UI. For instance, a slider handle is
- a child of the slider to which it belongs. QAccessible::Relation
- describes the various relationships the clients can ask objects
- for.
-
- Note that there are no direct mapping between the Qt QObject tree
- and the accessible object tree. For instance, scroll bar handles
- are accessible objects but are not widgets or objects in Qt.
-
- AT-Clients have access to the accessibility object tree through
- the root object in the tree, which is the QApplication. They can
- query other objects through QAccessible::navigate(), which fetches
- objects based on \l{QAccessible::}{Relation}s. The children of any
- node is 1-based numbered. The child numbered 0 is the object
- itself. The children of all interfaces are numbered this way,
- i.e., it is not a fixed numbering from the root node in the entire
- tree.
-
- Qt provides accessible interfaces for its widgets. Interfaces for
- any QObject subclass can be requested through
- QAccessible::queryInterface(). A default implementation is
- provided if a more specialized interface is not defined. An
- AT-Client cannot acquire an interface for accessible objects that
- do not have an equivalent QObject, e.g., scroll bar handles, but
- they appear as normal objects through interfaces of parent
- accessible objects, e.g., you can query their relationships with
- QAccessible::relationTo().
-
- To illustrate, we present an image of an accessible object tree.
- Beneath the tree is a table with examples of object relationships.
-
- \image accessibleobjecttree.png
-
- The labels in top-down order are: the QAccessibleInterface class
- name, the widget for which an interface is provided, and the
- \l{QAccessible::}{Role} of the object. The Position, PageLeft and
- PageRight correspond to the slider handle, the slider groove left
- and the slider groove right, respectively. These accessible objects
- do not have an equivalent QObject.
-
- \table 40%
- \header
- \o Source Object
- \o Target Object
- \o Relation
- \row
- \o Slider
- \o Indicator
- \o Controller
- \row
- \o Indicator
- \o Slider
- \o Controlled
- \row
- \o Slider
- \o Application
- \o Ancestor
- \row
- \o Application
- \o Slider
- \o Child
- \row
- \o PushButton
- \o Indicator
- \o Sibling
- \endtable
-
- \section2 The Static QAccessible Functions
-
- The accessibility is managed by QAccessible's static functions,
- which we will examine shortly. They produce QAccessible
- interfaces, build the object tree, and initiate the connection
- with MSAA or the other platform specific technologies. If you are
- only interested in learning how to make your application
- accessible, you can safely skip over this section to
- \l{Implementing Accessibility}.
-
- The communication between clients and the server is initiated when
- \l{QAccessible::}{setRootObject()} is called. This is done when
- the QApplication instance is instantiated and you should not have
- to do this yourself.
-
- When a QObject calls \l{QAccessible::}{updateAccessibility()},
- clients that are listening to events are notified of the
- change. The function is used to post events to the assistive
- technology, and accessible \l{QAccessible::Event}{events} are
- posted by \l{QAccessible::}{updateAccessibility()}.
-
- \l{QAccessible::}{queryAccessibleInterface()} returns accessible
- interfaces for \l{QObject}s. All widgets in Qt provide interfaces;
- if you need interfaces to control the behavior of other \l{QObject}
- subclasses, you must implement the interfaces yourself, although
- the QAccessibleObject convenience class implements parts of the
- functionality for you.
-
- The factory that produces accessibility interfaces for QObjects is
- a function of type QAccessible::InterfaceFactory. It is possible
- to have several factories installed. The last factory installed
- will be the first to be asked for interfaces.
- \l{QAccessible::}{queryAccessibleInterface()} uses the factories
- to create interfaces for \l{QObject}s. Normally, you need not be
- concerned about factories because you can implement plugins that
- produce interfaces. We will give examples of both approaches
- later.
-
- \section1 Implementing Accessibility
-
- To provide accessibility support for a widget or other user
- interface element, you need to implement the QAccessibleInterface
- and distribute it in a QAccessiblePlugin. It is also possible to
- compile the interface into the application and provide a
- QAccessible::InterfaceFactory for it. The factory can be used if
- you link statically or do not want the added complexity of
- plugins. This can be an advantage if you, for instance, are
- delivering a 3-rd party library.
-
- All widgets and other user interface elements should have
- interfaces and plugins. If you want your application to support
- accessibility, you will need to consider the following:
-
- \list
- \o Qt already implements accessibility for its own widgets.
- We therefore recommend that you use Qt widgets where possible.
- \o A QAccessibleInterface needs to be implemented for each element
- that you want to make available to accessibility clients.
- \o You need to send accessibility events from the custom
- user interface elements that you implement.
- \endlist
-
- In general, it is recommended that you are somewhat familiar with
- MSAA, which Qt originally was built for. You should also study
- the enum values of QAccessible, which describe the roles, actions,
- relationships, and events that you need to consider.
-
- Note that you can examine how Qt's widgets implement their
- accessibility. One major problem with the MSAA standard is that
- interfaces are often implemented in an inconsistent way. This
- makes life difficult for clients and often leads to guesswork on
- object functionality.
-
- It is possible to implement interfaces by inheriting
- QAccessibleInterface and implementing its pure virtual functions.
- In practice, however, it is usually preferable to inherit
- QAccessibleObject or QAccessibleWidget, which implement part of
- the functionality for you. In the next section, we will see an
- example of implementing accessibility for a widget by inheriting
- the QAccessibleWidget class.
-
- \section2 The QAccessibleObject and QAccessibleWidget Convenience Classes
-
- When implementing an accessibility interface for widgets, one would
- as a rule inherit QAccessibleWidget, which is a convenience class
- for widgets. Another available convenience class, which is
- inherited by QAccessibleWidget, is the QAccessibleObject, which
- implements part of the interface for QObjects.
-
- The QAccessibleWidget provides the following functionality:
-
- \list
- \o It handles the navigation of the tree and
- hit testing of the objects.
- \o It handles events, roles, and actions that are common for all
- \l{QWidget}s.
- \o It handles action and methods that can be performed on
- all widgets.
- \o It calculates bounding rectangles with
- \l{QAccessibleInterface::}{rect()}.
- \o It gives \l{QAccessibleInterface::}{text()} strings that are
- appropriate for a generic widget.
- \o It sets the \l{QAccessible::State}{states} that
- are common for all widgets.
- \endlist
-
- \section2 QAccessibleWidget Example
-
- Instead of creating a custom widget and implementing an interface
- for it, we will show how accessibility can be implemented for one of
- Qt's standard widgets: QSlider. Making this widget accessible
- demonstrates many of the issues that need to be faced when making
- a custom widget accessible.
-
- The slider is a complex control that functions as a
- \l{QAccessible::}{Controller} for its accessible children.
- This relationship must be known by the interface (for
- \l{QAccessibleInterface::}{relationTo()} and
- \l{QAccessibleInterface::}{navigate()}). This can be done
- using a controlling signal, which is a mechanism provided by
- QAccessibleWidget. We do this in the constructor:
-
- \snippet doc/src/snippets/accessibilityslidersnippet.cpp 0
-
- The choice of signal shown is not important; the same principles
- apply to all signals that are declared in this way. Note that we
- use QLatin1String to ensure that the signal name is correctly
- specified.
-
- When an accessible object is changed in a way that users need
- to know about, it notifies clients of the change by sending them
- an event via the accessible interface. This is how QSlider calls
- \l{QAccessibleInterface::}{updateAccessibility()} to indicate that
- its value has changed:
-
- \snippet doc/src/snippets/qabstractsliderisnippet.cpp 0
- \dots
- \snippet doc/src/snippets/qabstractsliderisnippet.cpp 1
- \dots
- \snippet doc/src/snippets/qabstractsliderisnippet.cpp 2
-
- Note that the call is made after the value of the slider has
- changed because clients may query the new value immediately after
- receiving the event.
-
- The interface must be able to calculate bounding rectangles of
- itself and any children that do not provide an interface of their
- own. The \c QAccessibleSlider has three such children identified by
- the private enum, \c SliderElements, which has the following values:
- \c PageLeft (the rectangle on the left hand side of the slider
- handle), \c PageRight (the rectangle on the right hand side of the
- handle), and \c Position (the slider handle). Here is the
- implementation of \l{QAccessibleInterface::}{rect()}:
-
- \snippet doc/src/snippets/accessibilityslidersnippet.cpp 1
- \dots
- \snippet doc/src/snippets/accessibilityslidersnippet.cpp 2
- \dots
-
- The first part of the function, which we have omitted, uses the
- current \l{QStyle}{style} to calculate the slider handle's
- bounding rectangle; it is stored in \c srect. Notice that child 0,
- covered in the default case in the above code, is the slider itself,
- so we can simply return the QSlider bounding rectangle obtained
- from the superclass, which is effectively the value obtained from
- QAccessibleWidget::rect().
-
- \snippet doc/src/snippets/accessibilityslidersnippet.cpp 3
-
- Before the rectangle is returned it must be mapped to screen
- coordinates.
-
- The QAccessibleSlider must reimplement
- QAccessibleInterface::childCount() since it manages children
- without interfaces.
-
- The \l{QAccessibleInterface::}{text()} function returns the
- QAccessible::Text strings for the slider:
-
- \snippet doc/src/snippets/accessibilityslidersnippet.cpp 4
-
- The \c slider() function returns a pointer to the interface's
- QSlider. Some values are left for the superclass's implementation.
- Not all values are appropriate for all accessible objects, as you
- can see for QAccessible::Value case. You should just return an
- empty string for those values where no relevant text can be
- provided.
-
- The implementation of the \l{QAccessibleInterface::}{role()}
- function is straightforward:
-
- \snippet doc/src/snippets/accessibilityslidersnippet.cpp 5
-
- The role function should be reimplemented by all objects and
- describes the role of themselves and the children that do not
- provide accessible interfaces of their own.
-
- Next, the accessible interface needs to return the
- \l{QAccessible::State}{states} that the slider can be in. We look
- at parts of the \c state() implementation to show how just a few
- of the states are handled:
-
- \snippet doc/src/snippets/accessibilityslidersnippet.cpp 6
- \dots
- \snippet doc/src/snippets/accessibilityslidersnippet.cpp 7
-
- The superclass implementation of
- \l{QAccessibleInterface::}{state()}, uses the
- QAccessibleInterface::state() implementation. We simply need to
- disable the buttons if the slider is at its minimum or maximum.
-
- We have now exposed the information we have about the slider to
- the clients. For the clients to be able to alter the slider - for
- example, to change its value - we must provide information about
- the actions that can be performed and perform them upon request.
- We discuss this in the next section.
-
- \section2 Handling Action Requests from Clients
-
- QAccessible provides a number of \l{QAccessible::}{Action}s
- that can be performed on request from clients. If an
- accessible object supports actions, it should reimplement the
- following functions from QAccessibleInterface:
-
- \list
- \o \l{QAccessibleInterface::}{actionText()} returns
- strings that describe each action. The descriptions
- to be made available are one for each
- \l{QAccessible::}{Text} enum value.
- \o \l{QAccessibleInterface::}{doAction()} executes requests
- from clients to perform actions.
- \endlist
-
- Note that a client can request any action from an object. If
- the object does not support the action, it returns false from
- \l{QAccessibleInterface::}{doAction()}.
-
- None of the standard actions take any parameters. It is possible
- to provide user-defined actions that can take parameters.
- The interface must then also reimplement
- \l{QAccessibleInterface::}{userActionCount()}. Since this is not
- defined in the MSAA specification, it is probably only useful to
- use this if you know which specific AT-Clients will use the
- application.
-
- QAccessibleInterface gives another technique for clients to handle
- accessible objects. It works basically the same way, but uses the
- concept of methods in place of actions. The available methods are
- defined by the QAccessible::Method enum. The following functions
- need to be reimplemented from QAccessibleInterface if the
- accessible object is to support methods:
-
- \list
- \o \l{QAccessibleInterface::}{supportedMethods()} returns
- a QSet of \l{QAccessible::}{Method} values that are
- supported by the object.
- \o \l{QAccessibleInterface::}{invokeMethod()} executes
- methods requested by clients.
- \endlist
-
- The action mechanism will probably be substituted by providing
- methods in place of the standard actions.
-
- To see examples on how to implement actions and methods, you
- could examine the QAccessibleObject and QAccessibleWidget
- implementations. You might also want to take a look at the
- MSAA documentation.
-
- \section2 Implementing Accessible Plugins
-
- In this section we will explain the procedure of implementing
- accessible plugins for your interfaces. A plugin is a class stored
- in a shared library that can be loaded at run-time. It is
- convenient to distribute interfaces as plugins since they will only
- be loaded when required.
-
- Creating an accessible plugin is achieved by inheriting
- QAccessiblePlugin, reimplementing \l{QAccessiblePlugin::}{keys()}
- and \l{QAccessiblePlugin::}{create()} from that class, and adding
- one or two macros. The \c .pro file must be altered to use the
- plugin template, and the library containing the plugin must be
- placed on a path where Qt searches for accessible plugins.
-
- We will go through the implementation of \c SliderPlugin, which is an
- accessible plugin that produces interfaces for the
- QAccessibleSlider we implemented in the \l{QAccessibleWidget Example}.
- We start with the \c key() function:
-
- \snippet doc/src/snippets/accessibilitypluginsnippet.cpp 0
-
- We simply need to return the class name of the single interface
- our plugin can create an accessible interface for. A plugin
- can support any number of classes; just add more class names
- to the string list. We move on to the \c create() function:
-
- \snippet doc/src/snippets/accessibilitypluginsnippet.cpp 1
-
- We check whether the interface requested is for the QSlider; if it
- is, we create and return an interface for it. Note that \c object
- will always be an instance of \c classname. You must return 0 if
- you do not support the class.
- \l{QAccessible::}{updateAccessibility()} checks with the
- available accessibility plugins until it finds one that does not
- return 0.
-
- Finally, you need to include macros in the cpp file:
-
- \snippet doc/src/snippets/accessibilitypluginsnippet.cpp 2
-
- The Q_EXPORT_PLUGIN2 macro exports the plugin in the \c
- SliderPlugin class into the \c acc_sliderplugin library. The first
- argument is the name of the plugin library file, excluding the
- file suffix, and the second is the class name. For more information
- on plugins, consult the plugins \l{How to Create Qt
- Plugins}{overview document}.
-
- You can omit the first macro unless you want the plugin
- to be statically linked with the application.
-
- \section2 Implementing Interface Factories
-
- If you do not want to provide plugins for your accessibility
- interfaces, you can use an interface factory
- (QAccessible::InterfaceFactory), which is the recommended way to
- provide accessible interfaces in a statically-linked application.
-
- A factory is a function pointer for a function that takes the same
- parameters as \l{QAccessiblePlugin}'s
- \l{QAccessiblePlugin::}{create()} - a QString and a QObject. It
- also works the same way. You install the factory with the
- \l{QAccessible::}{installFactory()} function. We give an example
- of how to create a factory for the \c SliderPlugin class:
-
- \snippet doc/src/snippets/accessibilityfactorysnippet.cpp 0
- \dots
- \snippet doc/src/snippets/accessibilityfactorysnippet.cpp 1
-
- \omit
-
- \section1 Implementing Bridges for Other Assistive Technologies
-
- An accessibility bridge provides the means for an assistive
- technology to talk to Qt. On Windows and Mac, the built-in bridges
- will be used. On UNIX, however, there are no built-in standard
- assistive technology, and it might therefore be necessary to
- implement an accessible bridge.
-
- A bridge is implemented by inheriting QAccessibleBridge for the
- technology to support. The class defines the interface that Qt
- needs an assistive technology to support:
-
- \list
- \o A root object. This is the root in the accessible
- object tree and is of type QAccessibleInterface.
- \o Receive events from from accessible objects.
- \endlist
-
- The root object is set with the
- \l{QAccessibleBridge::}{setRootObject()}. In the case of Qt, this
- will always be an interface for the QApplication instance of the
- application.
-
- Event notification is sent through
- \l{QAccessibleBridge::}{notifyAccessibilityUpdate()}. This
- function is called by \l{QAccessible::}{updateAccessibility()}. Even
- though the bridge needs only to implement these two functions, it
- must be able to communicate the entire QAccessibleInterface to the
- underlying technology. How this is achieved is, naturally, up to
- the individual bridge and none of Qt's concern.
-
- As with accessible interfaces, you distribute accessible bridges
- in plugins. Accessible bridge plugins are subclasses of the
- QAccessibleBridgePlugin class; the class defines the functions
- \l{QAccessibleBridgePlugin::}{create()} and
- \l{QAccessibleBridgePlugin::}{keys()}, which must me
- reimplemented. If Qt finds a built-in bridge to use, it will
- ignore any available plugins.
-
- \endomit
-
- \section1 Further Reading
-
- The \l{Cross-Platform Accessibility Support in Qt 4} document contains a more
- general overview of Qt's accessibility features and discusses how it is
- used on each platform.
- issues
-*/
diff --git a/doc/src/activeqt-dumpcpp.qdoc b/doc/src/activeqt-dumpcpp.qdoc
deleted file mode 100644
index 63e35eef3..000000000
--- a/doc/src/activeqt-dumpcpp.qdoc
+++ /dev/null
@@ -1,143 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page activeqt-dumpcpp.html
- \title The dumpcpp Tool (ActiveQt)
-
- \ingroup activeqt-tools
-
- \keyword dumpcpp
-
- The \c dumpcpp tool generates a C++ namespace for a type library.
-
- To generate a C++ namespace for a type library, call \c dumpcpp with the following
- command line parameters:
-
- \table
- \header
- \i Option
- \i Result
- \row
- \i input
- \i Generate documentation for \e input. \e input can specify a type library file or a type
- library ID, or a CLSID or ProgID for an object
- \row
- \i -o file
- \i Writes the class declaration to \e {file}.h and meta object infomation to \e {file}.cpp
- \row
- \i -n namespace
- \i Generate a C++ namespace \e namespace
- \row
- \i -nometaobject
- \i Do not generate a .cpp file with the meta object information.
- The meta object is then generated in runtime.
- \row
- \i -getfile libid
- \i Print the filename for the typelibrary \e libid to stdout
- \row
- \i -compat
- \i Generate namespace with dynamicCall-compatible API
- \row
- \i -v
- \i Print version information
- \row
- \i -h
- \i Print help
- \endtable
-
- \c dumpcpp can be integrated into the \c qmake build system. In your .pro file, list the type
- libraries you want to use in the TYPELIBS variable:
-
- \snippet examples/activeqt/qutlook/qutlook.pro 0
-
- The generated namespace will declare all enumerations, as well as one QAxObject subclass
- for each \c coclass and \c interface declared in the type library. coclasses marked with
- the \c control attribute will be wrapped by a QAxWidget subclass.
-
- Those classes that wrap creatable coclasses (i.e. coclasses that are not marked
- as \c noncreatable) have a default constructor; this is typically a single class
- of type \c Application.
-
- \snippet doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc 0
-
- All other classes can only be created by passing an IDispatch interface pointer
- to the constructor; those classes should however not be created explicitly.
- Instead, use the appropriate API of already created objects.
-
- \snippet doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc 1
-
- All coclass wrappers also have one constructors taking an interface wrapper class
- for each interface implemented.
-
- \snippet doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc 2
-
- You have to create coclasses to be able to connect to signals of the subobject.
- Note that the constructor deletes the interface object, so the following will
- cause a segmentation fault:
-
- \snippet doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc 3
-
- If the return type is of a coclass or interface type declared in another type
- library you have to include the namespace header for that other type library
- before including the header for the namespace you want to use (both header have
- to be generated with this tool).
-
- By default, methods and property returning subobjects will use the type as in
- the type library. The caller of the function is responsible for deleting or
- reparenting the object returned. If the \c -compat switch is set, properties
- and method returning a COM object have the return type \c IDispatch*, and
- the namespace will not declare wrapper classes for interfaces.
-
- In this case, create the correct wrapper class explicitly:
-
- \snippet doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc 4
-
- You can of course use the IDispatch* returned directly, in which case you have to
- call \c Release() when finished with the interface.
-
- All classes in the namespace are tagged with a macro that allows you to export
- or import them from a DLL. To do that, declare the macro to expand to
- \c __declspec(dllimport/export) before including the header file.
-
- To build the tool you must first build the QAxContainer library.
- Then run your make tool in \c tools/dumpcpp.
-*/
diff --git a/doc/src/activeqt-dumpdoc.qdoc b/doc/src/activeqt-dumpdoc.qdoc
deleted file mode 100644
index 55ab2d784..000000000
--- a/doc/src/activeqt-dumpdoc.qdoc
+++ /dev/null
@@ -1,83 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page activeqt-dumpdoc.html
- \title The dumpdoc Tool (ActiveQt)
-
- \ingroup activeqt-tools
-
- \keyword dumpdoc
-
- The \c dumpdoc tool generates Qt-style documentation for any
- COM object and writes it into the file specified.
-
- Call \c dumpdoc with the following command line parameters:
-
- \table
- \header
- \i Option
- \i Result
- \row
- \i -o file
- \i Writes output to \e file
- \row
- \i object
- \i Generate documentation for \e object
- \row
- \i -v
- \i Print version information
- \row
- \i -h
- \i Print help
- \endtable
-
- \e object must be an object installed on the local machine (ie.
- remote objects are not supported), and can include subobjects
- accessible through properties, ie.
- \c Outlook.Application/Session/CurrentUser
-
- The generated file will be an HTML file using Qt documentation
- style.
-
- To build the tool you must first build the QAxContainer library.
- Then run your make tool in \c tools/dumpdoc.
-*/
diff --git a/doc/src/activeqt-idc.qdoc b/doc/src/activeqt-idc.qdoc
deleted file mode 100644
index 974eddcd5..000000000
--- a/doc/src/activeqt-idc.qdoc
+++ /dev/null
@@ -1,82 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page activeqt-idc.html
- \title IDC - The Interface Description Compiler (ActiveQt)
-
- \ingroup activeqt-tools
-
- \keyword idc
-
- The IDC tool is part of the ActiveQt build system and makes
- it possible to turn any Qt binary into a full COM object server
- with only a few lines of code.
-
- IDC understands the following command line parameters:
-
- \table
- \header
- \i Option
- \i Result
- \row
- \i dll -idl idl -version x.y
- \i Writes the IDL of the server \e dll to the file \e idl. The
- type library wll have version x.y.
- \row
- \i dll -tlb tlb
- \i Replaces the type library in \e dll with \e tlb
- \row
- \i -v
- \i Print version information
- \row
- \i -regserver dll
- \i Register the COM server \e dll
- \row
- \i -unregserver
- \i Unregister the COM server \e dll
- \endtable
-
- It is usually never necessary to invoke IDC manually, as the \c
- qmake build system takes care of adding the required post
- processing steps to the build process. See the \l{ActiveQt}
- documentation for details.
-*/
diff --git a/doc/src/activeqt-testcon.qdoc b/doc/src/activeqt-testcon.qdoc
deleted file mode 100644
index 9fcfed666..000000000
--- a/doc/src/activeqt-testcon.qdoc
+++ /dev/null
@@ -1,77 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page activeqt-testcon.html
- \title testcon - An ActiveX Test Container (ActiveQt)
-
- \ingroup activeqt-tools
-
- \keyword testcon
-
- This application implements a generic test container for ActiveX
- controls. You can insert ActiveX controls installed on your
- system, and execute methods and modify properties. The container
- will log information about events and property changes as well
- as debug output in the log window.
-
- Parts of the code use internals of the Qt meta object and ActiveQt
- framework and are not recommended to be used in application code.
-
- Use the application to view the slots, signals and porperties
- available through the QAxWidget class when instantiated with a
- certain ActiveX, and to test ActiveX controls you implement or
- want to use in your Qt application.
-
- The application can load and execute script files in JavaScript,
- VBScript, Perl and Python (if installed) to automate the controls
- loaded. Example script files using the QAxWidget2 class are available
- in the \c scripts subdirectory.
-
- Note that the qmake project of this example includes a resource file
- \c testcon.rc with a version resource. This is required by some
- ActiveX controls (ie. Shockwave ActiveX Controls), which might crash
- or misbehave otherwise if such version information is missing.
-
- To build the tool you must first build the QAxContainer and the
- QAxServer libraries. Then run your make tool in \c tools/testcon
- and run the resulting \c testcon.exe.
-*/
diff --git a/doc/src/activeqt.qdoc b/doc/src/activeqt.qdoc
deleted file mode 100644
index b3f08566d..000000000
--- a/doc/src/activeqt.qdoc
+++ /dev/null
@@ -1,88 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page activeqt.html
- \title ActiveQt Framework
- \brief An overview of Qt's ActiveX and COM integration on Windows.
-
- \ingroup platform-notes
- \keyword ActiveQt
-
- Qt's ActiveX and COM support allows Qt for Windows developers to:
-
- \list 1
- \o Access and use ActiveX controls and COM objects provided by any
- ActiveX server in their Qt applications.
- \o Make their Qt applications available as COM servers, with
- any number of Qt objects and widgets as COM objects and ActiveX
- controls.
- \endlist
-
- The ActiveQt framework consists of two modules:
-
- \list
- \o The \l QAxContainer module is a static
- library implementing QObject and QWidget subclasses, QAxObject and
- QAxWidget, that act as containers for COM objects and ActiveX
- controls.
- \o The \l QAxServer module is a static library that implements
- functionality for in-process and executable COM servers. This
- module provides the QAxAggregated, QAxBindable and QAxFactory
- classes.
- \endlist
-
- To build the static libraries, change into the \c activeqt directory
- (usually \c QTDIR/src/activeqt), and run \c qmake and your make
- tool in both the \c container and the \c control subdirectory.
- The libraries \c qaxcontainer.lib and \c qaxserver.lib will be linked
- into \c QTDIR/lib.
-
- If you are using a shared configuration of Qt enter the \c plugin
- subdirectory and run \c qmake and your make tool to build a
- plugin that integrates the QAxContainer module into \l{Qt
- Designer}.
-
- The ActiveQt modules are part of the \l{Qt Full Framework Edition} and
- the \l{Open Source Versions of Qt}.
-
- \sa {QAxContainer Module}, {QAxServer Module}
-*/
diff --git a/doc/src/animation.qdoc b/doc/src/animation.qdoc
deleted file mode 100644
index 7fd78508c..000000000
--- a/doc/src/animation.qdoc
+++ /dev/null
@@ -1,364 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page animation-overview.html
- \title The Animation Framework
- \ingroup architecture
- \ingroup animation
- \brief An overview of the Animation Framework
-
- \keyword Animation
-
- The animation framework is part of the Kinetic project, and aims
- to provide an easy way for creating animated and smooth GUI's. By
- animating Qt properties, the framework provides great freedom for
- animating widgets and other \l{QObject}s. The framework can also
- be used with the Graphics View framework.
-
- In this overview, we explain the basics of its architecture. We
- also show examples of the most common techniques that the
- framework allows for animating QObjects and graphics items.
-
- \tableofcontents
-
- \section1 The Animation Architecture
-
- We will in this section take a high-level look at the animation
- framework's architecture and how it is used to animate Qt
- properties. The following diagram shows the most important classes
- in the animation framework.
-
- \image animations-architecture.png
-
- The animation framework foundation consists of the base class
- QAbstractAnimation, and its two subclasses QVariantAnimation and
- QAnimationGroup. QAbstractAnimation is the ancestor of all
- animations. It represents basic properties that are common for all
- animations in the framework; notably, the ability to start, stop,
- and pause an animation. It is also receives the time change
- notifications.
-
- The animation framework further provides the QPropertyAnimation
- class, which inherits QVariantAnimation and performs animation of
- a Qt property, which is part of Qt's \l{Meta-Object
- System}{meta-object system}. The class performs an interpolation
- over the property using an easing curve. So when you want to
- animate a value, you can declare it as a property and make your
- class a QObject. Note that this gives us great freedom in
- animating already existing widgets and other \l{QObject}s.
-
- Complex animations can be constructed by building a tree structure
- of \l{QAbstractAnimation}s. The tree is built by using
- \l{QAnimationGroup}s, which function as containers for other
- animations. Note also that the groups are subclasses of
- QAbstractAnimation, so groups can themselves contain other groups.
-
- The animation framework can be used on its own, but is also
- designed to be part of the state machine framework (See the
- \l{The State Machine Framework}{state machine framework} for an
- introduction to the Qt state machine). The state machine provides
- a special state that can play an animation. A QState can also set
- properties when the state is entered or exited, and this special
- animation state will interpolate between these values when given a
- QPropertyAnimation. We will look more closely at this later.
-
- Behind the scenes, the animations are controlled by a global
- timer, which sends \l{QAbstractAnimation::updateCurrentTime()}{updates} to
- all animations that are playing.
-
- For detailed descriptions of the classes' function and roles in
- the framework, please look up their class descriptions.
-
- \section1 Animating Qt Properties
-
- As mentioned in the previous section, the QPropertyAnimation class
- can interpolate over Qt properties. It is this class that should
- be used for animation of values; in fact, its superclass,
- QVariantAnimation, is an abstract class, and cannot be used
- directly.
-
- A major reason we chose to animate Qt properties is that it
- presents us with freedom to animate already existing classes in
- the Qt API. Notably, the QWidget class (which we can also embed in
- a QGraphicsView) has properties for its bounds, colors, etc.
- Let's look at a small example:
-
- \code
- QPushButton button("Animated Button");
- button.show();
-
- QPropertyAnimation animation(&button, "geometry");
- animation.setDuration(10000);
- animation.setStartValue(QRect(0, 0, 100, 30));
- animation.setEndValue(QRect(250, 250, 100, 30));
-
- animation.start();
- \endcode
-
- This code will move \c button from the top left corner of the
- screen to the position (250, 250) in 10 seconds (10000 milliseconds).
-
- The example above will do a linear interpolation between the
- start and end value. It is also possible to set values
- situated between the start and end value. The interpolation
- will then go by these points.
-
- \code
- QPushButton button("Animated Button");
- button.show();
-
- QPropertyAnimation animation(&button, "geometry");
- animation.setDuration(10000);
-
- animation.setKeyValueAt(0, QRect(0, 0, 100, 30));
- animation.setKeyValueAt(0.8, QRect(250, 250, 100, 30));
- animation.setKeyValueAt(1, QRect(0, 0, 100, 30));
-
- animation.start();
- \endcode
-
- In this example, the animation will take the button to (250, 250)
- in 8 seconds, and then move it back to its original position in
- the remaining 2 seconds. The movement will be linearly
- interpolated between these points.
-
- You also have the possibility to animate values of a QObject
- that is not declared as a Qt property. The only requirement is
- that this value has a setter. You can then subclass the class
- containing the value and declare a property that uses this setter.
- Note that each Qt property requires a getter, so you will need to
- provide a getter yourself if this is not defined.
-
- \code
- class MyGraphicsRectItem : public QObject, public QGraphicsRectItem
- {
- Q_OBJECT
- Q_PROPERTY(QRectF geometry READ geometry WRITE setGeometry)
- };
- \endcode
-
- In the above code example, we subclass QGraphicsRectItem and
- define a geometry property. We can now animate the widgets
- geometry even if QGraphicsRectItem does not provide the geometry
- property.
-
- For a general introduction to the Qt property system, see its
- \l{Qt's Property System}{overview}.
-
- \section1 Animations and the Graphics View Framework
-
- When you want to animate \l{QGraphicsItem}s, you also use
- QPropertyAnimation. However, QGraphicsItem does not inherit QObject.
- A good solution is to subclass the graphics item you wish to animate.
- This class will then also inherit QObject.
- This way, QPropertyAnimation can be used for \l{QGraphicsItem}s.
- The example below shows how this is done. Another possibility is
- to inherit QGraphicsWidget, which already is a QObject.
-
- \code
- class Pixmap : public QObject, public QGraphicsPixmapItem
- {
- Q_OBJECT
- Q_PROPERTY(QPointF pos READ pos WRITE setPos)
- ...
- \endcode
-
- As described in the previous section, we need to define
- properties that we wish to animate.
-
- Note that QObject must be the first class inherited as the
- meta-object system demands this.
-
- \section1 Easing Curves
-
- As mentioned, QPropertyAnimation performs an interpolation between
- the start and end property value. In addition to adding more key
- values to the animation, you can also use an easing curve. Easing
- curves describe a function that controls how the speed of the
- interpolation between 0 and 1 should be, and are useful if you
- want to control the speed of an animation without changing the
- path of the interpolation.
-
- \code
- QPushButton button("Animated Button");
- button.show();
-
- QPropertyAnimation animation(&button, "geometry");
- animation.setDuration(3000);
- animation.setStartValue(QRect(0, 0, 100, 30));
- animation.setEndValue(QRect(250, 250, 100, 30));
-
- animation.setEasingCurve(QEasingCurve::OutBounce);
-
- animation.start();
- \endcode
-
- Here the animation will follow a curve that makes it bounce like a
- ball as if it was dropped from the start to the end position.
- QEasingCurve has a large collection of curves for you to choose
- from. These are defined by the QEasingCurve::Type enum. If you are
- in need of another curve, you can also implement one yourself, and
- register it with QEasingCurve.
-
- \omit Drop this for the first Lab release
- (Example of custom easing curve (without the actual impl of
- the function I expect)
- \endomit
-
- \section1 Putting Animations Together
-
- An application will often contain more than one animation. For
- instance, you might want to move more than one graphics item
- simultaneously or move them in sequence after each other.
-
- The subclasses of QAnimationGroup (QSequentialAnimationGroup and
- QParallelAnimationGroup) are containers for other animations so
- that these animations can be animated either in sequence or
- parallel. The QAnimationGroup is an example of an animation that
- does not animate properties, but it gets notified of time changes
- periodically. This enables it to forward those time changes to its
- contained animations, and thereby controlling when its animations
- are played.
-
- Let's look at code examples that use both
- QSequentialAnimationGroup and QParallelAnimationGroup, starting
- off with the latter.
-
- \code
- QPushButton *bonnie = new QPushButton("Bonnie");
- bonnie->show();
-
- QPushButton *clyde = new QPushButton("Clyde");
- clyde->show();
-
- QPropertyAnimation *anim1 = new QPropertyAnimation(bonnie, "geometry");
- // Set up anim1
-
- QPropertyAnimation *anim2 = new QPropertyAnimation(clyde, "geometry");
- // Set up anim2
-
- QParallelAnimationGroup *group = new QParallelAnimationGroup;
- group->addAnimation(anim1);
- group->addAnimation(anim2);
-
- group->start();
- \endcode
-
- A parallel group plays more than one animation at the same time.
- Calling its \l{QAbstractAnimation::}{start()} function will start
- all animations it governs.
-
- \code
- QPushButton button("Animated Button");
- button.show();
-
- QPropertyAnimation anim1(&button, "geometry");
- anim1.setDuration(3000);
- anim1.setStartValue(QRect(0, 0, 100, 30));
- anim1.setEndValue(QRect(500, 500, 100, 30));
-
- QPropertyAnimation anim2(&button, "geometry");
- anim2.setDuration(3000);
- anim2.setStartValue(QRect(500, 500, 100, 30));
- anim2.setEndValue(QRect(1000, 500, 100, 30));
-
- QSequentialAnimationGroup group;
-
- group.addAnimation(&anim1);
- group.addAnimation(&anim2);
-
- group.start();
- \endcode
-
- As you no doubt have guessed, QSequentialAnimationGroup plays
- its animations in sequence. It starts the next animation in
- the list after the previous is finished.
-
- Since an animation group is an animation itself, you can add
- it to another group. This way, you can build a tree structure
- of animations which specifies when the animations are played
- in relation to each other.
-
- \section1 Animations and States
-
- When using a \l{The State Machine Framework}{state machine}, we
- can associate one or more animations to a transition between states
- using a QSignalTransition or QEventTransition class. These classes
- are both derived from QAbstractTransition, which defines the
- convenience function \l{QAbstractTransition::}{addAnimation()} that
- enables the appending of one or more animations triggered when the
- transition occurs.
-
- We also have the possibility to associate properties with the
- states rather than setting the start and end values ourselves.
- Below is a complete code example that animates the geometry of a
- QPushButton.
-
- \code
- QPushButton *button = new QPushButton("Animated Button");
- button->show();
-
- QStateMachine *machine = new QStateMachine;
-
- QState *state1 = new QState(machine->rootState());
- state1->assignProperty(button, "geometry", QRect(0, 0, 100, 30));
- machine->setInitialState(state1);
-
- QState *state2 = new QState(machine->rootState());
- state2->assignProperty(button, "geometry", QRect(250, 250, 100, 30));
-
- QSignalTransition *transition1 = state1->addTransition(button,
- SIGNAL(clicked()), state2);
- transition1->addAnimation(new QPropertyAnimation(button, "geometry"));
-
- QSignalTransition *transition2 = state2->addTransition(button,
- SIGNAL(clicked()), state1);
- transition2->addAnimation(new QPropertyAnimation(button, "geometry"));
-
- machine->start();
- \endcode
-
- For a more comprehensive example of how to use the state machine
- framework for animations, see the states example (it lives in the
- \c{examples/animation/states} directory).
-*/
-
diff --git a/doc/src/appicon.qdoc b/doc/src/appicon.qdoc
deleted file mode 100644
index 901b85409..000000000
--- a/doc/src/appicon.qdoc
+++ /dev/null
@@ -1,226 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Qt Application Icon Usage Documentation.
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
-/*!
- \page appicon.html
- \title Setting the Application Icon
- \ingroup gui-programming
-
- The application icon, typically displayed in the top-left corner of an
- application's top-level windows, is set by calling the
- QWidget::setWindowIcon() method on top-level widgets.
-
- In order to change the icon of the executable application file
- itself, as it is presented on the desktop (i.e., prior to
- application execution), it is necessary to employ another,
- platform-dependent technique.
-
- \tableofcontents
-
- \section1 Setting the Application Icon on Windows
-
- First, create an ICO format bitmap file that contains the icon
- image. This can be done with e.g. Microsoft Visual C++: Select
- \menu{File|New}, then select the \menu{File} tab in the dialog
- that appears, and choose \menu{Icon}. (Note that you do not need
- to load your application into Visual C++; here we are only using
- the icon editor.)
-
- Store the ICO file in your application's source code directory,
- for example, with the name \c myappico.ico. Then, create a text
- file called, say, \c myapp.rc in which you put a single line of
- text:
-
- \snippet doc/src/snippets/code/doc_src_appicon.qdoc 0
-
- Finally, assuming you are using \c qmake to generate your
- makefiles, add this line to your \c myapp.pro file:
-
- \snippet doc/src/snippets/code/doc_src_appicon.qdoc 1
-
- Regenerate your makefile and your application. The \c .exe file
- will now be represented with your icon in Explorer.
-
- If you do not use \c qmake, the necessary steps are: first, run
- the \c rc program on the \c .rc file, then link your application
- with the resulting \c .res file.
-
- \section1 Setting the Application Icon on Mac OS X
-
- The application icon, typically displayed in the application dock
- area, is set by calling QWidget::setWindowIcon() on a top-level
- widget. It is possible that the program could appear in the
- application dock area before the function call, in which case a
- default icon will appear during the bouncing animation.
-
- To ensure that the correct icon appears, both when the application is
- being launched, and in the Finder, it is necessary to employ a
- platform-dependent technique.
-
- Although many programs can create icon files (\c .icns), the
- recommended approach is to use the \e{Icon Composer} program
- supplied by Apple (in the \c Developer/Application folder).
- \e{Icon Composer} allows you to import several different sized
- icons (for use in different contexts) as well as the masks that
- go with them. Save the set of icons to a file in your project
- directory.
-
- If you are using qmake to generate your makefiles, you only need
- to add a single line to your \c .pro project file. For example,
- if the name of your icon file is \c{myapp.icns}, and your project
- file is \c{myapp.pro}, add this line to \c{myapp.pro}:
-
- \snippet doc/src/snippets/code/doc_src_appicon.qdoc 2
-
- This will ensure that \c qmake puts your icons in the proper
- place and creates an \c{Info.plist} entry for the icon.
-
- If you do not use \c qmake, you must do the following manually:
- \list 1
- \i Create an \c Info.plist file for your application (using the
- \c PropertyListEditor, found in \c Developer/Applications).
- \i Associate your \c .icns record with the \c CFBundleIconFile record in the
- \c Info.plist file (again, using the \c PropertyListEditor).
- \i Copy the \c Info.plist file into your application bundle's \c Contents
- directory.
- \i Copy the \c .icns file into your application bundle's \c Contents/Resources
- directory.
- \endlist
-
- \section1 Setting the Application Icon on Common Linux Desktops
-
- In this section we briefly describe the issues involved in providing
- icons for applications for two common Linux desktop environments:
- \l{http://www.kde.org/}{KDE} and \l{http://www.gnome.org/}{GNOME}.
- The core technology used to describe application icons
- is the same for both desktops, and may also apply to others, but there
- are details which are specific to each. The main source of information
- on the standards used by these Linux desktops is
- \l{http://www.freedesktop.org/}{freedesktop.org}. For information
- on other Linux desktops please refer to the documentation for the
- desktops you are interested in.
-
- Often, users do not use executable files directly, but instead launch
- applications by clicking icons on the desktop. These icons are
- representations of "desktop entry files" that contain a description of
- the application that includes information about its icon. Both desktop
- environments are able to retrieve the information in these files, and
- they use it to generate shortcuts to applications on the desktop, in
- the start menu, and on the panel.
-
- More information about desktop entry files can be found in the
- \l{http://www.freedesktop.org/Standards/desktop-entry-spec}{Desktop Entry
- Specification}.
-
- Although desktop entry files can usefully encapsulate the application's details,
- we still need to store the icons in the conventional location for each desktop
- environment. A number of locations for icons are given in the
- \l{http://www.freedesktop.org/Standards/icon-theme-spec}{Icon Theme
- Specification}.
-
- Although the path used to locate icons depends on the desktop in use,
- and on its configuration, the directory structure beneath each of
- these should follow the same pattern: subdirectories are arranged by
- theme, icon size, and application type. Generally, application icons
- are added to the hicolor theme, so a square application icon 32 pixels
- in size would be stored in the \c hicolor/32x32/apps directory beneath
- the icon path.
-
- \section2 K Desktop Environment (KDE)
-
- Application icons can be installed for use by all users, or on a per-user basis.
- A user currently logged into their KDE desktop can discover these locations
- by using \l{http://developer.kde.org/documentation/other/kde-config.html}{kde-config},
- for example, by typing the following in a terminal window:
-
- \snippet doc/src/snippets/code/doc_src_appicon.qdoc 3
-
- Typically, the list of colon-separated paths printed to stdout includes the
- user-specific icon path and the system-wide path. Beneath these
- directories, it should be possible to locate and install icons according
- to the conventions described in the
- \l{http://www.freedesktop.org/Standards/icon-theme-spec}{Icon Theme Specification}.
-
- If you are developing exclusively for KDE, you may wish to take
- advantage of the \link
- http://developer.kde.org/documentation/other/makefile_am_howto.html
- KDE build system\endlink to configure your application. This ensures
- that your icons are installed in the appropriate locations for KDE.
-
- The KDE developer website is at \l{http://developer.kde.org/}.
-
- \section2 GNOME
-
- Application icons are stored within a standard system-wide
- directory containing architecture-independent files. This
- location can be determined by using \c gnome-config, for example
- by typing the following in a terminal window:
-
- \snippet doc/src/snippets/code/doc_src_appicon.qdoc 4
-
- The path printed on stdout refers to a location that should contain a directory
- called \c{pixmaps}; the directory structure within the \c pixmaps
- directory is described in the \link
- http://www.freedesktop.org/Standards/icon-theme-spec Icon Theme
- Specification \endlink.
-
- If you are developing exclusively for GNOME, you may wish to use
- the standard set of \link
- http://developer.gnome.org/tools/build.html GNU Build Tools\endlink,
- also described in the relevant section of
- the \link http://developer.gnome.org/doc/GGAD/ggad.html GTK+/Gnome
- Application Development book\endlink. This ensures that your icons are
- installed in the appropriate locations for GNOME.
-
- The GNOME developer website is at \l{http://developer.gnome.org/}.
-*/
diff --git a/doc/src/assistant-manual.qdoc b/doc/src/assistant-manual.qdoc
deleted file mode 100644
index 1b82b1aab..000000000
--- a/doc/src/assistant-manual.qdoc
+++ /dev/null
@@ -1,810 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page assistant-manual.html
- \title Qt Assistant Manual
- \ingroup qttools
-
- \startpage {index.html}{Qt Reference Documentation}
- \nextpage Qt Assistant in More Detail
-
- \keyword Qt Assistant
-
- This document introduces \QA, a tool for presenting on-line
- documentation. The document is divided into the following sections:
-
- Table of contents:
-
- \list
- \o \l{The One-Minute Guide to Using Qt Assistant}
- \o \l{Qt Assistant in More Detail}
- \o \l{Using Qt Assistant as a Custom Help Viewer}
- \endlist
-
- \chapter The One-Minute Guide to Using Qt Assistant
-
- Once you have installed Qt, \QA should be ready to run:
-
- \list
- \o On Windows, \QA is available as a menu option on the Qt menu.
- \o On Mac OS X, \QA is installed in the /Developer/Applications/Qt directory.
- \o On Unix/Linux, open a terminal, type \c{assistant} and press \key{Enter}.
- \endlist
-
- When you start up \QA, you will be presented with a standard main window
- application, with a menu bar and toolbar. Below these, on the left hand
- side are navigation windows called \e{Contents}, \e{Index} and \e{Bookmarks}.
- On the right, taking up most of the space, is the \e{Documentation} window.
- By default, \QA loads the Qt reference documentation along with the manuals
- of other Qt tools, like \QD or \QL.
-
- \QA works in a similar way to a Web browser. If you click hyperlinks
- (cross-references), the \e{Documentation} window will present the relevant
- page. You can bookmark pages of particular interest and you can click the
- \gui{Previous} and \gui{Next} toolbar buttons to navigate within the pages
- you have visited.
-
- Although \QA can be used just like a Web browser to navigate through
- the documentation, \QA offers a powerful means of navigation that Web
- browsers do not provide. \QA uses an advanced full text search engine
- to index all the pages in each compressed help file so that you can
- search for particular words and phrases.
-
- To perform an index search, click the \gui{Index} tab on the Sidebar
- (or press \key{Alt+I}). In the \gui{'Look For'} line edit enter a word;
- e.g., 'homedirpath'. As you type, words are found and highlighted in a list
- beneath the line edit. If the highlighted text matches what you're
- looking for, double click it, (or press \key{Enter}) and the
- \e{Documentation} window will display the relevant page. You rarely have
- to type in the whole word before \QA finds a match. Note that for some
- words there may be more than one possible page that is relevant.
-
- \QA also provides full text searching for finding specific words in
- the documentation. To activate the full text search, either press \key(Alt+S)
- or click on the \gui{Search} tab in the \e{Documentation} window. Then
- enter the term you're looking for and hit the \gui{Search} button. All
- documents containing the specified term will then be listed in the list box
- below.
-*/
-
-/*!
- \page assistant-details.html
- \title Qt Assistant in More Detail
-
- \contentspage {Qt Assistant Manual}{Contents}
- \previouspage Qt Assistant Manual
- \nextpage Using Qt Assistant as a Custom Help Viewer
-
- \tableofcontents
-
- \img assistant-assistant.png
-
- \section1 Command Line Options
-
- \QA handles the following command line options:
-
- \table
- \header
- \o Command Line Option
- \o Brief Description
- \row
- \o -collectionFile <file.qhc>
- \o Uses the specified collection file instead of the default one.
- \row
- \o -showUrl URL
- \o Shows the document referenced by URL.
- \row
- \o -enableRemoteControl
- \o Enables \QA to be remotly controlled.
- \row
- \o -show <widget>
- \o Shows the specified dockwidget which can be "contents", "index",
- "bookmarks" or "search".
- \row
- \o -hide <widget>
- \o Hides the specified dockwidget which can be "contents", "index",
- "bookmarks" or "search.
- \row
- \o -activate <widget>
- \o Activates the specified dockwidget which can be "contents",
- "index", "bookmarks" or "search.
- \row
- \o -register <doc.qch>
- \o Registers the specified compressed help file in the given help
- collection.
- \row
- \o -unregister <doc.qch>
- \o Unregisters the specified compressed help file from the given
- collection file.
- \row
- \o -setCurrentFilter filter
- \o Sets the given filter as the active filter.
- \row
- \o -quiet
- \o Doesn't show any error, warning or success messages.
- \endtable
-
- \section1 Tool Windows
-
- \img assistant-dockwidgets.png
-
- The tool windows provide four ways to navigate the documentation:
-
- \list
- \o The \gui{Contents} window presents a table of contents implemented as a
- tree view for the documentation that is available. If you click an item,
- its documentation will appear in the \e{Documentation} window. If you double
- click an item or click on the control to the left of it, the item's sub-items
- will appear. Click a sub-item to make its page appear in the \e{Documentation}
- window. Click on the control next to an open item to hide its sub-items.
- \o The \gui{Index} window is used to look up key words or phrases.
- See \l{The One-Minute Guide to Using Qt Assistant} for how to use this
- window.
- \o The \gui{Bookmarks} window lists any bookmarks you have made. Double
- click a bookmark to make its page appear in the \e{Documentation} window.
- The \gui{Bookmarks} window provides a context menu with \gui{Show Item},
- \gui{Delete Item} as well as \gui{Rename Item}. Click in the main menu
- \menu{Bookmark|Add Bookmark...} (or press \key{Ctrl+B}) to bookmark the
- page that is currently showing in the \e{Documentation} window. Right click
- a bookmark in the list to rename or delete the highlighted bookmark.
- \endlist
-
- If you want the \gui{Documentation} window to use as much space as possible,
- you can easily group, move or hide the tool windows. To group the windows,
- drag one on top of the other and release the mouse. If one or all tool
- windows are not shown, press \key{Alt+C}, \key{Alt+I} or \key{Alt+O} to show
- the required window.
-
- The tool windows can be docked into the main window, so you can drag them
- to the top, left, right or bottom of \e{Qt Assistant's} window, or you can
- drag them outside \QA to float them as independent windows.
-
- \section1 Documentation Window
-
- \img assistant-docwindow.png
-
- The \gui{Documentation} window lets you create a tab for each
- documentation page that you view. Click the \gui{Add Tab} button and a new
- tab will appear with the page name as the tab's caption. This makes it
- convenient to switch between pages when you are working with different
- documentation. You can delete a tab by clicking the \gui{Close Tab} button
- located on the right side of the \gui{Documentation} window.
-
- \section1 Toolbars
-
- \img assistant-toolbar.png
-
- The main toolbar provides fast access to the most common actions.
-
- \table
- \header \o Action \o Description \o Menu Item \o Shortcut
- \row \o \gui{Previous} \o Takes you to the previous page in the history.
- \o \menu{Go|Previous} \o \key{Alt+Left Arrow}
- \row \o \gui{Next} \o Takes you to the next page in the history.
- \o \menu{Go|Next} \o \key{Alt+Right Arrow}
- \row \o \gui{Home}
- \o Takes you to the home page as specified in the Preferences Dialog.
- \o \menu{Go|Home} \o \key{Ctrl+Home}.
- \row \o \gui{Sync with Table of Contents}
- \o Synchronizes the \gui{Contents} tool window with the page currently
- shown in the \gui{Documentation} window.
- \o \menu{Go|Sync with Table of Contents} \o
- \row \o \gui{Copy} \o Copies any selected text to the clipboard.
- \o \menu{Edit|Copy} \o \key{Ctrl+C}
- \row \o \gui{Print} \o Opens the \gui{Print} dialog.
- \o \menu{File|Print} \o \key{Ctrl+P}
- \row \o \gui{Find in Text} \o Opens the \gui{Find Text} dialog.
- \o \menu{Edit|Find in Text} \o \key{Ctrl+F}
- \row \o \gui{Zoom in}
- \o Increases the font size used to display text in the current tab.
- \o \menu{View|Zoom in} \o \key{Ctrl++}
- \row \o \gui{Zoom out}
- \o Decreases the font size used to display text in the current tab.
- \o \menu{View|Zoom out} \o \key{Ctrl+-}
- \row \o \gui{Normal Size}
- \o Resets the font size to its normal size in the current tab.
- \o \menu{View|Normal Size} \o \key{Ctrl+0}
- \endtable
-
- \img assistant-address-toolbar.png
-
- The address toolbar provides a fast way to enter a specific URL for a
- documentation file. By default, the address toolbar is not shown, so it
- has to be activated via \menu{View|Toolbars|Address Toolbar}.
-
- \img assistant-filter-toolbar.png
-
- The filter toolbar allows you to apply a filter to the currently installed
- documentation. As with the address toolbar, the filter toolbar is not visible
- by default and has to be activated via \menu{View|Toolbars|Filter Toolbar}.
-
- \section1 Menus
-
- \section2 File Menu
-
- \list
- \o \menu{File|Page Setup...} invokes a dialog allowing you to define
- page layout properties, such as margin sizes, page orientation and paper size.
- \o \menu{File|Print Preview...} provides a preview of the printed pages.
- \o \menu{File|Print...} opens the \l{#Print Dialog}{\gui{Print} dialog}.
- \o \menu{File|New Tab} opens a new empty tab in the \gui{Documentation}
- window.
- \o \menu{File|Close Tab} closes the current tab of the
- \gui{Documentation} window.
- \o \menu{File|Exit} closes the \QA application.
- \endlist
-
- \section2 Edit Menu
-
- \list
- \o \menu{Edit|Copy} copies any selected text to the clipboard.
- \o \menu{Edit|Find in Text} invokes the \l{#Find Text Control}{\gui{Find Text}
- control} at the lower end of the \gui{Documentation} window.
- \o \menu{Edit|Find Next} looks for the next occurance of the specified
- text in the \gui{Find Text} control.
- \o \menu{Edit|Find Previous} looks for the previous occurance of
- the specified text in the \l{#Find Text Control}{\gui{Find Text} control}.
- \o \menu{Edit|Preferences} invokes the \l{#Preferences Dialog}{\gui{Preferences} dialog}.
- \endlist
-
- \section2 View Menu
-
- \list
- \o \menu{View|Zoom in} increases the font size in the current tab.
- \o \menu{View|Zoom out} decreases the font size in the current tab.
- \o \menu{View|Normal Size} resets the font size in the current tab.
- \o \menu{View|Contents} toggles the display of the \gui{Contents} tool window.
- \o \menu{View|Index} toggles the display of the \gui{Index} tool window.
- \o \menu{View|Bookmarks} toggles the display of the \gui{Bookmarks} tool window.
- \o \menu{View|Search} toggles the display of the Search in the \gui{Documentation} window.
- \endlist
-
- \section2 Go Menu
-
- \list
- \o \menu{Go|Home} goes to the home page.
- \o \menu{Go|Back} displays the previous page in the history.
- \o \menu{Go|Forward} displays the next page in the history.
- \o \menu{Go|Sync with Table of Contents} syncs the \gui{Contents} tool window to the currently shown page.
- \o \menu{Go|Next Page} selects the next tab in the \gui{Documentation} window.
- \o \menu{Go|Previous Page} selects the previous tab in the \gui{Documentation} window.
- \endlist
-
- \section2 Bookmarks Menu
-
- \list
- \o \menu{Bookmarks|Add} adds the current page to the list of bookmarks.
- \endlist
-
- \section1 Dialogs
-
- \section2 Print Dialog
-
- This dialog is platform-specific. It gives access to various printer
- options and can be used to print the document shown in the current tab.
-
- \section2 Preferences Dialog
-
- \img assistant-preferences-fonts.png
-
- The \menu{Fonts} page allows you to change the font family and font sizes of the
- browser window displaying the documentation or the application itself.
-
- \img assistant-preferences-filters.png
-
- The \menu{Filters} page lets you create and remove documentation
- filters. To add a new filter, click the \gui{Add} button, specify a
- filter name in the pop-up dialog and click \gui{OK}, then select
- the filter attributes in the list box on the right hand side.
- You can delete a filter by selecting it and clicking the \gui{Remove}
- button.
-
- \img assistant-preferences-documentation.png
-
- The \menu{Documentation} page lets you install and remove compressed help
- files. Click the \gui{Install} button and choose the path of the compressed
- help file (*.qch) you would like to install.
- To delete a help file, select a documentation set in the list and click
- \gui{Remove}.
-
- \img assistant-preferences-options.png
-
- The \menu{Options} page lets you specify the homepage \QA will display when
- you click the \gui{Home} button in \QA's main user interface. You can specify
- the hompage by typing it here or clicking on one of the buttons below the
- textbox. \gui{Current Page} sets the currently displayed page as your home
- page while \gui{Restore to default} will reset your home page to the default
- home page.
-
- \section1 Find Text Control
-
- This control is used to find text in the current page. Enter the text you want
- to find in the line edit. The search is incremental, meaning that the most
- relevant result is shown as you enter characters into the line edit.
-
- If you check the \gui{Whole words only} checkbox, the search will only consider
- whole words; for example, if you search for "spin" with this checkbox checked it will
- not match "spinbox", but will match "spin". If you check the \gui{Case sensitive}
- checkbox then, for example, "spin" will match "spin" but not "Spin". You can
- search forwards or backwards from your current position in the page by clicking
- the \gui{Previous} or \gui{Next} buttons. To hide the find control, either click the
- \gui{Close} button or hit the \key{Esc} key.
-
- \section1 Filtering Help Contents
-
- \QA allows you to install any kind of documentation as long as it is organized
- in Qt compressed help files (*.qch). For example, it is possible to install the
- Qt reference documentation for Qt 4.4.0 and Qt 4.4.1 at the same time. In many
- respects, this is very convenient since only one version of \QA is needed.
- However, at the same time it becomes more complicated when performing tasks like
- searching the index because nearly every keyword is defined in Qt 4.4.0 as well
- as in Qt 4.4.1. This means that \QA will always ask the user to choose which one
- should be displayed.
-
- We use documentation filters to solve this issue. A filter is identified by its
- name, and contains a list of filter attributes. An attribute is just a string and
- can be freely chosen. Attributes are defined by the documentation itself, this
- means that every documentation set usually has one or more attributes.
-
- For example, the Qt 4.4.0 \QA documentation defines the attributes \c {assistant},
- \c{tools} and \c{4.4.0}, \QD defines \c{designer}, \c{tools} and \c{4.4.0}.
- The filter to display all tools would then define only the attribute
- \c{tools} since this attribute is part of both documentation sets.
- Adding the attribute \c{assistant} to the filter would then only show \QA
- documentation since the \QD documentation does not contain this
- attribute. Having an empty list of attributes in a filter will match all
- documentation; i.e., it is equivalent to requesting unfiltered documentation.
-
- \section1 Full Text Searching
-
- \img assistant-search.png
-
- \QA provides a powerful full text search engine. To search
- for certain words or text, click the \gui{Search} tab in the \gui{Documentation}
- window. Then enter the text you want to look for and press \key{Enter}
- or click the \gui{Search} button. The search is not case sensitive, so,
- for example, Foo, fOo and FOO are all treated as the same. The following are
- examples of common search patterns:
-
- \list
- \o \c deep -- lists all the documents that contain the word 'deep'
- \o \c{deep*} -- lists all the documents that contain a word beginning
- with 'deep'
- \o \c{deep copy} -- lists all documents that contain both 'deep' \e
- and 'copy'
- \o \c{"deep copy"} -- list all documents that contain the phrase 'deep copy'
- \endlist
-
- It is also possible to use the \gui{Advanced search} to get more flexibility.
- You can specify some words so that hits containing these are excluded from the
- result, or you can search for an exact phrase. Searching for similar words will
- give results like these:
-
- \list
- \o \c{QStin} -- lists all the documents with titles that are similar, such as \c{QString}
- \o \c{QSting} -- lists all the documents with titles that are similar, such as \c{QString}
- \o \c{QStrin} -- lists all the documents with titles that are similar, such as \c{QString}
- \endlist
-
- Options can be combined to improve the search results.
-
- The list of documents found is ordered according to the number of
- occurrences of the search text which they contain, with those containing
- the highest number of occurrences appearing first. Simply click any
- document in the list to display it in the \gui{Documentation} window.
-
- If the documentation has changed \mdash for example, if documents have been added
- or removed \mdash \QA will index them again.
-
-*/
-
-/*!
- \page assistant-custom-help-viewer.html
- \title Using Qt Assistant as a Custom Help Viewer
-
- \contentspage {Qt Assistant Manual}{Contents}
- \previouspage Qt Assistant in More Detail
-
- Using \QA as custom help viewer requires more than just being able to
- display custom documentation. It is equally important that the
- appearance of \QA can be customized so that it is seen as a
- application-specific help viewer rather than \QA. This is achieved by
- changing the window title or icon, as well as some application-specific
- menu texts and actions. The complete list of possible customizations
- can be found in the \l{Creating a Custom Help Collection File} section.
-
- Another requirement of a custom help viewer is the ability to receive
- actions or commands from the application it provides help for. This is
- especially important when the application offers context sensitive help.
- When used in this way, the help viewer may need to change its contents
- depending on the state the application is currently in. This means that
- the application has to communicate the current state to the help viewer.
- The section about \l{Using Qt Assistant Remotely} explains how this can
- be done.
-
- \tableofcontents
-
- The \l{Simple Text Viewer Example}{Simple Text Viewer} example uses the
- techniques described in this document to show how to use \QA as a custom
- help viewer for an application.
-
- \warning In order to ship Qt Assistant in your application, it is crucial
- that you include the sqlite plugin. For more information on how to include
- plugins in your application, refer to the \l{Deploying Qt Applications}
- {deployment documentation}.
-
- \section1 Qt Help Collection Files
-
- The first important point to know about \QA is that it stores all
- settings related to its appearance \e and a list of installed
- documentation in a help collection file. This means, when starting \QA
- with different collection files, \QA may look totally different. This
- complete separation of settings makes it possible to deploy \QA as a
- custom help viewer for more than one application on one machine
- without risk of interference between different instances of \QA.
-
- To apply a certain help collection to \QA, specify the respective
- collection file on the command line when starting it. For example:
-
- \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 8
-
- However, storing all settings in one collection file raises some problems.
- The collection file is usually installed in the same directory as the
- application itself, or one of its subdirectories. Depending on the
- directory and the operating system, the user may not have any permissions
- to modify this file which would happen when the user settings are stored.
- Also, it may not even be possible to give the user write permissions;
- e.g., when the file is located on a read-only medium like a CD-ROM.
-
- Even if it is possible to give everybody the right to store their settings
- in a globally available collection file, the settings from one user would
- be overwritten by another user when exiting \QA.
-
- To solve this dilemma, \QA creates user specific collection files which
- are more or less copied from the original collection file. The user-specific
- collection file will be saved in a subdirectory of the path returned by
- QDesktopServices::DataLocation. The subdirectory, or \e{cache directory}
- within this user-specific location, can be defined in the help collection
- project file. For example:
-
- \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 7
-
- So, when calling
-
- \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 8
-
- \QA actually uses the collection file:
-
- \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 9
-
- There is no need ever to start \QA with the user specific collection
- file. Instead, the collection file shipped with the application should
- always be used. Also, when adding or removing documentation from the
- collection file (see next section) always use the normal collection file.
- \QA will take care of synchronizing the user collection files when the
- list of installed documentation has changed.
-
- \section1 Displaying Custom Documentation
-
- Before \QA is able to show documentation, it has to know where it can
- find the actual documentation files, meaning that it has to know the
- location of the Qt compressed help file (*.qch). As already mentioned,
- \QA stores references to the compressed help files in the currently used
- collection file. So, when creating a new collection file you can list
- all compressed help files \QA should display.
-
- \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 5
-
- Sometimes, depending on the application for which \QA acts as a
- help viewer, more documentation needs to be added over time; for
- example, when installing more application components or plugins.
- This can be done manually by starting \QA, opening the \gui{Edit|Preferences}
- dialog and navigating to the \gui{Documentation} tab page. Then click
- the \gui{Add...} button, select a Qt compressed help file (*.qch)
- and press \gui{Open}. However, this approach has the disadvantage
- that every user has to do it manually to get access to the new
- documentation.
-
- The prefered way of adding documentation to an already existing collection
- file is to use the \c{-register} command line flag of \QA. When starting
- \QA with this flag, the documentation will be added and \QA will
- exit right away displaying a message if the registration was successful
- or not.
-
- \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 6
-
- The \c{-quiet} flag can be passed on to \QA to prevent it from writing
- out the status message.
-
- \bold{Note:} \QA will show the documentation in the contents view in the same
- order as it was registered.
-
-
- \section1 Changing the Appearance of Qt Assistant
-
- The appearance of \QA can be changed by passing different command line options
- on startup. However, these command line options only allow to show or hide
- specific widgets, like the contents or index view. Other customizations, such
- as changing the application title or icon, or disabling the filter functionality,
- can be done by creating a custom help collection file.
-
- \section2 Creating a Custom Help Collection File
-
- The help collection file (*.qhc) used by \QA is created when running the
- \c qcollectiongenerator tool on a help collection project file (*.qhcp).
- The project file format is XML and supports the following tags:
-
- \table
- \header
- \o Tag
- \o Brief Description
- \row
- \o \c{<title>}
- \o This property is used to specify a window title for \QA.
- \row
- \o \c{<homePage>}
- \o This tag specifies which page should be display when
- pressing the home button in \QA's main user interface.
- \row
- \o \c{<startPage>}
- \o This tag specifies which page \QA should initially
- display when the help collection is used.
- \row
- \o \c{<currentFilter>}
- \o This tag specifies the \l{Qt Assistant in More Detail#Preferences Dialog}{filter}
- that is initially used.
- If this filter is not specified, the documentation will not be filtered. This has
- no impact if only one documentation set is installed.
- \row
- \o \c{<applicationIcon>}
- \o This tag describes an icon that will be used instead of the normal \QA
- application icon. This is specified as a relative path from the directory
- containing the collection file.
- \row
- \o \c{<enableFilterFunctionality>}
- \o This tag is used to enable or disable user accessible filter functionality,
- making it possible to prevent the user from changing any filter when running \QA.
- It does not mean that the internal filter functionality is completely disabled.
- Set the value to \c{false} if you want to disable the filtering. If the filter
- toolbar should be shown by default, set the attribute \c{visible} to \c{true}.
- \row
- \o \c{<enableDocumentationManager>}
- \o This tag is used to specify whether the documentation manager should be shown
- in the preferences dialog. Disabling the Documentation Manager allows you to limit
- \QA to display a specific documentation set or make it impossible for the end user
- to accidentally remove or install documentation. To hide the documentation manager,
- set the tag value to \c{false}.
- \row
- \o \c{<enableAddressBar>}
- \o This tag describes if the address bar can be shown. By default it is
- enabled; if you want to disable it set the tag value to \c{false}. If the
- address bar functionality is enabled, the address bar can be shown by setting the
- tag attribute \c{visible} to \c{true}.
- \row
- \o \c{<aboutMenuText>, <text>}
- \o The \c{aboutMenuText} tag lists texts for different languages which will
- later appear in the \menu{Help} menu; e.g., "About Application". A text is
- specified within the \c{text} tags; the \c{language} attribute takes the two
- letter language name. The text is used as the default text if no language
- attribute is specified.
- \row
- \o \c{<aboutDialog>, <file>, <icon>}
- \o The \c{aboutDialog} tag can be used to specify the text for the \gui{About}
- dialog that can be opened from the \menu{Help} menu. The text is taken from the
- file in the \c{file} tags. It is possible to specify a different file or any
- language. The icon defined by the \c{icon} tags is applied to any language.
- \row
- \o \c{<cacheDirectory>}
- \o Specified as a path relative to the directory given by
- QDesktopServices::DataLocation, the cache path is used to store index files
- needed for the full text search and a copy of the collection file.
- The copy is needed because \QA stores all its settings in the collection file;
- i.e., it must be writable for the user.
- \endtable
-
- In addition to those \QA specific tags, the tags for generating and registering
- documentation can be used. See \l{QtHelp Module#Creating a Qt Help Collection}{Qt Help Collection}
- documentation for more information.
-
- An example of a help collection file that uses all the available tags is shown below:
-
- \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 1
-
- To create the binary collection file, run the \c qcollectiongenerator tool:
-
- \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 10
-
- To test the generated collection file, start \QA in the following way:
-
- \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 8
-
- \section1 Using Qt Assistant Remotely
-
- Even though the help viewer is a standalone application, it will mostly
- be launched by the application it provides help for. This approach
- gives the application the possibility to ask for specific help contents
- to be displayed as soon as the help viewer is started. Another advantage
- with this approach is that the application can communicate with the
- help viewer process and can therefore request other help contents to be
- shown depending on the current state of the application.
-
- So, to use \QA as the custom help viewer of your application, simply
- create a QProcess and specify the path to the Assistant executable. In order
- to make Assistant listen to your application, turn on its remote control
- functionality by passing the \c{-enableRemoteControl} command line option.
-
- \warning The trailing '\0' must be appended separately to the QByteArray,
- e.g., \c{QByteArray("command" + '\0')}.
-
- The following example shows how this can be done:
-
- \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 2
-
- Once \QA is running, you can send commands by using the stdin channel of
- the process. The code snippet below shows how to tell \QA to show a certain
- page in the documentation.
-
- \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 3
-
- The following commands can be used to control \QA:
-
- \table
- \header
- \o Command
- \o Brief Description
- \row
- \o \c{show <Widget>}
- \o Shows the dock widget specified by <Widget>. If the widget
- is already shown and this command is sent again, the widget will be
- activated, meaning that it will be raised and given the input focus.
- Possible values for <Widget> are "contents", "index", "bookmarks" or "search".
- \row
- \o \c{hide <Widget>}
- \o Hides the dock widget specified by <Widget>. Possible values for
- <Widget> are "contents", "index", "bookmarks" and "search".
- \row
- \o \c{setSource <Url>}
- \o Displays the given <Url>. The URL can be absolute or relative
- to the currently displayed page. If the URL is absolute, it has to
- be a valid Qt help system URL; i.e., starting with "qthelp://".
- \row
- \o \c{activateKeyword <Keyword>}
- \o Inserts the specified <Keyword> into the line edit of the
- index dock widget and activates the corresponding item in the
- index list. If such an item has more than one link associated
- with it, a topic chooser will be shown.
- \row
- \o \c{activateIdentifier <Id>}
- \o Displays the help contents for the given <Id>. An ID is unique
- in each namespace and has only one link associated to it, so the
- topic chooser will never pop up.
- \row
- \o \c{syncContents}
- \o Selects the item in the contents widget which corresponds to
- the currently displayed page.
- \row
- \o \c{setCurrentFilter}
- \o Selects the specified filter and updates the visual representation
- accordingly.
- \row
- \o \c{expandToc <Depth>}
- \o Expands the table of contents tree to the given depth. If depth
- is less than 1, the tree will be collapsed completely.
- \endtable
-
- If you want to send several commands within a short period of time, it is
- recommended that you write only a single line to the stdin of the process
- instead of one line for every command. The commands have to be separated by
- a semicolon, as shown in the following example:
-
- \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 4
-
- \section1 Compatibility with Old Formats
-
- In older versions of Qt, the help system was based on Document Content File
- (DCF) and Qt Assistant Documentation Profile (ADP) formats. In contrast,
- Qt Assistant and the help system used in Qt 4.4 use the formats described
- earlier in this manual.
-
- Unfortunately, the old file formats are not compatible with the new ones.
- In general, the differences are not that big \mdash in most cases is the old
- format is just a subset of the new one. One example is the \c namespace tag in
- the Qt Help Project format, which was not part of the old format, but plays a vital
- role in the new one. To help you to move to the new file format, we have created
- a conversion wizard.
-
- The wizard is started by executing \c qhelpconverter. It guides you through the
- conversion of different parts of the file and generates a new \c qch or \c qhcp
- file.
-
- Once the wizard is finished and the files created, run the \c qhelpgenerator
- or the \c qcollectiongenerator tool to generate the binary help files used by \QA.
-*/
-
-/*
-\section2 Modifying \QA with Command Line Options
-
- Different help collections can be shown by simply passing the help collection
- path to \QA. For example:
-
- \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 0
-
- Other available options the can be passed on the command line.
-
- \table
- \header
- \o Command Line Option
- \o Brief Description
- \row
- \o -collectionFile <file.qhc>
- \o Uses the specified collection file instead of the default one.
- \row
- \o -showUrl URL
- \o Shows the document referenced by URL.
- \row
- \o -enableRemoteControl
- \o Enables \QA to be remotly controlled.
- \row
- \o -show <widget>
- \o Shows the specified dockwidget which can be "contents", "index",
- "bookmarks" or "search".
- \row
- \o -hide <widget>
- \o Hides the specified dockwidget which can be "contents", "index",
- "bookmarks" or "search.
- \row
- \o -activate <widget>
- \o Activates the specified dockwidget which can be "contents",
- "index", "bookmarks" or "search.
- \row
- \o -register <doc.qch>
- \o Registers the specified compressed help file in the given help
- collection.
- \row
- \o -unregister <doc.qch>
- \o Unregisters the specified compressed help file from the given
- collection file.
- \row
- \o -quiet
- \o Doesn't show any error, warning or success messages.
- \endtable
- */
diff --git a/doc/src/atomic-operations.qdoc b/doc/src/atomic-operations.qdoc
deleted file mode 100644
index d0f5978de..000000000
--- a/doc/src/atomic-operations.qdoc
+++ /dev/null
@@ -1,89 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page atomic-operations.html
- \title Implementing Atomic Operations
- \ingroup architecture
- \ingroup qt-embedded-linux
- \brief A guide to implementing atomic operations on new architectures.
-
- Qt uses an optimization called \l {Implicitly Shared
- Classes}{implicit sharing} for many of its value classes.
-
- Starting with Qt 4, all of Qt's implicitly shared classes can
- safely be copied across threads like any other value classes,
- i.e., they are fully \l {Thread Support in Qt#Reentrancy and
- Thread-Safety}{reentrant}. This is accomplished by implementing
- reference counting operations using atomic hardware instructions
- on all the different platforms supported by Qt.
-
- To support a new architecture, it is important to ensure that
- these platform-specific atomic operations are implemented in a
- corresponding header file (\c qatomic_ARCH.h), and that this file
- is located in Qt's \c src/corelib/arch directory. For example, the
- Intel 80386 implementation is located in \c
- src/corelib/arch/qatomic_i386.h.
-
- Currently, Qt provides two classes providing several atomic
- operations, QAtomicInt and QAtomicPointer. These classes inherit
- from QBasicAtomicInt and QBasicAtomicPointer, respectively.
-
- When porting Qt to a new architecture, the QBasicAtomicInt and
- QBasicAtomicPointer classes must be implemented, \e not QAtomicInt
- and QAtomicPointer. The former classes do not have constructors,
- which makes them POD (plain-old-data). Both classes only have a
- single member variable called \c _q_value, which stores the
- value. This is the value that all of the atomic operations read
- and modify.
-
- All of the member functions mentioned in the QAtomicInt and
- QAtomicPointer API documentation must be implemented. Note that
- these the implementations of the atomic operations in these
- classes must be atomic with respect to both interrupts and
- multiple processors.
-
- \warning The QBasicAtomicInt and QBasicAtomicPointer classes
- mentioned in this document are used internally by Qt and are not
- part of the public API. They may change in future versions of
- Qt. The purpose of this document is to aid people interested in
- porting Qt to a new architecture.
-*/
diff --git a/doc/src/bughowto.qdoc b/doc/src/bughowto.qdoc
index b6520f3cd..e9ae9657c 100644
--- a/doc/src/bughowto.qdoc
+++ b/doc/src/bughowto.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -43,30 +43,37 @@
\page bughowto.html
\title How to Report a Bug
\brief Information about ways to report bugs in Qt.
- \ingroup howto
If you think you have found a bug in Qt, we would like to hear
about it so that we can fix it.
Before reporting a bug, please check the \l{FAQs}, \l{Platform
- Notes}, and the \l{Task Tracker} on the Qt website to see
+ Notes}, and the \l{Qt Bug Tracker} on the Qt website to see
if the issue is already known.
- If you have found a new bug, please submit a bug report using
- the \l{Bug Report Form}. Always include the following information
- in your bug report:
+ The first thing you should do is to sign up for an account for
+ the \l{Qt Bug Tracker}, if you do not already have one. Once you
+ have done that you can submit and track your bug reports and they
+ will be publicly available from the moment you submit them.
+
+ Always include the following information in your bug report:
\list 1
\o The name and version number of your compiler
\o The name and version number of your operating system
\o The version of Qt you are using, and what configure options it was
- compiled with.
+ compiled with
+ \o Reliable and clear description on how to reproduce the problem
\endlist
+
+ If possible, please provide a test written using the QtTest module
+ as this will improve the procedure of reproducing your problem and
+ allow the developers to address the issue in a more efficient way.
- If the problem you are reporting is only visible at run-time, try to
- create a small test program that shows the problem when run. Often,
- such a program can be created with some minor changes to one
- of the many example programs in Qt's \c examples directory.
+ Otherwise, if the problem you are reporting is only visible at run-time,
+ try to create a small test program that shows the problem when run.
+ Often, such a program can be created with some minor changes to one of
+ the many example programs in Qt's examples directory.
If you have implemented a bug fix and want to contribute your fix
directly, then you can do so through the \l{Public Qt Repository}.
diff --git a/doc/src/classes.qdoc b/doc/src/classes.qdoc
index d9a0ae942..575000469 100644
--- a/doc/src/classes.qdoc
+++ b/doc/src/classes.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,134 +21,153 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
/*!
- \group groups
- \title Grouped Classes
- \ingroup classlists
+ \group classlists
+ \title Class and Function Documentation
+ \brief Lists and Indexes of classes, functions, and types.
- This page provides a way of navigating Qt's classes by grouping
- related classes together. Some classes may appear in more than one group.
+ Links to indexes and lists for finding class and function
+ reference documentation.
- \generatelist{related}
+ \section2 Class Lists
+
+ \annotatedlist classlists
+
+ \section2 Function Lists
+
+ \annotatedlist funclists
*/
/*!
\page classes.html
- \title Qt's Classes
+ \title All Qt Classes (main index)
\ingroup classlists
- This is a list of all Qt classes. For a shorter list of the most
- frequently used Qt classes, see \l{Qt's Main Classes}. For a list
- of the classes provided for compatibility with Qt3, see \l{Qt 3
- compatibility classes}. For classes that have been deprecated, see
- the \l{Obsolete Classes} list.
+ \brief If you know the name of the class you want, find it here.
+
+ This is a list of all Qt classes. For a list of the classes
+ provided for compatibility with Qt3, see \l{Qt3 Support
+ Classes}. For classes that have been deprecated, see the
+ \l{Obsolete Classes} list.
\generatelist classes
- \sa {Qt 3 Compatibility Classes}, {Qt's Modules}, {Obsolete Classes}
+ \sa {Qt3 Support Classes}, {All Qt Modules}, {Obsolete Classes}
*/
/*!
- \page namespaces.html
- \title Qt's Namespaces
+ \page annotated.html
+ \title Annotated Class List
\ingroup classlists
- This is a list of the main namespaces in Qt. For a list of classes in
- Qt, see \l{Qt's Classes}.
+ \brief If you don't know the name of the class you want, but you
+ know what the class should do, you might try looking here.
- \generatelist{namespaces}
+ Qt classes with brief descriptions:
+
+ \generatelist annotatedclasses
*/
/*!
- \page obsoleteclasses.html
- \title Obsolete Classes
+ \group groups
+ \title Groups Of Related Classes
\ingroup classlists
+ \brief If you know what kind of class you want (GUI, painting,
+ I.O, etc), look here.
- This is a list of Qt classes that are obsolete (deprecated). These
- classes are provided to keep old source code working but they are
- no longer maintained. We strongly advise against using these
- classes in new code.
+ This is a list of functional groups of Qt classes. A class can
+ appear in more than one functional group.
- \generatelist obsoleteclasses
+ \generatelist{related}
- \sa {Qt's Classes}, {Qt's Modules}
*/
/*!
- \page annotated.html
- \title Annotated Class Index
+ \page hierarchy.html
+
+ \title Inheritance Hierarchy
\ingroup classlists
- Qt's classes with brief descriptions:
+ \brief The C++ class inheritance hierarchy for all classes in the
+ Qt API.
- \generatelist annotatedclasses
+ \generatelist classhierarchy
*/
/*!
- \page functions.html
- \title Member Function Index
+ \page obsoleteclasses.html
+ \title Obsolete Classes
\ingroup classlists
+
+ \brief These classes are obsolete and should not be used in new code.
- Here is the list of all the documented member functions in the Qt
- API with links to the class documentation for each function.
+ This is a list of Qt classes that are obsolete (deprecated). These
+ classes are provided to keep old source code working but they are
+ no longer maintained. We strongly advise against using these
+ classes in new code.
+
+ \generatelist obsoleteclasses
- \generatelist functionindex
*/
/*!
- \page hierarchy.html
-
- \title Class Inheritance Hierarchy
+ \page compatclasses.html
+ \title Qt3 Support Classes
\ingroup classlists
- This list shows the C++ class inheritance relations between the
- classes in the Qt API.
+ \brief These classes ease the porting of code from Qt 3 to Qt 4.
+
+ These are the classes that Qt provides for compatibility with Qt
+ 3. Most of these are provided by the Qt3Support module.
+
+ \generatelist compatclasses
- \generatelist classhierarchy
*/
/*!
- \page mainclasses.html
- \title Qt's Main Classes
- \ingroup classlists
+ \page functions.html
+ \title All Functions (main index)
+ \ingroup funclists
- These are the most frequently used Qt classes. For the complete
- list see \link classes.html Qt's Classes \endlink.
+ \brief All documented Qt functions listed alphabetically with a
+ link to where each one is declared.
- \generatelist mainclasses
+ This is the list of all documented member functions and global
+ functions in the Qt API. Each function has a link to the class or
+ header file where it is declared and documented.
+
+ \generatelist functionindex
*/
+
/*!
- \page compatclasses.html
- \title Qt 3 Compatibility Classes
+ \page namespaces.html
+ \title All Qt Namespaces
\ingroup classlists
- This is a list of the classes that Qt provides for compatibility
- with Qt 3. The vast majority of these are provided by the
- Qt3Support module.
+ \brief A Qt namespace contains enum types, functions, and sometimes classes.
- \generatelist compatclasses
+ This is a list of the main namespaces in Qt.
- \sa {Qt's Classes}, {Qt's Modules}
+ \generatelist{namespaces}
*/
diff --git a/doc/src/classes/exportedfunctions.qdoc b/doc/src/classes/exportedfunctions.qdoc
new file mode 100644
index 000000000..6675f2489
--- /dev/null
+++ b/doc/src/classes/exportedfunctions.qdoc
@@ -0,0 +1,141 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 exportedfunctions.html
+ \title Platform-Specific Functions
+ \ingroup funclists
+
+ \brief Exported functions for fine tuning Qt applications.
+
+ Qt provides a few low-level global functions for fine-tuning
+ applications. Most of these perform very specific tasks and are
+ platform-specific. In general, we recommend that you try using
+ Qt's public API before resorting to using any functions mentioned
+ here.
+
+ These functions are exported by \l QtCore and \l QtGui, but most
+ of them aren't declared in Qt's header files. To use them in your
+ application, you must declare them before calling them. For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_exportedfunctions.qdoc 0
+
+ These functions will remain as part of Qt for the lifetime of Qt
+ 4.
+
+ Functions:
+
+ \tableofcontents
+
+ \section1 void qt_set_library_config_file(const QString &\e{fileName})
+
+ Specifies the location of the Qt configuration file. You must
+ call this function before constructing a QApplication or
+ QCoreApplication object. If no location is specified, Qt
+ automatically finds an appropriate location.
+
+ \section1 void qt_set_sequence_auto_mnemonic(bool \e{enable})
+
+ Specifies whether mnemonics for menu items, labels, etc., should
+ be honored or not. On Windows and X11, this feature is
+ on by default; on Mac OS X, it is off. When this feature is off,
+ the QKeySequence::mnemonic() function always returns an empty
+ string. This feature is also enabled on embedded Linux.
+
+ \section1 void qt_x11_wait_for_window_manager(QWidget *\e{widget})
+
+ Blocks until the X11 window manager has shown the widget after a
+ call to QWidget::show().
+
+ \section1 void qt_mac_secure_keyboard(bool \e{enable})
+
+ Turns the Mac OS X secure keyboard feature on or off. QLineEdit
+ uses this when the echo mode is QLineEdit::Password or
+ QLineEdit::NoEcho to guard the editor against keyboard sniffing.
+ If you implement your own password editor, you might want to turn
+ on this feature in your editor's
+ \l{QWidget::focusInEvent()}{focusInEvent()} and turn it off in
+ \l{QWidget::focusOutEvent()}{focusOutEvent()}.
+
+ \section1 void qt_mac_set_dock_menu(QMenu *\e{menu})
+
+ Sets the menu to display in the Mac OS X Dock for the
+ application. This menu is shown when the user attempts a
+ press-and-hold operation on the application's dock icon or
+ \key{Ctrl}-clicks on it while the application is running.
+
+ The menu will be turned into a Mac menu and the items added to the default
+ Dock menu. There is no merging of the Qt menu items with the items that are
+ in the Dock menu (i.e., it is not recommended to include actions that
+ duplicate functionality of items already in the Dock menu).
+
+ \section1 void qt_mac_set_menubar_icons(bool \e{enable})
+
+ Specifies whether icons associated to menu items for the
+ application's menu bar should be shown on Mac OS X. By default,
+ icons are shown on Mac OS X just like on the other platforms.
+
+ In Qt 4.4, this is equivalent to
+ \c { QApplication::instance()->setAttribute(Qt::AA_DontShowIconsInMenus); }.
+
+ \section1 void qt_mac_set_menubar_merge(bool \e{enable})
+
+ Specifies whether Qt should attempt to relocate standard menu
+ items (such as \gui Quit, \gui Preferences, and \gui About) to
+ the application menu on Mac OS X. This feature is on by default.
+ See \l{Qt for Mac OS X - Specific Issues} for the list of menu items for
+ which this applies.
+
+ \section1 void qt_mac_set_native_menubar(bool \e{enable})
+
+ Specifies whether the application should use the native menu bar
+ on Mac OS X or be part of the main window. This feature is on by
+ default.
+
+ In Qt 4.6, this is equivalent to
+ \c { QApplication::instance()->setAttribute(Qt::AA_DontUseNativeMenuBar); }.
+
+ \section1 void qt_mac_set_press_and_hold_context(bool \e{enable})
+
+ Turns emulation of the right mouse button by clicking and holding
+ the left mouse button on or off. This feature is off by default.
+*/
diff --git a/doc/src/classes/phonon-namespace.qdoc b/doc/src/classes/phonon-namespace.qdoc
new file mode 100644
index 000000000..ace3a226e
--- /dev/null
+++ b/doc/src/classes/phonon-namespace.qdoc
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \namespace Phonon
+ \brief The Phonon namespace contains classes and functions for multimedia applications.
+ \since 4.4
+
+ This namespace contains classes to access multimedia functions for
+ audio and video playback. Those classes are not dependent on any specific
+ framework, but rather use exchangeable backends to do the work.
+
+ See the \l{Phonon Module} page for general information about the
+ framework and the \l{Phonon Overview} for an introductory tour of its
+ features.
+*/
diff --git a/doc/src/classes/q3asciicache.qdoc b/doc/src/classes/q3asciicache.qdoc
deleted file mode 100644
index b86113f09..000000000
--- a/doc/src/classes/q3asciicache.qdoc
+++ /dev/null
@@ -1,465 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class Q3AsciiCache
- \brief The Q3AsciiCache class is a template class that provides a cache based on char* keys.
- \compat
-
- Q3AsciiCache is implemented as a template class. Define a template
- instance Q3AsciiCache\<X\> to create a cache that operates on
- pointers to X (X*).
-
- A cache is a least recently used (LRU) list of cache items. The
- cache items are accessed via \c char* keys. For Unicode keys use
- the Q3Cache template instead, which uses QString keys. A Q3Cache
- has the same performace as a Q3AsciiCache.
-
- Each cache item has a cost. The sum of item costs, totalCost(),
- will not exceed the maximum cache cost, maxCost(). If inserting a
- new item would cause the total cost to exceed the maximum cost,
- the least recently used items in the cache are removed.
-
- Apart from insert(), by far the most important function is find()
- (which also exists as operator[]()). This function looks up an
- item, returns it, and by default marks it as being the most
- recently used item.
-
- There are also methods to remove() or take() an object from the
- cache. Calling \link Q3PtrCollection::setAutoDelete()
- setAutoDelete(TRUE)\endlink tells the cache to delete items that
- are removed. The default is to not delete items when then are
- removed (i.e., remove() and take() are equivalent).
-
- When inserting an item into the cache, only the pointer is copied,
- not the item itself. This is called a shallow copy. It is possible
- to make the cache copy all of the item's data (known as a deep
- copy) when an item is inserted. insert() calls the virtual
- function Q3PtrCollection::newItem() for the item to be inserted.
- Inherit a cache and reimplement newItem() if you want deep copies.
-
- When removing a cache item the virtual function
- Q3PtrCollection::deleteItem() is called. Its default implementation
- in Q3AsciiCache is to delete the item if \link
- Q3PtrCollection::setAutoDelete() auto-deletion\endlink is enabled.
-
- There is a Q3AsciiCacheIterator which may be used to traverse the
- items in the cache in arbitrary order.
-
- \sa Q3AsciiCacheIterator, Q3Cache, Q3IntCache
-*/
-
-/*!
- \fn Q3AsciiCache::Q3AsciiCache( const Q3AsciiCache<type> &c )
-
- \internal
-
- Do not use. A Q3AsciiCache cannot be copied. Calls qFatal() in debug version.
-*/
-
-
-/*!
- \fn Q3AsciiCache::Q3AsciiCache( int maxCost, int size, bool caseSensitive, bool copyKeys )
-
- Constructs a cache whose contents will never have a total cost
- greater than \a maxCost and which is expected to contain less than
- \a size items.
-
- \a size is actually the size of an internal hash array; it's
- usually best to make it prime and at least 50% bigger than the
- largest expected number of items in the cache.
-
- Each inserted item has an associated cost. When inserting a new
- item, if the total cost of all items in the cache will exceed \a
- maxCost, the cache will start throwing out the older (least
- recently used) items until there is enough room for the new item
- to be inserted.
-
- If \a caseSensitive is TRUE (the default), the cache keys are case
- sensitive; if it is FALSE, they are case-insensitive.
- Case-insensitive comparison only affects the 26 letters in
- US-ASCII. If \a copyKeys is TRUE (the default), Q3AsciiCache makes
- a copy of the cache keys, otherwise it copies just the const char
- * pointer - slightly faster if you can guarantee that the keys
- will never change, but very risky.
-*/
-
-/*!
- \fn Q3AsciiCache::~Q3AsciiCache()
-
- Removes all items from the cache and destroys it.
- All iterators that access this cache will be reset.
-*/
-
-/*!
- \fn Q3AsciiCache<type>& Q3AsciiCache::operator=( const Q3AsciiCache<type> &c )
-
- \internal
-
- Do not use. A Q3AsciiCache cannot be copied. Calls qFatal() in debug version.
-*/
-
-/*!
- \fn int Q3AsciiCache::maxCost() const
-
- Returns the maximum allowed total cost of the cache.
-
- \sa setMaxCost() totalCost()
-*/
-
-/*!
- \fn int Q3AsciiCache::totalCost() const
-
- Returns the total cost of the items in the cache. This is an
- integer in the range 0 to maxCost().
-
- \sa setMaxCost()
-*/
-
-/*!
- \fn void Q3AsciiCache::setMaxCost( int m )
-
- Sets the maximum allowed total cost of the cache to \a m. If the
- current total cost is greater than \a m, some items are removed
- immediately.
-
- \sa maxCost() totalCost()
-*/
-
-/*!
- \fn uint Q3AsciiCache::count() const
-
- Returns the number of items in the cache.
-
- \sa totalCost() size()
-*/
-
-/*!
- \fn uint Q3AsciiCache::size() const
-
- Returns the size of the hash array used to implement the cache.
- This should be a bit bigger than count() is likely to be.
-*/
-
-/*!
- \fn bool Q3AsciiCache::isEmpty() const
-
- Returns TRUE if the cache is empty; otherwise returns FALSE.
-*/
-
-/*!
- \fn bool Q3AsciiCache::insert( const char *k, const type *d, int c, int p )
-
- Inserts the item \a d into the cache using key \a k, and with an
- associated cost of \a c. Returns TRUE if the item is successfully
- inserted. Returns FALSE if the item is not inserted, for example,
- if the cost of the item exceeds maxCost().
-
- The cache's size is limited, and if the total cost is too high,
- Q3AsciiCache will remove old, least recently used items until there
- is room for this new item.
-
- Items with duplicate keys can be inserted.
-
- The parameter \a p is internal and should be left at the default
- value (0).
-
- \warning If this function returns FALSE, you must delete \a d
- yourself. Additionally, be very careful about using \a d after
- calling this function, because any other insertions into the
- cache, from anywhere in the application or within Qt itself, could
- cause the object to be discarded from the cache and the pointer to
- become invalid.
-*/
-
-/*!
- \fn bool Q3AsciiCache::remove( const char *k )
-
- Removes the item with key \a k and returns TRUE if the item was
- present in the cache; otherwise returns FALSE.
-
- The item is deleted if auto-deletion has been enabled, i.e., if
- you have called \link Q3PtrCollection::setAutoDelete()
- setAutoDelete(TRUE)\endlink.
-
- If there are two or more items with equal keys, the one that was
- inserted last is removed.
-
- All iterators that refer to the removed item are set to point to
- the next item in the cache's traversal order.
-
- \sa take(), clear()
-*/
-
-/*!
- \fn type *Q3AsciiCache::take( const char *k )
-
- Takes the item associated with \a k out of the cache without
- deleting it and returns a pointer to the item taken out, or 0
- if the key does not exist in the cache.
-
- If there are two or more items with equal keys, the one that was
- inserted last is taken.
-
- All iterators that refer to the taken item are set to point to the
- next item in the cache's traversal order.
-
- \sa remove(), clear()
-*/
-
-/*!
- \fn void Q3AsciiCache::clear()
-
- Removes all items from the cache, and deletes them if \link
- Q3PtrCollection::setAutoDelete() auto-deletion\endlink has been
- enabled.
-
- All cache iterators that operate on this cache are reset.
-
- \sa remove() take()
-*/
-
-/*!
- \fn type *Q3AsciiCache::find( const char *k, bool ref ) const
-
- Returns the item with key \a k, or 0 if the key does not exist
- in the cache. If \a ref is TRUE (the default), the item is moved
- to the front of the least recently used list.
-
- If there are two or more items with equal keys, the one that was
- inserted last is returned.
-*/
-
-/*!
- \fn type *Q3AsciiCache::operator[]( const char *k ) const
-
- Returns the item with key \a k, or 0 if \a k does not exist in
- the cache, and moves the item to the front of the least recently
- used list.
-
- If there are two or more items with equal keys, the one that was
- inserted last is returned.
-
- This is the same as find( k, TRUE ).
-
- \sa find()
-*/
-
-/*!
- \fn void Q3AsciiCache::statistics() const
-
- A debug-only utility function. Prints out cache usage, hit/miss,
- and distribution information using qDebug(). This function does
- nothing in the release library.
-*/
-
-/*!
- \class Q3AsciiCacheIterator
- \brief The Q3AsciiCacheIterator class provides an iterator for Q3AsciiCache collections.
- \compat
-
- Note that the traversal order is arbitrary; you are not guaranteed
- any particular order. If new objects are inserted into the cache
- while the iterator is active, the iterator may or may not see
- them.
-
- Multiple iterators are completely independent, even when they
- operate on the same Q3AsciiCache. Q3AsciiCache updates all iterators
- that refer an item when that item is removed.
-
- Q3AsciiCacheIterator provides an operator++() and an operator+=()
- to traverse the cache; current() and currentKey() to access the
- current cache item and its key. It also provides atFirst() and
- atLast(), which return TRUE if the iterator points to the first or
- last item in the cache respectively. The isEmpty() function
- returns TRUE if the cache is empty; and count() returns the number
- of items in the cache.
-
- Note that atFirst() and atLast() refer to the iterator's arbitrary
- ordering, not to the cache's internal least recently used list.
-
- \sa Q3AsciiCache
-*/
-
-/*!
- \fn Q3AsciiCacheIterator::Q3AsciiCacheIterator( const Q3AsciiCache<type> &cache )
-
- Constructs an iterator for \a cache. The current iterator item is
- set to point to the first item in the \a cache.
-*/
-
-/*!
- \fn Q3AsciiCacheIterator::Q3AsciiCacheIterator (const Q3AsciiCacheIterator<type> & ci)
-
- Constructs an iterator for the same cache as \a ci. The new
- iterator starts at the same item as ci.current() but moves
- independently from there on.
-*/
-
-/*!
- \fn Q3AsciiCacheIterator<type>& Q3AsciiCacheIterator::operator=( const Q3AsciiCacheIterator<type> &ci )
-
- Makes this an iterator for the same cache as \a ci. The new
- iterator starts at the same item as ci.current(), but moves
- independently thereafter.
-*/
-
-/*!
- \fn uint Q3AsciiCacheIterator::count() const
-
- Returns the number of items in the cache over which this iterator
- operates.
-
- \sa isEmpty()
-*/
-
-/*!
- \fn bool Q3AsciiCacheIterator::isEmpty() const
-
- Returns TRUE if the cache is empty, i.e. count() == 0; otherwise
- returns FALSE.
-
- \sa count()
-*/
-
-/*!
- \fn bool Q3AsciiCacheIterator::atFirst() const
-
- Returns TRUE if the iterator points to the first item in the
- cache; otherwise returns FALSE. Note that this refers to the
- iterator's arbitrary ordering, not to the cache's internal least
- recently used list.
-
- \sa toFirst(), atLast()
-*/
-
-/*!
- \fn bool Q3AsciiCacheIterator::atLast() const
-
- Returns TRUE if the iterator points to the last item in the cache;
- otherwise returns FALSE. Note that this refers to the iterator's
- arbitrary ordering, not to the cache's internal least recently
- used list.
-
- \sa toLast(), atFirst()
-*/
-
-/*!
- \fn type *Q3AsciiCacheIterator::toFirst()
-
- Sets the iterator to point to the first item in the cache and
- returns a pointer to the item.
-
- Sets the iterator to 0 and returns 0 if the cache is empty.
-
- \sa toLast() isEmpty()
-*/
-
-/*!
- \fn type *Q3AsciiCacheIterator::toLast()
-
- Sets the iterator to point to the last item in the cache and
- returns a pointer to the item.
-
- Sets the iterator to 0 and returns 0 if the cache is empty.
-
- \sa toFirst() isEmpty()
-*/
-
-/*!
- \fn Q3AsciiCacheIterator::operator type *() const
-
- Cast operator. Returns a pointer to the current iterator item.
- Same as current().
-*/
-
-/*!
- \fn type *Q3AsciiCacheIterator::current() const
-
- Returns a pointer to the current iterator item.
-*/
-
-/*!
- \fn const char *Q3AsciiCacheIterator::currentKey() const
-
- Returns the key for the current iterator item.
-*/
-
-/*!
- \fn type *Q3AsciiCacheIterator::operator()()
-
- Makes the succeeding item current and returns the original current
- item.
-
- If the current iterator item was the last item in the cache or if
- it was 0, 0 is returned.
-*/
-
-/*!
- \fn type *Q3AsciiCacheIterator::operator+=( uint jump )
-
- Returns the item \a jump positions after the current item, or 0
- if it is beyond the last item. Makes this the current item.
-*/
-
-/*!
- \fn type *Q3AsciiCacheIterator::operator-=( uint jump )
-
- Returns the item \a jump positions before the current item, or 0
- if it is before the first item. Makes this the current item.
-*/
-
-/*!
- \fn type *Q3AsciiCacheIterator::operator++()
-
- Prefix ++ makes the iterator point to the item just after
- current(), and makes that the new current item for the iterator. If
- current() was the last item, operator++() returns 0.
-*/
-
-/*!
- \fn type *Q3AsciiCacheIterator::operator--()
-
- Prefix -- makes the iterator point to the item just before
- current(), and makes that the new current item for the iterator. If
- current() was the first item, operator--() returns 0.
-*/
-
diff --git a/doc/src/classes/q3asciidict.qdoc b/doc/src/classes/q3asciidict.qdoc
deleted file mode 100644
index 1262a37af..000000000
--- a/doc/src/classes/q3asciidict.qdoc
+++ /dev/null
@@ -1,416 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class Q3AsciiDict
- \brief The Q3AsciiDict class is a template class that provides a dictionary based on char* keys.
- \compat
-
- Q3AsciiDict is implemented as a template class. Define a template
- instance Q3AsciiDict\<X\> to create a dictionary that operates on
- pointers to X (X*).
-
- A dictionary is a collection of key-value pairs. The key is a
- char* used for insertion, removal and lookup. The value is a
- pointer. Dictionaries provide very fast insertion and lookup.
-
- Q3AsciiDict cannot handle Unicode keys; use the Q3Dict template
- instead, which uses QString keys. A Q3Dict has the same
- performace as a Q3AsciiDict.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_q3asciidict.qdoc 0
- In this example we use a dictionary to keep track of the line
- edits we're using. We insert each line edit into the dictionary
- with a unique name and then access the line edits via the
- dictionary. See Q3PtrDict, Q3IntDict and Q3Dict.
-
- See Q3Dict for full details, including the choice of dictionary
- size, and how deletions are handled.
-
- \sa Q3AsciiDictIterator, Q3Dict, Q3IntDict, Q3PtrDict
-*/
-
-
-/*!
- \fn Q3AsciiDict::Q3AsciiDict( int size, bool caseSensitive, bool copyKeys )
-
- Constructs a dictionary optimized for less than \a size entries.
-
- We recommend setting \a size to a suitably large prime number (a
- bit larger than the expected number of entries). This makes the
- hash distribution better and will improve lookup performance.
-
- When \a caseSensitive is TRUE (the default) Q3AsciiDict treats
- "abc" and "Abc" as different keys; when it is FALSE "abc" and
- "Abc" are the same. Case-insensitive comparison only considers the
- 26 letters in US-ASCII.
-
- If \a copyKeys is TRUE (the default), the dictionary copies keys
- using strcpy(); if it is FALSE, the dictionary just copies the
- pointers.
-*/
-
-/*!
- \fn Q3AsciiDict::Q3AsciiDict( const Q3AsciiDict<type> &dict )
-
- Constructs a copy of \a dict.
-
- Each item in \a dict is inserted into this dictionary. Only the
- pointers are copied (shallow copy).
-*/
-
-/*!
- \fn Q3AsciiDict::~Q3AsciiDict()
-
- Removes all items from the dictionary and destroys it.
-
- The items are deleted if auto-delete is enabled.
-
- All iterators that access this dictionary will be reset.
-
- \sa setAutoDelete()
-*/
-
-/*!
- \fn Q3AsciiDict<type> &Q3AsciiDict::operator=(const Q3AsciiDict<type> &dict)
-
- Assigns \a dict to this dictionary and returns a reference to this
- dictionary.
-
- This dictionary is first cleared and then each item in \a dict is
- inserted into this dictionary. Only the pointers are copied
- (shallow copy) unless newItem() has been reimplemented().
-*/
-
-/*!
- \fn uint Q3AsciiDict::count() const
-
- Returns the number of items in the dictionary.
-
- \sa isEmpty()
-*/
-
-/*!
- \fn uint Q3AsciiDict::size() const
-
- Returns the size of the internal hash array (as specified in the
- constructor).
-
- \sa count()
-*/
-
-/*!
- \fn void Q3AsciiDict::resize( uint newsize )
-
- Changes the size of the hashtable to \a newsize. The contents of
- the dictionary are preserved but all iterators on the dictionary
- become invalid.
-*/
-
-/*!
- \fn bool Q3AsciiDict::isEmpty() const
-
- Returns TRUE if the dictionary is empty, i.e. count() == 0;
- otherwise it returns FALSE.
-
- \sa count()
-*/
-
-/*!
- \fn void Q3AsciiDict::insert( const char *key, const type *item )
-
- Inserts the \a key with the \a item into the dictionary.
-
- Multiple items can have the same key, in which case only the last
- item will be accessible using \l operator[]().
-
- \a item may not be 0.
-
- \sa replace()
-*/
-
-/*!
- \fn void Q3AsciiDict::replace( const char *key, const type *item )
-
- Replaces an item that has a key equal to \a key with \a item.
-
- If the item does not already exist, it will be inserted.
-
- \a item may not be 0.
-
- Equivalent to:
- \snippet doc/src/snippets/code/doc_src_q3asciidict.qdoc 1
-
- If there are two or more items with equal keys, then the most
- recently inserted item will be replaced.
-
- \sa insert()
-*/
-
-/*!
- \fn bool Q3AsciiDict::remove( const char *key )
-
- Removes the item associated with \a key from the dictionary.
- Returns TRUE if successful, i.e. if the key existed in the
- dictionary; otherwise returns FALSE.
-
- If there are two or more items with equal keys, then the most
- recently inserted item will be removed.
-
- The removed item is deleted if \link
- Q3PtrCollection::setAutoDelete() auto-deletion\endlink is enabled.
-
- All dictionary iterators that refer to the removed item will be
- set to point to the next item in the dictionary traversal order.
-
- \sa take(), clear(), setAutoDelete()
-*/
-
-/*!
- \fn type *Q3AsciiDict::take( const char *key )
-
- Takes the item associated with \a key out of the dictionary
- without deleting it (even if \link Q3PtrCollection::setAutoDelete()
- auto-deletion\endlink is enabled).
-
- If there are two or more items with equal keys, then the most
- recently inserted item will be taken.
-
- Returns a pointer to the item taken out, or 0 if the key does not
- exist in the dictionary.
-
- All dictionary iterators that refer to the taken item will be set
- to point to the next item in the dictionary traversal order.
-
- \sa remove(), clear(), setAutoDelete()
-*/
-
-/*!
- \fn void Q3AsciiDict::clear()
-
- Removes all items from the dictionary.
-
- The removed items are deleted if \link
- Q3PtrCollection::setAutoDelete() auto-deletion\endlink is enabled.
-
- All dictionary iterators that operate on dictionary are reset.
-
- \sa remove(), take(), setAutoDelete()
-*/
-
-/*!
- \fn type *Q3AsciiDict::find( const char *key ) const
-
- Returns the item associated with \a key, or 0 if the key does not
- exist in the dictionary.
-
- This function uses an internal hashing algorithm to optimize
- lookup.
-
- If there are two or more items with equal keys, then the item that
- was most recently inserted will be found.
-
- Equivalent to the [] operator.
-
- \sa operator[]()
-*/
-
-/*!
- \fn type *Q3AsciiDict::operator[]( const char *key ) const
-
- Returns the item associated with \a key, or 0 if the key does
- not exist in the dictionary.
-
- This function uses an internal hashing algorithm to optimize
- lookup.
-
- If there are two or more items with equal keys, then the item that
- was most recently inserted will be found.
-
- Equivalent to the find() function.
-
- \sa find()
-*/
-
-/*!
- \fn void Q3AsciiDict::statistics() const
-
- Debugging-only function that prints out the dictionary
- distribution using qDebug().
-*/
-
-/*!
- \fn QDataStream& Q3AsciiDict::read( QDataStream &s,
- Q3PtrCollection::Item &item )
-
- Reads a dictionary item from the stream \a s and returns a
- reference to the stream.
-
- The default implementation sets \a item to 0.
-
- \sa write()
-*/
-
-/*!
- \fn QDataStream& Q3AsciiDict::write(QDataStream &s, Q3PtrCollection::Item item) const
-
- Writes a dictionary \a item to the stream \a s and returns a
- reference to the stream.
-
- \sa read()
-*/
-
-/*!
- \class Q3AsciiDictIterator
- \brief The Q3AsciiDictIterator class provides an iterator for Q3AsciiDict collections.
- \compat
-
- Q3AsciiDictIterator is implemented as a template class. Define a
- template instance Q3AsciiDictIterator\<X\> to create a dictionary
- iterator that operates on Q3AsciiDict\<X\> (dictionary of X*).
-
- Example:
- \snippet doc/src/snippets/code/doc_src_q3asciidict.qdoc 2
- In the example we insert some line edits into a dictionary, then
- iterate over the dictionary printing the strings associated with
- those line edits.
-
- Note that the traversal order is arbitrary; you are not guaranteed
- any particular order.
-
- Multiple iterators may independently traverse the same dictionary.
- A Q3AsciiDict knows about all the iterators that are operating on
- the dictionary. When an item is removed from the dictionary,
- Q3AsciiDict updates all the iterators that are referring to the
- removed item to point to the next item in the (arbitrary)
- traversal order.
-
- \sa Q3AsciiDict
-*/
-
-/*!
- \fn Q3AsciiDictIterator::Q3AsciiDictIterator( const Q3AsciiDict<type> &dict )
-
- Constructs an iterator for \a dict. The current iterator item is
- set to point on the first item in the \a dict.
-*/
-
-/*!
- \fn Q3AsciiDictIterator::~Q3AsciiDictIterator()
-
- Destroys the iterator.
-*/
-
-/*!
- \fn uint Q3AsciiDictIterator::count() const
-
- Returns the number of items in the dictionary this iterator
- operates over.
-
- \sa isEmpty()
-*/
-
-/*!
- \fn bool Q3AsciiDictIterator::isEmpty() const
-
- Returns TRUE if the dictionary is empty, i.e. count() == 0,
- otherwise returns FALSE.
-
- \sa count()
-*/
-
-/*!
- \fn type *Q3AsciiDictIterator::toFirst()
-
- Sets the current iterator item to point to the first item in the
- dictionary and returns a pointer to the item. If the dictionary is
- empty it sets the current item to 0 and returns 0.
-*/
-
-/*!
- \fn Q3AsciiDictIterator::operator type *() const
-
- Cast operator. Returns a pointer to the current iterator item.
- Same as current().
-*/
-
-/*!
- \fn type *Q3AsciiDictIterator::current() const
-
- Returns a pointer to the current iterator item.
-*/
-
-/*!
- \fn const char *Q3AsciiDictIterator::currentKey() const
-
- Returns a pointer to the key for the current iterator item.
-*/
-
-/*!
- \fn type *Q3AsciiDictIterator::operator()()
-
- Makes the succeeding item current and returns the original current
- item.
-
- If the current iterator item was the last item in the dictionary
- or if it was 0, 0 is returned.
-*/
-
-/*!
- \fn type *Q3AsciiDictIterator::operator++()
-
- Prefix ++ makes the succeeding item current and returns the new
- current item.
-
- If the current iterator item was the last item in the dictionary
- or if it was 0, 0 is returned.
-*/
-
-/*!
- \fn type *Q3AsciiDictIterator::operator+=( uint jump )
-
- Sets the current item to the item \a jump positions after the
- current item, and returns a pointer to that item.
-
- If that item is beyond the last item or if the dictionary is
- empty, it sets the current item to 0 and returns 0.
-*/
diff --git a/doc/src/classes/q3cache.qdoc b/doc/src/classes/q3cache.qdoc
deleted file mode 100644
index 20b777fde..000000000
--- a/doc/src/classes/q3cache.qdoc
+++ /dev/null
@@ -1,461 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class Q3Cache
- \brief The Q3Cache class is a template class that provides a cache based on QString keys.
- \compat
-
- A cache is a least recently used (LRU) list of cache items. Each
- cache item has a key and a certain cost. The sum of item costs,
- totalCost(), never exceeds the maximum cache cost, maxCost(). If
- inserting a new item would cause the total cost to exceed the
- maximum cost, the least recently used items in the cache are
- removed.
-
- Q3Cache is a template class. Q3Cache\<X\> defines a cache that
- operates on pointers to X, or X*.
-
- Apart from insert(), by far the most important function is find()
- (which also exists as operator[]()). This function looks up an
- item, returns it, and by default marks it as being the most
- recently used item.
-
- There are also methods to remove() or take() an object from the
- cache. Calling setAutoDelete(TRUE) for a cache tells it to delete
- items that are removed. The default is to not delete items when
- they are removed (i.e., remove() and take() are equivalent).
-
- When inserting an item into the cache, only the pointer is copied,
- not the item itself. This is called a shallow copy. It is possible
- to make the cache copy all of the item's data (known as a deep
- copy) when an item is inserted. insert() calls the virtual
- function Q3PtrCollection::newItem() for the item to be inserted.
- Inherit a cache and reimplement newItem() if you want deep copies.
-
- When removing a cache item, the virtual function
- Q3PtrCollection::deleteItem() is called. The default
- implementation deletes the item if auto-deletion is enabled, and
- does nothing otherwise.
-
- There is a Q3CacheIterator that can be used to traverse the items
- in the cache in arbitrary order.
-
- In Q3Cache, the cache items are accessed via QString keys, which
- are Unicode strings. If you want to use non-Unicode, plain 8-bit
- \c char* keys, use the Q3AsciiCache template. A Q3Cache has the
- same performance as a Q3AsciiCache.
-
- \sa Q3CacheIterator, Q3AsciiCache, Q3IntCache
-*/
-
-/*!
- \fn Q3Cache::Q3Cache( const Q3Cache<type> &c )
-
- \internal
-
- Do not use. A Q3Cache cannot be copied. Calls qFatal() in debug version.
-*/
-
-
-/*!
- \fn Q3Cache::Q3Cache( int maxCost, int size, bool caseSensitive )
-
- Constructs a cache whose contents will never have a total cost
- greater than \a maxCost and which is expected to contain less than
- \a size items.
-
- \a size is actually the size of an internal hash array; it's
- usually best to make it a prime number and at least 50% bigger
- than the largest expected number of items in the cache.
-
- Each inserted item has an associated cost. When inserting a new
- item, if the total cost of all items in the cache will exceed \a
- maxCost, the cache will start throwing out the older (least
- recently used) items until there is enough room for the new item
- to be inserted.
-
- If \a caseSensitive is TRUE (the default), the cache keys are case
- sensitive; if it is FALSE, they are case-insensitive.
- Case-insensitive comparison considers all Unicode letters.
-*/
-
-/*!
- \fn Q3Cache::~Q3Cache()
-
- Removes all items from the cache and destroys it. All iterators
- that access this cache will be reset.
-*/
-
-/*!
- \fn Q3Cache<type>& Q3Cache::operator=( const Q3Cache<type> &c )
-
- \internal
-
- Do not use. A Q3Cache cannot be copied. Calls qFatal() in debug version.
-*/
-
-/*!
- \fn int Q3Cache::maxCost() const
-
- Returns the maximum allowed total cost of the cache.
-
- \sa setMaxCost() totalCost()
-*/
-
-/*!
- \fn int Q3Cache::totalCost() const
-
- Returns the total cost of the items in the cache. This is an
- integer in the range 0 to maxCost().
-
- \sa setMaxCost()
-*/
-
-/*!
- \fn void Q3Cache::setMaxCost( int m )
-
- Sets the maximum allowed total cost of the cache to \a m. If the
- current total cost is greater than \a m, some items are deleted
- immediately.
-
- \sa maxCost() totalCost()
-*/
-
-/*!
- \fn uint Q3Cache::count() const
-
- Returns the number of items in the cache.
-
- \sa totalCost()
-*/
-
-/*!
- \fn uint Q3Cache::size() const
-
- Returns the size of the hash array used to implement the cache.
- This should be a bit bigger than count() is likely to be.
-*/
-
-/*!
- \fn bool Q3Cache::isEmpty() const
-
- Returns TRUE if the cache is empty; otherwise returns FALSE.
-*/
-
-/*!
- \fn bool Q3Cache::insert( const QString &k, const type *d, int c, int p )
-
- Inserts the item \a d into the cache with key \a k and associated
- cost, \a c. Returns TRUE if it is successfully inserted; otherwise
- returns FALSE.
-
- The cache's size is limited, and if the total cost is too high,
- Q3Cache will remove old, least recently used items until there is
- room for this new item.
-
- The parameter \a p is internal and should be left at the default
- value (0).
-
- \warning If this function returns FALSE (which could happen, e.g.
- if the cost of this item alone exceeds maxCost()) you must delete
- \a d yourself. Additionally, be very careful about using \a d
- after calling this function because any other insertions into the
- cache, from anywhere in the application or within Qt itself, could
- cause the object to be discarded from the cache and the pointer to
- become invalid.
-*/
-
-/*!
- \fn bool Q3Cache::remove( const QString &k )
-
- Removes the item associated with \a k, and returns TRUE if the
- item was present in the cache; otherwise returns FALSE.
-
- The item is deleted if auto-deletion has been enabled, i.e., if
- you have called setAutoDelete(TRUE).
-
- If there are two or more items with equal keys, the one that was
- inserted last is removed.
-
- All iterators that refer to the removed item are set to point to
- the next item in the cache's traversal order.
-
- \sa take(), clear()
-*/
-
-/*!
- \fn type *Q3Cache::take( const QString &k )
-
- Takes the item associated with \a k out of the cache without
- deleting it, and returns a pointer to the item taken out, or 0
- if the key does not exist in the cache.
-
- If there are two or more items with equal keys, the one that was
- inserted last is taken.
-
- All iterators that refer to the taken item are set to point to the
- next item in the cache's traversal order.
-
- \sa remove(), clear()
-*/
-
-/*!
- \fn void Q3Cache::clear()
-
- Removes all items from the cache and deletes them if auto-deletion
- has been enabled.
-
- All cache iterators that operate this on cache are reset.
-
- \sa remove() take()
-*/
-
-/*!
- \fn type *Q3Cache::find( const QString &k, bool ref ) const
-
- Returns the item associated with key \a k, or 0 if the key does
- not exist in the cache. If \a ref is TRUE (the default), the item
- is moved to the front of the least recently used list.
-
- If there are two or more items with equal keys, the one that was
- inserted last is returned.
-*/
-
-/*!
- \fn type *Q3Cache::operator[]( const QString &k ) const
-
- Returns the item associated with key \a k, or 0 if \a k does not
- exist in the cache, and moves the item to the front of the least
- recently used list.
-
- If there are two or more items with equal keys, the one that was
- inserted last is returned.
-
- This is the same as find( k, TRUE ).
-
- \sa find()
-*/
-
-/*!
- \fn void Q3Cache::statistics() const
-
- A debug-only utility function. Prints out cache usage, hit/miss,
- and distribution information using qDebug(). This function does
- nothing in the release library.
-*/
-
-/*****************************************************************************
- Q3CacheIterator documentation
- *****************************************************************************/
-
-/*!
- \class Q3CacheIterator qcache.h
- \brief The Q3CacheIterator class provides an iterator for Q3Cache collections.
- \compat
-
- Note that the traversal order is arbitrary; you are not guaranteed
- any particular order. If new objects are inserted into the cache
- while the iterator is active, the iterator may or may not see
- them.
-
- Multiple iterators are completely independent, even when they
- operate on the same Q3Cache. Q3Cache updates all iterators that
- refer an item when that item is removed.
-
- Q3CacheIterator provides an operator++(), and an operator+=() to
- traverse the cache. The current() and currentKey() functions are
- used to access the current cache item and its key. The atFirst()
- and atLast() return TRUE if the iterator points to the first or
- last item in the cache respectively. The isEmpty() function
- returns TRUE if the cache is empty, and count() returns the number
- of items in the cache.
-
- Note that atFirst() and atLast() refer to the iterator's arbitrary
- ordering, not to the cache's internal least recently used list.
-
- \sa Q3Cache
-*/
-
-/*!
- \fn Q3CacheIterator::Q3CacheIterator( const Q3Cache<type> &cache )
-
- Constructs an iterator for \a cache. The current iterator item is
- set to point to the first item in the \a cache.
-*/
-
-/*!
- \fn Q3CacheIterator::Q3CacheIterator (const Q3CacheIterator<type> & ci)
-
- Constructs an iterator for the same cache as \a ci. The new
- iterator starts at the same item as ci.current(), but moves
- independently from there on.
-*/
-
-/*!
- \fn Q3CacheIterator<type>& Q3CacheIterator::operator=( const Q3CacheIterator<type> &ci )
-
- Makes this an iterator for the same cache as \a ci. The new
- iterator starts at the same item as ci.current(), but moves
- independently thereafter.
-*/
-
-/*!
- \fn uint Q3CacheIterator::count() const
-
- Returns the number of items in the cache on which this iterator
- operates.
-
- \sa isEmpty()
-*/
-
-/*!
- \fn bool Q3CacheIterator::isEmpty() const
-
- Returns TRUE if the cache is empty, i.e. count() == 0; otherwise
- it returns FALSE.
-
- \sa count()
-*/
-
-/*!
- \fn bool Q3CacheIterator::atFirst() const
-
- Returns TRUE if the iterator points to the first item in the
- cache; otherwise returns FALSE. Note that this refers to the
- iterator's arbitrary ordering, not to the cache's internal least
- recently used list.
-
- \sa toFirst(), atLast()
-*/
-
-/*!
- \fn bool Q3CacheIterator::atLast() const
-
- Returns TRUE if the iterator points to the last item in the cache;
- otherwise returns FALSE. Note that this refers to the iterator's
- arbitrary ordering, not to the cache's internal least recently
- used list.
-
- \sa toLast(), atFirst()
-*/
-
-/*!
- \fn type *Q3CacheIterator::toFirst()
-
- Sets the iterator to point to the first item in the cache and
- returns a pointer to the item.
-
- Sets the iterator to 0 and returns 0 if the cache is empty.
-
- \sa toLast() isEmpty()
-*/
-
-/*!
- \fn type *Q3CacheIterator::toLast()
-
- Sets the iterator to point to the last item in the cache and
- returns a pointer to the item.
-
- Sets the iterator to 0 and returns 0 if the cache is empty.
-
- \sa toFirst() isEmpty()
-*/
-
-/*!
- \fn Q3CacheIterator::operator type *() const
-
- Cast operator. Returns a pointer to the current iterator item.
- Same as current().
-*/
-
-/*!
- \fn type *Q3CacheIterator::current() const
-
- Returns a pointer to the current iterator item.
-*/
-
-/*!
- \fn QString Q3CacheIterator::currentKey() const
-
- Returns the key for the current iterator item.
-*/
-
-/*!
- \fn type *Q3CacheIterator::operator()()
-
- Makes the succeeding item current and returns the original current
- item.
-
- If the current iterator item was the last item in the cache or if
- it was 0, 0 is returned.
-*/
-
-/*!
- \fn type *Q3CacheIterator::operator+=( uint jump )
-
- Returns the item \a jump positions after the current item, or 0 if
- it is beyond the last item. Makes this the current item.
-*/
-
-/*!
- \fn type *Q3CacheIterator::operator-=( uint jump )
-
- Returns the item \a jump positions before the current item, or 0
- if it is before the first item. Makes this the current item.
-*/
-
-/*!
- \fn type *Q3CacheIterator::operator++()
-
- Prefix++ makes the iterator point to the item just after current()
- and makes that the new current item for the iterator. If current()
- was the last item, operator++() returns 0.
-*/
-
-/*!
- \fn type *Q3CacheIterator::operator--()
-
- Prefix-- makes the iterator point to the item just before
- current() and makes that the new current item for the iterator. If
- current() was the first item, operator--() returns 0.
-*/
-
diff --git a/doc/src/classes/q3dict.qdoc b/doc/src/classes/q3dict.qdoc
deleted file mode 100644
index 2234c2d76..000000000
--- a/doc/src/classes/q3dict.qdoc
+++ /dev/null
@@ -1,446 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class Q3Dict
- \brief The Q3Dict class is a template class that provides a
- dictionary based on QString keys.
- \compat
-
- Q3Dict is implemented as a template class. Define a template
- instance Q3Dict\<X\> to create a dictionary that operates on
- pointers to X (X *).
-
- A dictionary is a collection of key-value pairs. The key is a
- QString used for insertion, removal and lookup. The value is a
- pointer. Dictionaries provide very fast insertion and lookup.
-
- If you want to use non-Unicode, plain 8-bit \c char* keys, use the
- Q3AsciiDict template. A Q3Dict has the same performance as a
- Q3AsciiDict. If you want to have a dictionary that maps QStrings to
- QStrings use QMap.
-
- The size() of the dictionary is very important. In order to get
- good performance, you should use a suitably large prime number.
- Suitable means equal to or larger than the maximum expected number
- of dictionary items. Size is set in the constructor but may be
- changed with resize().
-
- Items are inserted with insert(); 0 pointers cannot be inserted.
- Items are removed with remove(). All the items in a dictionary can
- be removed with clear(). The number of items in the dictionary is
- returned by count(). If the dictionary contains no items isEmpty()
- returns TRUE. You can change an item's value with replace(). Items
- are looked up with operator[](), or with find() which return a
- pointer to the value or 0 if the given key does not exist. You can
- take an item out of the dictionary with take().
-
- Calling setAutoDelete(TRUE) for a dictionary tells it to delete
- items that are removed. The default behavior is not to delete
- items when they are removed.
-
- When an item is inserted, the key is converted (hashed) to an
- integer index into an internal hash array. This makes lookup very
- fast.
-
- Items with equal keys are allowed. When inserting two items with
- the same key, only the last inserted item will be accessible (last
- in, first out) until it is removed.
-
- The Q3DictIterator class can traverse the dictionary, but only in
- an arbitrary order. Multiple iterators may independently traverse
- the same dictionary.
-
- When inserting an item into a dictionary, only the pointer is
- copied, not the item itself, i.e. a shallow copy is made. It is
- possible to make the dictionary copy all of the item's data (a
- deep copy) when an item is inserted. insert() calls the virtual
- function Q3PtrCollection::newItem() for the item to be inserted.
- Inherit a dictionary and reimplement newItem() if you want deep
- copies.
-
- When removing a dictionary item, the virtual function
- Q3PtrCollection::deleteItem() is called. Q3Dict's default
- implementation is to delete the item if auto-deletion is enabled.
-
- \sa Q3DictIterator, Q3AsciiDict, Q3IntDict, Q3PtrDict
-*/
-
-
-/*!
- \fn Q3Dict::Q3Dict( int size, bool caseSensitive )
-
- Constructs a dictionary optimized for less than \a size entries.
-
- We recommend setting \a size to a suitably large prime number
- (e.g. a prime that's slightly larger than the expected number of
- entries). This makes the hash distribution better which will lead
- to faster lookup.
-
- If \a caseSensitive is TRUE (the default), keys which differ only
- by case are considered different.
-*/
-
-/*!
- \fn Q3Dict::Q3Dict( const Q3Dict<type> &dict )
-
- Constructs a copy of \a dict.
-
- Each item in \a dict is inserted into this dictionary. Only the
- pointers are copied (shallow copy).
-*/
-
-/*!
- \fn Q3Dict::~Q3Dict()
-
- Removes all items from the dictionary and destroys it. If
- setAutoDelete() is TRUE, each value is deleted. All iterators that
- access this dictionary will be reset.
-
- \sa setAutoDelete()
-*/
-
-/*!
- \fn Q3Dict<type> &Q3Dict::operator=(const Q3Dict<type> &dict)
-
- Assigns \a dict to this dictionary and returns a reference to this
- dictionary.
-
- This dictionary is first cleared, then each item in \a dict is
- inserted into this dictionary. Only the pointers are copied
- (shallow copy), unless newItem() has been reimplemented.
-*/
-
-/*!
- \fn uint Q3Dict::count() const
-
- Returns the number of items in the dictionary.
-
- \sa isEmpty()
-*/
-
-/*!
- \fn uint Q3Dict::size() const
-
- Returns the size of the internal hash array (as specified in the
- constructor).
-
- \sa count()
-*/
-
-/*!
- \fn void Q3Dict::resize( uint newsize )
-
- Changes the size of the hash table to \a newsize. The contents of
- the dictionary are preserved, but all iterators on the dictionary
- become invalid.
-*/
-
-/*!
- \fn bool Q3Dict::isEmpty() const
-
- Returns TRUE if the dictionary is empty, i.e. count() == 0;
- otherwise returns FALSE.
-
- \sa count()
-*/
-
-/*!
- \fn void Q3Dict::insert( const QString &key, const type *item )
-
- Inserts the key \a key with value \a item into the dictionary.
-
- Multiple items can have the same key, in which case only the last
- item will be accessible using \l operator[]().
-
- \a item may not be 0.
-
- \sa replace()
-*/
-
-/*!
- \fn void Q3Dict::replace( const QString &key, const type *item )
-
- Replaces the value of the key, \a key with \a item.
-
- If the item does not already exist, it will be inserted.
-
- \a item may not be 0.
-
- Equivalent to:
- \snippet doc/src/snippets/code/doc_src_q3dict.qdoc 0
-
- If there are two or more items with equal keys, then the last item
- that was inserted will be replaced.
-
- \sa insert()
-*/
-
-/*!
- \fn bool Q3Dict::remove( const QString &key )
-
- Removes the item with \a key from the dictionary. Returns TRUE if
- successful, i.e. if the item is in the dictionary; otherwise
- returns FALSE.
-
- If there are two or more items with equal keys, then the last item
- that was inserted will be removed.
-
- The removed item is deleted if \link
- Q3PtrCollection::setAutoDelete() auto-deletion\endlink is enabled.
-
- All dictionary iterators that refer to the removed item will be
- set to point to the next item in the dictionary's traversal order.
-
- \sa take(), clear(), setAutoDelete()
-*/
-
-/*!
- \fn type *Q3Dict::take( const QString &key )
-
- Takes the item with \a key out of the dictionary without deleting
- it (even if \link Q3PtrCollection::setAutoDelete()
- auto-deletion\endlink is enabled).
-
- If there are two or more items with equal keys, then the last item
- that was inserted will be taken.
-
- Returns a pointer to the item taken out, or 0 if the key does not
- exist in the dictionary.
-
- All dictionary iterators that refer to the taken item will be set
- to point to the next item in the dictionary traversal order.
-
- \sa remove(), clear(), setAutoDelete()
-*/
-
-/*!
- \fn void Q3Dict::clear()
-
- Removes all items from the dictionary.
-
- The removed items are deleted if \link
- Q3PtrCollection::setAutoDelete() auto-deletion\endlink is enabled.
-
- All dictionary iterators that operate on the dictionary are reset.
-
- \sa remove(), take(), setAutoDelete()
-*/
-
-/*!
- \fn type *Q3Dict::find( const QString &key ) const
-
- Returns the item with key \a key, or 0 if the key does not exist
- in the dictionary.
-
- If there are two or more items with equal keys, then the most
- recently inserted item will be found.
-
- Equivalent to the [] operator.
-
- \sa operator[]()
-*/
-
-/*!
- \fn type *Q3Dict::operator[]( const QString &key ) const
-
- Returns the item with key \a key, or 0 if the key does not
- exist in the dictionary.
-
- If there are two or more items with equal keys, then the most
- recently inserted item will be found.
-
- Equivalent to the find() function.
-
- \sa find()
-*/
-
-/*!
- \fn void Q3Dict::statistics() const
-
- Debugging-only function that prints out the dictionary
- distribution using qDebug().
-*/
-
-/*!
- \fn QDataStream& Q3Dict::read( QDataStream &s, Q3PtrCollection::Item &item )
-
- Reads a dictionary item from the stream \a s and returns a
- reference to the stream.
-
- The default implementation sets \a item to 0.
-
- \sa write()
-*/
-
-/*!
- \fn QDataStream& Q3Dict::write( QDataStream &s, Q3PtrCollection::Item item ) const
-
- Writes a dictionary \a item to the stream \a s and returns a
- reference to the stream.
-
- \sa read()
-*/
-
-/*!
- \class Q3DictIterator
- \brief The Q3DictIterator class provides an iterator for Q3Dict collections.
- \compat
-
- Q3DictIterator is implemented as a template class. Define a
- template instance Q3DictIterator\<X\> to create a dictionary
- iterator that operates on Q3Dict\<X\> (dictionary of X*).
-
- The traversal order is arbitrary; when we speak of the "first",
- "last" and "next" item we are talking in terms of this arbitrary
- order.
-
- Multiple iterators may independently traverse the same dictionary.
- A Q3Dict knows about all the iterators that are operating on the
- dictionary. When an item is removed from the dictionary, Q3Dict
- updates all iterators that are referring to the removed item to
- point to the next item in the (arbitrary) traversal order.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_q3dict.qdoc 1
- In the example we insert some pointers to line edits into a
- dictionary, then iterate over the dictionary printing the strings
- associated with the line edits.
-
- \sa Q3Dict
-*/
-
-/*!
- \fn Q3DictIterator::Q3DictIterator( const Q3Dict<type> &dict )
-
- Constructs an iterator for \a dict. The current iterator item is
- set to point to the first item in the dictionary, \a dict. First
- in this context means first in the arbitrary traversal order.
-*/
-
-/*!
- \fn Q3DictIterator::~Q3DictIterator()
-
- Destroys the iterator.
-*/
-
-/*!
- \fn uint Q3DictIterator::count() const
-
- Returns the number of items in the dictionary over which the
- iterator is operating.
-
- \sa isEmpty()
-*/
-
-/*!
- \fn bool Q3DictIterator::isEmpty() const
-
- Returns TRUE if the dictionary is empty, i.e. count() == 0;
- otherwise returns FALSE.
-
- \sa count()
-*/
-
-/*!
- \fn type *Q3DictIterator::toFirst()
-
- Resets the iterator, making the first item the first current item.
- First in this context means first in the arbitrary traversal
- order. Returns a pointer to this item.
-
- If the dictionary is empty it sets the current item to 0 and
- returns 0.
-*/
-
-/*!
- \fn type *Q3DictIterator::operator*()
- \internal
-*/
-
-/*!
- \fn Q3DictIterator::operator type*() const
-
- Cast operator. Returns a pointer to the current iterator item.
- Same as current().
-*/
-
-
-/*!
- \fn type *Q3DictIterator::current() const
-
- Returns a pointer to the current iterator item's value.
-*/
-
-/*!
- \fn QString Q3DictIterator::currentKey() const
-
- Returns the current iterator item's key.
-*/
-
-/*!
- \fn type *Q3DictIterator::operator()()
-
- Makes the next item current and returns the original current item.
-
- If the current iterator item was the last item in the dictionary
- or if it was 0, 0 is returned.
-*/
-
-/*!
- \fn type *Q3DictIterator::operator++()
-
- Prefix ++ makes the next item current and returns the new current
- item.
-
- If the current iterator item was the last item in the dictionary
- or if it was 0, 0 is returned.
-*/
-
-/*!
- \fn type *Q3DictIterator::operator+=( uint jump )
- \internal
- Sets the current item to the item \a jump positions after the current item,
- and returns a pointer to that item.
-
- If that item is beyond the last item or if the dictionary is empty,
- it sets the current item to 0 and returns 0.
-*/
diff --git a/doc/src/classes/q3intcache.qdoc b/doc/src/classes/q3intcache.qdoc
deleted file mode 100644
index 770532e92..000000000
--- a/doc/src/classes/q3intcache.qdoc
+++ /dev/null
@@ -1,446 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class Q3IntCache
- \brief The Q3IntCache class is a template class that provides a cache based on long keys.
- \compat
-
- Q3IntCache is implemented as a template class. Define a template
- instance Q3IntCache\<X\> to create a cache that operates on
- pointers to X, or X*.
-
- A cache is a least recently used (LRU) list of cache items,
- accessed via \c long keys. Each cache item has a cost. The sum
- of item costs, totalCost(), will not exceed the maximum cache
- cost, maxCost(). If inserting a new item would cause the total
- cost to exceed the maximum cost, the least recently used items in
- the cache are removed.
-
- Apart from insert(), by far the most important function is find()
- (which also exists as operator[]). This function looks up an
- item, returns it, and by default marks it as being the most
- recently used item.
-
- There are also methods to remove() or take() an object from the
- cache. Calling setAutoDelete(TRUE) for a cache tells it to delete
- items that are removed. The default is to not delete items when
- they are removed (i.e. remove() and take() are equivalent).
-
- When inserting an item into the cache, only the pointer is copied,
- not the item itself. This is called a shallow copy. It is possible
- to make the cache copy all of the item's data (known as a deep
- copy) when an item is inserted. insert() calls the virtual
- function Q3PtrCollection::newItem() for the item to be inserted.
- Inherit a dictionary and reimplement newItem() if you want deep
- copies.
-
- When removing a cache item, the item will be automatically
- deleted if auto-deletion is enabled.
-
- There is a Q3IntCacheIterator which may be used to traverse the
- items in the cache in arbitrary order.
-
- \sa Q3IntCacheIterator, Q3Cache, Q3AsciiCache
-*/
-
-/*!
- \fn Q3IntCache::Q3IntCache( const Q3IntCache<type> &c )
-
- \internal
-
- Do not use. A Q3IntCache cannot be copied. Calls qFatal() in debug version.
-*/
-
-/*!
- \fn Q3IntCache::Q3IntCache( int maxCost, int size )
-
- Constructs a cache whose contents will never have a total cost
- greater than \a maxCost and which is expected to contain less than
- \a size items.
-
- \a size is actually the size of an internal hash array; it's
- usually best to make it prime and at least 50% bigger than the
- largest expected number of items in the cache.
-
- Each inserted item is associated with a cost. When inserting a new
- item, if the total cost of all items in the cache will exceed \a
- maxCost, the cache will start throwing out the older (least
- recently used) items until there is enough room for the new item
- to be inserted.
-*/
-
-/*!
- \fn Q3IntCache::~Q3IntCache()
-
- Removes all items from the cache and then destroys the int cache.
- If auto-deletion is enabled the cache's items are deleted. All
- iterators that access this cache will be reset.
-*/
-
-/*!
- \fn Q3IntCache<type>& Q3IntCache::operator=( const Q3IntCache<type> &c )
-
- \internal
-
- Do not use. A Q3IntCache cannot be copied. Calls qFatal() in debug version.
-*/
-
-/*!
- \fn int Q3IntCache::maxCost() const
-
- Returns the maximum allowed total cost of the cache.
-
- \sa setMaxCost() totalCost()
-*/
-
-/*!
- \fn int Q3IntCache::totalCost() const
-
- Returns the total cost of the items in the cache. This is an
- integer in the range 0 to maxCost().
-
- \sa setMaxCost()
-*/
-
-/*!
- \fn void Q3IntCache::setMaxCost( int m )
-
- Sets the maximum allowed total cost of the cache to \a m. If the
- current total cost is greater than \a m, some items are removed
- immediately.
-
- \sa maxCost() totalCost()
-*/
-
-/*!
- \fn uint Q3IntCache::count() const
-
- Returns the number of items in the cache.
-
- \sa totalCost()
-*/
-
-/*!
- \fn uint Q3IntCache::size() const
-
- Returns the size of the hash array used to implement the cache.
- This should be a bit larger than count() is likely to be.
-*/
-
-/*!
- \fn bool Q3IntCache::isEmpty() const
-
- Returns TRUE if the cache is empty; otherwise returns FALSE.
-*/
-
-/*!
- \fn bool Q3IntCache::insert( long k, const type *d, int c, int p )
-
- Inserts the item \a d into the cache with key \a k and assigns it
- a cost of \a c (default 1). Returns TRUE if it succeeds; otherwise
- returns FALSE.
-
- The cache's size is limited, and if the total cost is too high,
- Q3IntCache will remove old, least-used items until there is room
- for this new item.
-
- The parameter \a p is internal and should be left at the default
- value (0).
-
- \warning If this function returns FALSE (for example, the cost \c,
- exceeds maxCost()), you must delete \a d yourself. Additionally,
- be very careful about using \a d after calling this function. Any
- other insertions into the cache, from anywhere in the application
- or within Qt itself, could cause the object to be discarded from
- the cache and the pointer to become invalid.
-*/
-
-/*!
- \fn bool Q3IntCache::remove( long k )
-
- Removes the item associated with \a k, and returns TRUE if the
- item was present in the cache; otherwise returns FALSE.
-
- The item is deleted if auto-deletion has been enabled, i.e. if you
- have called setAutoDelete(TRUE).
-
- If there are two or more items with equal keys, the one that was
- inserted most recently is removed.
-
- All iterators that refer to the removed item are set to point to
- the next item in the cache's traversal order.
-
- \sa take(), clear()
-*/
-
-/*!
- \fn type * Q3IntCache::take( long k )
-
- Takes the item associated with \a k out of the cache without
- deleting it, and returns a pointer to the item taken out or 0 if
- the key does not exist in the cache.
-
- If there are two or more items with equal keys, the one that was
- inserted most recently is taken.
-
- All iterators that refer to the taken item are set to point to the
- next item in the cache's traversal order.
-
- \sa remove(), clear()
-*/
-
-/*!
- \fn void Q3IntCache::clear()
-
- Removes all items from the cache, and deletes them if
- auto-deletion has been enabled.
-
- All cache iterators that operate this on cache are reset.
-
- \sa remove() take()
-*/
-
-/*!
- \fn type * Q3IntCache::find( long k, bool ref ) const
-
- Returns the item associated with \a k, or 0 if the key does not
- exist in the cache. If \a ref is TRUE (the default), the item is
- moved to the front of the least recently used list.
-
- If there are two or more items with equal keys, the one that was
- inserted most recently is returned.
-*/
-
-/*!
- \fn type * Q3IntCache::operator[]( long k ) const
-
- Returns the item associated with \a k, or 0 if \a k does not exist
- in the cache, and moves the item to the front of the least
- recently used list.
-
- If there are two or more items with equal keys, the one that was
- inserted most recently is returned.
-
- This is the same as find( k, TRUE ).
-
- \sa find()
-*/
-
-/*!
- \fn void Q3IntCache::statistics() const
-
- A debug-only utility function. Prints out cache usage, hit/miss,
- and distribution information using qDebug(). This function does
- nothing in the release library.
-*/
-
-/*!
- \class Q3IntCacheIterator
- \brief The Q3IntCacheIterator class provides an iterator for Q3IntCache collections.
- \compat
-
- Note that the traversal order is arbitrary; you are not guaranteed
- any particular order. If new objects are inserted into the cache
- while the iterator is active, the iterator may or may not see
- them.
-
- Multiple iterators are completely independent, even when they
- operate on the same Q3IntCache. Q3IntCache updates all iterators
- that refer an item when that item is removed.
-
- Q3IntCacheIterator provides an operator++(), and an operator+=() to
- traverse the cache; current() and currentKey() to access the
- current cache item and its key; atFirst() atLast(), which return
- TRUE if the iterator points to the first/last item in the cache;
- isEmpty(), which returns TRUE if the cache is empty; and count(),
- which returns the number of items in the cache.
-
- Note that atFirst() and atLast() refer to the iterator's arbitrary
- ordering, not to the cache's internal least recently used list.
-
- \sa Q3IntCache
-*/
-
-/*!
- \fn Q3IntCacheIterator::Q3IntCacheIterator( const Q3IntCache<type> &cache )
-
- Constructs an iterator for \a cache. The current iterator item is
- set to point to the first item in the \a cache (or rather, the
- first item is defined to be the item at which this constructor
- sets the iterator to point).
-*/
-
-/*!
- \fn Q3IntCacheIterator::Q3IntCacheIterator (const Q3IntCacheIterator<type> & ci)
-
- Constructs an iterator for the same cache as \a ci. The new
- iterator starts at the same item as ci.current(), but moves
- independently from there on.
-*/
-
-/*!
- \fn Q3IntCacheIterator<type>& Q3IntCacheIterator::operator=( const Q3IntCacheIterator<type> &ci )
-
- Makes this an iterator for the same cache as \a ci. The new
- iterator starts at the same item as ci.current(), but moves
- independently thereafter.
-*/
-
-/*!
- \fn uint Q3IntCacheIterator::count() const
-
- Returns the number of items in the cache on which this iterator
- operates.
-
- \sa isEmpty()
-*/
-
-/*!
- \fn bool Q3IntCacheIterator::isEmpty() const
-
- Returns TRUE if the cache is empty; otherwise returns FALSE.
-
- \sa count()
-*/
-
-/*!
- \fn bool Q3IntCacheIterator::atFirst() const
-
- Returns TRUE if the iterator points to the first item in the
- cache; otherwise returns FALSE. Note that this refers to the
- iterator's arbitrary ordering, not to the cache's internal least
- recently used list.
-
- \sa toFirst(), atLast()
-*/
-
-/*!
- \fn bool Q3IntCacheIterator::atLast() const
-
- Returns TRUE if the iterator points to the last item in the cache;
- otherwise returns FALSE. Note that this refers to the iterator's
- arbitrary ordering, not to the cache's internal least recently
- used list.
-
- \sa toLast(), atFirst()
-*/
-
-/*!
- \fn type *Q3IntCacheIterator::toFirst()
-
- Sets the iterator to point to the first item in the cache and
- returns a pointer to the item.
-
- Sets the iterator to 0, and returns 0, if the cache is empty.
-
- \sa toLast() isEmpty()
-*/
-
-/*!
- \fn type *Q3IntCacheIterator::toLast()
-
- Sets the iterator to point to the last item in the cache and
- returns a pointer to the item.
-
- Sets the iterator to 0, and returns 0, if the cache is empty.
-
- \sa toFirst() isEmpty()
-*/
-
-/*!
- \fn Q3IntCacheIterator::operator type *() const
-
- Cast operator. Returns a pointer to the current iterator item.
- Same as current().
-*/
-
-/*!
- \fn type *Q3IntCacheIterator::current() const
-
- Returns a pointer to the current iterator item.
-*/
-
-/*!
- \fn long Q3IntCacheIterator::currentKey() const
-
- Returns the key for the current iterator item.
-*/
-
-/*!
- \fn type *Q3IntCacheIterator::operator()()
-
- Makes the succeeding item current and returns the original current
- item.
-
- If the current iterator item was the last item in the cache or if
- it was 0, 0 is returned.
-*/
-
-/*!
- \fn type *Q3IntCacheIterator::operator+=( uint jump )
-
- Returns the item \a jump positions after the current item, or 0 if
- it is beyond the last item. Makes this the current item.
-*/
-
-/*!
- \fn type *Q3IntCacheIterator::operator-=( uint jump )
-
- Returns the item \a jump positions before the current item, or 0
- if it is beyond the first item. Makes this the current item.
-*/
-
-/*!
- \fn type *Q3IntCacheIterator::operator++()
-
- Prefix ++ makes the iterator point to the item just after
- current(), and makes it the new current item for the iterator. If
- current() was the last item, operator--() returns 0.
-*/
-
-/*!
- \fn type *Q3IntCacheIterator::operator--()
-
- Prefix -- makes the iterator point to the item just before
- current(), and makes it the new current item for the iterator. If
- current() was the first item, operator--() returns 0.
-*/
diff --git a/doc/src/classes/q3intdict.qdoc b/doc/src/classes/q3intdict.qdoc
deleted file mode 100644
index 731050d18..000000000
--- a/doc/src/classes/q3intdict.qdoc
+++ /dev/null
@@ -1,390 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class Q3IntDict
- \brief The Q3IntDict class is a template class that provides a dictionary based on long keys.\
- \compat
-
- Q3IntDict is implemented as a template class. Define a template
- instance Q3IntDict\<X\> to create a dictionary that operates on
- pointers to X (X*).
-
- A dictionary is a collection of key-value pairs. The key is an \c
- long used for insertion, removal and lookup. The value is a
- pointer. Dictionaries provide very fast insertion and lookup.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_q3intdict.qdoc 0
-
- See Q3Dict for full details, including the choice of dictionary
- size, and how deletions are handled.
-
- \sa Q3IntDictIterator, Q3Dict, Q3AsciiDict, Q3PtrDict
-*/
-
-
-/*!
- \fn Q3IntDict::Q3IntDict( int size )
-
- Constructs a dictionary using an internal hash array of size \a
- size.
-
- Setting \a size to a suitably large prime number (equal to or
- greater than the expected number of entries) makes the hash
- distribution better which leads to faster lookup.
-*/
-
-/*!
- \fn Q3IntDict::Q3IntDict( const Q3IntDict<type> &dict )
-
- Constructs a copy of \a dict.
-
- Each item in \a dict is inserted into this dictionary. Only the
- pointers are copied (shallow copy).
-*/
-
-/*!
- \fn Q3IntDict::~Q3IntDict()
-
- Removes all items from the dictionary and destroys it.
-
- All iterators that access this dictionary will be reset.
-
- \sa setAutoDelete()
-*/
-
-/*!
- \fn Q3IntDict<type> &Q3IntDict::operator=(const Q3IntDict<type> &dict)
-
- Assigns \a dict to this dictionary and returns a reference to this
- dictionary.
-
- This dictionary is first cleared and then each item in \a dict is
- inserted into this dictionary. Only the pointers are copied
- (shallow copy), unless newItem() has been reimplemented.
-*/
-
-/*!
- \fn uint Q3IntDict::count() const
-
- Returns the number of items in the dictionary.
-
- \sa isEmpty()
-*/
-
-/*!
- \fn uint Q3IntDict::size() const
-
- Returns the size of the internal hash array (as specified in the
- constructor).
-
- \sa count()
-*/
-
-/*!
- \fn void Q3IntDict::resize( uint newsize )
-
- Changes the size of the hashtable to \a newsize. The contents of
- the dictionary are preserved, but all iterators on the dictionary
- become invalid.
-*/
-
-/*!
- \fn bool Q3IntDict::isEmpty() const
-
- Returns TRUE if the dictionary is empty; otherwise returns FALSE.
-
- \sa count()
-*/
-
-/*!
- \fn void Q3IntDict::insert( long key, const type *item )
-
- Insert item \a item into the dictionary using key \a key.
-
- Multiple items can have the same key, in which case only the last
- item will be accessible using \l operator[]().
-
- \a item may not be 0.
-
- \sa replace()
-*/
-
-/*!
- \fn void Q3IntDict::replace( long key, const type *item )
-
- If the dictionary has key \a key, this key's item is replaced with
- \a item. If the dictionary doesn't contain key \a key, \a item is
- inserted into the dictionary using key \a key.
-
- \a item may not be 0.
-
- Equivalent to:
- \snippet doc/src/snippets/code/doc_src_q3intdict.qdoc 1
-
- If there are two or more items with equal keys, then the most
- recently inserted item will be replaced.
-
- \sa insert()
-*/
-
-/*!
- \fn bool Q3IntDict::remove( long key )
-
- Removes the item associated with \a key from the dictionary.
- Returns TRUE if successful, i.e. if the \a key is in the
- dictionary; otherwise returns FALSE.
-
- If there are two or more items with equal keys, then the most
- recently inserted item will be removed.
-
- The removed item is deleted if \link
- Q3PtrCollection::setAutoDelete() auto-deletion\endlink is enabled.
-
- All dictionary iterators that refer to the removed item will be
- set to point to the next item in the dictionary's traversal
- order.
-
- \sa take(), clear(), setAutoDelete()
-*/
-
-/*!
- \fn type *Q3IntDict::take( long key )
-
- Takes the item associated with \a key out of the dictionary
- without deleting it (even if \link Q3PtrCollection::setAutoDelete()
- auto-deletion\endlink is enabled).
-
- If there are two or more items with equal keys, then the most
- recently inserted item will be taken.
-
- Returns a pointer to the item taken out, or 0 if the key does not
- exist in the dictionary.
-
- All dictionary iterators that refer to the taken item will be set
- to point to the next item in the dictionary's traversing order.
-
- \sa remove(), clear(), setAutoDelete()
-*/
-
-/*!
- \fn void Q3IntDict::clear()
-
- Removes all items from the dictionary.
-
- The removed items are deleted if \link
- Q3PtrCollection::setAutoDelete() auto-deletion\endlink is enabled.
-
- All dictionary iterators that access this dictionary will be reset.
-
- \sa remove(), take(), setAutoDelete()
-*/
-
-/*!
- \fn type *Q3IntDict::find( long key ) const
-
- Returns the item associated with \a key, or 0 if the key does not
- exist in the dictionary.
-
- If there are two or more items with equal keys, then the most
- recently inserted item will be found.
-
- Equivalent to operator[].
-
- \sa operator[]()
-*/
-
-/*!
- \fn type *Q3IntDict::operator[]( long key ) const
-
- Returns the item associated with \a key, or 0 if the key does not
- exist in the dictionary.
-
- If there are two or more items with equal keys, then the most
- recently inserted item will be found.
-
- Equivalent to the find() function.
-
- \sa find()
-*/
-
-/*!
- \fn void Q3IntDict::statistics() const
-
- Debugging-only function that prints out the dictionary
- distribution using qDebug().
-*/
-
-/*!
- \fn QDataStream& Q3IntDict::read( QDataStream &s, Q3PtrCollection::Item &item )
-
- Reads a dictionary item from the stream \a s and returns a
- reference to the stream.
-
- The default implementation sets \a item to 0.
-
- \sa write()
-*/
-
-/*!
- \fn QDataStream& Q3IntDict::write( QDataStream &s, Q3PtrCollection::Item item ) const
-
- Writes a dictionary \a item to the stream \a s and returns a
- reference to the stream.
-
- \sa read()
-*/
-
-/*!
- \class Q3IntDictIterator
- \brief The Q3IntDictIterator class provides an iterator for Q3IntDict collections.
- \compat
-
- Q3IntDictIterator is implemented as a template class. Define a
- template instance Q3IntDictIterator\<X\> to create a dictionary
- iterator that operates on Q3IntDict\<X\> (dictionary of X*).
-
- Example:
- \snippet doc/src/snippets/code/doc_src_q3intdict.qdoc 2
-
- Note that the traversal order is arbitrary; you are not guaranteed the
- order shown above.
-
- Multiple iterators may independently traverse the same dictionary.
- A Q3IntDict knows about all the iterators that are operating on the
- dictionary. When an item is removed from the dictionary, Q3IntDict
- updates all iterators that refer the removed item to point to the
- next item in the traversal order.
-
- \sa Q3IntDict
-*/
-
-/*!
- \fn Q3IntDictIterator::Q3IntDictIterator( const Q3IntDict<type> &dict )
-
- Constructs an iterator for \a dict. The current iterator item is
- set to point to the 'first' item in the \a dict. The first item
- refers to the first item in the dictionary's arbitrary internal
- ordering.
-*/
-
-/*!
- \fn Q3IntDictIterator::~Q3IntDictIterator()
-
- Destroys the iterator.
-*/
-
-/*!
- \fn uint Q3IntDictIterator::count() const
-
- Returns the number of items in the dictionary this iterator
- operates over.
-
- \sa isEmpty()
-*/
-
-/*!
- \fn bool Q3IntDictIterator::isEmpty() const
-
- Returns TRUE if the dictionary is empty; otherwise eturns FALSE.
-
- \sa count()
-*/
-
-/*!
- \fn type *Q3IntDictIterator::toFirst()
-
- Sets the current iterator item to point to the first item in the
- dictionary and returns a pointer to the item. The first item
- refers to the first item in the dictionary's arbitrary internal
- ordering. If the dictionary is empty it sets the current item to
- 0 and returns 0.
-*/
-
-/*!
- \fn Q3IntDictIterator::operator type *() const
-
- Cast operator. Returns a pointer to the current iterator item.
- Same as current().
-*/
-
-/*!
- \fn type *Q3IntDictIterator::current() const
-
- Returns a pointer to the current iterator item.
-*/
-
-/*!
- \fn long Q3IntDictIterator::currentKey() const
-
- Returns the key for the current iterator item.
-*/
-
-/*!
- \fn type *Q3IntDictIterator::operator()()
-
- Makes the succeeding item current and returns the original current
- item.
-
- If the current iterator item was the last item in the dictionary
- or if it was 0, 0 is returned.
-*/
-
-/*!
- \fn type *Q3IntDictIterator::operator++()
-
- Prefix ++ makes the succeeding item current and returns the new
- current item.
-
- If the current iterator item was the last item in the dictionary
- or if it was 0, 0 is returned.
-*/
-
-/*!
- \fn type *Q3IntDictIterator::operator+=( uint jump )
-
- Sets the current item to the item \a jump positions after the
- current item, and returns a pointer to that item.
-
- If that item is beyond the last item or if the dictionary is
- empty, it sets the current item to 0 and returns 0.
-*/
diff --git a/doc/src/classes/q3memarray.qdoc b/doc/src/classes/q3memarray.qdoc
deleted file mode 100644
index eb0648cab..000000000
--- a/doc/src/classes/q3memarray.qdoc
+++ /dev/null
@@ -1,523 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class Q3MemArray
- \brief The Q3MemArray class is a template class that provides arrays of simple types.
- \compat
-
- Q3MemArray is implemented as a template class. Define a template
- instance Q3MemArray\<X\> to create an array that contains X items.
-
- Q3MemArray stores the array elements directly in the array. It can
- only deal with simple types (i.e. C++ types, structs, and classes
- that have no constructors, destructors, or virtual functions).
- Q3MemArray uses bitwise operations to copy and compare array
- elements.
-
- The Q3PtrVector collection class is also a kind of array. Like most
- old Qt collection classes, it uses pointers to the contained items.
-
- Q3MemArray uses explicit sharing with a
- reference count. If more than one array shares common data and one
- of the arrays is modified, all the arrays are modified.
-
- The benefit of sharing is that a program does not need to duplicate
- data when it is not required, which results in lower memory use
- and less copying of data.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_q3memarray.qdoc 0
-
- Program output:
- \snippet doc/src/snippets/code/doc_src_q3memarray.qdoc 1
-
- Note concerning the use of Q3MemArray for manipulating structs or
- classes: Compilers will often pad the size of structs of odd sizes
- up to the nearest word boundary. This will then be the size
- Q3MemArray will use for its bitwise element comparisons. Because
- the remaining bytes will typically be uninitialized, this can
- cause find() etc. to fail to find the element. Example:
-
- \snippet doc/src/snippets/code/doc_src_q3memarray.qdoc 2
-
- To work around this, make sure that you use a struct where
- sizeof() returns the same as the sum of the sizes of the members
- either by changing the types of the struct members or by adding
- dummy members.
-
- Q3MemArray data can be traversed by iterators (see begin() and
- end()). The number of items is returned by count(). The array can
- be resized with resize() and filled using fill().
-
- You can make a shallow copy of the array with assign() (or
- operator=()) and a deep copy with duplicate().
-
- Search for values in the array with find() and contains(). For
- sorted arrays (see sort()) you can search using bsearch().
-
- You can set the data directly using setRawData() and
- resetRawData(), although this requires care.
-*/
-
-/*! \fn Q3MemArray::operator QVector<type>() const
-
- Automatically converts the Q3MemArray<type> into a QVector<type>.
-*/
-
-/*! \typedef Q3MemArray::Iterator
- A Q3MemArray iterator.
- \sa begin() end()
-*/
-/*! \typedef Q3MemArray::ConstIterator
- A const Q3MemArray iterator.
- \sa begin() end()
-*/
-/*! \typedef Q3MemArray::ValueType
- \internal
-*/
-
-/*!
- \fn Q3MemArray::Q3MemArray()
-
- Constructs a null array.
-
- \sa isNull()
-*/
-
-/*!
- \fn Q3MemArray::Q3MemArray( int size )
-
- Constructs an array with room for \a size elements. Makes a null
- array if \a size == 0.
-
- The elements are left uninitialized.
-
- \sa resize(), isNull()
-*/
-
-/*!
- \fn Q3MemArray::Q3MemArray( const Q3MemArray<type> &a )
-
- Constructs a shallow copy of \a a.
-
- \sa assign()
-*/
-
-/*!
- \fn Q3MemArray::Q3MemArray(const QVector<type> &vector)
-
- Constructs a copy of \a vector.
-*/
-
-/*!
- \fn Q3MemArray::Q3MemArray(int arg1, int arg2)
-
- Constructs an array \e{without allocating} array space. The
- arguments \a arg1 and \a arg2 should be zero. Use at your own
- risk.
-*/
-
-/*!
- \fn Q3MemArray::~Q3MemArray()
-
- Dereferences the array data and deletes it if this was the last
- reference.
-*/
-
-/*!
- \fn Q3MemArray<type> &Q3MemArray::operator=( const Q3MemArray<type> &a )
-
- Assigns a shallow copy of \a a to this array and returns a
- reference to this array.
-
- Equivalent to assign( a ).
-*/
-
-/*!
- \fn type *Q3MemArray::data() const
-
- Returns a pointer to the actual array data.
-
- The array is a null array if data() == 0 (null pointer).
-
- \sa isNull()
-*/
-
-/*!
- \fn uint Q3MemArray::nrefs() const
-
- Returns the reference count for the shared array data. This
- reference count is always greater than zero.
-*/
-
-/*!
- \fn uint Q3MemArray::size() const
-
- Returns the size of the array (maximum number of elements).
-
- The array is a null array if size() == 0.
-
- \sa isNull(), resize()
-*/
-
-/*!
- \fn uint Q3MemArray::count() const
-
- Returns the same as size().
-
- \sa size()
-*/
-
-/*!
- \fn bool Q3MemArray::isEmpty() const
-
- Returns TRUE if the array is empty; otherwise returns FALSE.
-
- isEmpty() is equivalent to isNull() for Q3MemArray (unlike
- QString).
-*/
-
-/*!
- \fn bool Q3MemArray::isNull() const
-
- Returns TRUE if the array is null; otherwise returns FALSE.
-
- A null array has size() == 0 and data() == 0.
-*/
-
-/*!
- \fn bool Q3MemArray::resize( uint size, Optimization optim )
-
- Resizes (expands or shrinks) the array to \a size elements. The
- array becomes a null array if \a size == 0.
-
- Returns TRUE if successful, or FALSE if the memory cannot be
- allocated.
-
- New elements are not initialized.
-
- \a optim is either Q3GArray::MemOptim (the default) or
- Q3GArray::SpeedOptim. When optimizing for speed rather than memory
- consumption, the array uses a smart grow and shrink algorithm that
- might allocate more memory than is actually needed for \a size
- elements. This speeds up subsequent resize operations, for example
- when appending many elements to an array, since the space has
- already been allocated.
-
- \sa size()
-*/
-
-/*!
- \fn bool Q3MemArray::resize( uint size )
-
- \overload
-
- Resizes (expands or shrinks) the array to \a size elements. The
- array becomes a null array if \a size == 0.
-
- Returns TRUE if successful, i.e. if the memory can be allocated;
- otherwise returns FALSE.
-
- New elements are not initialized.
-
- \sa size()
-*/
-
-/*!
- \fn bool Q3MemArray::truncate( uint pos )
-
- Truncates the array at position \a pos.
-
- Returns TRUE if successful, i.e. if the memory can be allocated;
- otherwise returns FALSE.
-
- Equivalent to resize(\a pos).
-
- \sa resize()
-*/
-
-/*!
- \fn bool Q3MemArray::fill( const type &v, int size )
-
- Fills the array with the value \a v. If \a size is specified as
- different from -1, then the array will be resized before being
- filled.
-
- Returns TRUE if successful, i.e. if \a size is -1, or \a size is
- != -1 and the memory can be allocated; otherwise returns FALSE.
-
- \sa resize()
-*/
-
-/*!
- \fn void Q3MemArray::detach()
-
- Detaches this array from shared array data; i.e. it makes a
- private, deep copy of the data.
-
- Copying will be performed only if the \link nrefs() reference
- count\endlink is greater than one.
-
- \sa copy()
-*/
-
-/*!
- \fn Q3MemArray<type> Q3MemArray::copy() const
-
- Returns a deep copy of this array.
-
- \sa detach(), duplicate()
-*/
-
-/*!
- \fn Q3MemArray<type> &Q3MemArray::assign( const Q3MemArray<type> &a )
-
- Shallow copy. Dereferences the current array and references the
- data contained in \a a instead. Returns a reference to this array.
-
- \sa operator=()
-*/
-
-/*!
- \fn Q3MemArray<type> &Q3MemArray::assign( const type *data, uint size )
-
- \overload
-
- Shallow copy. Dereferences the current array and references the
- array data \a data, which contains \a size elements. Returns a
- reference to this array.
-
- Do not delete \a data later; Q3MemArray will call free() on it
- at the right time.
-*/
-
-/*!
- \fn Q3MemArray<type> &Q3MemArray::duplicate( const Q3MemArray<type> &a )
-
- Deep copy. Dereferences the current array and obtains a copy of
- the data contained in \a a instead. Returns a reference to this
- array.
-
- \sa copy()
-*/
-
-/*!
- \fn Q3MemArray<type> &Q3MemArray::duplicate( const type *data, uint size )
-
- \overload
-
- Deep copy. Dereferences the current array and obtains a copy of
- the array data \a data instead. Returns a reference to this array.
- The size of the array is given by \a size.
-
- \sa copy()
-*/
-
-/*!
- \fn Q3MemArray<type> &Q3MemArray::setRawData( const type *data, uint size )
-
- Sets raw data and returns a reference to the array.
-
- Dereferences the current array and sets the new array data to \a
- data and the new array size to \a size. Do not attempt to resize
- or re-assign the array data when raw data has been set. Call
- resetRawData(\a data, \a size) to reset the array.
-
- Setting raw data is useful because it sets Q3MemArray data without
- allocating memory or copying data.
-
- Example I (intended use):
- \snippet doc/src/snippets/code/doc_src_q3memarray.qdoc 3
-
- Example II (you don't want to do this):
- \snippet doc/src/snippets/code/doc_src_q3memarray.qdoc 4
-
- \warning If you do not call resetRawData(), Q3MemArray will attempt
- to deallocate or reallocate the raw data, which might not be too
- good. Be careful.
-
- \sa resetRawData()
-*/
-
-/*!
- \fn void Q3MemArray::resetRawData( const type *data, uint size )
-
- Removes internal references to the raw data that was set using
- setRawData(). This means that Q3MemArray no longer has access to
- the \a data, so you are free to manipulate \a data as you wish.
- You can now use the Q3MemArray without affecting the original \a
- data, for example by calling setRawData() with a pointer to some
- other data.
-
- The arguments must be the \a data and length, \a size, that were
- passed to setRawData(). This is for consistency checking.
-
- \sa setRawData()
-*/
-
-/*!
- \fn int Q3MemArray::find( const type &v, uint index ) const
-
- Finds the first occurrence of \a v, starting at position \a index.
-
- Returns the position of \a v, or -1 if \a v could not be found.
-
- \sa contains()
-*/
-
-/*!
- \fn int Q3MemArray::contains( const type &v ) const
-
- Returns the number of times \a v occurs in the array.
-
- \sa find()
-*/
-
-/*!
- \fn void Q3MemArray::sort()
-
- Sorts the array elements in ascending order, using bitwise
- comparison (memcmp()).
-
- \sa bsearch()
-*/
-
-/*!
- \fn int Q3MemArray::bsearch( const type &v ) const
-
- In a sorted array (as sorted by sort()), finds the first
- occurrence of \a v by using a binary search. For a sorted
- array this is generally much faster than find(), which does
- a linear search.
-
- Returns the position of \a v, or -1 if \a v could not be found.
-
- \sa sort(), find()
-*/
-
-/*!
- \fn type &Q3MemArray::operator[]( int index ) const
-
- Returns a reference to the element at position \a index in the
- array.
-
- This can be used to both read and set an element. Equivalent to
- at().
-
- \sa at()
-*/
-
-/*!
- \fn type &Q3MemArray::at( uint index ) const
-
- Returns a reference to the element at position \a index in the array.
-
- This can be used to both read and set an element.
-
- \sa operator[]()
-*/
-
-/*!
- \fn Q3MemArray::operator const type *() const
-
- Cast operator. Returns a pointer to the array.
-
- \sa data()
-*/
-
-/*!
- \fn bool Q3MemArray::operator==( const Q3MemArray<type> &a ) const
-
- Returns TRUE if this array is equal to \a a; otherwise returns
- FALSE.
-
- The two arrays are compared bitwise.
-
- \sa operator!=()
-*/
-
-/*!
- \fn bool Q3MemArray::operator!=( const Q3MemArray<type> &a ) const
-
- Returns TRUE if this array is different from \a a; otherwise
- returns FALSE.
-
- The two arrays are compared bitwise.
-
- \sa operator==()
-*/
-
-/*!
- \fn Iterator Q3MemArray::begin()
-
- Returns an iterator pointing at the beginning of this array. This
- iterator can be used in the same way as the iterators of
- Q3ValueList and QMap, for example.
-*/
-
-/*!
- \fn Iterator Q3MemArray::end()
-
- Returns an iterator pointing behind the last element of this
- array. This iterator can be used in the same way as the iterators
- of Q3ValueList and QMap, for example.
-*/
-
-/*!
- \fn ConstIterator Q3MemArray::begin() const
-
- \overload
-
- Returns a const iterator pointing at the beginning of this array.
- This iterator can be used in the same way as the iterators of
- Q3ValueList and QMap, for example.
-*/
-
-/*!
- \fn ConstIterator Q3MemArray::end() const
-
- \overload
-
- Returns a const iterator pointing behind the last element of this
- array. This iterator can be used in the same way as the iterators
- of Q3ValueList and QMap, for example.
-*/
diff --git a/doc/src/classes/q3popupmenu.qdoc b/doc/src/classes/q3popupmenu.qdoc
deleted file mode 100644
index c20dadc47..000000000
--- a/doc/src/classes/q3popupmenu.qdoc
+++ /dev/null
@@ -1,76 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class Q3PopupMenu
- \brief The Q3PopupMenu class is a thin compatibility wrapper around QMenu.
- \compat
-
- Use QMenu in new applications. Note that the menu's actions must
- be \l {Q3Action}s.
-*/
-
-/*!
- \fn Q3PopupMenu::Q3PopupMenu(QWidget *parent, const char *name)
-
- Constructs a menu with the given \a parent and \a name.
-*/
-
-/*!
- \fn int Q3PopupMenu::exec()
-
- Pops up the menu and returns the ID of the action that was
- selected.
-
- \sa QMenu::exec()
-*/
-
-/*!
- \fn int Q3PopupMenu::exec(const QPoint & pos, int indexAtPoint)
-
- Pops up the menu at coordinate \a pos and returns the ID of the
- action that was selected.
-
- If \a indexAtPoint is specified, the menu will pop up with the
- item at index \a indexAtPoint under the mouse cursor.
-
- \sa QMenu::exec()
-*/
diff --git a/doc/src/classes/q3ptrdict.qdoc b/doc/src/classes/q3ptrdict.qdoc
deleted file mode 100644
index 531b08502..000000000
--- a/doc/src/classes/q3ptrdict.qdoc
+++ /dev/null
@@ -1,388 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class Q3PtrDict
- \brief The Q3PtrDict class is a template class that provides a dictionary based on void* keys.
- \compat
-
- Q3PtrDict is implemented as a template class. Define a template
- instance Q3PtrDict\<X\> to create a dictionary that operates on
- pointers to X (X*).
-
- A dictionary is a collection of key-value pairs. The key is a
- void* used for insertion, removal and lookup. The value is a
- pointer. Dictionaries provide very fast insertion and lookup.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_q3ptrdict.qdoc 0
- In this example we use a dictionary to add an extra property (a
- char*) to the line edits we're using.
-
- See Q3Dict for full details, including the choice of dictionary
- size, and how deletions are handled.
-
- \sa Q3PtrDictIterator, Q3Dict, Q3AsciiDict, Q3IntDict
-*/
-
-
-/*!
- \fn Q3PtrDict::Q3PtrDict( int size )
-
- Constructs a dictionary using an internal hash array with the size
- \a size.
-
- Setting \a size to a suitably large prime number (equal to or
- greater than the expected number of entries) makes the hash
- distribution better and improves lookup performance.
-*/
-
-/*!
- \fn Q3PtrDict::Q3PtrDict( const Q3PtrDict<type> &dict )
-
- Constructs a copy of \a dict.
-
- Each item in \a dict is inserted into this dictionary. Only the
- pointers are copied (shallow copy).
-*/
-
-/*!
- \fn Q3PtrDict::~Q3PtrDict()
-
- Removes all items from the dictionary and destroys it.
-
- All iterators that access this dictionary will be reset.
-
- \sa setAutoDelete()
-*/
-
-/*!
- \fn Q3PtrDict<type> &Q3PtrDict::operator=(const Q3PtrDict<type> &dict)
-
- Assigns \a dict to this dictionary and returns a reference to this
- dictionary.
-
- This dictionary is first cleared and then each item in \a dict is
- inserted into the dictionary. Only the pointers are copied
- (shallow copy), unless newItem() has been reimplemented.
-*/
-
-/*!
- \fn uint Q3PtrDict::count() const
-
- Returns the number of items in the dictionary.
-
- \sa isEmpty()
-*/
-
-/*!
- \fn uint Q3PtrDict::size() const
-
- Returns the size of the internal hash table (as specified in the
- constructor).
-
- \sa count()
-*/
-
-/*!
- \fn void Q3PtrDict::resize( uint newsize )
-
- Changes the size of the hash table to \a newsize. The contents of
- the dictionary are preserved, but all iterators on the dictionary
- become invalid.
-*/
-
-/*!
- \fn bool Q3PtrDict::isEmpty() const
-
- Returns TRUE if the dictionary is empty; otherwise returns FALSE.
-
- \sa count()
-*/
-
-/*!
- \fn void Q3PtrDict::insert( void *key, const type *item )
-
- Inserts the \a key with the \a item into the dictionary.
-
- Multiple items can have the same key, in which case only the last
- item will be accessible using \l operator[]().
-
- \a item may not be 0.
-
- \sa replace()
-*/
-
-/*!
- \fn void Q3PtrDict::replace( void *key, const type *item )
-
- If the dictionary has key \a key, this key's item is replaced with
- \a item. If the dictionary doesn't contain key \a key, \a item is
- inserted into the dictionary using key \a key.
-
- \a item may not be 0.
-
- Equivalent to
- \snippet doc/src/snippets/code/doc_src_q3ptrdict.qdoc 1
-
- If there are two or more items with equal keys, then the most
- recently inserted item will be replaced.
-
- \sa insert()
-*/
-
-/*!
- \fn bool Q3PtrDict::remove( void *key )
-
- Removes the item associated with \a key from the dictionary.
- Returns TRUE if successful, i.e. if \a key is in the dictionary;
- otherwise returns FALSE.
-
- If there are two or more items with equal keys, then the most
- recently inserted item will be removed.
-
- The removed item is deleted if \link
- Q3PtrCollection::setAutoDelete() auto-deletion\endlink is enabled.
-
- All dictionary iterators that refer to the removed item will be
- set to point to the next item in the dictionary traversal order.
-
- \sa take(), clear(), setAutoDelete()
-*/
-
-/*!
- \fn type *Q3PtrDict::take( void *key )
-
- Takes the item associated with \a key out of the dictionary
- without deleting it (even if \link Q3PtrCollection::setAutoDelete()
- auto-deletion\endlink is enabled).
-
- If there are two or more items with equal keys, then the most
- recently inserted item will be removed.
-
- Returns a pointer to the item taken out, or 0 if the key does not
- exist in the dictionary.
-
- All dictionary iterators that refer to the taken item will be set
- to point to the next item in the dictionary traversal order.
-
- \sa remove(), clear(), setAutoDelete()
-*/
-
-/*!
- \fn void Q3PtrDict::clear()
-
- Removes all items from the dictionary.
-
- The removed items are deleted if \link
- Q3PtrCollection::setAutoDelete() auto-deletion\endlink is enabled.
-
- All dictionary iterators that access this dictionary will be
- reset.
-
- \sa remove(), take(), setAutoDelete()
-*/
-
-/*!
- \fn type *Q3PtrDict::find( void *key ) const
-
- Returns the item associated with \a key, or 0 if the key does not
- exist in the dictionary.
-
- If there are two or more items with equal keys, then the most
- recently inserted item will be found.
-
- Equivalent to operator[].
-
- \sa operator[]()
-*/
-
-/*!
- \fn type *Q3PtrDict::operator[]( void *key ) const
-
- Returns the item associated with \a key, or 0 if the key does not
- exist in the dictionary.
-
- If there are two or more items with equal keys, then the most
- recently inserted item will be found.
-
- Equivalent to the find() function.
-
- \sa find()
-*/
-
-/*!
- \fn void Q3PtrDict::statistics() const
-
- Debugging-only function that prints out the dictionary
- distribution using qDebug().
-*/
-
-/*!
- \fn QDataStream& Q3PtrDict::read( QDataStream &s, Q3PtrCollection::Item &item )
-
- Reads a dictionary item from the stream \a s and returns a
- reference to the stream.
-
- The default implementation sets \a item to 0.
-
- \sa write()
-*/
-
-/*!
- \fn QDataStream& Q3PtrDict::write( QDataStream &s, Q3PtrCollection::Item item) const
-
- Writes a dictionary \a item to the stream \a s and returns a
- reference to the stream.
-
- \sa read()
-*/
-
-/*!
- \class Q3PtrDictIterator
- \brief The Q3PtrDictIterator class provides an iterator for Q3PtrDict collections.
- \compat
-
- Q3PtrDictIterator is implemented as a template class. Define a
- template instance Q3PtrDictIterator\<X\> to create a dictionary
- iterator that operates on Q3PtrDict\<X\> (dictionary of X*).
-
- Example:
- \snippet doc/src/snippets/code/doc_src_q3ptrdict.qdoc 2
- In the example we insert some line edits into a dictionary,
- associating a string with each. We then iterate over the
- dictionary printing the associated strings.
-
- Multiple iterators may independently traverse the same dictionary.
- A Q3PtrDict knows about all the iterators that are operating on the
- dictionary. When an item is removed from the dictionary, Q3PtrDict
- updates all iterators that refer the removed item to point to the
- next item in the traversing order.
-
- \sa Q3PtrDict
-*/
-
-/*!
- \fn Q3PtrDictIterator::Q3PtrDictIterator( const Q3PtrDict<type> &dict )
-
- Constructs an iterator for \a dict. The current iterator item is
- set to point on the first item in the \a dict.
-*/
-
-/*!
- \fn Q3PtrDictIterator::~Q3PtrDictIterator()
-
- Destroys the iterator.
-*/
-
-/*!
- \fn uint Q3PtrDictIterator::count() const
-
- Returns the number of items in the dictionary this iterator
- operates on.
-
- \sa isEmpty()
-*/
-
-/*!
- \fn bool Q3PtrDictIterator::isEmpty() const
-
- Returns TRUE if the dictionary is empty; otherwise returns FALSE.
-
- \sa count()
-*/
-
-/*!
- \fn type *Q3PtrDictIterator::toFirst()
-
- Sets the current iterator item to point to the first item in the
- dictionary and returns a pointer to the item. If the dictionary is
- empty, it sets the current item to 0 and returns 0.
-*/
-
-/*!
- \fn Q3PtrDictIterator::operator type *() const
-
- Cast operator. Returns a pointer to the current iterator item.
- Same as current().
-*/
-
-/*!
- \fn type *Q3PtrDictIterator::current() const
-
- Returns a pointer to the current iterator item's value.
-*/
-
-/*!
- \fn void *Q3PtrDictIterator::currentKey() const
-
- Returns the current iterator item's key.
-*/
-
-/*!
- \fn type *Q3PtrDictIterator::operator()()
-
- Makes the succeeding item current and returns the original current
- item.
-
- If the current iterator item was the last item in the dictionary
- or if it was 0, 0 is returned.
-*/
-
-/*!
- \fn type *Q3PtrDictIterator::operator++()
-
- Prefix ++ makes the succeeding item current and returns the new
- current item.
-
- If the current iterator item was the last item in the dictionary
- or if it was 0, 0 is returned.
-*/
-
-/*!
- \fn type *Q3PtrDictIterator::operator+=( uint jump )
-
- Sets the current item to the item \a jump positions after the
- current item and returns a pointer to that item.
-
- If that item is beyond the last item or if the dictionary is
- empty, it sets the current item to 0 and returns 0.
-*/
diff --git a/doc/src/classes/q3ptrlist.qdoc b/doc/src/classes/q3ptrlist.qdoc
deleted file mode 100644
index b2b9c3fa8..000000000
--- a/doc/src/classes/q3ptrlist.qdoc
+++ /dev/null
@@ -1,1157 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class Q3PtrList
- \brief The Q3PtrList class is a template class that provides a list.
- \compat
-
- Q3ValueList is an STL-compatible alternative to this class.
-
- Define a template instance Q3PtrList\<X\> to create a list that
- operates on pointers to X (X*).
-
- The list class is indexable and has a \link at() current
- index\endlink and a \link current() current item\endlink. The
- first item corresponds to index position 0. The current index is
- -1 if the current item is 0.
-
- Items are inserted with prepend(), insert() or append(). Items are
- removed with remove(), removeRef(), removeFirst() and
- removeLast(). You can search for an item using find(), findNext(),
- findRef() or findNextRef(). The list can be sorted with sort().
- You can count the number of occurrences of an item with contains()
- or containsRef(). You can get a pointer to the current item with
- current(), to an item at a particular index position in the list
- with at() or to the first or last item with getFirst() and
- getLast(). You can also iterate over the list with first(),
- last(), next() and prev() (which all update current()). The list's
- deletion property is set with setAutoDelete().
-
- \target example
- Example:
- \snippet doc/src/snippets/code/doc_src_q3ptrlist.qdoc 0
-
- The output is
- \snippet doc/src/snippets/code/doc_src_q3ptrlist.qdoc 1
-
- Q3PtrList has several member functions for traversing the list, but
- using a Q3PtrListIterator can be more practical. Multiple list
- iterators may traverse the same list, independently of each other
- and of the current list item.
-
- In the example above we make the call setAutoDelete(true).
- Enabling auto-deletion tells the list to delete items that are
- removed. The default is to not delete items when they are removed
- but this would cause a memory leak in the example because there
- are no other references to the list items.
-
- When inserting an item into a list only the pointer is copied, not
- the item itself, i.e. a shallow copy. It is possible to make the
- list copy all of the item's data (deep copy) when an item is
- inserted. insert(), inSort() and append() call the virtual
- function Q3PtrCollection::newItem() for the item to be inserted.
- Inherit a list and reimplement newItem() to have deep copies.
-
- When removing an item from a list, the virtual function
- Q3PtrCollection::deleteItem() is called. Q3PtrList's default
- implementation is to delete the item if auto-deletion is enabled.
-
- The virtual function compareItems() can be reimplemented to
- compare two list items. This function is called from all list
- functions that need to compare list items, for instance
- remove(const type*). If you only want to deal with pointers, there
- are functions that compare pointers instead, for instance
- removeRef(const type*). These functions are somewhat faster than
- those that call compareItems().
-
- List items are stored as \c void* in an internal Q3LNode, which
- also holds pointers to the next and previous list items. The
- functions currentNode(), removeNode(), and takeNode() operate
- directly on the Q3LNode, but they should be used with care. The
- data component of the node is available through Q3LNode::getData().
-
- The Q3StrList class is a list of \c char*.
- It reimplements newItem(), deleteItem() and compareItems(). (But
- see QStringList for a list of Unicode QStrings.)
-
- \sa Q3PtrListIterator
-*/
-
-
-/*!
- \fn Q3PtrList::Q3PtrList()
-
- Constructs an empty list.
-*/
-
-/*!
- \fn Q3PtrList::Q3PtrList( const Q3PtrList<type> &list )
-
- Constructs a copy of \a list.
-
- Each item in \a list is \link append() appended\endlink to this
- list. Only the pointers are copied (shallow copy).
-*/
-
-/*!
- \fn Q3PtrList::~Q3PtrList()
-
- Removes all items from the list and destroys the list.
-
- All list iterators that access this list will be reset.
-
- \sa setAutoDelete()
-*/
-
-/*!
- \fn Q3PtrList<type> &Q3PtrList::operator=(const Q3PtrList<type> &list)
-
- Assigns \a list to this list and returns a reference to this list.
-
- This list is first cleared and then each item in \a list is \link
- append() appended\endlink to this list. Only the pointers are
- copied (shallow copy) unless newItem() has been reimplemented.
-*/
-
-/*!
- \fn bool Q3PtrList::operator==(const Q3PtrList<type> &list ) const
-
- Compares this list with \a list. Returns TRUE if the lists contain
- the same data; otherwise returns FALSE.
-*/
-
-/*!
- \fn uint Q3PtrList::count() const
-
- Returns the number of items in the list.
-
- \sa isEmpty()
-*/
-
-/*!
- \fn bool Q3PtrList::operator!=(const Q3PtrList<type> &list ) const
-
- Compares this list with \a list. Returns TRUE if the lists contain
- different data; otherwise returns FALSE.
-*/
-
-
-/*!
- \fn void Q3PtrList::sort()
-
- Sorts the list by the result of the virtual compareItems()
- function.
-
- The heap sort algorithm is used for sorting. It sorts n items with
- O(n*log n) comparisons. This is the asymptotic optimal solution of
- the sorting problem.
-
- If the items in your list support operator<() and operator==(),
- you might be better off with Q3SortedList because it implements the
- compareItems() function for you using these two operators.
-
- \sa inSort()
-*/
-
-/*!
- \fn bool Q3PtrList::isEmpty() const
-
- Returns TRUE if the list is empty; otherwise returns FALSE.
-
- \sa count()
-*/
-
-/*!
- \fn bool Q3PtrList::insert( uint index, const type *item )
-
- Inserts the \a item at position \a index in the list.
-
- Returns TRUE if successful, i.e. if \a index is in range;
- otherwise returns FALSE. The valid range is 0 to count()
- (inclusively). The item is appended if \a index == count().
-
- The inserted item becomes the current list item.
-
- \a item must not be 0.
-
- \sa append(), current(), replace()
-*/
-
-/*!
- \fn bool Q3PtrList::replace( uint index, const type *item )
-
- Replaces the item at position \a index with the new \a item.
-
- Returns TRUE if successful, i.e. \a index is in the range 0 to
- count()-1.
-
- \sa append(), current(), insert()
-*/
-
-/*!
- \fn void Q3PtrList::inSort( const type *item )
-
- Inserts the \a item at its sorted position in the list.
-
- The sort order depends on the virtual compareItems() function. All
- items must be inserted with inSort() to maintain the sorting
- order.
-
- The inserted item becomes the current list item.
-
- \a item must not be 0.
-
- \warning Using inSort() is slow. An alternative, especially if you
- have lots of items, is to simply append() or insert() them and
- then use sort(). inSort() takes up to O(n) compares. That means
- inserting n items in your list will need O(n^2) compares whereas
- sort() only needs O(n*log n) for the same task. So use inSort()
- only if you already have a presorted list and want to insert just
- a few additional items.
-
- \sa insert(), compareItems(), current(), sort()
-*/
-
-/*!
- \fn void Q3PtrList::append( const type *item )
-
- Inserts the \a item at the end of the list.
-
- The inserted item becomes the current list item. This is
- equivalent to \c{insert( count(), item )}.
-
- \a item must not be 0.
-
- \sa insert(), current(), prepend()
-*/
-
-/*!
- \fn void Q3PtrList::prepend( const type *item )
-
- Inserts the \a item at the start of the list.
-
- The inserted item becomes the current list item. This is
- equivalent to \c{insert( 0, item )}.
-
- \a item must not be 0.
-
- \sa append(), insert(), current()
-*/
-
-/*!
- \fn bool Q3PtrList::remove( uint index )
-
- Removes the item at position \a index in the list.
-
- Returns TRUE if successful, i.e. if \a index is in range;
- otherwise returns FALSE. The valid range is \c{0..(count() - 1)}
- inclusive.
-
- The removed item is deleted if \link setAutoDelete()
- auto-deletion\endlink is enabled.
-
- The item after the removed item becomes the new current list item
- if the removed item is not the last item in the list. If the last
- item is removed, the new last item becomes the current item.
-
- All list iterators that refer to the removed item will be set to
- point to the new current item.
-
- \sa take(), clear(), setAutoDelete(), current() removeRef()
-*/
-
-/*!
- \fn bool Q3PtrList::remove()
-
- \overload
-
- Removes the current list item.
-
- Returns TRUE if successful, i.e. if the current item isn't 0;
- otherwise returns FALSE.
-
- The removed item is deleted if \link setAutoDelete()
- auto-deletion\endlink is enabled.
-
- The item after the removed item becomes the new current list item
- if the removed item is not the last item in the list. If the last
- item is removed, the new last item becomes the current item. The
- current item is set to 0 if the list becomes empty.
-
- All list iterators that refer to the removed item will be set to
- point to the new current item.
-
- \sa take(), clear(), setAutoDelete(), current() removeRef()
-*/
-
-/*!
- \fn bool Q3PtrList::remove( const type *item )
-
- \overload
-
- Removes the first occurrence of \a item from the list.
-
- Returns TRUE if successful, i.e. if \a item is in the list;
- otherwise returns FALSE.
-
- The removed item is deleted if \link setAutoDelete()
- auto-deletion\endlink is enabled.
-
- The compareItems() function is called when searching for the item
- in the list. If compareItems() is not reimplemented, it is more
- efficient to call removeRef().
-
- If \a item is NULL then the current item is removed from the list.
-
- The item after the removed item becomes the new current list item
- if the removed item is not the last item in the list. If the last
- item is removed, the new last item becomes the current item. The
- current item is set to 0 if the list becomes empty.
-
- All list iterators that refer to the removed item will be set to
- point to the new current item.
-
- \sa removeRef(), take(), clear(), setAutoDelete(), compareItems(),
- current()
-*/
-
-/*!
- \fn bool Q3PtrList::removeRef( const type *item )
-
- Removes the first occurrence of \a item from the list.
-
- Returns TRUE if successful, i.e. if \a item is in the list;
- otherwise returns FALSE.
-
- The removed item is deleted if \link setAutoDelete()
- auto-deletion\endlink is enabled.
-
- Equivalent to:
- \snippet doc/src/snippets/code/doc_src_q3ptrlist.qdoc 2
-
- The item after the removed item becomes the new current list item
- if the removed item is not the last item in the list. If the last
- item is removed, the new last item becomes the current item. The
- current item is set to 0 if the list becomes empty.
-
- All list iterators that refer to the removed item will be set to
- point to the new current item.
-
- \sa remove(), clear(), setAutoDelete(), current()
-*/
-
-/*!
- \fn void Q3PtrList::removeNode( Q3LNode *node )
-
- Removes the \a node from the list.
-
- This node must exist in the list, otherwise the program may crash.
-
- The removed item is deleted if \link setAutoDelete()
- auto-deletion\endlink is enabled.
-
- The first item in the list will become the new current list item.
- The current item is set to 0 if the list becomes empty.
-
- All list iterators that refer to the removed item will be set to
- point to the item succeeding this item or to the preceding item if
- the removed item was the last item.
-
- \warning Do not call this function unless you are an expert.
-
- \sa takeNode(), currentNode() remove() removeRef()
-*/
-
-/*!
- \fn bool Q3PtrList::removeFirst()
-
- Removes the first item from the list. Returns TRUE if successful,
- i.e. if the list isn't empty; otherwise returns FALSE.
-
- The removed item is deleted if \link setAutoDelete()
- auto-deletion\endlink is enabled.
-
- The first item in the list becomes the new current list item. The
- current item is set to 0 if the list becomes empty.
-
- All list iterators that refer to the removed item will be set to
- point to the new current item.
-
- \sa removeLast(), setAutoDelete(), current() remove()
-*/
-
-/*!
- \fn bool Q3PtrList::removeLast()
-
- Removes the last item from the list. Returns TRUE if successful,
- i.e. if the list isn't empty; otherwise returns FALSE.
-
- The removed item is deleted if \link setAutoDelete()
- auto-deletion\endlink is enabled.
-
- The last item in the list becomes the new current list item. The
- current item is set to 0 if the list becomes empty.
-
- All list iterators that refer to the removed item will be set to
- point to the new current item.
-
- \sa removeFirst(), setAutoDelete(), current()
-*/
-
-/*!
- \fn type *Q3PtrList::take( uint index )
-
- Takes the item at position \a index out of the list without
- deleting it (even if \link setAutoDelete() auto-deletion\endlink
- is enabled).
-
- Returns a pointer to the item taken out of the list, or 0 if the
- index is out of range. The valid range is \c{0..(count() - 1)}
- inclusive.
-
- The item after the removed item becomes the new current list item
- if the removed item is not the last item in the list. If the last
- item is removed, the new last item becomes the current item. The
- current item is set to 0 if the list becomes empty.
-
- All list iterators that refer to the taken item will be set to
- point to the new current item.
-
- \sa remove(), clear(), current()
-*/
-
-/*!
- \fn type *Q3PtrList::take()
-
- \overload
-
- Takes the current item out of the list without deleting it (even
- if \link setAutoDelete() auto-deletion\endlink is enabled).
-
- Returns a pointer to the item taken out of the list, or 0 if
- the current item is 0.
-
- The item after the removed item becomes the new current list item
- if the removed item is not the last item in the list. If the last
- item is removed, the new last item becomes the current item. The
- current item is set to 0 if the list becomes empty.
-
- All list iterators that refer to the taken item will be set to
- point to the new current item.
-
- \sa remove(), clear(), current()
-*/
-
-/*!
- \fn type *Q3PtrList::takeNode( Q3LNode *node )
-
- Takes the \a node out of the list without deleting its item (even
- if \link setAutoDelete() auto-deletion\endlink is enabled).
- Returns a pointer to the item taken out of the list.
-
- This node must exist in the list, otherwise the program may crash.
-
- The first item in the list becomes the new current list item.
-
- All list iterators that refer to the taken item will be set to
- point to the item succeeding this item or to the preceding item if
- the taken item was the last item.
-
- \warning Do not call this function unless you are an expert.
-
- \sa removeNode(), currentNode()
-*/
-
-/*!
- \fn void Q3PtrList::clear()
-
- Removes all items from the list.
-
- The removed items are deleted if \link setAutoDelete()
- auto-deletion\endlink is enabled.
-
- All list iterators that access this list will be reset.
-
- \sa remove(), take(), setAutoDelete()
-*/
-
-/*!
- \fn int Q3PtrList::find( const type *item )
-
- Finds the first occurrence of \a item in the list.
-
- If the item is found, the list sets the current item to point to
- the found item and returns the index of this item. If the item is
- not found, the list sets the current item to 0, the current
- index to -1, and returns -1.
-
- The compareItems() function is called when searching for the item
- in the list. If compareItems() is not reimplemented, it is more
- efficient to call findRef().
-
- \sa findNext(), findRef(), compareItems(), current()
-*/
-
-/*!
- \fn int Q3PtrList::findNext( const type *item )
-
- Finds the next occurrence of \a item in the list, starting from
- the current list item.
-
- If the item is found, the list sets the current item to point to
- the found item and returns the index of this item. If the item is
- not found, the list sets the current item to 0, the current
- index to -1, and returns -1.
-
- The compareItems() function is called when searching for the item
- in the list. If compareItems() is not reimplemented, it is more
- efficient to call findNextRef().
-
- \sa find(), findNextRef(), compareItems(), current()
-*/
-
-/*!
- \fn int Q3PtrList::findRef( const type *item )
-
- Finds the first occurrence of \a item in the list.
-
- If the item is found, the list sets the current item to point to
- the found item and returns the index of this item. If the item is
- not found, the list sets the current item to 0, the current
- index to -1, and returns -1.
-
- Calling this function is much faster than find() because find()
- compares \a item with each list item using compareItems(), whereas
- this function only compares the pointers.
-
- \sa findNextRef(), find(), current()
-*/
-
-/*!
- \fn int Q3PtrList::findNextRef( const type *item )
-
- Finds the next occurrence of \a item in the list, starting from
- the current list item.
-
- If the item is found, the list sets the current item to point to
- the found item and returns the index of this item. If the item is
- not found, the list sets the current item to 0, the current
- index to -1, and returns -1.
-
- Calling this function is much faster than findNext() because
- findNext() compares \a item with each list item using
- compareItems(), whereas this function only compares the pointers.
-
- \sa findRef(), findNext(), current()
-*/
-
-/*!
- \fn uint Q3PtrList::contains( const type *item ) const
-
- Returns the number of occurrences of \a item in the list.
-
- The compareItems() function is called when looking for the \a item
- in the list. If compareItems() is not reimplemented, it is more
- efficient to call containsRef().
-
- This function does not affect the current list item.
-
- \sa containsRef(), compareItems()
-*/
-
-/*!
- \fn uint Q3PtrList::containsRef( const type *item ) const
-
- Returns the number of occurrences of \a item in the list.
-
- Calling this function is much faster than contains() because
- contains() compares \a item with each list item using
- compareItems(), whereas his function only compares the pointers.
-
- This function does not affect the current list item.
-
- \sa contains()
-*/
-
-/*!
- \fn type *Q3PtrList::at( uint index )
-
- Returns a pointer to the item at position \a index in the list, or
- 0 if the index is out of range.
-
- Sets the current list item to this item if \a index is valid. The
- valid range is \c{0..(count() - 1)} inclusive.
-
- This function is very efficient. It starts scanning from the first
- item, last item, or current item, whichever is closest to \a
- index.
-
- \sa current()
-*/
-
-/*!
- \fn int Q3PtrList::at() const
-
- \overload
-
- Returns the index of the current list item. The returned value is
- -1 if the current item is 0.
-
- \sa current()
-*/
-
-/*!
- \fn type *Q3PtrList::current() const
-
- Returns a pointer to the current list item. The current item may
- be 0 (implies that the current index is -1).
-
- \sa at()
-*/
-
-/*!
- \fn Q3LNode *Q3PtrList::currentNode() const
-
- Returns a pointer to the current list node.
-
- The node can be kept and removed later using removeNode(). The
- advantage is that the item can be removed directly without
- searching the list.
-
- \warning Do not call this function unless you are an expert.
-
- \sa removeNode(), takeNode(), current()
-*/
-
-/*!
- \fn type *Q3PtrList::getFirst() const
-
- Returns a pointer to the first item in the list, or 0 if the list
- is empty.
-
- This function does not affect the current list item.
-
- \sa first(), getLast()
-*/
-
-/*!
- \fn type *Q3PtrList::getLast() const
-
- Returns a pointer to the last item in the list, or 0 if the list
- is empty.
-
- This function does not affect the current list item.
-
- \sa last(), getFirst()
-*/
-
-/*!
- \fn type *Q3PtrList::first()
-
- Returns a pointer to the first item in the list and makes this the
- current list item; returns 0 if the list is empty.
-
- \sa getFirst(), last(), next(), prev(), current()
-*/
-
-/*!
- \fn type *Q3PtrList::last()
-
- Returns a pointer to the last item in the list and makes this the
- current list item; returns 0 if the list is empty.
-
- \sa getLast(), first(), next(), prev(), current()
-*/
-
-/*!
- \fn type *Q3PtrList::next()
-
- Returns a pointer to the item succeeding the current item. Returns
- 0 if the current item is 0 or equal to the last item.
-
- Makes the succeeding item current. If the current item before this
- function call was the last item, the current item will be set to
- 0. If the current item was 0, this function does nothing.
-
- \sa first(), last(), prev(), current()
-*/
-
-/*!
- \fn type *Q3PtrList::prev()
-
- Returns a pointer to the item preceding the current item. Returns
- 0 if the current item is 0 or equal to the first item.
-
- Makes the preceding item current. If the current item before this
- function call was the first item, the current item will be set to
- 0. If the current item was 0, this function does nothing.
-
- \sa first(), last(), next(), current()
-*/
-
-/*!
- \fn void Q3PtrList::toVector( Q3GVector *vec ) const
-
- Stores all list items in the vector \a vec.
-
- The vector must be of the same item type, otherwise the result
- will be undefined.
-*/
-
-/*!
- \typedef Q3PtrList::iterator
-
- \internal
-*/
-
-/*!
- \typedef Q3PtrList::Iterator
-
- \internal
-*/
-
-/*!
- \typedef Q3PtrList::ConstIterator
-
- \internal
-*/
-
-/*!
- \typedef Q3PtrList::const_iterator
-
- \internal
-*/
-
-/*!
- \fn Q3PtrList::constBegin() const
-
- \internal
-*/
-
-/*!
- \fn Q3PtrList::constEnd() const
-
- \internal
-*/
-
-/*!
- \fn Q3PtrList::erase(Iterator)
-
- \internal
-*/
-
-
-/*****************************************************************************
- Q3PtrListIterator documentation
- *****************************************************************************/
-
-/*!
- \class Q3PtrListIterator
- \brief The Q3PtrListIterator class provides an iterator for
- Q3PtrList collections.
- \compat
-
- Define a template instance Q3PtrListIterator\<X\> to create a list
- iterator that operates on Q3PtrList\<X\> (list of X*).
-
- The following example is similar to the
- example in the Q3PtrList class documentation,
- but it uses Q3PtrListIterator. The class Employee is
- defined there.
-
- \snippet doc/src/snippets/code/doc_src_q3ptrlist.qdoc 3
-
- The output is
- \snippet doc/src/snippets/code/doc_src_q3ptrlist.qdoc 4
-
- Using a list iterator is a more robust way of traversing the list
- than using the Q3PtrList member functions \link Q3PtrList::first()
- first\endlink(), \link Q3PtrList::next() next\endlink(), \link
- Q3PtrList::current() current\endlink(), etc., as many iterators can
- traverse the same list independently.
-
- An iterator has its own current list item and can get the next and
- previous list items. It doesn't modify the list in any way.
-
- When an item is removed from the list, all iterators that point to
- that item are updated to point to Q3PtrList::current() instead to
- avoid dangling references.
-
- \sa Q3PtrList
-*/
-
-/*!
- \fn Q3PtrListIterator::Q3PtrListIterator( const Q3PtrList<type> &list )
-
- Constructs an iterator for \a list. The current iterator item is
- set to point on the first item in the \a list.
-*/
-
-/*!
- \fn Q3PtrListIterator::~Q3PtrListIterator()
-
- Destroys the iterator.
-*/
-
-/*!
- \fn uint Q3PtrListIterator::count() const
-
- Returns the number of items in the list this iterator operates on.
-
- \sa isEmpty()
-*/
-
-/*!
- \fn bool Q3PtrListIterator::isEmpty() const
-
- Returns TRUE if the list is empty; otherwise returns FALSE.
-
- \sa count()
-*/
-
-/*!
- \fn bool Q3PtrListIterator::atFirst() const
-
- Returns TRUE if the current iterator item is the first list item;
- otherwise returns FALSE.
-
- \sa toFirst(), atLast()
-*/
-
-/*!
- \fn bool Q3PtrListIterator::atLast() const
-
- Returns TRUE if the current iterator item is the last list item;
- otherwise returns FALSE.
-
- \sa toLast(), atFirst()
-*/
-
-/*!
- \fn type *Q3PtrListIterator::toFirst()
-
- Sets the current iterator item to point to the first list item and
- returns a pointer to the item. Sets the current item to 0 and
- returns 0 if the list is empty.
-
- \sa toLast(), atFirst()
-*/
-
-/*!
- \fn type *Q3PtrListIterator::toLast()
-
- Sets the current iterator item to point to the last list item and
- returns a pointer to the item. Sets the current item to 0 and
- returns 0 if the list is empty.
-
- \sa toFirst(), atLast()
-*/
-
-/*!
- \fn Q3PtrListIterator::operator type *() const
-
- Cast operator. Returns a pointer to the current iterator item.
- Same as current().
-*/
-
-/*!
- \fn type *Q3PtrListIterator::operator*()
-
- Asterisk operator. Returns a pointer to the current iterator item.
- Same as current().
-*/
-
-/*!
- \fn type *Q3PtrListIterator::current() const
-
- Returns a pointer to the current iterator item. If the iterator is
- positioned before the first item in the list or after the last
- item in the list, 0 is returned.
-*/
-
-/*!
- \fn type *Q3PtrListIterator::operator()()
-
- Makes the succeeding item current and returns the original current
- item.
-
- If the current iterator item was the last item in the list or if
- it was 0, 0 is returned.
-*/
-
-/*!
- \fn type *Q3PtrListIterator::operator++()
-
- Prefix ++ makes the succeeding item current and returns the new
- current item.
-
- If the current iterator item was the last item in the list or if
- it was 0, 0 is returned.
-*/
-
-/*!
- \fn type *Q3PtrListIterator::operator+=( uint jump )
-
- Sets the current item to the item \a jump positions after the
- current item and returns a pointer to that item.
-
- If that item is beyond the last item or if the list is empty, it
- sets the current item to 0 and returns 0
-*/
-
-/*!
- \fn type *Q3PtrListIterator::operator--()
-
- Prefix - makes the preceding item current and returns the new
- current item.
-
- If the current iterator item was the first item in the list or if
- it was 0, 0 is returned.
-*/
-
-/*!
- \fn type *Q3PtrListIterator::operator-=( uint jump )
-
- Returns the item \a jump positions before the current item or 0
- if it is beyond the first item. Makes this the current item.
-*/
-
-/*!
- \fn Q3PtrListIterator<type>& Q3PtrListIterator::operator=( const Q3PtrListIterator<type> &it )
-
- Assignment. Makes a copy of the iterator \a it and returns a
- reference to this iterator.
-*/
-
-/*!
- \class Q3StrList
- \brief The Q3StrList class provides a doubly-linked list of char*.
- \compat
-
- If you want a string list of \l{QString}s use QStringList.
-
- This class is a Q3PtrList\<char\> instance (a list of char*).
-
- Q3StrList can make deep or shallow copies of the strings that are
- inserted.
-
- A deep copy means that memory is allocated for the string and then
- the string data is copied into that memory. A shallow copy is just
- a copy of the pointer value and not of the string data itself.
-
- The disadvantage of shallow copies is that because a pointer can
- be deleted only once, the program must put all strings in a
- central place and know when it is safe to delete them (i.e. when
- the strings are no longer referenced by other parts of the
- program). This can make the program more complex. The advantage of
- shallow copies is that they consume far less memory than deep
- copies. It is also much faster to copy a pointer (typically 4 or 8
- bytes) than to copy string data.
-
- A Q3StrList that operates on deep copies will, by default, turn on
- auto-deletion (see setAutoDelete()). Thus, by default Q3StrList
- will deallocate any string copies it allocates.
-
- The virtual compareItems() function is reimplemented and does a
- case-sensitive string comparison. The inSort() function will
- insert strings in sorted order. In general it is fastest to insert
- the strings as they come and sort() at the end; inSort() is useful
- when you just have to add a few extra strings to an already sorted
- list.
-
- The Q3StrListIterator class is an iterator for Q3StrList.
-*/
-
-/*!
- \fn Q3StrList::operator QList<QByteArray>() const
-
- Automatically converts a Q3StrList into a QList<QByteArray>.
-*/
-
-/*!
- \fn Q3StrList::Q3StrList( bool deepCopies )
-
- Constructs an empty list of strings. Will make deep copies of all
- inserted strings if \a deepCopies is TRUE, or use shallow copies
- if \a deepCopies is FALSE.
-*/
-
-/*!
- \fn Q3StrList::Q3StrList(const Q3StrList &list)
- \fn Q3StrList::Q3StrList(const QList<QByteArray> &list)
-
- Constructs a copy of \a list.
-*/
-
-/*!
- \fn Q3StrList::~Q3StrList()
-
- Destroys the list. All strings are removed.
-*/
-
-/*!
- \fn Q3StrList& Q3StrList::operator=(const Q3StrList& list)
- \fn Q3StrList &Q3StrList::operator=(const QList<QByteArray> &list)
-
- Assigns \a list to this list and returns a reference to this list.
-*/
-
-/*!
- \class Q3StrIList
- \brief The Q3StrIList class provides a doubly-linked list of char*
- with case-insensitive comparison.
- \compat
-
- This class is a Q3PtrList\<char\> instance (a list of char*).
-
- Q3StrIList is identical to Q3StrList except that the virtual
- compareItems() function is reimplemented to compare strings
- case-insensitively. The inSort() function inserts strings in a
- sorted order. In general it is fastest to insert the strings as
- they come and sort() at the end; inSort() is useful when you just
- have to add a few extra strings to an already sorted list.
-
- The Q3StrListIterator class works for Q3StrIList.
-
- \sa QStringList
-*/
-
-/*!
- \fn Q3StrIList::Q3StrIList( bool deepCopies )
-
- Constructs a list of strings. Will make deep copies of all
- inserted strings if \a deepCopies is TRUE, or use shallow copies
- if \a deepCopies is FALSE.
-*/
-
-/*!
- \fn Q3StrIList::~Q3StrIList()
-
- Destroys the list. All strings are removed.
-*/
-
-/*!
- \fn int Q3PtrList::compareItems( Q3PtrCollection::Item item1,
- Q3PtrCollection::Item item2 )
-
- This virtual function compares two list items.
-
- Returns:
- \list
- \i zero if \a item1 == \a item2
- \i nonzero if \a item1 != \a item2
- \endlist
-
- This function returns \e int rather than \e bool so that
- reimplementations can return three values and use it to sort by:
-
- \list
- \i 0 if \a item1 == \a item2
- \i \> 0 (positive integer) if \a item1 \> \a item2
- \i \< 0 (negative integer) if \a item1 \< \a item2
- \endlist
-
- inSort() requires that compareItems() is implemented as described
- here.
-
- This function should not modify the list because some const
- functions call compareItems().
-
- The default implementation compares the pointers.
-*/
-
-/*!
- \fn QDataStream& Q3PtrList::read( QDataStream& s,
- Q3PtrCollection::Item& item )
-
- Reads a list item from the stream \a s and returns a reference to
- the stream.
-
- The default implementation sets \a item to 0.
-
- \sa write()
-*/
-
-/*!
- \fn QDataStream& Q3PtrList::write( QDataStream& s,
- Q3PtrCollection::Item item ) const
-
- Writes a list item, \a item to the stream \a s and returns a
- reference to the stream.
-
- The default implementation does nothing.
-
- \sa read()
-*/
-
-/*! \fn iterator Q3PtrList::begin()
-\internal
-*/
-/*! \fn const_iterator Q3PtrList::begin() const
-\internal
-*/
-/*! \fn iterator Q3PtrList::end()
-\internal
-*/
-/*! \fn const_iterator Q3PtrList::end() const
-\internal
-*/
-
-/*!
- \class Q3StrListIterator
- \brief The Q3StrListIterator class is an iterator for the Q3StrList
- and Q3StrIList classes.
- \compat
-
- This class is a Q3PtrListIterator\<char\> instance. It can traverse
- the strings in the Q3StrList and Q3StrIList classes.
-*/
-
-
-/*
- \class Q3PtrListAutoDelete
- \brief The Q3PtrListAutoDelete class is a template class that provides a list that auto-deletes its data.
- \compat
-
- A Q3PtrListAutoDelete is identical to a Q3PtrList with
- setAutoDelete(TRUE).
-*/
diff --git a/doc/src/classes/q3ptrqueue.qdoc b/doc/src/classes/q3ptrqueue.qdoc
deleted file mode 100644
index c60193c07..000000000
--- a/doc/src/classes/q3ptrqueue.qdoc
+++ /dev/null
@@ -1,230 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class Q3PtrQueue
- \brief The Q3PtrQueue class is a template class that provides a queue.
- \compat
-
- Q3ValueVector can be used as an STL-compatible alternative to this
- class.
-
- A template instance Q3PtrQueue\<X\> is a queue that operates on
- pointers to X (X*).
-
- A queue is a first in, first out structure. Items are added to the
- tail of the queue with enqueue() and retrieved from the head with
- dequeue(). You can peek at the head item without dequeing it using
- head().
-
- You can control the queue's deletion policy with setAutoDelete().
-
- For compatibility with the Q3PtrCollection classes, current() and
- remove() are provided; both operate on the head().
-
- \sa Q3PtrList Q3PtrStack
-*/
-
-/*!
- \fn Q3PtrQueue::Q3PtrQueue ()
-
- Creates an empty queue with autoDelete() set to FALSE.
-*/
-
-/*!
- \fn Q3PtrQueue::Q3PtrQueue( const Q3PtrQueue<type>& queue )
-
- Creates a queue from \a queue.
-
- Only the pointers are copied; the items are not. The autoDelete()
- flag is set to FALSE.
-*/
-
-/*!
- \fn Q3PtrQueue::~Q3PtrQueue()
-
- Destroys the queue. Items in the queue are deleted if autoDelete()
- is TRUE.
-*/
-
-/*!
- \fn Q3PtrQueue<type>& Q3PtrQueue::operator= (const Q3PtrQueue<type>& queue)
-
- Assigns \a queue to this queue and returns a reference to this
- queue.
-
- This queue is first cleared and then each item in \a queue is
- enqueued to this queue. Only the pointers are copied.
-
- \warning The autoDelete() flag is not modified. If it is TRUE for
- both \a queue and this queue, deleting the two lists will cause \e
- double-deletion of the items.
-*/
-
-/*!
- \fn bool Q3PtrQueue::isEmpty() const
-
- Returns TRUE if the queue is empty; otherwise returns FALSE.
-
- \sa count() dequeue() head()
-*/
-
-/*!
- \fn void Q3PtrQueue::enqueue (const type* d)
-
- Adds item \a d to the tail of the queue.
-
- \sa count() dequeue()
-*/
-
-/*!
- \fn type* Q3PtrQueue::dequeue ()
-
- Takes the head item from the queue and returns a pointer to it.
- Returns 0 if the queue is empty.
-
- \sa enqueue() count()
-*/
-
-/*!
- \fn bool Q3PtrQueue::remove()
-
- Removes the head item from the queue, and returns TRUE if there
- was an item, i.e. the queue wasn't empty; otherwise returns FALSE.
-
- The item is deleted if autoDelete() is TRUE.
-
- \sa head() isEmpty() dequeue()
-*/
-
-/*!
- \fn void Q3PtrQueue::clear()
-
- Removes all items from the queue, and deletes them if autoDelete()
- is TRUE.
-
- \sa remove()
-*/
-
-/*!
- \fn uint Q3PtrQueue::count() const
-
- Returns the number of items in the queue.
-
- \sa isEmpty()
-*/
-
-/*!
- \fn type* Q3PtrQueue::head() const
-
- Returns a pointer to the head item in the queue. The queue is not
- changed. Returns 0 if the queue is empty.
-
- \sa dequeue() isEmpty()
-*/
-
-/*!
- \fn Q3PtrQueue::operator type*() const
-
- Returns a pointer to the head item in the queue. The queue is not
- changed. Returns 0 if the queue is empty.
-
- \sa dequeue() isEmpty()
-*/
-
-/*!
- \fn type* Q3PtrQueue::current() const
-
- Returns a pointer to the head item in the queue. The queue is not
- changed. Returns 0 if the queue is empty.
-
- \sa dequeue() isEmpty()
-*/
-
-/*!
- \fn bool Q3PtrQueue::autoDelete() const
-
- Returns the setting of the auto-delete option. The default is
- FALSE.
-
- \sa setAutoDelete()
-*/
-
-/*!
- \fn void Q3PtrQueue::setAutoDelete( bool enable )
-
- Sets the queue to auto-delete its contents if \a enable is TRUE
- and not to delete them if \a enable is FALSE.
-
- If auto-deleting is turned on, all the items in a queue are
- deleted when the queue itself is deleted. This can be quite
- convenient if the queue has the only pointer to the items.
-
- The default setting is FALSE, for safety. If you turn it on, be
- careful about copying the queue: you might find yourself with two
- queues deleting the same items.
-
- \sa autoDelete()
-*/
-
-/*!
- \fn QDataStream& Q3PtrQueue::read( QDataStream& s,
- Q3PtrCollection::Item& item )
-
- Reads a queue item, \a item, from the stream \a s and returns a
- reference to the stream.
-
- The default implementation sets \a item to 0.
-
- \sa write()
-*/
-
-/*!
- \fn QDataStream& Q3PtrQueue::write( QDataStream& s,
- Q3PtrCollection::Item item ) const
-
- Writes a queue item, \a item, to the stream \a s and returns a
- reference to the stream.
-
- The default implementation does nothing.
-
- \sa read()
-*/
diff --git a/doc/src/classes/q3ptrstack.qdoc b/doc/src/classes/q3ptrstack.qdoc
deleted file mode 100644
index 071fcd0f3..000000000
--- a/doc/src/classes/q3ptrstack.qdoc
+++ /dev/null
@@ -1,217 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class Q3PtrStack
- \brief The Q3PtrStack class is a template class that provides a stack.
- \compat
-
- Q3ValueStack is an STL-compatible alternative to this class.
-
- Define a template instance Q3PtrStack\<X\> to create a stack that
- operates on pointers to X, (X*).
-
- A stack is a last in, first out (LIFO) structure. Items are added
- to the top of the stack with push() and retrieved from the top
- with pop(). Use top() to get a reference to the top element
- without changing the stack.
-
- You can control the stack's deletion policy with setAutoDelete().
-
- For compatibility with the Q3PtrCollection classes current() and
- remove() are provided; they both operate on the top().
-
- \sa Q3PtrList Q3PtrQueue
-*/
-
-/*!
- \fn Q3PtrStack::Q3PtrStack ()
-
- Creates an empty stack.
-*/
-
-/*!
- \fn Q3PtrStack::Q3PtrStack (const Q3PtrStack<type>& s)
-
- Creates a stack by making a shallow copy of another stack \a s.
-*/
-
-/*!
- \fn Q3PtrStack::~Q3PtrStack ()
-
- Destroys the stack. All items will be deleted if autoDelete() is
- true.
-*/
-
-/*!
- \fn Q3PtrStack<type>& Q3PtrStack::operator= (const Q3PtrStack<type>& s)
-
- Sets the contents of this stack by making a shallow copy of
- another stack \a s. Elements currently in this stack will be
- deleted if autoDelete() is true.
-*/
-
-/*!
- \fn bool Q3PtrStack::isEmpty () const
-
- Returns true if the stack contains no elements; otherwise returns
- false.
-*/
-
-/*!
- \fn void Q3PtrStack::push (const type* d)
-
- Adds an element \a d to the top of the stack. Last in, first out.
-*/
-
-/*!
- \fn type* Q3PtrStack::pop ()
-
- Removes the top item from the stack and returns it. The stack must
- not be empty.
-*/
-
-/*!
- \fn bool Q3PtrStack::remove ()
-
- Removes the top item from the stack and deletes it if autoDelete()
- is true. Returns true if there was an item to pop; otherwise
- returns false.
-
- \sa clear()
-*/
-
-/*!
- \fn void Q3PtrStack::clear()
-
- Removes all items from the stack, deleting them if autoDelete() is
- true.
-
- \sa remove()
-*/
-
-/*!
- \fn uint Q3PtrStack::count() const
-
- Returns the number of items in the stack.
-
- \sa isEmpty()
-*/
-
-/*!
- \fn type* Q3PtrStack::top () const
-
- Returns a pointer to the top item on the stack (most recently
- pushed). The stack is not changed. Returns 0 if the stack is
- empty.
-*/
-
-/*!
- \fn Q3PtrStack::operator type* ()const
-
- Returns a pointer to the top item on the stack (most recently
- pushed). The stack is not changed. Returns 0 if the stack is
- empty.
-*/
-
-/*!
- \fn type* Q3PtrStack::current () const
-
- Returns a pointer to the top item on the stack (most recently
- pushed). The stack is not changed. Returns 0 if the stack is
- empty.
-*/
-
-/*!
- \fn bool Q3PtrStack::autoDelete() const
-
- The same as Q3PtrCollection::autoDelete(). Returns true if
- the auto-delete option is set. If the option is set, the
- stack auto-deletes its contents.
-
- \sa setAutoDelete()
-*/
-
-/*!
- \fn void Q3PtrStack::setAutoDelete(bool enable)
-
- Defines whether this stack auto-deletes its contents. The same as
- Q3PtrCollection::setAutoDelete(). If \a enable is true, auto-delete
- is turned on.
-
- If auto-deleting is turned on, all the items in the stack are
- deleted when the stack itself is deleted. This is convenient if
- the stack has the only pointers to the items.
-
- The default setting is false, for safety. If you turn it on, be
- careful about copying the stack, or you might find yourself with
- two stacks deleting the same items.
-
- Note that the auto-delete setting may also affect other functions in
- subclasses. For example, a subclass that has a remove() function
- will remove the item from its data structure, and if auto-delete is
- enabled, will also delete the item.
-
- \sa autoDelete()
-*/
-
-/*!
- \fn QDataStream& Q3PtrStack::read(QDataStream& s, Q3PtrCollection::Item& item)
-
- Reads a stack item, \a item, from the stream \a s and returns a
- reference to the stream.
-
- The default implementation sets \a item to 0.
-
- \sa write()
-*/
-
-/*!
- \fn QDataStream& Q3PtrStack::write(QDataStream& s,
- Q3PtrCollection::Item item) const
-
- Writes a stack item, \a item, to the stream \a s and returns a
- reference to the stream.
-
- The default implementation does nothing.
-
- \sa read()
-*/
diff --git a/doc/src/classes/q3ptrvector.qdoc b/doc/src/classes/q3ptrvector.qdoc
deleted file mode 100644
index c7340645f..000000000
--- a/doc/src/classes/q3ptrvector.qdoc
+++ /dev/null
@@ -1,427 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class Q3PtrVector
- \brief The Q3PtrVector class is a template collection class that
- provides a vector (array).
- \compat
-
- Q3ValueVector is an STL-compatible alternative to this class.
-
- Q3PtrVector is implemented as a template class. Defines a template
- instance Q3PtrVector\<X\> to create a vector that contains pointers
- to X (X*).
-
- A vector is the same as an array. The main difference between
- Q3PtrVector and Q3MemArray is that Q3PtrVector stores pointers to the
- elements, whereas Q3MemArray stores the elements themselves (i.e.
- Q3MemArray is value-based and Q3PtrVector is pointer-based).
-
- Items are added to the vector using insert() or fill(). Items are
- removed with remove(). You can get a pointer to an item at a
- particular index position using at().
-
- Unless otherwise stated, all functions that remove items from the
- vector will also delete the element pointed to if \link
- setAutoDelete() auto-deletion\endlink is enabled. By default,
- auto-deletion is disabled; see setAutoDelete(). This behavior can
- be changed in a subclass by reimplementing the virtual function
- deleteItem().
-
- Functions that compare items (find() and sort() for example) will
- do so using the virtual function compareItems(). The default
- implementation of this function only compares the pointer values.
- Reimplement compareItems() in a subclass to get searching and
- sorting based on the item contents. You can perform a linear
- search for a pointer in the vector using findRef(), or a binary
- search (of a sorted vector) using bsearch(). You can count the
- number of times an item appears in the vector with contains() or
- containsRef().
-
- \sa Q3MemArray
-*/
-
-/*!
- \fn Q3PtrVector::Q3PtrVector()
-
- Constructs a null vector.
-
- \sa isNull()
-*/
-
-/*!
- \fn Q3PtrVector::Q3PtrVector(uint size)
-
- Constructs an vector with room for \a size items. Makes a null
- vector if \a size == 0.
-
- All \a size positions in the vector are initialized to 0.
-
- \sa size(), resize(), isNull()
-*/
-
-/*!
- \fn Q3PtrVector::Q3PtrVector(const Q3PtrVector<type> &v)
-
- Constructs a copy of \a v. Only the pointers are copied (i.e.
- shallow copy).
-*/
-
-/*!
- \fn Q3PtrVector::~Q3PtrVector()
-
- Removes all items from the vector, and destroys the vector itself.
-
- \sa clear()
-*/
-
-/*!
- \fn Q3PtrVector<type> &Q3PtrVector::operator=(const Q3PtrVector<type> &v)
-
- Assigns \a v to this vector and returns a reference to this
- vector.
-
- This vector is first cleared and then all the items from \a v are
- copied into the vector. Only the pointers are copied (i.e. shallow
- copy).
-
- \sa clear()
-*/
-
-/*!
- \fn type **Q3PtrVector::data() const
-
- Returns a pointer to the actual vector data, which is an array of
- type*.
-
- The vector is a null vector if data() == 0 (null pointer).
-
- \sa isNull()
-*/
-
-/*!
- \fn uint Q3PtrVector::size() const
-
- Returns the size of the vector, i.e. the number of vector
- positions. This is also the maximum number of items the vector can
- hold.
-
- The vector is a null vector if size() == 0.
-
- \sa isNull(), resize(), count()
-*/
-
-/*!
- \fn uint Q3PtrVector::count() const
-
- Returns the number of items in the vector. The vector is empty if
- count() == 0.
-
- \sa isEmpty(), size(), isNull()
-*/
-
-/*!
- \fn bool Q3PtrVector::isEmpty() const
-
- Returns true if the vector is empty; otherwise returns false.
-
- \sa count()
-*/
-
-/*!
- \fn bool Q3PtrVector::isNull() const
-
- Returns true if the vector is null; otherwise returns false.
-
- A null vector has size() == 0 and data() == 0.
-
- \sa size()
-*/
-
-/*!
- \fn bool Q3PtrVector::resize(uint size)
-
- Resizes (expands or shrinks) the vector to \a size elements. The
- vector becomes a null vector if \a size == 0.
-
- Any items at position \a size or beyond in the vector are removed.
- New positions are initialized to 0.
-
- Returns true if successful, i.e. if the memory was successfully
- allocated; otherwise returns false.
-
- \sa size(), isNull()
-*/
-
-/*!
- \fn bool Q3PtrVector::insert(uint i, const type *d)
-
- Sets position \a i in the vector to contain the item \a d. \a i
- must be less than size(). Any previous element in position \a i is
- removed.
-
- Returns true if \a i is within range; otherwise returns false.
-
- \sa at()
-*/
-
-/*!
- \fn bool Q3PtrVector::remove(uint i)
-
- Removes the item at position \a i in the vector, if there is one.
- \a i must be less than size().
-
- Returns true if \a i is within range; otherwise returns false.
-
- \sa take(), at()
-*/
-
-/*!
- \fn type* Q3PtrVector::take(uint i)
-
- Returns the item at position \a i in the vector, and removes that
- item from the vector. \a i must be less than size(). If there is
- no item at position \a i, 0 is returned.
-
- Unlike remove(), this function does \e not call deleteItem() for
- the removed item.
-
- \sa remove(), at()
-*/
-
-/*!
- \fn void Q3PtrVector::clear()
-
- Removes all items from the vector, and destroys the vector itself.
-
- The vector becomes a null vector.
-
- \sa isNull()
-*/
-
-/*!
- \fn bool Q3PtrVector::fill(const type *d, int size)
-
- Inserts item \a d in all positions in the vector. Any existing
- items are removed. If \a d is 0, the vector becomes empty.
-
- If \a size >= 0, the vector is first resized to \a size. By
- default, \a size is -1.
-
- Returns true if successful, i.e. \a size is the same as the
- current size, or \a size is larger and the memory has successfully
- been allocated; otherwise returns false.
-
- \sa resize(), insert(), isEmpty()
-*/
-
-/*!
- \fn void Q3PtrVector::sort()
-
- Sorts the items in ascending order. Any empty positions will be
- put last.
-
- Compares items using the virtual function compareItems().
-
- \sa bsearch()
-*/
-
-/*!
- \fn int Q3PtrVector::bsearch(const type* d) const
-
- In a sorted array, finds the first occurrence of \a d using a
- binary search. For a sorted array, this is generally much faster
- than find(), which performs a linear search.
-
- Returns the position of \a d, or -1 if \a d could not be found. \a
- d must not be 0.
-
- Compares items using the virtual function compareItems().
-
- \sa sort(), find()
-*/
-
-
-/*!
- \fn int Q3PtrVector::findRef(const type *d, uint i) const
-
- Finds the first occurrence of the item pointer \a d in the vector
- using a linear search. The search starts at position \a i, which
- must be less than size(). \a i is by default 0; i.e. the search
- starts at the start of the vector.
-
- Returns the position of \a d, or -1 if \a d could not be found.
-
- This function does \e not use compareItems() to compare items.
-
- Use the much faster bsearch() to search a sorted vector.
-
- \sa find(), bsearch()
-*/
-
-/*!
- \fn int Q3PtrVector::find(const type *d, uint i) const
-
- Finds the first occurrence of item \a d in the vector using a
- linear search. The search starts at position \a i, which must be
- less than size(). \a i is by default 0; i.e. the search starts at
- the start of the vector.
-
- Returns the position of \a d, or -1 if \a d could not be found.
-
- Compares items using the virtual function compareItems().
-
- Use the much faster bsearch() to search a sorted vector.
-
- \sa findRef(), bsearch()
-*/
-
-
-/*!
- \fn uint Q3PtrVector::containsRef(const type *d) const
-
- Returns the number of occurrences of the item pointer \a d in the
- vector.
-
- This function does \e not use compareItems() to compare items.
-
- \sa findRef()
-*/
-
-/*!
- \fn uint Q3PtrVector::contains(const type *d) const
-
- Returns the number of occurrences of item \a d in the vector.
-
- Compares items using the virtual function compareItems().
-
- \sa containsRef()
-*/
-
-/*!
- \fn type *Q3PtrVector::operator[](int i) const
-
- Returns the item at position \a i, or 0 if there is no item at
- that position. \a i must be less than size().
-
- Equivalent to at(\a i).
-
- \sa at()
-*/
-
-/*!
- \fn type *Q3PtrVector::at(uint i) const
-
- Returns the item at position \a i, or 0 if there is no item at
- that position. \a i must be less than size().
-*/
-
-
-/*!
- \fn void Q3PtrVector::toList(Q3GList *list) const
-
- \internal
-
- Copies all items in this vector to the list \a list. \a list is
- first cleared and then all items are appended to \a list.
-
- \sa Q3PtrList, Q3PtrStack, Q3PtrQueue
-*/
-
-/*!
- \fn int Q3PtrVector::compareItems(Q3PtrCollection::Item d1,
- Q3PtrCollection::Item d2)
-
- This virtual function compares two list items.
-
- Returns:
- \list
- \i zero if \a d1 == \a d2
- \i nonzero if \a d1 != \a d2
- \endlist
-
- This function returns \e int rather than \e bool so that
- reimplementations can return one of three values and use it to
- sort by:
- \list
- \i 0 if \a d1 == \a d2
- \i \> 0 (positive integer) if \a d1 \> \a d2
- \i \< 0 (negative integer) if \a d1 \< \a d2
- \endlist
-
- The sort() and bsearch() functions require compareItems() to be
- implemented as described here.
-
- This function should not modify the vector because some const
- functions call compareItems().
-*/
-
-/*!
- \fn QDataStream& Q3PtrVector::read(QDataStream &s,
- Q3PtrCollection::Item &item)
-
- Reads a vector item, \a item, from the stream \a s and returns a
- reference to the stream.
-
- The default implementation sets \a item to 0.
-
- \sa write()
-*/
-
-/*!
- \fn QDataStream& Q3PtrVector::write(QDataStream &s,
- Q3PtrCollection::Item item) const
-
- Writes a vector item, \a item, to the stream \a s and returns a
- reference to the stream.
-
- The default implementation does nothing.
-
- \sa read()
-*/
-
-/*!
- \fn bool Q3PtrVector::operator==(const Q3PtrVector<type> &v) const
-
- Returns true if this vector and \a v are equal; otherwise returns
- false.
-*/
diff --git a/doc/src/classes/q3sqlfieldinfo.qdoc b/doc/src/classes/q3sqlfieldinfo.qdoc
deleted file mode 100644
index 6f6f35963..000000000
--- a/doc/src/classes/q3sqlfieldinfo.qdoc
+++ /dev/null
@@ -1,234 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class Q3SqlFieldInfo
- \brief The Q3SqlFieldInfo class stores meta data associated with a SQL field.
-
- \compat
-
- Q3SqlFieldInfo objects only store meta data; field values are
- stored in QSqlField objects.
-
- All values must be set in the constructor, and may be retrieved
- using isRequired(), type(), length(), precision(), defaultValue(),
- name(), isGenerated() and typeID().
-
- \sa Q3SqlRecordInfo
-*/
-
-/*!
- \fn Q3SqlFieldInfo::Q3SqlFieldInfo(const QString& name,
- QVariant::Type typ,
- int required,
- int len,
- int prec,
- const QVariant& defValue,
- int typeID,
- bool generated,
- bool trim,
- bool calculated)
-
- Constructs a Q3SqlFieldInfo with the following parameters:
- \table
- \row \i \a name \i the name of the field.
- \row \i \a typ \i the field's type in a QVariant.
- \row \i \a required \i greater than 0 if the field is required, 0
- if its value can be NULL and less than 0 if it cannot be
- determined whether the field is required or not.
- \row \i \a len \i the length of the field. Note that for
- non-character types some databases return either the length in
- bytes or the number of digits. -1 signifies that the length cannot
- be determined.
- \row \i \a prec \i the precision of the field, or -1 if the field
- has no precision or it cannot be determined.
- \row \i \a defValue \i the default value that is inserted into
- the table if none is specified by the user. QVariant() if there is
- no default value or it cannot be determined.
- \row \i \a typeID \i the internal typeID of the database system
- (only useful for low-level programming). 0 if unknown.
- \row \i \a generated \i TRUE indicates that this field should be
- included in auto-generated SQL statments, e.g. in Q3SqlCursor.
- \row \i \a trim \i TRUE indicates that widgets should remove
- trailing whitespace from character fields. This does not affect
- the field value but only its representation inside widgets.
- \row \i \a calculated \i TRUE indicates that the value of this
- field is calculated. The value of calculated fields can by
- modified by subclassing Q3SqlCursor and overriding
- Q3SqlCursor::calculateField().
- \endtable
-*/
-
-/*!
- \fn Q3SqlFieldInfo::~Q3SqlFieldInfo()
-
- Destroys the object and frees any allocated resources.
-*/
-
-/*!
- \fn Q3SqlFieldInfo::Q3SqlFieldInfo(const QSqlField & other)
-
- Creates a Q3SqlFieldInfo object with the type and the name of the
- QSqlField \a other.
-*/
-
-/*!
- \fn bool Q3SqlFieldInfo::operator==(const Q3SqlFieldInfo& other) const
-
- Assigns \a other to this field info and returns a reference to it.
-*/
-
-/*!
- \fn QSqlField Q3SqlFieldInfo::toField() const
-
- Returns an empty QSqlField based on the information in this
- Q3SqlFieldInfo.
-*/
-
-/*!
- \fn int Q3SqlFieldInfo::isRequired() const
-
- Returns a value greater than 0 if the field is required (NULL
- values are not allowed), 0 if it isn't required (NULL values are
- allowed) or less than 0 if it cannot be determined whether the
- field is required or not.
-*/
-
-/*!
- \fn QVariant::Type Q3SqlFieldInfo::type() const
-
- Returns the field's type or QVariant::Invalid if the type is
- unknown.
-*/
-
-/*!
- \fn int Q3SqlFieldInfo::length() const
-
- Returns the field's length. For fields storing text the return
- value is the maximum number of characters the field can hold. For
- non-character fields some database systems return the number of
- bytes needed or the number of digits allowed. If the length cannot
- be determined -1 is returned.
-*/
-
-/*!
- \fn int Q3SqlFieldInfo::precision() const
-
- Returns the field's precision or -1 if the field has no precision
- or it cannot be determined.
-*/
-
-/*!
- \fn QVariant Q3SqlFieldInfo::defaultValue() const
-
- Returns the field's default value or an empty QVariant if the
- field has no default value or the value couldn't be determined.
- The default value is the value inserted in the database when it
- is not explicitly specified by the user.
-*/
-
-/*!
- \fn QString Q3SqlFieldInfo::name() const
-
- Returns the name of the field in the SQL table.
-*/
-
-/*!
- \fn int Q3SqlFieldInfo::typeID() const
-
- Returns the internal type identifier as returned from the database
- system. The return value is 0 if the type is unknown.
-*/
-
-/*!
- \fn bool Q3SqlFieldInfo::isGenerated() const
-
- Returns TRUE if the field should be included in auto-generated
- SQL statments, e.g. in Q3SqlCursor; otherwise returns FALSE.
-
- \sa setGenerated()
-*/
-
-/*!
- \fn bool Q3SqlFieldInfo::isTrim() const
-
- Returns TRUE if trailing whitespace should be removed from
- character fields; otherwise returns FALSE.
-
- \sa setTrim()
-*/
-
-/*!
- \fn bool Q3SqlFieldInfo::isCalculated() const
-
- Returns TRUE if the field is calculated; otherwise returns FALSE.
-
- \sa setCalculated()
-*/
-
-/*!
- \fn void Q3SqlFieldInfo::setTrim(bool trim)
-
- If \a trim is TRUE widgets should remove trailing whitespace from
- character fields. This does not affect the field value but only
- its representation inside widgets.
-
- \sa isTrim()
-*/
-
-/*!
- \fn void Q3SqlFieldInfo::setGenerated(bool generated)
-
- \a generated set to FALSE indicates that this field should not appear
- in auto-generated SQL statements (for example in Q3SqlCursor).
-
- \sa isGenerated()
-*/
-
-/*!
- \fn void Q3SqlFieldInfo::setCalculated(bool calculated)
-
- \a calculated set to TRUE indicates that this field is a calculated
- field. The value of calculated fields can by modified by subclassing
- Q3SqlCursor and overriding Q3SqlCursor::calculateField().
-
- \sa isCalculated()
-*/
diff --git a/doc/src/classes/q3sqlrecordinfo.qdoc b/doc/src/classes/q3sqlrecordinfo.qdoc
deleted file mode 100644
index ce60f6df7..000000000
--- a/doc/src/classes/q3sqlrecordinfo.qdoc
+++ /dev/null
@@ -1,89 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class Q3SqlRecordInfo
- \brief The Q3SqlRecordInfo class encapsulates a set of database field meta data.
-
- \compat
-
- This class is a list that holds a set of database field meta
- data. Use contains() to see if a given field name exists in the
- record, and use find() to get a QSqlFieldInfo record for a named
- field.
-
- \sa Q3SqlFieldInfo
-*/
-
-/*!
- \fn Q3SqlRecordInfo::Q3SqlRecordInfo()
-
- Constructs an empty record info object.
-*/
-
-/*!
- \fn Q3SqlRecordInfo::Q3SqlRecordInfo(const Q3SqlFieldInfoList& other)
- \fn Q3SqlRecordInfo::Q3SqlRecordInfo(const QSqlRecord& other)
-
- Constructs a copy of \a other.
-*/
-
-/*!
- \fn size_type Q3SqlRecordInfo::contains(const QString& fieldName) const
-
- Returns the number of times a field called \a fieldName occurs in
- the record. Returns 0 if no field by that name could be found.
-*/
-
-/*!
- \fn Q3SqlFieldInfo Q3SqlRecordInfo::find(const QString& fieldName) const
-
- Returns a QSqlFieldInfo object for the first field in the record
- which has the field name \a fieldName. If no matching field is
- found then an empty QSqlFieldInfo object is returned.
-*/
-
-/*!
- \fn QSqlRecord Q3SqlRecordInfo::toRecord() const
-
- Returns an empty QSqlRecord based on the field information
- in this Q3SqlRecordInfo.
-*/
diff --git a/doc/src/classes/q3valuelist.qdoc b/doc/src/classes/q3valuelist.qdoc
deleted file mode 100644
index 062a9da81..000000000
--- a/doc/src/classes/q3valuelist.qdoc
+++ /dev/null
@@ -1,569 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class Q3ValueList
- \brief The Q3ValueList class is a value-based template class that
- provides lists.
- \compat
-
- Q3ValueList is a Qt implementation of an STL-like list container.
- It can be used in your application if the standard \c list is not
- available for your target platforms.
-
- Q3ValueList\<T\> defines a template instance to create a list of
- values that all have the class T. Note that Q3ValueList does not
- store pointers to the members of the list; it holds a copy of
- every member. This is why these kinds of classes are called "value
- based"; Q3PtrList and Q3Dict are "pointer based".
-
- Q3ValueList contains and manages a collection of objects of type T
- and provides iterators that allow the contained objects to be
- addressed. Q3ValueList owns the contained items. For more relaxed
- ownership semantics, see Q3PtrCollection and friends which are
- pointer-based containers.
-
- Some classes cannot be used within a Q3ValueList, for example, all
- classes derived from QObject and thus all classes that implement
- widgets. Only values can be used in a Q3ValueList. To qualify as a
- value the class must provide:
- \list
- \i a copy constructor;
- \i an assignment operator;
- \i a default constructor, i.e. a constructor that does not take any arguments.
- \endlist
-
- Note that C++ defaults to field-by-field assignment operators and
- copy constructors if no explicit version is supplied. In many
- cases this is sufficient.
-
- In addition, some compilers (e.g. Sun CC) might require that the
- class provides an equality operator (operator==()).
-
- Q3ValueList's function naming is consistent with the other Qt
- classes (e.g. count(), isEmpty()). Q3ValueList also provides extra
- functions for compatibility with STL algorithms, such as size()
- and empty(). Programmers already familiar with the STL \c list may
- prefer to use the STL-compatible functions.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_q3valuelist.qdoc 0
-
-
- Notice that the latest changes to Mary's salary did not affect the
- value in the list because the list created a copy of Mary's entry.
-
- There are several ways to find items in the list. The begin() and
- end() functions return iterators to the beginning and end of the
- list. The advantage of getting an iterator is that you can move
- forward or backward from this position by
- incrementing/decrementing the iterator. The iterator returned by
- end() points to the item which is one \e past the last item in the
- container. The past-the-end iterator is still associated with the
- list it belongs to, however it is \e not dereferenceable;
- operator*() will not return a well-defined value. If the list is
- empty(), the iterator returned by begin() will equal the iterator
- returned by end().
-
- It is safe to have multiple iterators a the list at the same
- time. If some member of the list is removed, only iterators
- pointing to the removed member become invalid. Inserting into the
- list does not invalidate any iterator. For convenience, the
- function last() returns a reference to the last item in the list,
- and first() returns a reference to the first item. If the
- list is empty(), both last() and first() have undefined behavior
- (your application will crash or do unpredictable things). Use
- last() and first() with caution, for example:
-
- \snippet doc/src/snippets/code/doc_src_q3valuelist.qdoc 1
-
- Because Q3ValueList is value-based there is no need to be careful
- about deleting items in the list. The list holds its own copies
- and will free them if the corresponding member or the list itself
- is deleted. You can force the list to free all of its items with
- clear().
-
- Q3ValueList is shared implicitly, which means it can be copied in
- constant time, i.e. O(1). If multiple Q3ValueList instances share
- the same data and one needs to modify its contents, this modifying
- instance makes a copy and modifies its private copy; therefore it
- does not affect the other instances; this takes O(n) time. This is
- often called "copy on write". If a Q3ValueList is being used in a
- multi-threaded program, you must protect all access to the list.
- See \l QMutex.
-
- There are several ways to insert items into the list. The
- prepend() and append() functions insert items at the beginning and
- the end of the list respectively. The insert() function comes in
- several flavors and can be used to add one or more items at
- specific positions within the list.
-
- Items can also be removed from the list in several ways. There
- are several variants of the remove() function, which removes a
- specific item from the list. The remove() function will find and
- remove items according to a specific item value.
-
- \sa Q3ValueListIterator
-*/
-
-/*! \typedef Q3ValueList::iterator
- The list's iterator type, Q3ValueListIterator. */
-/*! \typedef Q3ValueList::const_iterator
- The list's const iterator type, Q3ValueListConstIterator. */
-/*! \typedef Q3ValueList::value_type
- The type of the object stored in the list, T. */
-/*! \typedef Q3ValueList::pointer
- The pointer to T type. */
-/*! \typedef Q3ValueList::const_pointer
- The const pointer to T type. */
-/*! \typedef Q3ValueList::reference
- The reference to T type. */
-/*! \typedef Q3ValueList::const_reference
- The const reference to T type. */
-/*! \typedef Q3ValueList::size_type
- An unsigned integral type, used to represent various sizes. */
-/*! \typedef Q3ValueList::difference_type
- \internal
-*/
-/*!
- \fn Q3ValueList::Q3ValueList()
-
- Constructs an empty list.
-*/
-
-/*!
- \fn Q3ValueList::Q3ValueList( const Q3ValueList<T>& l )
- \fn Q3ValueList::Q3ValueList( const QList<T>& l )
- \fn Q3ValueList::Q3ValueList( const QLinkedList<T>& l )
-
- Constructs a copy of \a l.
-*/
-
-/*!
- \fn Q3ValueList::Q3ValueList( const std::list<T>& l )
-
- Contructs a copy of \a l.
-
- This constructor is provided for compatibility with STL
- containers.
-*/
-
-/*!
- \fn Q3ValueList::~Q3ValueList()
-
- Destroys the list. References to the values in the list and all
- iterators of this list become invalidated. Note that it is
- impossible for an iterator to check whether or not it is valid:
- Q3ValueList is highly tuned for performance, not for error
- checking.
-*/
-
-/*!
- \fn bool Q3ValueList::operator== ( const Q3ValueList<T>& l ) const
-
- Compares both lists.
-
- Returns TRUE if this list and \a l are equal; otherwise returns
- FALSE.
-*/
-
-/*!
- \fn bool Q3ValueList::operator== ( const std::list<T>& l ) const
-
- \overload
-
- Returns TRUE if this list and \a l are equal; otherwise returns
- FALSE.
-
- This operator is provided for compatibility with STL containers.
-*/
-
-/*!
- \fn Q3ValueList<T>& Q3ValueList::operator= ( const Q3ValueList<T>& l )
-
- Assigns \a l to this list and returns a reference to this list.
-
- All iterators of the current list become invalidated by this
- operation. The cost of such an assignment is O(1) since Q3ValueList
- is implicitly shared.
-*/
-
-/*!
- \fn Q3ValueList<T>& Q3ValueList::operator= ( const QList<T>& l )
-
- Assigns \a l to this list and returns a reference to this list.
-
- All iterators of the current list become invalidated by this
- operation.
-*/
-
-/*!
- \fn Q3ValueList<T>& Q3ValueList::operator= ( const std::list<T>& l )
-
- \overload
-
- Assigns the contents of \a l to the list.
-
- All iterators of the current list become invalidated by this
- operation.
-*/
-
-/*!
- \fn bool Q3ValueList::operator!= ( const Q3ValueList<T>& l ) const
-
- Compares both lists.
-
- Returns TRUE if this list and \a l are unequal; otherwise returns
- FALSE.
-*/
-
-/*!
- \fn iterator Q3ValueList::insert( typename Q3ValueList<T>::Iterator it, const T& x )
-
- Inserts the value \a x in front of the item pointed to by the
- iterator, \a it.
-
- Returns an iterator pointing at the inserted item.
-
- \sa append(), prepend()
-*/
-
-/*!
- \fn uint Q3ValueList::remove( const T& x )
-
- \overload
-
- Removes all items that have value \a x and returns the number of
- removed items.
-*/
-
-/*!
- \fn QDataStream& operator>>( QDataStream& s, Q3ValueList<T>& l )
-
- \relates Q3ValueList
-
- Reads a list, \a l, from the stream \a s. The type T stored in the
- list must implement the streaming operator.
-*/
-
-/*!
- \fn QDataStream& operator<<( QDataStream& s, const Q3ValueList<T>& l )
-
- \overload
- \relates Q3ValueList
-
- Writes a list, \a l, to the stream \a s. The type T stored in the
- list must implement the streaming operator.
-*/
-
-/*!
- \fn void Q3ValueList::insert( typename Q3ValueList<T>::Iterator pos,
- typename Q3ValueList<T>::size_type n, const T& x )
-
- \overload
-
- Inserts \a n copies of \a x before position \a pos.
-*/
-
-/*!
- \fn Q3ValueList<T>& Q3ValueList::operator<< ( const T& x )
-
- Adds the value \a x to the end of the list.
-
- Returns a reference to the list.
-*/
-
-/*!
- \fn const T& Q3ValueList::operator[] ( typename Q3ValueList<T>::size_type i ) const
-
- Returns a const reference to the item with index \a i in the list.
- It is up to you to check whether this item really exists. You can
- do that easily with the count() function. However this operator
- does not check whether \a i is in range and will deliver undefined
- results if it does not exist.
-
- \warning This function uses a linear search and can be extremely
- slow for large lists. Q3ValueList is not optimized for random item
- access. If you need random access use a different container, such
- as Q3ValueVector.
-*/
-
-/*!
- \fn T& Q3ValueList::operator[] ( typename Q3ValueList<T>::size_type i )
-
- \overload
-
- Returns a non-const reference to the item with index \a i.
-*/
-
-/*!
- \fn const_iterator Q3ValueList::at( typename Q3ValueList<T>::size_type i ) const
-
- Returns an iterator pointing to the item at position \a i in the
- list, or an undefined value if the index is out of range.
-
- \warning This function uses a linear search and can be extremely
- slow for large lists. Q3ValueList is not optimized for random item
- access. If you need random access use a different container, such
- as Q3ValueVector.
-*/
-
-/*!
- \fn iterator Q3ValueList::at( typename Q3ValueList<T>::size_type i )
-
- \overload
-
- Returns an iterator pointing to the item at position \a i in the
- list, or an undefined value if the index is out of range.
-
-*/
-
-/*!
- \fn iterator Q3ValueList::fromLast()
-
- \overload
-
- Returns an iterator to the last item in the list, or end() if
- there is no last item.
-
- Use the end() function instead. For example:
-
- \snippet doc/src/snippets/code/doc_src_q3valuelist.qdoc 2
-
-*/
-
-/*!
- \fn const_iterator Q3ValueList::fromLast() const
-
- Returns an iterator to the last item in the list, or end() if
- there is no last item.
-
- Use the end() function instead. For example:
-
- \snippet doc/src/snippets/code/doc_src_q3valuelist.qdoc 3
-
-*/
-
-/*!
- \fn Q3ValueList<T> Q3ValueList::operator+( const Q3ValueList<T>& l ) const
-
- Creates a new list and fills it with the items of this list. Then
- the items of \a l are appended. Returns the new list.
-*/
-
-/*!
- \fn Q3ValueList<T>& Q3ValueList::operator+= ( const Q3ValueList<T>& l )
-
- Appends the items of \a l to this list. Returns a reference to
- this list.
-*/
-
-/*!
- \fn Q3ValueList<T>& Q3ValueList::operator+= ( const T& x )
-
- \overload
-
- Appends the value \a x to the list. Returns a reference to the
- list.
-*/
-
-/*!
- \fn iterator Q3ValueList::append( const T& x )
-
- Inserts \a x at the end of the list.
-
- \sa insert(), prepend()
-*/
-
-/*!
- \fn iterator Q3ValueList::prepend( const T& x )
-
- Inserts \a x at the beginning of the list.
-
- \sa insert(), append()
-*/
-
-/*!
- \fn iterator Q3ValueList::remove( typename Q3ValueList<T>::Iterator it )
-
- Removes the item pointed to by \a it from the list. No iterators
- other than \a it or other iterators pointing at the same item as
- \a it are invalidated. Returns an iterator to the next item after
- \a it, or end() if there is no such item.
-
- \sa clear()
-*/
-
-/*!
- \fn uint Q3ValueList::contains( const T& x ) const
-
- Returns the number of occurrences of the value \a x in the list.
-*/
-
-/*!
- \class Q3ValueListIterator
- \brief The Q3ValueListIterator class provides an iterator for Q3ValueList.
- \compat
-
- An iterator is a class for accessing the items of a container
- class: a generalization of the index in an array. A pointer
- into a "const char *" and an index into an "int[]" are both
- iterators, and the general idea is to provide that functionality
- for any data structure.
-
- The Q3ValueListIterator class is an iterator for Q3ValueList
- instantiations. You can create the appropriate iterator type by
- using the \c iterator typedef provided by Q3ValueList.
-
- The only way to access the items in a Q3ValueList is to use an
- iterator.
-
- Example (see Q3ValueList for the complete code):
- \snippet doc/src/snippets/code/doc_src_q3valuelist.qdoc 4
-
- Q3ValueList is highly optimized for performance and memory usage.
- This means that you must be careful: Q3ValueList does not know
- about all its iterators and the iterators don't know to which list
- they belong. This makes things very fast, but if you're not
- careful, you can get spectacular bugs. Always make sure iterators
- are valid before dereferencing them or using them as parameters to
- generic algorithms in the STL.
-
- Using an invalid iterator is undefined (your application will
- probably crash). Many Qt functions return const value lists; to
- iterate over these you should make a copy and iterate over the
- copy.
-
- For every Iterator there is a ConstIterator. When accessing a
- Q3ValueList in a const environment or if the reference or pointer
- to the list is itself const, then you must use the ConstIterator.
- Its semantics are the same as the Iterator, but it only returns
- const references.
-
- \sa Q3ValueList, Q3ValueListConstIterator
-*/
-
-/*!
- \fn Q3ValueListIterator::Q3ValueListIterator()
-
- Constructs an unitialized iterator.
-*/
-
-/*!
- \fn Q3ValueListIterator::Q3ValueListIterator(const Q3ValueListIterator &o)
- \fn Q3ValueListIterator::Q3ValueListIterator(const typename QLinkedList<T>::iterator &o)
-
- Constucts a copy of iterator \a o.
-*/
-
-/*!
- \class Q3ValueListConstIterator
- \brief The Q3ValueListConstIterator class provides a const iterator
- for Q3ValueList.
- \compat
-
- In contrast to Q3ValueListIterator, this class is used to iterate
- over a const list. It does not allow modification of the values of
- the list since that would break const semantics.
-
- You can create the appropriate const iterator type by using the \c
- const_iterator typedef provided by Q3ValueList.
-
- For more information on Q3ValueList iterators, see
- Q3ValueListIterator.
-
- \sa Q3ValueListIterator, Q3ValueList
-*/
-
-/*!
- \fn Q3ValueListConstIterator::Q3ValueListConstIterator()
-
- Constructs an unitialized iterator.
-*/
-
-/*!
- \fn Q3ValueListConstIterator::Q3ValueListConstIterator(const Q3ValueListConstIterator &o)
- \fn Q3ValueListConstIterator::Q3ValueListConstIterator(const typename QLinkedList<T>::const_iterator &o)
- \fn Q3ValueListConstIterator::Q3ValueListConstIterator(const typename QLinkedList<T>::iterator &o)
-
- Constructs a copy of iterator \a o.
-*/
-
-/*!
- \typedef Q3ValueList::Iterator
-
- This iterator is an instantiation of Q3ValueListIterator for the
- same type as this Q3ValueList. In other words, if you instantiate
- Q3ValueList<int>, Iterator is a Q3ValueListIterator<int>. Several
- member function use it, such as Q3ValueList::begin(), which returns
- an iterator pointing to the first item in the list.
-
- Functionally, this is almost the same as ConstIterator. The only
- difference is that you cannot use ConstIterator for non-const
- operations, and that the compiler can often generate better code
- if you use ConstIterator.
-
- \sa Q3ValueListIterator ConstIterator
-*/
-
-/*!
- \typedef Q3ValueList::ConstIterator
-
- This iterator is an instantiation of Q3ValueListConstIterator for
- the same type as this Q3ValueList. In other words, if you
- instantiate Q3ValueList<int>, ConstIterator is a
- Q3ValueListConstIterator<int>. Several member function use it, such
- as Q3ValueList::begin(), which returns an iterator pointing to the
- first item in the list.
-
- Functionally, this is almost the same as Iterator. The only
- difference is you cannot use ConstIterator for non-const
- operations, and that the compiler can often generate better code
- if you use ConstIterator.
-
- \sa Q3ValueListIterator Iterator
-*/
-
-/*!
- \fn Q3ValueList::operator QList<T>() const
-
- Automatically converts a Q3ValueList<T> into a QList<T>.
-*/
diff --git a/doc/src/classes/q3valuestack.qdoc b/doc/src/classes/q3valuestack.qdoc
deleted file mode 100644
index bc4423596..000000000
--- a/doc/src/classes/q3valuestack.qdoc
+++ /dev/null
@@ -1,149 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class Q3ValueStack
- \brief The Q3ValueStack class is a value-based template class that provides a stack.
- \compat
-
- Define a template instance Q3ValueStack\<X\> to create a stack of
- values that all have the class X.
-
- Note that Q3ValueStack does not store pointers to the members of
- the stack; it holds a copy of every member. That is why these
- kinds of classes are called "value based"; Q3PtrStack, Q3PtrList,
- Q3Dict, etc., are "pointer based".
-
- A stack is a last in, first out (LIFO) structure. Items are added
- to the top of the stack with push() and retrieved from the top
- with pop(). The top() function provides access to the topmost item
- without removing it.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_q3valuestack.qdoc 0
-
- Q3ValueStack is a specialized Q3ValueList provided for convenience.
- All of Q3ValueList's functionality also applies to Q3PtrStack, for
- example the facility to iterate over all elements using
- Q3ValueStack<T>::Iterator. See Q3ValueListIterator for further
- details.
-
- Some classes cannot be used within a Q3ValueStack, for example
- everything derived from QObject and thus all classes that
- implement widgets. Only values can be used in a Q3ValueStack. To
- qualify as a value, the class must provide
- \list
- \i a copy constructor;
- \i an assignment operator;
- \i a default constructor, i.e. a constructor that does not take any arguments.
- \endlist
-
- Note that C++ defaults to field-by-field assignment operators and
- copy constructors if no explicit version is supplied. In many
- cases this is sufficient.
-*/
-
-
-/*!
- \fn Q3ValueStack::Q3ValueStack()
-
- Constructs an empty stack.
-*/
-
-/*!
- \fn Q3ValueStack::~Q3ValueStack()
-
- Destroys the stack. References to the values in the stack and all
- iterators of this stack become invalidated. Because Q3ValueStack is
- highly tuned for performance, you won't see warnings if you use
- invalid iterators because it is impossible for an iterator to
- check whether or not it is valid.
-*/
-
-
-/*!
- \fn void Q3ValueStack::push( const T& d )
-
- Adds element, \a d, to the top of the stack. Last in, first out.
-
- This function is equivalent to append().
-
- \sa pop(), top()
-*/
-
-/*!
- \fn T& Q3ValueStack::top()
-
- Returns a reference to the top item of the stack or the item
- referenced by end() if no such item exists. Note that you must not
- change the value the end() iterator points to.
-
- This function is equivalent to last().
-
- \sa pop(), push(), Q3ValueList::fromLast()
-*/
-
-
-/*!
- \fn const T& Q3ValueStack::top() const
-
- \overload
-
- Returns a reference to the top item of the stack or the item
- referenced by end() if no such item exists.
-
- This function is equivalent to last().
-
- \sa pop(), push(), Q3ValueList::fromLast()
-*/
-
-/*!
- \fn T Q3ValueStack::pop()
-
- Removes the top item from the stack and returns it.
-
- \sa top() push()
-*/
-
-
-
-
-
diff --git a/doc/src/classes/q3valuevector.qdoc b/doc/src/classes/q3valuevector.qdoc
deleted file mode 100644
index 4ab889611..000000000
--- a/doc/src/classes/q3valuevector.qdoc
+++ /dev/null
@@ -1,274 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class Q3ValueVector
- \brief The Q3ValueVector class is a value-based template class that provides a dynamic array.
- \compat
-
- Q3ValueVector is a Qt implementation of an STL-like vector
- container. It can be used in your application if the standard \c
- vector is not available for your target platforms.
-
- Q3ValueVector\<T\> defines a template instance to create a vector
- of values that all have the class T. Q3ValueVector does not store
- pointers to the members of the vector; it holds a copy of every
- member. Q3ValueVector is said to be value based; in contrast,
- Q3PtrList and Q3Dict are pointer based.
-
- Q3ValueVector contains and manages a collection of objects of type
- T and provides random access iterators that allow the contained
- objects to be addressed. Q3ValueVector owns the contained
- elements. For more relaxed ownership semantics, see Q3PtrCollection
- and friends, which are pointer-based containers.
-
- Q3ValueVector provides good performance if you append or remove
- elements from the end of the vector. If you insert or remove
- elements from anywhere but the end, performance is very bad. The
- reason for this is that elements must to be copied into new
- positions.
-
- Some classes cannot be used within a Q3ValueVector: for example,
- all classes derived from QObject and thus all classes that
- implement widgets. Only values can be used in a Q3ValueVector. To
- qualify as a value the class must provide:
- \list
- \i a copy constructor;
- \i an assignment operator;
- \i a default constructor, i.e., a constructor that does not take any arguments.
- \endlist
-
- Note that C++ defaults to field-by-field assignment operators and
- copy constructors if no explicit version is supplied. In many
- cases this is sufficient.
-
- Q3ValueVector uses an STL-like syntax to manipulate and address the
- objects it contains.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_q3valuevector.qdoc 0
-
- Program output:
- \snippet doc/src/snippets/code/doc_src_q3valuevector.qdoc 1
-
- As you can see, the most recent change to Joe's salary did not
- affect the value in the vector because the vector created a copy
- of Joe's entry.
-
- Many Qt functions return const value vectors; to iterate over
- these you should make a copy and iterate over the copy.
-
- There are several ways to find items in the vector. The begin()
- and end() functions return iterators to the beginning and end of
- the vector. The advantage of getting an iterator is that you can
- move forward or backward from this position by
- incrementing/decrementing the iterator. The iterator returned by
- end() points to the element which is one past the last element in
- the container. The past-the-end iterator is still associated with
- the vector it belongs to, however it is \e not dereferenceable;
- operator*() will not return a well-defined value. If the vector is
- empty(), the iterator returned by begin() will equal the iterator
- returned by end().
-
- The fastest way to access an element of a vector is by using
- operator[]. This function provides random access and will return
- a reference to the element located at the specified index. Thus,
- you can access every element directly, in constant time, providing
- you know the location of the element. It is undefined to access
- an element that does not exist (your application will probably
- crash). For example:
-
- \snippet doc/src/snippets/code/doc_src_q3valuevector.qdoc 2
-
- Whenever inserting, removing or referencing elements in a vector,
- always make sure you are referring to valid positions. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_q3valuevector.qdoc 3
-
- The iterators provided by vector are random access iterators,
- therefore you can use them with many generic algorithms, for
- example, algorithms provided by the STL.
-
- It is safe to have multiple iterators on the vector at the same
- time. Since Q3ValueVector manages memory dynamically, all iterators
- can become invalid if a memory reallocation occurs. For example,
- if some member of the vector is removed, iterators that point to
- the removed element and to all following elements become
- invalidated. Inserting into the middle of the vector will
- invalidate all iterators. For convenience, the function back()
- returns a reference to the last element in the vector, and front()
- returns a reference to the first element. If the vector is
- empty(), both back() and front() have undefined behavior (your
- application will crash or do unpredictable things). Use back() and
- front() with caution, for example:
-
- \snippet doc/src/snippets/code/doc_src_q3valuevector.qdoc 4
-
- Because Q3ValueVector manages memory dynamically, it is recommended
- that you contruct a vector with an initial size. Inserting and
- removing elements happens fastest when:
- \list
- \i Inserting or removing elements happens at the end() of the
- vector;
- \i The vector does not need to allocate additional memory.
- \endlist
-
- By creating a Q3ValueVector with a sufficiently large initial size,
- there will be less memory allocations. Do not use an initial size
- that is too big, since it will still take time to construct all
- the empty entries, and the extra space will be wasted if it is
- never used.
-
- Because Q3ValueVector is value-based there is no need to be careful
- about deleting elements in the vector. The vector holds its own
- copies and will free them if the corresponding member or the
- vector itself is deleted. You can force the vector to free all of
- its items with clear().
-
- Q3ValueVector is shared implicitly, which means it can be copied in
- constant time. If multiple Q3ValueVector instances share the same
- data and one needs to modify its contents, this modifying instance
- makes a copy and modifies its private copy; it thus does not
- affect the other instances. This is often called "copy on write".
- If a Q3ValueVector is being used in a multi-threaded program, you
- must protect all access to the vector. See QMutex.
-
- There are several ways to insert elements into the vector. The
- push_back() function insert elements into the end of the vector,
- and is usually fastest. The insert() function can be used to add
- elements at specific positions within the vector.
-
- Items can be also be removed from the vector in several ways.
- There are several variants of the erase() function which removes a
- specific element, or range of elements, from the vector.
-
- Q3ValueVector stores its elements in contiguous memory. This means
- that you can use a Q3ValueVector in any situation that requires an
- array.
-*/
-
-/*!
- \fn Q3ValueVector::Q3ValueVector()
-
- Constructs an empty vector without any elements. To create a
- vector which reserves an initial amount of space for elements, use
- \c Q3ValueVector(size_type n).
-*/
-
-/*!
- \fn Q3ValueVector::Q3ValueVector( const Q3ValueVector<T>& v )
-
- Constructs a copy of \a v.
-
- This operation costs O(1) time because Q3ValueVector is implicitly
- shared.
-
- The first modification to the vector does takes O(n) time, because
- the elements must be copied.
-*/
-
-/*!
- \fn Q3ValueVector::Q3ValueVector( const std::vector<T>& v )
-
- This operation costs O(n) time because \a v is copied.
-*/
-
-/*!
- \fn Q3ValueVector::Q3ValueVector( QVector<T>::size_type n, const T& val )
-
- Constructs a vector with an initial size of \a n elements. Each
- element is initialized with the value of \a val.
-*/
-
-/*!
- \fn Q3ValueVector<T>& Q3ValueVector::operator=( const Q3ValueVector<T>& v )
-
- Assigns \a v to this vector and returns a reference to this vector.
-
- All iterators of the current vector become invalidated by this
- operation. The cost of such an assignment is O(1) since
- Q3ValueVector is implicitly shared.
-*/
-
-/*!
- \fn Q3ValueVector<T>& Q3ValueVector::operator=( const std::vector<T>& v )
-
- \overload
-
- Assigns \a v to this vector and returns a reference to this vector.
-
- All iterators of the current vector become invalidated by this
- operation. The cost of this assignment is O(n) since \a v is
- copied.
-*/
-
-/*!
- \fn T &Q3ValueVector::at( int i , bool* ok )
-
- Returns a reference to the element with index \a i. If \a ok is
- non-null, and the index \a i is out of range, *\a ok is set to
- FALSE and the returned reference is undefined. If the index \a i
- is within the range of the vector, and \a ok is non-null, *\a ok
- is set to TRUE and the returned reference is well defined.
-*/
-
-/*!
- \fn const T &Q3ValueVector::at( int i , bool* ok ) const
-
- \overload
-
- Returns a const reference to the element with index \a i. If \a ok
- is non-null, and the index \a i is out of range, *\a ok is set to
- FALSE and the returned reference is undefined. If the index \a i
- is within the range of the vector, and \a ok is non-null, *\a ok
- is set to TRUE and the returned reference is well defined.
-*/
-
-/*!
- \fn void Q3ValueVector::resize( int n, const T& val = T() )
-
- Changes the size of the vector to \a n. If \a n is greater than
- the current size(), elements are added to the end and initialized
- with the value of \a val. If \a n is less than size(), elements
- are removed from the end. If \a n is equal to size() nothing
- happens.
-*/
diff --git a/doc/src/classes/qalgorithms.qdoc b/doc/src/classes/qalgorithms.qdoc
deleted file mode 100644
index 0b30879af..000000000
--- a/doc/src/classes/qalgorithms.qdoc
+++ /dev/null
@@ -1,651 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \headerfile <QtAlgorithms>
- \title Generic Algorithms
- \ingroup architecture
-
- \brief The <QtAlgorithms> header provides generic template-based algorithms.
-
- Qt provides a number of global template functions in \c
- <QtAlgorithms> that work on containers and perform well-know
- algorithms. You can use these algorithms with any \l {container
- class} that provides STL-style iterators, including Qt's QList,
- QLinkedList, QVector, QMap, and QHash classes.
-
- These functions have taken their inspiration from similar
- functions available in the STL \c <algorithm> header. Most of them
- have a direct STL equivalent; for example, qCopyBackward() is the
- same as STL's copy_backward() algorithm.
-
- If STL is available on all your target platforms, you can use the
- STL algorithms instead of their Qt counterparts. One reason why
- you might want to use the STL algorithms is that STL provides
- dozens and dozens of algorithms, whereas Qt only provides the most
- important ones, making no attempt to duplicate functionality that
- is already provided by the C++ standard.
-
- Most algorithms take \l {STL-style iterators} as parameters. The
- algorithms are generic in the sense that they aren't bound to a
- specific iterator class; you can use them with any iterators that
- meet a certain set of requirements.
-
- Let's take the qFill() algorithm as an example. Unlike QVector,
- QList has no fill() function that can be used to fill a list with
- a particular value. If you need that functionality, you can use
- qFill():
-
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 0
-
- qFill() takes a begin iterator, an end iterator, and a value.
- In the example above, we pass \c list.begin() and \c list.end()
- as the begin and end iterators, but this doesn't have to be
- the case:
-
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 1
-
- Different algorithms can have different requirements for the
- iterators they accept. For example, qFill() accepts two
- \l {forward iterators}. The iterator types required are specified
- for each algorithm. If an iterator of the wrong type is passed (for
- example, if QList::ConstIterator is passed as an \l {output
- iterator}), you will always get a compiler error, although not
- necessarily a very informative one.
-
- Some algorithms have special requirements on the value type
- stored in the containers. For example, qEqual() requires that the
- value type supports operator==(), which it uses to compare items.
- Similarly, qDeleteAll() requires that the value type is a
- non-const pointer type (for example, QWidget *). The value type
- requirements are specified for each algorithm, and the compiler
- will produce an error if a requirement isn't met.
-
- \target binaryFind example
-
- The generic algorithms can be used on other container classes
- than those provided by Qt and STL. The syntax of STL-style
- iterators is modeled after C++ pointers, so it's possible to use
- plain arrays as containers and plain pointers as iterators. A
- common idiom is to use qBinaryFind() together with two static
- arrays: one that contains a list of keys, and another that
- contains a list of associated values. For example, the following
- code will look up an HTML entity (e.g., \c &amp;) in the \c
- name_table array and return the corresponding Unicode value from
- the \c value_table if the entity is recognized:
-
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 2
-
- This kind of code is for advanced users only; for most
- applications, a QMap- or QHash-based approach would work just as
- well:
-
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 3
-
- \section1 Types of Iterators
-
- The algorithms have certain requirements on the iterator types
- they accept, and these are specified individually for each
- function. The compiler will produce an error if a requirement
- isn't met.
-
- \section2 Input Iterators
-
- An \e{input iterator} is an iterator that can be used for reading
- data sequentially from a container. It must provide the following
- operators: \c{==} and \c{!=} for comparing two iterators, unary
- \c{*} for retrieving the value stored in the item, and prefix
- \c{++} for advancing to the next item.
-
- The Qt containers' iterator types (const and non-const) are all
- input iterators.
-
- \section2 Output Iterators
-
- An \e{output iterator} is an iterator that can be used for
- writing data sequentially to a container or to some output
- stream. It must provide the following operators: unary \c{*} for
- writing a value (i.e., \c{*it = val}) and prefix \c{++} for
- advancing to the next item.
-
- The Qt containers' non-const iterator types are all output
- iterators.
-
- \section2 Forward Iterators
-
- A \e{forward iterator} is an iterator that meets the requirements
- of both input iterators and output iterators.
-
- The Qt containers' non-const iterator types are all forward
- iterators.
-
- \section2 Bidirectional Iterators
-
- A \e{bidirectional iterator} is an iterator that meets the
- requirements of forward iterators but that in addition supports
- prefix \c{--} for iterating backward.
-
- The Qt containers' non-const iterator types are all bidirectional
- iterators.
-
- \section2 Random Access Iterators
-
- The last category, \e{random access iterators}, is the most
- powerful type of iterator. It supports all the requirements of a
- bidirectional iterator, and supports the following operations:
-
- \table
- \row \i \c{i += n} \i advances iterator \c i by \c n positions
- \row \i \c{i -= n} \i moves iterator \c i back by \c n positions
- \row \i \c{i + n} or \c{n + i} \i returns the iterator for the item \c
- n positions ahead of iterator \c i
- \row \i \c{i - n} \i returns the iterator for the item \c n positions behind of iterator \c i
- \row \i \c{i - j} \i returns the number of items between iterators \c i and \c j
- \row \i \c{i[n]} \i same as \c{*(i + n)}
- \row \i \c{i < j} \i returns true if iterator \c j comes after iterator \c i
- \endtable
-
- QList and QVector's non-const iterator types are random access iterators.
-
- \sa {container classes}, <QtGlobal>
-*/
-
-/*! \fn OutputIterator qCopy(InputIterator begin1, InputIterator end1, OutputIterator begin2)
- \relates <QtAlgorithms>
-
- Copies the items from range [\a begin1, \a end1) to range [\a
- begin2, ...), in the order in which they appear.
-
- The item at position \a begin1 is assigned to that at position \a
- begin2; the item at position \a begin1 + 1 is assigned to that at
- position \a begin2 + 1; and so on.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 4
-
- \sa qCopyBackward(), {input iterators}, {output iterators}
-*/
-
-/*! \fn BiIterator2 qCopyBackward(BiIterator1 begin1, BiIterator1 end1, BiIterator2 end2)
- \relates <QtAlgorithms>
-
- Copies the items from range [\a begin1, \a end1) to range [...,
- \a end2).
-
- The item at position \a end1 - 1 is assigned to that at position
- \a end2 - 1; the item at position \a end1 - 2 is assigned to that
- at position \a end2 - 2; and so on.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 5
-
- \sa qCopy(), {bidirectional iterators}
-*/
-
-/*! \fn bool qEqual(InputIterator1 begin1, InputIterator1 end1, InputIterator2 begin2)
- \relates <QtAlgorithms>
-
- Compares the items in the range [\a begin1, \a end1) with the
- items in the range [\a begin2, ...). Returns true if all the
- items compare equal; otherwise returns false.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 6
-
- This function requires the item type (in the example above,
- QString) to implement \c operator==().
-
- \sa {input iterators}
-*/
-
-/*! \fn void qFill(ForwardIterator begin, ForwardIterator end, const T &value)
- \relates <QtAlgorithms>
-
- Fills the range [\a begin, \a end) with \a value.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 7
-
- \sa qCopy(), {forward iterators}
-*/
-
-/*! \fn void qFill(Container &container, const T &value)
- \relates <QtAlgorithms>
-
- \overload
-
- This is the same as qFill(\a{container}.begin(), \a{container}.end(), \a value);
-*/
-
-/*! \fn InputIterator qFind(InputIterator begin, InputIterator end, const T &value)
- \relates <QtAlgorithms>
-
- Returns an iterator to the first occurrence of \a value in a
- container in the range [\a begin, \a end). Returns \a end if \a
- value isn't found.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 8
-
- This function requires the item type (in the example above,
- QString) to implement \c operator==().
-
- If the items in the range are in ascending order, you can get
- faster results by using qLowerBound() or qBinaryFind() instead of
- qFind().
-
- \sa qBinaryFind(), {input iterators}
-*/
-
-/*! \fn void qFind(const Container &container, const T &value)
- \relates <QtAlgorithms>
-
- \overload
-
- This is the same as qFind(\a{container}.begin(), \a{container}.end(), value);
-*/
-
-/*! \fn void qCount(InputIterator begin, InputIterator end, const T &value, Size &n)
- \relates <QtAlgorithms>
-
- Returns the number of occurrences of \a value in the range [\a begin, \a end),
- which is returned in \a n. \a n is never initialized, the count is added to \a n.
- It is the caller's responsibility to initialize \a n.
-
- Example:
-
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 9
-
- This function requires the item type (in the example above,
- \c int) to implement \c operator==().
-
- \sa {input iterators}
-*/
-
-/*! \fn void qCount(const Container &container, const T &value, Size &n)
-\relates <QtAlgorithms>
-
-\overload
-
-Instead of operating on iterators, as in the other overload, this function
-operates on the specified \a container to obtain the number of instances
-of \a value in the variable passed as a reference in argument \a n.
-*/
-
-/*! \fn void qSwap(T &var1, T &var2)
- \relates <QtAlgorithms>
-
- Exchanges the values of variables \a var1 and \a var2.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 10
-*/
-
-/*! \fn void qSort(RandomAccessIterator begin, RandomAccessIterator end)
- \relates <QtAlgorithms>
-
- Sorts the items in range [\a begin, \a end) in ascending order
- using the quicksort algorithm.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 11
-
- The sort algorithm is efficient on large data sets. It operates
- in \l {linear-logarithmic time}, O(\e{n} log \e{n}).
-
- This function requires the item type (in the example above,
- \c{int}) to implement \c operator<().
-
- If neither of the two items is "less than" the other, the items are
- taken to be equal. It is then undefined which one of the two
- items will appear before the other after the sort.
-
- \sa qStableSort(), {random access iterators}
-*/
-
-/*! \fn void qSort(RandomAccessIterator begin, RandomAccessIterator end, LessThan lessThan)
- \relates <QtAlgorithms>
-
- \overload
-
- Uses the \a lessThan function instead of \c operator<() to
- compare the items.
-
- For example, here's how to sort the strings in a QStringList
- in case-insensitive alphabetical order:
-
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 12
-
- To sort values in reverse order, pass
- \l{qGreater()}{qGreater<T>()} as the \a lessThan parameter. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 13
-
- If neither of the two items is "less than" the other, the items are
- taken to be equal. It is then undefined which one of the two
- items will appear before the other after the sort.
-
- An alternative to using qSort() is to put the items to sort in a
- QMap, using the sort key as the QMap key. This is often more
- convenient than defining a \a lessThan function. For example, the
- following code shows how to sort a list of strings case
- insensitively using QMap:
-
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 14
-
- \sa QMap
-*/
-
-/*! \fn void qSort(Container &container)
- \relates <QtAlgorithms>
-
- \overload
-
- This is the same as qSort(\a{container}.begin(), \a{container}.end());
-*/
-
-/*!
- \fn void qStableSort(RandomAccessIterator begin, RandomAccessIterator end)
- \relates <QtAlgorithms>
-
- Sorts the items in range [\a begin, \a end) in ascending order
- using a stable sorting algorithm.
-
- If neither of the two items is "less than" the other, the items are
- taken to be equal. The item that appeared before the other in the
- original container will still appear first after the sort. This
- property is often useful when sorting user-visible data.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 15
-
- The sort algorithm is efficient on large data sets. It operates
- in \l {linear-logarithmic time}, O(\e{n} log \e{n}).
-
- This function requires the item type (in the example above,
- \c{int}) to implement \c operator<().
-
- \sa qSort(), {random access iterators}
-*/
-
-/*!
- \fn void qStableSort(RandomAccessIterator begin, RandomAccessIterator end, LessThan lessThan)
- \relates <QtAlgorithms>
-
- \overload
-
- Uses the \a lessThan function instead of \c operator<() to
- compare the items.
-
- For example, here's how to sort the strings in a QStringList
- in case-insensitive alphabetical order:
-
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 16
-
- Note that earlier versions of Qt allowed using a lessThan function that took its
- arguments by non-const reference. From 4.3 and on this is no longer possible,
- the arguments has to be passed by const reference or value.
-
- To sort values in reverse order, pass
- \l{qGreater()}{qGreater<T>()} as the \a lessThan parameter. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 17
-
- If neither of the two items is "less than" the other, the items are
- taken to be equal. The item that appeared before the other in the
- original container will still appear first after the sort. This
- property is often useful when sorting user-visible data.
-*/
-
-/*!
- \fn void qStableSort(Container &container)
- \relates <QtAlgorithms>
-
- \overload
-
- This is the same as qStableSort(\a{container}.begin(), \a{container}.end());
-*/
-
-/*! \fn RandomAccessIterator qLowerBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value)
- \relates <QtAlgorithms>
-
- Performs a binary search of the range [\a begin, \a end) and
- returns the position of the first ocurrence of \a value. If no
- such item is found, returns the position where it should be
- inserted.
-
- The items in the range [\a begin, \e end) must be sorted in
- ascending order; see qSort().
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 18
-
- This function requires the item type (in the example above,
- \c{int}) to implement \c operator<().
-
- qLowerBound() can be used in conjunction with qUpperBound() to
- iterate over all occurrences of the same value:
-
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 19
-
- \sa qUpperBound(), qBinaryFind()
-*/
-
-/*!
- \fn RandomAccessIterator qLowerBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
- \relates <QtAlgorithms>
-
- \overload
-
- Uses the \a lessThan function instead of \c operator<() to
- compare the items.
-
- Note that the items in the range must be sorted according to the order
- specified by the \a lessThan object.
-*/
-
-/*!
- \fn void qLowerBound(const Container &container, const T &value)
- \relates <QtAlgorithms>
-
- \overload
-
- For read-only iteration over containers, this function is broadly equivalent to
- qLowerBound(\a{container}.begin(), \a{container}.end(), value). However, since it
- returns a const iterator, you cannot use it to modify the container; for example,
- to insert items.
-*/
-
-/*! \fn RandomAccessIterator qUpperBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value)
- \relates <QtAlgorithms>
-
- Performs a binary search of the range [\a begin, \a end) and
- returns the position of the one-past-the-last occurrence of \a
- value. If no such item is found, returns the position where the
- item should be inserted.
-
- The items in the range [\a begin, \e end) must be sorted in
- ascending order; see qSort().
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 20
-
- This function requires the item type (in the example above,
- \c{int}) to implement \c operator<().
-
- qUpperBound() can be used in conjunction with qLowerBound() to
- iterate over all occurrences of the same value:
-
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 21
-
- \sa qLowerBound(), qBinaryFind()
-*/
-
-/*!
- \fn RandomAccessIterator qUpperBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
- \relates <QtAlgorithms>
-
- \overload
-
- Uses the \a lessThan function instead of \c operator<() to
- compare the items.
-
- Note that the items in the range must be sorted according to the order
- specified by the \a lessThan object.
-*/
-
-/*!
- \fn void qUpperBound(const Container &container, const T &value)
- \relates <QtAlgorithms>
-
- \overload
-
- This is the same as qUpperBound(\a{container}.begin(), \a{container}.end(), value);
-*/
-
-
-/*! \fn RandomAccessIterator qBinaryFind(RandomAccessIterator begin, RandomAccessIterator end, const T &value)
- \relates <QtAlgorithms>
-
- Performs a binary search of the range [\a begin, \a end) and
- returns the position of an occurrence of \a value. If there are
- no occurrences of \a value, returns \a end.
-
- The items in the range [\a begin, \a end) must be sorted in
- ascending order; see qSort().
-
- If there are many occurrences of the same value, any one of them
- could be returned. Use qLowerBound() or qUpperBound() if you need
- finer control.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 22
-
- This function requires the item type (in the example above,
- QString) to implement \c operator<().
-
- See the \l{<QtAlgorithms>#binaryFind example}{detailed
- description} for an example usage.
-
- \sa qLowerBound(), qUpperBound(), {random access iterators}
-*/
-
-/*! \fn RandomAccessIterator qBinaryFind(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
- \relates <QtAlgorithms>
-
- \overload
-
- Uses the \a lessThan function instead of \c operator<() to
- compare the items.
-
- Note that the items in the range must be sorted according to the order
- specified by the \a lessThan object.
-*/
-
-/*!
- \fn void qBinaryFind(const Container &container, const T &value)
- \relates <QtAlgorithms>
-
- \overload
-
- This is the same as qBinaryFind(\a{container}.begin(), \a{container}.end(), value);
-*/
-
-
-/*!
- \fn void qDeleteAll(ForwardIterator begin, ForwardIterator end)
- \relates <QtAlgorithms>
-
- Deletes all the items in the range [\a begin, \a end) using the
- C++ \c delete operator. The item type must be a pointer type (for
- example, \c{QWidget *}).
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 23
-
- Notice that qDeleteAll() doesn't remove the items from the
- container; it merely calls \c delete on them. In the example
- above, we call clear() on the container to remove the items.
-
- This function can also be used to delete items stored in
- associative containers, such as QMap and QHash. Only the objects
- stored in each container will be deleted by this function; objects
- used as keys will not be deleted.
-
- \sa {forward iterators}
-*/
-
-/*!
- \fn void qDeleteAll(const Container &c)
- \relates <QtAlgorithms>
-
- \overload
-
- This is the same as qDeleteAll(\a{c}.begin(), \a{c}.end()).
-*/
-
-/*! \fn LessThan qLess()
- \relates <QtAlgorithms>
-
- Returns a functional object, or functor, that can be passed to qSort()
- or qStableSort().
-
- Example:
-
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 24
-
- \sa {qGreater()}{qGreater<T>()}
-*/
-
-/*! \fn LessThan qGreater()
- \relates <QtAlgorithms>
-
- Returns a functional object, or functor, that can be passed to qSort()
- or qStableSort().
-
- Example:
-
- \snippet doc/src/snippets/code/doc_src_qalgorithms.qdoc 25
-
- \sa {qLess()}{qLess<T>()}
-*/
diff --git a/doc/src/classes/qcache.qdoc b/doc/src/classes/qcache.qdoc
deleted file mode 100644
index b79eba8a5..000000000
--- a/doc/src/classes/qcache.qdoc
+++ /dev/null
@@ -1,244 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class QCache
- \brief The QCache class is a template class that provides a cache.
-
- \ingroup tools
- \ingroup shared
- \mainclass
- \reentrant
-
- QCache\<Key, T\> defines a cache that stores objects of type T
- associated with keys of type Key. For example, here's the
- definition of a cache that stores objects of type Employee
- associated with an integer key:
-
- \snippet doc/src/snippets/code/doc_src_qcache.qdoc 0
-
- Here's how to insert an object in the cache:
-
- \snippet doc/src/snippets/code/doc_src_qcache.qdoc 1
-
- The advantage of using QCache over some other key-based data
- structure (such as QMap or QHash) is that QCache automatically
- takes ownership of the objects that are inserted into the cache and
- deletes them to make room for new objects, if necessary. When
- inserting an object into the cache, you can specify a \e{cost},
- which should bear some approximate relationship to the amount of
- memory taken by the object. When the sum of all objects' costs
- (totalCost()) exceeds the cache's limit (maxCost()), QCache starts
- deleting objects in the cache to keep under the limit, starting with
- less recently accessed objects.
-
- By default, QCache's maxCost() is 100. You can specify a
- different value in the QCache constructor:
-
- \snippet doc/src/snippets/code/doc_src_qcache.qdoc 2
-
- Each time you call insert(), you can specify a cost as third
- argument (after the key and a pointer to the object to insert).
- After the call, the inserted object is owned by the QCache, which
- may delete it at any time to make room for other objects.
-
- To look up objects in the cache, use object() or
- operator[](). This function looks up an object by its key, and
- returns either a pointer to the cached object (which is owned by
- the cache) or 0.
-
- If you want to remove an object from the cache for a particular key,
- call remove(). This will also delete the object. If you want to
- remove an object from the cache without the QCache deleting it, use
- take().
-
- \sa QPixmapCache, QHash, QMap
-*/
-
-/*! \fn QCache::QCache(int maxCost = 100)
-
- Constructs a cache whose contents will never have a total cost
- greater than \a maxCost.
-*/
-
-/*! \fn QCache::~QCache()
-
- Destroys the cache. Deletes all the objects in the cache.
-*/
-
-/*! \fn int QCache::maxCost() const
-
- Returns the maximum allowed total cost of the cache.
-
- \sa setMaxCost(), totalCost()
-*/
-
-/*! \fn void QCache::setMaxCost(int cost)
-
- Sets the maximum allowed total cost of the cache to \a cost. If
- the current total cost is greater than \a cost, some objects are
- deleted immediately.
-
- \sa maxCost(), totalCost()
-*/
-
-/*! \fn int QCache::totalCost() const
-
- Returns the total cost of the objects in the cache.
-
- This value is normally below maxCost(), but QCache makes an
- exception for Qt's \l{implicitly shared} classes. If a cached
- object shares its internal data with another instance, QCache may
- keep the object lying around, possibly contributing to making
- totalCost() larger than maxCost().
-
- \sa setMaxCost()
-*/
-
-/*! \fn int QCache::size() const
-
- Returns the number of objects in the cache.
-
- \sa isEmpty()
-*/
-
-/*! \fn int QCache::count() const
-
- Same as size().
-*/
-
-/*! \fn bool QCache::isEmpty() const
-
- Returns true if the cache contains no objects; otherwise
- returns false.
-
- \sa size()
-*/
-
-/*! \fn QList<Key> QCache::keys() const
-
- Returns a list of the keys in the cache.
-*/
-
-/*! \fn void QCache::clear();
-
- Deletes all the objects in the cache.
-
- \sa remove(), take()
-*/
-
-
-/*! \fn bool QCache::insert(const Key &key, T *object, int cost = 1)
-
- Inserts \a object into the cache with key \a key and
- associated cost \a cost. Any object with the same key already in
- the cache will be removed.
-
- After this call, \a object is owned by the QCache and may be
- deleted at any time. In particular, if \a cost is greater than
- maxCost(), the object will be deleted immediately.
-
- The function returns true if the object was inserted into the
- cache; otherwise it returns false.
-
- \sa take(), remove()
-*/
-
-/*! \fn T *QCache::object(const Key &key) const
-
- Returns the object associated with key \a key, or 0 if the key does
- not exist in the cache.
-
- \warning The returned object is owned by QCache and may be
- deleted at any time.
-
- \sa take(), remove()
-*/
-
-/*! \fn bool QCache::contains(const Key &key) const
-
- Returns true if the cache contains an object associated with key \a
- key; otherwise returns false.
-
- \sa take(), remove()
-*/
-
-/*! \fn T *QCache::operator[](const Key &key) const
-
- Returns the object associated with key \a key, or 0 if the key does
- not exist in the cache.
-
- This is the same as object().
-
- \warning The returned object is owned by QCache and may be
- deleted at any time.
-*/
-
-/*! \fn bool QCache::remove(const Key &key)
-
- Deletes the object associated with key \a key. Returns true if the
- object was found in the cache; otherwise returns false.
-
- \sa take(), clear()
-*/
-
-/*! \fn T *QCache::take(const Key &key)
-
- Takes the object associated with key \a key out of the cache
- without deleting it. Returns a pointer to the object taken out, or
- 0 if the key does not exist in the cache.
-
- The ownership of the returned object is passed to the caller.
-
- \sa remove()
-*/
-
-/*!
- \fn QCache::QCache(int maxCost, int dummy)
-
- Use QCache(int) instead.
-*/
-
-/*!
- \fn T *QCache::find(const Key &key) const
-
- Use object() instead.
-*/
diff --git a/doc/src/classes/qcolormap.qdoc b/doc/src/classes/qcolormap.qdoc
deleted file mode 100644
index 55361372e..000000000
--- a/doc/src/classes/qcolormap.qdoc
+++ /dev/null
@@ -1,152 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class QColormap
- \ingroup multimedia
-
- \brief The QColormap class maps device independent QColors to device
- dependent pixel values.
-*/
-
-/*! \enum QColormap::Mode
-
- This enum describes how QColormap maps device independent RGB
- values to device dependent pixel values.
-
- \value Direct Pixel values are derived directly from the RGB
- values, also known as "True Color."
-
- \value Indexed Pixel values represent indexes into a vector of
- available colors, i.e. QColormap uses the index of the color that
- most closely matches an RGB value.
-
- \value Gray Similar to \c Indexed, pixel values represent a vector
- of available gray tones. QColormap uses the index of the gray
- tone that most closely matches the computed gray tone of an RGB
- value.
-*/
-
-/*!
- \fn QColormap QColormap::instance(int screen)
-
- Returns the colormap for the specified \a screen. If \a screen is
- -1, this function returns the colormap for the default screen.
-*/
-
-/*!
- \fn QColormap::QColormap(const QColormap &colormap)
-
- Constructs a copy of another \a colormap.
-*/
-
-/*!
- \fn QColormap::~QColormap()
-
- Destroys the colormap.
-*/
-
-/*!
- \fn int QColormap::size() const
-
- Returns the size of the colormap for \c Indexed and \c Gray modes;
- Returns -1 for \c Direct mode.
-
- \sa colormap()
-*/
-
-/*!
- \fn uint QColormap::pixel(const QColor &color) const
-
- Returns a device dependent pixel value for the \a color.
-
- \sa colorAt()
-*/
-
-/*!
- \fn int QColormap::depth() const
-
- Returns the depth of the device.
-
- \sa size()
-*/
-
-/*!
- \fn QColormap::Mode QColormap::mode() const
-
- Returns the mode of this colormap.
-
- \sa QColormap::Mode
-*/
-
-/*!
- \fn const QColor QColormap::colorAt(uint pixel) const
-
- Returns a QColor for the \a pixel.
-
- \sa pixel()
-*/
-
-/*!
- \fn const QVector<QColor> QColormap::colormap() const
-
- Returns a vector of colors which represents the devices colormap
- for \c Indexed and \c Gray modes. This function returns an empty
- vector for \c Direct mode.
-
- \sa size()
-*/
-
-/*! \fn HPALETTE QColormap::hPal()
-
- This function is only available on Windows.
-
- Returns an handle to the HPALETTE used by this colormap. If no
- HPALETTE is being used, this function returns zero.
-*/
-
-/*! \since 4.2
-
- \fn QColormap &QColormap::operator=(const QColormap &colormap)
-
- Assigns the given \a colormap to \e this color map and returns
- a reference to \e this color map.
-*/
diff --git a/doc/src/classes/qdesktopwidget.qdoc b/doc/src/classes/qdesktopwidget.qdoc
deleted file mode 100644
index 4717e3ae1..000000000
--- a/doc/src/classes/qdesktopwidget.qdoc
+++ /dev/null
@@ -1,266 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class QDesktopWidget
- \brief The QDesktopWidget class provides access to screen information on multi-head systems.
-
- \ingroup advanced
- \ingroup desktop
- \ingroup environment
- \mainclass
-
- QApplication::desktop() function should be used to get an instance
- of the QDesktopWidget.
-
- Systems with more than one graphics card and monitor can manage the
- physical screen space available either as multiple desktops, or as a
- large virtual desktop, which usually has the size of the bounding
- rectangle of all the screens (see virtualDesktop). For an
- application, one of the available screens is the primary screen, i.e.
- the screen where the main widget resides (see primaryScreen). All
- windows opened in the context of the application should be
- constrained to the boundaries of the primary screen; for example,
- it would be inconvenient if a dialog box popped up on a different
- screen, or split over two screens.
-
- The QDesktopWidget provides information about the geometry of the
- available screens with screenGeometry(). The number of screens
- available is returned by screenCount, and the screenCountChanged
- signal is emitted when screens are added or removed during runtime.
- The screen number that a particular point or widget is located in
- is returned by screenNumber().
-
- Widgets provided by Qt use this class, for example, to place
- tooltips, menus and dialog boxes according to the parent or
- application widget. Applications can use this class to save window
- positions, or to place child widgets and dialogs on one particular
- screen.
-
- \img qdesktopwidget.png Managing Multiple Screens
-
- In the illustration above, Application One's primary screen is
- screen 0, and App Two's primary screen is screen 1.
-
- \target multiple screens note
- \note QDesktopWidget inherits the QWidget properties, width() and
- height(), which specify the size of the desktop. However, for
- desktops with multiple screens, the size of the desktop is the union
- of all the screen sizes, so width() and height() should \e not be
- used for computing the size of a widget to be placed on one of the
- screens. The correct width and height values are obtained using
- availableGeometry() or screenGeometry() for a particular screen.
-
- \sa QApplication, QApplication::desktop(), QX11Info::appRootWindow()
-*/
-
-/*!
- \fn QDesktopWidget::QDesktopWidget()
-
- \internal
-
- Creates the desktop widget.
-
- If the system supports a virtual desktop, this widget will have
- the size of the virtual desktop; otherwise this widget will have
- the size of the primary screen.
-
- Instead of using QDesktopWidget directly, use QApplication::desktop().
-*/
-
-/*!
- \fn QDesktopWidget::~QDesktopWidget()
-
- \internal
-
- Destroys the desktop widget and frees any allocated resources.
-*/
-
-/*!
- \fn int QDesktopWidget::numScreens() const
-
- Returns the number of available screens.
-
- \obsolete
-
- This function is deprecated. Use screenCount instead.
-
- \sa primaryScreen
-*/
-
-/*!
- \fn QWidget *QDesktopWidget::screen(int screen)
-
- Returns a widget that represents the screen with index \a screen
- (a value of -1 means the default screen).
-
- If the system uses a virtual desktop, the returned widget will
- have the geometry of the entire virtual desktop; i.e., bounding
- every \a screen.
-
- \sa primaryScreen, screenCount, virtualDesktop
-*/
-
-/*!
- \fn const QRect QDesktopWidget::availableGeometry(int screen) const
-
- Returns the available geometry of the screen with index \a screen. What
- is available will be subrect of screenGeometry() based on what the
- platform decides is available (for example excludes the dock and menu bar
- on Mac OS X, or the task bar on Windows). The default screen is used if
- \a screen is -1.
-
- \sa screenNumber(), screenGeometry()
-*/
-
-/*!
- \fn const QRect QDesktopWidget::availableGeometry(const QWidget *widget) const
- \overload
-
- Returns the available geometry of the screen which contains \a widget.
-
- \sa screenGeometry()
-*/
-
-/*!
- \fn const QRect QDesktopWidget::availableGeometry(const QPoint &p) const
- \overload
-
- Returns the available geometry of the screen which contains \a p.
-
- \sa screenGeometry()
-*/
-
-
-/*!
- \fn const QRect QDesktopWidget::screenGeometry(int screen) const
-
- Returns the geometry of the screen with index \a screen. The default
- screen is used if \a screen is -1.
-
- \sa screenNumber()
-*/
-
-/*!
- \fn const QRect QDesktopWidget::screenGeometry(const QWidget *widget) const
- \overload
-
- Returns the geometry of the screen which contains \a widget.
-*/
-
-/*!
- \fn const QRect QDesktopWidget::screenGeometry(const QPoint &p) const
- \overload
-
- Returns the geometry of the screen which contains \a p.
-*/
-
-
-/*!
- \fn int QDesktopWidget::screenNumber(const QWidget *widget) const
-
- Returns the index of the screen that contains the largest
- part of \a widget, or -1 if the widget not on a screen.
-
- \sa primaryScreen
-*/
-
-/*!
- \fn int QDesktopWidget::screenNumber(const QPoint &point) const
-
- \overload
- Returns the index of the screen that contains the \a point, or the
- screen which is the shortest distance from the \a point.
-
- \sa primaryScreen
-*/
-
-/*!
- \fn void QDesktopWidget::resizeEvent(QResizeEvent *event)
- \reimp
-*/
-
-/*!
- \fn void QDesktopWidget::resized(int screen)
-
- This signal is emitted when the size of \a screen changes.
-*/
-
-/*!
- \fn void QDesktopWidget::workAreaResized(int screen)
-
- This signal is emitted when the work area available on \a screen changes.
-*/
-
-/*!
- \property QDesktopWidget::screenCount
- \brief the number of screens currently available on the system.
-
- \since 4.6
-
- \sa screenCountChanged()
-*/
-
-/*!
- \property QDesktopWidget::primaryScreen
- \brief the index of the screen that is configured to be the primary screen
- on the system.
-*/
-
-/*!
- \property QDesktopWidget::virtualDesktop
-
- \brief if the system manages the available screens in a virtual desktop.
-
- For virtual desktops, screen() will always return the same widget.
- The size of the virtual desktop is the size of this desktop
- widget.
-*/
-
-/*!
- \fn void QDesktopWidget::screenCountChanged(int newCount)
-
- \since 4.6
-
- This signal is emitted when the number of screens changes to \a newCount.
-
- \sa screenCount
-*/
diff --git a/doc/src/classes/qiterator.qdoc b/doc/src/classes/qiterator.qdoc
deleted file mode 100644
index c767be3bf..000000000
--- a/doc/src/classes/qiterator.qdoc
+++ /dev/null
@@ -1,1431 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class QListIterator
- \inmodule QtCore
-
- \brief The QListIterator class provides a Java-style const iterator for QList and QQueue.
-
- QList has both \l{Java-style iterators} and \l{STL-style
- iterators}. The Java-style iterators are more high-level and
- easier to use than the STL-style iterators; on the other hand,
- they are slightly less efficient.
-
- An alternative to using iterators is to use index positions. Most
- QList member functions take an index as their first parameter,
- making it possible to access, modify, and remove items without
- using iterators.
-
- QListIterator\<T\> allows you to iterate over a QList\<T\> (or a
- QQueue\<T\>). If you want to modify the list as you iterate over
- it, use QMutableListIterator\<T\> instead.
-
- The QListIterator constructor takes a QList as argument. After
- construction, the iterator is located at the very beginning of
- the list (before the first item). Here's how to iterate over all
- the elements sequentially:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 0
-
- The next() function returns the next item in the list and
- advances the iterator. Unlike STL-style iterators, Java-style
- iterators point \e between items rather than directly \e at
- items. The first call to next() advances the iterator to the
- position between the first and second item, and returns the first
- item; the second call to next() advances the iterator to the
- position between the second and third item, and returns the second
- item; and so on.
-
- \img javaiterators1.png
-
- Here's how to iterate over the elements in reverse order:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 1
-
- If you want to find all occurrences of a particular value, use
- findNext() or findPrevious() in a loop.
-
- Multiple iterators can be used on the same list. If the list is
- modified while a QListIterator is active, the QListIterator will
- continue iterating over the original list, ignoring the modified
- copy.
-
- \sa QMutableListIterator, QList::const_iterator
-*/
-
-/*!
- \class QLinkedListIterator
- \inmodule QtCore
-
- \brief The QLinkedListIterator class provides a Java-style const iterator for QLinkedList.
-
- QLinkedList has both \l{Java-style iterators} and
- \l{STL-style iterators}. The Java-style iterators are more
- high-level and easier to use than the STL-style iterators; on the
- other hand, they are slightly less efficient.
-
- QLinkedListIterator\<T\> allows you to iterate over a
- QLinkedList\<T\>. If you want to modify the list as you iterate
- over it, use QMutableLinkedListIterator\<T\> instead.
-
- The QLinkedListIterator constructor takes a QLinkedList as
- argument. After construction, the iterator is located at the very
- beginning of the list (before the first item). Here's how to
- iterate over all the elements sequentially:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 2
-
- The next() function returns the next item in the list and
- advances the iterator. Unlike STL-style iterators, Java-style
- iterators point \e between items rather than directly \e at
- items. The first call to next() advances the iterator to the
- position between the first and second item, and returns the first
- item; the second call to next() advances the iterator to the
- position between the second and third item, and returns the second
- item; and so on.
-
- \img javaiterators1.png
-
- Here's how to iterate over the elements in reverse order:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 3
-
- If you want to find all occurrences of a particular value, use
- findNext() or findPrevious() in a loop.
-
- Multiple iterators can be used on the same list. If the list is
- modified while a QLinkedListIterator is active, the
- QLinkedListIterator will continue iterating over the original
- list, ignoring the modified copy.
-
- \sa QMutableLinkedListIterator, QLinkedList::const_iterator
-*/
-
-/*!
- \class QVectorIterator
- \inmodule QtCore
- \brief The QVectorIterator class provides a Java-style const iterator for QVector and QStack.
-
- QVector has both \l{Java-style iterators} and \l{STL-style
- iterators}. The Java-style iterators are more high-level and
- easier to use than the STL-style iterators; on the other hand,
- they are slightly less efficient.
-
- An alternative to using iterators is to use index positions. Most
- QVector member functions take an index as their first parameter,
- making it possible to access, insert, and remove items without
- using iterators.
-
- QVectorIterator\<T\> allows you to iterate over a QVector\<T\>
- (or a QStack\<T\>). If you want to modify the vector as you
- iterate over it, use QMutableVectorIterator\<T\> instead.
-
- The QVectorIterator constructor takes a QVector as argument.
- After construction, the iterator is located at the very beginning
- of the vector (before the first item). Here's how to iterate over
- all the elements sequentially:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 4
-
- The next() function returns the next item in the vector and
- advances the iterator. Unlike STL-style iterators, Java-style
- iterators point \e between items rather than directly \e at
- items. The first call to next() advances the iterator to the
- position between the first and second item, and returns the first
- item; the second call to next() advances the iterator to the
- position between the second and third item, returning the second
- item; and so on.
-
- \img javaiterators1.png
-
- Here's how to iterate over the elements in reverse order:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 5
-
- If you want to find all occurrences of a particular value, use
- findNext() or findPrevious() in a loop.
-
- Multiple iterators can be used on the same vector. If the vector
- is modified while a QVectorIterator is active, the QVectorIterator
- will continue iterating over the original vector, ignoring the
- modified copy.
-
- \sa QMutableVectorIterator, QVector::const_iterator
-*/
-
-/*!
- \class QSetIterator
- \inmodule QtCore
- \brief The QSetIterator class provides a Java-style const iterator for QSet.
-
- QSet supports both \l{Java-style iterators} and \l{STL-style
- iterators}. The Java-style iterators are more high-level and
- easier to use than the STL-style iterators; on the other hand,
- they are slightly less efficient.
-
- QSetIterator\<T\> allows you to iterate over a QSet\<T\>. If you
- want to modify the set as you iterate over it, use
- QMutableSetIterator\<T\> instead.
-
- The constructor takes a QSet as argument. After construction, the
- iterator is located at the very beginning of the set (before
- the first item). Here's how to iterate over all the elements
- sequentially:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 6
-
- The next() function returns the next item in the set and
- advances the iterator. Unlike STL-style iterators, Java-style
- iterators point \e between items rather than directly \e at
- items. The first call to next() advances the iterator to the
- position between the first and second item, and returns the first
- item; the second call to next() advances the iterator to the
- position between the second and third item, returning the second
- item; and so on.
-
- \img javaiterators1.png
-
- Here's how to iterate over the elements in reverse order:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 7
-
- If you want to find all occurrences of a particular value, use
- findNext() or findPrevious() in a loop.
-
- Multiple iterators can be used on the same set. If the set
- is modified while a QSetIterator is active, the QSetIterator
- will continue iterating over the original set, ignoring the
- modified copy.
-
- \sa QMutableSetIterator, QSet::const_iterator
-*/
-
-/*!
- \class QMutableListIterator
- \inmodule QtCore
-
- \brief The QMutableListIterator class provides a Java-style non-const iterator for QList and QQueue.
-
- QList has both \l{Java-style iterators} and \l{STL-style
- iterators}. The Java-style iterators are more high-level and
- easier to use than the STL-style iterators; on the other hand,
- they are slightly less efficient.
-
- An alternative to using iterators is to use index positions. Most
- QList member functions take an index as their first parameter,
- making it possible to access, insert, and remove items without
- using iterators.
-
- QMutableListIterator\<T\> allows you to iterate over a QList\<T\>
- (or a QQueue\<T\>) and modify the list. If you don't want to
- modify the list (or have a const QList), use the slightly faster
- QListIterator\<T\> instead.
-
- The QMutableListIterator constructor takes a QList as argument.
- After construction, the iterator is located at the very beginning
- of the list (before the first item). Here's how to iterate over
- all the elements sequentially:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 8
-
- The next() function returns the next item in the list and
- advances the iterator. Unlike STL-style iterators, Java-style
- iterators point \e between items rather than directly \e at
- items. The first call to next() advances the iterator to the
- position between the first and second item, and returns the first
- item; the second call to next() advances the iterator to the
- position between the second and third item, returning the second
- item; and so on.
-
- \img javaiterators1.png
-
- Here's how to iterate over the elements in reverse order:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 9
-
- If you want to find all occurrences of a particular value, use
- findNext() or findPrevious() in a loop.
-
- If you want to remove items as you iterate over the list, use
- remove(). If you want to modify the value of an item, use
- setValue(). If you want to insert a new item in the list, use
- insert().
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 10
-
- The example traverses a list, replacing negative numbers with
- their absolute values, and eliminating zeroes.
-
- Only one mutable iterator can be active on a given list at any
- time. Furthermore, no changes should be done directly to the list
- while the iterator is active (as opposed to through the
- iterator), since this could invalidate the iterator and lead to
- undefined behavior.
-
- \sa QListIterator, QList::iterator
-*/
-
-/*!
- \class QMutableLinkedListIterator
- \inmodule QtCore
-
- \brief The QMutableLinkedListIterator class provides a Java-style non-const iterator for QLinkedList.
-
- QLinkedList has both \l{Java-style iterators} and
- \l{STL-style iterators}. The Java-style iterators are more
- high-level and easier to use than the STL-style iterators; on the
- other hand, they are slightly less efficient.
-
- QMutableLinkedListIterator\<T\> allows you to iterate over a
- QLinkedList\<T\> and modify the list. If you don't want to modify
- the list (or have a const QLinkedList), use the slightly faster
- QLinkedListIterator\<T\> instead.
-
- The QMutableLinkedListIterator constructor takes a QLinkedList as
- argument. After construction, the iterator is located at the very
- beginning of the list (before the first item). Here's how to
- iterate over all the elements sequentially:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 11
-
- The next() function returns the next item in the list and
- advances the iterator. Unlike STL-style iterators, Java-style
- iterators point \e between items rather than directly \e at
- items. The first call to next() advances the iterator to the
- position between the first and second item, and returns the first
- item; the second call to next() advances the iterator to the
- position between the second and third item, returning the second
- item; and so on.
-
- \img javaiterators1.png
-
- Here's how to iterate over the elements in reverse order:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 12
-
- If you want to find all occurrences of a particular value, use
- findNext() or findPrevious() in a loop.
-
- If you want to remove items as you iterate over the list, use
- remove(). If you want to modify the value of an item, use
- setValue(). If you want to insert a new item in the list, use
- insert().
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 13
-
- The example traverses a list, replacing negative numbers with
- their absolute values, and eliminating zeroes.
-
- Only one mutable iterator can be active on a given list at any
- time. Furthermore, no changes should be done directly to the list
- while the iterator is active (as opposed to through the
- iterator), since this could invalidate the iterator and lead to
- undefined behavior.
-
- \sa QLinkedListIterator, QLinkedList::iterator
-*/
-
-/*!
- \class QMutableVectorIterator
- \inmodule QtCore
-
- \brief The QMutableVectorIterator class provides a Java-style non-const iterator for QVector and QStack.
-
- QVector has both \l{Java-style iterators} and \l{STL-style
- iterators}. The Java-style iterators are more high-level and
- easier to use than the STL-style iterators; on the other hand,
- they are slightly less efficient.
-
- An alternative to using iterators is to use index positions. Most
- QVector member functions take an index as their first parameter,
- making it possible to access, insert, and remove items without
- using iterators.
-
- QMutableVectorIterator\<T\> allows you to iterate over a
- QVector\<T\> and modify the vector. If you don't want to modify
- the vector (or have a const QVector), use the slightly faster
- QVectorIterator\<T\> instead.
-
- The QMutableVectorIterator constructor takes a QVector as
- argument. After construction, the iterator is located at the very
- beginning of the list (before the first item). Here's how to
- iterate over all the elements sequentially:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 14
-
- The next() function returns the next item in the vector and
- advances the iterator. Unlike STL-style iterators, Java-style
- iterators point \e between items rather than directly \e at
- items. The first call to next() advances the iterator to the
- position between the first and second item, and returns the first
- item; the second call to next() advances the iterator to the
- position between the second and third item, returning the second
- item; and so on.
-
- \img javaiterators1.png
-
- Here's how to iterate over the elements in reverse order:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 15
-
- If you want to find all occurrences of a particular value, use
- findNext() or findPrevious() in a loop.
-
- If you want to remove items as you iterate over the vector, use
- remove(). If you want to modify the value of an item, use
- setValue(). If you want to insert a new item in the vector, use
- insert().
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 16
-
- The example traverses a vector, replacing negative numbers with
- their absolute values, and eliminating zeroes.
-
- Only one mutable iterator can be active on a given vector at any
- time. Furthermore, no changes should be done directly to the
- vector while the iterator is active (as opposed to through the
- iterator), since this could invalidate the iterator and lead to
- undefined behavior.
-
- \sa QVectorIterator, QVector::iterator
-*/
-
-/*!
- \class QMutableSetIterator
- \inmodule QtCore
- \since 4.2
-
- \brief The QMutableSetIterator class provides a Java-style non-const iterator for QSet.
-
- QSet has both \l{Java-style iterators} and \l{STL-style
- iterators}. The Java-style iterators are more high-level and
- easier to use than the STL-style iterators; on the other hand,
- they are slightly less efficient.
-
- QMutableSetIterator\<T\> allows you to iterate over a QSet\<T\>
- and remove items from the set as you iterate. If you don't want
- to modify the set (or have a const QSet), use the slightly faster
- QSetIterator\<T\> instead.
-
- The QMutableSetIterator constructor takes a QSet as argument.
- After construction, the iterator is located at the very beginning
- of the set (before the first item). Here's how to iterate over
- all the elements sequentially:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 17
-
- The next() function returns the next item in the set and
- advances the iterator. Unlike STL-style iterators, Java-style
- iterators point \e between items rather than directly \e at
- items. The first call to next() advances the iterator to the
- position between the first and second item, and returns the first
- item; the second call to next() advances the iterator to the
- position between the second and third item, returning the second
- item; and so on.
-
- \img javaiterators1.png
-
- Here's how to iterate over the elements in reverse order:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 18
-
- If you want to remove items as you iterate over the set, use
- remove().
-
- Only one mutable iterator can be active on a given set at any
- time. Furthermore, no changes should be done directly to the set
- while the iterator is active (as opposed to through the
- iterator), since this could invalidate the iterator and lead to
- undefined behavior.
-
- \sa QSetIterator, QSet::iterator
-*/
-
-/*!
- \fn QListIterator::QListIterator(const QList<T> &list)
- \fn QLinkedListIterator::QLinkedListIterator(const QLinkedList<T> &list)
- \fn QMutableListIterator::QMutableListIterator(QList<T> &list)
- \fn QMutableLinkedListIterator::QMutableLinkedListIterator(QLinkedList<T> &list)
-
- Constructs an iterator for traversing \a list. The iterator is
- set to be at the front of the list (before the first item).
-
- \sa operator=()
-*/
-
-/*!
- \fn QVectorIterator::QVectorIterator(const QVector<T> &vector)
- \fn QMutableVectorIterator::QMutableVectorIterator(QVector<T> &vector)
-
- Constructs an iterator for traversing \a vector. The iterator is
- set to be at the front of the vector (before the first item).
-
- \sa operator=()
-*/
-
-/*!
- \fn QSetIterator::QSetIterator(const QSet<T> &set)
- \fn QMutableSetIterator::QMutableSetIterator(QSet<T> &set)
-
- Constructs an iterator for traversing \a set. The iterator is
- set to be at the front of the set (before the first item).
-
- \sa operator=()
-*/
-
-/*!
- \fn QMutableListIterator::~QMutableListIterator()
- \fn QMutableLinkedListIterator::~QMutableLinkedListIterator()
- \fn QMutableVectorIterator::~QMutableVectorIterator()
- \fn QMutableSetIterator::~QMutableSetIterator()
-
- Destroys the iterator.
-
- \sa operator=()
-*/
-
-/*! \fn QMutableListIterator &QMutableListIterator::operator=(QList<T> &list)
- \fn QMutableLinkedListIterator &QMutableLinkedListIterator::operator=(QLinkedList<T> &list)
- \fn QListIterator &QListIterator::operator=(const QList<T> &list)
- \fn QLinkedListIterator &QLinkedListIterator::operator=(const QLinkedList<T> &list)
-
- Makes the iterator operate on \a list. The iterator is set to be
- at the front of the list (before the first item).
-
- \sa toFront(), toBack()
-*/
-
-/*! \fn QVectorIterator &QVectorIterator::operator=(const QVector<T> &vector)
- \fn QMutableVectorIterator &QMutableVectorIterator::operator=(QVector<T> &vector)
-
- Makes the iterator operate on \a vector. The iterator is set to be
- at the front of the vector (before the first item).
-
- \sa toFront(), toBack()
-*/
-
-/*! \fn QSetIterator &QSetIterator::operator=(const QSet<T> &set)
- \fn QMutableSetIterator &QMutableSetIterator::operator=(QSet<T> &set)
-
- Makes the iterator operate on \a set. The iterator is set to be
- at the front of the set (before the first item).
-
- \sa toFront(), toBack()
-*/
-
-/*! \fn void QListIterator::toFront()
- \fn void QLinkedListIterator::toFront()
- \fn void QVectorIterator::toFront()
- \fn void QSetIterator::toFront()
- \fn void QMutableListIterator::toFront()
- \fn void QMutableLinkedListIterator::toFront()
- \fn void QMutableVectorIterator::toFront()
- \fn void QMutableSetIterator::toFront()
-
- Moves the iterator to the front of the container (before the
- first item).
-
- \sa toBack(), next()
-*/
-
-/*! \fn void QListIterator::toBack()
- \fn void QLinkedListIterator::toBack()
- \fn void QVectorIterator::toBack()
- \fn void QSetIterator::toBack()
- \fn void QMutableListIterator::toBack()
- \fn void QMutableLinkedListIterator::toBack()
- \fn void QMutableVectorIterator::toBack()
- \fn void QMutableSetIterator::toBack()
-
- Moves the iterator to the back of the container (after the last
- item).
-
- \sa toFront(), previous()
-*/
-
-/*! \fn bool QListIterator::hasNext() const
- \fn bool QLinkedListIterator::hasNext() const
- \fn bool QVectorIterator::hasNext() const
- \fn bool QSetIterator::hasNext() const
- \fn bool QMutableListIterator::hasNext() const
- \fn bool QMutableLinkedListIterator::hasNext() const
- \fn bool QMutableVectorIterator::hasNext() const
- \fn bool QMutableSetIterator::hasNext() const
-
- Returns true if there is at least one item ahead of the iterator,
- i.e. the iterator is \e not at the back of the container;
- otherwise returns false.
-
- \sa hasPrevious(), next()
-*/
-
-/*! \fn const T &QListIterator::next()
- \fn const T &QLinkedListIterator::next()
- \fn const T &QVectorIterator::next()
- \fn const T &QSetIterator::next()
- \fn const T &QMutableSetIterator::next()
-
- Returns the next item and advances the iterator by one position.
-
- Calling this function on an iterator located at the back of the
- container leads to undefined results.
-
- \sa hasNext(), peekNext(), previous()
-*/
-
-/*! \fn T &QMutableListIterator::next()
- \fn T &QMutableLinkedListIterator::next()
- \fn T &QMutableVectorIterator::next()
-
- Returns a reference to the next item, and advances the iterator
- by one position.
-
- Calling this function on an iterator located at the back of the
- container leads to undefined results.
-
- \sa hasNext(), peekNext(), previous()
-*/
-
-/*! \fn const T &QListIterator::peekNext() const
- \fn const T &QLinkedListIterator::peekNext() const
- \fn const T &QVectorIterator::peekNext() const
- \fn const T &QSetIterator::peekNext() const
- \fn const T &QMutableSetIterator::peekNext() const
-
- Returns the next item without moving the iterator.
-
- Calling this function on an iterator located at the back of the
- container leads to undefined results.
-
- \sa hasNext(), next(), peekPrevious()
-*/
-
-/*! \fn T &QMutableListIterator::peekNext() const
- \fn T &QMutableLinkedListIterator::peekNext() const
- \fn T &QMutableVectorIterator::peekNext() const
-
- Returns a reference to the next item, without moving the iterator.
-
- Calling this function on an iterator located at the back of the
- container leads to undefined results.
-
- \sa hasNext(), next(), peekPrevious()
-*/
-
-/*! \fn bool QListIterator::hasPrevious() const
- \fn bool QLinkedListIterator::hasPrevious() const
- \fn bool QVectorIterator::hasPrevious() const
- \fn bool QSetIterator::hasPrevious() const
- \fn bool QMutableListIterator::hasPrevious() const
- \fn bool QMutableLinkedListIterator::hasPrevious() const
- \fn bool QMutableVectorIterator::hasPrevious() const
- \fn bool QMutableSetIterator::hasPrevious() const
-
- Returns true if there is at least one item behind the iterator,
- i.e. the iterator is \e not at the front of the container;
- otherwise returns false.
-
- \sa hasNext(), previous()
-*/
-
-/*! \fn const T &QListIterator::previous()
- \fn const T &QLinkedListIterator::previous()
- \fn const T &QVectorIterator::previous()
- \fn const T &QSetIterator::previous()
- \fn const T &QMutableSetIterator::previous()
-
- Returns the previous item and moves the iterator back by one
- position.
-
- Calling this function on an iterator located at the front of the
- container leads to undefined results.
-
- \sa hasPrevious(), peekPrevious(), next()
-*/
-
-/*! \fn T &QMutableListIterator::previous()
- \fn T &QMutableLinkedListIterator::previous()
- \fn T &QMutableVectorIterator::previous()
-
- Returns a reference to the previous item and moves the iterator
- back by one position.
-
- Calling this function on an iterator located at the front of the
- container leads to undefined results.
-
- \sa hasPrevious(), peekPrevious(), next()
-*/
-
-/*! \fn const T &QListIterator::peekPrevious() const
- \fn const T &QLinkedListIterator::peekPrevious() const
- \fn const T &QVectorIterator::peekPrevious() const
- \fn const T &QSetIterator::peekPrevious() const
- \fn const T &QMutableSetIterator::peekPrevious() const
-
- Returns the previous item without moving the iterator.
-
- Calling this function on an iterator located at the front of the
- container leads to undefined results.
-
- \sa hasPrevious(), previous(), peekNext()
-*/
-
-/*! \fn T &QMutableListIterator::peekPrevious() const
- \fn T &QMutableLinkedListIterator::peekPrevious() const
- \fn T &QMutableVectorIterator::peekPrevious() const
-
- Returns a reference to the previous item, without moving the iterator.
-
- Calling this function on an iterator located at the front of the
- container leads to undefined results.
-
- \sa hasPrevious(), previous(), peekNext()
-*/
-
-/*! \fn bool QListIterator::findNext(const T &value)
- \fn bool QLinkedListIterator::findNext(const T &value)
- \fn bool QVectorIterator::findNext(const T &value)
- \fn bool QSetIterator::findNext(const T &value)
- \fn bool QMutableListIterator::findNext(const T &value)
- \fn bool QMutableLinkedListIterator::findNext(const T &value)
- \fn bool QMutableVectorIterator::findNext(const T &value)
- \fn bool QMutableSetIterator::findNext(const T &value)
-
- Searches for \a value starting from the current iterator position
- forward. Returns true if \a value is found; otherwise returns false.
-
- After the call, if \a value was found, the iterator is positioned
- just after the matching item; otherwise, the iterator is
- positioned at the back of the container.
-
- \sa findPrevious()
-*/
-
-/*! \fn bool QListIterator::findPrevious(const T &value)
- \fn bool QLinkedListIterator::findPrevious(const T &value)
- \fn bool QVectorIterator::findPrevious(const T &value)
- \fn bool QSetIterator::findPrevious(const T &value)
- \fn bool QMutableListIterator::findPrevious(const T &value)
- \fn bool QMutableLinkedListIterator::findPrevious(const T &value)
- \fn bool QMutableVectorIterator::findPrevious(const T &value)
- \fn bool QMutableSetIterator::findPrevious(const T &value)
-
- Searches for \a value starting from the current iterator position
- backward. Returns true if \a value is found; otherwise returns
- false.
-
- After the call, if \a value was found, the iterator is positioned
- just before the matching item; otherwise, the iterator is
- positioned at the front of the container.
-
- \sa findNext()
-*/
-
-/*! \fn void QMutableListIterator::remove()
-
- Removes the last item that was jumped over using one of the
- traversal functions (next(), previous(), findNext(), findPrevious()).
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 19
-
- \sa insert(), setValue()
-*/
-
-/*! \fn void QMutableLinkedListIterator::remove()
-
- Removes the last item that was jumped over using one of the
- traversal functions (next(), previous(), findNext(), findPrevious()).
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 20
-
- \sa insert(), setValue()
-*/
-
-/*! \fn void QMutableVectorIterator::remove()
-
- Removes the last item that was jumped over using one of the
- traversal functions (next(), previous(), findNext(), findPrevious()).
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 21
-
- \sa insert(), setValue()
-*/
-
-/*! \fn void QMutableSetIterator::remove()
-
- Removes the last item that was jumped over using one of the
- traversal functions (next(), previous(), findNext(), findPrevious()).
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 22
-
- \sa value()
-*/
-
-/*! \fn void QMutableListIterator::setValue(const T &value) const
-
- Replaces the value of the last item that was jumped over using
- one of the traversal functions with \a value.
-
- The traversal functions are next(), previous(), findNext(), and
- findPrevious().
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 23
-
- \sa value(), remove(), insert()
-*/
-
-/*! \fn void QMutableLinkedListIterator::setValue(const T &value) const
-
- Replaces the value of the last item that was jumped over using
- one of the traversal functions with \a value.
-
- The traversal functions are next(), previous(), findNext(), and
- findPrevious().
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 24
-
- \sa value(), remove(), insert()
-*/
-
-/*! \fn void QMutableVectorIterator::setValue(const T &value) const
-
- Replaces the value of the last item that was jumped over using
- one of the traversal functions with \a value.
-
- The traversal functions are next(), previous(), findNext(), and
- findPrevious().
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 25
-
- \sa value(), remove(), insert()
-*/
-
-/*! \fn const T &QMutableListIterator::value() const
- \fn const T &QMutableLinkedListIterator::value() const
- \fn const T &QMutableVectorIterator::value() const
- \fn const T &QMutableSetIterator::value() const
-
- Returns the value of the last item that was jumped over using one
- of the traversal functions (next(), previous(), findNext(),
- findPrevious()).
-
- After a call to next() or findNext(), value() is equivalent to
- peekPrevious(). After a call to previous() or findPrevious(), value() is
- equivalent to peekNext().
-*/
-
-/*!
- \fn T &QMutableListIterator::value()
- \fn T &QMutableLinkedListIterator::value()
- \fn T &QMutableVectorIterator::value()
- \overload
-
- Returns a non-const reference to the value of the last item that
- was jumped over using one of the traversal functions.
-*/
-
-/*! \fn void QMutableListIterator::insert(const T &value)
- \fn void QMutableLinkedListIterator::insert(const T &value)
- \fn void QMutableVectorIterator::insert(const T &value)
-
- Inserts \a value at the current iterator position. After the
- call, the iterator is located just after the inserted item.
-
- \sa remove(), setValue()
-*/
-
-/*!
- \class QMapIterator
- \inmodule QtCore
-
- \brief The QMapIterator class provides a Java-style const iterator for QMap and QMultiMap.
-
- QMap has both \l{Java-style iterators} and \l{STL-style
- iterators}. The Java-style iterators are more high-level and
- easier to use than the STL-style iterators; on the other hand,
- they are slightly less efficient.
-
- QMapIterator\<Key, T\> allows you to iterate over a QMap (or a
- QMultiMap). If you want to modify the map as you iterate over
- it, use QMutableMapIterator instead.
-
- The QMapIterator constructor takes a QMap as argument. After
- construction, the iterator is located at the very beginning of
- the map (before the first item). Here's how to iterate over all
- the elements sequentially:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 26
-
- The next() function returns the next item in the map and
- advances the iterator. The key() and value() functions return the
- key and value of the last item that was jumped over.
-
- Unlike STL-style iterators, Java-style iterators point \e between
- items rather than directly \e at items. The first call to next()
- advances the iterator to the position between the first and
- second item, and returns the first item; the second call to
- next() advances the iterator to the position between the second
- and third item; and so on.
-
- \img javaiterators1.png
-
- Here's how to iterate over the elements in reverse order:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 27
-
- If you want to find all occurrences of a particular value, use
- findNext() or findPrevious() in a loop. For example:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 28
-
- Multiple iterators can be used on the same map. If the map is
- modified while a QMapIterator is active, the QMapIterator will
- continue iterating over the original map, ignoring the modified
- copy.
-
- \sa QMutableMapIterator, QMap::const_iterator
-*/
-
-/*!
- \class QHashIterator
- \inmodule QtCore
-
- \brief The QHashIterator class provides a Java-style const iterator for QHash and QMultiHash.
-
- QHash has both \l{Java-style iterators} and \l{STL-style
- iterators}. The Java-style iterators are more high-level and
- easier to use than the STL-style iterators; on the other hand,
- they are slightly less efficient.
-
- QHashIterator\<Key, T\> allows you to iterate over a QHash (or a
- QMultiHash). If you want to modify the hash as you iterate over
- it, use QMutableHashIterator instead.
-
- The QHashIterator constructor takes a QHash as argument. After
- construction, the iterator is located at the very beginning of
- the hash (before the first item). Here's how to iterate over all
- the elements sequentially:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 29
-
- The next() function returns the next item in the hash and
- advances the iterator. The key() and value() functions return the
- key and value of the last item that was jumped over.
-
- Unlike STL-style iterators, Java-style iterators point \e between
- items rather than directly \e at items. The first call to next()
- advances the iterator to the position between the first and
- second item, and returns the first item; the second call to
- next() advances the iterator to the position between the second
- and third item; and so on.
-
- \img javaiterators1.png
-
- Here's how to iterate over the elements in reverse order:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 30
-
- If you want to find all occurrences of a particular value, use
- findNext() or findPrevious() in a loop. For example:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 31
-
- Multiple iterators can be used on the same hash. If the hash is
- modified while a QHashIterator is active, the QHashIterator will
- continue iterating over the original hash, ignoring the modified
- copy.
-
- \sa QMutableHashIterator, QHash::const_iterator
-*/
-
-/*!
- \class QMutableMapIterator
- \inmodule QtCore
-
- \brief The QMutableMapIterator class provides a Java-style non-const iterator for QMap and QMultiMap.
-
- QMap has both \l{Java-style iterators} and \l{STL-style
- iterators}. The Java-style iterators are more high-level and
- easier to use than the STL-style iterators; on the other hand,
- they are slightly less efficient.
-
- QMutableMapIterator\<Key, T\> allows you to iterate over a QMap
- (or a QMultiMap) and modify the map. If you don't want to modify
- the map (or have a const QMap), use the slightly faster
- QMapIterator instead.
-
- The QMutableMapIterator constructor takes a QMap as argument.
- After construction, the iterator is located at the very beginning
- of the map (before the first item). Here's how to iterate over
- all the elements sequentially:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 32
-
- The next() function returns the next item in the map and
- advances the iterator. The key() and value() functions return the
- key and value of the last item that was jumped over.
-
- Unlike STL-style iterators, Java-style iterators point \e between
- items rather than directly \e at items. The first call to next()
- advances the iterator to the position between the first and
- second item, and returns the first item; the second call to
- next() advances the iterator to the position between the second
- and third item; and so on.
-
- \img javaiterators1.png
-
- Here's how to iterate over the elements in reverse order:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 33
-
- If you want to find all occurrences of a particular value, use
- findNext() or findPrevious() in a loop. For example:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 34
-
- If you want to remove items as you iterate over the map, use
- remove(). If you want to modify the value of an item, use
- setValue().
-
- Example:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 35
-
- The example removes all (key, value) pairs where the key and the
- value are the same.
-
- Only one mutable iterator can be active on a given map at any
- time. Furthermore, no changes should be done directly to the map
- while the iterator is active (as opposed to through the
- iterator), since this could invalidate the iterator and lead to
- undefined behavior.
-
- \sa QMapIterator, QMap::iterator
-*/
-
-/*!
- \class QMutableHashIterator
- \inmodule QtCore
-
- \brief The QMutableHashIterator class provides a Java-style non-const iterator for QHash and QMultiHash.
-
- QHash has both \l{Java-style iterators} and \l{STL-style
- iterators}. The Java-style iterators are more high-level and
- easier to use than the STL-style iterators; on the other hand,
- they are slightly less efficient.
-
- QMutableHashIterator\<Key, T\> allows you to iterate over a QHash
- (or a QMultiHash) and modify the hash. If you don't want to modify
- the hash (or have a const QHash), use the slightly faster
- QHashIterator instead.
-
- The QMutableHashIterator constructor takes a QHash as argument.
- After construction, the iterator is located at the very beginning
- of the hash (before the first item). Here's how to iterate over
- all the elements sequentially:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 36
-
- The next() function returns the next item in the hash and
- advances the iterator. The key() and value() functions return the
- key and value of the last item that was jumped over.
-
- Unlike STL-style iterators, Java-style iterators point \e between
- items rather than directly \e at items. The first call to next()
- advances the iterator to the position between the first and
- second item, and returns the first item; the second call to
- next() advances the iterator to the position between the second
- and third item; and so on.
-
- \img javaiterators1.png
-
- Here's how to iterate over the elements in reverse order:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 37
-
- If you want to find all occurrences of a particular value, use
- findNext() or findPrevious() in a loop. For example:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 38
-
- If you want to remove items as you iterate over the hash, use
- remove(). If you want to modify the value of an item, use
- setValue().
-
- Example:
-
- \snippet doc/src/snippets/code/doc_src_qiterator.qdoc 39
-
- The example removes all (key, value) pairs where the key and the
- value are the same.
-
- Only one mutable iterator can be active on a given hash at any
- time. Furthermore, no changes should be done directly to the hash
- while the iterator is active (as opposed to through the
- iterator), since this could invalidate the iterator and lead to
- undefined behavior.
-
- \sa QHashIterator, QHash::iterator
-*/
-
-/*! \fn QMapIterator::QMapIterator(const QMap<Key, T> &map)
- \fn QMutableMapIterator::QMutableMapIterator(QMap<Key, T> &map)
-
- Constructs an iterator for traversing \a map. The iterator is set
- to be at the front of the map (before the first item).
-
- \sa operator=()
-*/
-
-/*! \fn QHashIterator::QHashIterator(const QHash<Key, T> &hash)
- \fn QMutableHashIterator::QMutableHashIterator(QHash<Key, T> &hash)
-
- Constructs an iterator for traversing \a hash. The iterator is
- set to be at the front of the hash (before the first item).
-
- \sa operator=()
-*/
-
-/*!
- \fn QMutableMapIterator::~QMutableMapIterator()
- \fn QMutableHashIterator::~QMutableHashIterator()
-
- Destroys the iterator.
-
- \sa operator=()
-*/
-
-/*! \fn QMapIterator &QMapIterator::operator=(const QMap<Key, T> &map)
- \fn QMutableMapIterator &QMutableMapIterator::operator=(QMap<Key, T> &map)
-
- Makes the iterator operate on \a map. The iterator is set to be
- at the front of the map (before the first item).
-
- \sa toFront(), toBack()
-*/
-
-/*! \fn QHashIterator &QHashIterator::operator=(const QHash<Key, T> &hash)
- \fn QMutableHashIterator &QMutableHashIterator::operator=(QHash<Key, T> &hash)
-
- Makes the iterator operate on \a hash. The iterator is set to be
- at the front of the hash (before the first item).
-
- \sa toFront(), toBack()
-*/
-
-/*! \fn void QMapIterator::toFront()
- \fn void QHashIterator::toFront()
- \fn void QMutableMapIterator::toFront()
- \fn void QMutableHashIterator::toFront()
-
- Moves the iterator to the front of the container (before the
- first item).
-
- \sa toBack(), next()
-*/
-
-/*! \fn void QMapIterator::toBack()
- \fn void QHashIterator::toBack()
- \fn void QMutableMapIterator::toBack()
- \fn void QMutableHashIterator::toBack()
-
- Moves the iterator to the back of the container (after the last
- item).
-
- \sa toFront(), previous()
-*/
-
-/*! \fn bool QMapIterator::hasNext() const
- \fn bool QHashIterator::hasNext() const
- \fn bool QMutableMapIterator::hasNext() const
- \fn bool QMutableHashIterator::hasNext() const
-
- Returns true if there is at least one item ahead of the iterator,
- i.e. the iterator is \e not at the back of the container;
- otherwise returns false.
-
- \sa hasPrevious(), next()
-*/
-
-/*! \fn QMapIterator::Item QMapIterator::next()
- \fn QHashIterator::Item QHashIterator::next()
-
- Returns the next item and advances the iterator by one position.
-
- Call key() on the return value to obtain the item's key, and
- value() to obtain the value.
-
- Calling this function on an iterator located at the back of the
- container leads to undefined results.
-
- \sa hasNext(), peekNext(), previous()
-*/
-
-/*! \fn QMutableMapIterator::Item QMutableMapIterator::next()
- \fn QMutableHashIterator::Item QMutableHashIterator::next()
-
- Returns the next item and advances the iterator by one position.
-
- Call key() on the return value to obtain the item's key, and
- value() to obtain the value.
-
- Calling this function on an iterator located at the back of the
- container leads to undefined results.
-
- \sa hasNext(), peekNext(), previous()
-*/
-
-/*! \fn QMapIterator::Item QMapIterator::peekNext() const
- \fn QHashIterator::Item QHashIterator::peekNext() const
-
- Returns the next item without moving the iterator.
-
- Call key() on the return value to obtain the item's key, and
- value() to obtain the value.
-
- Calling this function on an iterator located at the back of the
- container leads to undefined results.
-
- \sa hasNext(), next(), peekPrevious()
-*/
-
-/*! \fn QMutableMapIterator::Item QMutableMapIterator::peekNext() const
- \fn QMutableHashIterator::Item QMutableHashIterator::peekNext() const
-
- Returns a reference to the next item without moving the iterator.
-
- Call key() on the return value to obtain the item's key, and
- value() to obtain the value.
-
- Calling this function on an iterator located at the back of the
- container leads to undefined results.
-
- \sa hasNext(), next(), peekPrevious()
-*/
-
-/*! \fn bool QMapIterator::hasPrevious() const
- \fn bool QHashIterator::hasPrevious() const
- \fn bool QMutableMapIterator::hasPrevious() const
- \fn bool QMutableHashIterator::hasPrevious() const
-
- Returns true if there is at least one item behind the iterator,
- i.e. the iterator is \e not at the front of the container;
- otherwise returns false.
-
- \sa hasNext(), previous()
-*/
-
-/*! \fn QMapIterator::Item QMapIterator::previous()
- \fn QHashIterator::Item QHashIterator::previous()
-
- Returns the previous item and moves the iterator back by one
- position.
-
- Call key() on the return value to obtain the item's key, and
- value() to obtain the value.
-
- Calling this function on an iterator located at the front of the
- container leads to undefined results.
-
- \sa hasPrevious(), peekPrevious(), next()
-*/
-
-/*! \fn QMutableMapIterator::Item QMutableMapIterator::previous()
- \fn QMutableHashIterator::Item QMutableHashIterator::previous()
-
- Returns the previous item and moves the iterator back by one
- position.
-
- Call key() on the return value to obtain the item's key, and
- value() to obtain the value.
-
- Calling this function on an iterator located at the front of the
- container leads to undefined results.
-
- \sa hasPrevious(), peekPrevious(), next()
-*/
-
-/*! \fn QMapIterator::Item QMapIterator::peekPrevious() const
- \fn QHashIterator::Item QHashIterator::peekPrevious() const
-
- Returns the previous item without moving the iterator.
-
- Call key() on the return value to obtain the item's key, and
- value() to obtain the value.
-
- Calling this function on an iterator located at the front of the
- container leads to undefined results.
-
- \sa hasPrevious(), previous(), peekNext()
-*/
-
-/*! \fn QMutableMapIterator::Item QMutableMapIterator::peekPrevious() const
- \fn QMutableHashIterator::Item QMutableHashIterator::peekPrevious() const
-
- Returns the previous item without moving the iterator.
-
- Call key() on the return value to obtain the item's key, and
- value() to obtain the value.
-
- Calling this function on an iterator located at the front of the
- container leads to undefined results.
-
- \sa hasPrevious(), previous(), peekNext()
-*/
-
-/*! \fn const T &QMapIterator::value() const
- \fn const T &QHashIterator::value() const
-
- Returns the value of the last item that was jumped over using one
- of the traversal functions (next(), previous(), findNext(),
- findPrevious()).
-
- After a call to next() or findNext(), value() is
- equivalent to peekPrevious().value(). After a call to previous()
- or findPrevious(), value() is equivalent to peekNext().value().
-
- \sa key()
-*/
-
-/*!
- \fn const T &QMutableMapIterator::value() const
- \fn const T &QMutableHashIterator::value() const
-
- Returns the value of the last item that was jumped over using one
- of the traversal functions (next(), previous(), findNext(),
- findPrevious()).
-
- After a call to next() or findNext(), value() is
- equivalent to peekPrevious().value(). After a call to previous()
- or findPrevious(), value() is equivalent to peekNext().value().
-
- \sa key(), setValue()
-*/
-
-/*!
- \fn T &QMutableMapIterator::value()
- \fn T &QMutableHashIterator::value()
- \overload
-
- Returns a non-const reference to the value of
- the last item that was jumped over using one
- of the traversal functions.
-*/
-
-/*! \fn const Key &QMapIterator::key() const
- \fn const Key &QHashIterator::key() const
- \fn const Key &QMutableMapIterator::key() const
- \fn const Key &QMutableHashIterator::key() const
-
- Returns the key of the last item that was jumped over using one
- of the traversal functions (next(), previous(), findNext(),
- findPrevious()).
-
- After a call to next() or findNext(), key() is
- equivalent to peekPrevious().key(). After a call to previous() or
- findPrevious(), key() is equivalent to peekNext().key().
-
- \sa value()
-*/
-
-/*! \fn bool QMapIterator::findNext(const T &value)
- \fn bool QHashIterator::findNext(const T &value)
- \fn bool QMutableMapIterator::findNext(const T &value)
- \fn bool QMutableHashIterator::findNext(const T &value)
-
- Searches for \a value starting from the current iterator position
- forward. Returns true if a (key, value) pair with value \a value
- is found; otherwise returns false.
-
- After the call, if \a value was found, the iterator is positioned
- just after the matching item; otherwise, the iterator is
- positioned at the back of the container.
-
- \sa findPrevious()
-*/
-
-/*! \fn bool QMapIterator::findPrevious(const T &value)
- \fn bool QHashIterator::findPrevious(const T &value)
- \fn bool QMutableMapIterator::findPrevious(const T &value)
- \fn bool QMutableHashIterator::findPrevious(const T &value)
-
- Searches for \a value starting from the current iterator position
- backward. Returns true if a (key, value) pair with value \a value
- is found; otherwise returns false.
-
- After the call, if \a value was found, the iterator is positioned
- just before the matching item; otherwise, the iterator is
- positioned at the front of the container.
-
- \sa findNext()
-*/
-
-/*! \fn void QMutableMapIterator::remove()
- \fn void QMutableHashIterator::remove()
-
- Removes the last item that was jumped over using one of the
- traversal functions (next(), previous(), findNext(), findPrevious()).
-
- \sa setValue()
-*/
-
-/*! \fn void QMutableMapIterator::setValue(const T &value)
- \fn void QMutableHashIterator::setValue(const T &value)
-
- Replaces the value of the last item that was jumped over using
- one of the traversal functions with \a value.
-
- The traversal functions are next(), previous(), findNext(), and
- findPrevious().
-
- \sa key(), value(), remove()
-*/
diff --git a/doc/src/classes/qmacstyle.qdoc b/doc/src/classes/qmacstyle.qdoc
deleted file mode 100644
index 171ddb0b8..000000000
--- a/doc/src/classes/qmacstyle.qdoc
+++ /dev/null
@@ -1,261 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-/*!
- \class QMacStyle
- \brief The QMacStyle class provides a Mac OS X style using the Apple Appearance Manager.
-
- \ingroup appearance
-
- This class is implemented as a wrapper to the HITheme
- APIs, allowing applications to be styled according to the current
- theme in use on Mac OS X. This is done by having primitives
- in QStyle implemented in terms of what Mac OS X would normally theme.
-
- \warning This style is only available on Mac OS X because it relies on the
- HITheme APIs.
-
- There are additional issues that should be taken
- into consideration to make an application compatible with the
- \link http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html
- Apple Human Interface Guidelines \endlink. Some of these issues are outlined
- below.
-
- \list
-
- \i Layout - The restrictions on window layout are such that some
- aspects of layout that are style-dependent cannot be achieved
- using QLayout. Changes are being considered (and feedback would be
- appreciated) to make layouts QStyle-able. Some of the restrictions
- involve horizontal and vertical widget alignment and widget size
- (covered below).
-
- \i Widget size - Mac OS X allows widgets to have specific fixed sizes. Qt
- does not fully implement this behavior so as to maintain cross-platform
- compatibility. As a result some widgets sizes may be inappropriate (and
- subsequently not rendered correctly by the HITheme APIs).The
- QWidget::sizeHint() will return the appropriate size for many
- managed widgets (widgets enumerated in \l QStyle::ContentsType).
-
- \i Effects - QMacStyle uses HITheme for performing most of the drawing, but
- also uses emulation in a few cases where HITheme does not provide the
- required functionality (for example, tab bars on Panther, the toolbar
- separator, etc). We tried to make the emulation as close to the original as
- possible. Please report any issues you see in effects or non-standard
- widgets.
-
- \endlist
-
- There are other issues that need to be considered in the feel of
- your application (including the general color scheme to match the
- Aqua colors). The Guidelines mentioned above will remain current
- with new advances and design suggestions for Mac OS X.
-
- Note that the functions provided by QMacStyle are
- reimplementations of QStyle functions; see QStyle for their
- documentation.
-
- \img qmacstyle.png
- \sa QWindowsXPStyle, QWindowsStyle, QPlastiqueStyle, QCDEStyle, QMotifStyle
-*/
-
-
-/*!
- \enum QMacStyle::WidgetSizePolicy
-
- \value SizeSmall
- \value SizeLarge
- \value SizeMini
- \value SizeDefault
- \omitvalue SizeNone
-*/
-
-/*! \fn QMacStyle::QMacStyle()
- Constructs a QMacStyle object.
-*/
-
-/*! \fn QMacStyle::~QMacStyle()
- Destructs a QMacStyle object.
-*/
-
-/*! \fn void QMacStyle::polish(QPalette &pal)
- \reimp
-*/
-
-/*! \fn void QMacStyle::polish(QApplication *)
- \reimp
-*/
-
-/*! \fn void QMacStyle::unpolish(QApplication *)
- \reimp
-*/
-
-/*! \fn void QMacStyle::polish(QWidget* w)
- \reimp
-*/
-
-/*! \fn void QMacStyle::unpolish(QWidget* w)
- \reimp
-*/
-
-/*! \fn int QMacStyle::pixelMetric(PixelMetric metric, const QStyleOption *opt, const QWidget *widget) const
- \reimp
-*/
-
-/*! \fn QPalette QMacStyle::standardPalette() const
- \reimp
-*/
-
-/*! \fn int QMacStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w, QStyleHintReturn *hret) const
- \reimp
-*/
-
-/*! \fn QPixmap QMacStyle::generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, const QStyleOption *opt) const
- \reimp
-*/
-
-/*! \fn QPixmap QMacStyle::standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, const QWidget *widget) const
- \reimp
-*/
-
-/*!
- \enum QMacStyle::FocusRectPolicy
-
- This type is used to signify a widget's focus rectangle policy.
-
- \value FocusEnabled show a focus rectangle when the widget has focus.
- \value FocusDisabled never show a focus rectangle for the widget.
- \value FocusDefault show a focus rectangle when the widget has
- focus and the widget is a QSpinWidget, QDateTimeEdit, QLineEdit,
- QListBox, QListView, editable QTextEdit, or one of their
- subclasses.
-*/
-
-/*! \fn void QMacStyle::setFocusRectPolicy(QWidget *w, FocusRectPolicy policy)
- \obsolete
- Sets the focus rectangle policy of \a w. The \a policy can be one of
- \l{QMacStyle::FocusRectPolicy}.
-
- This is now simply an interface to the Qt::WA_MacShowFocusRect attribute and the
- FocusDefault value does nothing anymore. If you want to set a widget back
- to its default value, you must save the old value of the attribute before
- you change it.
-
- \sa focusRectPolicy() QWidget::setAttribute()
-*/
-
-/*! \fn QMacStyle::FocusRectPolicy QMacStyle::focusRectPolicy(const QWidget *w)
- \obsolete
- Returns the focus rectangle policy for the widget \a w.
-
- The focus rectangle policy can be one of \l{QMacStyle::FocusRectPolicy}.
-
- In 4.3 and up this function will simply test for the
- Qt::WA_MacShowFocusRect attribute and will never return
- QMacStyle::FocusDefault.
-
- \sa setFocusRectPolicy(), QWidget::testAttribute()
-*/
-
-/*! \fn void QMacStyle::setWidgetSizePolicy(const QWidget *widget, WidgetSizePolicy policy)
-
- \obsolete
-
- Call QWidget::setAttribute() with Qt::WA_MacMiniSize, Qt::WA_MacSmallSize,
- or Qt::WA_MacNormalSize instead.
-*/
-
-/*! \fn QMacStyle::WidgetSizePolicy QMacStyle::widgetSizePolicy(const QWidget *widget)
- \obsolete
-
- Call QWidget::testAttribute() with Qt::WA_MacMiniSize, Qt::WA_MacSmallSize,
- or Qt::WA_MacNormalSize instead.
-*/
-
-/*! \fn void QMacStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w) const
-
- \reimp
-*/
-
-/*! \fn void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter *p, const QWidget *w) const
-
- \reimp
-*/
-
-/*! \fn QRect QMacStyle::subElementRect(SubElement sr, const QStyleOption *opt, const QWidget *widget) const
-
- \reimp
-*/
-
-/*! \fn void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *widget) const
- \reimp
-*/
-
-/*! \fn QStyle::SubControl QMacStyle::hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, const QPoint &pt, const QWidget *widget) const
- \reimp
-*/
-
-/*! \fn QRect QMacStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, const QWidget *widget) const
- \reimp
-*/
-
-/*! \fn QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt, const QSize &csz, const QWidget *widget) const
- \reimp
-*/
-
-/*! \fn void QMacStyle::drawItemText(QPainter *p, const QRect &r, int flags, const QPalette &pal, bool enabled, const QString &text, QPalette::ColorRole textRole) const
- \reimp
-*/
-
-/*! \fn bool QMacStyle::event(QEvent *e)
- \reimp
-*/
-
-/*! \fn QIcon QMacStyle::standardIconImplementation(StandardPixmap standardIcon, const QStyleOption *opt, const QWidget *widget) const
- \internal
-*/
-
-/*! \fn int QMacStyle::layoutSpacingImplementation(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, Qt::Orientation orientation, const QStyleOption *option, const QWidget *widget) const
-
- \internal
-*/
-
diff --git a/doc/src/classes/qnamespace.qdoc b/doc/src/classes/qnamespace.qdoc
deleted file mode 100644
index 79a4560ec..000000000
--- a/doc/src/classes/qnamespace.qdoc
+++ /dev/null
@@ -1,2756 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \namespace Qt
- \inmodule QtCore
-
- \brief The Qt namespace contains miscellaneous identifiers
- used throughout the Qt library.
-
- \ingroup misc
-*/
-
-/*!
- \enum Qt::Orientation
-
- This type is used to signify an object's orientation.
-
- \value Horizontal
- \value Vertical
-
- Orientation is used with QScrollBar for example.
-*/
-
-/*!
- \enum Qt::AlignmentFlag
-
- This enum type is used to describe alignment. It contains
- horizontal and vertical flags that can be combined to produce
- the required effect.
-
- The \l{TextElideMode} enum can also be used in many situations
- to fine-tune the appearance of aligned text.
-
- The horizontal flags are:
-
- \value AlignLeft Aligns with the left edge.
- \value AlignRight Aligns with the right edge.
- \value AlignHCenter Centers horizontally in the available space.
- \value AlignJustify Justifies the text in the available space.
- \omitvalue AlignAuto
-
- The vertical flags are:
-
- \value AlignTop Aligns with the top.
- \value AlignBottom Aligns with the bottom.
- \value AlignVCenter Centers vertically in the available space.
-
- You can use only one of the horizontal flags at a time. There is
- one two-dimensional flag:
-
- \value AlignCenter Centers in both dimensions.
-
- You can use at most one horizontal and one vertical flag at a
- time. Qt::AlignCenter counts as both horizontal and vertical.
-
- Three enum values are useful in applications that can be run in
- right-to-left mode:
-
- \value AlignAbsolute If the widget's layout direction is
- Qt::RightToLeft (instead of Qt::LeftToRight, the default),
- Qt::AlignLeft refers to the \e right edge and Qt::AlignRight
- to the \e left edge. This is normally the desired behavior.
- If you want Qt::AlignLeft to always mean "left" and
- Qt::AlignRight to always mean "right", combine the flag with
- Qt::AlignAbsolute.
- \value AlignLeading Synonym for Qt::AlignLeft.
- \value AlignTrailing Synonym for Qt::AlignRight.
-
- Masks:
-
- \value AlignHorizontal_Mask
- \value AlignVertical_Mask
-
- Conflicting combinations of flags have undefined meanings.
-*/
-
-/*!
- \enum Qt::ApplicationAttribute
-
- This enum describes attributes that change the behavior of
- application-wide features. These are enabled and disabled using
- QCoreApplication::setAttribute(), and can be tested for with
- QCoreApplication::testAttribute().
-
- \value AA_ImmediateWidgetCreation Ensures that widgets are created
- as soon as they are constructed. By default, resources for
- widgets are allocated on demand to improve efficiency and
- minimize resource usage. Setting or clearing this attribute
- affects widgets constructed after the change. Setting it
- tells Qt to create toplevel windows immediately.
- Therefore, if it is important to minimize resource
- consumption, do not set this attribute.
-
- \value AA_MSWindowsUseDirect3DByDefault This value is obsolete and
- has no effect.
-
- \value AA_DontShowIconsInMenus Actions with the Icon property won't be
- shown in any menus unless specifically set by the
- QAction::iconVisibleInMenu property.
-
- Menus that are currently open or menus already created in the native
- Mac OS X menubar \e{may not} pick up a change in this attribute. Changes
- in the QAction::iconVisibleInMenu property will always be picked up.
-
- \value AA_NativeWindows Ensures that widgets have native windows.
-
- \value AA_DontCreateNativeWidgetSiblings Ensures that siblings of native
- widgets stay non-native unless specifically set by the
- Qt::WA_NativeWindow attribute.
-
- \value AA_MacPluginApplication Stops the Qt mac application from doing
- specific initializations that do not necessarily make sense when using Qt
- to author a plugin. This includes avoiding loading our nib for the main
- menu and not taking possession of the native menu bar. When setting this
- attribute to true will also set the AA_DontUseNativeMenuBar attribute
- to true.
-
- \value AA_DontUseNativeMenuBar All menubars created while this attribute is
- set to true won't be used as a native menubar (e.g, the menubar at
- the top of the main screen on Mac OS X or at the bottom in Windows CE).
-
- \value AA_MacDontSwapCtrlAndMeta On Mac OS X by default, Qt swaps the
- Control and Meta (Command) keys (i.e., whenever Control is pressed, Qt
- sends Meta and whenever Meta is pressed Control is sent. When this
- attribute is true, Qt will not do the flip. QKeySequence::StandardShortcuts
- will also flip accordingly (i.e., QKeySequence::Copy will be
- Command+C on the keyboard regardless of the value set, though what is output for
- QKeySequence::toString(QKeySequence::PortableText) will be different).
-
- \omitvalue AA_AttributeCount
-*/
-
-/*!
- \enum Qt::MouseButton
-
- This enum type describes the different mouse buttons.
-
- \value NoButton The button state does not refer to any
- button (see QMouseEvent::button()).
- \value LeftButton The left button is pressed, or an event refers
- to the left button. (The left button may be the right button on
- left-handed mice.)
- \value RightButton The right button.
- \value MidButton The middle button.
- \value XButton1 The first X button.
- \value XButton2 The second X button.
-
- \omitvalue MouseButtonMask
-
- \sa KeyboardModifier Modifier
-*/
-
-/*!
- \enum Qt::KeyboardModifier
-
- This enum describes the modifier keys.
-
- \value NoModifier No modifier key is pressed.
- \value ShiftModifier A Shift key on the keyboard is pressed.
- \value ControlModifier A Ctrl key on the keyboard is pressed.
- \value AltModifier An Alt key on the keyboard is pressed.
- \value MetaModifier A Meta key on the keyboard is pressed.
- \value KeypadModifier A keypad button is pressed.
- \value GroupSwitchModifier X11 only. A Mode_switch key on the keyboard is pressed.
-
- \omitvalue KeyboardModifierMask
-
- \note On Mac OS X, the \c ControlModifier value corresponds to
- the Command keys on the Macintosh keyboard, and the \c MetaModifier value
- corresponds to the Control keys. The \c KeypadModifier value will also be set
- when an arrow key is pressed as the arrow keys are considered part of the
- keypad.
-
- \note On Windows Keyboards, Qt::MetaModifier and Qt::Key_Meta are mapped
- to the Windows key.
-
- \sa MouseButton Modifier
-*/
-
-/*!
- \enum Qt::Modifier
-
- This enum provides shorter names for the keyboard modifier keys
- supported by Qt.
-
- \bold{Note:} On Mac OS X, the \c CTRL value corresponds to
- the Command keys on the Macintosh keyboard, and the \c META value
- corresponds to the Control keys.
-
- \value SHIFT The Shift keys provided on all standard keyboards.
- \value META The Meta keys.
- \value CTRL The Ctrl keys.
- \value ALT The normal Alt keys, but not keys like AltGr.
- \value UNICODE_ACCEL The shortcut is specified as a Unicode code
- point, not as a Qt Key.
- \omitvalue MODIFIER_MASK
-
- \sa KeyboardModifier MouseButton
-*/
-
-/*!
- \enum Qt::GlobalColor
-
- \raw HTML
- <style type="text/css" id="colorstyles">
- #white { background-color: #ffffff; color: #000000 }
- #black { background-color: #000000; color: #ffffff }
- #red { background-color: #ff0000; color: #000000 }
- #darkRed { background-color: #800000; color: #ffffff }
- #green { background-color: #00ff00; color: #000000 }
- #darkGreen { background-color: #008000; color: #ffffff }
- #blue { background-color: #0000ff; color: #ffffff }
- #darkBlue { background-color: #000080; color: #ffffff }
- #cyan { background-color: #00ffff; color: #000000 }
- #darkCyan { background-color: #008080; color: #ffffff }
- #magenta { background-color: #ff00ff; color: #000000 }
- #darkMagenta { background-color: #800080; color: #ffffff }
- #yellow { background-color: #ffff00; color: #000000 }
- #darkYellow { background-color: #808000; color: #ffffff }
- #gray { background-color: #a0a0a4; color: #000000 }
- #darkGray { background-color: #808080; color: #ffffff }
- #lightGray { background-color: #c0c0c0; color: #000000 }
- </style>
- \endraw
-
- Qt's predefined QColor objects:
-
- \value white \raw HTML
- White <tt id="white">(#ffffff)</tt>
- \endraw
- \value black \raw HTML
- Black <tt id="black">(#000000)</tt>
- \endraw
- \value red \raw HTML
- Red <tt id="red">(#ff0000)</tt>
- \endraw
- \value darkRed \raw HTML
- Dark red <tt id="darkRed">(#800000)</tt>
- \endraw
- \value green \raw HTML
- Green <tt id="green">(#00ff00)</tt>
- \endraw
- \value darkGreen \raw HTML
- Dark green <tt id="darkGreen">(#008000)</tt>
- \endraw
- \value blue \raw HTML
- Blue <tt id="blue">(#0000ff)</tt>
- \endraw
- \value darkBlue \raw HTML
- Dark blue <tt id="darkBlue">(#000080)</tt>
- \endraw
- \value cyan \raw HTML
- Cyan <tt id="cyan">(#00ffff)</tt>
- \endraw
- \value darkCyan \raw HTML
- Dark cyan <tt id="darkCyan">(#008080)</tt>
- \endraw
- \value magenta \raw HTML
- Magenta <tt id="magenta">(#ff00ff)</tt>
- \endraw
- \value darkMagenta \raw HTML
- Dark magenta <tt id="darkMagenta">(#800080)</tt>
- \endraw
- \value yellow \raw HTML
- Yellow <tt id="yellow">(#ffff00)</tt>
- \endraw
- \value darkYellow \raw HTML
- Dark yellow <tt id="darkYellow">(#808000)</tt>
- \endraw
- \value gray \raw HTML
- Gray <tt id="gray">(#a0a0a4)</tt>
- \endraw
- \value darkGray \raw HTML
- Dark gray <tt id="darkGray">(#808080)</tt>
- \endraw
- \value lightGray \raw HTML
- Light gray <tt id="lightGray">(#c0c0c0)</tt>
- \endraw
- \value transparent a transparent black value (i.e., QColor(0, 0, 0, 0))
- \value color0 0 pixel value (for bitmaps)
- \value color1 1 pixel value (for bitmaps)
-
- \sa QColor
-
-*/
-
-/*!
- \enum Qt::PenStyle
-
- This enum type defines the pen styles that can be drawn using
- QPainter. The styles are:
-
- \table
- \row
- \o \inlineimage qpen-solid.png
- \o \inlineimage qpen-dash.png
- \o \inlineimage qpen-dot.png
- \row
- \o Qt::SolidLine
- \o Qt::DashLine
- \o Qt::DotLine
- \row
- \o \inlineimage qpen-dashdot.png
- \o \inlineimage qpen-dashdotdot.png
- \o \inlineimage qpen-custom.png
- \row
- \o Qt::DashDotLine
- \o Qt::DashDotDotLine
- \o Qt::CustomDashLine
- \endtable
-
- \value NoPen no line at all. For example, QPainter::drawRect()
- fills but does not draw any boundary line.
-
- \value SolidLine A plain line.
- \value DashLine Dashes separated by a few pixels.
- \value DotLine Dots separated by a few pixels.
- \value DashDotLine Alternate dots and dashes.
- \value DashDotDotLine One dash, two dots, one dash, two dots.
- \value CustomDashLine A custom pattern defined using
- QPainterPathStroker::setDashPattern().
-
- \omitvalue MPenStyle
-
- \sa QPen
-*/
-
-/*!
- \enum Qt::PenCapStyle
-
- This enum type defines the pen cap styles supported by Qt, i.e.
- the line end caps that can be drawn using QPainter.
-
- \table
- \row
- \o \inlineimage qpen-square.png
- \o \inlineimage qpen-flat.png
- \o \inlineimage qpen-roundcap.png
- \row
- \o Qt::SquareCap
- \o Qt::FlatCap
- \o Qt::RoundCap
- \endtable
-
- \value FlatCap a square line end that does not cover the end
- point of the line.
- \value SquareCap a square line end that covers the end point and
- extends beyond it by half the line width.
- \value RoundCap a rounded line end.
- \omitvalue MPenCapStyle
-
- \sa QPen
-*/
-
-/*!
- \enum Qt::PenJoinStyle
-
- This enum type defines the pen join styles supported by Qt, i.e.
- which joins between two connected lines can be drawn using
- QPainter.
-
- \table
- \row
- \o \inlineimage qpen-bevel.png
- \o \inlineimage qpen-miter.png
- \o \inlineimage qpen-roundjoin.png
- \row
- \o Qt::BevelJoin
- \o Qt::MiterJoin
- \o Qt::RoundJoin
- \endtable
-
- \value MiterJoin The outer edges of the lines are extended to
- meet at an angle, and this area is filled.
- \value BevelJoin The triangular notch between the two lines is filled.
- \value RoundJoin A circular arc between the two lines is filled.
- \value SvgMiterJoin A miter join corresponding to the definition of
- a miter join in the \l{SVG 1.2 Tiny} specification.
- \omitvalue MPenJoinStyle
-
- \sa QPen
-*/
-
-/*!
- \enum Qt::BrushStyle
-
- This enum type defines the brush styles supported by Qt, i.e. the
- fill pattern of shapes drawn using QPainter.
-
- \image brush-styles.png Brush Styles
-
- \value NoBrush No brush pattern.
- \value SolidPattern Uniform color.
- \value Dense1Pattern Extremely dense brush pattern.
- \value Dense2Pattern Very dense brush pattern.
- \value Dense3Pattern Somewhat dense brush pattern.
- \value Dense4Pattern Half dense brush pattern.
- \value Dense5Pattern Somewhat sparse brush pattern.
- \value Dense6Pattern Very sparse brush pattern.
- \value Dense7Pattern Extremely sparse brush pattern.
- \value HorPattern Horizontal lines.
- \value VerPattern Vertical lines.
- \value CrossPattern Crossing horizontal and vertical lines.
- \value BDiagPattern Backward diagonal lines.
- \value FDiagPattern Forward diagonal lines.
- \value DiagCrossPattern Crossing diagonal lines.
- \value LinearGradientPattern Linear gradient (set using a dedicated QBrush constructor).
- \value ConicalGradientPattern Conical gradient (set using a dedicated QBrush constructor).
- \value RadialGradientPattern Radial gradient (set using a dedicated QBrush constructor).
- \value TexturePattern Custom pattern (see QBrush::setTexture()).
-
- \omitvalue CustomPattern
-
- \sa QBrush
-*/
-
-/*!
- \enum Qt::TextFlag
-
- This enum type is used to define some modifier flags. Some of
- these flags only make sense in the context of printing:
-
- \value TextSingleLine Treats all whitespace as spaces and prints just
- one line.
- \value TextDontClip If it's impossible to stay within the given bounds,
- it prints outside.
- \value TextExpandTabs Makes the U+0009 (ASCII tab) character move to
- the next tab stop.
- \value TextShowMnemonic Displays the string "\&P" as \underline{P}
- (see QButton for an example). For an ampersand, use "\&\&".
- \value TextWordWrap Breaks lines at appropriate points, e.g. at word
- boundaries.
- \value TextWrapAnywhere Breaks lines anywhere, even within words.
- \value TextHideMnemonic Same as Qt::TextShowMnemonic but doesn't draw the underlines.
- \value TextDontPrint Treat this text as "hidden" and don't print
- it.
- \value IncludeTrailingSpaces When this option is set, QTextLine::naturalTextWidth() and naturalTextRect() will
- return a value that includes the width of trailing spaces in the text; otherwise
- this width is excluded.
- \value TextIncludeTrailingSpaces Same as IncludeTrailingSpaces
- \value TextJustificationForced Ensures that text lines are justified.
-
- \omitvalue BreakAnywhere
- \omitvalue DontClip
- \omitvalue DontPrint
- \omitvalue ExpandTabs
- \omitvalue IncludeTrailingSpaces
- \omitvalue NoAccel
- \omitvalue ShowPrefix
- \omitvalue SingleLine
- \omitvalue WordBreak
- \omitvalue TextForceLeftToRight
- \omitvalue TextForceRightToLeft
- \omitvalue TextLongestVariant Always use the longest variant when computing the size of a multi-variant string
-
- You can use as many modifier flags as you want, except that
- Qt::TextSingleLine and Qt::TextWordWrap cannot be combined.
-
- Flags that are inappropriate for a given use are generally
- ignored.
-*/
-
-/*!
- \enum Qt::BGMode
-
- Background mode:
-
- \value TransparentMode
- \value OpaqueMode
-*/
-
-/*!
- \enum Qt::ConnectionType
-
- This enum describes the types of connection that can be used between signals and
- slots. In particular, it determines whether a particular signal is delivered to a
- slot immediately or queued for delivery at a later time.
-
- \value DirectConnection When emitted, the signal is immediately delivered to the slot.
- \value QueuedConnection When emitted, the signal is queued until the event loop is
- able to deliver it to the slot.
- \value BlockingQueuedConnection
- Same as QueuedConnection, except that the current thread blocks
- until the slot has been delivered. This connection type should
- only be used for receivers in a different thread. Note that misuse
- of this type can lead to deadlocks in your application.
- \value AutoConnection If the signal is emitted from the thread
- in which the receiving object lives, the
- slot is invoked directly, as with
- Qt::DirectConnection; otherwise the
- signal is queued, as with
- Qt::QueuedConnection.
- \value UniqueConnection Same as AutoConnection, but there will be a check that the signal is
- not already connected to the same slot before connecting, otherwise,
- the connection will fail.
- This value was introduced in Qt 4.6.
- \value AutoCompatConnection
- The default connection type for signals and slots when Qt 3 support
- is enabled. Equivalent to AutoConnection for connections but will cause warnings
- to be output under certain circumstances. See
- \l{Porting to Qt 4#Compatibility Signals and Slots}{Compatibility Signals and Slots}
- for further information.
-
- With queued connections, the parameters must be of types that are known to
- Qt's meta-object system, because Qt needs to copy the arguments to store them
- in an event behind the scenes. If you try to use a queued connection and
- get the error message
-
- \snippet doc/src/snippets/code/doc_src_qnamespace.qdoc 0
-
- call qRegisterMetaType() to register the data type before you
- establish the connection.
-
- \sa {Thread Support in Qt}, QObject::connect(), qRegisterMetaType()
-*/
-
-/*!
- \enum Qt::DateFormat
-
- \value TextDate The default Qt format, which includes the day and month name,
- the day number in the month, and the year in full. The day and month names will
- be short, localized names. This is basically equivalent to using the date format
- string, "ddd MMM d yyyy". See QDate::toString() for more information.
-
- \value ISODate ISO 8601 extended format: either \c{YYYY-MM-DD} for dates or
- \c{YYYY-MM-DDTHH:MM:SS} for combined dates and times.
-
- \value SystemLocaleShortDate The \l{QLocale::ShortFormat}{short format} used
- by the \l{QLocale::system()}{operating system}.
-
- \value SystemLocaleLongDate The \l{QLocale::LongFormat}{long format} used
- by the \l{QLocale::system()}{operating system}.
-
- \value DefaultLocaleShortDate The \l{QLocale::ShortFormat}{short format} specified
- by the \l{QLocale::setDefault()}{application's locale}.
-
- \value DefaultLocaleLongDate The \l{QLocale::LongFormat}{long format} used
- by the \l{QLocale::setDefault()}{application's locale}.
-
- \value SystemLocaleDate \e{This enum value is deprecated.} Use Qt::SystemLocaleShortDate
- instead (or Qt::SystemLocaleLongDate if you want long dates).
-
- \value LocaleDate \e{This enum value is deprecated.} Use Qt::DefaultLocaleShortDate
- instead (or Qt::DefaultLocaleLongDate if you want long dates).
-
- \value LocalDate \e{This enum value is deprecated.} Use Qt::SystemLocaleShortDate
- instead (or Qt::SystemLocaleLongDate if you want long dates).
-
- \note For \c ISODate formats, each \c Y, \c M and \c D represents a single digit
- of the year, month and day used to specify the date. Each \c H, \c M and \c S
- represents a single digit of the hour, minute and second used to specify the time.
- The presence of a literal \c T character is used to separate the date and time when
- both are specified.
-*/
-
-
-/*!
- \enum Qt::TimeSpec
-
- \value LocalTime Locale dependent time (Timezones and Daylight Savings Time).
- \value UTC Coordinated Universal Time, replaces Greenwich Mean Time.
- \value OffsetFromUTC An offset in seconds from Coordinated Universal Time.
-*/
-
-/*!
- \enum Qt::DayOfWeek
-
- \value Monday
- \value Tuesday
- \value Wednesday
- \value Thursday
- \value Friday
- \value Saturday
- \value Sunday
-*/
-
-/*!
- \enum Qt::CaseSensitivity
-
- \value CaseInsensitive
- \value CaseSensitive
-*/
-
-/*!
- \enum Qt::ToolBarArea
-
- \value LeftToolBarArea
- \value RightToolBarArea
- \value TopToolBarArea
- \value BottomToolBarArea
- \value AllToolBarAreas
- \value NoToolBarArea
-
- \omitvalue ToolBarArea_Mask
-*/
-
-/*!
- \enum Qt::DockWidgetArea
-
- \value LeftDockWidgetArea
- \value RightDockWidgetArea
- \value TopDockWidgetArea
- \value BottomDockWidgetArea
- \value AllDockWidgetAreas
- \value NoDockWidgetArea
-
- \omitvalue DockWidgetArea_Mask
-*/
-
-/*!
- \enum Qt::BackgroundMode
-
- \compat
-
- \value FixedColor
- \value FixedPixmap
- \value NoBackground
- \value PaletteForeground
- \value PaletteButton
- \value PaletteLight
- \value PaletteMidlight
- \value PaletteDark
- \value PaletteMid
- \value PaletteText
- \value PaletteBrightText
- \value PaletteBase
- \value PaletteBackground
- \value PaletteShadow
- \value PaletteHighlight
- \value PaletteHighlightedText
- \value PaletteButtonText
- \value PaletteLink
- \value PaletteLinkVisited
- \value X11ParentRelative
-*/
-
-/*!
- \enum Qt::ImageConversionFlag
-
- The options marked "(default)" are set if no other values from
- the list are included (since the defaults are zero):
-
- Color/Mono preference (ignored for QBitmap):
-
- \value AutoColor (default) - If the image has \link
- QImage::depth() depth\endlink 1 and contains only
- black and white pixels, the pixmap becomes monochrome.
- \value ColorOnly The pixmap is dithered/converted to the
- \link QPixmap::defaultDepth() native display depth\endlink.
- \value MonoOnly The pixmap becomes monochrome. If necessary,
- it is dithered using the chosen dithering algorithm.
-
- Dithering mode preference for RGB channels:
-
- \value DiffuseDither (default) - A high-quality dither.
- \value OrderedDither A faster, more ordered dither.
- \value ThresholdDither No dithering; closest color is used.
-
- Dithering mode preference for alpha channel:
-
- \value ThresholdAlphaDither (default) - No dithering.
- \value OrderedAlphaDither A faster, more ordered dither.
- \value DiffuseAlphaDither A high-quality dither.
- \omitvalue NoAlpha
-
- Color matching versus dithering preference:
-
- \value PreferDither (default when converting to a pixmap) - Always dither
- 32-bit images when the image is converted to 8 bits.
- \value AvoidDither (default when converting for the purpose of saving to
- file) - Dither 32-bit images only if the image has more than 256
- colors and it is being converted to 8 bits.
- \omitvalue AutoDither
-
- \omitvalue ColorMode_Mask
- \omitvalue Dither_Mask
- \omitvalue AlphaDither_Mask
- \omitvalue DitherMode_Mask
- \omitvalue NoOpaqueDetection
-*/
-
-/*! \enum Qt::GUIStyle
-
- \compat
-
- \value WindowsStyle
- \value MotifStyle
- \value MacStyle
- \value Win3Style
- \value PMStyle
-*/
-
-/*!
- \enum Qt::UIEffect
-
- This enum describes the available UI effects.
-
- By default, Qt will try to use the platform specific desktop
- settings for each effect. Use the
- QApplication::setDesktopSettingsAware() function (passing \c false
- as argument) to prevent this, and the
- QApplication::setEffectEnabled() to enable or disable a particular
- effect.
-
- Note that all effects are disabled on screens running at less than
- 16-bit color depth.
-
- \omitvalue UI_General
-
- \value UI_AnimateMenu Show animated menus.
- \value UI_FadeMenu Show faded menus.
- \value UI_AnimateCombo Show animated comboboxes.
- \value UI_AnimateTooltip Show tooltip animations.
- \value UI_FadeTooltip Show tooltip fading effects.
- \value UI_AnimateToolBox Reserved
-
- \sa QApplication::setEffectEnabled(), QApplication::setDesktopSettingsAware()
-*/
-
-/*! \enum Qt::AspectRatioMode
-
- This enum type defines what happens to the aspect ratio when
- scaling an rectangle.
-
- \image qimage-scaling.png
-
- \value IgnoreAspectRatio The size is scaled freely. The aspect
- ratio is not preserved.
- \value KeepAspectRatio The size is scaled to a rectangle as
- large as possible inside a given
- rectangle, preserving the aspect ratio.
- \value KeepAspectRatioByExpanding The size is scaled to a
- rectangle as small as possible
- outside a given rectangle,
- preserving the aspect ratio.
-
- \omitvalue ScaleFree
- \omitvalue ScaleMin
- \omitvalue ScaleMax
-
- \sa QSize::scale(), QImage::scaled()
-*/
-
-/*! \typedef Qt::ScaleMode
- \compat
-
- Use Qt::AspectRatioMode instead.
-
- The enum values have been renamed as follows:
-
- \table
- \row \i Old enum value \i New enum value
- \row \i Qt::ScaleFree \i Qt::IgnoreAspectRatio
- \row \i Qt::ScaleMin \i Qt::KeepAspectRatio
- \row \i Qt::ScaleMax \i Qt::KeepAspectRatioByExpanding
- \endtable
-*/
-
-/*! \enum Qt::TransformationMode
-
- This enum type defines whether image transformations (e.g.,
- scaling) should be smooth or not.
-
- \value FastTransformation The transformation is performed
- quickly, with no smoothing.
- \value SmoothTransformation The resulting image is transformed
- using bilinear filtering.
-
- \sa QImage::scaled()
-*/
-
-/*! \enum Qt::Axis
-
- This enum type defines three values to represent the three
- axes in the cartesian coordinate system.
-
- \value XAxis The X axis.
- \value YAxis The Y axis.
- \value ZAxis The Z axis.
-
- \sa QTransform::rotate(), QTransform::rotateRadians()
- */
-
-/*!
- \enum Qt::WidgetAttribute
-
- \keyword widget attributes
-
- This enum type is used to specify various widget attributes.
- Attributes are set and cleared with QWidget::setAttribute(), and
- queried with QWidget::testAttribute(), although some have special
- convenience functions which are mentioned below.
-
- \value WA_AcceptDrops Allows data from drag and drop operations
- to be dropped onto the widget (see QWidget::setAcceptDrops()).
-
- \value WA_AlwaysShowToolTips Enables tooltips for inactive windows.
-
- \value WA_ContentsPropagated This flag is superfluous and
- obsolete; it no longer has any effect. Since Qt 4.1, all widgets
- that do not set WA_PaintOnScreen propagate their contents.
-
- \value WA_CustomWhatsThis Indicates that the widget wants to
- continue operating normally in "What's This?" mode. This is set by the
- widget's author.
-
- \value WA_DeleteOnClose Makes Qt delete this widget when the
- widget has accepted the close event (see QWidget::closeEvent()).
-
- \value WA_Disabled Indicates that the widget is disabled, i.e.
- it does not receive any mouse or keyboard events. There is also a
- getter functions QWidget::isEnabled(). This is set/cleared by the
- Qt kernel.
-
- \omitvalue WA_DropSiteRegistered
- \omitvalue WA_ForceAcceptDrops
-
- \value WA_ForceDisabled Indicates that the widget is
- explicitly disabled, i.e. it will remain disabled even when all
- its ancestors are set to the enabled state. This implies
- WA_Disabled. This is set/cleared by QWidget::setEnabled() and
- QWidget::setDisabled().
-
- \value WA_ForceUpdatesDisabled Indicates that updates are
- explicitly disabled for the widget; i.e. it will remain disabled
- even when all its ancestors are set to the updates-enabled state.
- This implies WA_UpdatesDisabled. This is set/cleared by
- QWidget::setUpdatesEnabled().
-
- \value WA_GroupLeader
- \e{This attribute has been deprecated.} Use QWidget::windowModality
- instead.
-
- \value WA_Hover Forces Qt to generate paint events when the mouse
- enters or leaves the widget. This feature is typically used when
- implementing custom styles; see the \l{widgets/styles}{Styles}
- example for details.
-
- \value WA_InputMethodEnabled Enables input methods for Asian languages.
- Must be set when creating custom text editing widgets.
- On Windows CE this flag can be used in addition to
- QApplication::autoSipEnabled to automatically display the SIP when
- entering a widget.
-
- \value WA_KeyboardFocusChange Set on a toplevel window when
- the users changes focus with the keyboard (tab, backtab, or shortcut).
-
- \value WA_KeyCompression Enables key event compression if set,
- and disables it if not set. By default key compression is off, so
- widgets receive one key press event for each key press (or more,
- since autorepeat is usually on). If you turn it on and your
- program doesn't keep up with key input, Qt may try to compress key
- events so that more than one character can be processed in each
- event.
- For example, a word processor widget might receive 2, 3 or more
- characters in each QKeyEvent::text(), if the layout recalculation
- takes too long for the CPU.
- If a widget supports multiple character unicode input, it is
- always safe to turn the compression on.
- Qt performs key event compression only for printable characters.
- Qt::Modifier keys, cursor movement keys, function keys and
- miscellaneous action keys (e.g. Escape, Enter, Backspace,
- PrintScreen) will stop key event compression, even if there are
- more compressible key events available.
- Platforms other than Mac and X11 do not support this compression,
- in which case turning it on will have no effect.
- This is set/cleared by the widget's author.
-
- \value WA_LayoutOnEntireRect Indicates that the widget
- wants QLayout to operate on the entire QWidget::rect(), not only
- on QWidget::contentsRect(). This is set by the widget's author.
-
- \value WA_LayoutUsesWidgetRect Ignore the layout item rect from the style
- when laying out this widget with QLayout. This makes a difference in
- QMacStyle and QPlastiqueStyle for some widgets.
-
- \value WA_MacNoClickThrough When a widget that has this attribute set
- is clicked, and its window is inactive, the click will make the window
- active but won't be seen by the widget. Typical use of this attribute
- is on widgets with "destructive" actions, such as a "Delete" button.
- WA_MacNoClickThrough also applies to all child widgets of the widget
- that has it set.
-
- \value WA_MacOpaqueSizeGrip Indicates that the native Carbon size grip
- should be opaque instead of transparent (the default). This attribute
- is only applicable to Mac OS X and is set by the widget's author.
-
- \value WA_MacShowFocusRect Indicates that this widget should get a
- QFocusFrame around it. Some widgets draw their own focus halo
- regardless of this attribute. Not that the QWidget::focusPolicy
- also plays the main role in whether something is given focus or
- not, this only controls whether or not this gets the focus
- frame. This attribute is only applicable to Mac OS X.
-
- \value WA_MacNormalSize Indicates the widget should have the
- normal size for widgets in Mac OS X. This attribute is only
- applicable to Mac OS X.
-
- \value WA_MacSmallSize Indicates the widget should have the small
- size for widgets in Mac OS X. This attribute is only applicable to
- Mac OS X.
-
- \value WA_MacMiniSize Indicates the widget should have the mini
- size for widgets in Mac OS X. This attribute is only applicable to
- Mac OS X.
-
- \value WA_MacVariableSize Indicates the widget can choose between
- alternative sizes for widgets to avoid clipping.
- This attribute is only applicable to Mac OS X.
-
- \value WA_MacBrushedMetal Indicates the widget should be drawn in
- the brushed metal style as supported by the windowing system. This
- attribute is only applicable to Mac OS X.
-
- \omitvalue WA_MacMetalStyle
-
- \value WA_Mapped Indicates that the widget is mapped on screen.
- This is set/cleared by the Qt kernel.
-
- \value WA_MouseNoMask Makes the widget receive mouse events for
- the entire widget regardless of the currently set mask,
- overriding QWidget::setMask(). This is not applicable for
- top-level windows.
-
- \value WA_MouseTracking Indicates that the widget has mouse
- tracking enabled. See QWidget::mouseTracking.
-
- \value WA_Moved Indicates that the widget has an explicit
- position. This is set/cleared by QWidget::move() and
- by QWidget::setGeometry().
-
- \value WA_MSWindowsUseDirect3D This value is obsolete and has no
- effect.
-
- \value WA_NoBackground This value is obsolete. Use
- WA_OpaquePaintEvent instead.
-
- \value WA_NoChildEventsForParent Indicates that the widget does
- not want ChildAdded or ChildRemoved events sent to its
- parent. This is rarely necessary but can help to avoid automatic
- insertion widgets like splitters and layouts. This is set by a
- widget's author.
-
- \value WA_NoChildEventsFromChildren Indicates that the widget does
- not want to receive ChildAdded or ChildRemoved events sent from its
- children. This is set by a widget's author.
-
- \value WA_NoMouseReplay Used for pop-up widgets. Indicates that the most
- recent mouse press event should not be replayed when the pop-up widget
- closes. The flag is set by the widget's author and cleared by the Qt kernel
- every time the widget receives a new mouse event.
-
- \value WA_NoMousePropagation Prohibits mouse events from being propagated
- to the widget's parent. This attribute is disabled by default.
-
- \value WA_TransparentForMouseEvents When enabled, this attribute disables
- the delivery of mouse events to the widget and its children. Mouse events
- are delivered to other widgets as if the widget and its children were not
- present in the widget hierarchy; mouse clicks and other events effectively
- "pass through" them. This attribute is disabled by default.
-
- \value WA_NoSystemBackground Indicates that the widget has no background,
- i.e. when the widget receives paint events, the background is not
- automatically repainted. \note Unlike WA_OpaquePaintEvent, newly exposed
- areas are \bold never filled with the background (e.g., after showing a
- window for the first time the user can see "through" it until the
- application processes the paint events). This flag is set or cleared by the
- widget's author.
-
- \value WA_OpaquePaintEvent Indicates that the widget paints all its pixels
- when it receives a paint event. Thus, it is not required for operations
- like updating, resizing, scrolling and focus changes to erase the widget
- before generating paint events. The use of WA_OpaquePaintEvent provides a
- small optimization by helping to reduce flicker on systems that do not
- support double buffering and avoiding computational cycles necessary to
- erase the background prior to painting. \note Unlike
- WA_NoSystemBackground, WA_OpaquePaintEvent makes an effort to avoid
- transparent window backgrounds. This flag is set or cleared by the widget's
- author.
-
- \value WA_OutsideWSRange Indicates that the widget is outside
- the valid range of the window system's coordinate system. A widget
- outside the valid range cannot be mapped on screen. This is
- set/cleared by the Qt kernel.
-
- \value WA_PaintOnScreen Indicates that the widget wants to draw directly
- onto the screen. Widgets with this attribute set do not participate in
- composition management, i.e. they cannot be semi-transparent or shine
- through semi-transparent overlapping widgets. \note This flag is only
- supported on X11 and it disables double buffering. On Qt for Embedded
- Linux, the flag only works when set on a top-level widget and it relies on
- support from the active screen driver. This flag is set or cleared by the
- widget's author. To render outside of Qt's paint system, e.g., if you
- require native painting primitives, you need to reimplement
- QWidget::paintEngine() to return 0 and set this flag.
-
- \value WA_PaintOutsidePaintEvent Makes it possible to use QPainter to
- paint on the widget outside \l{QWidget::paintEvent()}{paintEvent()}. This
- flag is not supported on Windows, Mac OS X or Embedded Linux. We recommend
- that you use it only when porting Qt 3 code to Qt 4.
-
- \value WA_PaintUnclipped Makes all painters operating on this widget
- unclipped. Children of this widget or other widgets in front of it do not
- clip the area the painter can paint on. This flag is only supported for
- widgets with the WA_PaintOnScreen flag set. The preferred way to do this in
- a cross platform way is to create a transparent widget that lies in front
- of the other widgets.
-
- \value WA_PendingMoveEvent Indicates that a move event is pending, e.g.,
- when a hidden widget was moved. This flag is set or cleared by the Qt
- kernel.
-
- \value WA_PendingResizeEvent Indicates that a resize event is pending,
- e.g., when a hidden widget was resized. This flag is set or cleared by the
- Qt kernel.
-
- \value WA_QuitOnClose Makes Qt quit the application when the last widget
- with the attribute set has accepted closeEvent(). This behavior can be
- modified with the QApplication::quitOnLastWindowClosed property. By default
- this attribute is set for all widgets of type Qt::Window.
-
- \value WA_Resized Indicates that the widget has an explicit size. This flag
- is set or cleared by QWidget::resize() and QWidget::setGeometry().
-
- \value WA_RightToLeft Indicates that the layout direction for the widget
- is right to left.
-
- \value WA_SetCursor Indicates that the widget has a cursor of its own. This
- flag is set or cleared by QWidget::setCursor() and QWidget::unsetCursor().
-
- \value WA_SetFont Indicates that the widget has a font of its own. This
- flag is set or cleared by QWidget::setFont().
-
- \value WA_SetPalette Indicates that the widget has a palette of its own.
- This flag is set or cleared by QWidget::setPalette().
-
- \value WA_SetStyle Indicates that the widget has a style of its own. This
- flag is set or cleared by QWidget::setStyle().
-
- \value WA_ShowModal \e{This attribute has been deprecated.} Use
- QWidget::windowModality instead.
-
- \value WA_StaticContents Indicates that the widget contents are north-west
- aligned and static. On resize, such a widget will receive paint events only
- for parts of itself that are newly visible. This flag is set or cleared by
- the widget's author.
-
- \value WA_StyleSheet Indicates that the widget is styled using a
- \l{Qt Style Sheets}{style sheet}.
-
- \value WA_TranslucentBackground Indicates that the widget should have a
- translucent background, i.e., any non-opaque regions of the widgets will be
- translucent because the widget will have an alpha channel. Setting this
- flag causes WA_NoSystemBackground to be set. On Windows the
- widget also needs the Qt::FramelessWindowHint window flag to be set.
- This flag is set or cleared by the widget's author.
-
- \value WA_UnderMouse Indicates that the widget is under the mouse cursor.
- The value is not updated correctly during drag and drop operations. There
- is also a getter function, QWidget::underMouse(). This flag is set or
- cleared by the Qt kernel.
-
- \value WA_UpdatesDisabled Indicates that updates are blocked (including the
- system background). This flag is set or cleared by the Qt kernel.
- \warning This flag must \e never be set or cleared by the widget's author.
-
- \value WA_WindowModified Indicates that the window is marked as modified.
- On some platforms this flag will do nothing, on others (including Mac OS X
- and Windows) the window will take a modified appearance. This flag is set
- or cleared by QWidget::setWindowModified().
-
- \value WA_WindowPropagation Makes a toplevel window inherit font and
- palette from its parent.
-
- \value WA_MacAlwaysShowToolWindow On Mac OS X, show the tool window even
- when the application is not active. By default, all tool windows are
- hidden when the application is inactive.
-
- \value WA_SetLocale Indicates the locale should be taken into consideration
- in the widget.
-
- \value WA_StyledBackground Indicates the widget should be drawn using a
- styled background.
-
- \value WA_ShowWithoutActivating Show the widget without making it active.
-
- \value WA_NativeWindow Indicates that a native window is created for the
- widget. Enabling this flag will also force a native window for the widget's
- ancestors unless Qt::WA_DontCreateNativeAncestors is set.
-
- \value WA_DontCreateNativeAncestors Indicates that the widget's ancestors
- are kept non-native even though the widget itself is native.
-
- \value WA_X11NetWmWindowTypeDesktop Adds _NET_WM_WINDOW_TYPE_DESKTOP to the
- window's _NET_WM_WINDOW_TYPE X11 window property. See
- http://standards.freedesktop.org/wm-spec/ for more details. This attribute
- has no effect on non-X11 platforms.
-
- \value WA_X11NetWmWindowTypeDock Adds _NET_WM_WINDOW_TYPE_DOCK to the
- window's _NET_WM_WINDOW_TYPE X11 window property. See
- http://standards.freedesktop.org/wm-spec/ for more details. This attribute
- has no effect on non-X11 platforms.
-
- \value WA_X11NetWmWindowTypeToolBar Adds _NET_WM_WINDOW_TYPE_TOOLBAR to the
- window's _NET_WM_WINDOW_TYPE X11 window property. See
- http://standards.freedesktop.org/wm-spec/ for more details. This attribute
- has no effect on non-X11 platforms. \note Qt automaticaly sets this
- attribute for QToolBar.
-
- \value WA_X11NetWmWindowTypeMenu Adds _NET_WM_WINDOW_TYPE_MENU to the
- window's _NET_WM_WINDOW_TYPE X11 window property. See
- http://standards.freedesktop.org/wm-spec/ for more details. This attribute
- has no effect on non-X11 platforms. \note Qt automatically sets this
- attribute for QMenu when torn-off.
-
- \value WA_X11NetWmWindowTypeUtility Adds _NET_WM_WINDOW_TYPE_UTILITY to the
- window's _NET_WM_WINDOW_TYPE X11 window property. See
- http://standards.freedesktop.org/wm-spec/ for more details. This attribute
- has no effect on non-X11 platforms. \note Qt automatically sets this
- attribute for the Qt::Tool window type.
-
- \value WA_X11NetWmWindowTypeSplash Adds _NET_WM_WINDOW_TYPE_SPLASH to the
- window's _NET_WM_WINDOW_TYPE X11 window property. See
- http://standards.freedesktop.org/wm-spec/ for more details. This attribute
- has no effect on non-X11 platforms. \note Qt automatically sets this
- attribute for the Qt::SplashScreen window type.
-
- \value WA_X11NetWmWindowTypeDialog Adds _NET_WM_WINDOW_TYPE_DIALOG
- to the window's _NET_WM_WINDOW_TYPE X11 window property. See
- http://standards.freedesktop.org/wm-spec/ for more details. This
- attribute has no effect on non-X11 platforms. \note Qt automatically sets
- this attribute for the Qt::Dialog and Qt::Sheet window types.
-
- \value WA_X11NetWmWindowTypeDropDownMenu Adds
- _NET_WM_WINDOW_TYPE_DROPDOWN_MENU to the window's
- _NET_WM_WINDOW_TYPE X11 window property. See
- http://standards.freedesktop.org/wm-spec/ for more details. This
- attribute has no effect on non-X11 platforms. \note Qt
- automatically sets this attribute for QMenus added to a QMenuBar.
-
- \value WA_X11NetWmWindowTypePopupMenu Adds _NET_WM_WINDOW_TYPE_POPUP_MENU
- to the window's _NET_WM_WINDOW_TYPE X11 window property. See
- http://standards.freedesktop.org/wm-spec/ for more details. This attribute
- has no effect on non-X11 platforms. \note Qt automatically sets this
- attribute for QMenu.
-
- \value WA_X11NetWmWindowTypeToolTip Adds _NET_WM_WINDOW_TYPE_TOOLTIP to the
- window's _NET_WM_WINDOW_TYPE X11 window property. See
- http://standards.freedesktop.org/wm-spec/ for more details. This attribute
- has no effect on non-X11 platforms. \note Qt automatically sets this
- attribute for the Qt::ToolTip window type.
-
- \value WA_X11NetWmWindowTypeNotification Adds
- _NET_WM_WINDOW_TYPE_NOTIFICATION to the window's _NET_WM_WINDOW_TYPE X11
- window property. See http://standards.freedesktop.org/wm-spec/ for more
- details. This attribute has no effect on non-X11 platforms.
-
- \value WA_X11NetWmWindowTypeCombo Adds _NET_WM_WINDOW_TYPE_COMBO
- to the window's _NET_WM_WINDOW_TYPE X11 window property. See
- http://standards.freedesktop.org/wm-spec/ for more details. This attribute
- has no effect on non-X11 platforms. \note Qt automatically sets this
- attribute for the QComboBox pop-up.
-
- \value WA_X11NetWmWindowTypeDND Adds _NET_WM_WINDOW_TYPE_DND to
- the window's _NET_WM_WINDOW_TYPE X11 window property. See
- http://standards.freedesktop.org/wm-spec/ for more details. This attribute
- has no effect on non-X11 platforms. \note Qt automatically sets this
- attribute on the feedback widget used during a drag.
-
- \value WA_MacFrameworkScaled Enables resolution independence aware mode
- on Mac when using Carbon. This attribute has no effect on Cocoa.
- The attribute is off by default and can be enabled on a per-window basis.
-
- \value WA_AcceptTouchEvents Allows touch events (see QTouchEvent)
- to be sent to the widget. Must be set on all widgets that can
- handle touch events. Without this attribute set, events from a
- touch device will be sent as mouse events.
-
- \value WA_TouchPadAcceptSingleTouchEvents Allows touchpad single
- touch events to be sent to the widget.
-
- \omitvalue WA_SetLayoutDirection
- \omitvalue WA_InputMethodTransparent
- \omitvalue WA_WState_CompressKeys
- \omitvalue WA_WState_ConfigPending
- \omitvalue WA_WState_Created
- \omitvalue WA_WState_DND
- \omitvalue WA_WState_ExplicitShowHide
- \omitvalue WA_WState_Hidden
- \omitvalue WA_WState_InPaintEvent
- \omitvalue WA_WState_OwnSizePolicy
- \omitvalue WA_WState_Polished
- \omitvalue WA_WState_Reparented
- \omitvalue WA_WState_Visible
- \omitvalue WA_SetWindowIcon
- \omitvalue WA_PendingUpdate
- \omitvalue WA_LaidOut
- \omitvalue WA_GrabbedShortcut
- \omitvalue WA_DontShowOnScreen
- \omitvalue WA_InvalidSize
- \omitvalue WA_ForceUpdatesDisabled
- \omitvalue WA_NoX11EventCompression
- \omitvalue WA_TintedBackground
- \omitvalue WA_X11OpenGLOverlay
- \omitvalue WA_CanHostQMdiSubWindowTitleBar
- \omitvalue WA_AttributeCount
- \omitvalue WA_StyleSheet
- \omitvalue WA_X11BypassTransientForHint
- \omitvalue WA_SetWindowModality
- \omitvalue WA_WState_WindowOpacitySet
- \omitvalue WA_WState_AcceptedTouchBeginEvent
-*/
-
-/*! \typedef Qt::HANDLE
-
- Platform-specific handle type for system objects. This is
- equivalent to \c{void *} on Mac OS X and embedded Linux,
- and to \c{unsigned long} on X11. On Windows it is the
- DWORD returned by the Win32 function getCurrentThreadId().
-
- \warning Using this type is not portable.
-*/
-
-/*!
- \enum Qt::Key
-
- The key names used by Qt.
-
- \value Key_Escape
- \value Key_Tab
- \value Key_Backtab
- \omitvalue Key_BackTab
- \value Key_Backspace
- \omitvalue Key_BackSpace
- \value Key_Return
- \value Key_Enter Typically located on the keypad.
- \value Key_Insert
- \value Key_Delete
- \value Key_Pause
- \value Key_Print
- \value Key_SysReq
- \value Key_Clear
- \value Key_Home
- \value Key_End
- \value Key_Left
- \value Key_Up
- \value Key_Right
- \value Key_Down
- \value Key_PageUp
- \omitvalue Key_Prior
- \value Key_PageDown
- \omitvalue Key_Next
- \value Key_Shift
- \value Key_Control On Mac OS X, this corresponds to the Command keys.
- \value Key_Meta On Mac OS X, this corresponds to the Control keys.
- On Windows keyboards, this key is mapped to the
- Windows key.
- \value Key_Alt
- \value Key_AltGr On Windows, when the KeyDown event for this key is
- sent, the Ctrl+Alt modifiers are also set.
- \value Key_CapsLock
- \value Key_NumLock
- \value Key_ScrollLock
- \value Key_F1
- \value Key_F2
- \value Key_F3
- \value Key_F4
- \value Key_F5
- \value Key_F6
- \value Key_F7
- \value Key_F8
- \value Key_F9
- \value Key_F10
- \value Key_F11
- \value Key_F12
- \value Key_F13
- \value Key_F14
- \value Key_F15
- \value Key_F16
- \value Key_F17
- \value Key_F18
- \value Key_F19
- \value Key_F20
- \value Key_F21
- \value Key_F22
- \value Key_F23
- \value Key_F24
- \value Key_F25
- \value Key_F26
- \value Key_F27
- \value Key_F28
- \value Key_F29
- \value Key_F30
- \value Key_F31
- \value Key_F32
- \value Key_F33
- \value Key_F34
- \value Key_F35
- \value Key_Super_L
- \value Key_Super_R
- \value Key_Menu
- \value Key_Hyper_L
- \value Key_Hyper_R
- \value Key_Help
- \value Key_Direction_L
- \value Key_Direction_R
- \value Key_Space
- \value Key_Any
- \value Key_Exclam
- \value Key_QuoteDbl
- \value Key_NumberSign
- \value Key_Dollar
- \value Key_Percent
- \value Key_Ampersand
- \value Key_Apostrophe
- \value Key_ParenLeft
- \value Key_ParenRight
- \value Key_Asterisk
- \value Key_Plus
- \value Key_Comma
- \value Key_Minus
- \value Key_Period
- \value Key_Slash
- \value Key_0
- \value Key_1
- \value Key_2
- \value Key_3
- \value Key_4
- \value Key_5
- \value Key_6
- \value Key_7
- \value Key_8
- \value Key_9
- \value Key_Colon
- \value Key_Semicolon
- \value Key_Less
- \value Key_Equal
- \value Key_Greater
- \value Key_Question
- \value Key_At
- \value Key_A
- \value Key_B
- \value Key_C
- \value Key_D
- \value Key_E
- \value Key_F
- \value Key_G
- \value Key_H
- \value Key_I
- \value Key_J
- \value Key_K
- \value Key_L
- \value Key_M
- \value Key_N
- \value Key_O
- \value Key_P
- \value Key_Q
- \value Key_R
- \value Key_S
- \value Key_T
- \value Key_U
- \value Key_V
- \value Key_W
- \value Key_X
- \value Key_Y
- \value Key_Z
- \value Key_BracketLeft
- \value Key_Backslash
- \value Key_BracketRight
- \value Key_AsciiCircum
- \value Key_Underscore
- \value Key_QuoteLeft
- \value Key_BraceLeft
- \value Key_Bar
- \value Key_BraceRight
- \value Key_AsciiTilde
- \value Key_nobreakspace
- \value Key_exclamdown
- \value Key_cent
- \value Key_sterling
- \value Key_currency
- \value Key_yen
- \value Key_brokenbar
- \value Key_section
- \value Key_diaeresis
- \value Key_copyright
- \value Key_ordfeminine
- \value Key_guillemotleft
- \value Key_notsign
- \value Key_hyphen
- \value Key_registered
- \value Key_macron
- \value Key_degree
- \value Key_plusminus
- \value Key_twosuperior
- \value Key_threesuperior
- \value Key_acute
- \value Key_mu
- \value Key_paragraph
- \value Key_periodcentered
- \value Key_cedilla
- \value Key_onesuperior
- \value Key_masculine
- \value Key_guillemotright
- \value Key_onequarter
- \value Key_onehalf
- \value Key_threequarters
- \value Key_questiondown
- \value Key_Agrave
- \value Key_Aacute
- \value Key_Acircumflex
- \value Key_Atilde
- \value Key_Adiaeresis
- \value Key_Aring
- \value Key_AE
- \value Key_Ccedilla
- \value Key_Egrave
- \value Key_Eacute
- \value Key_Ecircumflex
- \value Key_Ediaeresis
- \value Key_Igrave
- \value Key_Iacute
- \value Key_Icircumflex
- \value Key_Idiaeresis
- \value Key_ETH
- \value Key_Ntilde
- \value Key_Ograve
- \value Key_Oacute
- \value Key_Ocircumflex
- \value Key_Otilde
- \value Key_Odiaeresis
- \value Key_multiply
- \value Key_Ooblique
- \value Key_Ugrave
- \value Key_Uacute
- \value Key_Ucircumflex
- \value Key_Udiaeresis
- \value Key_Yacute
- \value Key_THORN
- \value Key_ssharp
- \omitvalue Key_agrave
- \omitvalue Key_aacute
- \omitvalue Key_acircumflex
- \omitvalue Key_atilde
- \omitvalue Key_adiaeresis
- \omitvalue Key_aring
- \omitvalue Key_ae
- \omitvalue Key_ccedilla
- \omitvalue Key_egrave
- \omitvalue Key_eacute
- \omitvalue Key_ecircumflex
- \omitvalue Key_ediaeresis
- \omitvalue Key_igrave
- \omitvalue Key_iacute
- \omitvalue Key_icircumflex
- \omitvalue Key_idiaeresis
- \omitvalue Key_eth
- \omitvalue Key_ntilde
- \omitvalue Key_ograve
- \omitvalue Key_oacute
- \omitvalue Key_ocircumflex
- \omitvalue Key_otilde
- \omitvalue Key_odiaeresis
- \value Key_division
- \omitvalue Key_oslash
- \omitvalue Key_ugrave
- \omitvalue Key_uacute
- \omitvalue Key_ucircumflex
- \omitvalue Key_udiaeresis
- \omitvalue Key_yacute
- \omitvalue Key_thorn
- \value Key_ydiaeresis
- \value Key_Multi_key
- \value Key_Codeinput
- \value Key_SingleCandidate
- \value Key_MultipleCandidate
- \value Key_PreviousCandidate
- \value Key_Mode_switch
- \value Key_Kanji
- \value Key_Muhenkan
- \value Key_Henkan
- \value Key_Romaji
- \value Key_Hiragana
- \value Key_Katakana
- \value Key_Hiragana_Katakana
- \value Key_Zenkaku
- \value Key_Hankaku
- \value Key_Zenkaku_Hankaku
- \value Key_Touroku
- \value Key_Massyo
- \value Key_Kana_Lock
- \value Key_Kana_Shift
- \value Key_Eisu_Shift
- \value Key_Eisu_toggle
- \value Key_Hangul
- \value Key_Hangul_Start
- \value Key_Hangul_End
- \value Key_Hangul_Hanja
- \value Key_Hangul_Jamo
- \value Key_Hangul_Romaja
- \value Key_Hangul_Jeonja
- \value Key_Hangul_Banja
- \value Key_Hangul_PreHanja
- \value Key_Hangul_PostHanja
- \value Key_Hangul_Special
- \value Key_Dead_Grave
- \value Key_Dead_Acute
- \value Key_Dead_Circumflex
- \value Key_Dead_Tilde
- \value Key_Dead_Macron
- \value Key_Dead_Breve
- \value Key_Dead_Abovedot
- \value Key_Dead_Diaeresis
- \value Key_Dead_Abovering
- \value Key_Dead_Doubleacute
- \value Key_Dead_Caron
- \value Key_Dead_Cedilla
- \value Key_Dead_Ogonek
- \value Key_Dead_Iota
- \value Key_Dead_Voiced_Sound
- \value Key_Dead_Semivoiced_Sound
- \value Key_Dead_Belowdot
- \value Key_Dead_Hook
- \value Key_Dead_Horn
- \value Key_Back
- \value Key_Forward
- \value Key_Stop
- \value Key_Refresh
- \value Key_VolumeDown
- \value Key_VolumeMute
- \value Key_VolumeUp
- \value Key_BassBoost
- \value Key_BassUp
- \value Key_BassDown
- \value Key_TrebleUp
- \value Key_TrebleDown
- \value Key_MediaPlay
- \value Key_MediaStop
- \value Key_MediaPrevious
- \omitvalue Key_MediaPrev
- \value Key_MediaNext
- \value Key_MediaRecord
- \value Key_HomePage
- \value Key_Favorites
- \value Key_Search
- \value Key_Standby
- \value Key_OpenUrl
- \value Key_LaunchMail
- \value Key_LaunchMedia
- \value Key_Launch0
- \value Key_Launch1
- \value Key_Launch2
- \value Key_Launch3
- \value Key_Launch4
- \value Key_Launch5
- \value Key_Launch6
- \value Key_Launch7
- \value Key_Launch8
- \value Key_Launch9
- \value Key_LaunchA
- \value Key_LaunchB
- \value Key_LaunchC
- \value Key_LaunchD
- \value Key_LaunchE
- \value Key_LaunchF
- \value Key_MediaLast
- \value Key_unknown
-
- \value Key_Call
- \value Key_Context1
- \value Key_Context2
- \value Key_Context3
- \value Key_Context4
- \value Key_Flip
- \value Key_Hangup
- \value Key_No
- \value Key_Select
- \value Key_Yes
-
- \value Key_Execute
- \value Key_Printer
- \value Key_Play
- \value Key_Sleep
- \value Key_Zoom
- \value Key_Cancel
-
- \sa QKeyEvent::key()
-*/
-
-/*!
- \enum Qt::HitTestAccuracy
-
- This enum contains the types of accuracy that can be used by the
- QTextDocument class when testing for mouse clicks on text documents.
-
- \value ExactHit The point at which input occurred must coincide
- exactly with input-sensitive parts of the document.
- \value FuzzyHit The point at which input occurred can lie close to
- input-sensitive parts of the document.
-
- This enum is defined in the \c <QTextDocument> header file.
-*/
-
-/*!
- \enum Qt::WhiteSpaceMode
-
- This enum describes the types of whitespace mode that are used by
- the QTextDocument class to meet the requirements of different kinds
- of textual information.
-
- \value WhiteSpaceNormal The whitespace mode used to display
- normal word wrapped text in paragraphs.
- \value WhiteSpacePre A preformatted text mode in which
- whitespace is reproduced exactly.
- \value WhiteSpaceNoWrap
-
- \omitvalue WhiteSpaceModeUndefined
-
- This enum is defined in the \c <QTextDocument> header file.
-*/
-
-/*!
- \enum Qt::ButtonState_enum
- \compat
- \value ShiftButton
- \value ControlButton
- \value AltButton
- \value MetaButton
- \value Keypad
- \value KeyButtonMask
-
- Use Qt::KeyboardModifier instead.
-*/
-
-/*!
- \typedef Qt::ButtonState
- \compat
-
- Use Qt::KeyboardModifier instead.
-*/
-
-/*!
- \enum Qt::CheckState
-
- This enum describes the state of checkable items, controls, and widgets.
-
- \value Unchecked The item is unchecked.
- \value PartiallyChecked The item is partially checked. Items in hierarchical models
- may be partially checked if some, but not all, of their
- children are checked.
- \value Checked The item is checked.
-
- \sa QCheckBox, Qt::ItemFlags, Qt::ItemDataRole
-*/
-
-
-/*!
- \enum Qt::ToolButtonStyle
-
- The style of the tool button, describing how the button's text and
- icon should be displayed.
-
- \value ToolButtonIconOnly Only display the icon.
- \value ToolButtonTextOnly Only display the text.
- \value ToolButtonTextBesideIcon The text appears beside the icon.
- \value ToolButtonTextUnderIcon The text appears under the icon.
- \value ToolButtonFollowStyle Follow the \l{QStyle::SH_ToolButtonStyle}{style}.
-*/
-
-/*!
- \enum Qt::Corner
-
- This enum type specifies a corner in a rectangle:
-
- \value TopLeftCorner The top-left corner of the rectangle.
- \value TopRightCorner The top-right corner of the rectangle.
- \value BottomLeftCorner The bottom-left corner of the rectangle.
- \value BottomRightCorner The bottom-right corner of the rectangle.
-
- \omitvalue TopLeft
- \omitvalue TopRight
- \omitvalue BottomLeft
- \omitvalue BottomRight
-*/
-
-/*!
- \enum Qt::ScrollBarPolicy
-
- This enum type describes the various modes of QAbstractScrollArea's scroll
- bars.
-
- \value ScrollBarAsNeeded QAbstractScrollArea shows a scroll bar when the
- content is too large to fit and not otherwise. This is the
- default.
-
- \value ScrollBarAlwaysOff QAbstractScrollArea never shows a scroll bar.
-
- \value ScrollBarAlwaysOn QAbstractScrollArea always shows a scroll bar.
-
- (The modes for the horizontal and vertical scroll bars are
- independent.)
-*/
-
-/*!
- \enum Qt::ArrowType
-
- \value NoArrow
- \value UpArrow
- \value DownArrow
- \value LeftArrow
- \value RightArrow
-*/
-
-/*!
- \enum Qt::FocusReason
-
- This enum specifies why the focus changed. It will be passed
- through QWidget::setFocus and can be retrieved in the QFocusEvent
- sent to the widget upon focus change.
-
- \value MouseFocusReason A mouse action occurred.
- \value TabFocusReason The Tab key was pressed.
- \value BacktabFocusReason A Backtab occurred. The input for this may
- include the Shift or Control keys;
- e.g. Shift+Tab.
- \value ActiveWindowFocusReason The window system made this window either
- active or inactive.
- \value PopupFocusReason The application opened/closed a pop-up that
- grabbed/released the keyboard focus.
- \value ShortcutFocusReason The user typed a label's buddy shortcut
- \value MenuBarFocusReason The menu bar took focus.
- \value OtherFocusReason Another reason, usually application-specific.
-
- \omitvalue NoFocusReason
-
- \sa {Keyboard Focus}
-*/
-
-/*!
- \enum Qt::WindowState
-
- \keyword window state
-
- This enum type is used to specify the current state of a top-level
- window.
-
- The states are
-
- \value WindowNoState The window has no state set (in normal state).
- \value WindowMinimized The window is minimized (i.e. iconified).
- \value WindowMaximized The window is maximized with a frame around it.
- \value WindowFullScreen The window fills the entire screen without any frame around it.
- \value WindowActive The window is the active window, i.e. it has keyboard focus.
-
-*/
-
-/*!
- \enum Qt::ContextMenuPolicy
-
- This enum type defines the various policies a widget can have with
- respect to showing a context menu.
-
- \value NoContextMenu the widget does not feature a context menu,
- context menu handling is deferred to the widget's parent.
- \value PreventContextMenu the widget does not feature a context
- menu, and in contrast to \c NoContextMenu, the handling is \e not
- deferred to the widget's parent. This means that all right mouse
- button events are guaranteed to be delivered to the widget itself
- through mousePressEvent(), and mouseReleaseEvent().
- \value DefaultContextMenu the widget's QWidget::contextMenuEvent() handler is called.
- \value ActionsContextMenu the widget displays its QWidget::actions() as context menu.
- \value CustomContextMenu the widget emits the QWidget::customContextMenuRequested() signal.
-*/
-
-/*!
- \enum Qt::FocusPolicy
-
- This enum type defines the various policies a widget can have with
- respect to acquiring keyboard focus.
-
- \value TabFocus the widget accepts focus by tabbing.
- \value ClickFocus the widget accepts focus by clicking.
- \value StrongFocus the widget accepts focus by both tabbing
- and clicking. On Mac OS X this will also
- be indicate that the widget accepts tab focus
- when in 'Text/List focus mode'.
- \value WheelFocus like Qt::StrongFocus plus the widget accepts
- focus by using the mouse wheel.
- \value NoFocus the widget does not accept focus.
-
-*/
-
-/*!
- \enum Qt::ShortcutContext
-
- For a QEvent::Shortcut event to occur, the shortcut's key sequence
- must be entered by the user in a context where the shortcut is
- active. The possible contexts are these:
-
- \value WidgetShortcut The shortcut is active when its
- parent widget has focus.
- \value WidgetWithChildrenShortcut The shortcut is active
- when its parent widget, or any of its children has focus.
- Children which are top-level widgets, except pop-ups, are
- not affected by this shortcut context.
- \value WindowShortcut The shortcut is active when its
- parent widget is a logical subwidget of the
- active top-level window.
- \value ApplicationShortcut The shortcut is active when one of
- the applications windows are active.
-*/
-
-/*!
- \typedef Qt::WFlags
-
- Synonym for Qt::WindowFlags.
-*/
-
-/*!
- \enum Qt::WindowType
-
- \keyword window flag
-
- This enum type is used to specify various window-system properties
- for the widget. They are fairly unusual but necessary in a few
- cases. Some of these flags depend on whether the underlying window
- manager supports them.
-
- The main types are
-
- \value Widget This is the default type for QWidget. Widgets of
- this type are child widgets if they have a parent,
- and independent windows if they have no parent.
- See also Qt::Window and Qt::SubWindow.
-
- \value Window Indicates that the widget is a window, usually
- with a window system frame and a title bar,
- irrespective of whether the widget has a parent or
- not. Note that it is not possible to unset this
- flag if the widget does not have a parent.
-
- \value Dialog Indicates that the widget is a window that should
- be decorated as a dialog (i.e., typically no
- maximize or minimize buttons in the title bar).
- This is the default type for QDialog. If you want
- to use it as a modal dialog, it should be launched
- from another window, or have a parent and used
- with the QWidget::windowModality property. If you make
- it modal, the dialog will prevent other top-level
- windows in the application from getting any input.
- We refer to a top-level window that has a parent
- as a \e secondary window.
-
- \value Sheet Indicates that the window is a Macintosh sheet. Since
- using a sheet implies window modality, the recommended
- way is to use QWidget::setWindowModality(), or
- QDialog::open(), instead.
-
- \value Drawer Indicates that the widget is a Macintosh drawer.
-
- \value Popup Indicates that the widget is a pop-up top-level
- window, i.e. that it is modal, but has a window
- system frame appropriate for pop-up menus.
-
- \value Tool Indicates that the widget is a tool window. A tool
- window is often a small window with a smaller than
- usual title bar and decoration, typically used for
- collections of tool buttons. It there is a parent,
- the tool window will always be kept on top of it.
- If there isn't a parent, you may consider using
- Qt::WindowStaysOnTopHint as well. If the window
- system supports it, a tool window can be decorated
- with a somewhat lighter frame. It can also be
- combined with Qt::FramelessWindowHint.
- \br
- \br
- On Mac OS X, tool windows correspond to the
- \l{http://developer.apple.com/documentation/Carbon/Conceptual/HandlingWindowsControls/hitb-wind_cont_concept/chapter_2_section_2.html}{Floating}
- class of windows. This means that the window lives on a
- level above normal windows; it impossible to put a normal
- window on top of it. By default, tool windows will disappear
- when the application is inactive. This can be controlled by
- the Qt::WA_MacAlwaysShowToolWindow attribute.
-
- \value ToolTip Indicates that the widget is a tooltip. This is
- used internally to implement
- \l{QWidget::toolTip}{tooltips}.
-
- \value SplashScreen Indicates that the window is a splash screen.
- This is the default type for QSplashScreen.
-
- \value Desktop Indicates that this widget is the desktop. This
- is the type for QDesktopWidget.
-
- \value SubWindow Indicates that this widget is a sub-window, such
- as a QMdiSubWindow widget.
-
- There are also a number of flags which you can use to customize
- the appearance of top-level windows. These have no effect on other
- windows:
-
- \value MSWindowsFixedSizeDialogHint Gives the window a thin dialog border on Windows.
- This style is traditionally used for fixed-size dialogs.
-
- \value MSWindowsOwnDC Gives the window its own display
- context on Windows.
-
- \value X11BypassWindowManagerHint Bypass the window
- manager completely. This results in a borderless window
- that is not managed at all (i.e., no keyboard input unless
- you call QWidget::activateWindow() manually).
-
- \value FramelessWindowHint Produces a borderless window.
- The user cannot move or resize a borderless window via the window
- system. On X11, the result of the flag is dependent on the window manager and its
- ability to understand Motif and/or NETWM hints. Most existing
- modern window managers can handle this.
-
- The \c CustomizeWindowHint flag is used to enable customization of
- the window controls. This flag must be set to allow the \c
- WindowTitleHint, \c WindowSystemMenuHint, \c
- WindowMinimizeButtonHint, \c WindowMaximizeButtonHint and \c
- WindowCloseButtonHint flags to be changed.
-
- \value CustomizeWindowHint Turns off the default window title hints.
-
- \value WindowTitleHint Gives the window a title bar.
-
- \value WindowSystemMenuHint Adds a window system menu, and
- possibly a close button (for example on Mac). If you need to hide
- or show a close button, it is more portable to use \c
- WindowCloseButtonHint.
-
- \value WindowMinimizeButtonHint Adds a minimize button. On
- some platforms this implies Qt::WindowSystemMenuHint for it to work.
-
- \value WindowMaximizeButtonHint Adds a maximize button. On
- some platforms this implies Qt::WindowSystemMenuHint for it to work.
-
- \value WindowMinMaxButtonsHint Adds a minimize and a maximize
- button. On some platforms this implies Qt::WindowSystemMenuHint for it to work.
-
- \value WindowCloseButtonHint Adds a close button. On
- some platforms this implies Qt::WindowSystemMenuHint for it
- to work.
-
- \value WindowContextHelpButtonHint Adds a context help button to dialogs.
- On some platforms this implies Qt::WindowSystemMenuHint for it to work.
-
- \value MacWindowToolBarButtonHint On Mac OS X adds a tool bar button (i.e.,
- the oblong button that is on the top right of windows that have toolbars.
-
- \value BypassGraphicsProxyWidget Prevents the window and its children from
- automatically embedding themselves into a QGraphicsProxyWidget if the
- parent widget is already embedded. You can set this flag if you
- want your widget to always be a toplevel widget on the desktop,
- regardless of whether the parent widget is embedded in a scene or
- not.
-
- \value WindowShadeButtonHint
-
- \value WindowStaysOnTopHint Informs the window system that the
- window should stay on top of all other windows. Note that
- on some window managers on X11 you also have to pass
- Qt::X11BypassWindowManagerHint for this flag to work
- correctly.
-
- \value WindowStaysOnBottomHint Informs the window system that the
- window should stay on bottom of all other windows. Note
- that on X11 this hint will work only in window managers
- that support _NET_WM_STATE_BELOW atom. If a window always
- on the bottom has a parent, the parent will also be left on
- the bottom. This window hint is currently not implemented
- for Mac OS X.
-
- \value WindowOkButtonHint Adds an OK button to the window decoration of a dialog.
- Only supported for Windows CE.
-
- \value WindowCancelButtonHint Adds a Cancel button to the window decoration of a dialog.
- Only supported for Windows CE.
-
- \value WindowType_Mask A mask for extracting the window type
- part of the window flags.
-
- Obsolete flags:
-
- \value WMouseNoMask Use Qt::WA_MouseNoMask instead.
- \value WDestructiveClose Use Qt::WA_DeleteOnClose instead.
- \value WStaticContents Use Qt::WA_StaticContents instead.
- \value WGroupLeader No longer needed.
- \value WShowModal Use QWidget::windowModality instead.
- \value WNoMousePropagation Use Qt::WA_NoMousePropagation instead.
- \value WType_TopLevel Use Qt::Window instead.
- \value WType_Dialog Use Qt::Dialog instead.
- \value WType_Popup Use Qt::Popup instead.
- \value WType_Desktop Use Qt::Desktop instead.
- \value WType_Mask Use Qt::WindowType_Mask instead.
-
- \value WStyle_Customize No longer needed.
- \value WStyle_NormalBorder No longer needed.
- \value WStyle_DialogBorder Use Qt::MSWindowsFixedSizeDialogHint instead.
- \value WStyle_NoBorder Use Qt::FramelessWindowHint instead.
- \value WStyle_Title Use Qt::WindowTitleHint instead.
- \value WStyle_SysMenu Use Qt::WindowSystemMenuHint instead.
- \value WStyle_Minimize Use Qt::WindowMinimizeButtonHint instead.
- \value WStyle_Maximize Use Qt::WindowMaximizeButtonHint instead.
- \value WStyle_MinMax Use Qt::WindowMinMaxButtonsHint instead.
- \value WStyle_Tool Use Qt::Tool instead.
- \value WStyle_StaysOnTop Use Qt::WindowStaysOnTopHint instead.
- \value WStyle_ContextHelp Use Qt::WindowContextHelpButtonHint instead.
-
- \value WPaintDesktop No longer needed.
- \value WPaintClever No longer needed.
-
- \value WX11BypassWM Use Qt::X11BypassWindowManagerHint instead.
- \value WWinOwnDC Use Qt::MSWindowsOwnDC instead.
- \value WMacSheet Use Qt::Sheet instead.
- \value WMacDrawer Use Qt::Drawer instead.
-
- \value WStyle_Splash Use Qt::SplashScreen instead.
-
- \value WNoAutoErase No longer needed.
- \value WRepaintNoErase No longer needed.
- \value WNorthWestGravity Use Qt::WA_StaticContents instead.
- \value WType_Modal Use Qt::Dialog and QWidget::windowModality instead.
- \value WStyle_Dialog Use Qt::Dialog instead.
- \value WStyle_NoBorderEx Use Qt::FramelessWindowHint instead.
- \value WResizeNoErase No longer needed.
- \value WMacNoSheet No longer needed.
-
- \sa QWidget::windowFlags, {Window Flags Example}
-*/
-
-/*!
- \enum Qt::DropAction
-
- \value CopyAction Copy the data to the target.
- \value MoveAction Move the data from the source to the target.
- \value LinkAction Create a link from the source to the target.
- \value ActionMask
- \value IgnoreAction Ignore the action (do nothing with the data).
- \value TargetMoveAction On Windows, this value is used when the ownership of the D&D data
- should be taken over by the target application,
- i.e., the source application should not delete
- the data.
- \br
- On X11 this value is used to do a move.
- \br
- TargetMoveAction is not used on the Mac.
-*/
-
-#if defined(Q_OS_WIN) && defined(QT3_SUPPORT)
-/*!
- \enum Qt::WindowsVersion
- \compat
-
- \value WV_32s
- \value WV_95
- \value WV_98
- \value WV_Me
- \value WV_DOS_based
- \value WV_NT
- \value WV_2000
- \value WV_XP
- \value WV_2003
- \value WV_NT_based
- \value WV_CE
- \value WV_CENET
- \value WV_CE_based
- \value WV_CE_5
- \value WV_CE_6
-*/
-#endif
-
-#if defined(Q_OS_MAC) && defined(QT3_SUPPORT)
-/*!
- \enum Qt::MacintoshVersion
- \compat
-
- \value MV_Unknown Use QSysInfo::MV_Unknown instead.
- \value MV_9 Use QSysInfo::MV_9 instead.
- \value MV_10_DOT_0 Use QSysInfo::MV_10_0 instead.
- \value MV_10_DOT_1 Use QSysInfo::MV_10_1 instead.
- \value MV_10_DOT_2 Use QSysInfo::MV_10_2 instead.
- \value MV_10_DOT_3 Use QSysInfo::MV_10_3 instead.
- \value MV_10_DOT_4 Use QSysInfo::MV_10_4 instead.
-
- \value MV_CHEETAH Use QSysInfo::MV_10_0 instead.
- \value MV_PUMA Use QSysInfo::MV_10_1 instead.
- \value MV_JAGUAR Use QSysInfo::MV_10_2 instead.
- \value MV_PANTHER Use QSysInfo::MV_10_3 instead.
- \value MV_TIGER Use QSysInfo::MV_10_4 instead.
-
- \sa QSysInfo::MacVersion
-*/
-#endif
-
-/*! \typedef Qt::ToolBarDock
- \compat
-
- Use Qt::Dock instead.
-*/
-
-/*!
- \enum Qt::Dock
- \compat
-
- Each dock window can be in one of the following positions:
-
- \value DockUnmanaged not managed by a Q3MainWindow.
-
- \value DockTornOff the dock window floats as its own top level
- window which always stays on top of the main window.
-
- \value DockTop above the central widget, below the menu bar.
-
- \value DockBottom below the central widget, above the status bar.
-
- \value DockRight to the right of the central widget.
-
- \value DockLeft to the left of the central widget.
-
- \value DockMinimized the dock window is not shown (this is
- effectively a 'hidden' dock area); the handles of all minimized
- dock windows are drawn in one row below the menu bar.
-
- \omitvalue Bottom
- \omitvalue Left
- \omitvalue Minimized
- \omitvalue Right
- \omitvalue Top
- \omitvalue TornOff
- \omitvalue Unmanaged
-*/
-
-/*!
- \enum Qt::AnchorAttribute
-
- An anchor has one or more of the following attributes:
-
- \value AnchorName the name attribute of the anchor. This attribute is
- used when scrolling to an anchor in the document.
-
- \value AnchorHref the href attribute of the anchor. This attribute is
- used when a link is clicked to determine what content to load.
-*/
-
-/*!
- \enum Qt::SortOrder
-
- This enum describes how the items in a widget are sorted.
-
- \value AscendingOrder The items are sorted ascending e.g. starts with
- 'AAA' ends with 'ZZZ' in Latin-1 locales
-
- \value DescendingOrder The items are sorted descending e.g. starts with
- 'ZZZ' ends with 'AAA' in Latin-1 locales
-
- \omitvalue Ascending
- \omitvalue Descending
-*/
-
-/*!
- \enum Qt::ClipOperation
-
- \value NoClip This operation turns clipping off.
-
- \value ReplaceClip Replaces the current clip path/rect/region with
- the one supplied in the function call.
-
- \value IntersectClip Intersects the current clip path/rect/region
- with the one supplied in the function call.
-
- \value UniteClip Unites the current clip path/rect/region with the
- one supplied in the function call.
-*/
-
-/*!
- \enum Qt::ItemSelectionMode
-
- This enum is used in QGraphicsItem, QGraphicsScene and QGraphicsView to
- specify how items are selected, or how to determine if a shapes and items
- collide.
-
- \value ContainsItemShape The output list contains only items whose
- \l{QGraphicsItem::shape()}{shape} is fully contained inside the
- selection area. Items that intersect with the area's outline are
- not included.
-
- \value IntersectsItemShape The output list contains both items whose
- \l{QGraphicsItem::shape()}{shape} is fully contained inside the
- selection area, and items that intersect with the area's
- outline. This is a common mode for rubber band selection.
-
- \value ContainsItemBoundingRect The output list contains only items whose
- \l{QGraphicsItem::boundingRect()}{bounding rectangle} is fully
- contained inside the selection area. Items that intersect with the
- area's outline are not included.
-
- \value IntersectsItemBoundingRect The output list contains both items
- whose \l{QGraphicsItem::boundingRect()}{bounding rectangle} is
- fully contained inside the selection area, and items that intersect
- with the area's outline. This method is commonly used for
- determining areas that need redrawing.
-
- \sa QGraphicsScene::items(), QGraphicsScene::collidingItems(),
- QGraphicsView::items(), QGraphicsItem::collidesWithItem(),
- QGraphicsItem::collidesWithPath()
-*/
-
-/*!
- \enum Qt::FillRule
-
- Specifies which method should be used to fill the paths and polygons.
-
- \value OddEvenFill Specifies that the region is filled using the
- odd even fill rule. With this rule, we determine whether a point
- is inside the shape by using the following method.
- Draw a horizontal line from the point to a location outside the shape,
- and count the number of intersections. If the number of intersections
- is an odd number, the point is inside the shape. This mode is the
- default.
-
- \value WindingFill Specifies that the region is filled using the
- non zero winding rule. With this rule, we determine whether a
- point is inside the shape by using the following method.
- Draw a horizontal line from the point to a location outside the shape.
- Determine whether the direction of the line at each intersection point
- is up or down. The winding number is determined by summing the
- direction of each intersection. If the number is non zero, the point
- is inside the shape. This fill mode can also in most cases be considered
- as the intersection of closed shapes.
-*/
-
-/*!
- \enum Qt::PaintUnit
-
- \compat
-
- \value PixelUnit
- \value LoMetricUnit Obsolete
- \value HiMetricUnit Obsolete
- \value LoEnglishUnit Obsolete
- \value HiEnglishUnit Obsolete
- \value TwipsUnit Obsolete
-*/
-
-/*!
- \enum Qt::TextFormat
-
- This enum is used in widgets that can display both plain text and
- rich text, e.g. QLabel. It is used for deciding whether a text
- string should be interpreted as one or the other. This is normally
- done by passing one of the enum values to a setTextFormat()
- function.
-
- \value PlainText The text string is interpreted as a plain text
- string.
-
- \value RichText The text string is interpreted as a rich text
- string.
-
- \value AutoText The text string is interpreted as for
- Qt::RichText if Qt::mightBeRichText() returns true, otherwise
- as Qt::PlainText.
-
- \value LogText A special, limited text format which is only used
- by Q3TextEdit in an optimized mode.
-*/
-
-/*!
- \enum Qt::CursorShape
-
- This enum type defines the various cursors that can be used.
-
- The standard arrow cursor is the default for widgets in a normal state.
-
- \value ArrowCursor \inlineimage cursor-arrow.png
- The standard arrow cursor.
- \value UpArrowCursor \inlineimage cursor-uparrow.png
- An arrow pointing upwards toward the top of the screen.
- \value CrossCursor \inlineimage cursor-cross.png
- A crosshair cursor, typically used to help the
- user accurately select a point on the screen.
- \value WaitCursor \inlineimage cursor-wait.png
- An hourglass or watch cursor, usually shown during
- operations that prevent the user from interacting with
- the application.
- \value IBeamCursor \inlineimage cursor-ibeam.png
- A caret or ibeam cursor, indicating that a widget can
- accept and display text input.
- \value SizeVerCursor \inlineimage cursor-sizev.png
- A cursor used for elements that are used to vertically
- resize top-level windows.
- \value SizeHorCursor \inlineimage cursor-sizeh.png
- A cursor used for elements that are used to horizontally
- resize top-level windows.
- \value SizeBDiagCursor \inlineimage cursor-sizeb.png
- A cursor used for elements that are used to diagonally
- resize top-level windows at their top-right and
- bottom-left corners.
- \value SizeFDiagCursor \inlineimage cursor-sizef.png
- A cursor used for elements that are used to diagonally
- resize top-level windows at their top-left and
- bottom-right corners.
- \value SizeAllCursor \inlineimage cursor-sizeall.png
- A cursor used for elements that are used to resize
- top-level windows in any direction.
- \value BlankCursor A blank/invisible cursor, typically used when the cursor
- shape needs to be hidden.
- \value SplitVCursor \inlineimage cursor-vsplit.png
- A cursor used for vertical splitters, indicating that
- a handle can be dragged horizontally to adjust the use
- of available space.
- \value SplitHCursor \inlineimage cursor-hsplit.png
- A cursor used for horizontal splitters, indicating that
- a handle can be dragged vertically to adjust the use
- of available space.
- \value PointingHandCursor \inlineimage cursor-hand.png
- A pointing hand cursor that is typically used for
- clickable elements such as hyperlinks.
- \value ForbiddenCursor \inlineimage cursor-forbidden.png
- A slashed circle cursor, typically used during drag
- and drop operations to indicate that dragged content
- cannot be dropped on particular widgets or inside
- certain regions.
- \value OpenHandCursor \inlineimage cursor-openhand.png
- A cursor representing an open hand, typically used to
- indicate that the area under the cursor is the visible
- part of a canvas that the user can click and drag in
- order to scroll around.
- \value ClosedHandCursor \inlineimage cursor-closedhand.png
- A cursor representing a closed hand, typically used to
- indicate that a dragging operation is in progress that
- involves scrolling.
- \value WhatsThisCursor \inlineimage cursor-whatsthis.png
- An arrow with a question mark, typically used to indicate
- the presence of What's This? help for a widget.
- \value BusyCursor \inlineimage cursor-wait.png
- An hourglass or watch cursor, usually shown during
- operations that allow the user to interact with
- the application while they are performed in the
- background.
- \value BitmapCursor
- \omitvalue LastCursor
- \omitvalue CustomCursor
-
- \omitvalue arrowCursor
- \omitvalue upArrowCursor
- \omitvalue crossCursor
- \omitvalue waitCursor
- \omitvalue ibeamCursor
- \omitvalue sizeVerCursor
- \omitvalue sizeHorCursor
- \omitvalue sizeBDiagCursor
- \omitvalue sizeFDiagCursor
- \omitvalue sizeAllCursor
- \omitvalue blankCursor
- \omitvalue splitVCursor
- \omitvalue splitHCursor
- \omitvalue pointingHandCursor
- \omitvalue forbiddenCursor
- \omitvalue whatsThisCursor
-*/
-
-/*!
- \typedef Qt::TextFlags
- \compat
-
- Use Qt::TextFlag instead.
-*/
-
-/*!
- \enum Qt::LayoutDirection
-
- Specifies the direction of Qt's layouts:
-
- \value LeftToRight Left-to-right layout.
- \value RightToLeft Right-to-left layout.
-
- Right-to-left layouts are necessary for certain languages,
- notably Arabic and Hebrew.
-
- \sa QApplication::setLayoutDirection(), QWidget::setLayoutDirection()
-*/
-
-/*!
- \enum Qt::InputMethodHint
-
- \value ImhNone No hints.
- \value ImhHiddenText Characters should be hidden, as is typically used when entering passwords.
- This is automatically set when setting QLineEdit::echoMode to \c Password.
- \value ImhNumbersOnly Only number input is allowed.
- \value ImhUppercaseOnly Only upper case letter input is allowed.
- \value ImhLowercaseOnly Only lower case letter input is allowed.
- \value ImhNoAutoUppercase The input method should not try to automatically switch to upper case
- when a sentence ends.
- \value ImhPreferNumbers Numbers are preferred (but not required).
- \value ImhPreferUppercase Upper case letters are preferred (but not required).
- \value ImhPreferLowercase Lower case letters are preferred (but not required).
- \value ImhNoPredictiveText Do not use predictive text (i.e. dictionary lookup) while typing.
- \value ImhDialableCharactersOnly Only characters suitable for phone dialling are allowed.
-
- \note If several flags ending with \c Only are ORed together, the resulting character set will
- consist of the union of the specified sets. For instance specifying \c ImhNumbersOnly and
- \c ImhUppercaseOnly would yield a set consisting of numbers and uppercase letters.
-
- \sa QGraphicsItem::inputMethodHints()
-*/
-
-/*!
- \enum Qt::InputMethodQuery
-
- \value ImMicroFocus The rectangle covering the area of the input cursor in widget coordinates.
- \value ImFont The currently used font for text input.
- \value ImCursorPosition The logical position of the cursor within the text surrounding the input area (see ImSurroundingText).
- If any text is selected, the position returned will be at the logical end of the
- selection, even if the real cursor is located at the logical start.
- \value ImSurroundingText The plain text around the input area, for example the current paragraph.
- \value ImCurrentSelection The currently selected text.
-*/
-
-/*!
- \enum Qt::ItemDataRole
-
- Each item in the model has a set of data elements associated with
- it, each with its own role. The roles are used by the view to indicate
- to the model which type of data it needs. Custom models should return
- data in these types.
-
- The general purpose roles (and the associated types) are:
-
- \value DisplayRole The key data to be rendered in the form of text. (QString)
- \value DecorationRole The data to be rendered as a decoration in the form
- of an icon. (QColor)
- \value EditRole The data in a form suitable for editing in an
- editor. (QString)
- \value ToolTipRole The data displayed in the item's tooltip. (QString)
- \value StatusTipRole The data displayed in the status bar. (QString)
- \value WhatsThisRole The data displayed for the item in "What's This?"
- mode. (QString)
- \value SizeHintRole The size hint for the item that will be supplied
- to views. (QSize)
-
- Roles describing appearance and meta data (with associated types):
-
- \value FontRole The font used for items rendered with the default
- delegate. (QFont)
- \value TextAlignmentRole The alignment of the text for items rendered with the
- default delegate. (Qt::AlignmentFlag)
- \value BackgroundRole The background brush used for items rendered with
- the default delegate. (QBrush)
- \value BackgroundColorRole This role is obsolete. Use BackgroundRole instead.
- \value ForegroundRole The foreground brush (text color, typically)
- used for items rendered with the default delegate.
- (QBrush)
- \value TextColorRole This role is obsolete. Use ForegroundRole instead.
- \value CheckStateRole This role is used to obtain the checked state of
- an item. (Qt::CheckState)
-
- Accessibility roles (with associated types):
-
- \value AccessibleTextRole The text to be used by accessibility
- extensions and plugins, such as screen
- readers. (QString)
- \value AccessibleDescriptionRole A description of the item for accessibility
- purposes. (QString)
-
- User roles:
-
- \value UserRole The first role that can be used for application-specific purposes.
-
- \omitvalue DisplayPropertyRole
- \omitvalue DecorationPropertyRole
- \omitvalue ToolTipPropertyRole
- \omitvalue StatusTipPropertyRole
- \omitvalue WhatsThisPropertyRole
-
- For user roles, it is up to the developer to decide which types to use and ensure that
- components use the correct types when accessing and setting data.
-*/
-
-/*!
- \enum Qt::ItemFlag
-
- This enum describes the properties of an item:
-
- \value NoItemFlags It does not have any properties set.
- \value ItemIsSelectable It can be selected.
- \value ItemIsEditable It can be edited.
- \value ItemIsDragEnabled It can be dragged.
- \value ItemIsDropEnabled It can be used as a drop target.
- \value ItemIsUserCheckable It can be checked or unchecked by the user.
- \value ItemIsEnabled The user can interact with the item.
- \value ItemIsTristate The item is checkable with three separate states.
-
- Note that checkable items need to be given both a suitable set of flags
- and an initial state, indicating whether the item is checked or not.
- This is handled automatically for model/view components, but needs
- to be explicitly set for instances of QListWidgetItem, QTableWidgetItem,
- and QTreeWidgetItem.
-
- \sa QAbstractItemModel
-*/
-
-/*!
- \enum Qt::MatchFlag
-
- This enum describes the type of matches that can be used when searching
- for items in a model.
-
- \value MatchExactly Performs QVariant-based matching.
- \value MatchFixedString Performs string-based matching.
- String-based comparisons are case-insensitive unless the
- \c MatchCaseSensitive flag is also specified.
- \value MatchContains The search term is contained in the item.
- \value MatchStartsWith The search term matches the start of the item.
- \value MatchEndsWith The search term matches the end of the item.
- \value MatchCaseSensitive The search is case sensitive.
- \value MatchRegExp Performs string-based matching using a regular
- expression as the search term.
- \value MatchWildcard Performs string-based matching using a string with
- wildcards as the search term.
- \value MatchWrap Perform a search that wraps around, so that when
- the search reaches the last item in the model, it begins again at
- the first item and continues until all items have been examined.
- \value MatchRecursive Searches the entire hierarchy.
-
- \sa QString::compare(), QRegExp
-*/
-
-/*!
- \enum Qt::TextElideMode
-
- This enum specifies where the ellipsis should appear when
- displaying texts that don't fit:
-
- \value ElideLeft The ellipsis should appear at the beginning of the text.
- \value ElideRight The ellipsis should appear at the end of the text.
- \value ElideMiddle The ellipsis should appear in the middle of the text.
- \value ElideNone Ellipsis should NOT appear in the text.
-
- Qt::ElideMiddle is normally the most appropriate choice for URLs (e.g.,
- "\l{http://qt.nokia.com/careers/movingto/brisbane/}{http://qt.nok...ovingto/brisbane/}"),
- whereas Qt::ElideRight is appropriate
- for other strings (e.g.,
- "\l{http://qt.nokia.com/doc/qq/qq09-mac-deployment.html}{Deploying Applications on Ma...}").
-
- \sa QAbstractItemView::textElideMode, QFontMetrics::elidedText(), AlignmentFlag QTabBar::elideMode
-*/
-
-/*!
- \enum Qt::WindowModality
-
- \keyword modal
-
- This enum specifies the behavior of a modal window. A modal window
- is one that blocks input to other windows. Note that windows that
- are children of a modal window are not blocked.
-
- The values are:
- \value NonModal The window is not modal and does not block input to other windows.
- \value WindowModal The window is modal to a single window hierarchy and blocks input to its parent window, all grandparent windows, and all siblings of its parent and grandparent windows.
- \value ApplicationModal The window is modal to the application and blocks input to all windows.
-
- \sa QWidget::windowModality, QDialog
-*/
-
-/*!
- \enum Qt::TextInteractionFlag
-
- This enum specifies how a text displaying widget reacts to user input.
-
- \value NoTextInteraction No interaction with the text is possible.
- \value TextSelectableByMouse Text can be selected with the mouse and copied to the clipboard using
- a context menu or standard keyboard shortcuts.
- \value TextSelectableByKeyboard Text can be selected with the cursor keys on the keyboard. A text cursor is shown.
- \value LinksAccessibleByMouse Links can be highlighted and activated with the mouse.
- \value LinksAccessibleByKeyboard Links can be focused using tab and activated with enter.
- \value TextEditable The text is fully editable.
-
- \value TextEditorInteraction The default for a text editor.
- \value TextBrowserInteraction The default for QTextBrowser.
-*/
-
-/*!
- \enum Qt::MaskMode
-
- This enum specifies the behavior of the
- QPixmap::createMaskFromColor() and QImage::createMaskFromColor()
- functions.
-
- \value MaskInColor Creates a mask where all pixels matching the given color are opaque.
- \value MaskOutColor Creates a mask where all pixels matching the given color are transparent.
-*/
-
-/*!
- \enum Qt::DockWidgetAreaSizes
- \internal
-*/
-
-/*!
- \enum Qt::ToolBarAreaSizes
- \internal
-*/
-
-/*!
- \enum Qt::EventPriority
-
- This enum can be used to specify event priorities.
-
- \value HighEventPriority Events with this priority are sent before
- events with NormalEventPriority or LowEventPriority.
-
- \value NormalEventPriority Events with this priority are sent
- after events with HighEventPriority, but before events with
- LowEventPriority.
-
- \value LowEventPriority Events with this priority are sent after
- events with HighEventPriority or NormalEventPriority.
-
- Note that these values are provided purely for convenience, since
- event priorities can be any value between \c INT_MAX and \c
- INT_MIN, inclusive. For example, you can define custom priorities
- as being relative to each other:
-
- \snippet doc/src/snippets/code/doc_src_qnamespace.qdoc 1
-
- \sa QCoreApplication::postEvent()
-*/
-/*!
- \enum Qt::SizeHint
- \since 4.4
-
- This enum is used by QGraphicsLayoutItem::sizeHint()
-
- \value MinimumSize is used to specify the minimum size of a graphics layout item.
- \value PreferredSize is used to specify the preferred size of a graphics layout item.
- \value MaximumSize is used to specify the maximum size of a graphics layout item.
- \value MinimumDescent is used to specify the minimum descent of a text string in a graphics layout item.
- \omitvalue NSizeHints
-
- \sa QGraphicsLayoutItem::sizeHint()
-*/
-
-/*!
- \enum Qt::SizeMode
- \since 4.4
-
- This enum is used by QPainter::drawRoundedRect() and QPainterPath::addRoundedRect()
- functions to specify the radii of rectangle corners with respect to the dimensions
- of the bounding rectangles specified.
-
- \value AbsoluteSize Specifies the size using absolute measurements.
- \value RelativeSize Specifies the size relative to the bounding rectangle,
- typically using percentage measurements.
-*/
-
-/*!
- \enum Qt::WindowFrameSection
- \since 4.4
-
- This enum is used to describe parts of a window frame. It is returned by
- QGraphicsWidget::windowFrameSectionAt() to describe what section of the window
- frame is under the mouse.
-
- \value NoSection
- \value LeftSection
- \value TopLeftSection
- \value TopSection
- \value TopRightSection
- \value RightSection
- \value BottomRightSection
- \value BottomSection
- \value BottomLeftSection
- \value TitleBarArea
-
- \sa QGraphicsWidget::windowFrameEvent()
- \sa QGraphicsWidget::paintWindowFrame()
- \sa QGraphicsWidget::windowFrameSectionAt()
-
-*/
-
-/*!
- \enum Qt::TileRule
- \since 4.6
-
- This enum describes how to repeat or stretch the parts of an image
- when drawing.
-
- \value Stretch Scale the image to fit to the available area.
-
- \value Repeat Tile the image until there is no more space. May crop
- the last image.
-
- \value Round Like Repeat, but scales the images down to ensure that
- the last image is not cropped.
-*/
-
-/*!
- \enum Qt::Initialization
- \internal
-*/
-
-/*!
- \enum Qt::GestureState
- \since 4.6
-
- This enum type describes the state of a gesture.
-
- \value NoGesture Initial state
- \value GestureStarted A continuous gesture has started.
- \value GestureUpdated A gesture continues.
- \value GestureFinished A gesture has finished.
-
- \sa QGesture
-*/
diff --git a/doc/src/classes/qpagesetupdialog.qdoc b/doc/src/classes/qpagesetupdialog.qdoc
deleted file mode 100644
index 5715fa89d..000000000
--- a/doc/src/classes/qpagesetupdialog.qdoc
+++ /dev/null
@@ -1,84 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class QPageSetupDialog
-
- \brief The QPageSetupDialog class provides a configuration dialog
- for the page-related options on a printer.
-
- On Windows and Mac OS X the page setup dialog is implemented using
- the native page setup dialogs.
-
- Note that on Windows and Mac OS X custom paper sizes won't be
- reflected in the native page setup dialogs. Additionally, custom
- page margins set on a QPrinter won't show in the native Mac OS X
- page setup dialog.
-
- \sa QPrinter, QPrintDialog
-*/
-
-
-/*!
- \fn QPageSetupDialog::QPageSetupDialog(QPrinter *printer, QWidget *parent)
-
- Constructs a page setup dialog that configures \a printer with \a
- parent as the parent widget.
-*/
-
-/*!
- \since 4.5
-
- \fn QPageSetupDialog::QPageSetupDialog(QWidget *parent)
-
- Constructs a page setup dialog that configures a default-constructed
- QPrinter with \a parent as the parent widget.
-
- \sa printer()
-*/
-
-/*!
- \fn QPrinter *QPageSetupDialog::printer()
-
- Returns the printer that was passed to the QPageSetupDialog
- constructor.
-*/
-
diff --git a/doc/src/classes/qpaintdevice.qdoc b/doc/src/classes/qpaintdevice.qdoc
deleted file mode 100644
index 6e7c561c9..000000000
--- a/doc/src/classes/qpaintdevice.qdoc
+++ /dev/null
@@ -1,289 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class QPaintDevice
- \brief The QPaintDevice class is the base class of objects that
- can be painted.
-
- \ingroup multimedia
-
- A paint device is an abstraction of a two-dimensional space that
- can be drawn using a QPainter. Its default coordinate system has
- its origin located at the top-left position. X increases to the
- right and Y increases downwards. The unit is one pixel.
-
- The drawing capabilities of QPaintDevice are currently implemented
- by the QWidget, QImage, QPixmap, QGLPixelBuffer, QPicture, and
- QPrinter subclasses.
-
- To implement support for a new backend, you must derive from
- QPaintDevice and reimplement the virtual paintEngine() function to
- tell QPainter which paint engine should be used to draw on this
- particular device. Note that you also must create a corresponding
- paint engine to be able to draw on the device, i.e derive from
- QPaintEngine and reimplement its virtual functions.
-
- \warning Qt requires that a QApplication object exists before
- any paint devices can be created. Paint devices access window
- system resources, and these resources are not initialized before
- an application object is created.
-
- The QPaintDevice class provides several functions returning the
- various device metrics: The depth() function returns its bit depth
- (number of bit planes). The height() function returns its height
- in default coordinate system units (e.g. pixels for QPixmap and
- QWidget) while heightMM() returns the height of the device in
- millimeters. Similiarily, the width() and widthMM() functions
- return the width of the device in default coordinate system units
- and in millimeters, respectively. Alternatively, the protected
- metric() function can be used to retrieve the metric information
- by specifying the desired PaintDeviceMetric as argument.
-
- The logicalDpiX() and logicalDpiY() functions return the
- horizontal and vertical resolution of the device in dots per
- inch. The physicalDpiX() and physicalDpiY() functions also return
- the resolution of the device in dots per inch, but note that if
- the logical and vertical resolution differ, the corresponding
- QPaintEngine must handle the mapping. Finally, the numColors()
- function returns the number of different colors available for the
- paint device.
-
- \sa QPaintEngine, QPainter, {The Coordinate System}, {The Paint
- System}
-*/
-
-/*!
- \enum QPaintDevice::PaintDeviceMetric
-
- Describes the various metrics of a paint device.
-
- \value PdmWidth The width of the paint device in default
- coordinate system units (e.g. pixels for QPixmap and QWidget). See
- also width().
-
- \value PdmHeight The height of the paint device in default
- coordinate system units (e.g. pixels for QPixmap and QWidget). See
- also height().
-
- \value PdmWidthMM The width of the paint device in millimeters. See
- also widthMM().
-
- \value PdmHeightMM The height of the paint device in millimeters. See
- also heightMM().
-
- \value PdmNumColors The number of different colors available for
- the paint device. See also numColors().
-
- \value PdmDepth The bit depth (number of bit planes) of the paint
- device. See also depth().
-
- \value PdmDpiX The horizontal resolution of the device in dots per
- inch. See also logicalDpiX().
-
- \value PdmDpiY The vertical resolution of the device in dots per inch. See
- also logicalDpiY().
-
- \value PdmPhysicalDpiX The horizontal resolution of the device in
- dots per inch. See also physicalDpiX().
-
- \value PdmPhysicalDpiY The vertical resolution of the device in
- dots per inch. See also physicalDpiY().
-
- \sa metric()
-*/
-
-/*!
- \fn QPaintDevice::QPaintDevice()
-
- Constructs a paint device. This constructor can be invoked only from
- subclasses of QPaintDevice.
-*/
-
-/*!
- \fn QPaintDevice::~QPaintDevice()
-
- Destroys the paint device and frees window system resources.
-*/
-
-/*!
- \fn int QPaintDevice::devType() const
-
- \internal
-
- Returns the device type identifier, which is QInternal::Widget
- if the device is a QWidget, QInternal::Pixmap if it's a
- QPixmap, QInternal::Printer if it's a QPrinter,
- QInternal::Picture if it's a QPicture, or
- QInternal::UnknownDevice in other cases.
-*/
-
-/*!
- \fn bool QPaintDevice::paintingActive() const
-
- Returns true if the device is currently being painted on, i.e. someone has
- called QPainter::begin() but not yet called QPainter::end() for
- this device; otherwise returns false.
-
- \sa QPainter::isActive()
-*/
-
-/*!
- \fn QPaintEngine *QPaintDevice::paintEngine() const
-
- Returns a pointer to the paint engine used for drawing on the
- device.
-*/
-
-/*!
- \fn int QPaintDevice::metric(PaintDeviceMetric metric) const
-
- Returns the metric information for the given paint device \a metric.
-
- \sa PaintDeviceMetric
-*/
-
-/*!
- \fn int QPaintDevice::width() const
-
- Returns the width of the paint device in default coordinate system
- units (e.g. pixels for QPixmap and QWidget).
-
- \sa widthMM()
-*/
-
-/*!
- \fn int QPaintDevice::height() const
-
- Returns the height of the paint device in default coordinate
- system units (e.g. pixels for QPixmap and QWidget).
-
- \sa heightMM()
-*/
-
-/*!
- \fn int QPaintDevice::widthMM() const
-
- Returns the width of the paint device in millimeters. Due to platform
- limitations it may not be possible to use this function to determine
- the actual physical size of a widget on the screen.
-
- \sa width()
-*/
-
-/*!
- \fn int QPaintDevice::heightMM() const
-
- Returns the height of the paint device in millimeters. Due to platform
- limitations it may not be possible to use this function to determine
- the actual physical size of a widget on the screen.
-
- \sa height()
-*/
-
-/*!
- \fn int QPaintDevice::numColors() const
-
- Returns the number of different colors available for the paint
- device. Since this value is an int, it will not be sufficient to represent
- the number of colors on 32 bit displays, in this case INT_MAX is
- returned instead.
-*/
-
-/*!
- \fn int QPaintDevice::depth() const
-
- Returns the bit depth (number of bit planes) of the paint device.
-*/
-
-/*!
- \fn int QPaintDevice::logicalDpiX() const
-
- Returns the horizontal resolution of the device in dots per inch,
- which is used when computing font sizes. For X11, this is usually
- the same as could be computed from widthMM().
-
- Note that if the logicalDpiX() doesn't equal the physicalDpiX(),
- the corresponding QPaintEngine must handle the resolution mapping.
-
- \sa logicalDpiY(), physicalDpiX()
-*/
-
-/*!
- \fn int QPaintDevice::logicalDpiY() const
-
- Returns the vertical resolution of the device in dots per inch,
- which is used when computing font sizes. For X11, this is usually
- the same as could be computed from heightMM().
-
- Note that if the logicalDpiY() doesn't equal the physicalDpiY(),
- the corresponding QPaintEngine must handle the resolution mapping.
-
- \sa logicalDpiX(), physicalDpiY()
-*/
-
-/*!
- \fn int QPaintDevice::physicalDpiX() const
-
- Returns the horizontal resolution of the device in dots per inch.
- For example, when printing, this resolution refers to the physical
- printer's resolution. The logical DPI on the other hand, refers to
- the resolution used by the actual paint engine.
-
- Note that if the physicalDpiX() doesn't equal the logicalDpiX(),
- the corresponding QPaintEngine must handle the resolution mapping.
-
- \sa physicalDpiY(), logicalDpiX()
-*/
-
-/*!
- \fn int QPaintDevice::physicalDpiY() const
-
- Returns the horizontal resolution of the device in dots per inch.
- For example, when printing, this resolution refers to the physical
- printer's resolution. The logical DPI on the other hand, refers to
- the resolution used by the actual paint engine.
-
- Note that if the physicalDpiY() doesn't equal the logicalDpiY(),
- the corresponding QPaintEngine must handle the resolution mapping.
-
- \sa physicalDpiX(), logicalDpiY()
-*/
diff --git a/doc/src/classes/qpair.qdoc b/doc/src/classes/qpair.qdoc
deleted file mode 100644
index 9c8ac8998..000000000
--- a/doc/src/classes/qpair.qdoc
+++ /dev/null
@@ -1,229 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class QPair
- \brief The QPair class is a template class that stores a pair of items.
-
- \ingroup tools
-
- QPair\<T1, T2\> can be used in your application if the STL \c
- pair type is not available. It stores one value of type T1 and
- one value of type T2. It can be used as a return value for a
- function that needs to return two values, or as the value type of
- a \l{generic container}.
-
- Here's an example of a QPair that stores one QString and one \c
- double value:
-
- \snippet doc/src/snippets/code/doc_src_qpair.qdoc 0
-
- The components are accessible as public data members called \l
- first and \l second. For example:
-
- \snippet doc/src/snippets/code/doc_src_qpair.qdoc 1
-
- QPair's template data types (T1 and T2) must be \l{assignable
- data types}. You cannot, for example, store a QWidget as a value;
- instead, store a QWidget *. A few functions have additional
- requirements; these requirements are documented on a per-function
- basis.
-
- \sa {Generic Containers}
-*/
-
-/*! \typedef QPair::first_type
-
- The type of the first element in the pair (T1).
-
- \sa first
-*/
-
-/*! \typedef QPair::second_type
-
- The type of the second element in the pair (T2).
-
- \sa second
-*/
-
-/*! \variable QPair::first
-
- The first element in the pair.
-*/
-
-/*! \variable QPair::second
-
- The second element in the pair.
-*/
-
-/*! \fn QPair::QPair()
-
- Constructs an empty pair. The \c first and \c second elements are
- initialized with \l{default-constructed values}.
-*/
-
-/*!
- \fn QPair::QPair(const T1 &value1, const T2 &value2)
-
- Constructs a pair and initializes the \c first element with \a
- value1 and the \c second element with \a value2.
-
- \sa qMakePair()
-*/
-
-/*!
- \fn QPair<T1, T2> &QPair::operator=(const QPair<T1, T2> &other)
-
- Assigns \a other to this pair.
-*/
-
-/*! \fn bool operator==(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
-
- \relates QPair
-
- Returns true if \a p1 is equal to \a p2; otherwise returns false.
- Two pairs compare equal if their \c first data members compare
- equal and if their \c second data members compare equal.
-
- This function requires the T1 and T2 types to have an
- implementation of \c operator==().
-*/
-
-/*! \fn bool operator!=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
-
- \relates QPair
-
- Returns true if \a p1 is not equal to \a p2; otherwise returns
- false. Two pairs compare as not equal if their \c first data
- members are not equal or if their \c second data members are not
- equal.
-
- This function requires the T1 and T2 types to have an
- implementation of \c operator==().
-*/
-
-/*! \fn bool operator<(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
-
- \relates QPair
-
- Returns true if \a p1 is less than \a p2; otherwise returns
- false. The comparison is done on the \c first members of \a p1
- and \a p2; if they compare equal, the \c second members are
- compared to break the tie.
-
- This function requires the T1 and T2 types to have an
- implementation of \c operator<().
-*/
-
-/*! \fn bool operator>(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
-
- \relates QPair
-
- Returns true if \a p1 is greater than \a p2; otherwise returns
- false. The comparison is done on the \c first members of \a p1
- and \a p2; if they compare equal, the \c second members are
- compared to break the tie.
-
- This function requires the T1 and T2 types to have an
- implementation of \c operator<().
-*/
-
-/*! \fn bool operator<=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
-
- \relates QPair
-
- Returns true if \a p1 is less than or equal to \a p2; otherwise
- returns false. The comparison is done on the \c first members of
- \a p1 and \a p2; if they compare equal, the \c second members are
- compared to break the tie.
-
- This function requires the T1 and T2 types to have an
- implementation of \c operator<().
-*/
-
-/*! \fn bool operator>=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
-
- \relates QPair
-
- Returns true if \a p1 is greater than or equal to \a p2;
- otherwise returns false. The comparison is done on the \c first
- members of \a p1 and \a p2; if they compare equal, the \c second
- members are compared to break the tie.
-
- This function requires the T1 and T2 types to have an
- implementation of \c operator<().
-*/
-
-/*!
- \fn QPair<T1, T2> qMakePair(const T1 &value1, const T2 &value2)
-
- \relates QPair
-
- Returns a QPair\<T1, T2\> that contains \a value1 and \a value2.
- Example:
-
- \snippet doc/src/snippets/code/doc_src_qpair.qdoc 2
-
- This is equivalent to QPair<T1, T2>(\a value1, \a value2), but
- usually requires less typing.
-*/
-
-/*! \fn QDataStream &operator>>(QDataStream &in, QPair<T1, T2> &pair)
-
- \relates QPair
-
- Reads a pair from stream \a in into \a pair.
-
- This function requires the T1 and T2 types to implement \c operator>>().
-
- \sa {Format of the QDataStream operators}
-*/
-
-/*! \fn QDataStream &operator<<(QDataStream &out, const QPair<T1, T2> &pair)
-
- \relates QPair
-
- Writes the pair \a pair to stream \a out.
-
- This function requires the T1 and T2 types to implement \c operator<<().
-
- \sa {Format of the QDataStream operators}
-*/
diff --git a/doc/src/classes/qpatternistdummy.cpp b/doc/src/classes/qpatternistdummy.cpp
index 445658174..c867f9125 100644
--- a/doc/src/classes/qpatternistdummy.cpp
+++ b/doc/src/classes/qpatternistdummy.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/classes/qplugin.qdoc b/doc/src/classes/qplugin.qdoc
deleted file mode 100644
index 3b8f1b0d3..000000000
--- a/doc/src/classes/qplugin.qdoc
+++ /dev/null
@@ -1,135 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \headerfile <QtPlugin>
- \title Macros for Defining Plugins
-
- \brief The <QtPlugin> header files defines macros for defining plugins.
-
- \sa {How to Create Qt Plugins}
-*/
-
-/*!
- \macro Q_DECLARE_INTERFACE(ClassName, Identifier)
- \relates <QtPlugin>
-
- This macro associates the given \a Identifier (a string literal)
- to the interface class called \a ClassName. The \a Identifier must
- be unique. For example:
-
- \snippet examples/tools/plugandpaint/interfaces.h 3
-
- This macro is normally used right after the class definition for
- \a ClassName, in a header file. See the
- \l{tools/plugandpaint}{Plug & Paint} example for details.
-
- If you want to use Q_DECLARE_INTERFACE with interface classes
- declared in a namespace then you have to make sure the Q_DECLARE_INTERFACE
- is not inside a namespace though. For example:
- \snippet doc/src/snippets/code/doc_src_qplugin.qdoc 0
-
- \sa Q_INTERFACES(), Q_EXPORT_PLUGIN2(), {How to Create Qt Plugins}
-*/
-
-/*!
- \macro Q_EXPORT_PLUGIN(ClassName)
- \relates <QtPlugin>
- \obsolete
-
- Use Q_EXPORT_PLUGIN2() instead. This macro is equivalent to
- Q_EXPORT_PLUGIN2(\a ClassName, \a ClassName).
-*/
-
-/*!
- \macro Q_EXPORT_PLUGIN2(PluginName, ClassName)
- \relates <QtPlugin>
- \since 4.1
- \keyword Q_EXPORT_PLUGIN2
-
- This macro exports the plugin class \a ClassName for the plugin specified
- by \a PluginName. The value of \a PluginName should correspond to the
- \l{qmake Variable Reference#TARGET}{TARGET} specified in the plugin's
- project file.
-
- There should be exactly one occurrence of this macro in the source code
- for a Qt plugin, and it should be used where the implementation is written
- rather than in a header file.
-
- Example:
-
- \snippet doc/src/snippets/code/doc_src_qplugin.qdoc 1
-
- See the \l{tools/plugandpaint}{Plug & Paint} example for details.
-
- \sa Q_DECLARE_INTERFACE(), {How to Create Qt Plugins}
-*/
-
-/*!
- \macro Q_IMPORT_PLUGIN(PluginName)
- \relates <QtPlugin>
-
- This macro imports the plugin named \a PluginName, corresponding
- to the \l{qmake Variable Reference#TARGET}{TARGET} specified in the
- plugin's project file.
-
- Inserting this macro into your application's source code will allow
- you to make use of a static plugin.
-
- Example:
-
- \snippet doc/src/snippets/code/doc_src_qplugin.qdoc 2
-
- Static plugins must also be included by the linker when your
- application is built. For Qt's predefined plugins,
- you can use the \c QTPLUGIN to add
- the required plugins to your build. For example:
-
- \snippet doc/src/snippets/code/doc_src_qplugin.qdoc 3
-
- \sa {Static Plugins}, {How to Create Qt Plugins}, {Using qmake}
-*/
-
-/*!
- \macro Q_EXPORT_STATIC_PLUGIN(ClassName)
- \relates <QtPlugin>
- \internal
-*/
diff --git a/doc/src/classes/qprintdialog.qdoc b/doc/src/classes/qprintdialog.qdoc
deleted file mode 100644
index b52edff50..000000000
--- a/doc/src/classes/qprintdialog.qdoc
+++ /dev/null
@@ -1,72 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifdef QT3_SUPPORT
-/*!
- \fn QPrinter *QPrintDialog::printer() const
-
- Returns a pointer to the printer this dialog configures, or 0 if
- this dialog does not operate on any printer.
-
- This function is available for Unix platforms only.
-*/
-
-/*!
- \fn void QPrintDialog::setPrinter(QPrinter *printer, bool pickupSettings)
-
- Sets this dialog to configure printer \a printer, or no printer if \a printer
- is null. If \a pickupSettings is true, the dialog reads most of
- its settings from \a printer. If \a pickupSettings is false (the
- default) the dialog keeps its old settings.
-
- This function is available for Unix platforms only.
-*/
-
-/*!
- \fn void QPrintDialog::addButton(QPushButton *button)
-
- Adds the \a button to the layout of the print dialog. The added
- buttons are arranged from the left to the right below the
- last groupbox of the printdialog.
-
- This function is available for Unix platforms only.
-*/
-#endif
diff --git a/doc/src/classes/qprinterinfo.qdoc b/doc/src/classes/qprinterinfo.qdoc
deleted file mode 100644
index 7507e8a5d..000000000
--- a/doc/src/classes/qprinterinfo.qdoc
+++ /dev/null
@@ -1,137 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class QPrinterInfo
-
- \brief The QPrinterInfo class gives access to information about
- existing printers.
-
- Use the static functions to generate a list of QPrinterInfo
- objects. Each QPrinterInfo object in the list represents a single
- printer and can be queried for name, supported paper sizes, and
- whether or not it is the default printer.
-
- \since 4.4
-*/
-
-/*!
- \fn QList<QPrinterInfo> QPrinterInfo::availablePrinters()
-
- Returns a list of available printers on the system.
-*/
-
-/*!
- \fn QPrinterInfo QPrinterInfo::defaultPrinter()
-
- Returns the default printer on the system.
-
- The return value should be checked using isNull() before being
- used, in case there is no default printer.
-
- \sa isNull()
-*/
-
-/*!
- \fn QPrinterInfo::QPrinterInfo()
-
- Constructs an empty QPrinterInfo object.
-
- \sa isNull()
-*/
-
-/*!
- \fn QPrinterInfo::QPrinterInfo(const QPrinterInfo& src)
-
- Constructs a copy of \a src.
-*/
-
-/*!
- \fn QPrinterInfo::QPrinterInfo(const QPrinter& printer)
-
- Constructs a QPrinterInfo object from \a printer.
-*/
-
-/*!
- \fn QPrinterInfo::~QPrinterInfo()
-
- Destroys the QPrinterInfo object. References to the values in the
- object become invalid.
-*/
-
-/*!
- \fn QPrinterInfo& QPrinterInfo::operator=(const QPrinterInfo& src)
-
- Sets the QPrinterInfo object to be equal to \a src.
-*/
-
-/*!
- \fn QString QPrinterInfo::printerName() const
-
- Returns the name of the printer.
-
- \sa QPrinter::setPrinterName()
-*/
-
-/*!
- \fn bool QPrinterInfo::isNull() const
-
- Returns whether this QPrinterInfo object holds a printer definition.
-
- An empty QPrinterInfo object could result for example from calling
- defaultPrinter() when there are no printers on the system.
-*/
-
-/*!
- \fn bool QPrinterInfo::isDefault() const
-
- Returns whether this printer is the default printer.
-*/
-
-/*!
- \fn QList< QPrinter::PaperSize> QPrinterInfo::supportedPaperSizes() const
- \since 4.4
-
- Returns a list of supported paper sizes by the printer.
-
- Not all printer drivers support this query, so the list may be empty.
- On Mac OS X 10.3, this function always returns an empty list.
-*/
diff --git a/doc/src/classes/qset.qdoc b/doc/src/classes/qset.qdoc
deleted file mode 100644
index 8409e13e4..000000000
--- a/doc/src/classes/qset.qdoc
+++ /dev/null
@@ -1,953 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class QSet
- \brief The QSet class is a template class that provides a hash-table-based set.
-
- \ingroup tools
- \ingroup shared
- \reentrant
- \mainclass
-
- QSet<T> is one of Qt's generic \l{container classes}. It stores
- values in an unspecified order and provides very fast lookup of
- the values. Internally, QSet<T> is implemented as a QHash.
-
- Here's an example QSet with QString values:
-
- \snippet doc/src/snippets/code/doc_src_qset.qdoc 0
-
- To insert a value into the set, use insert():
-
- \snippet doc/src/snippets/code/doc_src_qset.qdoc 1
-
- Another way to insert items into the set is to use operator<<():
-
- \snippet doc/src/snippets/code/doc_src_qset.qdoc 2
-
- To test whether an item belongs to the set or not, use contains():
-
- \snippet doc/src/snippets/code/doc_src_qset.qdoc 3
-
- If you want to navigate through all the values stored in a QSet,
- you can use an iterator. QSet supports both \l{Java-style
- iterators} (QSetIterator and QMutableSetIterator) and \l{STL-style
- iterators} (QSet::iterator and QSet::const_iterator). Here's how
- to iterate over a QSet<QWidget *> using a Java-style iterator:
-
- \snippet doc/src/snippets/code/doc_src_qset.qdoc 4
-
- Here's the same code, but using an STL-style iterator:
-
- \snippet doc/src/snippets/code/doc_src_qset.qdoc 5
-
- QSet is unordered, so an iterator's sequence cannot be assumed to
- be predictable. If ordering by key is required, use a QMap.
-
- To navigate through a QSet, you can also use \l{foreach}:
-
- \snippet doc/src/snippets/code/doc_src_qset.qdoc 6
-
- Items can be removed from the set using remove(). There is also a
- clear() function that removes all items.
-
- QSet's value data type must be an \l{assignable data type}. You
- cannot, for example, store a QWidget as a value; instead, store a
- QWidget *. In addition, the type must provide \c operator==(), and
- there must also be a global qHash() function that returns a hash
- value for an argument of the key's type. See the QHash
- documentation for a list of types supported by qHash().
-
- Internally, QSet uses a hash table to perform lookups. The hash
- table automatically grows and shrinks to provide fast lookups
- without wasting memory. You can still control the size of the hash
- table by calling reserve(), if you already know approximately how
- many elements the QSet will contain, but this isn't necessary to
- obtain good performance. You can also call capacity() to retrieve
- the hash table's size.
-
- \sa QSetIterator, QMutableSetIterator, QHash, QMap
-*/
-
-/*!
- \fn QSet::QSet()
-
- Constructs an empty set.
-
- \sa clear()
-*/
-
-/*!
- \fn QSet::QSet(const QSet<T> &other)
-
- Constructs a copy of \a other.
-
- This operation occurs in \l{constant time}, because QSet is
- \l{implicitly shared}. This makes returning a QSet from a
- function very fast. If a shared instance is modified, it will be
- copied (copy-on-write), and this takes \l{linear time}.
-
- \sa operator=()
-*/
-
-/*!
- \fn QSet<T> &QSet::operator=(const QSet<T> &other)
-
- Assigns the \a other set to this set and returns a reference to
- this set.
-*/
-
-/*!
- \fn bool QSet::operator==(const QSet<T> &other) const
-
- Returns true if the \a other set is equal to this set; otherwise
- returns false.
-
- Two sets are considered equal if they contain the same elements.
-
- This function requires the value type to implement \c operator==().
-
- \sa operator!=()
-*/
-
-/*!
- \fn bool QSet::operator!=(const QSet<T> &other) const
-
- Returns true if the \a other set is not equal to this set; otherwise
- returns false.
-
- Two sets are considered equal if they contain the same elements.
-
- This function requires the value type to implement \c operator==().
-
- \sa operator==()
-*/
-
-/*!
- \fn int QSet::size() const
-
- Returns the number of items in the set.
-
- \sa isEmpty(), count()
-*/
-
-/*!
- \fn bool QSet::isEmpty() const
-
- Returns true if the set contains no elements; otherwise returns
- false.
-
- \sa size()
-*/
-
-/*!
- \fn int QSet::capacity() const
-
- Returns the number of buckets in the set's internal hash
- table.
-
- The sole purpose of this function is to provide a means of fine
- tuning QSet's memory usage. In general, you will rarely ever need
- to call this function. If you want to know how many items are in
- the set, call size().
-
- \sa reserve(), squeeze()
-*/
-
-/*! \fn void QSet::reserve(int size)
-
- Ensures that the set's internal hash table consists of at
- least \a size buckets.
-
- This function is useful for code that needs to build a huge set
- and wants to avoid repeated reallocation. For example:
-
- \snippet doc/src/snippets/code/doc_src_qset.qdoc 7
-
- Ideally, \a size should be slightly more than the maximum number
- of elements expected in the set. \a size doesn't have to be prime,
- because QSet will use a prime number internally anyway. If \a size
- is an underestimate, the worst that will happen is that the QSet
- will be a bit slower.
-
- In general, you will rarely ever need to call this function.
- QSet's internal hash table automatically shrinks or grows to
- provide good performance without wasting too much memory.
-
- \sa squeeze(), capacity()
-*/
-
-/*!
- \fn void QSet::squeeze()
-
- Reduces the size of the set's internal hash table to save
- memory.
-
- The sole purpose of this function is to provide a means of fine
- tuning QSet's memory usage. In general, you will rarely ever
- need to call this function.
-
- \sa reserve(), capacity()
-*/
-
-/*!
- \fn void QSet::detach()
-
- \internal
-
- Detaches this set from any other sets with which it may share
- data.
-
- \sa isDetached()
-*/
-
-/*! \fn bool QSet::isDetached() const
-
- \internal
-
- Returns true if the set's internal data isn't shared with any
- other set object; otherwise returns false.
-
- \sa detach()
-*/
-
-/*!
- \fn void QSet::setSharable(bool sharable)
- \internal
-*/
-
-/*!
- \fn void QSet::clear()
-
- Removes all elements from the set.
-
- \sa remove()
-*/
-
-/*!
- \fn bool QSet::remove(const T &value)
-
- Removes any occurrence of item \a value from the set. Returns
- true if an item was actually removed; otherwise returns false.
-
- \sa contains(), insert()
-*/
-
-/*!
- \fn QSet::iterator QSet::erase(iterator pos)
- \since 4.2
-
- Removes the item at the iterator position \a pos from the set, and
- returns an iterator positioned at the next item in the set.
-
- Unlike remove(), this function never causes QSet to rehash its
- internal data structure. This means that it can safely be called
- while iterating, and won't affect the order of items in the set.
-
- \sa remove(), find()
-*/
-
-/*! \fn QSet::const_iterator QSet::find(const T &value) const
- \since 4.2
-
- Returns a const iterator positioned at the item \a value in the
- set. If the set contains no item \a value, the function returns
- constEnd().
-
- \sa constFind(), contains()
-*/
-
-/*! \fn QSet::iterator QSet::find(const T &value)
- \since 4.2
- \overload
-
- Returns a non-const iterator positioned at the item \a value in
- the set. If the set contains no item \a value, the function
- returns end().
-*/
-
-/*! \fn QSet::const_iterator QSet::constFind(const T &value) const
- \since 4.2
-
- Returns a const iterator positioned at the item \a value in the
- set. If the set contains no item \a value, the function returns
- constEnd().
-
- \sa find(), contains()
-*/
-
-/*!
- \fn bool QSet::contains(const T &value) const
-
- Returns true if the set contains item \a value; otherwise returns
- false.
-
- \sa insert(), remove(), find()
-*/
-
-/*!
- \fn bool QSet::contains(const QSet<T> &other) const
- \since 4.6
-
- Returns true if the set contains all items from the \a other set;
- otherwise returns false.
-
- \sa insert(), remove(), find()
-*/
-
-/*! \fn QSet::const_iterator QSet::begin() const
-
- Returns a const \l{STL-style iterator} positioned at the first
- item in the set.
-
- \sa constBegin(), end()
-*/
-
-/*! \fn QSet::iterator QSet::begin()
- \since 4.2
- \overload
-
- Returns a non-const \l{STL-style iterator} positioned at the first
- item in the set.
-*/
-
-/*! \fn QSet::const_iterator QSet::constBegin() const
-
- Returns a const \l{STL-style iterator} positioned at the first
- item in the set.
-
- \sa begin(), constEnd()
-*/
-
-/*! \fn QSet::const_iterator QSet::end() const
-
- Returns a const \l{STL-style iterator} positioned at the imaginary
- item after the last item in the set.
-
- \sa constEnd(), begin()
-*/
-
-/*! \fn QSet::iterator QSet::end()
- \since 4.2
- \overload
-
- Returns a non-const \l{STL-style iterator} pointing to the
- imaginary item after the last item in the set.
-*/
-
-/*! \fn QSet::const_iterator QSet::constEnd() const
-
- Returns a const \l{STL-style iterator} pointing to the imaginary
- item after the last item in the set.
-
- \sa constBegin(), end()
-*/
-
-/*!
- \typedef QSet::Iterator
- \since 4.2
-
- Qt-style synonym for QSet::iterator.
-*/
-
-/*!
- \typedef QSet::ConstIterator
-
- Qt-style synonym for QSet::const_iterator.
-*/
-
-/*!
- \typedef QSet::const_pointer
-
- Typedef for const T *. Provided for STL compatibility.
-*/
-
-/*!
- \typedef QSet::const_reference
-
- Typedef for const T &. Provided for STL compatibility.
-*/
-
-/*!
- \typedef QSet::difference_type
-
- Typedef for const ptrdiff_t. Provided for STL compatibility.
-*/
-
-/*!
- \typedef QSet::key_type
-
- Typedef for T. Provided for STL compatibility.
-*/
-
-/*!
- \typedef QSet::pointer
-
- Typedef for T *. Provided for STL compatibility.
-*/
-
-/*!
- \typedef QSet::reference
-
- Typedef for T &. Provided for STL compatibility.
-*/
-
-/*!
- \typedef QSet::size_type
-
- Typedef for int. Provided for STL compatibility.
-*/
-
-/*!
- \typedef QSet::value_type
-
- Typedef for T. Provided for STL compatibility.
-*/
-
-/*!
- \fn QSet::const_iterator QSet::insert(const T &value)
-
- Inserts item \a value into the set, if \a value isn't already
- in the set, and returns an iterator pointing at the inserted
- item.
-
- \sa operator<<(), remove(), contains()
-*/
-
-/*!
- \fn QSet<T> &QSet::unite(const QSet<T> &other)
-
- Each item in the \a other set that isn't already in this set is
- inserted into this set. A reference to this set is returned.
-
- \sa operator|=(), intersect(), subtract()
-*/
-
-/*!
- \fn QSet<T> &QSet::intersect(const QSet<T> &other)
-
- Removes all items from this set that are not contained in the
- \a other set. A reference to this set is returned.
-
- \sa operator&=(), unite(), subtract()
-*/
-
-/*!
- \fn QSet<T> &QSet::subtract(const QSet<T> &other)
-
- Removes all items from this set that are contained in the
- \a other set. Returns a reference to this set.
-
- \sa operator-=(), unite(), intersect()
-*/
-
-/*!
- \fn bool QSet::empty() const
-
- Returns true if the set is empty. This function is provided
- for STL compatibility. It is equivalent to isEmpty().
-*/
-
-/*!
- \fn bool QSet::count() const
-
- Same as size().
-*/
-
-/*!
- \fn QSet<T> &QSet::operator<<(const T &value)
- \fn QSet<T> &QSet::operator+=(const T &value)
- \fn QSet<T> &QSet::operator|=(const T &value)
-
- Inserts a new item \a value and returns a reference to the set.
- If \a value already exists in the set, the set is left unchanged.
-
- \sa insert()
-*/
-
-/*!
- \fn QSet<T> &QSet::operator-=(const T &value)
-
- Removes the occurrence of item \a value from the set, if
- it is found, and returns a reference to the set. If the
- \a value is not contained the set, nothing is removed.
-
- \sa remove()
-*/
-
-/*!
- \fn QSet<T> &QSet::operator|=(const QSet<T> &other)
- \fn QSet<T> &QSet::operator+=(const QSet<T> &other)
-
- Same as unite(\a other).
-
- \sa operator|(), operator&=(), operator-=()
-*/
-
-/*!
- \fn QSet<T> &QSet::operator&=(const QSet<T> &other)
-
- Same as intersect(\a other).
-
- \sa operator&(), operator|=(), operator-=()
-*/
-
-/*!
- \fn QSet<T> &QSet::operator&=(const T &value)
-
- \overload
-
- Same as intersect(\e{other}), if we consider \e{other} to be a set
- that contains the singleton \a value.
-*/
-
-
-/*!
- \fn QSet<T> &QSet::operator-=(const QSet<T> &other)
-
- Same as subtract(\a{other}).
-
- \sa operator-(), operator|=(), operator&=()
-*/
-
-/*!
- \fn QSet<T> QSet::operator|(const QSet<T> &other) const
- \fn QSet<T> QSet::operator+(const QSet<T> &other) const
-
- Returns a new QSet that is the union of this set and the
- \a other set.
-
- \sa unite(), operator|=(), operator&(), operator-()
-*/
-
-/*!
- \fn QSet<T> QSet::operator&(const QSet<T> &other) const
-
- Returns a new QSet that is the intersection of this set and the
- \a other set.
-
- \sa intersect(), operator&=(), operator|(), operator-()
-*/
-
-/*!
- \fn QSet<T> QSet::operator-(const QSet<T> &other) const
-
- Returns a new QSet that is the set difference of this set and
- the \a other set, i.e., this set - \a other set.
-
- \sa subtract(), operator-=(), operator|(), operator&()
-*/
-
-/*!
- \fn QSet<T> QSet::operator-(const QSet<T> &other)
- \fn QSet<T> QSet::operator|(const QSet<T> &other)
- \fn QSet<T> QSet::operator+(const QSet<T> &other)
- \fn QSet<T> QSet::operator&(const QSet<T> &other)
- \internal
-
- These will go away in Qt 5.
-*/
-
-/*!
- \class QSet::iterator
- \since 4.2
- \brief The QSet::iterator class provides an STL-style non-const iterator for QSet.
-
- QSet features both \l{STL-style iterators} and
- \l{Java-style iterators}. The STL-style iterators are more
- low-level and more cumbersome to use; on the other hand, they are
- slightly faster and, for developers who already know STL, have
- the advantage of familiarity.
-
- QSet<T>::iterator allows you to iterate over a QSet and to remove
- items (using QSet::erase()) while you iterate. (QSet doesn't let
- you \e modify a value through an iterator, because that
- would potentially require moving the value in the internal hash
- table used by QSet.) If you want to iterate over a const QSet,
- you should use QSet::const_iterator. It is generally good
- practice to use QSet::const_iterator on a non-const QSet as well,
- unless you need to change the QSet through the iterator. Const
- iterators are slightly faster, and can improve code readability.
-
- QSet\<T\>::iterator allows you to iterate over a QSet\<T\> and
- modify it as you go (using QSet::erase()). However,
-
- The default QSet::iterator constructor creates an uninitialized
- iterator. You must initialize it using a function like
- QSet::begin(), QSet::end(), or QSet::insert() before you can
- start iterating. Here's a typical loop that prints all the items
- stored in a set:
-
- \snippet doc/src/snippets/code/doc_src_qset.qdoc 8
-
- Here's a loop that removes certain items (all those that start
- with 'J') from a set while iterating:
-
- \snippet doc/src/snippets/code/doc_src_qset.qdoc 9
-
- STL-style iterators can be used as arguments to \l{generic
- algorithms}. For example, here's how to find an item in the set
- using the qFind() algorithm:
-
- \snippet doc/src/snippets/code/doc_src_qset.qdoc 10
-
- Multiple iterators can be used on the same set. However, you may
- not attempt to modify the container while iterating on it.
-
- \sa QSet::const_iterator, QMutableSetIterator
-*/
-
-/*!
- \class QSet::const_iterator
- \brief The QSet::const_iterator class provides an STL-style const iterator for QSet.
- \since 4.2
-
- QSet features both \l{STL-style iterators} and
- \l{Java-style iterators}. The STL-style iterators are more
- low-level and more cumbersome to use; on the other hand, they are
- slightly faster and, for developers who already know STL, have
- the advantage of familiarity.
-
- QSet\<Key, T\>::const_iterator allows you to iterate over a QSet.
- If you want to modify the QSet as you iterate over it, you must
- use QSet::iterator instead. It is generally good practice to use
- QSet::const_iterator on a non-const QSet as well, unless you need
- to change the QSet through the iterator. Const iterators are
- slightly faster, and can improve code readability.
-
- The default QSet::const_iterator constructor creates an
- uninitialized iterator. You must initialize it using a function
- like QSet::begin(), QSet::end(), or QSet::insert() before you can
- start iterating. Here's a typical loop that prints all the items
- stored in a set:
-
- \snippet doc/src/snippets/code/doc_src_qset.qdoc 11
-
- STL-style iterators can be used as arguments to \l{generic
- algorithms}. For example, here's how to find an item in the set
- using the qFind() algorithm:
-
- \snippet doc/src/snippets/code/doc_src_qset.qdoc 12
-
- Multiple iterators can be used on the same set. However, you may
- not attempt to modify the container while iterating on it.
-
- \sa QSet::iterator, QSetIterator
-*/
-
-/*!
- \fn QSet::iterator::iterator()
- \fn QSet::const_iterator::const_iterator()
-
- Constructs an uninitialized iterator.
-
- Functions like operator*() and operator++() should not be called
- on an uninitialized iterator. Use operator=() to assign a value
- to it before using it.
-
- \sa QSet::begin(), QSet::end()
-*/
-
-/*!
- \fn QSet::iterator::iterator(typename Hash::iterator i)
- \fn QSet::const_iterator::const_iterator(typename Hash::const_iterator i)
-
- \internal
-*/
-
-/*!
- \typedef QSet::iterator::iterator_category
- \typedef QSet::const_iterator::iterator_category
-
- Synonyms for \e {std::bidirectional_iterator_tag} indicating
- these iterators are bidirectional iterators.
- */
-
-/*!
- \typedef QSet::iterator::difference_type
- \typedef QSet::const_iterator::difference_type
-
- \internal
-*/
-
-/*!
- \typedef QSet::iterator::value_type
- \typedef QSet::const_iterator::value_type
-
- \internal
-*/
-
-/*!
- \typedef QSet::iterator::pointer
- \typedef QSet::const_iterator::pointer
-
- \internal
-*/
-
-/*!
- \typedef QSet::iterator::reference
- \typedef QSet::const_iterator::reference
-
- \internal
-*/
-
-/*!
- \fn QSet::iterator::iterator(const iterator &other)
- \fn QSet::const_iterator::const_iterator(const const_iterator &other)
-
- Constructs a copy of \a other.
-*/
-
-/*!
- \fn QSet::const_iterator::const_iterator(const iterator &other)
- \since 4.2
- \overload
-
- Constructs a copy of \a other.
-*/
-
-/*!
- \fn QSet::iterator &QSet::iterator::operator=(const iterator &other)
- \fn QSet::const_iterator &QSet::const_iterator::operator=(const const_iterator &other)
-
- Assigns \a other to this iterator.
-*/
-
-/*!
- \fn const T &QSet::iterator::operator*() const
- \fn const T &QSet::const_iterator::operator*() const
-
- Returns a reference to the current item.
-
- \sa operator->()
-*/
-
-/*!
- \fn const T *QSet::iterator::operator->() const
- \fn const T *QSet::const_iterator::operator->() const
-
- Returns a pointer to the current item.
-
- \sa operator*()
-*/
-
-/*!
- \fn bool QSet::iterator::operator==(const iterator &other) const
- \fn bool QSet::const_iterator::operator==(const const_iterator &other) const
-
- Returns true if \a other points to the same item as this
- iterator; otherwise returns false.
-
- \sa operator!=()
-*/
-
-/*!
- \fn bool QSet::iterator::operator==(const const_iterator &other) const
- \fn bool QSet::iterator::operator!=(const const_iterator &other) const
-
- \overload
-*/
-
-/*!
- \fn bool QSet::iterator::operator!=(const iterator &other) const
- \fn bool QSet::const_iterator::operator!=(const const_iterator &other) const
-
- Returns true if \a other points to a different item than this
- iterator; otherwise returns false.
-
- \sa operator==()
-*/
-
-/*!
- \fn QSet::iterator &QSet::iterator::operator++()
- \fn QSet::const_iterator &QSet::const_iterator::operator++()
-
- The prefix ++ operator (\c{++it}) advances the iterator to the
- next item in the set and returns an iterator to the new current
- item.
-
- Calling this function on QSet::constEnd() leads to
- undefined results.
-
- \sa operator--()
-*/
-
-/*!
- \fn QSet::iterator QSet::iterator::operator++(int)
- \fn QSet::const_iterator QSet::const_iterator::operator++(int)
-
- \overload
-
- The postfix ++ operator (\c{it++}) advances the iterator to the
- next item in the set and returns an iterator to the previously
- current item.
-*/
-
-/*!
- \fn QSet::iterator &QSet::iterator::operator--()
- \fn QSet::const_iterator &QSet::const_iterator::operator--()
-
- The prefix -- operator (\c{--it}) makes the preceding item
- current and returns an iterator to the new current item.
-
- Calling this function on QSet::begin() leads to undefined
- results.
-
- \sa operator++()
-*/
-
-/*!
- \fn QSet::iterator QSet::iterator::operator--(int)
- \fn QSet::const_iterator QSet::const_iterator::operator--(int)
-
- \overload
-
- The postfix -- operator (\c{it--}) makes the preceding item
- current and returns an iterator to the previously current item.
-*/
-
-/*!
- \fn QSet::iterator QSet::iterator::operator+(int j) const
- \fn QSet::const_iterator QSet::const_iterator::operator+(int j) const
-
- Returns an iterator to the item at \a j positions forward from
- this iterator. (If \a j is negative, the iterator goes backward.)
-
- This operation can be slow for large \a j values.
-
- \sa operator-()
-*/
-
-/*!
- \fn QSet::iterator QSet::iterator::operator-(int j) const
- \fn QSet::const_iterator QSet::const_iterator::operator-(int j) const
-
- Returns an iterator to the item at \a j positions backward from
- this iterator. (If \a j is negative, the iterator goes forward.)
-
- This operation can be slow for large \a j values.
-
- \sa operator+()
-*/
-
-/*!
- \fn QSet::iterator &QSet::iterator::operator+=(int j)
- \fn QSet::const_iterator &QSet::const_iterator::operator+=(int j)
-
- Advances the iterator by \a j items. (If \a j is negative, the
- iterator goes backward.)
-
- This operation can be slow for large \a j values.
-
- \sa operator-=(), operator+()
-*/
-
-/*!
- \fn QSet::iterator &QSet::iterator::operator-=(int j)
- \fn QSet::const_iterator &QSet::const_iterator::operator-=(int j)
-
- Makes the iterator go back by \a j items. (If \a j is negative,
- the iterator goes forward.)
-
- This operation can be slow for large \a j values.
-
- \sa operator+=(), operator-()
-*/
-
-/*! \fn QList<T> QSet<T>::toList() const
-
- Returns a new QList containing the elements in the set. The
- order of the elements in the QList is undefined.
-
- Example:
-
- \snippet doc/src/snippets/code/doc_src_qset.qdoc 13
-
- \sa fromList(), QList::fromSet(), qSort()
-*/
-
-/*! \fn QList<T> QSet<T>::values() const
-
- Returns a new QList containing the elements in the set. The
- order of the elements in the QList is undefined.
-
- This is the same as toList().
-
- \sa fromList(), QList::fromSet(), qSort()
-*/
-
-
-/*! \fn QSet<T> QSet<T>::fromList(const QList<T> &list)
-
- Returns a new QSet object containing the data contained in \a
- list. Since QSet doesn't allow duplicates, the resulting QSet
- might be smaller than the \a list, because QList can contain
- duplicates.
-
- Example:
-
- \snippet doc/src/snippets/code/doc_src_qset.qdoc 14
-
- \sa toList(), QList::toSet()
-*/
-
-/*!
- \fn QDataStream &operator<<(QDataStream &out, const QSet<T> &set)
- \relates QSet
-
- Writes the \a set to stream \a out.
-
- This function requires the value type to implement \c operator<<().
-
- \sa \link datastreamformat.html Format of the QDataStream operators \endlink
-*/
-
-/*!
- \fn QDataStream &operator>>(QDataStream &in, QSet<T> &set)
- \relates QSet
-
- Reads a set from stream \a in into \a set.
-
- This function requires the value type to implement \c operator>>().
-
- \sa \link datastreamformat.html Format of the QDataStream operators \endlink
-*/
diff --git a/doc/src/classes/qsignalspy.qdoc b/doc/src/classes/qsignalspy.qdoc
deleted file mode 100644
index 02cb77151..000000000
--- a/doc/src/classes/qsignalspy.qdoc
+++ /dev/null
@@ -1,98 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class QSignalSpy
- \inmodule QtTest
-
- \brief The QSignalSpy class enables introspection of signal emission.
-
- QSignalSpy can connect to any signal of any object and records its emission.
- QSignalSpy itself is a list of QVariant lists. Each emission of the signal
- will append one item to the list, containing the arguments of the signal.
-
- The following example records all signal emissions for the \c clicked() signal
- of a QCheckBox:
-
- \snippet doc/src/snippets/code/doc_src_qsignalspy.qdoc 0
-
- \c{spy.takeFirst()} returns the arguments for the first emitted signal, as a
- list of QVariant objects. The \c clicked() signal has a single bool argument,
- which is stored as the first entry in the list of arguments.
-
- The example below catches a signal from a custom object:
-
- \snippet doc/src/snippets/code/doc_src_qsignalspy.qdoc 1
-
- \bold {Note:} Non-standard data types need to be registered, using
- the qRegisterMetaType() function, before you can create a
- QSignalSpy. For example:
-
- \snippet doc/src/snippets/code/doc_src_qsignalspy.qdoc 2
-
- To retrieve the \c QModelIndex, you can use qvariant_cast:
-
- \snippet doc/src/snippets/code/doc_src_qsignalspy.qdoc 3
- */
-
-/*! \fn QSignalSpy::QSignalSpy(QObject *object, const char *signal)
-
- Constructs a new QSignalSpy that listens for emissions of the \a signal
- from the QObject \a object. Neither \a signal nor \a object can be null.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qsignalspy.qdoc 4
-*/
-
-/*! \fn QSignalSpy::isValid() const
-
- Returns true if the signal spy listens to a valid signal, otherwise false.
-*/
-
-/*! \fn QSignalSpy::signal() const
-
- Returns the normalized signal the spy is currently listening to.
-*/
-
-/*! \fn int QSignalSpy::qt_metacall(QMetaObject::Call call, int id, void **a)
- \internal
-*/
-
diff --git a/doc/src/classes/qsizepolicy.qdoc b/doc/src/classes/qsizepolicy.qdoc
deleted file mode 100644
index f7366c591..000000000
--- a/doc/src/classes/qsizepolicy.qdoc
+++ /dev/null
@@ -1,522 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class QSizePolicy
- \brief The QSizePolicy class is a layout attribute describing horizontal
- and vertical resizing policy.
-
- \ingroup appearance
- \ingroup geomanagement
-
- The size policy of a widget is an expression of its willingness to
- be resized in various ways, and affects how the widget is treated
- by the \l{Layout Management}{layout engine}. Each widget returns a
- QSizePolicy that describes the horizontal and vertical resizing
- policy it prefers when being laid out. You can change this for
- a specific widget by changing its QWidget::sizePolicy property.
-
- QSizePolicy contains two independent QSizePolicy::Policy values
- and two stretch factors; one describes the widgets's horizontal
- size policy, and the other describes its vertical size policy. It
- also contains a flag to indicate whether the height and width of
- its preferred size are related.
-
- The horizontal and vertical policies can be set in the
- constructor, and altered using the setHorizontalPolicy() and
- setVerticalPolicy() functions. The stretch factors can be set
- using the setHorizontalStretch() and setVerticalStretch()
- functions. The flag indicating whether the widget's
- \l{QWidget::sizeHint()}{sizeHint()} is width-dependent (such as a
- menu bar or a word-wrapping label) can be set using the
- setHeightForWidth() function.
-
- The current size policies and stretch factors be retrieved using
- the horizontalPolicy(), verticalPolicy(), horizontalStretch() and
- verticalStretch() functions. Alternatively, use the transpose()
- function to swap the horizontal and vertical policies and
- stretches. The hasHeightForWidth() function returns the current
- status of the flag indicating the size hint dependencies.
-
- Use the expandingDirections() function to determine whether the
- associated widget can make use of more space than its
- \l{QWidget::sizeHint()}{sizeHint()} function indicates, as well as
- find out in which directions it can expand.
-
- Finally, the QSizePolicy class provides operators comparing this
- size policy to a given policy, as well as a QVariant operator
- storing this QSizePolicy as a QVariant object.
-
- \sa QSize, QWidget::sizeHint(), QWidget::sizePolicy,
- QLayoutItem::sizeHint()
-*/
-
-/*!
- \enum QSizePolicy::PolicyFlag
-
- These flags are combined together to form the various \l{Policy}
- values:
-
- \value GrowFlag The widget can grow beyond its size hint if necessary.
- \value ExpandFlag The widget should get as much space as possible.
- \value ShrinkFlag The widget can shrink below its size hint if necessary.
- \value IgnoreFlag The widget's size hint is ignored. The widget will get
- as much space as possible.
-
- \sa Policy
-*/
-
-/*!
- \enum QSizePolicy::Policy
-
- This enum describes the various per-dimension sizing types used
- when constructing a QSizePolicy.
-
- \value Fixed The QWidget::sizeHint() is the only acceptable
- alternative, so the widget can never grow or shrink (e.g. the
- vertical direction of a push button).
-
- \value Minimum The sizeHint() is minimal, and sufficient. The
- widget can be expanded, but there is no advantage to it being
- larger (e.g. the horizontal direction of a push button).
- It cannot be smaller than the size provided by sizeHint().
-
- \value Maximum The sizeHint() is a maximum. The widget can be
- shrunk any amount without detriment if other widgets need the
- space (e.g. a separator line).
- It cannot be larger than the size provided by sizeHint().
-
- \value Preferred The sizeHint() is best, but the widget can be
- shrunk and still be useful. The widget can be expanded, but there
- is no advantage to it being larger than sizeHint() (the default
- QWidget policy).
-
- \value Expanding The sizeHint() is a sensible size, but the
- widget can be shrunk and still be useful. The widget can make use
- of extra space, so it should get as much space as possible (e.g.
- the horizontal direction of a horizontal slider).
-
- \value MinimumExpanding The sizeHint() is minimal, and sufficient.
- The widget can make use of extra space, so it should get as much
- space as possible (e.g. the horizontal direction of a horizontal
- slider).
-
- \value Ignored The sizeHint() is ignored. The widget will get as
- much space as possible.
-
- \sa PolicyFlag, setHorizontalPolicy(), setVerticalPolicy()
-*/
-
-/*!
- \fn QSizePolicy::QSizePolicy()
-
- Constructs a QSizePolicy object with \l Fixed as its horizontal
- and vertical policies.
-
- The policies can be altered using the setHorizontalPolicy() and
- setVerticalPolicy() functions. Use the setHeightForWidth()
- function if the preferred height of the widget is dependent on the
- width of the widget (for example, a QLabel with line wrapping).
-
- \sa setHorizontalStretch(), setVerticalStretch()
-*/
-
-/*!
- \fn QSizePolicy::QSizePolicy(Policy horizontal, Policy vertical)
-
- Constructs a QSizePolicy object with the given \a horizontal and
- \a vertical policies, and DefaultType as the control type.
-
- Use setHeightForWidth() if the preferred height of the widget is
- dependent on the width of the widget (for example, a QLabel with
- line wrapping).
-
- \sa setHorizontalStretch(), setVerticalStretch()
-*/
-
-/*!
- \fn QSizePolicy::QSizePolicy(Policy horizontal, Policy vertical, ControlType type)
- \since 4.3
-
- Constructs a QSizePolicy object with the given \a horizontal and
- \a vertical policies, and the specified control \a type.
-
- Use setHeightForWidth() if the preferred height of the widget is
- dependent on the width of the widget (for example, a QLabel with
- line wrapping).
-
- \sa setHorizontalStretch(), setVerticalStretch(), controlType()
-*/
-
-/*!
- \fn QSizePolicy::Policy QSizePolicy::horizontalPolicy() const
-
- Returns the horizontal component of the size policy.
-
- \sa setHorizontalPolicy(), verticalPolicy(), horizontalStretch()
-*/
-
-/*!
- \fn QSizePolicy::Policy QSizePolicy::verticalPolicy() const
-
- Returns the vertical component of the size policy.
-
- \sa setVerticalPolicy(), horizontalPolicy(), verticalStretch()
-*/
-
-/*!
- \fn void QSizePolicy::setHorizontalPolicy(Policy policy)
-
- Sets the horizontal component to the given \a policy.
-
- \sa horizontalPolicy(), setVerticalPolicy(), setHorizontalStretch()
-*/
-
-/*!
- \fn void QSizePolicy::setVerticalPolicy(Policy policy)
-
- Sets the vertical component to the given \a policy.
-
- \sa verticalPolicy(), setHorizontalPolicy(), setVerticalStretch()
-*/
-
-/*!
- \fn Qt::Orientations QSizePolicy::expandingDirections() const
-
- Returns whether a widget can make use of more space than the
- QWidget::sizeHint() function indicates.
-
- A value of Qt::Horizontal or Qt::Vertical means that the widget
- can grow horizontally or vertically (i.e., the horizontal or
- vertical policy is \l Expanding or \l MinimumExpanding), whereas
- Qt::Horizontal | Qt::Vertical means that it can grow in both
- dimensions.
-
- \sa horizontalPolicy(), verticalPolicy()
-*/
-
-/*!
- \fn ControlType QSizePolicy::controlType() const
- \since 4.3
-
- Returns the control type associated with the widget for which
- this size policy applies.
-*/
-
-/*!
- \fn void QSizePolicy::setControlType(ControlType type)
- \since 4.3
-
- Sets the control type associated with the widget for which this
- size policy applies to \a type.
-
- The control type specifies the type of the widget for which this
- size policy applies. It is used by some styles, notably
- QMacStyle, to insert proper spacing between widgets. For example,
- the Mac OS X Aqua guidelines specify that push buttons should be
- separated by 12 pixels, whereas vertically stacked radio buttons
- only require 6 pixels.
-
- \sa QStyle::layoutSpacing()
-*/
-
-/*!
- \fn void QSizePolicy::setHeightForWidth(bool dependent)
-
- Sets the flag determining whether the widget's preferred height
- depends on its width, to \a dependent.
-
- \sa hasHeightForWidth()
-*/
-
-/*!
- \fn bool QSizePolicy::hasHeightForWidth() const
-
- Returns true if the widget's preferred height depends on its
- width; otherwise returns false.
-
- \sa setHeightForWidth()
-*/
-
-/*!
- \fn bool QSizePolicy::operator==(const QSizePolicy &other) const
-
- Returns true if this policy is equal to \a other; otherwise
- returns false.
-
- \sa operator!=()
-*/
-
-/*!
- \fn bool QSizePolicy::operator!=(const QSizePolicy &other) const
-
- Returns true if this policy is different from \a other; otherwise
- returns false.
-
- \sa operator==()
-*/
-
-/*!
- \fn int QSizePolicy::horizontalStretch() const
-
- Returns the horizontal stretch factor of the size policy.
-
- \sa setHorizontalStretch(), verticalStretch(), horizontalPolicy()
-*/
-
-/*!
- \fn int QSizePolicy::verticalStretch() const
-
- Returns the vertical stretch factor of the size policy.
-
- \sa setVerticalStretch(), horizontalStretch(), verticalPolicy()
-*/
-
-/*!
- \fn void QSizePolicy::setHorizontalStretch(uchar stretchFactor)
-
- Sets the horizontal stretch factor of the size policy to the given \a
- stretchFactor.
-
- \sa horizontalStretch(), setVerticalStretch(), setHorizontalPolicy()
-*/
-
-/*!
- \fn void QSizePolicy::setVerticalStretch(uchar stretchFactor)
-
- Sets the vertical stretch factor of the size policy to the given
- \a stretchFactor.
-
- \sa verticalStretch(), setHorizontalStretch(), setVerticalPolicy()
-*/
-
-/*!
- \fn void QSizePolicy::transpose()
-
- Swaps the horizontal and vertical policies and stretches.
-*/
-
-/*!
- \enum QSizePolicy::ControlType
- \since 4.3
-
- This enum specifies the different types of widgets in terms of
- layout interaction:
-
- \value DefaultType The default type, when none is specified.
- \value ButtonBox A QDialogButtonBox instance.
- \value CheckBox A QCheckBox instance.
- \value ComboBox A QComboBox instance.
- \value Frame A QFrame instance.
- \value GroupBox A QGroupBox instance.
- \value Label A QLabel instance.
- \value Line A QFrame instance with QFrame::HLine or QFrame::VLine.
- \value LineEdit A QLineEdit instance.
- \value PushButton A QPushButton instance.
- \value RadioButton A QRadioButton instance.
- \value Slider A QAbstractSlider instance.
- \value SpinBox A QAbstractSpinBox instance.
- \value TabWidget A QTabWidget instance.
- \value ToolButton A QToolButton instance.
-
- \sa setControlType(), controlType()
-*/
-
-#ifdef QT3_SUPPORT
-/*!
- \typedef QSizePolicy::SizeType
- \compat
-
- Use the QSizePolicy::Policy enum instead.
-*/
-
-/*!
- \enum QSizePolicy::ExpandData
- \compat
-
- Use the Qt::Orientations enum instead.
-
- \value NoDirection Use 0 instead.
- \value Horizontally Use Qt::Horizontal instead.
- \value Vertically Use Qt::Vertical instead.
- \value BothDirections Use Qt::Horizontal | Qt::Vertical instead.
-*/
-
-/*!
- \fn bool QSizePolicy::mayShrinkHorizontally() const
-
- Use the horizontalPolicy() function combined with the
- QSizePolicy::PolicyFlag enum instead.
-
- \oldcode
- bool policy = mayShrinkHorizontally();
- \newcode
- bool policy = horizontalPolicy() & QSizePolicy::ShrinkFlag;
- \endcode
-*/
-
-/*!
- \fn bool QSizePolicy::mayShrinkVertically() const
-
- Use the verticalPolicy() function combined with the
- QSizePolicy::PolicyFlag enum instead.
-
- \oldcode
- bool policy = mayShrinkVertically();
- \newcode
- bool policy = verticalPolicy() & QSizePolicy::ShrinkFlag;
- \endcode
-*/
-
-/*!
- \fn bool QSizePolicy::mayGrowHorizontally() const
-
- Use the horizontalPolicy() function combined with the
- QSizePolicy::PolicyFlag enum instead.
-
- \oldcode
- bool policy = mayGrowHorizontally();
- \newcode
- bool policy = horizontalPolicy() & QSizePolicy::GrowFlag;
- \endcode
-*/
-
-/*!
- \fn bool QSizePolicy::mayGrowVertically() const
-
- Use the verticalPolicy() function combined with the
- QSizePolicy::PolicyFlag enum instead.
-
- \oldcode
- bool policy = mayGrowVertically();
- \newcode
- bool policy = verticalPolicy() & QSizePolicy::GrowFlag;
- \endcode
-*/
-
-/*!
- \fn Qt::QSizePolicy::Orientations QSizePolicy::expanding() const
-
- Use expandingDirections() instead.
-*/
-
-/*!
- \fn QSizePolicy::QSizePolicy(Policy horizontal, Policy vertical, bool dependent)
-
- Use the QSizePolicy() constructor and the setHeightForWidth()
- function instead.
-
- \oldcode
- QSizePolicy *policy = new QSizePolicy(horizontal, vertical, dependent);
- \newcode
- QSizePolicy *policy = new QSizePolicy(horizontal, vertical);
- policy->setHeightForWidth(dependent);
- \endcode
-*/
-
-/*!
- \fn QSizePolicy::QSizePolicy(Policy horizontal, Policy vertical, uchar horizontalStretch,
- uchar verticalStretch, bool dependent)
-
- Use the QSizePolicy() constructor and call the
- setHorizontalStretch(), setVerticalStretch(), and
- setHeightForWidth() functions instead.
-
- \oldcode
- QSizePolicy *policy = new QSizePolicy(horizontal, vertical,
- horizontalStretch, verticalStretch,
- dependent);
- \newcode
- QSizePolicy *policy = new QSizePolicy(horizontal, vertical);
- policy->setHorizontalStretch(horizontalStretch);
- policy->setVerticalStretch(verticalStretch);
- policy->setHeightForWidth(dependent);
- \endcode
-*/
-
-/*!
- \fn QSizePolicy::Policy QSizePolicy::horData() const
-
- Use horizontalPolicy() instead.
-*/
-
-/*!
- \fn QSizePolicy::Policy QSizePolicy::verData() const
-
- Use verticalPolicy() instead.
-*/
-
-/*!
- \fn void QSizePolicy::setHorData(Policy policy)
-
- Use setHorizontalPolicy() instead.
-*/
-
-/*!
- \fn void QSizePolicy::setVerData(Policy policy)
-
- Use setVerticalPolicy() instead.
-*/
-
-/*!
- \fn uint QSizePolicy::horStretch() const
-
- Use horizontalStretch() instead.
-*/
-
-/*!
- \fn uint QSizePolicy::verStretch() const
-
- Use verticalStretch() instead.
-*/
-
-/*!
- \fn void QSizePolicy::setHorStretch(uchar stretch)
-
- Use setHorizontalStretch() instead.
-*/
-
-/*!
- \fn void QSizePolicy::setVerStretch(uchar stretch)
-
- Use setVerticalStretch() instead.
-*/
-#endif
diff --git a/doc/src/classes/qtdesigner-api.qdoc b/doc/src/classes/qtdesigner-api.qdoc
deleted file mode 100644
index 60dd9f8be..000000000
--- a/doc/src/classes/qtdesigner-api.qdoc
+++ /dev/null
@@ -1,1413 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class QDesignerMemberSheetExtension
-
- \brief The QDesignerMemberSheetExtension class allows you to
- manipulate a widget's member functions which is displayed when
- configuring connections using Qt Designer's mode for editing
- signals and slots.
-
- \inmodule QtDesigner
-
- QDesignerMemberSheetExtension is a collection of functions that is
- typically used to query a widget's member functions, and to
- manipulate the member functions' appearance in \QD's signals and
- slots editing mode. For example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 2
-
- When implementing a custom widget plugin, a pointer to \QD's
- current QDesignerFormEditorInterface object (\c formEditor in the
- example above) is provided by the
- QDesignerCustomWidgetInterface::initialize() function's parameter.
-
- The member sheet (and any other extension), can be retrieved by
- querying \QD's extension manager using the qt_extension()
- function. When you want to release the extension, you only need to
- delete the pointer.
-
- All widgets have a default member sheet used in \QD's signals and
- slots editing mode with the widget's member functions. But
- QDesignerMemberSheetExtension also provides an interface for
- creating custom member sheet extensions.
-
- \warning \QD uses the QDesignerMemberSheetExtension to facilitate
- the signal and slot editing mode. Whenever a connection between
- two widgets is requested, \QD will query for the widgets' member
- sheet extensions. If a widget has an implemented member sheet
- extension, this extension will override the default member sheet.
-
- To create a member sheet extension, your extension class must
- inherit from both QObject and QDesignerMemberSheetExtension. Then,
- since we are implementing an interface, we must ensure that it's
- made known to the meta object system using the Q_INTERFACES()
- macro:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 3
-
- This enables \QD to use qobject_cast() to query for
- supported interfaces using nothing but a QObject pointer.
-
- In \QD the extensions are not created until they are
- required. For that reason, when implementing a member sheet
- extension, you must also create a QExtensionFactory, i.e a class
- that is able to make an instance of your extension, and register
- it using \QD's \l {QExtensionManager}{extension manager}.
-
- When a widget's member sheet extension is required, \QD's \l
- {QExtensionManager}{extension manager} will run through all its
- registered factories calling QExtensionFactory::createExtension()
- for each until the first one that is able to create a member sheet
- extension for that widget, is found. This factory will then make
- an instance of the extension. If no such factory is found, \QD
- will use the default member sheet.
-
- There are four available types of extensions in \QD:
- QDesignerContainerExtension, QDesignerMemberSheetExtension,
- QDesignerPropertySheetExtension and
- QDesignerTaskMenuExtension. \QD's behavior is the same whether the
- requested extension is associated with a multi page container, a
- member sheet, a property sheet or a task menu.
-
- The QExtensionFactory class provides a standard extension
- factory, and can also be used as an interface for custom
- extension factories. You can either create a new
- QExtensionFactory and reimplement the
- QExtensionFactory::createExtension() function. For example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 4
-
- Or you can use an existing factory, expanding the
- QExtensionFactory::createExtension() function to make the factory
- able to create a member sheet extension as well. For example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 5
-
- For a complete example using an extension class, see \l
- {designer/taskmenuextension}{Task Menu Extension example}. The
- example shows how to create a custom widget plugin for Qt
- Designer, and how to to use the QDesignerTaskMenuExtension class
- to add custom items to \QD's task menu.
-
- \sa QExtensionFactory, QExtensionManager, {Creating Custom Widget
- Extensions}
-*/
-
-/*!
- \fn QDesignerMemberSheetExtension::~QDesignerMemberSheetExtension()
-
- Destroys the member sheet extension.
-*/
-
-/*!
- \fn int QDesignerMemberSheetExtension::count() const
-
- Returns the extension's number of member functions.
-*/
-
-/*!
- \fn int QDesignerMemberSheetExtension::indexOf(const QString &name) const
-
- Returns the index of the member function specified by the given \a
- name.
-
- \sa memberName()
-*/
-
-/*!
- \fn QString QDesignerMemberSheetExtension::memberName(int index) const
-
- Returns the name of the member function with the given \a index.
-
- \sa indexOf()
-*/
-
-/*!
- \fn QString QDesignerMemberSheetExtension::memberGroup(int index) const
-
- Returns the name of the member group specified for the function
- with the given \a index.
-
- \sa indexOf(), setMemberGroup()
-*/
-
-/*!
- \fn void QDesignerMemberSheetExtension::setMemberGroup(int index, const QString &group)
-
- Sets the member group of the member function with the given \a
- index, to \a group.
-
- \sa indexOf(), memberGroup()
-*/
-
-/*!
- \fn bool QDesignerMemberSheetExtension::isVisible(int index) const
-
- Returns true if the member function with the given \a index is
- visible in \QD's signal and slot editor, otherwise false.
-
- \sa indexOf(), setVisible()
-*/
-
-/*!
- \fn void QDesignerMemberSheetExtension::setVisible(int index, bool visible)
-
- If \a visible is true, the member function with the given \a index
- is visible in \QD's signals and slots editing mode; otherwise the
- member function is hidden.
-
- \sa indexOf(), isVisible()
-*/
-
-/*!
- \fn virtual bool QDesignerMemberSheetExtension::isSignal(int index) const
-
- Returns true if the member function with the given \a index is a
- signal, otherwise false.
-
- \sa indexOf()
-*/
-
-/*!
- \fn bool QDesignerMemberSheetExtension::isSlot(int index) const
-
- Returns true if the member function with the given \a index is a
- slot, otherwise false.
-
- \sa indexOf()
-*/
-
-/*!
- \fn bool QDesignerMemberSheetExtension::inheritedFromWidget(int index) const
-
- Returns true if the member function with the given \a index is
- inherited from QWidget, otherwise false.
-
- \sa indexOf()
-*/
-
-/*!
- \fn QString QDesignerMemberSheetExtension::declaredInClass(int index) const
-
- Returns the name of the class in which the member function with
- the given \a index is declared.
-
- \sa indexOf()
-*/
-
-/*!
- \fn QString QDesignerMemberSheetExtension::signature(int index) const
-
- Returns the signature of the member function with the given \a
- index.
-
- \sa indexOf()
-*/
-
-/*!
- \fn QList<QByteArray> QDesignerMemberSheetExtension::parameterTypes(int index) const
-
- Returns the parameter types of the member function with the given
- \a index, as a QByteArray list.
-
- \sa indexOf(), parameterNames()
-*/
-
-/*!
- \fn QList<QByteArray> QDesignerMemberSheetExtension::parameterNames(int index) const
-
- Returns the parameter names of the member function with the given
- \a index, as a QByteArray list.
-
- \sa indexOf(), parameterTypes()
-*/
-
-
-// Doc: Interface only
-
-/*!
- \class QDesignerLayoutDecorationExtension
- \brief The QDesignerLayoutDecorationExtension class provides an extension to a layout in \QD.
- \inmodule QtDesigner
- \internal
-*/
-
-/*!
- \enum QDesignerLayoutDecorationExtension::InsertMode
-
- This enum describes the modes that are used to insert items into a layout.
-
- \value InsertWidgetMode Widgets are inserted into empty cells in a layout.
- \value InsertRowMode Whole rows are inserted into a vertical or grid layout.
- \value InsertColumnMode Whole columns are inserted into a horizontal or grid layout.
-*/
-
-/*!
- \fn virtual QDesignerLayoutDecorationExtension::~QDesignerLayoutDecorationExtension()
-
- Destroys the extension.
-*/
-
-/*!
- \fn virtual QList<QWidget*> QDesignerLayoutDecorationExtension::widgets(QLayout *layout) const
-
- Returns the widgets that are managed by the given \a layout.
-
- \sa insertWidget(), removeWidget()
-*/
-
-/*!
- \fn QRect QDesignerLayoutDecorationExtension::itemInfo(int index) const
-
- Returns the rectangle covered by the item at the given \a index in the layout.
-*/
-
-/*!
- \fn int QDesignerLayoutDecorationExtension::indexOf(QWidget *widget) const
-
- Returns the index of the specified \a widget in the layout.
-*/
-
-/*!
- \fn int QDesignerLayoutDecorationExtension::indexOf(QLayoutItem *item) const
-
- Returns the index of the specified layout \a item.
-*/
-
-/*!
- \fn QDesignerLayoutDecorationExtension::InsertMode QDesignerLayoutDecorationExtension::currentInsertMode() const
-
- Returns the current insertion mode.
-*/
-
-/*!
- \fn int QDesignerLayoutDecorationExtension::currentIndex() const
-
- Returns the current index in the layout.
-*/
-
-/*!
- \fn QPair<int, int> QDesignerLayoutDecorationExtension::currentCell() const
-
- Returns a pair containing the row and column of the current cell in the layout.
-*/
-
-/*!
- \fn void QDesignerLayoutDecorationExtension::insertWidget(QWidget *widget, const QPair<int, int> &cell)
-
- Inserts the given \a widget into the specified \a cell in the layout.
-
- \sa removeWidget()
-*/
-
-/*!
- \fn void QDesignerLayoutDecorationExtension::removeWidget(QWidget *widget)
-
- Removes the specified \a widget from the layout.
-
- \sa insertWidget()
-*/
-
-/*!
- \fn void QDesignerLayoutDecorationExtension::insertRow(int row)
-
- Inserts a new row into the form at the position specified by \a row.
-*/
-
-/*!
- \fn void QDesignerLayoutDecorationExtension::insertColumn(int column)
-
- Inserts a new column into the form at the position specified by \a column.
-*/
-
-/*!
- \fn void QDesignerLayoutDecorationExtension::simplify()
-
- Simplifies the layout by removing unnecessary empty rows and columns, and by changing the
- number of rows or columns spanned by widgets.
-*/
-
-/*!
- \fn int QDesignerLayoutDecorationExtension::findItemAt(const QPoint &position) const
-
- Returns the index of the item in the layout that covers the given \a position.
-*/
-
-/*!
- \fn int QDesignerLayoutDecorationExtension::findItemAt(int row, int column) const
-
- Returns the item in the layout that occupies the specified \a row and \a column in the layout.
-
- Currently, this only applies to grid layouts.
-*/
-
-/*!
- \fn void QDesignerLayoutDecorationExtension::adjustIndicator(const QPoint &position, int index)
-
- Adjusts the indicator for the item specified by \a index so that
- it lies at the given \a position on the form.
-*/
-
-
-// Doc: Interface only
-
-/*!
- \class QDesignerContainerExtension
- \brief The QDesignerContainerExtension class allows you to add pages to
- a custom multi-page container in Qt Designer's workspace.
- \inmodule QtDesigner
-
- QDesignerContainerExtension provide an interface for creating
- custom container extensions. A container extension consists of a
- collection of functions that \QD needs to manage a multi-page
- container plugin, and a list of the container's pages.
-
- \image containerextension-example.png
-
- \warning This is \e not an extension for container plugins in
- general, only custom \e multi-page containers.
-
- To create a container extension, your extension class must inherit
- from both QObject and QDesignerContainerExtension. For example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 6
-
- Since we are implementing an interface, we must ensure that it's
- made known to the meta object system using the Q_INTERFACES()
- macro. This enables \QD to use the qobject_cast() function to
- query for supported interfaces using nothing but a QObject
- pointer.
-
- You must reimplement several functions to enable \QD to manage a
- custom multi-page container widget: \QD uses count() to keep track
- of the number pages in your container, widget() to return the page
- at a given index in the list of the container's pages, and
- currentIndex() to return the list index of the selected page. \QD
- uses the addWidget() function to add a given page to the
- container, expecting it to be appended to the list of pages, while
- it expects the insertWidget() function to add a given page to the
- container by inserting it at a given index.
-
- In \QD the extensions are not created until they are
- required. For that reason you must also create a
- QExtensionFactory, i.e a class that is able to make an instance of
- your extension, and register it using \QD's \l
- {QExtensionManager}{extension manager}.
-
- When a container extension is required, \QD's \l
- {QExtensionManager}{extension manager} will run through all its
- registered factories calling QExtensionFactory::createExtension()
- for each until the first one that is able to create a container
- extension, is found. This factory will then create the extension
- for the plugin.
-
- There are four available types of extensions in \QD:
- QDesignerContainerExtension , QDesignerMemberSheetExtension,
- QDesignerPropertySheetExtension and QDesignerTaskMenuExtension.
- \QD's behavior is the same whether the requested extension is
- associated with a multi page container, a member sheet, a property
- sheet or a task menu.
-
- The QExtensionFactory class provides a standard extension factory,
- and can also be used as an interface for custom extension
- factories. You can either create a new QExtensionFactory and
- reimplement the QExtensionFactory::createExtension() function. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 7
-
- Or you can use an existing factory, expanding the
- QExtensionFactory::createExtension() function to make the factory
- able to create a container extension as well. For example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 8
-
- For a complete example using the QDesignerContainerExtension
- class, see the \l {designer/containerextension}{Container
- Extension example}. The example shows how to create a custom
- multi-page plugin for \QD.
-
- \sa QExtensionFactory, QExtensionManager, {Creating Custom Widget
- Extensions}
-*/
-
-/*!
- \fn QDesignerContainerExtension::~QDesignerContainerExtension()
-
- Destroys the extension.
-*/
-
-/*!
- \fn int QDesignerContainerExtension::count() const
-
- Returns the number of pages in the container.
-*/
-
-/*!
- \fn QWidget *QDesignerContainerExtension::widget(int index) const
-
- Returns the page at the given \a index in the extension's list of
- pages.
-
- \sa addWidget(), insertWidget()
-*/
-
-/*!
- \fn int QDesignerContainerExtension::currentIndex() const
-
- Returns the index of the currently selected page in the
- container.
-
- \sa setCurrentIndex()
-*/
-
-/*!
- \fn void QDesignerContainerExtension::setCurrentIndex(int index)
-
- Sets the currently selected page in the container to be the
- page at the given \a index in the extension's list of pages.
-
- \sa currentIndex()
-*/
-
-/*!
- \fn void QDesignerContainerExtension::addWidget(QWidget *page)
-
- Adds the given \a page to the container by appending it to the
- extension's list of pages.
-
- \sa insertWidget(), remove(), widget()
-*/
-
-/*!
- \fn void QDesignerContainerExtension::insertWidget(int index, QWidget *page)
-
- Adds the given \a page to the container by inserting it at the
- given \a index in the extension's list of pages.
-
- \sa addWidget(), remove(), widget()
-*/
-
-/*!
- \fn void QDesignerContainerExtension::remove(int index)
-
- Removes the page at the given \a index from the extension's list
- of pages.
-
- \sa addWidget(), insertWidget()
-*/
-
-
-// Doc: Interface only
-
-/*!
- \class QDesignerTaskMenuExtension
- \brief The QDesignerTaskMenuExtension class allows you to add custom
- menu entries to Qt Designer's task menu.
- \inmodule QtDesigner
-
- QDesignerTaskMenuExtension provides an interface for creating
- custom task menu extensions. It is typically used to create task
- menu entries that are specific to a plugin in \QD.
-
- \QD uses the QDesignerTaskMenuExtension to feed its task
- menu. Whenever a task menu is requested, \QD will query
- for the selected widget's task menu extension.
-
- \image taskmenuextension-example-faded.png
-
- A task menu extension is a collection of QActions. The actions
- appear as entries in the task menu when the plugin with the
- specified extension is selected. The image above shows the custom
- \gui {Edit State...} action which appears in addition to \QD's
- default task menu entries: \gui Cut, \gui Copy, \gui Paste etc.
-
- To create a custom task menu extension, your extension class must
- inherit from both QObject and QDesignerTaskMenuExtension. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 9
-
- Since we are implementing an interface, we must ensure that it
- is made known to the meta-object system using the Q_INTERFACES()
- macro. This enables \QD to use the qobject_cast() function to
- query for supported interfaces using nothing but a QObject
- pointer.
-
- You must reimplement the taskActions() function to return a list
- of actions that will be included in \QD task menu. Optionally, you
- can reimplement the preferredEditAction() function to set the
- action that is invoked when selecting your plugin and pressing
- \key F2. The preferred edit action must be one of the actions
- returned by taskActions() and, if it's not defined, pressing the
- \key F2 key will simply be ignored.
-
- In \QD, extensions are not created until they are required. A
- task menu extension, for example, is created when you click the
- right mouse button over a widget in \QD's workspace. For that
- reason you must also construct an extension factory, using either
- QExtensionFactory or a subclass, and register it using \QD's
- \l {QExtensionManager}{extension manager}.
-
- When a task menu extension is required, \QD's \l
- {QExtensionManager}{extension manager} will run through all its
- registered factories calling QExtensionFactory::createExtension()
- for each until it finds one that is able to create a task menu
- extension for the selected widget. This factory will then make an
- instance of the extension.
-
- There are four available types of extensions in \QD:
- QDesignerContainerExtension, QDesignerMemberSheetExtension,
- QDesignerPropertySheetExtension, and QDesignerTaskMenuExtension.
- \QD's behavior is the same whether the requested extension is
- associated with a container, a member sheet, a property sheet or a
- task menu.
-
- The QExtensionFactory class provides a standard extension factory,
- and can also be used as an interface for custom extension
- factories. You can either create a new QExtensionFactory and
- reimplement the QExtensionFactory::createExtension() function. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 10
-
- Or you can use an existing factory, expanding the
- QExtensionFactory::createExtension() function to make the factory
- able to create a task menu extension as well. For example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 11
-
- For a complete example using the QDesignerTaskMenuExtension class,
- see the \l {designer/taskmenuextension}{Task Menu Extension
- example}. The example shows how to create a custom widget plugin
- for \QD, and how to to use the QDesignerTaskMenuExtension
- class to add custom items to \QD's task menu.
-
- \sa QExtensionFactory, QExtensionManager, {Creating Custom Widget
- Extensions}
-*/
-
-/*!
- \fn QDesignerTaskMenuExtension::~QDesignerTaskMenuExtension()
-
- Destroys the task menu extension.
-*/
-
-/*!
- \fn QAction *QDesignerTaskMenuExtension::preferredEditAction() const
-
- Returns the action that is invoked when selecting a plugin with
- the specified extension and pressing \key F2.
-
- The action must be one of the actions returned by taskActions().
-*/
-
-/*!
- \fn QList<QAction*> QDesignerTaskMenuExtension::taskActions() const
-
- Returns the task menu extension as a list of actions which will be
- included in \QD's task menu when a plugin with the specified
- extension is selected.
-
- The function must be reimplemented to add actions to the list.
-*/
-
-
-// Doc: Interface only
-
-/*!
- \class QDesignerCustomWidgetCollectionInterface
-
- \brief The QDesignerCustomWidgetCollectionInterface class allows
- you to include several custom widgets in one single library.
-
- \inmodule QtDesigner
-
- When implementing a custom widget plugin, you build it as a
- separate library. If you want to include several custom widget
- plugins in the same library, you must in addition subclass
- QDesignerCustomWidgetCollectionInterface.
-
- QDesignerCustomWidgetCollectionInterface contains one single
- function returning a list of the collection's
- QDesignerCustomWidgetInterface objects. For example, if you have
- several custom widgets \c CustomWidgetOne, \c CustomWidgetTwo and
- \c CustomWidgetThree, the class definition may look like this:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 12
-
- In the class constructor you add the interfaces to your custom
- widgets to the list which you return in the customWidgets()
- function:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 13
-
- Note that instead of exporting each custom widget plugin using the
- Q_EXPORT_PLUGIN2() macro, you export the entire collection. The
- Q_EXPORT_PLUGIN2() macro ensures that \QD can access and construct
- the custom widgets. Without this macro, there is no way for \QD to
- use them.
-
- \sa QDesignerCustomWidgetInterface, {Creating Custom Widgets for
- Qt Designer}
-*/
-
-/*!
- \fn QDesignerCustomWidgetCollectionInterface::~QDesignerCustomWidgetCollectionInterface() {
-
- Destroys the custom widget collection interface.
-*/
-
-/*!
- \fn QList<QDesignerCustomWidgetInterface*> QDesignerCustomWidgetCollectionInterface::customWidgets() const
-
- Returns a list of interfaces to the collection's custom widgets.
-*/
-
-
-// Doc: Interface only
-
-/*!
- \class QDesignerCustomWidgetInterface
-
- \brief The QDesignerCustomWidgetInterface class enables Qt Designer
- to access and construct custom widgets.
-
- \inmodule QtDesigner
-
- QDesignerCustomWidgetInterface provides a custom widget with an
- interface. The class contains a set of functions that must be subclassed
- to return basic information about the widget, such as its class name and
- the name of its header file. Other functions must be implemented to
- initialize the plugin when it is loaded, and to construct instances of
- the custom widget for \QD to use.
-
- When implementing a custom widget you must subclass
- QDesignerCustomWidgetInterface to expose your widget to \QD. For
- example, this is the declaration for the plugin used in the
- \l{Custom Widget Plugin Example}{Custom Widget Plugin example} that
- enables an analog clock custom widget to be used by \QD:
-
- \snippet examples/designer/customwidgetplugin/customwidgetplugin.h 0
-
- Note that the only part of the class definition that is specific
- to this particular custom widget is the class name. In addition,
- since we are implementing an interface, we must ensure that it's
- made known to the meta object system using the Q_INTERFACES()
- macro. This enables \QD to use the qobject_cast() function to
- query for supported interfaces using nothing but a QObject
- pointer.
-
- After \QD loads a custom widget plugin, it calls the interface's
- initialize() function to enable it to set up any resources that it
- may need. This function is called with a QDesignerFormEditorInterface
- parameter that provides the plugin with a gateway to all of \QD's API.
-
- \QD constructs instances of the custom widget by calling the plugin's
- createWidget() function with a suitable parent widget. Plugins must
- construct and return an instance of a custom widget with the specified
- parent widget.
-
- In the implementation of the class you must remember to export
- your custom widget plugin to \QD using the Q_EXPORT_PLUGIN2()
- macro. For example, if a library called \c libcustomwidgetplugin.so
- (on Unix) or \c libcustomwidget.dll (on Windows) contains a widget
- class called \c MyCustomWidget, we can export it by adding the
- following line to the file containing the plugin implementation:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 14
-
- This macro ensures that \QD can access and construct the custom widget.
- Without this macro, there is no way for \QD to use it.
-
- When implementing a custom widget plugin, you build it as a
- separate library. If you want to include several custom widget
- plugins in the same library, you must in addition subclass
- QDesignerCustomWidgetCollectionInterface.
-
- \warning If your custom widget plugin contains QVariant
- properties, be aware that only the following \l
- {QVariant::Type}{types} are supported:
-
- \list
- \o QVariant::ByteArray
- \o QVariant::Bool
- \o QVariant::Color
- \o QVariant::Cursor
- \o QVariant::Date
- \o QVariant::DateTime
- \o QVariant::Double
- \o QVariant::Int
- \o QVariant::Point
- \o QVariant::Rect
- \o QVariant::Size
- \o QVariant::SizePolicy
- \o QVariant::String
- \o QVariant::Time
- \o QVariant::UInt
- \endlist
-
- For a complete example using the QDesignerCustomWidgetInterface
- class, see the \l {designer/customwidgetplugin}{Custom Widget
- Example}. The example shows how to create a custom widget plugin
- for \QD.
-
- \sa QDesignerCustomWidgetCollectionInterface {Creating Custom
- Widgets for Qt Designer}
-*/
-
-/*!
- \fn QDesignerCustomWidgetInterface::~QDesignerCustomWidgetInterface()
-
- Destroys the custom widget interface.
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::name() const
-
- Returns the class name of the custom widget supplied by the interface.
-
- The name returned \e must be identical to the class name used for the
- custom widget.
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::group() const
-
- Returns the name of the group to which the custom widget belongs.
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::toolTip() const
-
- Returns a short description of the widget that can be used by \QD
- in a tool tip.
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::whatsThis() const
-
- Returns a description of the widget that can be used by \QD in
- "What's This?" help for the widget.
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::includeFile() const
-
- Returns the path to the include file that \l uic uses when
- creating code for the custom widget.
-*/
-
-/*!
- \fn QIcon QDesignerCustomWidgetInterface::icon() const
-
- Returns the icon used to represent the custom widget in \QD's
- widget box.
-*/
-
-/*!
- \fn bool QDesignerCustomWidgetInterface::isContainer() const
-
- Returns true if the custom widget is intended to be used as a
- container; otherwise returns false.
-
- Most custom widgets are not used to hold other widgets, so their
- implementations of this function will return false, but custom
- containers will return true to ensure that they behave correctly
- in \QD.
-*/
-
-/*!
- \fn QWidget *QDesignerCustomWidgetInterface::createWidget(QWidget *parent)
-
- Returns a new instance of the custom widget, with the given \a
- parent.
-*/
-
-/*!
- \fn bool QDesignerCustomWidgetInterface::isInitialized() const
-
- Returns true if the widget has been initialized; otherwise returns
- false.
-
- \sa initialize()
-*/
-
-/*!
- \fn void QDesignerCustomWidgetInterface::initialize(QDesignerFormEditorInterface *formEditor)
-
- Initializes the widget for use with the specified \a formEditor
- interface.
-
- \sa isInitialized()
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::domXml() const
-
- Returns the XML that is used to describe the custom widget's
- properties to \QD.
-*/
-
-/*!
- \fn QString QDesignerCustomWidgetInterface::codeTemplate() const
-
- This function is reserved for future use by \QD.
-
- \omit
- Returns the code template that \QD includes in forms that contain
- the custom widget when they are saved.
- \endomit
-*/
-
-/*!
- \macro QDESIGNER_WIDGET_EXPORT
- \relates QDesignerCustomWidgetInterface
- \since 4.1
-
- This macro is used when defining custom widgets to ensure that they are
- correctly exported from plugins for use with \QD.
-
- On some platforms, the symbols required by \QD to create new widgets
- are removed from plugins by the build system, making them unusable.
- Using this macro ensures that the symbols are retained on those platforms,
- and has no side effects on other platforms.
-
- For example, the \l{designer/worldtimeclockplugin}{World Time Clock Plugin}
- example exports a custom widget class with the following declaration:
-
- \snippet examples/designer/worldtimeclockplugin/worldtimeclock.h 0
- \dots
- \snippet examples/designer/worldtimeclockplugin/worldtimeclock.h 2
-
- \sa {Creating Custom Widgets for Qt Designer}
-*/
-
-
-// Doc: Abstract class
-
-/*!
- \class QDesignerDnDItemInterface
- \brief The QDesignerDnDItemInterface class provides an interface that is used to manage items
- during a drag and drop operation.
- \inmodule QtDesigner
- \internal
-*/
-
-/*!
- \enum QDesignerDnDItemInterface::DropType
-
- This enum describes the result of a drag and drop operation.
-
- \value MoveDrop The item was moved.
- \value CopyDrop The item was copied.
-*/
-
-/*!
- \fn QDesignerDnDItemInterface::QDesignerDnDItemInterface()
-
- Constructs a new interface to a drag and drop item.
-*/
-
-/*!
- \fn QDesignerDnDItemInterface::~QDesignerDnDItemInterface()
-
- Destroys the interface to the item.
-*/
-
-/*!
- \fn DomUI *QDesignerDnDItemInterface::domUi() const
-
- Returns a user interface object for the item.
-*/
-
-/*!
- \fn QWidget *QDesignerDnDItemInterface::widget() const
-
- Returns the widget being copied or moved in the drag and drop operation.
-
- \sa source()
-*/
-
-/*!
- \fn QWidget *QDesignerDnDItemInterface::decoration() const
-
- Returns the widget used to represent the item.
-*/
-
-/*!
- \fn QPoint QDesignerDnDItemInterface::hotSpot() const
-
- Returns the cursor's hotspot.
-
- \sa QDrag::hotSpot()
-*/
-
-/*!
- \fn DropType QDesignerDnDItemInterface::type() const
-
- Returns the type of drag and drop operation in progress.
-*/
-
-/*!
- \fn QWidget *QDesignerDnDItemInterface::source() const
-
- Returns the widget that is the source of the drag and drop operation; i.e. the original
- container of the widget being dragged.
-
- \sa widget()
-*/
-
-
-// Doc: Abstract class
-
-/*!
- \class QDesignerIconCacheInterface
- \brief The QDesignerIconCacheInterface class provides an interface to \QD's icon cache.
- \inmodule QtDesigner
- \internal
-*/
-
-/*!
- \fn QDesignerIconCacheInterface::QDesignerIconCacheInterface(QObject *parent)
-
- Constructs a new interface with the given \a parent.
-*/
-
-/*!
- \fn QIcon QDesignerIconCacheInterface::nameToIcon(const QString &filePath, const QString &qrcPath)
-
- Returns the icon associated with the name specified by \a filePath in the resource
- file specified by \a qrcPath.
-
- If \a qrcPath refers to a valid resource file, the name used for the file path is a path
- within those resources; otherwise the file path refers to a local file.
-
- \sa {The Qt Resource System}, nameToPixmap()
-*/
-
-/*!
- \fn QPixmap QDesignerIconCacheInterface::nameToPixmap(const QString &filePath, const QString &qrcPath)
-
- Returns the pixmap associated with the name specified by \a filePath in the resource
- file specified by \a qrcPath.
-
- If \a qrcPath refers to a valid resource file, the name used for the file path is a path
- within those resources; otherwise the file path refers to a local file.
-
- \sa {The Qt Resource System}, nameToIcon()
-*/
-
-/*!
- \fn QString QDesignerIconCacheInterface::iconToFilePath(const QIcon &icon) const
-
- Returns the file path associated with the given \a icon. The file path is a path within
- an application resources.
-*/
-
-/*!
- \fn QString QDesignerIconCacheInterface::iconToQrcPath(const QIcon &icon) const
-
- Returns the path to the resource file that refers to the specified \a icon. The resource
- path refers to a local file.
-*/
-
-/*!
- \fn QString QDesignerIconCacheInterface::pixmapToFilePath(const QPixmap &pixmap) const
-
- Returns the file path associated with the given \a pixmap. The file path is a path within
- an application resources.
-*/
-
-/*!
- \fn QString QDesignerIconCacheInterface::pixmapToQrcPath(const QPixmap &pixmap) const
-
- Returns the path to the resource file that refers to the specified \a pixmap. The resource
- path refers to a local file.
-*/
-
-/*!
- \fn QList<QPixmap> QDesignerIconCacheInterface::pixmapList() const
-
- Returns a list of pixmaps for the icons provided by the icon cache.
-*/
-
-/*!
- \fn QList<QIcon> QDesignerIconCacheInterface::iconList() const
-
- Returns a list of icons provided by the icon cache.
-*/
-
-/*!
- \fn QString QDesignerIconCacheInterface::resolveQrcPath(const QString &filePath, const QString &qrcPath, const QString &workingDirectory) const
-
- Returns a path to a resource specified by the \a filePath within
- the resource file located at \a qrcPath. If \a workingDirectory is
- a valid path to a directory, the path returned will be relative to
- that directory; otherwise an absolute path is returned.
-
- \omit
- ### Needs checking
- \endomit
-*/
-
-
-// Doc: Interface only
-
-/*!
- \class QDesignerPropertySheetExtension
-
- \brief The QDesignerPropertySheetExtension class allows you to
- manipulate a widget's properties which is displayed in Qt
- Designer's property editor.
-
- \sa QDesignerDynamicPropertySheetExtension
-
- \inmodule QtDesigner
-
- QDesignerPropertySheetExtension provides a collection of functions that
- are typically used to query a widget's properties, and to
- manipulate the properties' appearance in the property editor. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 15
-
- Note that if you change the value of a property using the
- QDesignerPropertySheetExtension::setProperty() function, the undo
- stack is not updated. To ensure that a property's value can be
- reverted using the undo stack, you must use the
- QDesignerFormWindowCursorInterface::setProperty() function, or its
- buddy \l
- {QDesignerFormWindowCursorInterface::setWidgetProperty()}{setWidgetProperty()},
- instead.
-
- When implementing a custom widget plugin, a pointer to \QD's
- current QDesignerFormEditorInterface object (\c formEditor in the
- example above) is provided by the
- QDesignerCustomWidgetInterface::initialize() function's parameter.
-
- The property sheet, or any other extension, can be retrieved by
- querying \QD's extension manager using the qt_extension()
- function. When you want to release the extension, you only need to
- delete the pointer.
-
- All widgets have a default property sheet which populates \QD's
- property editor with the widget's properties (i.e the ones defined
- with the Q_PROPERTY() macro). But QDesignerPropertySheetExtension
- also provides an interface for creating custom property sheet
- extensions.
-
- \warning \QD uses the QDesignerPropertySheetExtension to feed its
- property editor. Whenever a widget is selected in its workspace,
- \QD will query for the widget's property sheet extension. If the
- selected widget has an implemented property sheet extension, this
- extension will override the default property sheet.
-
- To create a property sheet extension, your extension class must
- inherit from both QObject and
- QDesignerPropertySheetExtension. Then, since we are implementing
- an interface, we must ensure that it's made known to the meta
- object system using the Q_INTERFACES() macro:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 16
-
- This enables \QD to use qobject_cast() to query for supported
- interfaces using nothing but a QObject pointer.
-
- In \QD the extensions are not created until they are
- required. For that reason, when implementing a property sheet
- extension, you must also create a QExtensionFactory, i.e a class
- that is able to make an instance of your extension, and register
- it using \QD's \l {QExtensionManager}{extension manager}.
-
- When a property sheet extension is required, \QD's \l
- {QExtensionManager}{extension manager} will run through all its
- registered factories calling QExtensionFactory::createExtension()
- for each until the first one that is able to create a property
- sheet extension for the selected widget, is found. This factory
- will then make an instance of the extension. If no such factory
- can be found, \QD will use the default property sheet.
-
- There are four available types of extensions in \QD:
- QDesignerContainerExtension, QDesignerMemberSheetExtension,
- QDesignerPropertySheetExtension and QDesignerTaskMenuExtension. Qt
- Designer's behavior is the same whether the requested extension is
- associated with a multi page container, a member sheet, a property
- sheet or a task menu.
-
- The QExtensionFactory class provides a standard extension factory,
- and can also be used as an interface for custom extension
- factories. You can either create a new QExtensionFactory and
- reimplement the QExtensionFactory::createExtension() function. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 17
-
- Or you can use an existing factory, expanding the
- QExtensionFactory::createExtension() function to make the factory
- able to create a property sheet extension extension as well. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 18
-
- For a complete example using an extension class, see the \l
- {designer/taskmenuextension}{Task Menu Extension example}. The
- example shows how to create a custom widget plugin for Qt
- Designer, and how to to use the QDesignerTaskMenuExtension class
- to add custom items to \QD's task menu.
-
- \sa QExtensionFactory, QExtensionManager, {Creating Custom Widget
- Extensions}
-*/
-
-/*!
- \fn QDesignerPropertySheetExtension::~QDesignerPropertySheetExtension()
-
- Destroys the property sheet extension.
-*/
-
-/*!
- \fn int QDesignerPropertySheetExtension::count() const
-
- Returns the selected widget's number of properties.
-*/
-
-/*!
- \fn int QDesignerPropertySheetExtension::indexOf(const QString &name) const
-
- Returns the index for a given property \a name.
-
- \sa propertyName()
-*/
-
-/*!
- \fn QString QDesignerPropertySheetExtension::propertyName(int index) const
-
- Returns the name of the property at the given \a index.
-
- \sa indexOf()
-*/
-
-/*!
- \fn QString QDesignerPropertySheetExtension::propertyGroup(int index) const
-
- Returns the property group for the property at the given \a index.
-
- \QD's property editor supports property groups, i.e. sections of
- related properties. A property can be related to a group using the
- setPropertyGroup() function. The default group of any property is
- the name of the class that defines it. For example, the
- QObject::objectName property appears within the QObject property
- group.
-
- \sa indexOf(), setPropertyGroup()
-*/
-
-/*!
- \fn void QDesignerPropertySheetExtension::setPropertyGroup(int index, const QString &group)
-
- Sets the property group for the property at the given \a index to
- \a group.
-
- Relating a property to a group makes it appear within that group's
- section in the property editor. The default property group of any
- property is the name of the class that defines it. For example,
- the QObject::objectName property appears within the QObject
- property group.
-
- \sa indexOf(), property(), propertyGroup()
-*/
-
-/*!
- \fn bool QDesignerPropertySheetExtension::hasReset(int index) const
-
- Returns true if the property at the given \a index has a reset
- button in \QD's property editor, otherwise false.
-
- \sa indexOf(), reset()
-*/
-
-/*!
- \fn bool QDesignerPropertySheetExtension::reset(int index)
-
- Resets the value of the property at the given \a index, to the
- default value. Returns true if a default value could be found, otherwise false.
-
- \sa indexOf(), hasReset(), isChanged()
-*/
-
-/*!
- \fn bool QDesignerPropertySheetExtension::isVisible(int index) const
-
- Returns true if the property at the given \a index is visible in
- \QD's property editor, otherwise false.
-
- \sa indexOf(), setVisible()
-*/
-
-/*!
- \fn void QDesignerPropertySheetExtension::setVisible(int index, bool visible)
-
- If \a visible is true, the property at the given \a index is
- visible in \QD's property editor; otherwise the property is
- hidden.
-
- \sa indexOf(), isVisible()
-*/
-
-/*!
- \fn bool QDesignerPropertySheetExtension::isAttribute(int index) const
-
- Returns true if the property at the given \a index is an attribute,
- which will be \e excluded from the UI file, otherwise false.
-
- \sa indexOf(), setAttribute()
-*/
-
-/*!
- \fn void QDesignerPropertySheetExtension::setAttribute(int index, bool attribute)
-
- If \a attribute is true, the property at the given \a index is
- made an attribute which will be \e excluded from the UI file;
- otherwise it will be included.
-
- \sa indexOf(), isAttribute()
-*/
-
-/*!
- \fn QVariant QDesignerPropertySheetExtension::property(int index) const
-
- Returns the value of the property at the given \a index.
-
- \sa indexOf(), setProperty(), propertyGroup()
-*/
-
-/*!
- \fn void QDesignerPropertySheetExtension::setProperty(int index, const QVariant &value)
-
- Sets the \a value of the property at the given \a index.
-
- \warning If you change the value of a property using this
- function, the undo stack is not updated. To ensure that a
- property's value can be reverted using the undo stack, you must
- use the QDesignerFormWindowCursorInterface::setProperty()
- function, or its buddy \l
- {QDesignerFormWindowCursorInterface::setWidgetProperty()}{setWidgetProperty()},
- instead.
-
- \sa indexOf(), property(), propertyGroup()
-*/
-
-/*!
- \fn bool QDesignerPropertySheetExtension::isChanged(int index) const
-
- Returns true if the value of the property at the given \a index
- differs from the property's default value, otherwise false.
-
- \sa indexOf(), setChanged(), reset()
-*/
-
-/*!
- \fn void QDesignerPropertySheetExtension::setChanged(int index, bool changed)
-
- Sets whether the property at the given \a index is different from
- its default value, or not, depending on the \a changed parameter.
-
- \sa indexOf(), isChanged()
-*/
-
-// Doc: Interface only
-
-/*!
- \class QDesignerDynamicPropertySheetExtension
-
- \brief The QDesignerDynamicPropertySheetExtension class allows you to
- manipulate a widget's dynamic properties in Qt Designer's property editor.
-
- \sa QDesignerPropertySheetExtension, {QObject#Dynamic Properties}{Dynamic Properties}
-
- \inmodule QtDesigner
- \since 4.3
-*/
-
-/*!
- \fn QDesignerDynamicPropertySheetExtension::~QDesignerDynamicPropertySheetExtension()
-
- Destroys the dynamic property sheet extension.
-*/
-
-/*!
- \fn bool QDesignerDynamicPropertySheetExtension::dynamicPropertiesAllowed() const
-
- Returns true if the widget supports dynamic properties; otherwise returns false.
-*/
-
-/*!
- \fn int QDesignerDynamicPropertySheetExtension::addDynamicProperty(const QString &propertyName, const QVariant &value)
-
- Adds a dynamic property named \a propertyName and sets its value to \a value.
- Returns the index of the property if it was added successfully; otherwise returns -1 to
- indicate failure.
-*/
-
-/*!
- \fn bool QDesignerDynamicPropertySheetExtension::removeDynamicProperty(int index)
-
- Removes the dynamic property at the given \a index.
- Returns true if the operation succeeds; otherwise returns false.
-*/
-
-/*!
- \fn bool QDesignerDynamicPropertySheetExtension::isDynamicProperty(int index) const
-
- Returns true if the property at the given \a index is a dynamic property; otherwise
- returns false.
-*/
-
-/*!
- \fn bool QDesignerDynamicPropertySheetExtension::canAddDynamicProperty(const QString &propertyName) const
-
- Returns true if \a propertyName is a valid, unique name for a dynamic
- property; otherwise returns false.
-
-*/
diff --git a/doc/src/classes/qtendian.qdoc b/doc/src/classes/qtendian.qdoc
deleted file mode 100644
index e96ba0fdd..000000000
--- a/doc/src/classes/qtendian.qdoc
+++ /dev/null
@@ -1,168 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \headerfile <QtEndian>
- \title Endian Conversion Functions
- \ingroup architecture
- \brief The <QtEndian> header provides functions to convert between
- little and big endian representations of numbers.
-*/
-
-/*!
- \fn T qFromBigEndian(const uchar *src)
- \since 4.3
- \relates <QtEndian>
-
- Reads a big-endian number from memory location \a src and returns the number in the
- host byte order representation.
- On CPU architectures where the host byte order is little-endian (such as x86) this
- will swap the byte order; otherwise it will just read from \a src.
-
- \note Template type \c{T} can either be a qint16, qint32 or qint64. Other types of
- integers, e.g., qlong, are not applicable.
-
- There are no data alignment constraints for \a src.
-
- \sa qFromLittleEndian()
- \sa qToBigEndian()
- \sa qToLittleEndian()
-*/
-/*!
- \fn T qFromBigEndian(T src)
- \since 4.3
- \relates <QtEndian>
- \overload
-
- Converts \a src from big-endian byte order and returns the number in host byte order
- representation of that number.
- On CPU architectures where the host byte order is little-endian (such as x86) this
- will return \a src with the byte order swapped; otherwise it will return \a src
- unmodified.
-*/
-/*!
- \fn T qFromLittleEndian(const uchar *src)
- \since 4.3
- \relates <QtEndian>
-
- Reads a little-endian number from memory location \a src and returns the number in
- the host byte order representation.
- On CPU architectures where the host byte order is big-endian (such as PowerPC) this
- will swap the byte order; otherwise it will just read from \a src.
-
- \note Template type \c{T} can either be a qint16, qint32 or qint64. Other types of
- integers, e.g., qlong, are not applicable.
-
- There are no data alignment constraints for \a src.
-
- \sa qFromBigEndian()
- \sa qToBigEndian()
- \sa qToLittleEndian()
-*/
-/*!
- \fn T qFromLittleEndian(T src)
- \since 4.3
- \relates <QtEndian>
- \overload
-
- Converts \a src from little-endian byte order and returns the number in host byte
- order representation of that number.
- On CPU architectures where the host byte order is big-endian (such as PowerPC) this
- will return \a src with the byte order swapped; otherwise it will return \a src
- unmodified.
-*/
-/*!
- \fn void qToBigEndian(T src, uchar *dest)
- \since 4.3
- \relates <QtEndian>
-
- Writes the number \a src with template type \c{T} to the memory location at \a dest
- in big-endian byte order.
-
- Note that template type \c{T} can only be an integer data type (signed or unsigned).
-
- There are no data alignment constraints for \a dest.
-
- \sa qFromBigEndian()
- \sa qFromLittleEndian()
- \sa qToLittleEndian()
-*/
-/*!
- \fn T qToBigEndian(T src)
- \since 4.3
- \relates <QtEndian>
- \overload
-
- Converts \a src from host byte order and returns the number in big-endian byte order
- representation of that number.
- On CPU architectures where the host byte order is little-endian (such as x86) this
- will return \a src with the byte order swapped; otherwise it will return \a src
- unmodified.
-*/
-/*!
- \fn void qToLittleEndian(T src, uchar *dest)
- \since 4.3
- \relates <QtEndian>
-
- Writes the number \a src with template type \c{T} to the memory location at \a dest
- in little-endian byte order.
-
- Note that template type \c{T} can only be an integer data type (signed or unsigned).
-
- There are no data alignment constraints for \a dest.
-
- \sa qFromBigEndian()
- \sa qFromLittleEndian()
- \sa qToBigEndian()
-*/
-/*!
- \fn T qToLittleEndian(T src)
- \since 4.3
- \relates <QtEndian>
- \overload
-
- Converts \a src from host byte order and returns the number in little-endian byte
- order representation of that number.
- On CPU architectures where the host byte order is big-endian (such as PowerPC) this
- will return \a src with the byte order swapped; otherwise it will return \a src
- unmodified.
-*/
-
diff --git a/doc/src/classes/qtestevent.qdoc b/doc/src/classes/qtestevent.qdoc
deleted file mode 100644
index 7c67d954e..000000000
--- a/doc/src/classes/qtestevent.qdoc
+++ /dev/null
@@ -1,191 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class QTestEventList
- \inmodule QtTest
-
- \brief The QTestEventList class provides a list of GUI events.
-
- QTestEventList inherits from QList<QTestEvent *>, and provides
- convenience functions for populating the list.
-
- A QTestEventList can be populated with GUI events that can be
- stored as test data for later usage, or be replayed on any
- QWidget.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qtestevent.qdoc 0
-
- The example above simulates the user entering the character \c a
- followed by a backspace, waiting for 200 milliseconds and
- repeating it.
-*/
-
-/*! \fn QTestEventList::QTestEventList()
-
- Constructs an empty QTestEventList.
-*/
-
-/*! \fn QTestEventList::QTestEventList(const QTestEventList &other)
-
- Constructs a new QTestEventList as a copy of \a other.
-*/
-
-/*! \fn QTestEventList::~QTestEventList()
-
- Empties the list and destroys all stored events.
-*/
-
-/*! \fn void QTestEventList::clear()
-
- Removes all events from the list.
-*/
-
-/*! \fn void QTestEventList::addKeyClick(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
-
- Adds a new key click to the list. The event will simulate the key \a qtKey with the modifier \a modifiers and then wait for \a msecs milliseconds.
-
- \sa QTest::keyClick()
-*/
-
-/*! \fn void QTestEventList::addKeyPress(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
-
- Adds a new key press to the list. The event will press the key \a qtKey with the modifier \a modifiers and then wait for \a msecs milliseconds.
-
- \sa QTest::keyPress()
-*/
-
-/*! \fn void QTestEventList::addKeyRelease(Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
-
- Adds a new key release to the list. The event will release the key \a qtKey with the modifier \a modifiers and then wait for \a msecs milliseconds.
-
- \sa QTest::keyRelease()
-
-*/
-
-/*! \fn void QTestEventList::addKeyEvent(QTest::KeyAction action, Qt::Key qtKey, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
- \internal
-*/
-
-/*! \fn void QTestEventList::addKeyClick(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
-
- \overload
-
- Adds a new key click to the list. The event will simulate the key \a ascii with the modifier \a modifiers and then wait for \a msecs milliseconds.
-
- \sa QTest::keyClick()
-
-*/
-
-/*! \fn void QTestEventList::addKeyPress(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
-
- \overload
-
- Adds a new key press to the list. The event will press the key \a ascii with the modifier \a modifiers and then wait for \a msecs milliseconds.
-
- \sa QTest::keyPress()
-*/
-
-/*! \fn void QTestEventList::addKeyRelease(char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
-
- \overload
-
- Adds a new key release to the list. The event will release the key \a ascii with the modifier \a modifiers and then wait for \a msecs milliseconds.
-
- \sa QTest::keyRelease()
-*/
-
-/*! \fn void QTestEventList::addKeyClicks(const QString &keys, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
-
- Adds new keyboard entries to the list. The event will press the \a keys with the \a modifiers and wait \a msecs milliseconds between each key.
-
- \sa QTest::keyClicks()
-*/
-
-/*! \fn void QTestEventList::addKeyEvent(QTest::KeyAction action, char ascii, Qt::KeyboardModifiers modifiers = Qt::NoModifier, int msecs = -1)
- \internal
-*/
-
-/*! \fn void QTestEventList::addDelay(int msecs)
-
- Adds a \a msecs milliseconds delay.
-
- \sa QTest::qWait()
-*/
-
-/*! \fn void QTestEventList::simulate(QWidget *w)
-
- Simulates the events from the list one by one on the widget \a w.
- For an example, please read the \l QTestEventList class documentation.
-*/
-
-/*! \fn void QTestEventList::addMousePress(Qt::MouseButton button, Qt::KeyboardModifiers modifiers = 0, QPoint pos = QPoint(), int delay=-1)
-
- Add a mouse press to the list. The event will press the \a button with optional \a modifiers at the position \a pos with an optional \a delay. The default position is the center of the widget.
-
- \sa QTest::mousePress()
-*/
-/*! \fn void QTestEventList::addMouseRelease(Qt::MouseButton button, Qt::KeyboardModifiers modifiers = 0, QPoint pos = QPoint(), int delay=-1)
-
- Add a mouse release to the list. The event will release the \a button with optional \a modifiers at the position \a pos with an optional \a delay. The default position is the center of the widget.
-
- \sa QTest::mouseRelease()
-*/
-/*! \fn void QTestEventList::addMouseClick(Qt::MouseButton button, Qt::KeyboardModifiers modifiers = 0, QPoint pos = QPoint(), int delay=-1)
-
- Add a mouse click to the list. The event will click the \a button with optional \a modifiers at the position \a pos with an optional \a delay. The default position is the center of the widget.
-
- \sa QTest::mouseClick()
-*/
-/*! \fn void QTestEventList::addMouseDClick(Qt::MouseButton button, Qt::KeyboardModifiers modifiers = 0, QPoint pos = QPoint(), int delay=-1)
-
- Add a double mouse click to the list. The event will double click the \a button with optional \a modifiers at the position \a pos with an optional \a delay. The default position is the center of the widget.
-
- \sa QTest::mousePress()
-*/
-/*! \fn void QTestEventList::addMouseMove(QPoint pos = QPoint(), int delay=-1)
-
- Adds a mouse move to the list. The event will move the mouse to the position \a pos. If a \a delay (in milliseconds) is set, the test will wait after moving the mouse. The default position is the center of the widget.
-
- \sa QTest::mousePress()
-*/
-
diff --git a/doc/src/classes/qvarlengtharray.qdoc b/doc/src/classes/qvarlengtharray.qdoc
deleted file mode 100644
index 9cc7bef73..000000000
--- a/doc/src/classes/qvarlengtharray.qdoc
+++ /dev/null
@@ -1,274 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class QVarLengthArray
- \brief The QVarLengthArray class provides a low-level variable-length array.
-
- \ingroup tools
- \reentrant
-
- The C++ language doesn't support variable-length arrays on the stack.
- For example, the following code won't compile:
-
- \snippet doc/src/snippets/code/doc_src_qvarlengtharray.qdoc 0
-
- The alternative is to allocate the array on the heap (with
- \c{new}):
-
- \snippet doc/src/snippets/code/doc_src_qvarlengtharray.qdoc 1
-
- However, if myfunc() is called very frequently from the
- application's inner loop, heap allocation can be a major source
- of slowdown.
-
- QVarLengthArray is an attempt to work around this gap in the C++
- language. It allocates a certain number of elements on the stack,
- and if you resize the array to a larger size, it automatically
- uses the heap instead. Stack allocation has the advantage that
- it is much faster than heap allocation.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qvarlengtharray.qdoc 2
-
- In the example above, QVarLengthArray will preallocate 1024
- elements on the stack and use them unless \c{n + 1} is greater
- than 1024. If you omit the second template argument,
- QVarLengthArray's default of 256 is used.
-
- QVarLengthArray's value type must be an \l{assignable data type}.
- This covers most data types that are commonly used, but the
- compiler won't let you, for example, store a QWidget as a value;
- instead, store a QWidget *.
-
- QVarLengthArray, like QVector, provides a resizable array data
- structure. The main differences between the two classes are:
-
- \list
- \o QVarLengthArray's API is much more low-level. It provides no
- iterators and lacks much of QVector's functionality.
-
- \o QVarLengthArray doesn't initialize the memory if the value is
- a basic type. (QVector always does.)
-
- \o QVector uses \l{implicit sharing} as a memory optimization.
- QVarLengthArray doesn't provide that feature; however, it
- usually produces slightly better performance due to reduced
- overhead, especially in tight loops.
- \endlist
-
- In summary, QVarLengthArray is a low-level optimization class
- that only makes sense in very specific cases. It is used a few
- places inside Qt and was added to Qt's public API for the
- convenience of advanced users.
-
- \sa QVector, QList, QLinkedList
-*/
-
-/*! \fn QVarLengthArray::QVarLengthArray(int size)
-
- Constructs an array with an initial size of \a size elements.
-
- If the value type is a primitive type (e.g., char, int, float) or
- a pointer type (e.g., QWidget *), the elements are not
- initialized. For other types, the elements are initialized with a
- \l{default-constructed value}.
-*/
-
-/*! \fn QVarLengthArray::~QVarLengthArray()
-
- Destroys the array.
-*/
-
-/*! \fn int QVarLengthArray::size() const
-
- Returns the number of elements in the array.
-
- \sa isEmpty(), resize()
-*/
-
-/*! \fn int QVarLengthArray::count() const
-
- Same as size().
-
- \sa isEmpty(), resize()
-*/
-
-/*! \fn bool QVarLengthArray::isEmpty() const
-
- Returns true if the array has size 0; otherwise returns false.
-
- \sa size(), resize()
-*/
-
-/*! \fn void QVarLengthArray::clear()
-
- Removes all the elements from the array.
-
- Same as resize(0).
-*/
-
-/*! \fn void QVarLengthArray::resize(int size)
-
- Sets the size of the array to \a size. If \a size is greater than
- the current size, elements are added to the end. If \a size is
- less than the current size, elements are removed from the end.
-
- If the value type is a primitive type (e.g., char, int, float) or
- a pointer type (e.g., QWidget *), new elements are not
- initialized. For other types, the elements are initialized with a
- \l{default-constructed value}.
-
- \sa size()
-*/
-
-/*! \fn int QVarLengthArray::capacity() const
-
- Returns the maximum number of elements that can be stored in the
- array without forcing a reallocation.
-
- The sole purpose of this function is to provide a means of fine
- tuning QVarLengthArray's memory usage. In general, you will rarely ever
- need to call this function. If you want to know how many items are
- in the array, call size().
-
- \sa reserve()
-*/
-
-/*! \fn void QVarLengthArray::reserve(int size)
-
- Attempts to allocate memory for at least \a size elements. If you
- know in advance how large the array can get, you can call this
- function and if you call resize() often, you are likely to get
- better performance. If \a size is an underestimate, the worst
- that will happen is that the QVarLengthArray will be a bit
- slower.
-
- The sole purpose of this function is to provide a means of fine
- tuning QVarLengthArray's memory usage. In general, you will
- rarely ever need to call this function. If you want to change the
- size of the array, call resize().
-
- \sa capacity()
-*/
-
-/*! \fn T &QVarLengthArray::operator[](int i)
-
- Returns a reference to the item at index position \a i.
-
- \a i must be a valid index position in the array (i.e., 0 <= \a i
- < size()).
-
- \sa data()
-*/
-
-/*! \fn const T &QVarLengthArray::operator[](int i) const
-
- \overload
-*/
-
-
-/*!
- \fn void QVarLengthArray::append(const T &t)
-
- Appends item \a t to the array, extending the array if necessary.
-
- \sa removeLast()
-*/
-
-
-/*!
- \fn inline void QVarLengthArray::removeLast()
- \since 4.5
-
- Decreases the size of the array by one. The allocated size is not changed.
-
- \sa append()
-*/
-
-/*!
- \fn void QVarLengthArray::append(const T *buf, int size)
-
- Appends \a size amount of items referenced by \a buf to this array.
-*/
-
-
-/*! \fn T *QVarLengthArray::data()
-
- Returns a pointer to the data stored in the array. The pointer can
- be used to access and modify the items in the array.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qvarlengtharray.qdoc 3
-
- The pointer remains valid as long as the array isn't reallocated.
-
- This function is mostly useful to pass an array to a function
- that accepts a plain C++ array.
-
- \sa constData(), operator[]()
-*/
-
-/*! \fn const T *QVarLengthArray::data() const
-
- \overload
-*/
-
-/*! \fn const T *QVarLengthArray::constData() const
-
- Returns a const pointer to the data stored in the array. The
- pointer can be used to access the items in the array. The
- pointer remains valid as long as the array isn't reallocated.
-
- This function is mostly useful to pass an array to a function
- that accepts a plain C++ array.
-
- \sa data(), operator[]()
-*/
-
-/*! \fn QVarLengthArray<T, Prealloc> &QVarLengthArray::operator=(const QVarLengthArray<T, Prealloc> &other)
- Assigns \a other to this array and returns a reference to this array.
- */
-
-/*! \fn QVarLengthArray::QVarLengthArray(const QVarLengthArray<T, Prealloc> &other)
- Constructs a copy of \a other.
- */
-
diff --git a/doc/src/classes/qwaitcondition.qdoc b/doc/src/classes/qwaitcondition.qdoc
deleted file mode 100644
index f19f51e04..000000000
--- a/doc/src/classes/qwaitcondition.qdoc
+++ /dev/null
@@ -1,188 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \class QWaitCondition
- \brief The QWaitCondition class provides a condition variable for
- synchronizing threads.
-
- \threadsafe
-
- \ingroup thread
- \ingroup environment
-
- QWaitCondition allows a thread to tell other threads that some
- sort of condition has been met. One or many threads can block
- waiting for a QWaitCondition to set a condition with wakeOne() or
- wakeAll(). Use wakeOne() to wake one randomly selected condition or
- wakeAll() to wake them all.
-
- For example, let's suppose that we have three tasks that should
- be performed whenever the user presses a key. Each task could be
- split into a thread, each of which would have a
- \l{QThread::run()}{run()} body like this:
-
- \snippet doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp 0
-
- Here, the \c keyPressed variable is a global variable of type
- QWaitCondition.
-
- A fourth thread would read key presses and wake the other three
- threads up every time it receives one, like this:
-
- \snippet doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp 1
-
- The order in which the three threads are woken up is undefined.
- Also, if some of the threads are still in \c do_something() when
- the key is pressed, they won't be woken up (since they're not
- waiting on the condition variable) and so the task will not be
- performed for that key press. This issue can be solved using a
- counter and a QMutex to guard it. For example, here's the new
- code for the worker threads:
-
- \snippet doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp 2
-
- Here's the code for the fourth thread:
-
- \snippet doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp 3
-
- The mutex is necessary because the results of two threads
- attempting to change the value of the same variable
- simultaneously are unpredictable.
-
- Wait conditions are a powerful thread synchronization primitive.
- The \l{threads/waitconditions}{Wait Conditions} example shows how
- to use QWaitCondition as an alternative to QSemaphore for
- controlling access to a circular buffer shared by a producer
- thread and a consumer thread.
-
- \sa QMutex, QSemaphore, QThread, {Wait Conditions Example}
-*/
-
-/*!
- \fn QWaitCondition::QWaitCondition()
-
- Constructs a new wait condition object.
-*/
-
-/*!
- \fn QWaitCondition::~QWaitCondition()
-
- Destroys the wait condition object.
-*/
-
-/*!
- \fn void QWaitCondition::wakeOne()
-
- Wakes one thread waiting on the wait condition. The thread that
- is woken up depends on the operating system's scheduling
- policies, and cannot be controlled or predicted.
-
- If you want to wake up a specific thread, the solution is
- typically to use different wait conditions and have different
- threads wait on different conditions.
-
- \sa wakeAll()
-*/
-
-/*!
- \fn void QWaitCondition::wakeAll()
-
- Wakes all threads waiting on the wait condition. The order in
- which the threads are woken up depends on the operating system's
- scheduling policies and cannot be controlled or predicted.
-
- \sa wakeOne()
-*/
-
-/*!
- \fn bool QWaitCondition::wait(QMutex *mutex, unsigned long time)
-
- Releases the locked \a mutex and waits on the wait condition. The
- \a mutex must be initially locked by the calling thread. If \a
- mutex is not in a locked state, this function returns
- immediately. If \a mutex is a recursive mutex, this function
- returns immediately. The \a mutex will be unlocked, and the
- calling thread will block until either of these conditions is met:
-
- \list
- \o Another thread signals it using wakeOne() or wakeAll(). This
- function will return true in this case.
- \o \a time milliseconds has elapsed. If \a time is \c ULONG_MAX
- (the default), then the wait will never timeout (the event
- must be signalled). This function will return false if the
- wait timed out.
- \endlist
-
- The mutex will be returned to the same locked state. This
- function is provided to allow the atomic transition from the
- locked state to the wait state.
-
- \sa wakeOne(), wakeAll()
-*/
-
-/*!
- \fn bool QWaitCondition::wait(QReadWriteLock *readWriteLock, unsigned long time)
- \since 4.4
-
- Releases the locked \a readWriteLock and waits on the wait
- condition. The \a readWriteLock must be initially locked by the
- calling thread. If \a readWriteLock is not in a locked state, this
- function returns immediately. The \a readWriteLock must not be
- locked recursively, otherwise this function will not release the
- lock properly. The \a readWriteLock will be unlocked, and the
- calling thread will block until either of these conditions is met:
-
- \list
- \o Another thread signals it using wakeOne() or wakeAll(). This
- function will return true in this case.
- \o \a time milliseconds has elapsed. If \a time is \c ULONG_MAX
- (the default), then the wait will never timeout (the event
- must be signalled). This function will return false if the
- wait timed out.
- \endlist
-
- The \a readWriteLock will be returned to the same locked
- state. This function is provided to allow the atomic transition
- from the locked state to the wait state.
-
- \sa wakeOne(), wakeAll()
-*/
diff --git a/doc/src/codecs.qdoc b/doc/src/codecs.qdoc
deleted file mode 100644
index 7359b79d4..000000000
--- a/doc/src/codecs.qdoc
+++ /dev/null
@@ -1,534 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page codec-big5.html
- \title Big5 Text Codec
- \ingroup codecs
-
- The Big5 codec provides conversion to and from the Big5 encoding.
- The code was originally contributed by Ming-Che Chuang
- \<mingche@cobra.ee.ntu.edu.tw\> for the Big-5+ encoding, and was
- included in Qt with the author's permission, and the grateful
- thanks of the Qt team. (Note: Ming-Che's code is QPL'd, as
- per an mail to qt-info@nokia.com.)
-
- However, since Big-5+ was never formally approved, and was never
- used by anyone, the Taiwan Free Software community and the Li18nux
- Big5 Standard Subgroup agree that the de-facto standard Big5-ETen
- (zh_TW.Big5 or zh_TW.TW-Big5) be used instead.
-
- The Big5 is currently implemented as a pure subset of the
- Big5-HKSCS codec, so more fine-tuning is needed to make it
- identical to the standard Big5 mapping as determined by
- Li18nux-Big5. See \l{http://www.autrijus.org/xml/} for the draft
- Big5 (2002) standard.
-
- James Su \<suzhe@turbolinux.com.cn\> \<suzhe@gnuchina.org\>
- generated the Big5-HKSCS-to-Unicode tables with a very
- space-efficient algorithm. He generously donated his code to glibc
- in May 2002. Subsequently, James has kindly allowed Anthony Fok
- \<anthony@thizlinux.com\> \<foka@debian.org\> to adapt the code
- for Qt.
-
- \legalese
- Copyright (C) 2000 Ming-Che Chuang \BR
- Copyright (C) 2002 James Su, Turbolinux Inc. \BR
- Copyright (C) 2002 Anthony Fok, ThizLinux Laboratory Ltd.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- \list 1
- \o Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- \o 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.
- \endlist
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 REGENTS 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.
- \endlegalese
-*/
-
-/*!
- \page codec-big5hkscs.html
- \title Big5-HKSCS Text Codec
- \ingroup codecs
-
- The Big5-HKSCS codec provides conversion to and from the
- Big5-HKSCS encoding.
-
- The codec grew out of the QBig5Codec originally contributed by
- Ming-Che Chuang \<mingche@cobra.ee.ntu.edu.tw\>. James Su
- \<suzhe@turbolinux.com.cn\> \<suzhe@gnuchina.org\> and Anthony Fok
- \<anthony@thizlinux.com\> \<foka@debian.org\> implemented HKSCS-1999
- QBig5hkscsCodec for Qt-2.3.x, but it was too late in Qt development
- schedule to be officially included in the Qt-2.3.x series.
-
- Wu Yi \<wuyi@hancom.com\> ported the HKSCS-1999 QBig5hkscsCodec to
- Qt-3.0.1 in March 2002.
-
- With the advent of the new HKSCS-2001 standard, James Su
- \<suzhe@turbolinux.com.cn\> \<suzhe@gnuchina.org\> generated the
- Big5-HKSCS<->Unicode tables with a very space-efficient algorithm.
- He generously donated his code to glibc in May 2002. Subsequently,
- James has generously allowed Anthony Fok to adapt the code for
- Qt-3.0.5.
-
- Currently, the Big5-HKSCS tables are generated from the following
- sources, and with the Euro character added:
- \list 1
- \o \l{http://www.microsoft.com/typography/unicode/950.txt}
- \o \l{http://www.info.gov.hk/digital21/chi/hkscs/download/big5-iso.txt}
- \o \l{http://www.info.gov.hk/digital21/chi/hkscs/download/big5cmp.txt}
- \endlist
-
- There may be more fine-tuning to the QBig5hkscsCodec to maximize its
- compatibility with the standard Big5 (2002) mapping as determined by
- Li18nux Big5 Standard Subgroup. See \l{http://www.autrijus.org/xml/}
- for the various Big5 CharMapML tables.
-
- \legalese
- Copyright (C) 2000 Ming-Che Chuang \BR
- Copyright (C) 2001, 2002 James Su, Turbolinux Inc. \BR
- Copyright (C) 2002 WU Yi, HancomLinux Inc. \BR
- Copyright (C) 2001, 2002 Anthony Fok, ThizLinux Laboratory Ltd.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- \list 1
- \o Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- \o 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.
- \endlist
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 REGENTS 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.
- \endlegalese
-*/
-
-/*!
- \page codec-eucjp.html
- \title EUC-JP Text Codec
- \ingroup codecs
-
- The EUC-JP codec provides conversion to and from EUC-JP, the main
- legacy encoding for Unix machines in Japan.
-
- The environment variable \c UNICODEMAP_JP can be used to
- fine-tune the JIS, Shift-JIS, and EUC-JP codecs. The \l{ISO
- 2022-JP (JIS) Text Codec} documentation describes how to use this
- variable.
-
- Most of the code here was written by Serika Kurusugawa,
- a.k.a. Junji Takagi, and is included in Qt with the author's
- permission and the grateful thanks of the Qt team. Here is
- the copyright statement for that code:
-
- \legalese
-
- Copyright (C) 1999 Serika Kurusugawa. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- \list 1
- \o Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- \o 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.
- \endlist
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS".
- 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 REGENTS 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.
- \endlegalese
-*/
-
-/*!
- \page codec-euckr.html
- \title EUC-KR Text Codec
- \ingroup codecs
-
- The EUC-KR codec provides conversion to and from EUC-KR, KR, the
- main legacy encoding for Unix machines in Korea.
-
- It was largely written by Mizi Research Inc. Here is the
- copyright statement for the code as it was at the point of
- contribution. The subsequent modifications are covered by
- the usual copyright for Qt.
-
- \legalese
-
- Copyright (C) 1999-2000 Mizi Research Inc. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- \list 1
- \o Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- \o 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.
- \endlist
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 REGENTS 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.
- \endlegalese
-*/
-
-/*!
- \page codec-gbk.html
- \title GBK Text Codec
- \ingroup codecs
-
- The GBK codec provides conversion to and from the Chinese
- GB18030/GBK/GB2312 encoding.
-
- GBK, formally the Chinese Internal Code Specification, is a commonly
- used extension of GB 2312-80. Microsoft Windows uses it under the
- name codepage 936.
-
- GBK has been superseded by the new Chinese national standard
- GB 18030-2000, which added a 4-byte encoding while remaining
- compatible with GB2312 and GBK. The new GB 18030-2000 may be described
- as a special encoding of Unicode 3.x and ISO-10646-1.
-
- Special thanks to charset gurus Markus Scherer (IBM),
- Dirk Meyer (Adobe Systems) and Ken Lunde (Adobe Systems) for publishing
- an excellent GB 18030-2000 summary and specification on the Internet.
- Some must-read documents are:
-
- \list
- \o \l{ftp://ftp.oreilly.com/pub/examples/nutshell/cjkv/pdf/GB18030_Summary.pdf}
- \o \l{http://oss.software.ibm.com/cvs/icu/~checkout~/charset/source/gb18030/gb18030.html}
- \o \l{http://oss.software.ibm.com/cvs/icu/~checkout~/charset/data/xml/gb-18030-2000.xml}
- \endlist
-
- The GBK codec was contributed to Qt by
- Justin Yu \<justiny@turbolinux.com.cn\> and
- Sean Chen \<seanc@turbolinux.com.cn\>. They may also be reached at
- Yu Mingjian \<yumj@sun.ihep.ac.cn\>, \<yumingjian@china.com\>
- Chen Xiangyang \<chenxy@sun.ihep.ac.cn\>
-
- The GB18030 codec Qt functions were contributed to Qt by
- James Su \<suzhe@gnuchina.org\>, \<suzhe@turbolinux.com.cn\>
- who pioneered much of GB18030 development on GNU/Linux systems.
-
- The GB18030 codec was contributed to Qt by
- Anthony Fok \<anthony@thizlinux.com\>, \<foka@debian.org\>
- using a Perl script to generate C++ tables from gb-18030-2000.xml
- while merging contributions from James Su, Justin Yu and Sean Chen.
- A copy of the source Perl script is available at
- \l{http://people.debian.org/~foka/gb18030/gen-qgb18030codec.pl}
-
- The copyright notice for their code follows:
-
- \legalese
- Copyright (C) 2000 TurboLinux, Inc. Written by Justin Yu and Sean Chen. \BR
- Copyright (C) 2001, 2002 Turbolinux, Inc. Written by James Su. \BR
- Copyright (C) 2001, 2002 ThizLinux Laboratory Ltd. Written by Anthony Fok.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- \list 1
- \o Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- \o 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.
- \endlist
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 REGENTS 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.
- \endlegalese
-*/
-
-/*!
- \page codecs-jis.html
- \title ISO 2022-JP (JIS) Text Codec
- \ingroup codecs
-
- The JIS codec provides conversion to and from ISO 2022-JP.
-
- The environment variable \c UNICODEMAP_JP can be used to
- fine-tune the JIS, Shift-JIS, and EUC-JP codecs. The mapping
- names are as for the Japanese XML working group's \link
- http://www.y-adagio.com/public/standards/tr_xml_jpf/toc.htm XML
- Japanese Profile\endlink, because it names and explains all the
- widely used mappings. Here are brief descriptions, written by
- Serika Kurusugawa:
-
- \list
-
- \o "unicode-0.9" or "unicode-0201" for Unicode style. This assumes
- JISX0201 for 0x00-0x7f. (0.9 is a table version of jisx02xx mapping
- used for Unicode 1.1.)
-
- \o "unicode-ascii" This assumes US-ASCII for 0x00-0x7f; some
- chars (JISX0208 0x2140 and JISX0212 0x2237) are different from
- Unicode 1.1 to avoid conflict.
-
- \o "open-19970715-0201" ("open-0201" for convenience) or
- "jisx0221-1995" for JISX0221-JISX0201 style. JIS X 0221 is JIS
- version of Unicode, but a few chars (0x5c, 0x7e, 0x2140, 0x216f,
- 0x2131) are different from Unicode 1.1. This is used when 0x5c is
- treated as YEN SIGN.
-
- \o "open-19970715-ascii" ("open-ascii" for convenience) for
- JISX0221-ASCII style. This is used when 0x5c is treated as REVERSE
- SOLIDUS.
-
- \o "open-19970715-ms" ("open-ms" for convenience) or "cp932" for
- Microsoft Windows style. Windows Code Page 932. Some chars (0x2140,
- 0x2141, 0x2142, 0x215d, 0x2171, 0x2172) are different from Unicode
- 1.1.
-
- \o "jdk1.1.7" for Sun's JDK style. Same as Unicode 1.1, except that
- JIS 0x2140 is mapped to UFF3C. Either ASCII or JISX0201 can be used
- for 0x00-0x7f.
-
- \endlist
-
- In addition, the extensions "nec-vdc", "ibm-vdc" and "udc" are
- supported.
-
- For example, if you want to use Unicode style conversion but with
- NEC's extension, set \c UNICODEMAP_JP to \c {unicode-0.9,
- nec-vdc}. (You will probably need to quote that in a shell
- command.)
-
- Most of the code here was written by Serika Kurusugawa,
- a.k.a. Junji Takagi, and is included in Qt with the author's
- permission and the grateful thanks of the Qt team. Here is
- the copyright statement for that code:
-
- \legalese
-
- Copyright (C) 1999 Serika Kurusugawa. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- \list 1
- \o Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- \o 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.
- \endlist
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS".
- 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 REGENTS 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.
- \endlegalese
-*/
-
-/*!
- \page codec-sjis.html
- \title Shift-JIS Text Codec
- \ingroup codecs
-
- The Shift-JIS codec provides conversion to and from Shift-JIS, an
- encoding of JIS X 0201 Latin, JIS X 0201 Kana and JIS X 0208.
-
- The environment variable \c UNICODEMAP_JP can be used to
- fine-tune the codec. The \l{ISO 2022-JP (JIS) Text Codec}
- documentation describes how to use this variable.
-
- Most of the code here was written by Serika Kurusugawa, a.k.a.
- Junji Takagi, and is included in Qt with the author's permission
- and the grateful thanks of the Qt team. Here is the
- copyright statement for the code as it was at the point of
- contribution. The subsequent modifications are covered by
- the usual copyright for Qt.
-
- \legalese
-
- Copyright (C) 1999 Serika Kurusugawa. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- \list 1
- \o Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- \o 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.
- \endlist
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS".
- 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 REGENTS 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.
- \endlegalese
-*/
-
-/*!
- \page codec-tscii.html
- \title TSCII Text Codec
- \ingroup codecs
-
- The TSCII codec provides conversion to and from the Tamil TSCII
- encoding.
-
- TSCII, formally the Tamil Standard Code Information Interchange
- specification, is a commonly used charset for Tamils. The
- official page for the standard is at
- \link http://www.tamil.net/tscii/ http://www.tamil.net/tscii/\endlink
-
- This codec uses the mapping table found at
- \link http://www.geocities.com/Athens/5180/tsciiset.html
- http://www.geocities.com/Athens/5180/tsciiset.html\endlink.
- Tamil uses composed Unicode which might cause some
- problems if you are using Unicode fonts instead of TSCII fonts.
-
- Most of the code was written by Hans Petter Bieker and is
- included in Qt with the author's permission and the grateful
- thanks of the Qt team. Here is the copyright statement for
- the code as it was at the point of contribution. The
- subsequent modifications are covered by the usual copyright for
- Qt:
-
- \legalese
-
- Copyright (c) 2000 Hans Petter Bieker. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- \list 1
- \o Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- \o 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.
- \endlist
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 REGENTS 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.
- \endlegalese
-*/
diff --git a/doc/src/compiler-notes.qdoc b/doc/src/compiler-notes.qdoc
deleted file mode 100644
index 4873cf558..000000000
--- a/doc/src/compiler-notes.qdoc
+++ /dev/null
@@ -1,278 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page compiler-notes.html
- \ingroup platform-notes
- \title Compiler Notes
- \brief Information about the C++ compilers and tools used to build Qt.
-
- This page contains information about the C++ compilers and tools used
- to build Qt on various platforms.
-
- \tableofcontents
-
- Please refer to the \l{Platform Notes} for information on the platforms
- Qt is currently known to run on, and see the \l{Supported Platforms}
- page for information about the status of each platform.
-
- If you have anything to add to this list or any of the platform or
- compiler-specific pages, please submit it via the \l{Bug Report Form}
- or through the \l{Public Qt Repository}.
-
- \section1 Supported Features
-
- Not all compilers used to build Qt are able to compile all modules. The following table
- shows the compiler support for five modules that are not uniformly available for all
- platforms and compilers.
-
- \table
- \header \o Compiler \o{5,1} Features
- \header \o \o Concurrent \o XmlPatterns \o WebKit \o CLucene \o Phonon
- \row \o g++ 3.3 \o \o \bold{X} \o \o \bold{X} \o \bold{X}
- \row \o g++ 3.4 and up \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
- \row
- \row \o SunCC 5.5 \o \o \o \o \bold{X} \o \bold{X}
- \row
- \row \o aCC series 3 \o \o \o \o \bold{X} \o \bold{X}
- \row \o aCC series 6 \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
- \row \o xlC 6 \o \o \o \o \bold{X} \o \bold{X}
- \row \o Intel CC 10 \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
- \row
- \row \o MSVC 2003 \o \bold{X} \o \bold{X} \o \o \bold{X} \o \bold{X}
- \row \o MSVC 2005 and up \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
- \endtable
-
- \target GCC
- \section1 GCC
-
- \section2 GCC on Windows (MinGW)
-
- We have tested Qt with this compiler on Windows XP.
- The minimal version of MinGW supported is:
-
- \list
- \o GCC 3.4.2
- \o MinGW runtime 3.7
- \o win32api 3.2
- \o binutils 2.15.91
- \o mingw32-make 3.80.0-3
- \endlist
-
- \section2 GCC 4.0.0
-
- The released package of the compiler has some bugs that lead to miscompilations.
- We recommend using GCC 4.0.1 or later, or to use a recent CVS snapshot of the
- GCC 4.0 branch. The version of GCC 4.0.0 that is shipped with Mac OS X 10.4
- "Tiger" is known to work with Qt for Mac OS X.
-
- \section2 HP-UX
-
- The hpux-g++ platform is tested with GCC 3.4.4.
-
- \section2 Solaris
-
- Please use GCC 3.4.2 or later.
-
- \section2 Mac OS X
-
- Please use the latest GCC 3.3 from Apple or a later version of GCC 3.
- The gcc 3.3 that is provided with Xcode 1.5 is known to generate bad code.
- Use the November 2004 GCC 3.3 updater \l{http://connect.apple.com}{available from Apple}.
-
- \section2 GCC 3.4.6 (Debian 3.4.6-5) on AMD64 (x86_64)
-
- This compiler is known to miscompile some parts of Qt when doing a
- release build. There are several workarounds:
-
- \list 1
- \o Use a debug build instead.
- \o For each miscompilation encountered, recompile the file, removing the -O2 option.
- \o Add -fno-gcse to the QMAKE_CXXFLAGS_RELEASE.
- \endlist
-
- \section1 HP ANSI C++ (aCC)
-
- The hpux-acc-32 and hpux-acc-64 platforms are tested with aCC A.03.57. The
- hpuxi-acc-32 and hpuxi-acc-64 platforms are tested with aCC A.06.10.
-
- \section1 Intel C++ Compiler
-
- Qt supports the Intel C++ compiler on both Windows and Linux.
- However, there are a few issues on Linux (see the following
- section).
-
- \section2 Intel C++ Compiler for Linux
-
- Nokia currently tests the following compilers:
-
- \list
-
- \o Intel(R) C++ Compiler for applications running on IA-32,
- Version 10.1 Build 20080602 Package ID: l_cc_p_10.1.017
-
- \o Intel(R) C++ Compiler for applications running on Intel(R) 64,
- Version 10.1 Build 20080602 Package ID: l_cc_p_10.1.017
-
- \endlist
-
- We do not currently test the IA-64 (Itanium) compiler.
-
- \section2 Known Issues with Intel C++ Compiler for Linux
-
- \list
-
- \o Precompiled header support does not work in version 10.0.025
- and older. For these compilers, you should configure Qt with
- -no-pch. Precompiled header support works properly in version
- 10.0.026 and later.
- \o Version 10.0.026 for Intel 64 is known to miscompile qmake when
- building in release mode. For now, configure Qt with
- -debug. Version 10.1.008 and later can compile qmake in release
- mode.
- \o Versions 10.1.008 to 10.1.015 for both IA-32 and Intel 64 are
- known crash with "(0): internal error: 0_47021" when compiling
- QtXmlPatterns, QtWebKit, and Designer in release mode. Version
- 10.1.017 compiles these modules correctly in release mode.
- \endlist
-
- \section2 Intel C++ Compiler (Windows, Altix)
-
- Qt 4 has been tested successfully with:
-
- \list
- \o Windows - Intel(R) C++ Compiler for 32-bit applications,
- Version 8.1 Build 20050309Z Package ID: W_CC_PC_8.1.026
- \o Altix - Intel(R) C++ Itanium(R) Compiler for Itanium(R)-based
- applications Version 8.1 Build 20050406 Package ID: l_cc_pc_8.1.030
- \endlist
-
- We currently only test the Intel compiler on 32-bit Windows versions.
-
- \section1 MIPSpro (IRIX)
-
- \bold{IRIX is an unsupported platform. See the \l{Supported Platforms} page
- and Qt's Software's online \l{Platform Support Policy} page for details.}
-
- Qt 4.4.x requires MIPSpro version 7.4.2m.
-
- Note that MIPSpro version 7.4.4m is currently not supported, since it has
- introduced a number of problems that have not yet been resolved.
- We recommend using 7.4.2m for Qt development. However, please note the
- unsupported status of this platform.
-
- \target Sun Studio
- \section1 Forte Developer / Sun Studio (Solaris)
-
- \section2 Sun Studio
-
- Qt is tested using Sun Studio 8 (Sun CC 5.5). Go to
- \l{Sun Studio Patches} page on Sun's Web site to download
- the latest patches for your Sun compiler.
-
- \section2 Sun WorkShop 5.0
-
- Sun WorkShop 5.0 is not supported with Qt 4.
-
- \section1 Visual Studio (Windows)
-
- We do most of our Windows development on Windows XP, using Microsoft
- Visual Studio .NET 2005 and Visual Studio 2008 (both the 32- and 64-bit
- versions).
-
- Qt works with the Standard Edition, the Professional Edition and Team
- System Edition of Visual Studio 2005.
-
- We also test Qt 4 on Windows XP with Visual Studio .NET and Visual Studio 2003.
-
- In order to use Qt with the Visual Studio 2005/2008 Express Edition you need
- to download and install the platform SDK. Due to limitations in the
- Express Edition it is not possible for us to install the Qt Visual
- Studio Integration. You will need to use our command line tools to
- build Qt applications with this edition.
-
- The Visual C++ Linker doesn't understand filenames with spaces (as in
- \c{C:\Program files\Qt\}) so you will have to move it to another place,
- or explicitly set the path yourself; for example:
-
- \snippet doc/src/snippets/code/doc_src_compiler-notes.qdoc 0
-
- If you are experiencing strange problems with using special flags that
- modify the alignment of structure and union members (such as \c{/Zp2})
- then you will need to recompile Qt with the flags set for the
- application as well.
-
- If you're using Visual Studio .NET (2002) Standard Edition, you should be
- using the Qt binary package provided, and not the source package.
- As the Standard Edition does not optimize compiled code, your compiled
- version of Qt would perform suboptimally with respect to speed.
-
- With Visual Studio 2005 Service Pack 1 a bug was introduced which
- causes Qt not to compile, this has been fixed with a hotfix available
- from Microsoft. See this
- \l{http://qt.nokia.com/developer/faqs/faq.2006-12-18.3281869860}{Knowledge Base entry}
- for more information.
-
- \section1 IBM xlC (AIX)
-
- The makeC++SharedLib utility must be in your PATH and be up to date to
- build shared libraries. From IBM's
- \l{http://www.redbooks.ibm.com/abstracts/sg245674.html}{C and C++ Application Development on AIX}
- Redbook:
-
- \list
- \o "The second step is to use the makeC++SharedLib command to create the
- shared object. The command has many optional arguments, but in its
- simplest form, can be used as follows:"
- \snippet doc/src/snippets/code/doc_src_compiler-notes.qdoc 1
- \o "The full path name to the command is not required; however, to avoid
- this, you will have to add the directory in which it is located to
- your PATH environment variable. The command is located in the
- /usr/vacpp/bin directory with the VisualAge C++ Professional for AIX,
- Version 5 compiler."
- \endlist
-
- \section2 VisualAge C++ for AIX, Version 6.0
-
- Make sure you have the
- \l{http://www-1.ibm.com/support/search.wss?rs=32&amp;tc=SSEP5D&amp;dc=D400}{latest upgrades}
- installed.
-*/
diff --git a/doc/src/containers.qdoc b/doc/src/containers.qdoc
deleted file mode 100644
index 49dae638b..000000000
--- a/doc/src/containers.qdoc
+++ /dev/null
@@ -1,775 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \group containers
- \title Generic Containers
- \ingroup architecture
- \ingroup groups
- \keyword container class
- \keyword container classes
-
- \brief Qt's template-based container classes.
-
- \tableofcontents
-
- \section1 Introduction
-
- The Qt library provides a set of general purpose template-based
- container classes. These classes can be used to store items of a
- specified type. For example, if you need a resizable array of
- \l{QString}s, use QVector<QString>.
-
- These container classes are designed to be lighter, safer, and
- easier to use than the STL containers. If you are unfamiliar with
- the STL, or prefer to do things the "Qt way", you can use these
- classes instead of the STL classes.
-
- The container classes are \l{implicitly shared}, they are
- \l{reentrant}, and they are optimized for speed, low memory
- consumption, and minimal inline code expansion, resulting in
- smaller executables. In addition, they are \l{thread-safe}
- in situations where they are used as read-only containers
- by all threads used to access them.
-
- For traversing the items stored in a container, you can use one
- of two types of iterators: \l{Java-style iterators} and
- \l{STL-style iterators}. The Java-style iterators are easier to
- use and provide high-level functionality, whereas the STL-style
- iterators are slightly more efficient and can be used together
- with Qt's and STL's \l{generic algorithms}.
-
- Qt also offers a \l{foreach} keyword that make it very
- easy to iterate over all the items stored in a container.
-
- \section1 The Container Classes
-
- Qt provides the following container classes:
-
- \table
- \header \o Class \o Summary
-
- \row \o \l{QList}<T>
- \o This is by far the most commonly used container class. It
- stores a list of values of a given type (T) that can be accessed
- by index. Internally, the QList is implemented using an array,
- ensuring that index-based access is very fast.
-
- Items can be added at either end of the list using
- QList::append() and QList::prepend(), or they can be inserted in
- the middle using QList::insert(). More than any other container
- class, QList is highly optimized to expand to as little code as
- possible in the executable. QStringList inherits from
- QList<QString>.
-
- \row \o \l{QLinkedList}<T>
- \o This is similar to QList, except that it uses
- iterators rather than integer indexes to access items. It also
- provides better performance than QList when inserting in the
- middle of a huge list, and it has nicer iterator semantics.
- (Iterators pointing to an item in a QLinkedList remain valid as
- long as the item exists, whereas iterators to a QList can become
- invalid after any insertion or removal.)
-
- \row \o \l{QVector}<T>
- \o This stores an array of values of a given type at adjacent
- positions in memory. Inserting at the front or in the middle of
- a vector can be quite slow, because it can lead to large numbers
- of items having to be moved by one position in memory.
-
- \row \o \l{QStack}<T>
- \o This is a convenience subclass of QVector that provides
- "last in, first out" (LIFO) semantics. It adds the following
- functions to those already present in QVector:
- \l{QStack::push()}{push()}, \l{QStack::pop()}{pop()},
- and \l{QStack::top()}{top()}.
-
- \row \o \l{QQueue}<T>
- \o This is a convenience subclass of QList that provides
- "first in, first out" (FIFO) semantics. It adds the following
- functions to those already present in QList:
- \l{QQueue::enqueue()}{enqueue()},
- \l{QQueue::dequeue()}{dequeue()}, and \l{QQueue::head()}{head()}.
-
- \row \o \l{QSet}<T>
- \o This provides a single-valued mathematical set with fast
- lookups.
-
- \row \o \l{QMap}<Key, T>
- \o This provides a dictionary (associative array) that maps keys
- of type Key to values of type T. Normally each key is associated
- with a single value. QMap stores its data in Key order; if order
- doesn't matter QHash is a faster alternative.
-
- \row \o \l{QMultiMap}<Key, T>
- \o This is a convenience subclass of QMap that provides a nice
- interface for multi-valued maps, i.e. maps where one key can be
- associated with multiple values.
-
- \row \o \l{QHash}<Key, T>
- \o This has almost the same API as QMap, but provides
- significantly faster lookups. QHash stores its data in an
- arbitrary order.
-
- \row \o \l{QMultiHash}<Key, T>
- \o This is a convenience subclass of QHash that
- provides a nice interface for multi-valued hashes.
-
- \endtable
-
- Containers can be nested. For example, it is perfectly possible
- to use a QMap<QString, QList<int> >, where the key type is
- QString and the value type QList<int>. The only pitfall is that
- you must insert a space between the closing angle brackets (>);
- otherwise the C++ compiler will misinterpret the two >'s as a
- right-shift operator (>>) and report a syntax error.
-
- The containers are defined in individual header files with the
- same name as the container (e.g., \c <QLinkedList>). For
- convenience, the containers are forward declared in \c
- <QtContainerFwd>.
-
- \keyword assignable data type
- \keyword assignable data types
-
- The values stored in the various containers can be of any
- \e{assignable data type}. To qualify, a type must provide a
- default constructor, a copy constructor, and an assignment
- operator. This covers most data types you are likely to want to
- store in a container, including basic types such as \c int and \c
- double, pointer types, and Qt data types such as QString, QDate,
- and QTime, but it doesn't cover QObject or any QObject subclass
- (QWidget, QDialog, QTimer, etc.). If you attempt to instantiate a
- QList<QWidget>, the compiler will complain that QWidget's copy
- constructor and assignment operators are disabled. If you want to
- store these kinds of objects in a container, store them as
- pointers, for example as QList<QWidget *>.
-
- Here's an example custom data type that meets the requirement of
- an assignable data type:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 0
-
- If we don't provide a copy constructor or an assignment operator,
- C++ provides a default implementation that performs a
- member-by-member copy. In the example above, that would have been
- sufficient. Also, if you don't provide any constructors, C++
- provides a default constructor that initializes its member using
- default constructors. Although it doesn't provide any
- explicit constructors or assignment operator, the following data
- type can be stored in a container:
-
- \snippet doc/src/snippets/streaming/main.cpp 0
-
- Some containers have additional requirements for the data types
- they can store. For example, the Key type of a QMap<Key, T> must
- provide \c operator<(). Such special requirements are documented
- in a class's detailed description. In some cases, specific
- functions have special requirements; these are described on a
- per-function basis. The compiler will always emit an error if a
- requirement isn't met.
-
- Qt's containers provide operator<<() and operator>>() so that they
- can easily be read and written using a QDataStream. This means
- that the data types stored in the container must also support
- operator<<() and operator>>(). Providing such support is
- straightforward; here's how we could do it for the Movie struct
- above:
-
- \snippet doc/src/snippets/streaming/main.cpp 1
- \codeline
- \snippet doc/src/snippets/streaming/main.cpp 2
-
- \keyword default-constructed values
-
- The documentation of certain container class functions refer to
- \e{default-constructed values}; for example, QVector
- automatically initializes its items with default-constructed
- values, and QMap::value() returns a default-constructed value if
- the specified key isn't in the map. For most value types, this
- simply means that a value is created using the default
- constructor (e.g. an empty string for QString). But for primitive
- types like \c{int} and \c{double}, as well as for pointer types,
- the C++ language doesn't specify any initialization; in those
- cases, Qt's containers automatically initialize the value to 0.
-
- \section1 The Iterator Classes
-
- Iterators provide a uniform means to access items in a container.
- Qt's container classes provide two types of iterators: Java-style
- iterators and STL-style iterators.
-
- \section2 Java-Style Iterators
-
- The Java-style iterators are new in Qt 4 and are the standard
- ones used in Qt applications. They are more convenient to use than
- the STL-style iterators, at the price of being slightly less
- efficient. Their API is modelled on Java's iterator classes.
-
- For each container class, there are two Java-style iterator data
- types: one that provides read-only access and one that provides
- read-write access.
-
- \table
- \header \o Containers \o Read-only iterator
- \o Read-write iterator
- \row \o QList<T>, QQueue<T> \o QListIterator<T>
- \o QMutableListIterator<T>
- \row \o QLinkedList<T> \o QLinkedListIterator<T>
- \o QMutableLinkedListIterator<T>
- \row \o QVector<T>, QStack<T> \o QVectorIterator<T>
- \o QMutableVectorIterator<T>
- \row \o QSet<T> \o QSetIterator<T>
- \o QMutableSetIterator<T>
- \row \o QMap<Key, T>, QMultiMap<Key, T> \o QMapIterator<Key, T>
- \o QMutableMapIterator<Key, T>
- \row \o QHash<Key, T>, QMultiHash<Key, T> \o QHashIterator<Key, T>
- \o QMutableHashIterator<Key, T>
- \endtable
-
- In this discussion, we will concentrate on QList and QMap. The
- iterator types for QLinkedList, QVector, and QSet have exactly
- the same interface as QList's iterators; similarly, the iterator
- types for QHash have the same interface as QMap's iterators.
-
- Unlike STL-style iterators (covered \l{STL-style
- iterators}{below}), Java-style iterators point \e between items
- rather than directly \e at items. For this reason, they are
- either pointing to the very beginning of the container (before
- the first item), at the very end of the container (after the last
- item), or between two items. The diagram below shows the valid
- iterator positions as red arrows for a list containing four
- items:
-
- \img javaiterators1.png
-
- Here's a typical loop for iterating through all the elements of a
- QList<QString> in order and printing them to the console:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 1
-
- It works as follows: The QList to iterate over is passed to the
- QListIterator constructor. At that point, the iterator is located
- just in front of the first item in the list (before item "A").
- Then we call \l{QListIterator::hasNext()}{hasNext()} to
- check whether there is an item after the iterator. If there is, we
- call \l{QListIterator::next()}{next()} to jump over that
- item. The next() function returns the item that it jumps over. For
- a QList<QString>, that item is of type QString.
-
- Here's how to iterate backward in a QList:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 2
-
- The code is symmetric with iterating forward, except that we
- start by calling \l{QListIterator::toBack()}{toBack()}
- to move the iterator after the last item in the list.
-
- The diagram below illustrates the effect of calling
- \l{QListIterator::next()}{next()} and
- \l{QListIterator::previous()}{previous()} on an iterator:
-
- \img javaiterators2.png
-
- The following table summarizes the QListIterator API:
-
- \table
- \header \o Function \o Behavior
- \row \o \l{QListIterator::toFront()}{toFront()}
- \o Moves the iterator to the front of the list (before the first item)
- \row \o \l{QListIterator::toBack()}{toBack()}
- \o Moves the iterator to the back of the list (after the last item)
- \row \o \l{QListIterator::hasNext()}{hasNext()}
- \o Returns true if the iterator isn't at the back of the list
- \row \o \l{QListIterator::next()}{next()}
- \o Returns the next item and advances the iterator by one position
- \row \o \l{QListIterator::peekNext()}{peekNext()}
- \o Returns the next item without moving the iterator
- \row \o \l{QListIterator::hasPrevious()}{hasPrevious()}
- \o Returns true if the iterator isn't at the front of the list
- \row \o \l{QListIterator::previous()}{previous()}
- \o Returns the previous item and moves the iterator back by one position
- \row \o \l{QListIterator::peekPrevious()}{peekPrevious()}
- \o Returns the previous item without moving the iterator
- \endtable
-
- QListIterator provides no functions to insert or remove items
- from the list as we iterate. To accomplish this, you must use
- QMutableListIterator. Here's an example where we remove all
- odd numbers from a QList<int> using QMutableListIterator:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 3
-
- The next() call in the loop is made every time. It jumps over the
- next item in the list. The
- \l{QMutableListIterator::remove()}{remove()} function removes the
- last item that we jumped over from the list. The call to
- \l{QMutableListIterator::remove()}{remove()} does not invalidate
- the iterator, so it is safe to continue using it. This works just
- as well when iterating backward:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 4
-
- If we just want to modify the value of an existing item, we can
- use \l{QMutableListIterator::setValue()}{setValue()}. In the code
- below, we replace any value larger than 128 with 128:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 5
-
- Just like \l{QMutableListIterator::remove()}{remove()},
- \l{QMutableListIterator::setValue()}{setValue()} operates on the
- last item that we jumped over. If we iterate forward, this is the
- item just before the iterator; if we iterate backward, this is
- the item just after the iterator.
-
- The \l{QMutableListIterator::next()}{next()} function returns a
- non-const reference to the item in the list. For simple
- operations, we don't even need
- \l{QMutableListIterator::setValue()}{setValue()}:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 6
-
- As mentioned above, QLinkedList's, QVector's, and QSet's iterator
- classes have exactly the same API as QList's. We will now turn to
- QMapIterator, which is somewhat different because it iterates on
- (key, value) pairs.
-
- Like QListIterator, QMapIterator provides
- \l{QMapIterator::toFront()}{toFront()},
- \l{QMapIterator::toBack()}{toBack()},
- \l{QMapIterator::hasNext()}{hasNext()},
- \l{QMapIterator::next()}{next()},
- \l{QMapIterator::peekNext()}{peekNext()},
- \l{QMapIterator::hasPrevious()}{hasPrevious()},
- \l{QMapIterator::previous()}{previous()}, and
- \l{QMapIterator::peekPrevious()}{peekPrevious()}. The key and
- value components are extracted by calling key() and value() on
- the object returned by next(), peekNext(), previous(), or
- peekPrevious().
-
- The following example removes all (capital, country) pairs where
- the capital's name ends with "City":
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 7
-
- QMapIterator also provides a key() and a value() function that
- operate directly on the iterator and that return the key and
- value of the last item that the iterator jumped above. For
- example, the following code copies the contents of a QMap into a
- QHash:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 8
-
- If we want to iterate through all the items with the same
- value, we can use \l{QMapIterator::findNext()}{findNext()}
- or \l{QMapIterator::findPrevious()}{findPrevious()}.
- Here's an example where we remove all the items with a particular
- value:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 9
-
- \section2 STL-Style Iterators
-
- STL-style iterators have been available since the release of Qt
- 2.0. They are compatible with Qt's and STL's \l{generic
- algorithms} and are optimized for speed.
-
- For each container class, there are two STL-style iterator types:
- one that provides read-only access and one that provides
- read-write access. Read-only iterators should be used wherever
- possible because they are faster than read-write iterators.
-
- \table
- \header \o Containers \o Read-only iterator
- \o Read-write iterator
- \row \o QList<T>, QQueue<T> \o QList<T>::const_iterator
- \o QList<T>::iterator
- \row \o QLinkedList<T> \o QLinkedList<T>::const_iterator
- \o QLinkedList<T>::iterator
- \row \o QVector<T>, QStack<T> \o QVector<T>::const_iterator
- \o QVector<T>::iterator
- \row \o QSet<T> \o QSet<T>::const_iterator
- \o QSet<T>::iterator
- \row \o QMap<Key, T>, QMultiMap<Key, T> \o QMap<Key, T>::const_iterator
- \o QMap<Key, T>::iterator
- \row \o QHash<Key, T>, QMultiHash<Key, T> \o QHash<Key, T>::const_iterator
- \o QHash<Key, T>::iterator
- \endtable
-
- The API of the STL iterators is modelled on pointers in an array.
- For example, the \c ++ operator advances the iterator to the next
- item, and the \c * operator returns the item that the iterator
- points to. In fact, for QVector and QStack, which store their
- items at adjacent memory positions, the
- \l{QVector::iterator}{iterator} type is just a typedef for \c{T *},
- and the \l{QVector::iterator}{const_iterator} type is
- just a typedef for \c{const T *}.
-
- In this discussion, we will concentrate on QList and QMap. The
- iterator types for QLinkedList, QVector, and QSet have exactly
- the same interface as QList's iterators; similarly, the iterator
- types for QHash have the same interface as QMap's iterators.
-
- Here's a typical loop for iterating through all the elements of a
- QList<QString> in order and converting them to lowercase:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 10
-
- Unlike \l{Java-style iterators}, STL-style iterators point
- directly at items. The begin() function of a container returns an
- iterator that points to the first item in the container. The
- end() function of a container returns an iterator to the
- imaginary item one position past the last item in the container.
- end() marks an invalid position; it must never be dereferenced.
- It is typically used in a loop's break condition. If the list is
- empty, begin() equals end(), so we never execute the loop.
-
- The diagram below shows the valid iterator positions as red
- arrows for a vector containing four items:
-
- \img stliterators1.png
-
- Iterating backward with an STL-style iterator requires us to
- decrement the iterator \e before we access the item. This
- requires a \c while loop:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 11
-
- In the code snippets so far, we used the unary \c * operator to
- retrieve the item (of type QString) stored at a certain iterator
- position, and we then called QString::toLower() on it. Most C++
- compilers also allow us to write \c{i->toLower()}, but some
- don't.
-
- For read-only access, you can use const_iterator, constBegin(),
- and constEnd(). For example:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 12
-
- The following table summarizes the STL-style iterators' API:
-
- \table
- \header \o Expression \o Behavior
- \row \o \c{*i} \o Returns the current item
- \row \o \c{++i} \o Advances the iterator to the next item
- \row \o \c{i += n} \o Advances the iterator by \c n items
- \row \o \c{--i} \o Moves the iterator back by one item
- \row \o \c{i -= n} \o Moves the iterator back by \c n items
- \row \o \c{i - j} \o Returns the number of items between iterators \c i and \c j
- \endtable
-
- The \c{++} and \c{--} operators are available both as prefix
- (\c{++i}, \c{--i}) and postfix (\c{i++}, \c{i--}) operators. The
- prefix versions modify the iterators and return a reference to
- the modified iterator; the postfix versions take a copy of the
- iterator before they modify it, and return that copy. In
- expressions where the return value is ignored, we recommend that
- you use the prefix operators (\c{++i}, \c{--i}), as these are
- slightly faster.
-
- For non-const iterator types, the return value of the unary \c{*}
- operator can be used on the left side of the assignment operator.
-
- For QMap and QHash, the \c{*} operator returns the value
- component of an item. If you want to retrieve the key, call key()
- on the iterator. For symmetry, the iterator types also provide a
- value() function to retrieve the value. For example, here's how
- we would print all items in a QMap to the console:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 13
-
- Thanks to \l{implicit sharing}, it is very inexpensive for a
- function to return a container per value. The Qt API contains
- dozens of functions that return a QList or QStringList per value
- (e.g., QSplitter::sizes()). If you want to iterate over these
- using an STL iterator, you should always take a copy of the
- container and iterate over the copy. For example:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 14
-
- This problem doesn't occur with functions that return a const or
- non-const reference to a container.
-
- \l{Implicit sharing} has another consequence on STL-style
- iterators: You must not take a copy of a container while
- non-const iterators are active on that container. Java-style
- iterators don't suffer from that limitation.
-
- \keyword foreach
- \section1 The foreach Keyword
-
- If you just want to iterate over all the items in a container
- in order, you can use Qt's \c foreach keyword. The keyword is a
- Qt-specific addition to the C++ language, and is implemented
- using the preprocessor.
-
- Its syntax is: \c foreach (\e variable, \e container) \e
- statement. For example, here's how to use \c foreach to iterate
- over a QLinkedList<QString>:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 15
-
- The \c foreach code is significantly shorter than the equivalent
- code that uses iterators:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 16
-
- Unless the data type contains a comma (e.g., \c{QPair<int,
- int>}), the variable used for iteration can be defined within the
- \c foreach statement:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 17
-
- And like any other C++ loop construct, you can use braces around
- the body of a \c foreach loop, and you can use \c break to leave
- the loop:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 18
-
- With QMap and QHash, \c foreach accesses the value component of
- the (key, value) pairs. If you want to iterate over both the keys
- and the values, you can use iterators (which are fastest), or you
- can write code like this:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 19
-
- For a multi-valued map:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 20
-
- Qt automatically takes a copy of the container when it enters a
- \c foreach loop. If you modify the container as you are
- iterating, that won't affect the loop. (If you don't modify the
- container, the copy still takes place, but thanks to \l{implicit
- sharing} copying a container is very fast.) Similarly, declaring
- the variable to be a non-const reference, in order to modify the
- current item in the list will not work either.
-
- In addition to \c foreach, Qt also provides a \c forever
- pseudo-keyword for infinite loops:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 21
-
- If you're worried about namespace pollution, you can disable
- these macros by adding the following line to your \c .pro file:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 22
-
- \section1 Other Container-Like Classes
-
- Qt includes three template classes that resemble containers in
- some respects. These classes don't provide iterators and cannot
- be used with the \c foreach keyword.
-
- \list
- \o QVarLengthArray<T, Prealloc> provides a low-level
- variable-length array. It can be used instead of QVector in
- places where speed is particularly important.
-
- \o QCache<Key, T> provides a cache to store objects of a certain
- type T associated with keys of type Key.
-
- \o QPair<T1, T2> stores a pair of elements.
- \endlist
-
- Additional non-template types that compete with Qt's template
- containers are QBitArray, QByteArray, QString, and QStringList.
-
- \section1 Algorithmic Complexity
-
- Algorithmic complexity is concerned about how fast (or slow) each
- function is as the number of items in the container grow. For
- example, inserting an item in the middle of a QLinkedList is an
- extremely fast operation, irrespective of the number of items
- stored in the QLinkedList. On the other hand, inserting an item
- in the middle of a QVector is potentially very expensive if the
- QVector contains many items, since half of the items must be
- moved one position in memory.
-
- To describe algorithmic complexity, we use the following
- terminology, based on the "big Oh" notation:
-
- \keyword constant time
- \keyword logarithmic time
- \keyword linear time
- \keyword linear-logarithmic time
- \keyword quadratic time
-
- \list
- \o \bold{Constant time:} O(1). A function is said to run in constant
- time if it requires the same amount of time no matter how many
- items are present in the container. One example is
- QLinkedList::insert().
-
- \o \bold{Logarithmic time:} O(log \e n). A function that runs in
- logarithmic time is a function whose running time is
- proportional to the logarithm of the number of items in the
- container. One example is qBinaryFind().
-
- \o \bold{Linear time:} O(\e n). A function that runs in linear time
- will execute in a time directly proportional to the number of
- items stored in the container. One example is
- QVector::insert().
-
- \o \bold{Linear-logarithmic time:} O(\e{n} log \e n). A function
- that runs in linear-logarithmic time is asymptotically slower
- than a linear-time function, but faster than a quadratic-time
- function.
-
- \o \bold{Quadratic time:} O(\e{n}\unicode{178}). A quadratic-time function
- executes in a time that is proportional to the square of the
- number of items stored in the container.
- \endlist
-
- The following table summarizes the algorithmic complexity of Qt's
- sequential container classes:
-
- \table
- \header \o \o Index lookup \o Insertion \o Prepending \o Appending
- \row \o QLinkedList<T> \o O(\e n) \o O(1) \o O(1) \o O(1)
- \row \o QList<T> \o O(1) \o O(n) \o Amort. O(1) \o Amort. O(1)
- \row \o QVector<T> \o O(1) \o O(n) \o O(n) \o Amort. O(1)
- \endtable
-
- In the table, "Amort." stands for "amortized behavior". For
- example, "Amort. O(1)" means that if you call the function
- only once, you might get O(\e n) behavior, but if you call it
- multiple times (e.g., \e n times), the average behavior will be
- O(1).
-
- The following table summarizes the algorithmic complexity of Qt's
- associative containers and sets:
-
- \table
- \header \o{1,2} \o{2,1} Key lookup \o{2,1} Insertion
- \header \o Average \o Worst case \o Average \o Worst case
- \row \o QMap<Key, T> \o O(log \e n) \o O(log \e n) \o O(log \e n) \o O(log \e n)
- \row \o QMultiMap<Key, T> \o O(log \e n) \o O(log \e n) \o O(log \e n) \o O(log \e n)
- \row \o QHash<Key, T> \o Amort. O(1) \o O(\e n) \o Amort. O(1) \o O(\e n)
- \row \o QSet<Key> \o Amort. O(1) \o O(\e n) \o Amort. O(1) \o O(\e n)
- \endtable
-
- With QVector, QHash, and QSet, the performance of appending items
- is amortized O(log \e n). It can be brought down to O(1) by
- calling QVector::reserve(), QHash::reserve(), or QSet::reserve()
- with the expected number of items before you insert the items.
- The next section discusses this topic in more depth.
-
- \section1 Growth Strategies
-
- QVector<T>, QString, and QByteArray store their items
- contiguously in memory; QList<T> maintains an array of pointers
- to the items it stores to provide fast index-based access (unless
- T is a pointer type or a basic type of the size of a pointer, in
- which case the value itself is stored in the array); QHash<Key,
- T> keeps a hash table whose size is proportional to the number
- of items in the hash. To avoid reallocating the data every single
- time an item is added at the end of the container, these classes
- typically allocate more memory than necessary.
-
- Consider the following code, which builds a QString from another
- QString:
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 23
-
- We build the string \c out dynamically by appending one character
- to it at a time. Let's assume that we append 15000 characters to
- the QString string. Then the following 18 reallocations (out of a
- possible 15000) occur when QString runs out of space: 4, 8, 12,
- 16, 20, 52, 116, 244, 500, 1012, 2036, 4084, 6132, 8180, 10228,
- 12276, 14324, 16372. At the end, the QString has 16372 Unicode
- characters allocated, 15000 of which are occupied.
-
- The values above may seem a bit strange, but here are the guiding
- principles:
- \list
- \o QString allocates 4 characters at a time until it reaches size 20.
- \o From 20 to 4084, it advances by doubling the size each time.
- More precisely, it advances to the next power of two, minus
- 12. (Some memory allocators perform worst when requested exact
- powers of two, because they use a few bytes per block for
- book-keeping.)
- \o From 4084 on, it advances by blocks of 2048 characters (4096
- bytes). This makes sense because modern operating systems
- don't copy the entire data when reallocating a buffer; the
- physical memory pages are simply reordered, and only the data
- on the first and last pages actually needs to be copied.
- \endlist
-
- QByteArray and QList<T> use more or less the same algorithm as
- QString.
-
- QVector<T> also uses that algorithm for data types that can be
- moved around in memory using memcpy() (including the basic C++
- types, the pointer types, and Qt's \l{shared classes}) but uses a
- different algorithm for data types that can only be moved by
- calling the copy constructor and a destructor. Since the cost of
- reallocating is higher in that case, QVector<T> reduces the
- number of reallocations by always doubling the memory when
- running out of space.
-
- QHash<Key, T> is a totally different case. QHash's internal hash
- table grows by powers of two, and each time it grows, the items
- are relocated in a new bucket, computed as qHash(\e key) %
- QHash::capacity() (the number of buckets). This remark applies to
- QSet<T> and QCache<Key, T> as well.
-
- For most applications, the default growing algorithm provided by
- Qt does the trick. If you need more control, QVector<T>,
- QHash<Key, T>, QSet<T>, QString, and QByteArray provide a trio of
- functions that allow you to check and specify how much memory to
- use to store the items:
-
- \list
- \o \l{QString::capacity()}{capacity()} returns the
- number of items for which memory is allocated (for QHash and
- QSet, the number of buckets in the hash table).
- \o \l{QString::reserve()}{reserve}(\e size) explicitly
- preallocates memory for \e size items.
- \o \l{QString::squeeze()}{squeeze()} frees any memory
- not required to store the items.
- \endlist
-
- If you know approximately how many items you will store in a
- container, you can start by calling reserve(), and when you are
- done populating the container, you can call squeeze() to release
- the extra preallocated memory.
-*/
diff --git a/doc/src/coordsys.qdoc b/doc/src/coordsys.qdoc
deleted file mode 100644
index 604230071..000000000
--- a/doc/src/coordsys.qdoc
+++ /dev/null
@@ -1,486 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Qt Coordinate System Documentation.
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
-/*!
- \page coordsys.html
- \title The Coordinate System
- \ingroup architecture
- \brief Information about the coordinate system used by the paint
- system.
-
- The coordinate system is controlled by the QPainter
- class. Together with the QPaintDevice and QPaintEngine classes,
- QPainter form the basis of Qt's painting system, Arthur. QPainter
- is used to perform drawing operations, QPaintDevice is an
- abstraction of a two-dimensional space that can be painted on
- using a QPainter, and QPaintEngine provides the interface that the
- painter uses to draw onto different types of devices.
-
- The QPaintDevice class is the base class of objects that can be
- painted: Its drawing capabilities are inherited by the QWidget,
- QPixmap, QPicture, QImage, and QPrinter classes. The default
- coordinate system of a paint device has its origin at the top-left
- corner. The \e x values increase to the right and the \e y values
- increase downwards. The default unit is one pixel on pixel-based
- devices and one point (1/72 of an inch) on printers.
-
- The mapping of the logical QPainter coordinates to the physical
- QPaintDevice coordinates are handled by QPainter's transformation
- matrix, viewport and "window". The logical and physical coordinate
- systems coincide by default. QPainter also supports coordinate
- transformations (e.g. rotation and scaling).
-
- \tableofcontents
-
- \section1 Rendering
-
- \section2 Logical Representation
-
- The size (width and height) of a graphics primitive always
- correspond to its mathematical model, ignoring the width of the
- pen it is rendered with:
-
- \table
- \row
- \o \inlineimage coordinatesystem-rect.png
- \o \inlineimage coordinatesystem-line.png
- \row
- \o QRect(1, 2, 6, 4)
- \o QLine(2, 7, 6, 1)
- \endtable
-
- \section2 Aliased Painting
-
- When drawing, the pixel rendering is controlled by the
- QPainter::Antialiasing render hint.
-
- The \l {QPainter::RenderHint}{RenderHint} enum is used to specify
- flags to QPainter that may or may not be respected by any given
- engine. The QPainter::Antialiasing value indicates that the engine
- should antialias edges of primitives if possible, i.e. smoothing
- the edges by using different color intensities.
-
- But by default the painter is \e aliased and other rules apply:
- When rendering with a one pixel wide pen the pixels will be
- rendered to the \e {right and below the mathematically defined
- points}. For example:
-
- \table
- \row
- \o \inlineimage coordinatesystem-rect-raster.png
- \o \inlineimage coordinatesystem-line-raster.png
-
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_coordsys.qdoc 0
-
- \o
- \snippet doc/src/snippets/code/doc_src_coordsys.qdoc 1
- \endtable
-
- When rendering with a pen with an even number of pixels, the
- pixels will be rendered symetrically around the mathematical
- defined points, while rendering with a pen with an odd number of
- pixels, the spare pixel will be rendered to the right and below
- the mathematical point as in the one pixel case. See the QRectF
- diagrams below for concrete examples.
-
- \table
- \header
- \o {3,1} QRectF
- \row
- \o \inlineimage qrect-diagram-zero.png
- \o \inlineimage qrectf-diagram-one.png
- \row
- \o Logical representation
- \o One pixel wide pen
- \row
- \o \inlineimage qrectf-diagram-two.png
- \o \inlineimage qrectf-diagram-three.png
- \row
- \o Two pixel wide pen
- \o Three pixel wide pen
- \endtable
-
- Note that for historical reasons the return value of the
- QRect::right() and QRect::bottom() functions deviate from the true
- bottom-right corner of the rectangle.
-
- QRect's \l {QRect::right()}{right()} function returns \l
- {QRect::left()}{left()} + \l {QRect::width()}{width()} - 1 and the
- \l {QRect::bottom()}{bottom()} function returns \l
- {QRect::top()}{top()} + \l {QRect::height()}{height()} - 1. The
- bottom-right green point in the diagrams shows the return
- coordinates of these functions.
-
- We recommend that you simply use QRectF instead: The QRectF class
- defines a rectangle in the plane using floating point coordinates
- for accuracy (QRect uses integer coordinates), and the
- QRectF::right() and QRectF::bottom() functions \e do return the
- true bottom-right corner.
-
- Alternatively, using QRect, apply \l {QRect::x()}{x()} + \l
- {QRect::width()}{width()} and \l {QRect::y()}{y()} + \l
- {QRect::height()}{height()} to find the bottom-right corner, and
- avoid the \l {QRect::right()}{right()} and \l
- {QRect::bottom()}{bottom()} functions.
-
- \section2 Anti-aliased Painting
-
- If you set QPainter's \l {QPainter::Antialiasing}{anti-aliasing}
- render hint, the pixels will be rendered symetrically on both
- sides of the mathematically defined points:
-
- \table
- \row
- \o \inlineimage coordinatesystem-rect-antialias.png
- \o \inlineimage coordinatesystem-line-antialias.png
- \row
- \o
-
- \snippet doc/src/snippets/code/doc_src_coordsys.qdoc 2
-
- \o
- \snippet doc/src/snippets/code/doc_src_coordsys.qdoc 3
- \endtable
-
- \section1 Transformations
-
- By default, the QPainter operates on the associated device's own
- coordinate system, but it also has complete support for affine
- coordinate transformations.
-
- You can scale the coordinate system by a given offset using the
- QPainter::scale() function, you can rotate it clockwise using the
- QPainter::rotate() function and you can translate it (i.e. adding
- a given offset to the points) using the QPainter::translate()
- function.
-
- \table
- \row
- \o \inlineimage qpainter-clock.png
- \o \inlineimage qpainter-rotation.png
- \o \inlineimage qpainter-scale.png
- \o \inlineimage qpainter-translation.png
- \row
- \o nop
- \o \l {QPainter::rotate()}{rotate()}
- \o \l {QPainter::scale()}{scale()}
- \o \l {QPainter::translate()}{translate()}
- \endtable
-
- You can also twist the coordinate system around the origin using
- the QPainter::shear() function. See the \l {demos/affine}{Affine
- Transformations} demo for a visualization of a sheared coordinate
- system. All the transformation operations operate on QPainter's
- transformation matrix that you can retrieve using the
- QPainter::worldTransform() function. A matrix transforms a point
- in the plane to another point.
-
- If you need the same transformations over and over, you can also
- use QTransform objects and the QPainter::worldTransform() and
- QPainter::setWorldTransform() functions. You can at any time save the
- QPainter's transformation matrix by calling the QPainter::save()
- function which saves the matrix on an internal stack. The
- QPainter::restore() function pops it back.
-
- One frequent need for the transformation matrix is when reusing
- the same drawing code on a variety of paint devices. Without
- transformations, the results are tightly bound to the resolution
- of the paint device. Printers have high resolution, e.g. 600 dots
- per inch, whereas screens often have between 72 and 100 dots per
- inch.
-
- \table 100%
- \header
- \o {2,1} Analog Clock Example
- \row
- \o \inlineimage coordinatesystem-analogclock.png
- \o
- The Analog Clock example shows how to draw the contents of a
- custom widget using QPainter's transformation matrix.
-
- Qt's example directory provides a complete walk-through of the
- example. Here, we will only review the example's \l
- {QWidget::paintEvent()}{paintEvent()} function to see how we can
- use the transformation matrix (i.e. QPainter's matrix functions)
- to draw the clock's face.
-
- We recommend compiling and running this example before you read
- any further. In particular, try resizing the window to different
- sizes.
-
- \row
- \o {2,1}
-
- \snippet examples/widgets/analogclock/analogclock.cpp 9
-
- First, we set up the painter. We translate the coordinate system
- so that point (0, 0) is in the widget's center, instead of being
- at the top-left corner. We also scale the system by \c side / 100,
- where \c side is either the widget's width or the height,
- whichever is shortest. We want the clock to be square, even if the
- device isn't.
-
- This will give us a 200 x 200 square area, with the origin (0, 0)
- in the center, that we can draw on. What we draw will show up in
- the largest possible square that will fit in the widget.
-
- See also the \l {Window-Viewport Conversion} section.
-
- \snippet examples/widgets/analogclock/analogclock.cpp 18
-
- We draw the clock's hour hand by rotating the coordinate system
- and calling QPainter::drawConvexPolygon(). Thank's to the
- rotation, it's drawn pointed in the right direction.
-
- The polygon is specified as an array of alternating \e x, \e y
- values, stored in the \c hourHand static variable (defined at the
- beginning of the function), which corresponds to the four points
- (2, 0), (0, 2), (-2, 0), and (0, -25).
-
- The calls to QPainter::save() and QPainter::restore() surrounding
- the code guarantees that the code that follows won't be disturbed
- by the transformations we've used.
-
- \snippet examples/widgets/analogclock/analogclock.cpp 24
-
- We do the same for the clock's minute hand, which is defined by
- the four points (1, 0), (0, 1), (-1, 0), and (0, -40). These
- coordinates specify a hand that is thinner and longer than the
- minute hand.
-
- \snippet examples/widgets/analogclock/analogclock.cpp 27
-
- Finally, we draw the clock face, which consists of twelve short
- lines at 30-degree intervals. At the end of that, the painter is
- rotated in a way which isn't very useful, but we're done with
- painting so that doesn't matter.
- \endtable
-
- For a demonstation of Qt's ability to perform affine
- transformations on painting operations, see the \l
- {demos/affine}{Affine Transformations} demo which allows the user
- to experiment with the transformation operations. See also the \l
- {painting/transformations}{Transformations} example which shows
- how transformations influence the way that QPainter renders
- graphics primitives. In particular, it shows how the order of
- transformations affects the result.
-
- For more information about the transformation matrix, see the
- QTransform documentation.
-
- \section1 Window-Viewport Conversion
-
- When drawing with QPainter, we specify points using logical
- coordinates which then are converted into the physical coordinates
- of the paint device.
-
- The mapping of the logical coordinates to the physical coordinates
- are handled by QPainter's world transformation \l
- {QPainter::worldTransform()}{worldTransform()} (described in the \l
- Transformations section), and QPainter's \l
- {QPainter::viewport()}{viewport()} and \l
- {QPainter::window()}{window()}. The viewport represents the
- physical coordinates specifying an arbitrary rectangle. The
- "window" describes the same rectangle in logical coordinates. By
- default the logical and physical coordinate systems coincide, and
- are equivalent to the paint device's rectangle.
-
- Using window-viewport conversion you can make the logical
- coordinate system fit your preferences. The mechanism can also be
- used to make the drawing code independent of the paint device. You
- can, for example, make the logical coordinates extend from (-50,
- -50) to (50, 50) with (0, 0) in the center by calling the
- QPainter::setWindow() function:
-
- \snippet doc/src/snippets/code/doc_src_coordsys.qdoc 4
-
- Now, the logical coordinates (-50,-50) correspond to the paint
- device's physical coordinates (0, 0). Independent of the paint
- device, your painting code will always operate on the specified
- logical coordinates.
-
- By setting the "window" or viewport rectangle, you perform a
- linear transformation of the coordinates. Note that each corner of
- the "window" maps to the corresponding corner of the viewport, and
- vice versa. For that reason it normally is a good idea to let the
- viewport and "window" maintain the same aspect ratio to prevent
- deformation:
-
- \snippet doc/src/snippets/code/doc_src_coordsys.qdoc 5
-
- If we make the logical coordinate system a square, we should also
- make the viewport a square using the QPainter::setViewport()
- function. In the example above we make it equivalent to the
- largest square that fit into the paint device's rectangle. By
- taking the paint device's size into consideration when setting the
- window or viewport, it is possible to keep the drawing code
- independent of the paint device.
-
- Note that the window-viewport conversion is only a linear
- transformation, i.e. it does not perform clipping. This means that
- if you paint outside the currently set "window", your painting is
- still transformed to the viewport using the same linear algebraic
- approach.
-
- \image coordinatesystem-transformations.png
-
- The viewport, "window" and transformation matrix determine how
- logical QPainter coordinates map to the paint device's physical
- coordinates. By default the world transformation matrix is the
- identity matrix, and the "window" and viewport settings are
- equivalent to the paint device's settings, i.e. the world,
- "window" and device coordinate systems are equivalent, but as we
- have seen, the systems can be manipulated using transformation
- operations and window-viewport conversion. The illustration above
- describes the process.
-
- \omit
- \section1 Related Classes
-
- Qt's paint system, Arthur, is primarily based on the QPainter,
- QPaintDevice, and QPaintEngine classes:
-
- \table
- \header \o Class \o Description
- \row
- \o QPainter
- \o
- The QPainter class performs low-level painting on widgets and
- other paint devices. QPainter can operate on any object that
- inherits the QPaintDevice class, using the same code.
- \row
- \o QPaintDevice
- \o
- The QPaintDevice class is the base class of objects that can be
- painted. Qt provides several devices: QWidget, QImage, QPixmap,
- QPrinter and QPicture, and other devices can also be defined by
- subclassing QPaintDevice.
- \row
- \o QPaintEngine
- \o
- The QPaintEngine class provides an abstract definition of how
- QPainter draws to a given device on a given platform. Qt 4
- provides several premade implementations of QPaintEngine for the
- different painter backends we support; it provides one paint
- engine for each supported window system and painting
- frameworkt. You normally don't need to use this class directly.
- \endtable
-
- The 2D transformations of the coordinate system are specified
- using the QTransform class:
-
- \table
- \header \o Class \o Description
- \row
- \o QTransform
- \o
- A 3 x 3 transformation matrix. Use QTransform to rotate, shear,
- scale, or translate the coordinate system.
- \endtable
-
- In addition Qt provides several graphics primitive classes. Some
- of these classes exist in two versions: an \c{int}-based version
- and a \c{qreal}-based version. For these, the \c qreal version's
- name is suffixed with an \c F.
-
- \table
- \header \o Class \o Description
- \row
- \o \l{QPoint}(\l{QPointF}{F})
- \o
- A single 2D point in the coordinate system. Most functions in Qt
- that deal with points can accept either a QPoint, a QPointF, two
- \c{int}s, or two \c{qreal}s.
- \row
- \o \l{QSize}(\l{QSizeF}{F})
- \o
- A single 2D vector. Internally, QPoint and QSize are the same, but
- a point is not the same as a size, so both classes exist. Again,
- most functions accept either QSizeF, a QSize, two \c{int}s, or two
- \c{qreal}s.
- \row
- \o \l{QRect}(\l{QRectF}{F})
- \o
- A 2D rectangle. Most functions accept either a QRectF, a QRect,
- four \c{int}s, or four \c {qreal}s.
- \row
- \o \l{QLine}(\l{QLineF}{F})
- \o
- A 2D finite-length line, characterized by a start point and an end
- point.
- \row
- \o \l{QPolygon}(\l{QPolygonF}{F})
- \o
- A 2D polygon. A polygon is a vector of \c{QPoint(F)}s. If the
- first and last points are the same, the polygon is closed.
- \row
- \o QPainterPath
- \o
- A vectorial specification of a 2D shape. Painter paths are the
- ultimate painting primitive, in the sense that any shape
- (rectange, ellipse, spline) or combination of shapes can be
- expressed as a path. A path specifies both an outline and an area.
- \row
- \o QRegion
- \o
- An area in a paint device, expressed as a list of
- \l{QRect}s. In general, we recommend using the vectorial
- QPainterPath class instead of QRegion for specifying areas,
- because QPainterPath handles painter transformations much better.
- \endtable
- \endomit
-
- \sa {Analog Clock Example}, {Transformations Example}
-*/
diff --git a/doc/src/credits.qdoc b/doc/src/credits.qdoc
index 70b56b780..0320087e4 100644
--- a/doc/src/credits.qdoc
+++ b/doc/src/credits.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/custom-types.qdoc b/doc/src/custom-types.qdoc
deleted file mode 100644
index aa7d38672..000000000
--- a/doc/src/custom-types.qdoc
+++ /dev/null
@@ -1,178 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page custom-types.html
- \title Creating Custom Qt Types
- \ingroup architecture
- \brief How to create and register new types with Qt.
-
- \tableofcontents
-
- \section1 Overview
-
- When creating user interfaces with Qt, particularly those with specialized controls and
- features, developers sometimes need to create new data types that can be used alongside
- or in place of Qt's existing set of value types.
-
- Standard types such as QSize, QColor and QString can all be stored in QVariant objects,
- used as the types of properties in QObject-based classes, and emitted in signal-slot
- communication.
-
- In this document, we take a custom type and describe how to integrate it into Qt's object
- model so that it can be stored in the same way as standard Qt types. We then show how to
- register the custom type to allow it to be used in signals and slots connections.
-
- \section1 Creating a Custom Type
-
- Before we begin, we need to ensure that the custom type we are creating meets all the
- requirements imposed by QMetaType. In other words, it must provide:
-
- \list
- \o a public default constructor,
- \o a public copy constructor, and
- \o a public destructor.
- \endlist
-
- The following \c Message class definition includes these members:
-
- \snippet examples/tools/customtype/message.h custom type definition
-
- The class also provides a constructor for normal use and two public member functions
- that are used to obtain the private data.
-
- \section1 Declaring the Type with QMetaType
-
- The \c Message class only needs a suitable implementation in order to be usable.
- However, Qt's type system will not be able to understand how to store, retrieve
- and serialize instances of this class without some assistance. For example, we
- will be unable to store \c Message values in QVariant.
-
- The class in Qt responsible for custom types is QMetaType. To make the type known
- to this class, we invoke the Q_DECLARE_METATYPE() macro on the class in the header
- file where it is defined:
-
- \snippet examples/tools/customtype/message.h custom type meta-type declaration
-
- This now makes it possible for \c Message values to be stored in QVariant objects
- and retrieved later. See the \l{Custom Type Example} for code that demonstrates
- this.
-
- The Q_DECLARE_METATYPE() macro also makes it possible for these values to be used as
- arguments to signals, but \e{only in direct signal-slot connections}.
- To make the custom type generally usable with the signals and slots mechanism, we
- need to perform some extra work.
-
- \section1 Creating and Destroying Custom Objects
-
- Although the declaration in the previous section makes the type available for use
- in direct signal-slot connections, it cannot be used for queued signal-slot
- connections, such as those that are made between objects in different threads.
- This is because the meta-object system does not know how to handle creation and
- destruction of objects of the custom type at run-time.
-
- To enable creation of objects at run-time, call the qRegisterMetaType() template
- function to register it with the meta-object system. This also makes the type
- available for queued signal-slot communication as long as you call it before you
- make the first connection that uses the type.
-
- The \l{Queued Custom Type Example} declares a \c Block class which is registered
- in the \c{main.cpp} file:
-
- \snippet examples/threads/queuedcustomtype/main.cpp main start
- \dots
- \snippet examples/threads/queuedcustomtype/main.cpp register meta-type for queued communications
- \dots
- \snippet examples/threads/queuedcustomtype/main.cpp main finish
-
- This type is later used in a signal-slot connection in the \c{window.cpp} file:
-
- \snippet examples/threads/queuedcustomtype/window.cpp Window constructor start
- \dots
- \snippet examples/threads/queuedcustomtype/window.cpp connecting signal with custom type
- \dots
- \snippet examples/threads/queuedcustomtype/window.cpp Window constructor finish
-
- If a type is used in a queued connection without being registered, a warning will be
- printed at the console; for example:
-
- \code
- QObject::connect: Cannot queue arguments of type 'Block'
- (Make sure 'Block' is registered using qRegisterMetaType().)
- \endcode
-
- \section1 Making the Type Printable
-
- It is often quite useful to make a custom type printable for debugging purposes,
- as in the following code:
-
- \snippet examples/tools/customtype/main.cpp printing a custom type
-
- This is achieved by creating a streaming operator for the type, which is often
- defined in the header file for that type:
-
- \snippet examples/tools/customtype/message.h custom type streaming operator
-
- The implementation for the \c Message type in the \l{Custom Type Example}
- goes to some effort to make the printable representation as readable as
- possible:
-
- \snippet examples/tools/customtype/message.cpp custom type streaming operator
-
- The output sent to the debug stream can, of course, be made as simple or as
- complicated as you like. Note that the value returned by this function is
- the QDebug object itself, though this is often obtained by calling the
- maybeSpace() member function of QDebug that pads out the stream with space
- characters to make it more readable.
-
- \section1 Further Reading
-
- The Q_DECLARE_METATYPE() macro and qRegisterMetaType() function documentation
- contain more detailed information about their uses and limitations.
-
- The \l{Custom Type Example}{Custom Type},
- \l{Custom Type Sending Example}{Custom Type Sending}
- and \l{Queued Custom Type Example}{Queued Custom Type} examples show how to
- implement a custom type with the features outlined in this document.
-
- The \l{Debugging Techniques} document provides an overview of the debugging
- mechanisms discussed above.
-*/
diff --git a/doc/src/datastreamformat.qdoc b/doc/src/datastreamformat.qdoc
deleted file mode 100644
index eac550c47..000000000
--- a/doc/src/datastreamformat.qdoc
+++ /dev/null
@@ -1,376 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Documentation of the Format of the QDataStream operators.
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
-/*!
- \page datastreamformat.html
- \title Format of the QDataStream Operators
- \ingroup architecture
- \brief Representations of data types that can be serialized by QDataStream.
-
- The \l QDataStream allows you to serialize some of the Qt data types.
- The table below lists the data types that QDataStream can serialize
- and how they are represented. The format described below is
- \l{QDataStream::setVersion()}{version 8}.
-
- It is always best to cast integers to a Qt integer type, such as
- qint16 or quint32, when reading and writing. This ensures that
- you always know exactly what size integers you are reading and
- writing, no matter what the underlying platform and architecture
- the application happens to be running on.
-
- \table
- \row \o bool
- \o \list
- \o boolean
- \endlist
- \row \o qint8
- \o \list
- \o signed byte
- \endlist
- \row \o qint16
- \o \list
- \o signed 16-bit integer
- \endlist
- \row \o qint32
- \o \list
- \o signed 32-bit integer
- \endlist
- \row \o qint64
- \o \list
- \o signed 64-bit integer
- \endlist
- \row \o quint8
- \o \list
- \o unsigned byte
- \endlist
- \row \o quint16
- \o \list
- \o unsigned 16-bit integer
- \endlist
- \row \o quint32
- \o \list
- \o unsigned 32-bit integer
- \endlist
- \row \o quint64
- \o \list
- \o unsigned 64-bit integer
- \endlist
- \row \o \c float
- \o \list
- \o 32-bit floating point number using the standard IEEE 754 format
- \endlist
- \row \o \c double
- \o \list
- \o 64-bit floating point number using the standard IEEE 754 format
- \endlist
- \row \o \c {const char *}
- \o \list
- \o The string length (quint32)
- \o The string bytes, excluding the terminating 0
- \endlist
- \row \o QBitArray
- \o \list
- \o The array size (quint32)
- \o The array bits, i.e. (size + 7)/8 bytes
- \endlist
- \row \o QBrush
- \o \list
- \o The brush style (quint8)
- \o The brush color (QColor)
- \o If style is CustomPattern, the brush pixmap (QPixmap)
- \endlist
- \row \o QByteArray
- \o \list
- \o If the byte array is null: 0xFFFFFFFF (quint32)
- \o Otherwise: the array size (quint32) followed by the array bytes, i.e. size bytes
- \endlist
- \row \o \l QColor
- \o \list
- \o Color spec (qint8)
- \o Alpha value (quint16)
- \o Red value (quint16)
- \o Green value (quint16)
- \o Blue value (quint16)
- \o Pad value (quint16)
- \endlist
- \row \o QCursor
- \o \list
- \o Shape ID (qint16)
- \o If shape is BitmapCursor: The bitmap (QPixmap), mask (QPixmap), and hot spot (QPoint)
- \endlist
- \row \o QDate
- \o \list
- \o Julian day (quint32)
- \endlist
- \row \o QDateTime
- \o \list
- \o Date (QDate)
- \o Time (QTime)
- \o 0 for Qt::LocalTime, 1 for Qt::UTC (quint8)
- \endlist
- \row \o QFont
- \o \list
- \o The family (QString)
- \o The point size (qint16)
- \o The style hint (quint8)
- \o The char set (quint8)
- \o The weight (quint8)
- \o The font bits (quint8)
- \endlist
- \row \o QHash<Key, T>
- \o \list
- \o The number of items (quint32)
- \o For all items, the key (Key) and value (T)
- \endlist
- \row \o QIcon
- \o \list
- \o The number of pixmap entries (quint32)
- \o For all pixmap entries:
- \list
- \o The pixmap (QPixmap)
- \o The file name (QString)
- \o The pixmap size (QSize)
- \o The \l{QIcon::Mode}{mode} (quint32)
- \o The \l{QIcon::State}{state} (quint32)
- \endlist
- \endlist
- \row \o QImage
- \o \list
- \o If the image is null a "null image" marker is saved;
- otherwise the image is saved in PNG or BMP format (depending
- on the stream version). If you want control of the format,
- stream the image into a QBuffer (using QImageIO) and stream
- that.
- \endlist
- \row \o QKeySequence
- \o \list
- \o A QList<int>, where each integer is a key in the key sequence
- \endlist
- \row \o QLinkedList<T>
- \o \list
- \o The number of items (quint32)
- \o The items (T)
- \endlist
- \row \o QList<T>
- \o \list
- \o The number of items (quint32)
- \o The items (T)
- \endlist
- \row \o QMap<Key, T>
- \o \list
- \o The number of items (quint32)
- \o For all items, the key (Key) and value (T)
- \endlist
- \row \o QMatrix
- \o \list
- \o m11 (double)
- \o m12 (double)
- \o m21 (double)
- \o m22 (double)
- \o dx (double)
- \o dy (double)
- \endlist
- \row \o QMatrix4x4
- \o \list
- \o m11 (double)
- \o m12 (double)
- \o m13 (double)
- \o m14 (double)
- \o m21 (double)
- \o m22 (double)
- \o m23 (double)
- \o m24 (double)
- \o m31 (double)
- \o m32 (double)
- \o m33 (double)
- \o m34 (double)
- \o m41 (double)
- \o m42 (double)
- \o m43 (double)
- \o m44 (double)
- \endlist
- \row \o QPair<T1, T2>
- \o \list
- \o first (T1)
- \o second (T2)
- \endlist
- \row \o QPalette
- \o The disabled, active, and inactive color groups, each of which consists
- of the following:
- \list
- \o foreground (QBrush)
- \o button (QBrush)
- \o light (QBrush)
- \o midlight (QBrush)
- \o dark (QBrush)
- \o mid (QBrush)
- \o text (QBrush)
- \o brightText (QBrush)
- \o buttonText (QBrush)
- \o base (QBrush)
- \o background (QBrush)
- \o shadow (QBrush)
- \o highlight (QBrush)
- \o highlightedText (QBrush)
- \o link (QBrush)
- \o linkVisited (QBrush)
- \endlist
- \row \o QPen
- \o \list
- \o The pen styles (quint8)
- \o The pen width (quint16)
- \o The pen color (QColor)
- \endlist
- \row \o QPicture
- \o \list
- \o The size of the picture data (quint32)
- \o The raw bytes of picture data (char)
- \endlist
- \row \o QPixmap
- \o \list
- \o Save it as a PNG image.
- \endlist
- \row \o QPoint
- \o \list
- \o The x coordinate (qint32)
- \o The y coordinate (qint32)
- \endlist
- \row \o QQuaternion
- \o \list
- \o The scalar component (double)
- \o The x coordinate (double)
- \o The y coordinate (double)
- \o The z coordinate (double)
- \endlist
- \row \o QRect
- \o \list
- \o left (qint32)
- \o top (qint32)
- \o right (qint32)
- \o bottom (qint32)
- \endlist
- \row \o QRegExp
- \o \list
- \o The regexp pattern (QString)
- \o Case sensitivity (quint8)
- \o Regular expression syntax (quint8)
- \o Minimal matching (quint8)
- \endlist
- \row \o QRegion
- \o \list
- \o The size of the data, i.e. 8 + 16 * (number of rectangles) (quint32)
- \o 10 (qint32)
- \o The number of rectangles (quint32)
- \o The rectangles in sequential order (QRect)
- \endlist
- \row \o QSize
- \o \list
- \o width (qint32)
- \o height (qint32)
- \endlist
- \row \o QString
- \o \list
- \o If the string is null: 0xFFFFFFFF (quint32)
- \o Otherwise: The string length in bytes (quint32) followed by the data in UTF-16
- \endlist
- \row \o QTime
- \o \list
- \o Milliseconds since midnight (quint32)
- \endlist
- \row \o QTransform
- \o \list
- \o m11 (double)
- \o m12 (double)
- \o m13 (double)
- \o m21 (double)
- \o m22 (double)
- \o m23 (double)
- \o m31 (double)
- \o m32 (double)
- \o m33 (double)
- \endlist
- \row \o QUrl
- \o \list
- \o Holds an URL (QString)
- \endlist
- \row \o QVariant
- \o \list
- \o The type of the data (quint32)
- \o The null flag (qint8)
- \o The data of the specified type
- \endlist
- \row \o QVector2D
- \o \list
- \o the x coordinate (double)
- \o the y coordinate (double)
- \endlist
- \row \o QVector3D
- \o \list
- \o the x coordinate (double)
- \o the y coordinate (double)
- \o the z coordinate (double)
- \endlist
- \row \o QVector4D
- \o \list
- \o the x coordinate (double)
- \o the y coordinate (double)
- \o the z coordinate (double)
- \o the w coordinate (double)
- \endlist
- \row \o QVector<T>
- \o \list
- \o The number of items (quint32)
- \o The items (T)
- \endlist
- \endtable
-*/
diff --git a/doc/src/debug.qdoc b/doc/src/debug.qdoc
deleted file mode 100644
index bedf73dc0..000000000
--- a/doc/src/debug.qdoc
+++ /dev/null
@@ -1,256 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Qt Debugging Techniques
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
-/*!
- \page debug.html
- \title Debugging Techniques
- \ingroup buildsystem
-
- Here we present some useful hints to help you with debugging your
- Qt-based software.
-
- \tableofcontents
-
- \section1 Configuring Qt for Debugging
-
- When \l{Installation}{configuring Qt for installation}, it is possible
- to ensure that it is built to include debug symbols that can make it
- easier to track bugs in applications and libraries. However, on some
- platforms, building Qt in debug mode will cause applications to be larger
- than desirable.
-
- \section2 Debugging in Mac OS X and Xcode
-
- \section3 Debugging With/Without Frameworks
-
- The basic stuff you need to know about debug libraries and
- frameworks is found at developer.apple.com in:
- \l{http://developer.apple.com/technotes/tn2004/tn2124.html#SECDEBUGLIB}
- {Apple Technicle Note TN2124} Qt follows that.
-
- When you build Qt, frameworks are built by default, and inside the
- framework you will find both a release and a debug version (e.g.,
- QtCore and QtCore_debug). If you pass the \c{-no-framework} flag
- when you build Qt, two dylibs are built for each Qt library (e.g.,
- libQtCore.4.dylib and libQtCore_debug.4.dylib).
-
- What happens when you link depends on whether you use frameworks
- or not. We don't see a compelling reason to recommend one over the
- other.
-
- \section4 With Frameworks:
-
- Since the release and debug libraries are inside the framework,
- the app is simply linked against the framework. Then when you run
- in the debugger, you will get either the release version or the
- debug version, depending on whether you set \c{DYLD_IMAGE_SUFFIX}.
- If you don't set it, you get the release version by default (i.e.,
- non _debug). If you set \c{DYLD_IMAGE_SUFFIX=_debug}, you get the
- debug version.
-
- \section4 Without Frameworks:
-
- When you tell \e{qmake} to generate a Makefile with the debug
- config, it will link against the _debug version of the libraries
- and generate debug symbols for the app. Running this program in
- GDB will then work like running GDB on other platforms, and you
- will be able to trace inside Qt.
-
- \section3 Debug Symbols and Size
-
- The amount of space taken up by debug symbols generated by GCC can
- be excessively large. However, with the release of Xcode 2.3 it is
- now possible to use Dwarf symbols which take up a significantly
- smaller amount of space. To enable this feature when configuring
- Qt, pass the \c{-dwarf-2} option to the configure script.
-
- This is not enabled by default because previous versions of Xcode
- will not work with the compiler flag used to implement this
- feature. Mac OS X 10.5 will use dwarf-2 symbols by default.
-
- dwarf-2 symbols contain references to source code, so the size of
- the final debug application should compare favorably to a release
- build.
-
- \omit
- Although it is not necessary to build Qt with debug symbols to use the
- other techniques described in this document, certain features are only
- available when Qt is configured for debugging.
- \endomit
-
- \section1 Command Line Options Recognized by Qt
-
- When you run a Qt application, you can specify several
- command-line options that can help with debugging. These are
- recognized by QApplication.
-
- \table
- \header \o Option \o Description
- \row \o \c -nograb
- \o The application should never grab \link QWidget::grabMouse()
- the mouse\endlink or \link QWidget::grabKeyboard() the
- keyboard \endlink. This option is set by default when the
- program is running in the \c gdb debugger under Linux.
- \row \o \c -dograb
- \o Ignore any implicit or explicit \c{-nograb}. \c -dograb wins over
- \c -nograb even when \c -nograb is last on the command line.
- \row \o \c -sync
- \o Runs the application in X synchronous mode. Synchronous mode
- forces the X server to perform each X client request
- immediately and not use buffer optimization. It makes the
- program easier to debug and often much slower. The \c -sync
- option is only valid for the X11 version of Qt.
- \endtable
-
- \section1 Warning and Debugging Messages
-
- Qt includes four global functions for writing out warning and debug
- text. You can use them for the following purposes:
-
- \list
- \o qDebug() is used for writing custom debug output.
- \o qWarning() is used to report warnings and recoverable errors in
- your application.
- \o qCritical() is used for writing critical error mesages and
- reporting system errors.
- \o qFatal() is used for writing fatal error messages shortly before exiting.
- \endlist
-
- If you include the <QtDebug> header file, the \c qDebug() function
- can also be used as an output stream. For example:
-
- \snippet doc/src/snippets/code/doc_src_debug.qdoc 0
-
- The Qt implementation of these functions prints the text to the
- \c stderr output under Unix/X11 and Mac OS X. With Windows, if it
- is a console application, the text is sent to console; otherwise, it
- is sent to the debugger. You can take over these functions by
- installing a message handler using qInstallMsgHandler().
-
- If the \c QT_FATAL_WARNINGS environment variable is set,
- qWarning() exits after printing the warning message. This makes
- it easy to obtain a backtrace in the debugger.
-
- Both qDebug() and qWarning() are debugging tools. They can be
- compiled away by defining \c QT_NO_DEBUG_OUTPUT and \c
- QT_NO_WARNING_OUTPUT during compilation.
-
- The debugging functions QObject::dumpObjectTree() and
- QObject::dumpObjectInfo() are often useful when an application
- looks or acts strangely. More useful if you use \l{QObject::setObjectName()}{object names}
- than not, but often useful even without names.
-
- \section1 Providing Support for the qDebug() Stream Operator
-
- You can implement the stream operator used by qDebug() to provide
- debugging support for your classes. The class that implements the
- stream is \c QDebug. The functions you need to know about in \c
- QDebug are \c space() and \c nospace(). They both return a debug
- stream; the difference between them is whether a space is inserted
- between each item. Here is an example for a class that represents
- a 2D coordinate.
-
- \snippet doc/src/snippets/qdebug/qdebugsnippet.cpp 0
-
- Integration of custom types with Qt's meta-object system is covered
- in more depth in the \l{Creating Custom Qt Types} document.
-
- \section1 Debugging Macros
-
- The header file \c <QtGlobal> contains some debugging macros and
- \c{#define}s.
-
- Three important macros are:
- \list
- \o \l{Q_ASSERT()}{Q_ASSERT}(cond), where \c cond is a boolean
- expression, writes the warning "ASSERT: '\e{cond}' in file xyz.cpp, line
- 234" and exits if \c cond is false.
- \o \l{Q_ASSERT_X()}{Q_ASSERT_X}(cond, where, what), where \c cond is a
- boolean expression, \c where a location, and \c what a message,
- writes the warning: "ASSERT failure in \c{where}: '\c{what}', file xyz.cpp, line 234"
- and exits if \c cond is false.
- \o \l{Q_CHECK_PTR()}{Q_CHECK_PTR}(ptr), where \c ptr is a pointer.
- Writes the warning "In file xyz.cpp, line 234: Out of memory" and
- exits if \c ptr is 0.
- \endlist
-
- These macros are useful for detecting program errors, e.g. like this:
-
- \snippet doc/src/snippets/code/doc_src_debug.qdoc 1
-
- Q_ASSERT(), Q_ASSERT_X(), and Q_CHECK_PTR() expand to nothing if
- \c QT_NO_DEBUG is defined during compilation. For this reason,
- the arguments to these macro should not have any side-effects.
- Here is an incorrect usage of Q_CHECK_PTR():
-
- \snippet doc/src/snippets/code/doc_src_debug.qdoc 2
-
- If this code is compiled with \c QT_NO_DEBUG defined, the code in
- the Q_CHECK_PTR() expression is not executed and \e alloc returns
- an unitialized pointer.
-
- The Qt library contains hundreds of internal checks that will
- print warning messages when a programming error is detected. We
- therefore recommend that you use a debug version of Qt when
- developing Qt-based software.
-
- \section1 Common Bugs
-
- There is one bug that is so common that it deserves mention here:
- If you include the Q_OBJECT macro in a class declaration and
- run \link moc.html the meta-object compiler\endlink (\c{moc}),
- but forget to link the \c{moc}-generated object code into your
- executable, you will get very confusing error messages. Any link
- error complaining about a lack of \c{vtbl}, \c{_vtbl}, \c{__vtbl}
- or similar is likely to be a result of this problem.
-*/
diff --git a/doc/src/demos.qdoc b/doc/src/demos.qdoc
deleted file mode 100644
index 69a943ac3..000000000
--- a/doc/src/demos.qdoc
+++ /dev/null
@@ -1,151 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page demos.html
- \title Qt Demonstrations
- \brief Information about the demonstration programs provided with Qt.
- \ingroup howto
-
- This is the list of demonstrations in Qt's \c demos directory.
- These are larger and more complicated programs than the
- \l{Qt Examples} and are used to highlight certain features of
- Qt. You can launch any of these programs from the
- \l{Examples and Demos Launcher} application.
-
- If you are new to Qt, and want to start developing applications,
- you should probably start by going through the \l{Tutorials}.
-
- \section1 Painting
-
- \list
- \o \l{demos/composition}{Composition Modes} demonstrates the range of
- composition modes available with Qt.
- \o \l{demos/deform}{Vector Deformation} demonstrates effects that are made
- possible with a vector-oriented paint engine.
- \o \l{demos/gradients}{Gradients} shows the different types of gradients
- that are available in Qt.
- \o \l{demos/pathstroke}{Path Stroking} shows Qt's built-in dash patterns
- and shows how custom patterns can be used to extend the range of
- available patterns.
- \o \l{demos/affine}{Affine Transformations} demonstrates the different
- affine transformations that can be used to influence painting operations.
- \o \l{demos/arthurplugin}{Arthur Plugin} shows the widgets from the
- other painting demos packaged as a custom widget plugin for \QD.
- \endlist
-
- \section1 Item Views
-
- \list
- \o \l{demos/interview}{Interview} shows the same model and selection being
- shared between three different views.
- \o \l{demos/spreadsheet}{Spreadsheet} demonstrates the use of a table view
- as a spreadsheet, using custom delegates to render each item according to
- the type of data it contains.
- \endlist
-
- \section1 SQL
-
- \list
- \o \l{demos/books}{Books} shows how Qt's SQL support and model/view integration
- enables the user to modify the contents of a database without requiring
- knowledge of SQL.
- \o \l{demos/sqlbrowser}{SQL Browser} demonstrates a console for executing SQL
- statements on a live database and provides a data browser for interactively
- visualizing the results.
- \endlist
-
- \section1 Rich Text
-
- \list
- \o \l{demos/textedit}{Text Edit} shows Qt's rich text editing features and provides
- an environment for experimenting with them.
- \endlist
-
- \section1 Main Window
-
- \list
- \o \l{demos/mainwindow}{Main Window} shows Qt's extensive support for main window
- features, such as tool bars, dock windows, and menus.
- \o \l{demos/macmainwindow}{Mac Main Window} shows how to create main window applications that has
- the same appearance as other Mac OS X applications.
- \endlist
-
- \section1 Graphics View
-
- \list
- \o \l{demos/chip}{40000 Chips} uses the
- \l{The Graphics View Framework}{Graphics View} framework to efficiently
- display a large number of individual graphical items on a scrolling canvas,
- highlighting features such as rotation, zooming, level of detail control,
- and item selection.
- \o \l{demos/embeddeddialogs}{Embedded Dialogs} showcases Qt 4.4's \e{Widgets on
- the Canvas} feature by embedding a multitude of fully-working dialogs into a
- scene.
- \o \l{demos/boxes}{Boxes} showcases Qt's OpenGL support and the
- integration with the Graphics View framework.
- \endlist
-
- \section1 Tools
-
- \list
- \o \l{demos/undo}{Undo Framework} demonstrates how Qt's
- \l{Overview of Qt's Undo Framework}{undo framework} is used to
- provide advanced undo/redo functionality.
- \endlist
-
- \section1 QtWebKit
-
- \list
- \o \l{Web Browser} demonstrates how Qt's \l{QtWebKit Module}{WebKit module}
- can be used to implement a small Web browser.
- \endlist
-
- \section1 Phonon
-
- \list
- \o \l{demos/mediaplayer}{Media Player} demonstrates how the \l{Phonon Module} can be
- used to implement a basic media player application.
- \endlist
-
- \note The Phonon demos are currently not available for the MinGW platform.
-
-*/
diff --git a/doc/src/demos/affine.qdoc b/doc/src/demos/affine.qdoc
index 493059839..590f17ff7 100644
--- a/doc/src/demos/affine.qdoc
+++ b/doc/src/demos/affine.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/demos/anomaly.qdoc b/doc/src/demos/anomaly.qdoc
new file mode 100644
index 000000000..a2ea6777a
--- /dev/null
+++ b/doc/src/demos/anomaly.qdoc
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example demos/embedded/anomaly
+ \title Anomaly Demonstration
+
+ \image anomaly-demo.png
+*/
diff --git a/doc/src/demos/arthurplugin.qdoc b/doc/src/demos/arthurplugin.qdoc
index 800330f3e..b1e0ed7eb 100644
--- a/doc/src/demos/arthurplugin.qdoc
+++ b/doc/src/demos/arthurplugin.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/demos/books.qdoc b/doc/src/demos/books.qdoc
index fadc2776f..a16c06aac 100644
--- a/doc/src/demos/books.qdoc
+++ b/doc/src/demos/books.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/demos/boxes.qdoc b/doc/src/demos/boxes.qdoc
index 9150af7c7..b5852c6bf 100644
--- a/doc/src/demos/boxes.qdoc
+++ b/doc/src/demos/boxes.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/demos/browser.qdoc b/doc/src/demos/browser.qdoc
index 3a1740dc2..54e249803 100644
--- a/doc/src/demos/browser.qdoc
+++ b/doc/src/demos/browser.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/demos/chip.qdoc b/doc/src/demos/chip.qdoc
index 0eac5ded0..8adcfb1a0 100644
--- a/doc/src/demos/chip.qdoc
+++ b/doc/src/demos/chip.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/demos/composition.qdoc b/doc/src/demos/composition.qdoc
index 2268cd3f9..d734dd3ec 100644
--- a/doc/src/demos/composition.qdoc
+++ b/doc/src/demos/composition.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/demos/deform.qdoc b/doc/src/demos/deform.qdoc
index 903c3e859..1300e8823 100644
--- a/doc/src/demos/deform.qdoc
+++ b/doc/src/demos/deform.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/demos/desktopservices.qdoc b/doc/src/demos/desktopservices.qdoc
new file mode 100644
index 000000000..2eed37be1
--- /dev/null
+++ b/doc/src/demos/desktopservices.qdoc
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example demos/embedded/desktopservices
+ \title Embedded Desktop Services Demonstration
+
+ \image embeddeddesktopservices-demo.png
+*/
diff --git a/doc/src/demos/digiflip.qdoc b/doc/src/demos/digiflip.qdoc
new file mode 100644
index 000000000..553b11b0c
--- /dev/null
+++ b/doc/src/demos/digiflip.qdoc
@@ -0,0 +1,45 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example demos/embedded/digiflip
+ \title Digiflip Demonstration
+*/
diff --git a/doc/src/demos/embeddeddialogs.qdoc b/doc/src/demos/embeddeddialogs.qdoc
index 032cc9d4b..02181b3ff 100644
--- a/doc/src/demos/embeddeddialogs.qdoc
+++ b/doc/src/demos/embeddeddialogs.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/demos/embeddedsvgviewer.qdoc b/doc/src/demos/embeddedsvgviewer.qdoc
new file mode 100644
index 000000000..c09b4f0bf
--- /dev/null
+++ b/doc/src/demos/embeddedsvgviewer.qdoc
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example demos/embedded/embeddedsvgviewer
+ \title Embedded SVG Viewer Demonstration
+
+ \image embeddedsvgviewer-demo.png
+*/
diff --git a/doc/src/demos/flickable.qdoc b/doc/src/demos/flickable.qdoc
new file mode 100644
index 000000000..03ccc4811
--- /dev/null
+++ b/doc/src/demos/flickable.qdoc
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example demos/embedded/flickable
+ \title Flickable List Demonstration
+
+ \image flickable-demo.png
+*/
diff --git a/doc/src/demos/flightinfo.qdoc b/doc/src/demos/flightinfo.qdoc
new file mode 100644
index 000000000..efe658a86
--- /dev/null
+++ b/doc/src/demos/flightinfo.qdoc
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example demos/embedded/flightinfo
+ \title Flight Info Demonstration
+
+ \image flightinfo-demo.png
+*/
diff --git a/doc/src/demos/fluidlauncher.qdoc b/doc/src/demos/fluidlauncher.qdoc
new file mode 100644
index 000000000..20012a4ee
--- /dev/null
+++ b/doc/src/demos/fluidlauncher.qdoc
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example demos/embedded/fluidlauncher
+ \title Fluid Launcher Demonstration
+
+ \image fluidlauncher-demo.png
+*/
diff --git a/doc/src/demos/gradients.qdoc b/doc/src/demos/gradients.qdoc
index d645dc903..4bd4f9c40 100644
--- a/doc/src/demos/gradients.qdoc
+++ b/doc/src/demos/gradients.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/demos/interview.qdoc b/doc/src/demos/interview.qdoc
index fe90f196f..e9106e741 100644
--- a/doc/src/demos/interview.qdoc
+++ b/doc/src/demos/interview.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/demos/lightmaps.qdoc b/doc/src/demos/lightmaps.qdoc
new file mode 100644
index 000000000..04fde15c8
--- /dev/null
+++ b/doc/src/demos/lightmaps.qdoc
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example demos/embedded/lightmaps
+ \title Light Maps Demonstration
+
+ \image lightmaps-demo.png
+*/
diff --git a/doc/src/demos/macmainwindow.qdoc b/doc/src/demos/macmainwindow.qdoc
index 9454c4c48..d9715292b 100644
--- a/doc/src/demos/macmainwindow.qdoc
+++ b/doc/src/demos/macmainwindow.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/demos/mainwindow.qdoc b/doc/src/demos/mainwindow.qdoc
index c2e2fc435..d161fb9a6 100644
--- a/doc/src/demos/mainwindow.qdoc
+++ b/doc/src/demos/mainwindow.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/demos/mediaplayer.qdoc b/doc/src/demos/mediaplayer.qdoc
index cac0b5ada..17ae79bba 100644
--- a/doc/src/demos/mediaplayer.qdoc
+++ b/doc/src/demos/mediaplayer.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,27 +21,26 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
/*!
- \example demos/mediaplayer
+ \example demos/qmediaplayer
\title Media Player
The Media Player demonstration shows how \l{Phonon Module}{Phonon}
diff --git a/doc/src/demos/pathstroke.qdoc b/doc/src/demos/pathstroke.qdoc
index 5dfb2fa81..8d78d7617 100644
--- a/doc/src/demos/pathstroke.qdoc
+++ b/doc/src/demos/pathstroke.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/demos/qtdemo.qdoc b/doc/src/demos/qtdemo.qdoc
new file mode 100644
index 000000000..ac707714c
--- /dev/null
+++ b/doc/src/demos/qtdemo.qdoc
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qtdemo.html
+ \title Examples and Demos Launcher
+ \ingroup qttools
+ \keyword qtdemo
+
+ The Examples and Demos Launcher (\c qtdemo) allows the user to browse the
+ examples and demonstrations included with Qt, access the documentation
+ associated with each of them, and launch them as separate applications.
+
+ \image qtdemo.png
+
+ The \c qtdemo executable should be installed alongside the
+ \l{Qt's Tools}{other tools} supplied with Qt.
+
+ \list
+ \i On Windows, click the Start button, open the \e Programs submenu, open
+ the \e{Qt 4} submenu, and click \e{Examples and Demos}.
+ \i On Unix or Linux, you may find a \c qtdemo icon on the desktop background or
+ in the desktop start menu under the \e Programming or \e Development
+ submenus. You can launch this application from this icon. Alternatively, you can
+ enter \c qtdemo in a terminal window.
+ \i On Mac OS X, navigate to the \c /Developer/Applications/Qt directory in the
+ Finder and double click on the \c qtdemo.app icon.
+ \endlist
+*/
diff --git a/doc/src/demos/raycasting.qdoc b/doc/src/demos/raycasting.qdoc
new file mode 100644
index 000000000..36c61f009
--- /dev/null
+++ b/doc/src/demos/raycasting.qdoc
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example demos/embedded/raycasting
+ \title Ray Casting Demonstration
+
+ \image raycasting-demo.png
+*/
diff --git a/doc/src/demos/spreadsheet.qdoc b/doc/src/demos/spreadsheet.qdoc
index 7cd514ce8..62722ac6d 100644
--- a/doc/src/demos/spreadsheet.qdoc
+++ b/doc/src/demos/spreadsheet.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/demos/sqlbrowser.qdoc b/doc/src/demos/sqlbrowser.qdoc
index 328585804..6c3cbb2f5 100644
--- a/doc/src/demos/sqlbrowser.qdoc
+++ b/doc/src/demos/sqlbrowser.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/demos/styledemo.qdoc b/doc/src/demos/styledemo.qdoc
new file mode 100644
index 000000000..44745c921
--- /dev/null
+++ b/doc/src/demos/styledemo.qdoc
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example demos/embedded/styledemo
+ \title Embedded Styles Demonstration
+
+ \image styledemo-demo.png
+*/
diff --git a/doc/src/demos/sub-attaq.qdoc b/doc/src/demos/sub-attaq.qdoc
index 34fbb1103..57a26a2a5 100644
--- a/doc/src/demos/sub-attaq.qdoc
+++ b/doc/src/demos/sub-attaq.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/demos/textedit.qdoc b/doc/src/demos/textedit.qdoc
index 4de399677..c3cdbd21e 100644
--- a/doc/src/demos/textedit.qdoc
+++ b/doc/src/demos/textedit.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/demos/undo.qdoc b/doc/src/demos/undo.qdoc
index f330471de..cf21a1cf0 100644
--- a/doc/src/demos/undo.qdoc
+++ b/doc/src/demos/undo.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/demos/weatherinfo.qdoc b/doc/src/demos/weatherinfo.qdoc
new file mode 100644
index 000000000..54b273424
--- /dev/null
+++ b/doc/src/demos/weatherinfo.qdoc
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example demos/embedded/weatherinfo
+ \title Weather Info Demonstration
+
+ \image weatherinfo-demo.png
+*/
diff --git a/doc/src/deployment.qdoc b/doc/src/deployment.qdoc
deleted file mode 100644
index 9f8ee8f0c..000000000
--- a/doc/src/deployment.qdoc
+++ /dev/null
@@ -1,1478 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
-/*!
- \group deployment
- \title Deploying Qt Applications
- \ingroup buildsystem
-
- Deploying an Qt application does not require any C++
- programming. All you need to do is to build Qt and your
- application in release mode, following the procedures described in
- this documentation. We will demonstrate the procedures in terms of
- deploying the \l {tools/plugandpaint}{Plug & Paint} application
- that is provided in Qt's examples directory.
-
- \section1 Static vs. Shared Libraries
-
- There are two ways of deploying an application:
-
- \list
- \o Static Linking
- \o Shared Libraries (Frameworks on Mac)
- \endlist
-
- Static linking results in a stand-alone executable. The advantage
- is that you will only have a few files to deploy. The
- disadvantages are that the executables are large and with no
- flexibility (i.e a new version of the application, or of Qt, will
- require that the deployment process is repeated), and that you
- cannot deploy plugins.
-
- To deploy plugin-based applications, you can use the shared
- library approach. Shared libraries also provide smaller, more
- flexible executables. For example, using the shared library
- approach, the user is able to independently upgrade the Qt library
- used by the application.
-
- Another reason why you might want to use the shared library
- approach, is if you want to use the same Qt libraries for a family
- of applications. In fact, if you download the binary installation
- of Qt, you get Qt as a shared library.
-
- The disadvantage with the shared library approach is that you
- will get more files to deploy. For more information, see
- \l{sharedlibrary.html}{Creating Shared Libraries}.
-
- \section1 Deploying Qt's Libraries
-
- \table
- \header
- \o {4,1} Qt's Libraries
- \row
- \o \l {QtAssistant}
- \o \l {QAxContainer}
- \o \l {QAxServer}
- \o \l {QtCore}
- \row
- \o \l {QtDBus}
- \o \l {QtDesigner}
- \o \l {QtGui}
- \o \l {QtHelp}
- \row
- \o \l {QtNetwork}
- \o \l {QtOpenGL}
- \o \l {QtScript}
- \o \l {QtScriptTools}
- \row
- \o \l {QtSql}
- \o \l {QtSvg}
- \o \l {QtWebKit}
- \o \l {QtXml}
- \row
- \o \l {QtXmlPatterns}
- \o \l {Phonon Module}{Phonon}
- \o \l {Qt3Support}
- \endtable
-
- Since Qt is not a system library, it has to be redistributed along
- with your application; the minimum is to redistribute the run-time
- of the libraries used by the application. Using static linking,
- however, the Qt run-time is compiled into the executable.
-
- In particular, you will need to deploy Qt plugins, such as
- JPEG support or SQL drivers. For more information about plugins,
- see the \l {plugins-howto.html}{How to Create Qt Plugins}
- documentation.
-
- When deploying an application using the shared library approach
- you must ensure that the Qt libraries will use the correct path to
- find the Qt plugins, documentation, translation etc. To do this you
- can use a \c qt.conf file. For more information, see the \l {Using
- qt.conf} documentation.
-
- Depending on configuration, compiler specific libraries must be
- redistributed as well. For more information, see the platform
- specific Application Dependencies sections: \l
- {deployment-x11.html#application-dependencies}{X11}, \l
- {deployment-windows.html#application-dependencies}{Windows}, \l
- {deployment-mac.html#application-dependencies}{Mac}.
-
- \section1 Licensing
-
- Some of Qt's libraries are based on third party libraries that are
- not licensed using the same dual-license model as Qt. As a result,
- care must be taken when deploying applications that use these
- libraries, particularly when the application is statically linked
- to them.
-
- The following table contains an inexhaustive summary of the issues
- you should be aware of.
-
- \table
- \header \o Qt Library \o Dependency
- \o Licensing Issue
- \row \o QtHelp \o CLucene
- \o The version of clucene distributed with Qt is licensed
- under the GNU LGPL version 2.1 or later. This has implications for
- developers of closed source applications. Please see
- \l{QtHelp Module#License Information}{the QtHelp module documentation}
- for more information.
-
- \row \o QtNetwork \o OpenSSL
- \o Some configurations of QtNetwork use OpenSSL at run-time. Deployment
- of OpenSSL libraries is subject to both licensing and export restrictions.
- More information can be found in the \l{Secure Sockets Layer (SSL) Classes}
- documentation.
-
- \row \o QtWebKit \o WebKit
- \o WebKit is licensed under the GNU LGPL version 2 or later.
- This has implications for developers of closed source applications.
- Please see \l{QtWebKit Module#License Information}{the QtWebKit module
- documentation} for more information.
-
- \row \o \l{Phonon Module}{Phonon} \o Phonon
- \o Phonon relies on the native multimedia engines on different platforms.
- Phonon itself is licensed under the GNU LGPL version 2. Please see
- \l{Phonon Module#License Information}{the Phonon module documentation}
- for more information on licensing and the
- \l{Phonon Overview#Backends}{Phonon Overview} for details of the backends
- in use on different platforms.
- \endtable
-
- \section1 Platform-Specific Notes
-
- The procedure of deploying Qt applications is different for the
- various platforms:
-
- \list
- \o \l{Deploying an Application on X11 Platforms}{Qt for X11 Platforms}
- \o \l{Deploying an Application on Windows}{Qt for Windows}
- \o \l{Deploying an Application on Mac OS X}{Qt for Mac OS X}
- \o \l{Deploying Qt for Embedded Linux Applications}{Qt for Embedded Linux}
- \endlist
-
- \sa Installation {Window System Specific Notes}
-*/
-
-/*!
- \page deployment-x11.html
- \contentspage Deploying Qt Applications
-
- \title Deploying an Application on X11 Platforms
- \ingroup deployment
-
- Due to the proliferation of Unix systems (commercial Unices, Linux
- distributions, etc.), deployment on Unix is a complex
- topic. Before we start, be aware that programs compiled for one
- Unix flavor will probably not run on a different Unix system. For
- example, unless you use a cross-compiler, you cannot compile your
- application on Irix and distribute it on AIX.
-
- Contents:
-
- \tableofcontents
-
- This documentation will describe how to determine which files you
- should include in your distribution, and how to make sure that the
- application will find them at run-time. We will demonstrate the
- procedures in terms of deploying the \l {tools/plugandpaint}{Plug
- & Paint} application that is provided in Qt's examples directory.
-
- \section1 Static Linking
-
- Static linking is often the safest and easiest way to distribute
- an application on Unix since it relieves you from the task of
- distributing the Qt libraries and ensuring that they are located
- in the default search path for libraries on the target system.
-
- \section2 Building Qt Statically
-
- To use this approach, you must start by installing a static version
- of the Qt library:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 0
-
- We specify the prefix so that we do not overwrite the existing Qt
- installation. The example above only builds the Qt libraries,
- i.e. the examples and Qt Designer will not be built. When \c make
- is done, you will find the Qt libraries in the \c /path/to/Qt/lib
- directory.
-
- When linking your application against static Qt libraries, note
- that you might need to add more libraries to the \c LIBS line in
- your project file. For more information, see the \l {Application
- Dependencies} section.
-
- \section2 Linking the Application to the Static Version of Qt
-
- Once Qt is built statically, the next step is to regenerate the
- makefile and rebuild the application. First, we must go into the
- directory that contains the application:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 1
-
- Now run qmake to create a new makefile for the application, and do
- a clean build to create the statically linked executable:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 2
-
- You probably want to link against the release libraries, and you
- can specify this when invoking \c qmake. Note that we must set the
- path to the static Qt that we just built.
-
- To check that the application really links statically with Qt, run
- the \c ldd tool (available on most Unices):
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 3
-
- Verify that the Qt libraries are not mentioned in the output.
-
- Now, provided that everything compiled and linked without any
- errors, we should have a \c plugandpaint file that is ready for
- deployment. One easy way to check that the application really can
- be run stand-alone is to copy it to a machine that doesn't have Qt
- or any Qt applications installed, and run it on that machine.
-
- Remember that if your application depends on compiler specific
- libraries, these must still be redistributed along with your
- application. For more information, see the \l {Application
- Dependencies} section.
-
- The \l {tools/plugandpaint}{Plug & Paint} example consists of
- several components: The core application (\l
- {tools/plugandpaint}{Plug & Paint}), and the \l
- {tools/plugandpaintplugins/basictools}{Basic Tools} and \l
- {tools/plugandpaintplugins/extrafilters}{Extra Filters}
- plugins. Since we cannot deploy plugins using the static linking
- approach, the executable we have prepared so far is
- incomplete. The application will run, but the functionality will
- be disabled due to the missing plugins. To deploy plugin-based
- applications we should use the shared library approach.
-
- \section1 Shared Libraries
-
- We have two challenges when deploying the \l
- {tools/plugandpaint}{Plug & Paint} application using the shared
- libraries approach: The Qt runtime has to be correctly
- redistributed along with the application executable, and the
- plugins have to be installed in the correct location on the target
- system so that the application can find them.
-
- \section2 Building Qt as a Shared Library
-
- We assume that you already have installed Qt as a shared library,
- which is the default when installing Qt, in the \c /path/to/Qt
- directory. For more information on how to build Qt, see the \l
- {Installation} documentation.
-
- \section2 Linking the Application to Qt as a Shared Library
-
- After ensuring that Qt is built as a shared library, we can build
- the \l {tools/plugandpaint}{Plug & Paint} application. First, we
- must go into the directory that contains the application:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 4
-
- Now run qmake to create a new makefile for the application, and do
- a clean build to create the dynamically linked executable:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 5
-
- This builds the core application, the following will build the
- plugins:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 6
-
- If everything compiled and linked without any errors, we will get
- a \c plugandpaint executable and the \c libpnp_basictools.so and
- \c libpnp_extrafilters.so plugin files.
-
- \section2 Creating the Application Package
-
- There is no standard package management on Unix, so the method we
- present below is a generic solution. See the documentation for
- your target system for information on how to create a package.
-
- To deploy the application, we must make sure that we copy the
- relevant Qt libraries (corresponding to the Qt modules used in the
- application) as well as the executable to the same
- directory. Remember that if your application depends on compiler
- specific libraries, these must also be redistributed along with
- your application. For more information, see the \l {Application
- Dependencies} section.
-
- We'll cover the plugins shortly, but the main issue with shared
- libraries is that you must ensure that the dynamic linker will
- find the Qt libraries. Unless told otherwise, the dynamic linker
- doesn't search the directory where your application resides. There
- are many ways to solve this:
-
- \list
- \o You can install the Qt libraries in one of the system
- library paths (e.g. \c /usr/lib on most systems).
-
- \o You can pass a predetermined path to the \c -rpath command-line
- option when linking the application. This will tell the dynamic
- linker to look in this directory when starting your application.
-
- \o You can write a startup script for your application, where you
- modify the dynamic linker configuration (e.g. adding your
- application's directory to the \c LD_LIBRARY_PATH environment
- variable. \note If your application will be running with "Set
- user ID on execution," and if it will be owned by root, then
- LD_LIBRARY_PATH will be ignored on some platforms. In this
- case, use of the LD_LIBRARY_PATH approach is not an option).
-
- \endlist
-
- The disadvantage of the first approach is that the user must have
- super user privileges. The disadvantage of the second approach is
- that the user may not have privileges to install into the
- predetemined path. In either case, the users don't have the option
- of installing to their home directory. We recommend using the
- third approach since it is the most flexible. For example, a \c
- plugandpaint.sh script will look like this:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 7
-
- By running this script instead of the executable, you are sure
- that the Qt libraries will be found by the dynamic linker. Note
- that you only have to rename the script to use it with other
- applications.
-
- When looking for plugins, the application searches in a plugins
- subdirectory inside the directory of the application
- executable. Either you have to manually copy the plugins into the
- \c plugins directory, or you can set the \c DESTDIR in the
- plugins' project files:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 8
-
- An archive distributing all the Qt libraries, and all the plugins,
- required to run the \l {tools/plugandpaint}{Plug & Paint}
- application, would have to include the following files:
-
- \table 100%
- \header
- \o Component \o {2, 1} File Name
- \row
- \o The executable
- \o {2, 1} \c plugandpaint
- \row
- \o The script to run the executable
- \o {2, 1} \c plugandpaint.sh
- \row
- \o The Basic Tools plugin
- \o {2, 1} \c plugins\libpnp_basictools.so
- \row
- \o The ExtraFilters plugin
- \o {2, 1} \c plugins\libpnp_extrafilters.so
- \row
- \o The Qt Core module
- \o {2, 1} \c libQtCore.so.4
- \row
- \o The Qt GUI module
- \o {2, 1} \c libQtGui.so.4
- \endtable
-
- On most systems, the extension for shared libraries is \c .so. A
- notable exception is HP-UX, which uses \c .sl.
-
- Remember that if your application depends on compiler specific
- libraries, these must still be redistributed along with your
- application. For more information, see the \l {Application
- Dependencies} section.
-
- To verify that the application now can be successfully deployed,
- you can extract this archive on a machine without Qt and without
- any compiler installed, and try to run it, i.e. run the \c
- plugandpaint.sh script.
-
- An alternative to putting the plugins in the \c plugins
- subdirectory is to add a custom search path when you start your
- application using QApplication::addLibraryPath() or
- QApplication::setLibraryPaths().
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 9
-
- \section1 Application Dependencies
-
- \section2 Additional Libraries
-
- To find out which libraries your application depends on, run the
- \c ldd tool (available on most Unices):
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 10
-
- This will list all the shared library dependencies for your
- application. Depending on configuration, these libraries must be
- redistributed along with your application. In particular, the
- standard C++ library must be redistributed if you're compiling
- your application with a compiler that is binary incompatible with
- the system compiler. When possible, the safest solution is to link
- against these libraries statically.
-
- You will probably want to link dynamically with the regular X11
- libraries, since some implementations will try to open other
- shared libraries with \c dlopen(), and if this fails, the X11
- library might cause your application to crash.
-
- It's also worth mentioning that Qt will look for certain X11
- extensions, such as Xinerama and Xrandr, and possibly pull them
- in, including all the libraries that they link against. If you
- can't guarantee the presence of a certain extension, the safest
- approach is to disable it when configuring Qt (e.g. \c {./configure
- -no-xrandr}).
-
- FontConfig and FreeType are other examples of libraries that
- aren't always available or that aren't always binary
- compatible. As strange as it may sound, some software vendors have
- had success by compiling their software on very old machines and
- have been very careful not to upgrade any of the software running
- on them.
-
- When linking your application against the static Qt libraries, you
- must explicitly link with the dependent libraries mentioned
- above. Do this by adding them to the \c LIBS variable in your
- project file.
-
- \section2 Qt Plugins
-
- Your application may also depend on one or more Qt plugins, such
- as the JPEG image format plugin or a SQL driver plugin. Be sure
- to distribute any Qt plugins that you need with your application,
- and note that each type of plugin should be located within a
- specific subdirectory (such as \c imageformats or \c sqldrivers)
- within your distribution directory, as described below.
-
- \note If you are deploying an application that uses QtWebKit to display
- HTML pages from the World Wide Web, you should include all text codec
- plugins to support as many HTML encodings possible.
-
- The search path for Qt plugins (as well as a few other paths) is
- hard-coded into the QtCore library. By default, the first plugin
- search path will be hard-coded as \c /path/to/Qt/plugins. As
- mentioned above, using pre-determined paths has certain
- disadvantages, so you need to examine various alternatives to make
- sure that the Qt plugins are found:
-
- \list
-
- \o \l{qt-conf.html}{Using \c qt.conf}. This is the recommended
- approach since it provides the most flexibility.
-
- \o Using QApplication::addLibraryPath() or
- QApplication::setLibraryPaths().
-
- \o Using a third party installation utility or the target system's
- package manager to change the hard-coded paths in the QtCore
- library.
-
- \endlist
-
- The \l{How to Create Qt Plugins} document outlines the issues you
- need to pay attention to when building and deploying plugins for
- Qt applications.
-*/
-
-/*!
- \page deployment-windows.html
- \contentspage Deploying Qt Applications
-
- \title Deploying an Application on Windows
- \ingroup deployment
-
- This documentation will describe how to determine which files you
- should include in your distribution, and how to make sure that the
- application will find them at run-time. We will demonstrate the
- procedures in terms of deploying the \l {tools/plugandpaint}{Plug
- & Paint} application that is provided in Qt's examples directory.
-
- Contents:
-
- \tableofcontents
-
- \section1 Static Linking
-
- If you want to keep things simple by only having a few files to
- deploy, i.e. a stand-alone executable with the associated compiler
- specific DLLs, then you must build everything statically.
-
- \section2 Building Qt Statically
-
- Before we can build our application we must make sure that Qt is
- built statically. To do this, go to a command prompt and type the
- following:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 11
-
- Remember to specify any other options you need, such as data base
- drivers, as arguments to \c configure. Once \c configure has
- finished, type the following:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 12
-
- This will build Qt statically. Note that unlike with a dynamic build,
- building Qt statically will result in libraries without version numbers;
- e.g. \c QtCore4.lib will be \c QtCore.lib. Also, we have used \c nmake
- in all the examples, but if you use MinGW you must use
- \c mingw32-make instead.
-
- \note If you later need to reconfigure and rebuild Qt from the
- same location, ensure that all traces of the previous configuration are
- removed by entering the build directory and typing \c{nmake distclean}
- before running \c configure again.
-
- \section2 Linking the Application to the Static Version of Qt
-
- Once Qt has finished building we can build the \l
- {tools/plugandpaint}{Plug & Paint} application. First we must go
- into the directory that contains the application:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 13
-
- We must then run \c qmake to create a new makefile for the
- application, and do a clean build to create the statically linked
- executable:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 14
-
- You probably want to link against the release libraries, and you
- can specify this when invoking \c qmake. Now, provided that
- everything compiled and linked without any errors, we should have
- a \c plugandpaint.exe file that is ready for deployment. One easy
- way to check that the application really can be run stand-alone is
- to copy it to a machine that doesn't have Qt or any Qt
- applications installed, and run it on that machine.
-
- Remember that if your application depends on compiler specific
- libraries, these must still be redistributed along with your
- application. You can check which libraries your application is
- linking against by using the \c depends tool. For more
- information, see the \l {Application Dependencies} section.
-
- The \l {tools/plugandpaint}{Plug & Paint} example consists of
- several components: The application itself (\l
- {tools/plugandpaint}{Plug & Paint}), and the \l
- {tools/plugandpaintplugins/basictools}{Basic Tools} and \l
- {tools/plugandpaintplugins/extrafilters}{Extra Filters}
- plugins. Since we cannot deploy plugins using the static linking
- approach, the application we have prepared is incomplete. It will
- run, but the functionality will be disabled due to the missing
- plugins. To deploy plugin-based applications we should use the
- shared library approach.
-
- \section1 Shared Libraries
-
- We have two challenges when deploying the \l
- {tools/plugandpaint}{Plug & Paint} application using the shared
- libraries approach: The Qt runtime has to be correctly
- redistributed along with the application executable, and the
- plugins have to be installed in the correct location on the target
- system so that the application can find them.
-
- \section2 Building Qt as a Shared Library
-
- We assume that you already have installed Qt as a shared library,
- which is the default when installing Qt, in the \c C:\path\to\Qt
- directory. For more information on how to build Qt, see the \l
- {Installation} documentation.
-
- \section2 Linking the Application to Qt as a Shared Library
-
- After ensuring that Qt is built as a shared library, we can build
- the \l {tools/plugandpaint}{Plug & Paint} application. First, we
- must go into the directory that contains the application:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 15
-
- Now run \c qmake to create a new makefile for the application, and
- do a clean build to create the dynamically linked executable:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 16
-
- This builds the core application, the following will build the
- plugins:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 17
-
- If everything compiled and linked without any errors, we will get
- a \c plugandpaint.exe executable and the \c pnp_basictools.dll and
- \c pnp_extrafilters.dll plugin files.
-
- \section2 Creating the Application Package
-
- To deploy the application, we must make sure that we copy the
- relevant Qt DLL (corresponding to the Qt modules used in
- the application) as well as the executable to the same directory
- in the \c release subdirectory.
-
- Remember that if your application depends on compiler specific
- libraries, these must be redistributed along with your
- application. You can check which libraries your application is
- linking against by using the \c depends tool. For more
- information, see the \l {Application Dependencies} section.
-
- We'll cover the plugins shortly, but first we'll check that the
- application will work in a deployed environment: Either copy the
- executable and the Qt DLLs to a machine that doesn't have Qt
- or any Qt applications installed, or if you want to test on the
- build machine, ensure that the machine doesn't have Qt in its
- environment.
-
- If the application starts without any problems, then we have
- successfully made a dynamically linked version of the \l
- {tools/plugandpaint}{Plug & Paint} application. But the
- application's functionality will still be missing since we have
- not yet deployed the associated plugins.
-
- Plugins work differently to normal DLLs, so we can't just
- copy them into the same directory as our application's executable
- as we did with the Qt DLLs. When looking for plugins, the
- application searches in a \c plugins subdirectory inside the
- directory of the application executable.
-
- So to make the plugins available to our application, we have to
- create the \c plugins subdirectory and copy over the relevant DLLs:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 18
-
- An archive distributing all the Qt DLLs and application
- specific plugins required to run the \l {tools/plugandpaint}{Plug
- & Paint} application, would have to include the following files:
-
- \table 100%
- \header
- \o Component \o {2, 1} File Name
- \row
- \o The executable
- \o {2, 1} \c plugandpaint.exe
- \row
- \o The Basic Tools plugin
- \o {2, 1} \c plugins\pnp_basictools.dll
- \row
- \o The ExtraFilters plugin
- \o {2, 1} \c plugins\pnp_extrafilters.dll
- \row
- \o The Qt Core module
- \o {2, 1} \c qtcore4.dll
- \row
- \o The Qt GUI module
- \o {2, 1} \c qtgui4.dll
- \endtable
-
- In addition, the archive must contain the following compiler
- specific libraries depending on your version of Visual Studio:
-
- \table 100%
- \header
- \o \o VC++ 6.0 \o VC++ 7.1 (2003) \o VC++ 8.0 (2005) \o VC++ 9.0 (2008)
- \row
- \o The C run-time
- \o \c msvcrt.dll
- \o \c msvcr71.dll
- \o \c msvcr80.dll
- \o \c msvcr90.dll
- \row
- \o The C++ run-time
- \o \c msvcp60.dll
- \o \c msvcp71.dll
- \o \c msvcp80.dll
- \o \c msvcp90.dll
- \endtable
-
- To verify that the application now can be successfully deployed,
- you can extract this archive on a machine without Qt and without
- any compiler installed, and try to run it.
-
- An alternative to putting the plugins in the plugins subdirectory
- is to add a custom search path when you start your application
- using QApplication::addLibraryPath() or
- QApplication::setLibraryPaths().
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 19
-
- One benefit of using plugins is that they can easily be made
- available to a whole family of applications.
-
- It's often most convenient to add the path in the application's \c
- main() function, right after the QApplication object is
- created. Once the path is added, the application will search it
- for plugins, in addition to looking in the \c plugins subdirectory
- in the application's own directory. Any number of additional paths
- can be added.
-
- \section2 Visual Studio 2005 Onwards
-
- When deploying an application compiled with Visual Studio 2005 onwards,
- there are some additional steps to be taken.
-
- First, we need to copy the manifest file created when linking the
- application. This manifest file contains information about the
- application's dependencies on side-by-side assemblies, such as the runtime
- libraries.
-
- The manifest file needs to be copied into the \bold same folder as the
- application executable. You do not need to copy the manifest files for
- shared libraries (DLLs), since they are not used.
-
- If the shared library has dependencies that are different from the
- application using it, the manifest file needs to be embedded into the DLL
- binary. Since Qt 4.1.3, the follwoing \c CONFIG options are available for
- embedding manifests:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 20
-
- To use the options, add
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 21
-
- to your .pro file. The \c embed_manifest_dll option is enabled by default.
-
- You can find more information about manifest files and side-by-side
- assemblies at the
- \l {http://msdn.microsoft.com/en-us/library/aa376307.aspx}{MSDN website}.
-
- There are two ways to include the run time libraries: by bundling them
- directly with your application or by installing them on the end-user's
- system.
-
- To bundle the run time libraries with your application, copy the directory
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 22
-
- into the folder where your executable is, so that you are including a
- \c Microsoft.VC80.CRT directory alongside your application's executable. If
- you are bundling the runtimes and need to deploy plugins as well, you have
- to remove the manifest from the plugins (embedded as a resource) by adding
- the following line to the \c{.pro} file of the plugins you are compiling:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 23
-
- \warning If you skip the step above, the plugins will not load on some
- systems.
-
- To install the runtime libraries on the end-user's system, you need to
- include the appropriate Visual C++ Redistributable Package (VCRedist)
- executable with your application and ensure that it is executed when the
- user installs your application.
-
- For example, on an 32-bit x86-based system, you would include the
- \l{http://www.microsoft.com/downloads/details.aspx?FamilyId=32BC1BEE-A3F9-4C13-9C99-220B62A191EE}{vcredist_x86.exe}
- executable. The \l{http://www.microsoft.com/downloads/details.aspx?familyid=526BF4A7-44E6-4A91-B328-A4594ADB70E5}{vcredist_IA64.exe}
- and \l{http://www.microsoft.com/downloads/details.aspx?familyid=90548130-4468-4BBC-9673-D6ACABD5D13B}{vcredist_x64.exe}
- executables provide the appropriate libraries for the IA64 and 64-bit x86
- architectures, respectively.
-
- \note The application you ship must be compiled with exactly the same
- compiler version against the same C runtime version. This prevents
- deploying errors caused by different versions of the C runtime libraries.
-
-
- \section1 Application Dependencies
-
- \section2 Additional Libraries
-
- Depending on configuration, compiler specific libraries must be
- redistributed along with your application. You can check which
- libraries your application is linking against by using the
- \l{Dependency Walker} tool. All you need to do is to run it like
- this:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 24
-
- This will provide a list of the libraries that your application
- depends on and other information.
-
- \image deployment-windows-depends.png
-
- When looking at the release build of the Plug & Paint executable
- (\c plugandpaint.exe) with the \c depends tool, the tool lists the
- following immediate dependencies to non-system libraries:
-
- \table 100%
- \header
- \o Qt
- \o VC++ 6.0
- \o VC++ 7.1 (2003)
- \o VC++ 8.0 (2005)
- \o MinGW
- \row
- \o \list
- \o QTCORE4.DLL - The QtCore runtime
- \o QTGUI4.DLL - The QtGui runtime
- \endlist
- \o \list
- \o MSVCRT.DLL - The C runtime
- \o MSVCP60.DLL - The C++ runtime (only when STL is installed)
- \endlist
- \o \list
- \o MSVCR71.DLL - The C runtime
- \o MSVCP71.DLL - The C++ runtime (only when STL is installed)
- \endlist
- \o \list
- \o MSVCR80.DLL - The C runtime
- \o MSVCP80.DLL - The C++ runtime (only when STL is installed)
- \endlist
- \o \list
- \o MINGWM10.DLL - The MinGW run-time
- \endlist
- \endtable
-
- When looking at the plugin DLLs the exact same dependencies
- are listed.
-
- \section2 Qt Plugins
-
- Your application may also depend on one or more Qt plugins, such
- as the JPEG image format plugin or a SQL driver plugin. Be sure
- to distribute any Qt plugins that you need with your application,
- and note that each type of plugin should be located within a
- specific subdirectory (such as \c imageformats or \c sqldrivers)
- within your distribution directory, as described below.
-
- \note If you are deploying an application that uses QtWebKit to display
- HTML pages from the World Wide Web, you should include all text codec
- plugins to support as many HTML encodings possible.
-
- The search path for Qt plugins is hard-coded into the QtCore library.
- By default, the plugins subdirectory of the Qt installation is the first
- plugin search path. However, pre-determined paths like the default one
- have certain disadvantages. For example, they may not exist on the target
- machine. For that reason, you need to examine various alternatives to make
- sure that the Qt plugins are found:
-
- \list
-
- \o \l{qt-conf.html}{Using \c qt.conf}. This approach is the recommended
- if you have executables in different places sharing the same plugins.
-
- \o Using QApplication::addLibraryPath() or
- QApplication::setLibraryPaths(). This approach is recommended if you only
- have one executable that will use the plugin.
-
- \o Using a third party installation utility to change the
- hard-coded paths in the QtCore library.
-
- \endlist
-
- If you add a custom path using QApplication::addLibraryPath it could
- look like this:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 54
-
- Then qApp->libraryPaths() would return something like this:
-
- "C:/customPath/plugins "
- "C:/Qt/%VERSION%/plugins"
- "E:/myApplication/directory/"
-
- The executable will look for the plugins in these directories and
- the same order as the QStringList returned by qApp->libraryPaths().
- The newly added path is prepended to the qApp->libraryPaths() which
- means that it will be searched through first. However, if you use
- qApp->setLibraryPaths(), you will be able to determend which paths
- and in which order they will be searched.
-
- The \l{How to Create Qt Plugins} document outlines the issues you
- need to pay attention to when building and deploying plugins for
- Qt applications.
-*/
-
-/*!
- \page deployment-mac.html
- \contentspage Deploying Qt Applications
-
- \title Deploying an Application on Mac OS X
- \ingroup deployment
-
- Starting with version 4.5, Qt now includes a \l {macdeploy}{deployment tool}
- that automates the prodecures described in this document.
-
- This documentation will describe how to create a bundle, and how
- to make sure that the application will find the resources it needs
- at run-time. We will demonstrate the procedures in terms of
- deploying the \l {tools/plugandpaint}{Plug & Paint} application
- that is provided in Qt's examples directory.
-
- \tableofcontents
-
- \section1 The Bundle
-
- On the Mac, a GUI application must be built and run from a
- bundle. A bundle is a directory structure that appears as a single
- entity when viewed in the Finder. A bundle for an application
- typcially contains the executable and all the resources it
- needs. See the image below:
-
- \image deployment-mac-bundlestructure.png
-
- The bundle provides many advantages to the user. One primary
- advantage is that, since it is a single entity, it allows for
- drag-and-drop installation. As a programmer you can access bundle
- information in your own code. This is specific to Mac OS X and
- beyond the scope of this document. More information about bundles
- is available on \l
- {http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFBundles/index.html}{Apple's Developer Website}.
-
- A Qt command line application on Mac OS X works similar to a
- command line application on Unix and Windows. You probably don't
- want to run it in a bundle: Add this to your application's .pro:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 26
-
- This will tell \c qmake not to put the executable inside a
- bundle. Please refer to the \l{Deploying an Application on
- X11 Platforms}{X11 deployment documentation} for information about how
- to deploy these "bundle-less" applications.
-
- \section1 Xcode
-
- We will only concern ourselves with command-line tools here. While
- it is possible to use Xcode for this, Xcode has changed enough
- between each version that it makes it difficult to document it
- perfectly for each version. A future version of this document may
- include more information for using Xcode in the deployment
- process.
-
- \section1 Static Linking
-
- If you want to keep things simple by only having a few files to
- deploy, then you must build everything statically.
-
- \section2 Building Qt Statically
-
- Start by installing a static version of the Qt library. Remember
- that you will not be able to use plugins and you must build in all
- the image formats, SQL drivers, etc..
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 27
-
- You can check the various options that are available by running \c
- configure -help.
-
- \section2 Linking the Application to the Static Version of Qt
-
- Once Qt is built statically, the next step is to regenerate the
- makefile and rebuild the application. First, we must go into the
- directory that contains the application:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 28
-
- Now run \c qmake to create a new makefile for the application, and do
- a clean build to create the statically linked executable:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 29
-
- You probably want to link against the release libraries, and you
- can specify this when invoking \c qmake. If you have Xcode Tools
- 1.5 or higher installed, you may want to take advantage of "dead
- code stripping" to reduce the size of your binary even more. You
- can do this by passing \c {LIBS+= -dead_strip} to \c qmake in
- addition to the \c {-config release} parameter. This doesn't have
- as large an effect if you are using GCC 4, since Qt will then have
- function visibility hints built-in, but if you use GCC 3.3, it
- could make a difference.
-
- Now, provided that everything compiled and linked without any
- errors, we should have a \c plugandpaint.app bundle that is ready
- for deployment. One easy way to check that the application really
- can be run stand-alone is to copy the bundle to a machine that
- doesn't have Qt or any Qt applications installed, and run the
- application on that machine.
-
- You can check what other libraries your application links to using
- the \c otool:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 30
-
- Here is what the output looks like for the static \l
- {tools/plugandpaint}{Plug & Paint}:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 31
-
- For more information, see the \l {Application Dependencies}
- section.
-
- If you see \e Qt libraries in the output, it probably
- means that you have both dynamic and static Qt libraries installed
- on your machine. The linker will always choose dynamic over
- static. There are two solutions: Either move your Qt dynamic
- libraries (\c .dylibs) away to another directory while you link
- the application and then move them back, or edit the \c Makefile
- and replace link lines for the Qt libraries with the absolute path
- to the static libraries. For example, replace
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 32
-
- with
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 33
-
- The \l {tools/plugandpaint}{Plug & Paint} example consists of
- several components: The core application (\l
- {tools/plugandpaint}{Plug & Paint}), and the \l
- {tools/plugandpaintplugins/basictools}{Basic Tools} and \l
- {tools/plugandpaintplugins/extrafilters}{Extra Filters}
- plugins. Since we cannot deploy plugins using the static linking
- approach, the bundle we have prepared so far is incomplete. The
- application will run, but the functionality will be disabled due
- to the missing plugins. To deploy plugin-based applications we
- should use the framework approach.
-
- \section1 Frameworks
-
- We have two challenges when deploying the \l
- {tools/plugandpaint}{Plug & Paint} application using frameworks:
- The Qt runtime has to be correctly redistributed along with the
- application bundle, and the plugins have to be installed in the
- correct location so that the application can find them.
-
- When distributing Qt with your application using frameworks, you
- have two options: You can either distribute Qt as a private
- framework within your application bundle, or you can distribute Qt
- as a standard framework (alternatively use the Qt frameworks in
- the installed binary). These two approaches are essentially the
- same. The latter option is good if you have many Qt applications
- and you would prefer to save memory. The former is good if you
- have Qt built in a special way, or want to make sure the framework
- is there. It just comes down to where you place the Qt frameworks.
-
- \section2 Building Qt as Frameworks
-
- We assume that you already have installed Qt as frameworks, which
- is the default when installing Qt, in the /path/to/Qt
- directory. For more information on how to build Qt, see the \l
- Installation documentation.
-
- When installing, the identification name of the frameworks will
- also be set. The identification name is what the dynamic linker
- (\c dyld) uses to find the libraries for your application.
-
- \section2 Linking the Application to Qt as Frameworks
-
- After ensuring that Qt is built as frameworks, we can build the \l
- {tools/plugandpaint}{Plug & Paint} application. First, we must go
- into the directory that contains the application:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 34
-
- Now run qmake to create a new makefile for the application, and do
- a clean build to create the dynamically linked executable:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 35
-
- This builds the core application, the following will build the
- plugins:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 36
-
- Now run the \c otool for the Qt frameworks, for example Qt Gui:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 37
-
- You will get the following output:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 38
-
- For the Qt frameworks, the first line (i.e. \c
- {path/to/Qt/lib/QtGui.framework/Versions/4/QtGui (compatibility
- version 4.0.0, current version 4.0.1)}) becomes the framework's
- identification name which is used by the dynamic linker (\c dyld).
-
- But when you are deploying the application, your users may not
- have the Qt frameworks installed in the specified location. For
- that reason, you must either provide the frameworks in an agreed
- upon location, or store the frameworks in the bundle itself.
- Regardless of which solution you choose, you must make sure that
- the frameworks return the proper identification name for
- themselves, and that the application will look for these
- names. Luckily we can control this with the \c install_name_tool
- command-line tool.
-
- The \c install_name_tool works in two modes, \c -id and \c
- -change. The \c -id mode is for libraries and frameworks, and
- allows us to specify a new identification name. We use the \c
- -change mode to change the paths in the application.
-
- Let's test this out by copying the Qt frameworks into the Plug &
- Paint bundle. Looking at \c otool's output for the bundle, we can
- see that we must copy both the QtCore and QtGui frameworks into
- the bundle. We will assume that we are in the directory where we
- built the bundle.
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 39
-
- First we create a \c Frameworks directory inside the bundle. This
- follows the Mac OS X application convention. We then copy the
- frameworks into the new directory. Since frameworks contain
- symbolic links, and we want to preserve them, we use the \c -R
- option.
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 40
-
- Then we run \c install_name_tool to set the identification names
- for the frameworks. The first argument after \c -id is the new
- name, and the second argument is the framework which
- identification we wish to change. The text \c @executable_path is
- a special \c dyld variable telling \c dyld to start looking where
- the executable is located. The new names specifies that these
- frameworks will be located "one directory up and over" in the \c
- Frameworks directory.
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 41
-
- Now, the dynamic linker knows where to look for QtCore and
- QtGui. Then we must make the application aware of the library
- locations as well using \c install_name_tool's \c -change mode.
- This basically comes down to string replacement, to match the
- identification names that we set for the frameworks.
-
- Finally, since the QtGui framework depends on QtCore, we must
- remember to change the reference for QtGui:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 42
-
- After all this we can run \c otool again and see that the
- application will look in the right locations.
-
- Of course, the thing that makes the \l {tools/plugandpaint}{Plug &
- Paint} example interesting are its plugins. The basic steps we
- need to follow with plugins are:
-
- \list
- \o Put the plugins inside the bundle
- \o Make sure that the plugins use the correct library using the
- \c install_name_tool
- \o Make sure that the application knows where to get the plugins
- \endlist
-
- While we can put the plugins anywhere we want in the bundle, the
- best location to put them is under Contents/Plugins. When we built
- the Plug & Paint plugins, the \c DESTDIR variable in their \c .pro
- file put the plugins' \c .dylib files in a \c plugins subdirectory
- in the \c plugandpaint directory. So, in this example, all we need
- to do is move this directory:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 43
-
- If we run \c otool on for example the \l
- {tools/plugandpaintplugins/basictools}{Basic Tools} plugin's \c
- .dylib file we get the following information.
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 44
-
- Then we can see that the plugin links to the Qt frameworks it was
- built against. Since we want the plugins to use the framework in
- the application bundle we change them the same way as we did for
- the application. For example for the Basic Tools plugin:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 45
-
-
- We must also modify the code in \c
- tools/plugandpaint/mainwindow.cpp to \l {QDir::cdUp()}{cdUp()} one
- directory since the plugins live in the bundle. Add the following
- code to the \c mainwindow.cpp file:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 46
-
- \table
- \row
- \o \inlineimage deployment-mac-application.png
- \o
- The additional code in \c tools/plugandpaint/mainwindow.cpp also
- enables us to view the plugins in the Finder, as shown to the left.
-
- We can also add plugins extending Qt, for example adding SQL
- drivers or image formats. We just need to follow the directory
- structure outlined in plugin documentation, and make sure they are
- included in the QCoreApplication::libraryPaths(). Let's quickly do
- this with the image formats, following the approach from above.
-
- Copy Qt's image format plugins into the bundle:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 47
-
- Use \c install_name_tool to link the plugins to the frameworks in
- the bundle:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 48
-
- Then we update the source code in \c tools/plugandpaint/main.cpp
- to look for the new plugins. After constructing the
- QApplication, we add the following code:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 49
-
- First, we tell the application to only look for plugins in this
- directory. In our case, this is what we want since we only want to
- look for the plugins that we distribute with the bundle. If we
- were part of a bigger Qt installation we could have used
- QCoreApplication::addLibraryPath() instead.
-
- \endtable
-
- \warning When deploying plugins, and thus make changes to the
- source code, the default identification names are reset when
- rebuilding the application, and you must repeat the process of
- making your application link to the Qt frameworks in the bundle
- using \c install_name_tool.
-
- Now you should be able to move the application to another Mac OS X
- machine and run it without Qt installed. Alternatively, you can
- move your frameworks that live outside of the bundle to another
- directory and see if the application still runs.
-
- If you store the frameworks in another location than in the
- bundle, the technique of linking your application is similar; you
- must make sure that the application and the frameworks agree where
- to be looking for the Qt libraries as well as the plugins.
-
- \section2 Creating the Application Package
-
- When you are done linking your application to Qt, either
- statically or as frameworks, the application is ready to be
- distributed. Apple provides a fair bit of information about how to
- do this and instead of repeating it here, we recommend that you
- consult their \l
- {http://developer.apple.com/documentation/DeveloperTools/Conceptual/SoftwareDistribution/index.html}{software delivery}
- documentation.
-
- Although the process of deploying an application do have some
- pitfalls, once you know the various issues you can easily create
- packages that all your Mac OS X users will enjoy.
-
- \section1 Application Dependencies
-
- \section2 Qt Plugins
-
- Your application may also depend on one or more Qt plugins, such
- as the JPEG image format plugin or a SQL driver plugin. Be sure
- to distribute any Qt plugins that you need with your application,
- and note that each type of plugin should be located within a
- specific subdirectory (such as \c imageformats or \c sqldrivers)
- within your distribution directory, as described below.
-
- \note If you are deploying an application that uses QtWebKit to display
- HTML pages from the World Wide Web, you should include all text codec
- plugins to support as many HTML encodings possible.
-
- The search path for Qt plugins (as well as a few other paths) is
- hard-coded into the QtCore library. By default, the first plugin
- search path will be hard-coded as \c /path/to/Qt/plugins. But
- using pre-determined paths has certain disadvantages. For example,
- they may not exist on the target machine. For that reason you need
- to examine various alternatives to make sure that the Qt plugins
- are found:
-
- \list
-
- \o \l{qt-conf.html}{Using \c qt.conf}. This is the recommended
- approach since it provides the most flexibility.
-
- \o Using QApplication::addLibraryPath() or
- QApplication::setLibraryPaths().
-
- \o Using a third party installation utility to change the
- hard-coded paths in the QtCore library.
-
- \endlist
-
- The \l{How to Create Qt Plugins} document outlines the issues you
- need to pay attention to when building and deploying plugins for
- Qt applications.
-
- \section2 Additional Libraries
-
- You can check which libraries your application is linking against
- by using the \c otool tool. To use \c otool, all you need to do is
- to run it like this:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 50
-
- Unlike the deployment processes on \l {Deploying an Application on
- X11 Platforms}{X11} and \l {Deploying an Application on
- Windows}{Windows}, compiler specific libraries rarely have to
- be redistributed along with your application. But since Qt can be
- configured, built, and installed in several ways on Mac OS X,
- there are also several ways to deploy applications. Typically your
- goals help determine how you are going to deploy the
- application. The last sections describe a couple of things to keep
- in mind when you are deploying your application.
-
- \section2 Mac OS X Version Dependencies
-
- Qt 4.2 has been designed to be built and deployed on Mac OS X 10.3
- up until the current version as of this writing, Mac OS X 10.4 and
- all their minor releases. Qt achieves this by using "weak
- linking." This means that Qt tests if a function added in newer
- versions of Mac OS X is available on the computer it is running on
- before it uses it. This results in getting access to newer
- features when running on newer versions of OS X while still
- remaining compatible on older versions.
-
- For more information about cross development issues on Mac OS X,
- see \l
- {http://developer.apple.com/documentation/DeveloperTools/Conceptual/cross_development/index.html}{Apple's Developer Website}.
-
- Since the linker is set to be compatible with all OS X version, you have to
- change the \c MACOSX_DEPLOYMENT_TARGET environment variable to get weak
- linking to work for your application. You can add:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 51
-
- to your .pro file and qmake will take care of this for you.
-
- However, there is a bit of a wrinkle to keep in mind when your are
- deploying. Mac OS X 10.4 ("Tiger") ships GCC 4.0 as its default
- compiler. This is also the GCC compiler we use for building the
- binary Qt package. If you use GCC 4.0 to build your application,
- it will link against a dynamic libstdc++ that is only available on
- Mac OS X 10.4 and Mac OS X 10.3.9. The application will refuse to
- run on older versions of the operating system.
-
- For more information about C++ runtime environment, see \l
- {http://developer.apple.com/documentation/DeveloperTools/Conceptual/CppRuntimeEnv/index.html}{Apple's Developer Website}
-
- If you want to deploy to versions of Mac OS X earlier than 10.3.9,
- you must build with GCC 3.3 which is the default on Mac OS X
- 10.3. GCC 3.3 is also available on the Mac OS X 10.4 "Xcode Tools"
- CD and as a download for earlier versions of Mac OS X from Apple
- (\l {https://connect.apple.com/}{connect.apple.com}). You can use
- Apple's \c gcc_select(1) command line tool to switch the default
- complier on your system.
-
- \section3 Deploying Phonon Applications on Mac OS X
-
- \list
- \o If you build your Phonon application on Tiger, it will work on
- Tiger, Leopard and Panther.
- \o If you build your application on Leopard, it will \bold not work
- on Panther unless you rename the libraries with the following command
- after you have built your application:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 51a
-
- This command must be invoked in the directory where
- \c{libphonon_qt7.dylib} is located, usually in
- \c{yourapp.app/Contents/plugins/phonon_backend/}.
- \o The \l {macdeploy}{deployment tool} will perform this step for you.
-
- \o If you are using Leopard, but would like to build your application
- against Tiger, you can use:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 51b
- \endlist
-
- \section2 Architecture Dependencies
-
- The Qt for Mac OS X libraries, tools, and examples can be built "universal"
- (i.e. they run natively on both Intel and PowerPC machines). This
- is accomplished by passing \c -universal on the \c configure line
- of the source package, and requires that you use GCC 4.0.x. On
- PowerPC hardware you will need to pass the universal SDK as a
- command line argument to the Qt configure command. For example:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 52
-
- From 4.1.1 the Qt binary package is already universal.
-
- If you want to create a binary that runs on older versions of
- PowerPC and x86, it is possible to build Qt for the PowerPC using
- GCC 3.3, and for x86 one using GCC 4.0, and use Apple's \c lipo(1)
- tool to stitch them together. This is beyond the scope of this
- document and is not something we have tried, but Apple documents
- it on their \l
- {http://developer.apple.com/documentation/}{developer website}.
-
- Once you have a universal Qt, \a qmake will generate makefiles
- that will build for its host architecture by default. If you want
- to build for a specific architecture, you can control this with
- the \c CONFIG line in your \c .pro file. Use \c CONFIG+=ppc for
- PowerPC, and \c CONFIG+=x86 for x86. If you desire both, simply
- add both to the \c CONFIG line. PowerPC users also need an
- SDK. For example:
-
- \snippet doc/src/snippets/code/doc_src_deployment.qdoc 53
-
- Besides \c lipo, you can also check your binaries with the \c file(1)
- command line tool or the Finder.
-
- \section1 The Mac Deployment Tool
- \target macdeploy
- The Mac deployment tool can be found in QTDIR/bin/macdeployqt. It is
- designed to automate the process of creating a deployable
- application bundle that contains the Qt libraries as private
- frameworks.
-
- The mac deployment tool also deploys the Qt plugins, according
- to the following rules:
- \list
- \o Debug versions of the plugins are not deployed.
- \o The designer plugins are not deployed.
- \o The Image format plugins are always deployed.
- \o SQL driver plugins are deployed if the application uses the QtSql module.
- \o Script plugins are deployed if the application uses the QtScript module.
- \o The Phonon backend plugin is deployed if the application uses the \l{Phonon Module} {Phonon} module.
- \o The svg icon plugin is deployed if the application uses the QtSvg module.
- \o The accessibility plugin is always deployed.
- \o Accessibility for Qt3Support is deployed if the application uses the Qt3Support module.
- \endlist
-
- macdeployqt supports the following options:
- \list
- \o -no-plugins: Skip plugin deployment
- \o -dmg : Create a .dmg disk image
- \o -no-strip : Don't run 'strip' on the binaries
- \endlist
-*/
diff --git a/doc/src/deployment/deployment-plugins.qdoc b/doc/src/deployment/deployment-plugins.qdoc
new file mode 100644
index 000000000..afe05004a
--- /dev/null
+++ b/doc/src/deployment/deployment-plugins.qdoc
@@ -0,0 +1,236 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 deployment-plugins.html
+ \title Deploying Plugins
+ \brief A guide to plugins-specific aspects of deploying Qt and Qt Application
+
+ This document explains how to deploy plugin libraries that Qt or
+ your application should load at runtime. If you use
+ \l{How to Create Qt Plugins#Static Plugins}{static plugins}, then the
+ plugin code is already part of your application executable, and no
+ separate deployment steps are required.
+
+ \tableofcontents
+
+ \section1 The Plugin Directory
+
+ When the application is run, Qt will first treat the application's
+ executable directory as the \c{pluginsbase}. For example if the
+ application is in \c{C:\Program Files\MyApp} and has a style plugin,
+ Qt will look in \c{C:\Program Files\MyApp\styles}. (See
+ QCoreApplication::applicationDirPath() for how to find out where
+ the application's executable is.) Qt will also look in the
+ directory specified by
+ QLibraryInfo::location(QLibraryInfo::PluginsPath), which typically
+ is located in \c QTDIR/plugins (where \c QTDIR is the directory
+ where Qt is installed). If you want Qt to look in additional
+ places you can add as many paths as you need with calls to
+ QCoreApplication::addLibraryPath(). And if you want to set your
+ own path or paths you can use QCoreApplication::setLibraryPaths().
+ You can also use a \c qt.conf file to override the hard-coded
+ paths that are compiled into the Qt library. For more information,
+ see the \l {Using qt.conf} documentation. Yet another possibility
+ is to set the \c QT_PLUGIN_PATH environment variable before running
+ the application. If set, Qt will look for plugins in the
+ paths (separated by the system path separator) specified in the variable.
+
+ \section1 Loading and Verifying Plugins Dynamically
+
+ When loading plugins, the Qt library does some sanity checking to
+ determine whether or not the plugin can be loaded and used. This
+ provides the ability to have multiple versions and configurations of
+ the Qt library installed side by side.
+
+ \list
+ \o Plugins linked with a Qt library that has a higher version number
+ will not be loaded by a library with a lower version number.
+
+ \br
+ \bold{Example:} Qt 4.3.0 will \e{not} load a plugin built with Qt 4.3.1.
+
+ \o Plugins linked with a Qt library that has a lower major version
+ number will not be loaded by a library with a higher major version
+ number.
+
+ \br
+ \bold{Example:} Qt 4.3.1 will \e{not} load a plugin built with Qt 3.3.1.
+ \br
+ \bold{Example:} Qt 4.3.1 will load plugins built with Qt 4.3.0 and Qt 4.2.3.
+
+ \o The Qt library and all plugins are built using a \e {build
+ key}. The build key in the Qt library is examined against the build
+ key in the plugin, and if they match, the plugin is loaded. If the
+ build keys do not match, then the Qt library refuses to load the
+ plugin.
+
+ \br \bold{Rationale:} See the \l{#The Build Key}{The Build Key} section below.
+ \endlist
+
+ When building plugins to extend an application, it is important to ensure
+ that the plugin is configured in the same way as the application. This means
+ that if the application was built in release mode, plugins should be built
+ in release mode, too.
+
+ If you configure Qt to be built in both debug and release modes,
+ but only build applications in release mode, you need to ensure that your
+ plugins are also built in release mode. By default, if a debug build of Qt is
+ available, plugins will \e only be built in debug mode. To force the
+ plugins to be built in release mode, add the following line to the plugin's
+ project file:
+
+ \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 3
+
+ This will ensure that the plugin is compatible with the version of the library
+ used in the application.
+
+ \section2 The Build Key
+
+ When loading plugins, Qt checks the build key of each plugin against its
+ own configuration to ensure that only compatible plugins are loaded; any
+ plugins that are configured differently are not loaded.
+
+ The build key contains the following information:
+ \list
+ \o Architecture, operating system and compiler.
+
+ \e {Rationale:}
+ In cases where different versions of the same compiler do not
+ produce binary compatible code, the version of the compiler is
+ also present in the build key.
+
+ \o Configuration of the Qt library. The configuration is a list
+ of the missing features that affect the available API in the
+ library.
+
+ \e {Rationale:}
+ Two different configurations of the same version of
+ the Qt library are not binary compatible. The Qt library that
+ loads the plugin uses the list of (missing) features to
+ determine if the plugin is binary compatible.
+
+ \e {Note:} There are cases where a plugin can use features that are
+ available in two different configurations. However, the
+ developer writing plugins would need to know which features are
+ in use, both in their plugin and internally by the utility
+ classes in Qt. The Qt library would require complex feature
+ and dependency queries and verification when loading plugins.
+ Requiring this would place an unnecessary burden on the developer, and
+ increase the overhead of loading a plugin. To reduce both
+ development time and application runtime costs, a simple string
+ comparision of the build keys is used.
+
+ \o Optionally, an extra string may be specified on the configure
+ script command line.
+
+ \e {Rationale:}
+ When distributing binaries of the Qt library with an
+ application, this provides a way for developers to write
+ plugins that can only be loaded by the library with which the
+ plugins were linked.
+ \endlist
+
+ For debugging purposes, it is possible to override the run-time build key
+ checks by configuring Qt with the \c QT_NO_PLUGIN_CHECK preprocessor macro
+ defined.
+
+ \section1 The Plugin Cache
+
+ In order to speed up loading and validation of plugins, some of
+ the information that is collected when plugins are loaded is cached
+ through QSettings. This includes information about whether or not
+ a plugin was successfully loaded, so that subsequent load operations
+ don't try to load an invalid plugin. However, if the "last modified"
+ timestamp of a plugin has changed, the plugin's cache entry is
+ invalidated and the plugin is reloaded regardless of the values in
+ the cache entry, and the cache entry itself is updated with the new
+ result.
+
+ This also means that the timestamp must be updated each time the
+ plugin or any dependent resources (such as a shared library) is
+ updated, since the dependent resources might influence the result
+ of loading a plugin.
+
+ Sometimes, when developing plugins, it is necessary to remove entries
+ from the plugin cache. Since Qt uses QSettings to manage the plugin
+ cache, the locations of plugins are platform-dependent; see
+ \l{QSettings#Platform-Specific Notes}{the QSettings documentation}
+ for more information about each platform.
+
+ For example, on Windows the entries are stored in the registry, and the
+ paths for each plugin will typically begin with either of these two strings:
+
+ \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 6
+
+ \section1 Debugging Plugins
+
+ There are a number of issues that may prevent correctly-written plugins from
+ working with the applications that are designed to use them. Many of these
+ are related to differences in the way that plugins and applications have been
+ built, often arising from separate build systems and processes.
+
+ The following table contains descriptions of the common causes of problems
+ developers experience when creating plugins:
+
+ \table
+ \header \o Problem \o Cause \o Solution
+ \row \o Plugins sliently fail to load even when opened directly by the
+ application. \QD shows the plugin libraries in its
+ \gui{Help|About Plugins} dialog, but no plugins are listed under each
+ of them.
+ \o The application and its plugins are built in different modes.
+ \o Either share the same build information or build the plugins in both
+ debug and release modes by appending the \c debug_and_release to
+ the \l{qmake Variable Reference#CONFIG}{CONFIG} variable in each of
+ their project files.
+ \row \o A valid plugin that replaces an invalid (or broken) plugin fails to load.
+ \o The entry for the plugin in the plugin cache indicates that the original
+ plugin could not be loaded, causing Qt to ignore the replacement.
+ \o Either ensure that the plugin's timestamp is updated, or delete the
+ entry in the \l{#The Plugin Cache}{plugin cache}.
+ \endtable
+
+ You can also use the \c QT_DEBUG_PLUGINS environment variable to obtain
+ diagnostic information from Qt about each plugin it tries to load. Set this
+ variable to a non-zero value in the environment from which your application is
+ launched.
+*/
diff --git a/doc/src/deployment/deployment.qdoc b/doc/src/deployment/deployment.qdoc
new file mode 100644
index 000000000..a7e217468
--- /dev/null
+++ b/doc/src/deployment/deployment.qdoc
@@ -0,0 +1,1600 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 deployment.html
+ \title Deploying Qt Applications
+
+ Deploying an Qt application does not require any C++
+ programming. All you need to do is to build Qt and your
+ application in release mode, following the procedures described in
+ this documentation. We will demonstrate the procedures in terms of
+ deploying the \l {tools/plugandpaint}{Plug & Paint} application
+ that is provided in Qt's examples directory.
+
+ \section1 Static vs. Shared Libraries
+
+ There are two ways of deploying an application:
+
+ \list
+ \o Static Linking
+ \o Shared Libraries (Frameworks on Mac)
+ \endlist
+
+ Static linking results in a stand-alone executable. The advantage
+ is that you will only have a few files to deploy. The
+ disadvantages are that the executables are large and with no
+ flexibility (i.e a new version of the application, or of Qt, will
+ require that the deployment process is repeated), and that you
+ cannot deploy plugins.
+
+ To deploy plugin-based applications, you can use the shared
+ library approach. Shared libraries also provide smaller, more
+ flexible executables. For example, using the shared library
+ approach, the user is able to independently upgrade the Qt library
+ used by the application.
+
+ Another reason why you might want to use the shared library
+ approach, is if you want to use the same Qt libraries for a family
+ of applications. In fact, if you download the binary installation
+ of Qt, you get Qt as a shared library.
+
+ The disadvantage with the shared library approach is that you
+ will get more files to deploy. For more information, see
+ \l{sharedlibrary.html}{Creating Shared Libraries}.
+
+ \section1 Deploying Qt's Libraries
+
+ \table
+ \header
+ \o {4,1} Qt's Libraries
+ \row
+ \o \l {QAxContainer}
+ \o \l {QAxServer}
+ \o \l {QtCore}
+ \o \l {QtDBus}
+ \row
+ \o \l {QtDesigner}
+ \o \l {QtGui}
+ \o \l {QtHelp}
+ \o \l {QtNetwork}
+ \row
+ \o \l {QtOpenGL}
+ \o \l {QtScript}
+ \o \l {QtScriptTools}
+ \o \l {QtSql}
+ \row
+ \o \l {QtSvg}
+ \o \l {QtWebKit}
+ \o \l {QtXml}
+ \o \l {QtXmlPatterns}
+ \row
+ \o \l {Phonon Module}{Phonon}
+ \o \l {Qt3Support}
+ \o \l {}
+ \o \l {}
+ \endtable
+
+ Since Qt is not a system library, it has to be redistributed along
+ with your application; the minimum is to redistribute the run-time
+ of the libraries used by the application. Using static linking,
+ however, the Qt run-time is compiled into the executable.
+
+ In particular, you will need to deploy Qt plugins, such as
+ JPEG support or SQL drivers. For more information about plugins,
+ see the \l {plugins-howto.html}{How to Create Qt Plugins}
+ documentation.
+
+ When deploying an application using the shared library approach
+ you must ensure that the Qt libraries will use the correct path to
+ find the Qt plugins, documentation, translation etc. To do this you
+ can use a \c qt.conf file. For more information, see the \l {Using
+ qt.conf} documentation.
+
+ Depending on configuration, compiler specific libraries must be
+ redistributed as well. For more information, see the platform
+ specific Application Dependencies sections: \l
+ {deployment-x11.html#application-dependencies}{X11}, \l
+ {deployment-windows.html#application-dependencies}{Windows}, \l
+ {deployment-mac.html#application-dependencies}{Mac}.
+
+ \section1 Licensing
+
+ Some of Qt's libraries are based on third party libraries that are
+ not licensed using the same dual-license model as Qt. As a result,
+ care must be taken when deploying applications that use these
+ libraries, particularly when the application is statically linked
+ to them.
+
+ The following table contains an inexhaustive summary of the issues
+ you should be aware of.
+
+ \table
+ \header \o Qt Library \o Dependency
+ \o Licensing Issue
+ \row \o QtHelp \o CLucene
+ \o The version of clucene distributed with Qt is licensed
+ under the GNU LGPL version 2.1 or later. This has implications for
+ developers of closed source applications. Please see
+ \l{QtHelp Module#License Information}{the QtHelp module documentation}
+ for more information.
+
+ \row \o QtNetwork \o OpenSSL
+ \o Some configurations of QtNetwork use OpenSSL at run-time. Deployment
+ of OpenSSL libraries is subject to both licensing and export restrictions.
+ More information can be found in the \l{Secure Sockets Layer (SSL) Classes}
+ documentation.
+
+ \row \o QtWebKit \o WebKit
+ \o WebKit is licensed under the GNU LGPL version 2 or later.
+ This has implications for developers of closed source applications.
+ Please see \l{QtWebKit Module#License Information}{the QtWebKit module
+ documentation} for more information.
+
+ \row \o \l{Phonon Module}{Phonon} \o Phonon
+ \o Phonon relies on the native multimedia engines on different platforms.
+ Phonon itself is licensed under the GNU LGPL version 2. Please see
+ \l{Phonon Module#License Information}{the Phonon module documentation}
+ for more information on licensing and the
+ \l{Phonon Overview#Backends}{Phonon Overview} for details of the backends
+ in use on different platforms.
+ \endtable
+
+ \section1 Platform-Specific Notes
+
+ The procedure of deploying Qt applications is different for the
+ various platforms:
+
+ \list
+ \o \l{Deploying an Application on X11 Platforms}{Qt for X11 Platforms}
+ \o \l{Deploying an Application on Windows}{Qt for Windows}
+ \o \l{Deploying an Application on Mac OS X}{Qt for Mac OS X}
+ \o \l{Deploying Qt for Embedded Linux Applications}{Qt for Embedded Linux}
+ \o \l{Deploying an Application on the Symbian platform}{Qt for the Symbian platform}
+ \endlist
+
+ \sa Installation {Platform-Specific Documentation}
+*/
+
+/*!
+ \page deployment-x11.html
+ \contentspage Deploying Qt Applications
+
+ \title Deploying an Application on X11 Platforms
+
+ Due to the proliferation of Unix systems (commercial Unices, Linux
+ distributions, etc.), deployment on Unix is a complex
+ topic. Before we start, be aware that programs compiled for one
+ Unix flavor will probably not run on a different Unix system. For
+ example, unless you use a cross-compiler, you cannot compile your
+ application on Irix and distribute it on AIX.
+
+ Contents:
+
+ \tableofcontents
+
+ This documentation will describe how to determine which files you
+ should include in your distribution, and how to make sure that the
+ application will find them at run-time. We will demonstrate the
+ procedures in terms of deploying the \l {tools/plugandpaint}{Plug
+ & Paint} application that is provided in Qt's examples directory.
+
+ \section1 Static Linking
+
+ Static linking is often the safest and easiest way to distribute
+ an application on Unix since it relieves you from the task of
+ distributing the Qt libraries and ensuring that they are located
+ in the default search path for libraries on the target system.
+
+ \section2 Building Qt Statically
+
+ To use this approach, you must start by installing a static version
+ of the Qt library:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 0
+
+ We specify the prefix so that we do not overwrite the existing Qt
+ installation. The example above only builds the Qt libraries,
+ i.e. the examples and Qt Designer will not be built. When \c make
+ is done, you will find the Qt libraries in the \c /path/to/Qt/lib
+ directory.
+
+ When linking your application against static Qt libraries, note
+ that you might need to add more libraries to the \c LIBS line in
+ your project file. For more information, see the \l {Application
+ Dependencies} section.
+
+ \section2 Linking the Application to the Static Version of Qt
+
+ Once Qt is built statically, the next step is to regenerate the
+ makefile and rebuild the application. First, we must go into the
+ directory that contains the application:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 1
+
+ Now run qmake to create a new makefile for the application, and do
+ a clean build to create the statically linked executable:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 2
+
+ You probably want to link against the release libraries, and you
+ can specify this when invoking \c qmake. Note that we must set the
+ path to the static Qt that we just built.
+
+ To check that the application really links statically with Qt, run
+ the \c ldd tool (available on most Unices):
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 3
+
+ Verify that the Qt libraries are not mentioned in the output.
+
+ Now, provided that everything compiled and linked without any
+ errors, we should have a \c plugandpaint file that is ready for
+ deployment. One easy way to check that the application really can
+ be run stand-alone is to copy it to a machine that doesn't have Qt
+ or any Qt applications installed, and run it on that machine.
+
+ Remember that if your application depends on compiler specific
+ libraries, these must still be redistributed along with your
+ application. For more information, see the \l {Application
+ Dependencies} section.
+
+ The \l {tools/plugandpaint}{Plug & Paint} example consists of
+ several components: The core application (\l
+ {tools/plugandpaint}{Plug & Paint}), and the \l
+ {tools/plugandpaintplugins/basictools}{Basic Tools} and \l
+ {tools/plugandpaintplugins/extrafilters}{Extra Filters}
+ plugins. Since we cannot deploy plugins using the static linking
+ approach, the executable we have prepared so far is
+ incomplete. The application will run, but the functionality will
+ be disabled due to the missing plugins. To deploy plugin-based
+ applications we should use the shared library approach.
+
+ \section1 Shared Libraries
+
+ We have two challenges when deploying the \l
+ {tools/plugandpaint}{Plug & Paint} application using the shared
+ libraries approach: The Qt runtime has to be correctly
+ redistributed along with the application executable, and the
+ plugins have to be installed in the correct location on the target
+ system so that the application can find them.
+
+ \section2 Building Qt as a Shared Library
+
+ We assume that you already have installed Qt as a shared library,
+ which is the default when installing Qt, in the \c /path/to/Qt
+ directory. For more information on how to build Qt, see the \l
+ {Installation} documentation.
+
+ \section2 Linking the Application to Qt as a Shared Library
+
+ After ensuring that Qt is built as a shared library, we can build
+ the \l {tools/plugandpaint}{Plug & Paint} application. First, we
+ must go into the directory that contains the application:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 4
+
+ Now run qmake to create a new makefile for the application, and do
+ a clean build to create the dynamically linked executable:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 5
+
+ This builds the core application, the following will build the
+ plugins:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 6
+
+ If everything compiled and linked without any errors, we will get
+ a \c plugandpaint executable and the \c libpnp_basictools.so and
+ \c libpnp_extrafilters.so plugin files.
+
+ \section2 Creating the Application Package
+
+ There is no standard package management on Unix, so the method we
+ present below is a generic solution. See the documentation for
+ your target system for information on how to create a package.
+
+ To deploy the application, we must make sure that we copy the
+ relevant Qt libraries (corresponding to the Qt modules used in the
+ application) as well as the executable to the same
+ directory. Remember that if your application depends on compiler
+ specific libraries, these must also be redistributed along with
+ your application. For more information, see the \l {Application
+ Dependencies} section.
+
+ We'll cover the plugins shortly, but the main issue with shared
+ libraries is that you must ensure that the dynamic linker will
+ find the Qt libraries. Unless told otherwise, the dynamic linker
+ doesn't search the directory where your application resides. There
+ are many ways to solve this:
+
+ \list
+
+ \o You can install the Qt libraries in one of the system
+ library paths (e.g. \c /usr/lib on most systems).
+
+ \o You can pass a predetermined path to the \c -rpath command-line
+ option when linking the application. This will tell the dynamic
+ linker to look in this directory when starting your application.
+
+ \o You can write a startup script for your application, where you
+ modify the dynamic linker configuration (e.g. adding your
+ application's directory to the \c LD_LIBRARY_PATH environment
+ variable. \note If your application will be running with "Set
+ user ID on execution," and if it will be owned by root, then
+ LD_LIBRARY_PATH will be ignored on some platforms. In this
+ case, use of the LD_LIBRARY_PATH approach is not an option).
+
+ \endlist
+
+ The disadvantage of the first approach is that the user must have
+ super user privileges. The disadvantage of the second approach is
+ that the user may not have privileges to install into the
+ predetemined path. In either case, the users don't have the option
+ of installing to their home directory. We recommend using the
+ third approach since it is the most flexible. For example, a \c
+ plugandpaint.sh script will look like this:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 7
+
+ By running this script instead of the executable, you are sure
+ that the Qt libraries will be found by the dynamic linker. Note
+ that you only have to rename the script to use it with other
+ applications.
+
+ When looking for plugins, the application searches in a plugins
+ subdirectory inside the directory of the application
+ executable. Either you have to manually copy the plugins into the
+ \c plugins directory, or you can set the \c DESTDIR in the
+ plugins' project files:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 8
+
+ An archive distributing all the Qt libraries, and all the plugins,
+ required to run the \l {tools/plugandpaint}{Plug & Paint}
+ application, would have to include the following files:
+
+ \table 100%
+ \header
+ \o Component \o {2, 1} File Name
+ \row
+ \o The executable
+ \o {2, 1} \c plugandpaint
+ \row
+ \o The script to run the executable
+ \o {2, 1} \c plugandpaint.sh
+ \row
+ \o The Basic Tools plugin
+ \o {2, 1} \c plugins\libpnp_basictools.so
+ \row
+ \o The ExtraFilters plugin
+ \o {2, 1} \c plugins\libpnp_extrafilters.so
+ \row
+ \o The Qt Core module
+ \o {2, 1} \c libQtCore.so.4
+ \row
+ \o The Qt GUI module
+ \o {2, 1} \c libQtGui.so.4
+ \endtable
+
+ On most systems, the extension for shared libraries is \c .so. A
+ notable exception is HP-UX, which uses \c .sl.
+
+ Remember that if your application depends on compiler specific
+ libraries, these must still be redistributed along with your
+ application. For more information, see the \l {Application
+ Dependencies} section.
+
+ To verify that the application now can be successfully deployed,
+ you can extract this archive on a machine without Qt and without
+ any compiler installed, and try to run it, i.e. run the \c
+ plugandpaint.sh script.
+
+ An alternative to putting the plugins in the \c plugins
+ subdirectory is to add a custom search path when you start your
+ application using QApplication::addLibraryPath() or
+ QApplication::setLibraryPaths().
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 9
+
+ \section1 Application Dependencies
+
+ \section2 Additional Libraries
+
+ To find out which libraries your application depends on, run the
+ \c ldd tool (available on most Unices):
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 10
+
+ This will list all the shared library dependencies for your
+ application. Depending on configuration, these libraries must be
+ redistributed along with your application. In particular, the
+ standard C++ library must be redistributed if you're compiling
+ your application with a compiler that is binary incompatible with
+ the system compiler. When possible, the safest solution is to link
+ against these libraries statically.
+
+ You will probably want to link dynamically with the regular X11
+ libraries, since some implementations will try to open other
+ shared libraries with \c dlopen(), and if this fails, the X11
+ library might cause your application to crash.
+
+ It's also worth mentioning that Qt will look for certain X11
+ extensions, such as Xinerama and Xrandr, and possibly pull them
+ in, including all the libraries that they link against. If you
+ can't guarantee the presence of a certain extension, the safest
+ approach is to disable it when configuring Qt (e.g. \c {./configure
+ -no-xrandr}).
+
+ FontConfig and FreeType are other examples of libraries that
+ aren't always available or that aren't always binary
+ compatible. As strange as it may sound, some software vendors have
+ had success by compiling their software on very old machines and
+ have been very careful not to upgrade any of the software running
+ on them.
+
+ When linking your application against the static Qt libraries, you
+ must explicitly link with the dependent libraries mentioned
+ above. Do this by adding them to the \c LIBS variable in your
+ project file.
+
+ \section2 Qt Plugins
+
+ Your application may also depend on one or more Qt plugins, such
+ as the JPEG image format plugin or a SQL driver plugin. Be sure
+ to distribute any Qt plugins that you need with your application,
+ and note that each type of plugin should be located within a
+ specific subdirectory (such as \c imageformats or \c sqldrivers)
+ within your distribution directory, as described below.
+
+ \note If you are deploying an application that uses QtWebKit to display
+ HTML pages from the World Wide Web, you should include all text codec
+ plugins to support as many HTML encodings possible.
+
+ The search path for Qt plugins (as well as a few other paths) is
+ hard-coded into the QtCore library. By default, the first plugin
+ search path will be hard-coded as \c /path/to/Qt/plugins. As
+ mentioned above, using pre-determined paths has certain
+ disadvantages, so you need to examine various alternatives to make
+ sure that the Qt plugins are found:
+
+ \list
+
+ \o \l{qt-conf.html}{Using \c qt.conf}. This is the recommended
+ approach since it provides the most flexibility.
+
+ \o Using QApplication::addLibraryPath() or
+ QApplication::setLibraryPaths().
+
+ \o Using a third party installation utility or the target system's
+ package manager to change the hard-coded paths in the QtCore
+ library.
+
+ \endlist
+
+ The \l{How to Create Qt Plugins} document outlines the issues you
+ need to pay attention to when building and deploying plugins for
+ Qt applications.
+*/
+
+/*!
+ \page deployment-windows.html
+ \contentspage Deploying Qt Applications
+
+ \title Deploying an Application on Windows
+
+ This documentation will describe how to determine which files you
+ should include in your distribution, and how to make sure that the
+ application will find them at run-time. We will demonstrate the
+ procedures in terms of deploying the \l {tools/plugandpaint}{Plug
+ & Paint} application that is provided in Qt's examples directory.
+
+ Contents:
+
+ \tableofcontents
+
+ \section1 Static Linking
+
+ If you want to keep things simple by only having a few files to
+ deploy, i.e. a stand-alone executable with the associated compiler
+ specific DLLs, then you must build everything statically.
+
+ \section2 Building Qt Statically
+
+ Before we can build our application we must make sure that Qt is
+ built statically. To do this, go to a command prompt and type the
+ following:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 11
+
+ Remember to specify any other options you need, such as data base
+ drivers, as arguments to \c configure. Once \c configure has
+ finished, type the following:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 12
+
+ This will build Qt statically. Note that unlike with a dynamic build,
+ building Qt statically will result in libraries without version numbers;
+ e.g. \c QtCore4.lib will be \c QtCore.lib. Also, we have used \c nmake
+ in all the examples, but if you use MinGW you must use
+ \c mingw32-make instead.
+
+ \note If you later need to reconfigure and rebuild Qt from the
+ same location, ensure that all traces of the previous configuration are
+ removed by entering the build directory and typing \c{nmake distclean}
+ before running \c configure again.
+
+ \section2 Linking the Application to the Static Version of Qt
+
+ Once Qt has finished building we can build the \l
+ {tools/plugandpaint}{Plug & Paint} application. First we must go
+ into the directory that contains the application:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 13
+
+ We must then run \c qmake to create a new makefile for the
+ application, and do a clean build to create the statically linked
+ executable:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 14
+
+ You probably want to link against the release libraries, and you
+ can specify this when invoking \c qmake. Now, provided that
+ everything compiled and linked without any errors, we should have
+ a \c plugandpaint.exe file that is ready for deployment. One easy
+ way to check that the application really can be run stand-alone is
+ to copy it to a machine that doesn't have Qt or any Qt
+ applications installed, and run it on that machine.
+
+ Remember that if your application depends on compiler specific
+ libraries, these must still be redistributed along with your
+ application. You can check which libraries your application is
+ linking against by using the \c depends tool. For more
+ information, see the \l {Application Dependencies} section.
+
+ The \l {tools/plugandpaint}{Plug & Paint} example consists of
+ several components: The application itself (\l
+ {tools/plugandpaint}{Plug & Paint}), and the \l
+ {tools/plugandpaintplugins/basictools}{Basic Tools} and \l
+ {tools/plugandpaintplugins/extrafilters}{Extra Filters}
+ plugins. Since we cannot deploy plugins using the static linking
+ approach, the application we have prepared is incomplete. It will
+ run, but the functionality will be disabled due to the missing
+ plugins. To deploy plugin-based applications we should use the
+ shared library approach.
+
+ \section1 Shared Libraries
+
+ We have two challenges when deploying the \l
+ {tools/plugandpaint}{Plug & Paint} application using the shared
+ libraries approach: The Qt runtime has to be correctly
+ redistributed along with the application executable, and the
+ plugins have to be installed in the correct location on the target
+ system so that the application can find them.
+
+ \section2 Building Qt as a Shared Library
+
+ We assume that you already have installed Qt as a shared library,
+ which is the default when installing Qt, in the \c C:\path\to\Qt
+ directory. For more information on how to build Qt, see the \l
+ {Installation} documentation.
+
+ \section2 Linking the Application to Qt as a Shared Library
+
+ After ensuring that Qt is built as a shared library, we can build
+ the \l {tools/plugandpaint}{Plug & Paint} application. First, we
+ must go into the directory that contains the application:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 15
+
+ Now run \c qmake to create a new makefile for the application, and
+ do a clean build to create the dynamically linked executable:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 16
+
+ This builds the core application, the following will build the
+ plugins:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 17
+
+ If everything compiled and linked without any errors, we will get
+ a \c plugandpaint.exe executable and the \c pnp_basictools.dll and
+ \c pnp_extrafilters.dll plugin files.
+
+ \section2 Creating the Application Package
+
+ To deploy the application, we must make sure that we copy the
+ relevant Qt DLL (corresponding to the Qt modules used in
+ the application) as well as the executable to the same directory
+ in the \c release subdirectory.
+
+ Remember that if your application depends on compiler specific
+ libraries, these must be redistributed along with your
+ application. You can check which libraries your application is
+ linking against by using the \c depends tool. For more
+ information, see the \l {Application Dependencies} section.
+
+ We'll cover the plugins shortly, but first we'll check that the
+ application will work in a deployed environment: Either copy the
+ executable and the Qt DLLs to a machine that doesn't have Qt
+ or any Qt applications installed, or if you want to test on the
+ build machine, ensure that the machine doesn't have Qt in its
+ environment.
+
+ If the application starts without any problems, then we have
+ successfully made a dynamically linked version of the \l
+ {tools/plugandpaint}{Plug & Paint} application. But the
+ application's functionality will still be missing since we have
+ not yet deployed the associated plugins.
+
+ Plugins work differently to normal DLLs, so we can't just
+ copy them into the same directory as our application's executable
+ as we did with the Qt DLLs. When looking for plugins, the
+ application searches in a \c plugins subdirectory inside the
+ directory of the application executable.
+
+ So to make the plugins available to our application, we have to
+ create the \c plugins subdirectory and copy over the relevant DLLs:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 18
+
+ An archive distributing all the Qt DLLs and application
+ specific plugins required to run the \l {tools/plugandpaint}{Plug
+ & Paint} application, would have to include the following files:
+
+ \table 100%
+ \header
+ \o Component \o {2, 1} File Name
+ \row
+ \o The executable
+ \o {2, 1} \c plugandpaint.exe
+ \row
+ \o The Basic Tools plugin
+ \o {2, 1} \c plugins\pnp_basictools.dll
+ \row
+ \o The ExtraFilters plugin
+ \o {2, 1} \c plugins\pnp_extrafilters.dll
+ \row
+ \o The Qt Core module
+ \o {2, 1} \c qtcore4.dll
+ \row
+ \o The Qt GUI module
+ \o {2, 1} \c qtgui4.dll
+ \endtable
+
+ In addition, the archive must contain the following compiler
+ specific libraries depending on your version of Visual Studio:
+
+ \table 100%
+ \header
+ \o \o VC++ 6.0 \o VC++ 7.1 (2003) \o VC++ 8.0 (2005) \o VC++ 9.0 (2008)
+ \row
+ \o The C run-time
+ \o \c msvcrt.dll
+ \o \c msvcr71.dll
+ \o \c msvcr80.dll
+ \o \c msvcr90.dll
+ \row
+ \o The C++ run-time
+ \o \c msvcp60.dll
+ \o \c msvcp71.dll
+ \o \c msvcp80.dll
+ \o \c msvcp90.dll
+ \endtable
+
+ To verify that the application now can be successfully deployed,
+ you can extract this archive on a machine without Qt and without
+ any compiler installed, and try to run it.
+
+ An alternative to putting the plugins in the plugins subdirectory
+ is to add a custom search path when you start your application
+ using QApplication::addLibraryPath() or
+ QApplication::setLibraryPaths().
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 19
+
+ One benefit of using plugins is that they can easily be made
+ available to a whole family of applications.
+
+ It's often most convenient to add the path in the application's \c
+ main() function, right after the QApplication object is
+ created. Once the path is added, the application will search it
+ for plugins, in addition to looking in the \c plugins subdirectory
+ in the application's own directory. Any number of additional paths
+ can be added.
+
+ \section2 Visual Studio 2005 Onwards
+
+ When deploying an application compiled with Visual Studio 2005 onwards,
+ there are some additional steps to be taken.
+
+ First, we need to copy the manifest file created when linking the
+ application. This manifest file contains information about the
+ application's dependencies on side-by-side assemblies, such as the runtime
+ libraries.
+
+ The manifest file needs to be copied into the \bold same folder as the
+ application executable. You do not need to copy the manifest files for
+ shared libraries (DLLs), since they are not used.
+
+ If the shared library has dependencies that are different from the
+ application using it, the manifest file needs to be embedded into the DLL
+ binary. Since Qt 4.1.3, the follwoing \c CONFIG options are available for
+ embedding manifests:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 20
+
+ To use the options, add
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 21
+
+ to your .pro file. The \c embed_manifest_dll option is enabled by default.
+
+ You can find more information about manifest files and side-by-side
+ assemblies at the
+ \l {http://msdn.microsoft.com/en-us/library/aa376307.aspx}{MSDN website}.
+
+ There are two ways to include the run time libraries: by bundling them
+ directly with your application or by installing them on the end-user's
+ system.
+
+ To bundle the run time libraries with your application, copy the directory
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 22
+
+ into the folder where your executable is, so that you are including a
+ \c Microsoft.VC80.CRT directory alongside your application's executable. If
+ you are bundling the runtimes and need to deploy plugins as well, you have
+ to remove the manifest from the plugins (embedded as a resource) by adding
+ the following line to the \c{.pro} file of the plugins you are compiling:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 23
+
+ \warning If you skip the step above, the plugins will not load on some
+ systems.
+
+ To install the runtime libraries on the end-user's system, you need to
+ include the appropriate Visual C++ Redistributable Package (VCRedist)
+ executable with your application and ensure that it is executed when the
+ user installs your application.
+
+ For example, on an 32-bit x86-based system, you would include the
+ \l{http://www.microsoft.com/downloads/details.aspx?FamilyId=32BC1BEE-A3F9-4C13-9C99-220B62A191EE}{vcredist_x86.exe}
+ executable. The \l{http://www.microsoft.com/downloads/details.aspx?familyid=526BF4A7-44E6-4A91-B328-A4594ADB70E5}{vcredist_IA64.exe}
+ and \l{http://www.microsoft.com/downloads/details.aspx?familyid=90548130-4468-4BBC-9673-D6ACABD5D13B}{vcredist_x64.exe}
+ executables provide the appropriate libraries for the IA64 and 64-bit x86
+ architectures, respectively.
+
+ \note The application you ship must be compiled with exactly the same
+ compiler version against the same C runtime version. This prevents
+ deploying errors caused by different versions of the C runtime libraries.
+
+ \section2 Visual Studio 2008 And Manual Installs
+
+ As well as the above details for VS 2005 and onwards, Visual Studio 2008
+ applications may have problems when deploying manually, say to a USB
+ stick.
+
+ The recommended procedure is to configure Qt with the \c -plugin-manifests
+ option using the 'configure' tool. Then follow the \l {http://msdn.microsoft.com/en-us/library/ms235291(VS.80).aspx}{guidelines}
+ for manually deploying private assemblies.
+
+ In brief the steps are
+
+ \list 1
+
+ \o create a folder structure on the development computer that will match the target USB stick directory structure, for example '\\app' and for your dlls, '\\app\\lib'.
+
+ \o on the development computer, from the appropriate 'redist' folder copy over Microsoft.VC80.CRT and Microsoft.VC80.MFC to the directories '\\app' and '\\app\\lib' on the development PC.
+
+ \o xcopy the \\app folder to the target USB stick.
+ \endlist
+
+ Your application should now run. Also be aware that even with a service
+ pack installed the Windows DLLs that are linked to will be the defaults. See
+ the information on \l {http://msdn.microsoft.com/en-us/library/cc664727.aspx}{how to select the appropriate target DLLs}.
+
+ \section1 Application Dependencies
+
+ \section2 Additional Libraries
+
+ Depending on configuration, compiler specific libraries must be
+ redistributed along with your application. You can check which
+ libraries your application is linking against by using the
+ \l{Dependency Walker} tool. All you need to do is to run it like
+ this:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 24
+
+ This will provide a list of the libraries that your application
+ depends on and other information.
+
+ \image deployment-windows-depends.png
+
+ When looking at the release build of the Plug & Paint executable
+ (\c plugandpaint.exe) with the \c depends tool, the tool lists the
+ following immediate dependencies to non-system libraries:
+
+ \table 100%
+ \header
+ \o Qt
+ \o VC++ 6.0
+ \o VC++ 7.1 (2003)
+ \o VC++ 8.0 (2005)
+ \o MinGW
+ \row
+ \o \list
+ \o QTCORE4.DLL - The QtCore runtime
+ \o QTGUI4.DLL - The QtGui runtime
+ \endlist
+ \o \list
+ \o MSVCRT.DLL - The C runtime
+ \o MSVCP60.DLL - The C++ runtime (only when STL is installed)
+ \endlist
+ \o \list
+ \o MSVCR71.DLL - The C runtime
+ \o MSVCP71.DLL - The C++ runtime (only when STL is installed)
+ \endlist
+ \o \list
+ \o MSVCR80.DLL - The C runtime
+ \o MSVCP80.DLL - The C++ runtime (only when STL is installed)
+ \endlist
+ \o \list
+ \o MINGWM10.DLL - The MinGW run-time
+ \endlist
+ \endtable
+
+ When looking at the plugin DLLs the exact same dependencies
+ are listed.
+
+ \section2 Qt Plugins
+
+ Your application may also depend on one or more Qt plugins, such
+ as the JPEG image format plugin or a SQL driver plugin. Be sure
+ to distribute any Qt plugins that you need with your application,
+ and note that each type of plugin should be located within a
+ specific subdirectory (such as \c imageformats or \c sqldrivers)
+ within your distribution directory, as described below.
+
+ \note If you are deploying an application that uses QtWebKit to display
+ HTML pages from the World Wide Web, you should include all text codec
+ plugins to support as many HTML encodings possible.
+
+ The search path for Qt plugins is hard-coded into the QtCore library.
+ By default, the plugins subdirectory of the Qt installation is the first
+ plugin search path. However, pre-determined paths like the default one
+ have certain disadvantages. For example, they may not exist on the target
+ machine. For that reason, you need to examine various alternatives to make
+ sure that the Qt plugins are found:
+
+ \list
+
+ \o \l{qt-conf.html}{Using \c qt.conf}. This approach is the recommended
+ if you have executables in different places sharing the same plugins.
+
+ \o Using QApplication::addLibraryPath() or
+ QApplication::setLibraryPaths(). This approach is recommended if you only
+ have one executable that will use the plugin.
+
+ \o Using a third party installation utility to change the
+ hard-coded paths in the QtCore library.
+
+ \endlist
+
+ If you add a custom path using QApplication::addLibraryPath it could
+ look like this:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 54
+
+ Then qApp->libraryPaths() would return something like this:
+
+ "C:/customPath/plugins "
+ "C:/Qt/%VERSION%/plugins"
+ "E:/myApplication/directory/"
+
+ The executable will look for the plugins in these directories and
+ the same order as the QStringList returned by qApp->libraryPaths().
+ The newly added path is prepended to the qApp->libraryPaths() which
+ means that it will be searched through first. However, if you use
+ qApp->setLibraryPaths(), you will be able to determend which paths
+ and in which order they will be searched.
+
+ The \l{How to Create Qt Plugins} document outlines the issues you
+ need to pay attention to when building and deploying plugins for
+ Qt applications.
+
+ \section1 Related Third Party Resources
+
+ \list
+ \o \l{http://silmor.de/29}{Cross compiling Qt/Win Apps on Linux} covers the
+ process of cross-compiling Windows applications on Linux.
+ \o \l{http://divided-mind.blogspot.com/2007/09/cross-compiling-qt4win-on-linux.html}
+ {Cross-compiling Qt4/Win on Linux} provides another Linux-to-Windows
+ cross-compilation guide.
+ \endlist
+*/
+
+/*!
+ \page deployment-mac.html
+ \contentspage Deploying Qt Applications
+
+ \title Deploying an Application on Mac OS X
+
+ Starting with version 4.5, Qt now includes a \l {macdeploy}{deployment tool}
+ that automates the prodecures described in this document.
+
+ This documentation will describe how to create a bundle, and how
+ to make sure that the application will find the resources it needs
+ at run-time. We will demonstrate the procedures in terms of
+ deploying the \l {tools/plugandpaint}{Plug & Paint} application
+ that is provided in Qt's examples directory.
+
+ \tableofcontents
+
+ \section1 The Bundle
+
+ On the Mac, a GUI application must be built and run from a
+ bundle. A bundle is a directory structure that appears as a single
+ entity when viewed in the Finder. A bundle for an application
+ typcially contains the executable and all the resources it
+ needs. See the image below:
+
+ \image deployment-mac-bundlestructure.png
+
+ The bundle provides many advantages to the user. One primary
+ advantage is that, since it is a single entity, it allows for
+ drag-and-drop installation. As a programmer you can access bundle
+ information in your own code. This is specific to Mac OS X and
+ beyond the scope of this document. More information about bundles
+ is available on \l
+ {http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFBundles/index.html}{Apple's Developer Website}.
+
+ A Qt command line application on Mac OS X works similar to a
+ command line application on Unix and Windows. You probably don't
+ want to run it in a bundle: Add this to your application's .pro:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 26
+
+ This will tell \c qmake not to put the executable inside a
+ bundle. Please refer to the \l{Deploying an Application on
+ X11 Platforms}{X11 deployment documentation} for information about how
+ to deploy these "bundle-less" applications.
+
+ \section1 Xcode
+
+ We will only concern ourselves with command-line tools here. While
+ it is possible to use Xcode for this, Xcode has changed enough
+ between each version that it makes it difficult to document it
+ perfectly for each version. A future version of this document may
+ include more information for using Xcode in the deployment
+ process.
+
+ \section1 Static Linking
+
+ If you want to keep things simple by only having a few files to
+ deploy, then you must build everything statically.
+
+ \section2 Building Qt Statically
+
+ Start by installing a static version of the Qt library. Remember
+ that you will not be able to use plugins and you must build in all
+ the image formats, SQL drivers, etc..
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 27
+
+ You can check the various options that are available by running \c
+ configure -help.
+
+ \section2 Linking the Application to the Static Version of Qt
+
+ Once Qt is built statically, the next step is to regenerate the
+ makefile and rebuild the application. First, we must go into the
+ directory that contains the application:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 28
+
+ Now run \c qmake to create a new makefile for the application, and do
+ a clean build to create the statically linked executable:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 29
+
+ You probably want to link against the release libraries, and you
+ can specify this when invoking \c qmake. If you have Xcode Tools
+ 1.5 or higher installed, you may want to take advantage of "dead
+ code stripping" to reduce the size of your binary even more. You
+ can do this by passing \c {LIBS+= -dead_strip} to \c qmake in
+ addition to the \c {-config release} parameter. This doesn't have
+ as large an effect if you are using GCC 4, since Qt will then have
+ function visibility hints built-in, but if you use GCC 3.3, it
+ could make a difference.
+
+ Now, provided that everything compiled and linked without any
+ errors, we should have a \c plugandpaint.app bundle that is ready
+ for deployment. One easy way to check that the application really
+ can be run stand-alone is to copy the bundle to a machine that
+ doesn't have Qt or any Qt applications installed, and run the
+ application on that machine.
+
+ You can check what other libraries your application links to using
+ the \c otool:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 30
+
+ Here is what the output looks like for the static \l
+ {tools/plugandpaint}{Plug & Paint}:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 31
+
+ For more information, see the \l {Application Dependencies}
+ section.
+
+ If you see \e Qt libraries in the output, it probably
+ means that you have both dynamic and static Qt libraries installed
+ on your machine. The linker will always choose dynamic over
+ static. There are two solutions: Either move your Qt dynamic
+ libraries (\c .dylibs) away to another directory while you link
+ the application and then move them back, or edit the \c Makefile
+ and replace link lines for the Qt libraries with the absolute path
+ to the static libraries. For example, replace
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 32
+
+ with
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 33
+
+ The \l {tools/plugandpaint}{Plug & Paint} example consists of
+ several components: The core application (\l
+ {tools/plugandpaint}{Plug & Paint}), and the \l
+ {tools/plugandpaintplugins/basictools}{Basic Tools} and \l
+ {tools/plugandpaintplugins/extrafilters}{Extra Filters}
+ plugins. Since we cannot deploy plugins using the static linking
+ approach, the bundle we have prepared so far is incomplete. The
+ application will run, but the functionality will be disabled due
+ to the missing plugins. To deploy plugin-based applications we
+ should use the framework approach.
+
+ \section1 Frameworks
+
+ We have two challenges when deploying the \l
+ {tools/plugandpaint}{Plug & Paint} application using frameworks:
+ The Qt runtime has to be correctly redistributed along with the
+ application bundle, and the plugins have to be installed in the
+ correct location so that the application can find them.
+
+ When distributing Qt with your application using frameworks, you
+ have two options: You can either distribute Qt as a private
+ framework within your application bundle, or you can distribute Qt
+ as a standard framework (alternatively use the Qt frameworks in
+ the installed binary). These two approaches are essentially the
+ same. The latter option is good if you have many Qt applications
+ and you would prefer to save memory. The former is good if you
+ have Qt built in a special way, or want to make sure the framework
+ is there. It just comes down to where you place the Qt frameworks.
+
+ \section2 Building Qt as Frameworks
+
+ We assume that you already have installed Qt as frameworks, which
+ is the default when installing Qt, in the /path/to/Qt
+ directory. For more information on how to build Qt, see the \l
+ Installation documentation.
+
+ When installing, the identification name of the frameworks will
+ also be set. The identification name is what the dynamic linker
+ (\c dyld) uses to find the libraries for your application.
+
+ \section2 Linking the Application to Qt as Frameworks
+
+ After ensuring that Qt is built as frameworks, we can build the \l
+ {tools/plugandpaint}{Plug & Paint} application. First, we must go
+ into the directory that contains the application:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 34
+
+ Now run qmake to create a new makefile for the application, and do
+ a clean build to create the dynamically linked executable:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 35
+
+ This builds the core application, the following will build the
+ plugins:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 36
+
+ Now run the \c otool for the Qt frameworks, for example Qt Gui:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 37
+
+ You will get the following output:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 38
+
+ For the Qt frameworks, the first line (i.e. \c
+ {path/to/Qt/lib/QtGui.framework/Versions/4/QtGui (compatibility
+ version 4.0.0, current version 4.0.1)}) becomes the framework's
+ identification name which is used by the dynamic linker (\c dyld).
+
+ But when you are deploying the application, your users may not
+ have the Qt frameworks installed in the specified location. For
+ that reason, you must either provide the frameworks in an agreed
+ upon location, or store the frameworks in the bundle itself.
+ Regardless of which solution you choose, you must make sure that
+ the frameworks return the proper identification name for
+ themselves, and that the application will look for these
+ names. Luckily we can control this with the \c install_name_tool
+ command-line tool.
+
+ The \c install_name_tool works in two modes, \c -id and \c
+ -change. The \c -id mode is for libraries and frameworks, and
+ allows us to specify a new identification name. We use the \c
+ -change mode to change the paths in the application.
+
+ Let's test this out by copying the Qt frameworks into the Plug &
+ Paint bundle. Looking at \c otool's output for the bundle, we can
+ see that we must copy both the QtCore and QtGui frameworks into
+ the bundle. We will assume that we are in the directory where we
+ built the bundle.
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 39
+
+ First we create a \c Frameworks directory inside the bundle. This
+ follows the Mac OS X application convention. We then copy the
+ frameworks into the new directory. Since frameworks contain
+ symbolic links, and we want to preserve them, we use the \c -R
+ option.
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 40
+
+ Then we run \c install_name_tool to set the identification names
+ for the frameworks. The first argument after \c -id is the new
+ name, and the second argument is the framework which
+ identification we wish to change. The text \c @executable_path is
+ a special \c dyld variable telling \c dyld to start looking where
+ the executable is located. The new names specifies that these
+ frameworks will be located "one directory up and over" in the \c
+ Frameworks directory.
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 41
+
+ Now, the dynamic linker knows where to look for QtCore and
+ QtGui. Then we must make the application aware of the library
+ locations as well using \c install_name_tool's \c -change mode.
+ This basically comes down to string replacement, to match the
+ identification names that we set for the frameworks.
+
+ Finally, since the QtGui framework depends on QtCore, we must
+ remember to change the reference for QtGui:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 42
+
+ After all this we can run \c otool again and see that the
+ application will look in the right locations.
+
+ Of course, the thing that makes the \l {tools/plugandpaint}{Plug &
+ Paint} example interesting are its plugins. The basic steps we
+ need to follow with plugins are:
+
+ \list
+ \o Put the plugins inside the bundle
+ \o Make sure that the plugins use the correct library using the
+ \c install_name_tool
+ \o Make sure that the application knows where to get the plugins
+ \endlist
+
+ While we can put the plugins anywhere we want in the bundle, the
+ best location to put them is under Contents/Plugins. When we built
+ the Plug & Paint plugins, the \c DESTDIR variable in their \c .pro
+ file put the plugins' \c .dylib files in a \c plugins subdirectory
+ in the \c plugandpaint directory. So, in this example, all we need
+ to do is move this directory:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 43
+
+ If we run \c otool on for example the \l
+ {tools/plugandpaintplugins/basictools}{Basic Tools} plugin's \c
+ .dylib file we get the following information.
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 44
+
+ Then we can see that the plugin links to the Qt frameworks it was
+ built against. Since we want the plugins to use the framework in
+ the application bundle we change them the same way as we did for
+ the application. For example for the Basic Tools plugin:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 45
+
+
+ We must also modify the code in \c
+ tools/plugandpaint/mainwindow.cpp to \l {QDir::cdUp()}{cdUp()} one
+ directory since the plugins live in the bundle. Add the following
+ code to the \c mainwindow.cpp file:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 46
+
+ \table
+ \row
+ \o \inlineimage deployment-mac-application.png
+ \o
+ The additional code in \c tools/plugandpaint/mainwindow.cpp also
+ enables us to view the plugins in the Finder, as shown to the left.
+
+ We can also add plugins extending Qt, for example adding SQL
+ drivers or image formats. We just need to follow the directory
+ structure outlined in plugin documentation, and make sure they are
+ included in the QCoreApplication::libraryPaths(). Let's quickly do
+ this with the image formats, following the approach from above.
+
+ Copy Qt's image format plugins into the bundle:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 47
+
+ Use \c install_name_tool to link the plugins to the frameworks in
+ the bundle:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 48
+
+ Then we update the source code in \c tools/plugandpaint/main.cpp
+ to look for the new plugins. After constructing the
+ QApplication, we add the following code:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 49
+
+ First, we tell the application to only look for plugins in this
+ directory. In our case, this is what we want since we only want to
+ look for the plugins that we distribute with the bundle. If we
+ were part of a bigger Qt installation we could have used
+ QCoreApplication::addLibraryPath() instead.
+
+ \endtable
+
+ \warning When deploying plugins, and thus make changes to the
+ source code, the default identification names are reset when
+ rebuilding the application, and you must repeat the process of
+ making your application link to the Qt frameworks in the bundle
+ using \c install_name_tool.
+
+ Now you should be able to move the application to another Mac OS X
+ machine and run it without Qt installed. Alternatively, you can
+ move your frameworks that live outside of the bundle to another
+ directory and see if the application still runs.
+
+ If you store the frameworks in another location than in the
+ bundle, the technique of linking your application is similar; you
+ must make sure that the application and the frameworks agree where
+ to be looking for the Qt libraries as well as the plugins.
+
+ \section2 Creating the Application Package
+
+ When you are done linking your application to Qt, either
+ statically or as frameworks, the application is ready to be
+ distributed. Apple provides a fair bit of information about how to
+ do this and instead of repeating it here, we recommend that you
+ consult their \l
+ {http://developer.apple.com/documentation/DeveloperTools/Conceptual/SoftwareDistribution/index.html}{software delivery}
+ documentation.
+
+ Although the process of deploying an application do have some
+ pitfalls, once you know the various issues you can easily create
+ packages that all your Mac OS X users will enjoy.
+
+ \section1 Application Dependencies
+
+ \section2 Qt Plugins
+
+ Your application may also depend on one or more Qt plugins, such
+ as the JPEG image format plugin or a SQL driver plugin. Be sure
+ to distribute any Qt plugins that you need with your application,
+ and note that each type of plugin should be located within a
+ specific subdirectory (such as \c imageformats or \c sqldrivers)
+ within your distribution directory, as described below.
+
+ \note If you are deploying an application that uses QtWebKit to display
+ HTML pages from the World Wide Web, you should include all text codec
+ plugins to support as many HTML encodings possible.
+
+ The search path for Qt plugins (as well as a few other paths) is
+ hard-coded into the QtCore library. By default, the first plugin
+ search path will be hard-coded as \c /path/to/Qt/plugins. But
+ using pre-determined paths has certain disadvantages. For example,
+ they may not exist on the target machine. For that reason you need
+ to examine various alternatives to make sure that the Qt plugins
+ are found:
+
+ \list
+
+ \o \l{qt-conf.html}{Using \c qt.conf}. This is the recommended
+ approach since it provides the most flexibility.
+
+ \o Using QApplication::addLibraryPath() or
+ QApplication::setLibraryPaths().
+
+ \o Using a third party installation utility to change the
+ hard-coded paths in the QtCore library.
+
+ \endlist
+
+ The \l{How to Create Qt Plugins} document outlines the issues you
+ need to pay attention to when building and deploying plugins for
+ Qt applications.
+
+ \section2 Additional Libraries
+
+ You can check which libraries your application is linking against
+ by using the \c otool tool. To use \c otool, all you need to do is
+ to run it like this:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 50
+
+ Unlike the deployment processes on \l {Deploying an Application on
+ X11 Platforms}{X11} and \l {Deploying an Application on
+ Windows}{Windows}, compiler specific libraries rarely have to
+ be redistributed along with your application. But since Qt can be
+ configured, built, and installed in several ways on Mac OS X,
+ there are also several ways to deploy applications. Typically your
+ goals help determine how you are going to deploy the
+ application. The last sections describe a couple of things to keep
+ in mind when you are deploying your application.
+
+ \section2 Mac OS X Version Dependencies
+
+ Qt 4.2 has been designed to be built and deployed on Mac OS X 10.3
+ up until the current version as of this writing, Mac OS X 10.4 and
+ all their minor releases. Qt achieves this by using "weak
+ linking." This means that Qt tests if a function added in newer
+ versions of Mac OS X is available on the computer it is running on
+ before it uses it. This results in getting access to newer
+ features when running on newer versions of OS X while still
+ remaining compatible on older versions.
+
+ For more information about cross development issues on Mac OS X,
+ see \l
+ {http://developer.apple.com/documentation/DeveloperTools/Conceptual/cross_development/index.html}{Apple's Developer Website}.
+
+ Since the linker is set to be compatible with all OS X version, you have to
+ change the \c MACOSX_DEPLOYMENT_TARGET environment variable to get weak
+ linking to work for your application. You can add:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 51
+
+ to your .pro file and qmake will take care of this for you.
+
+ However, there is a bit of a wrinkle to keep in mind when your are
+ deploying. Mac OS X 10.4 ("Tiger") ships GCC 4.0 as its default
+ compiler. This is also the GCC compiler we use for building the
+ binary Qt package. If you use GCC 4.0 to build your application,
+ it will link against a dynamic libstdc++ that is only available on
+ Mac OS X 10.4 and Mac OS X 10.3.9. The application will refuse to
+ run on older versions of the operating system.
+
+ For more information about C++ runtime environment, see \l
+ {http://developer.apple.com/documentation/DeveloperTools/Conceptual/CppRuntimeEnv/index.html}{Apple's Developer Website}
+
+ If you want to deploy to versions of Mac OS X earlier than 10.3.9,
+ you must build with GCC 3.3 which is the default on Mac OS X
+ 10.3. GCC 3.3 is also available on the Mac OS X 10.4 "Xcode Tools"
+ CD and as a download for earlier versions of Mac OS X from Apple
+ (\l {https://connect.apple.com/}{connect.apple.com}). You can use
+ Apple's \c gcc_select(1) command line tool to switch the default
+ complier on your system.
+
+ \section3 Deploying Phonon Applications on Mac OS X
+
+ \list
+ \o If you build your Phonon application on Tiger, it will work on
+ Tiger, Leopard and Panther.
+ \o If you build your application on Leopard, it will \bold not work
+ on Panther unless you rename the libraries with the following command
+ after you have built your application:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 51a
+
+ This command must be invoked in the directory where
+ \c{libphonon_qt7.dylib} is located, usually in
+ \c{yourapp.app/Contents/plugins/phonon_backend/}.
+ \o The \l {macdeploy}{deployment tool} will perform this step for you.
+
+ \o If you are using Leopard, but would like to build your application
+ against Tiger, you can use:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 51b
+ \endlist
+
+ \section2 Architecture Dependencies
+
+ The Qt for Mac OS X libraries, tools, and examples can be built "universal"
+ (i.e. they run natively on both Intel and PowerPC machines). This
+ is accomplished by passing \c -universal on the \c configure line
+ of the source package, and requires that you use GCC 4.0.x. On
+ PowerPC hardware you will need to pass the universal SDK as a
+ command line argument to the Qt configure command. For example:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 52
+
+ From 4.1.1 the Qt binary package is already universal.
+
+ If you want to create a binary that runs on older versions of
+ PowerPC and x86, it is possible to build Qt for the PowerPC using
+ GCC 3.3, and for x86 one using GCC 4.0, and use Apple's \c lipo(1)
+ tool to stitch them together. This is beyond the scope of this
+ document and is not something we have tried, but Apple documents
+ it on their \l
+ {http://developer.apple.com/documentation/}{developer website}.
+
+ Once you have a universal Qt, \a qmake will generate makefiles
+ that will build for its host architecture by default. If you want
+ to build for a specific architecture, you can control this with
+ the \c CONFIG line in your \c .pro file. Use \c CONFIG+=ppc for
+ PowerPC, and \c CONFIG+=x86 for x86. If you desire both, simply
+ add both to the \c CONFIG line. PowerPC users also need an
+ SDK. For example:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 53
+
+ Besides \c lipo, you can also check your binaries with the \c file(1)
+ command line tool or the Finder.
+
+ \section1 The Mac Deployment Tool
+ \target macdeploy
+ The Mac deployment tool can be found in QTDIR/bin/macdeployqt. It is
+ designed to automate the process of creating a deployable
+ application bundle that contains the Qt libraries as private
+ frameworks.
+
+ The mac deployment tool also deploys the Qt plugins, according
+ to the following rules:
+ \list
+ \o Debug versions of the plugins are not deployed.
+ \o The designer plugins are not deployed.
+ \o The Image format plugins are always deployed.
+ \o SQL driver plugins are deployed if the application uses the QtSql module.
+ \o Script plugins are deployed if the application uses the QtScript module.
+ \o The Phonon backend plugin is deployed if the application uses the \l{Phonon Module} {Phonon} module.
+ \o The svg icon plugin is deployed if the application uses the QtSvg module.
+ \o The accessibility plugin is always deployed.
+ \o Accessibility for Qt3Support is deployed if the application uses the Qt3Support module.
+ \endlist
+
+ \note If you want a 3rd party library to be included in your
+ application bundle, then you must add an excplicit lib entry for
+ that library to your application's .pro file. Otherwise, the
+ \c macdeployqt tool will not copy the 3rd party .dylib into the
+ bundle.
+
+ \c macdeployqt supports the following options:
+ \list
+ \o -no-plugins: Skip plugin deployment
+ \o -dmg : Create a .dmg disk image
+ \o -no-strip : Don't run 'strip' on the binaries
+ \endlist
+*/
+
+/*!
+ \page deployment-symbian.html
+ \contentspage Deploying Qt Applications
+
+ \title Deploying an Application on the Symbian platform
+
+ Applications are deployed to Symbian devices in signed \c .sis package files.
+ The \c .sis file content is controlled with \c .pkg files. The \c .pkg file contains a set
+ of instructions used by tools to produce a \c .sis file. \c qmake generates a
+ default \c .pkg file for your project. The \c .pkg file generated by \c qmake is typically
+ fully functional for testing purposes but when planning to deliver your application
+ to end-users some changes are needed. This document describes what changes are
+ typically needed and how to implement them.
+
+ \section1 Static Linking
+
+ Qt for the Symbian platform does currently not support static linking of
+ Qt libraries.
+
+ \section1 Shared Libraries
+
+ When deploying the application using the shared libraries approach we must ensure that the
+ Qt runtime is correctly redistributed along with the application executable,
+ and also that all Qt dependencies are redistributed along with the application.
+
+ We will demonstrate these procedures in terms of deploying the \l {widgets/wiggly}{Wiggly}
+ application that is provided in Qt's examples directory.
+
+ \section2 Building Qt as a Shared Library
+
+ We assume that you already have installed Qt as a shared library,
+ in the \c C:\path\to\Qt directory which is the default when installing Qt for Symbian.
+ For more information on how to build Qt, see the \l {Installation} documentation.
+
+ \section1 Shared Libraries
+
+ After ensuring that Qt is built as a shared library, we can build
+ the \l {widgets/wiggly}{Wiggly} application. First, we
+ must go into the directory that contains the application:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 55
+
+ To prepare the application for deployment we must ensure that the \c .pkg file generated by
+ \c qmake contains the relevant vendor information and embeds the necessary
+ dependencies to the application deployment file (\c .sis). The content of the generated \c .pkg
+ file can be controlled with the Symbian specific \c qmake \l DEPLOYMENT keyword extensions.
+
+ First, we will change the vendor statement to something more meaningful. The application
+ vendor is visible to end-user during the installation.
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 56
+
+ Second we will tell the Symbian application installer that this application supports
+ only S60 5.0 based devices:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 57
+
+ You can find a list of platform and device indentification codes from
+ \l {http://wiki.forum.nokia.com/index.php/S60_Platform_and_device_identification_codes}{Forum Nokia Wiki}.
+ By default \c .pkg file generated by \c qmake adds support for all
+ S60 3rd edition FP1, S60 3rd edition FP2 and S60 5th edition devices.
+
+ As a last step we will embed the Open C, Open C++ and Qt \c .sis files to the Wiggly
+ deployment file:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 58
+
+ By embedding all dependencies to the application deployment file, the
+ end-user does not need to download and install all dependencies separately.
+ The drawback of \c .sis embedding is that the application \c .sis file size becomes
+ big. To address these problems Forum Nokia is planning to release a smart installer
+ which will take care of downloading and installing the necessary dependencies
+ over-the-air. The expected availability of smart installer is 1Q 2010.
+
+ Now we are ready to compile the application and create the application
+ deployment file. Run \c qmake to create Symbian specific makefiles, resources (\.rss)
+ and deployment packaging files (\c .pkg). And do build to create the
+ application binaries and resources.
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 59
+
+ If everything compiled and linked without any errors, we are now ready to create
+ an application installation file:
+
+ \snippet doc/src/snippets/code/doc_src_deployment.qdoc 60
+
+ If all binaries and dependencies were found, we should now have a self-signed
+ \c wiggly_release-gcce.sis ready to be installed on a device. For more information
+ about creating a \c .sis file and installing it to device see also
+ \l {The Symbian platform - Introduction to Qt#Installing your own applications}{here}.
+
+*/
diff --git a/doc/src/deployment/qt-conf.qdoc b/doc/src/deployment/qt-conf.qdoc
new file mode 100644
index 000000000..eee34e9d9
--- /dev/null
+++ b/doc/src/deployment/qt-conf.qdoc
@@ -0,0 +1,135 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-conf.html
+
+ \title Using qt.conf
+
+ The \c qt.conf file overrides the hard-coded paths that are
+ compiled into the Qt library. These paths are accessible using the
+ QLibraryInfo class. Without \c qt.conf, the functions in
+ QLibraryInfo return these hard-coded paths; otherwise they return
+ the paths as specified in \c qt.conf.
+
+ Without \c qt.conf, the Qt libraries will use the hard-coded paths
+ to look for plugins, translations, and so on. These paths may not
+ exist on the target system, or they may not be
+ accesssible. Because of this, you need \c qt.conf to make the Qt
+ libraries look elsewhere.
+
+ QLibraryInfo will load \c qt.conf from one of the following locations:
+
+ \list 1
+
+ \o \c :/qt/etc/qt.conf using the resource system
+
+ \o on Mac OS X, in the Resource directory inside the appliction
+ bundle, for example \c assistant.app/Contents/Resources/qt.conf
+
+ \o in the directory containing the application executable, i.e.
+ QCoreApplication::applicationDirPath() + QDir::separator() + "qt.conf"
+
+ \endlist
+
+ The \c qt.conf file is an INI text file, as described in the \l
+ {QSettings::Format}{QSettings} documentation. The file should have
+ a \c Paths group which contains the entries that correspond to
+ each value of the QLibraryInfo::LibraryLocation enum. See the
+ QLibraryInfo documentation for details on the meaning of the
+ various locations.
+
+ \table
+
+ \header \o Entry \o Default Value
+
+ \row \o Prefix \o QCoreApplication::applicationDirPath()
+ \row \o Documentation \o \c doc
+ \row \o Headers \o \c include
+ \row \o Libraries \o \c lib
+ \row \o Binaries \o \c bin
+ \row \o Plugins \o \c plugins
+ \row \o Data \o \c .
+ \row \o Translations \o \c translations
+ \row \o Settings \o \c .
+ \row \o Examples \o \c .
+ \row \o Demos \o \c .
+
+ \endtable
+
+ Absolute paths are used as specified in the \c qt.conf file. All
+ paths are relative to the \c Prefix. On Windows and X11, the \c
+ Prefix is relative to the directory containing the application
+ executable (QCoreApplication::applicationDirPath()). On Mac OS X,
+ the \c Prefix is relative to the \c Contents in the application
+ bundle. For example, \c application.app/Contents/plugins/ is the
+ default location for loading Qt plugins. Note that the plugins
+ need to be placed in specific sub-directories under the
+ \c{plugins} directory (see \l{How to Create Qt Plugins} for
+ details).
+
+ For example, a \c qt.conf file could contain the following:
+
+ \snippet doc/src/snippets/code/doc_src_qt-conf.qdoc 0
+
+ Subgroups of the \c Paths group may be used to specify locations
+ for specific versions of the Qt libraries. Such subgroups are of
+ the form \c Paths/x.y.z, where x is the major version of the Qt
+ libraries, y the minor, and z the patch level. The subgroup that
+ most closely matches the current Qt version is used. If no
+ subgroup matches, the \c Paths group is used as the fallback. The
+ minor and patch level values may be omitted, in which case they
+ default to zero.
+
+ For example, given the following groups:
+
+ \snippet doc/src/snippets/code/doc_src_qt-conf.qdoc 1
+
+ The current version will be matched as shown:
+
+ \list
+ \o 4.0.1 matches \c Paths/4
+ \o 4.1.5 matches \c Paths/4.1
+ \o 4.6.3 matches \c Paths/4.2.5
+ \o 5.0.0 matches \c Paths
+ \o 6.0.2 matches \c Paths/6
+ \endlist
+*/
diff --git a/doc/src/deployment/qtconfig.qdoc b/doc/src/deployment/qtconfig.qdoc
new file mode 100644
index 000000000..41eb5a0b7
--- /dev/null
+++ b/doc/src/deployment/qtconfig.qdoc
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qtconfig.html
+ \title Configuring Qt
+ \ingroup qttools
+ \keyword qtconfig
+
+ The \c qtconfig tool allows users to customize the default settings for
+ Qt applications on a per-user basis, enabling features such as the widget
+ style to be changed without requiring applications to be recompiled.
+
+ \c qtconfig is available on X11 platforms and should be installed alongside
+ the \l{Qt's Tools}{other tools} supplied with Qt.
+
+ \image qtconfig-appearance.png
+*/
diff --git a/doc/src/designer-manual.qdoc b/doc/src/designer-manual.qdoc
deleted file mode 100644
index 5d8587a60..000000000
--- a/doc/src/designer-manual.qdoc
+++ /dev/null
@@ -1,2836 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page designer-manual.html
-
- \title Qt Designer Manual
- \ingroup qttools
- \keyword Qt Designer
-
- \QD is Qt's tool for designing and building graphical user
- interfaces (GUIs) from Qt components. You can compose and customize your
- widgets or dialogs in a what-you-see-is-what-you-get (WYSIWYG) manner, and
- test them using different styles and resolutions.
-
- Widgets and forms created with \QD integrated seamlessly with programmed
- code, using Qt's signals and slots mechanism, that lets you easily assign
- behavior to graphical elements. All properties set in \QD can be changed
- dynamically within the code. Furthermore, features like widget promotion
- and custom plugins allow you to use your own components with \QD.
-
- If you are new to \QD, you can take a look at the
- \l{Getting To Know Qt Designer} document. For a quick tutorial on how to
- use \QD, refer to \l{A Quick Start to Qt Designer}.
-
- Qt Designer 4.5 boasts a long list of improvements. For a detailed list of
- what is new, refer \l{What's New in Qt Designer 4.5}.
-
- \image designer-multiple-screenshot.png
-
- For more information on using \QD, you can take a look at the following
- links:
-
- \list
- \o \l{Qt Designer's Editing Modes}
- \list
- \o \l{Qt Designer's Widget Editing Mode}{Widget Editing Mode}
- \o \l{Qt Designer's Signals and Slots Editing Mode}
- {Signals and Slots Editing Mode}
- \o \l{Qt Designer's Buddy Editing Mode}
- {Buddy Editing Mode}
- \o \l{Qt Designer's Tab Order Editing Mode}
- {Tab Order Editing Mode}
- \endlist
- \o \l{Using Layouts in Qt Designer}
- \o \l{Saving, Previewing and Printing Forms in Qt Designer}
- \o \l{Using Containers in Qt Designer}
- \o \l{Creating Main Windows in Qt Designer}
- \o \l{Editing Resources with Qt Designer}
- \o \l{Using Stylesheets with Qt Designer}
- \o \l{Using a Designer UI File in Your Application}
- \endlist
-
- For advanced usage of \QD, you can refer to these links:
-
- \list
- \o \l{Customizing Qt Designer Forms}
- \o \l{Using Custom Widgets with Qt Designer}
- \o \l{Creating Custom Widgets for Qt Designer}
- \o \l{Creating Custom Widget Extensions}
- \o \l{Qt Designer's UI File Format}
- \endlist
-
-
- \section1 Legal Notices
-
- Some source code in \QD is licensed under specific highly permissive
- licenses from the original authors. The Qt team gratefully acknowledges
- these contributions to \QD and all uses of \QD should also acknowledge
- these contributions and quote the following license statements in an
- appendix to the documentation.
-
- \list
- \i \l{Implementation of the Recursive Shadow Casting Algorithm in Qt Designer}
- \endlist
-*/
-
-
-
-/*!
- \page designer-whats-new.html
- \contentspage {Qt Designer Manual}{Contents}
-
-
- \title What's New in Qt Designer 4.5
-
- \section1 General Changes
-
-
- \table
- \header
- \i Widget Filter Box
- \i Widget Morphing
- \i Disambiguation Field
- \row
- \i \inlineimage designer-widget-filter.png
- \i \inlineimage designer-widget-morph.png
- \i \inlineimage designer-disambiguation.png
- \endtable
-
- \list 1
- \i Displaying only icons in the \gui{Widget Box}: It is now possible
- for the \gui{Widget Box} to display icons only. Simply select
- \gui{Icon View} from the context menu.
- \i Filter for \gui{Widget Box}: A filter is now provided to quickly
- locate the widget you need. If you use a particular widget
- frequently, you can always add it to the
- \l{Getting to Know Qt Designer#WidgetBox}{scratch pad}.
- \i Support for QButtonGroup: It is available via the context
- menu of a selection of QAbstractButton objects.
- \i Improved support for item widgets: The item widgets' (e.g.,
- QListWidget, QTableWidget, and QTreeWidget) contents dialogs have
- been improved. You can now add translation comments and also modify
- the header properties.
- \i Widget morphing: A widget can now be morphed from one type to
- another with its layout and properties preserved. To begin, click
- on your widget and select \gui{Morph into} from the context menu.
- \i Disambiguation field: The property editor now shows this extra
- field under the \gui{accessibleDescription} property. This field
- has been introduced to aid translators in the case of two source
- texts being the same but used for different purposes. For example,
- a dialog could have two \gui{Add} buttons for two different
- reasons. \note To maintain compatibility, comments in UI files
- created prior to Qt 4.5 will be listed in the \gui{Disambiguation}
- field.
- \endlist
-
-
-
- \section1 Improved Shortcuts for the Editing Mode
-
- \list
- \i The \key{Shift+Click} key combination now selects the ancestor for
- nested layouts. This iterates from one ancestor to the other.
-
- \i The \key{Ctrl} key is now used to toggle and copy drag. Previously
- this was done with the \key{Shift} key but is now changed to
- conform to standards.
-
- \i The left mouse button does rubber band selection for form windows;
- the middle mouse button does rubber band selection everywhere.
- \endlist
-
-
- \section1 Layouts
- \list
- \i It is now possible to switch a widget's layout without breaking it
- first. Simply select the existing layout and change it to another
- type using the context menu or the layout buttons on the toolbar.
-
- \i To quickly populate a \gui{Form Layout}, you can now use the
- \gui{Add form layout row...} item available in the context menu or
- double-click on the red layout.
- \endlist
-
-
- \section1 Support for Embedded Design
-
- \table
- \header
- \i Comboboxes to Select a Device Profile
- \row
- \i \inlineimage designer-embedded-preview.png
- \endtable
-
- It is now possible to specify embedded device profiles, e.g., Style, Font,
- Screen DPI, resolution, default font, etc., in \gui{Preferences}. These
- settings will affect the \gui{Form Editor}. The profiles will also be
- visible with \gui{Preview}.
-
-
- \section1 Related Classes
-
- \list
- \i QUiLoader \mdash forms loaded with this class will now react to
- QEvent::LanguageChange if QUiLoader::setLanguageChangeEnabled() or
- QUiLoader::isLanguageChangeEnabled() is set to true.
-
- \i QDesignerCustomWidgetInterface \mdash the
- \l{QDesignerCustomWidgetInterface::}{domXml()} function now has new
- attributes for its \c{<ui>} element. These attributes are
- \c{language} and \c{displayname}. The \c{language} element can be
- one of the following "", "c++", "jambi". If this element is
- specified, it must match the language in which Designer is running.
- Otherwise, this element will not be available. The \c{displayname}
- element represents the name that will be displayed in the
- \gui{Widget Box}. Previously this was hardcoded to be the class
- name.
-
- \i QWizard \mdash QWizard's page now has a string \c{id} attribute that
- can be used to fill in enumeration values to be used by the
- \c{uic}. However, this attribute has no effect on QUiLoader.
- \endlist
-*/
-
-
-/*!
- \page designer-to-know.html
- \contentspage {Qt Designer Manual}{Contents}
-
-
- \title Getting to Know Qt Designer
-
- \tableofcontents
-
- \image designer-screenshot.png
-
- \section1 Launching Designer
-
- The way that you launch \QD depends on your platform:
-
- \list
- \i On Windows, click the Start button, under the \gui Programs submenu,
- open the \gui{Qt 4} submenu and click \gui Designer.
- \i On Unix or Linux, you might find a \QD icon on the desktop
- background or in the desktop start menu under the \gui Programming
- or \gui Development submenus. You can launch \QD from this icon.
- Alternatively, you can type \c{designer} in a terminal window.
- \i On Mac OS X, double click on \QD in \gui Finder.
- \endlist
-
- \section1 The User Interface
-
- When used as a standalone application, \QD's user interface can be
- configured to provide either a multi-window user interface (the default
- mode), or it can be used in docked window mode. When used from within an
- integrated development environment (IDE) only the multi-window user
- interface is available. You can switch modes in the \gui Preferences dialog
- from the \gui Edit menu.
-
- In multi-window mode, you can arrange each of the tool windows to suit your
- working style. The main window consists of a menu bar, a tool bar, and a
- widget box that contains the widgets you can use to create your user
- interface.
-
- \target MainWindow
- \table
- \row
- \i \inlineimage designer-main-window.png
- \i \bold{Qt Designer's Main Window}
-
- The menu bar provides all the standard actions for managing forms,
- using the clipboard, and accessing application-specific help.
- The current editing mode, the tool windows, and the forms in use can
- also be accessed via the menu bar.
-
- The tool bar displays common actions that are used when editing a form.
- These are also available via the main menu.
-
- The widget box provides common widgets and layouts that are used to
- design components. These are grouped into categories that reflect their
- uses or features.
- \endtable
-
- Most features of \QD are accessible via the menu bar, the tool bar, or the
- widget box. Some features are also available through context menus that can
- be opened over the form windows. On most platforms, the right mouse is used
- to open context menus.
-
- \target WidgetBox
- \table
- \row
- \i \inlineimage designer-widget-box.png
- \i \bold{Qt Designer's Widget Box}
-
- The widget box provides a selection of standard Qt widgets, layouts,
- and other objects that can be used to create user interfaces on forms.
- Each of the categories in the widget box contain widgets with similar
- uses or related features.
-
- \note Since Qt 4.4, new widgets have been included, e.g.,
- QPlainTextEdit, QCommandLinkButton, QScrollArea, QMdiArea, and
- QWebView.
-
- You can display all of the available objects in a category by clicking
- on the handle next to the category label. When in
- \l{Qt Designer's Widget Editing Mode}{Widget Editing
- Mode}, you can add objects to a form by dragging the appropriate items
- from the widget box onto the form, and dropping them in the required
- locations.
-
- \QD provides a scratch pad feature that allows you to collect
- frequently used objects in a separate category. The scratch pad
- category can be filled with any widget currently displayed in a form
- by dragging them from the form and dropping them onto the widget box.
- These widgets can be used in the same way as any other widgets, but
- they can also contain child widgets. Open a context menu over a widget
- to change its name or remove it from the scratch pad.
- \endtable
-
-
- \section1 The Concept of Layouts in Qt
-
- A layout is used to arrange and manage the elements that make up a user
- interface. Qt provides a number of classes to automatically handle layouts
- -- QHBoxLayout, QVBoxLayout, QGridLayout, and QFormLayout. These classes
- solve the challenge of laying out widgets automatically, providing a user
- interface that behaves predictably. Fortunately knowledge of the layout
- classes is not required to arrange widgets with \QD. Instead, select one of
- the \gui{Lay Out Horizontally}, \gui{Lay Out in a Grid}, etc., options from
- the context menu.
-
- Each Qt widget has a recommended size, known as \l{QWidget::}{sizeHint()}.
- The layout manager will attempt to resize a widget to meet its size hint.
- In some cases, there is no need to have a different size. For example, the
- height of a QLineEdit is always a fixed value, depending on font size and
- style. In other cases, you may require the size to change, e.g., the width
- of a QLineEdit or the width and height of item view widgets. This is where
- the widget size constraints -- \l{QWidget::minimumSize()}{minimumSize} and
- \l{QWidget::maximumSize()}{maximumSize} constraints come into play. These
- are properties you can set in the property editor. For example, to override
- the default \l{QWidget::}{sizeHint()}, simply set
- \l{QWidget::minimumSize()}{minimumSize} and \l{QWidget::maximumSize()}
- {maximumSize} to the same value. Alternatively, to use the current size as
- a size constraint value, choose one of the \gui{Size Constraint} options
- from the widget's context menu. The layout will then ensure that those
- constraints are met. To control the size of your widgets via code, you can
- reimplement \l{QWidget::}{sizeHint()} in your code.
-
- The screenshot below shows the breakdown of a basic user interface designed
- using a grid. The coordinates on the screenshot show the position of each
- widget within the grid.
-
- \image addressbook-tutorial-part3-labeled-layout.png
-
- \note Inside the grid, the QPushButton objects are actually nested. The
- buttons on the right are first placed in a QVBoxLayout; the buttons at the
- bottom are first placed in a QHBoxLayout. Finally, they are put into
- coordinates (1,2) and (3,1) of the QGridLayout.
-
- To visualize, imagine the layout as a box that shrinks as much as possible,
- attempting to \e squeeze your widgets in a neat arrangement, and, at the
- same time, maximize the use of available space.
-
- Qt's layouts help when you:
-
- \list 1
- \i Resize the user face to fit different window sizes.
- \i Resize elements within the user interface to suit different
- localizations.
- \i Arrange elements to adhere to layout guidelines for different
- platforms.
- \endlist
-
- So, you no longer have to worry about rearranging widgets for different
- platforms, settings, and languages.
-
- The example below shows how different localizations can affect the user
- interface. When a localization requires more space for longer text strings
- the Qt layout automatically scales to accommodate this, while ensuring that
- the user interface looks presentable and still matches the platform
- guidelines.
-
- \table
- \header
- \i A Dialog in English
- \i A Dialog in French
- \row
- \i \image designer-english-dialog.png
- \i \image designer-french-dialog.png
- \endtable
-
- The process of laying out widgets consists of creating the layout hierarchy
- while setting as few widget size constraints as possible.
-
- For a more technical perspective on Qt's layout classes, refer to the
- \l{Layout Management} documentation.
-*/
-
-
-/*!
- \page designer-quick-start.html
- \contentspage {Qt Designer Manual}{Contents}
-
-
- \title A Quick Start to Qt Designer
-
- Using \QD involves \bold four basic steps:
-
- \list 1
- \o Choose your form and objects
- \o Lay the objects out on the form
- \o Connect the signals to the slots
- \o Preview the form
- \endlist
-
- \image rgbController-screenshot.png
-
- Suppose you would like to design a small widget (see screenshot above) that
- contains the controls needed to manipulate Red, Green and Blue (RGB) values
- -- a type of widget that can be seen everywhere in image manipulation
- programs.
-
- \table
- \row
- \i \inlineimage designer-choosing-form.png
- \i \bold{Choosing a Form}
-
- You start by choosing \gui Widget from the \gui{New Form} dialog.
- \endtable
-
-
- \table
- \row
- \i \inlineimage rgbController-arrangement.png
- \i \bold{Placing Widgets on a Form}
-
- Drag three labels, three spin boxes and three vertical sliders on to your
- form. To change the label's default text, simply double-click on it. You
- can arrange them according to how you would like them to be laid out.
- \endtable
-
- To ensure that they are laid out exactly like this in your program, you
- need to place these widgets into a layout. We will do this in groups of
- three. Select the "RED" label. Then, hold down \key Ctrl while you select
- its corresponding spin box and slider. In the \gui{Form} menu, select
- \gui{Lay Out in a Grid}.
-
- \table
- \row
- \i \inlineimage rgbController-form-gridLayout.png
- \i \inlineimage rgbController-selectForLayout.png
- \endtable
-
-
- Repeat the step for the other two labels along with their corresponding
- spin boxes and sliders as well.
-
- The next step is to combine all three layouts into one \bold{main layout}.
- The main layout is the top level widget's (in this case, the QWidget)
- layout. It is important that your top level widget has a layout; otherwise,
- the widgets on your window will not resize when your window is resized. To
- set the layout, \gui{Right click} anywhere on your form, outside of the
- three separate layouts, and select \gui{Lay Out Horizontally}.
- Alternatively, you could also select \gui{Lay Out in a Grid} -- you will
- still see the same arrangement (shown below).
-
- \image rgbController-final-layout.png
-
- \note Main layouts cannot be seen on the form. To check if you have a main
- layout installed, try resizing your form; your widgets should resize
- accordingly. Alternatively, you can take a look at \QD's
- \gui{Object Inspector}. If your top level widget does not have a layout,
- you will see the broken layout icon next to it,
- \inlineimage rgbController-no-toplevel-layout.png
- .
-
- When you click on the slider and drag it to a certain value, you want the
- spin box to display the slider's position. To accomplish this behavior, you
- need to connect the slider's \l{QAbstractSlider::}{valueChanged()} signal
- to the spin box's \l{QSpinBox::}{setValue()} slot. You also need to make
- the reverse connections, e.g., connect the spin box's \l{QSpinBox::}
- {valueChanged()} signal to the slider's \l{QAbstractSlider::value()}
- {setValue()} slot.
-
- To do this, you have to switch to \gui{Edit Signals/Slots} mode, either by
- pressing \key{F4} or something \gui{Edit Signals/Slots} from the \gui{Edit}
- menu.
-
- \table
- \row
- \i \inlineimage rgbController-signalsAndSlots.png
- \i \bold{Connecting Signals to Slots}
-
- Click on the slider and drag the cursor towards the spin box. The
- \gui{Configure Connection} dialog, shown below, will pop up. Select the
- correct signal and slot and click \gui OK.
- \endtable
-
- \image rgbController-configure-connection1.png
-
- Repeat the step (in reverse order), clicking on the spin box and dragging
- the cursor towards the slider, to connect the spin box's
- \l{QSpinBox::}{valueChanged()} signal to the slider's
- \l{QAbstractSlider::value()}{setValue()} slot.
-
- You can use the screenshot below as a guide to selecting the correct signal
- and slot.
-
- \image rgbController-configure-connection2.png
-
- Now that you have successfully connected the objects for the "RED"
- component of the RGB Controller, do the same for the "GREEN" and "BLUE"
- components as well.
-
- Since RGB values range between 0 and 255, we need to limit the spin box
- and slider to that particular range.
-
- \table
- \row
- \i \inlineimage rgbController-property-editing.png
- \i \bold{Setting Widget Properties}
-
- Click on the first spin box. Within the \gui{Property Editor}, you will
- see \l{QSpinBox}'s properties. Enter "255" for the
- \l{QSpinBox::}{maximum} property. Then, click on the first vertical
- slider, you will see \l{QAbstractSlider}'s properties. Enter "255" for
- the \l{QAbstractSlider::}{maximum} property as well. Repeat this
- process for the remaining spin boxes and sliders.
- \endtable
-
- Now, we preview your form to see how it would look in your application -
- press \key{Ctrl + R} or select \gui Preview from the \gui Form menu. Try
- dragging the slider - the spin box will mirror its value too (and vice
- versa). Also, you can resize it to see how the layouts that are used to
- manage the child widgets, respond to different window sizes.
-*/
-
-
-/*!
- \page designer-editing-mode.html
- \previouspage Getting to Know Qt Designer
- \contentspage {Qt Designer Manual}{Contents}
- \nextpage Using Layouts in Qt Designer
-
- \title Qt Designer's Editing Modes
-
- \QD provides four editing modes: \l{Qt Designer's Widget Editing Mode}
- {Widget Editing Mode}, \l{Qt Designer's Signals and Slots Editing Mode}
- {Signals and Slots Editing Mode}, \l{Qt Designer's Buddy Editing Mode}
- {Buddy Editing Mode} and \l{Qt Designer's Tab Order Editing Mode}
- {Tab Order Editing Mode}. When working with \QD, you will always be in one
- of these four modes. To switch between modes, simply select it from the
- \gui{Edit} menu or the toolbar. The table below describes these modes in
- further detail.
-
- \table
- \header \i \i \bold{Editing Modes}
- \row
- \i \inlineimage designer-widget-tool.png
- \i In \l{Qt Designer's Widget Editing Mode}{Edit} mode, we can
- change the appearance of the form, add layouts, and edit the
- properties of each widget. To switch to this mode, press
- \key{F3}. This is \QD's default mode.
-
- \row
- \i \inlineimage designer-connection-tool.png
- \i In \l{Qt Designer's Signals and Slots Editing Mode}
- {Signals and Slots} mode, we can connect widgets together using
- Qt's signals and slots mechanism. To switch to this mode, press
- \key{F4}.
-
- \row
- \i \inlineimage designer-buddy-tool.png
- \i In \l{Qt Designer's Buddy Editing Mode}{Buddy Editing Mode},
- buddy widgets can be assigned to label widgets to help them
- handle keyboard focus correctly.
-
- \row
- \i \inlineimage designer-tab-order-tool.png
- \i In \l{Qt Designer's Tab Order Editing Mode}
- {Tab Order Editing Mode}, we can set the order in which widgets
- receive the keyboard focus.
- \endtable
-
-*/
-
-
-/*!
- \page designer-widget-mode.html
- \previouspage Qt Designer's Editing Modes
- \contentspage {Qt Designer Manual}{Contents}
- \nextpage Qt Designer's Signals and Slots Editing Mode
-
- \title Qt Designer's Widget Editing Mode
-
- \image designer-editing-mode.png
-
- In the Widget Editing Mode, objects can be dragged from the main window's
- widget box to a form, edited, resized, dragged around on the form, and even
- dragged between forms. Object properties can be modified interactively, so
- that changes can be seen immediately. The editing interface is intuitive
- for simple operations, yet it still supports Qt's powerful layout
- facilities.
-
-
- \tableofcontents
-
- To create and edit new forms, open the \gui File menu and select
- \gui{New Form...} or press \key{Ctrl+N}. Existing forms can also be edited
- by selecting \gui{Open Form...} from the \gui File menu or pressing
- \key{Ctrl+O}.
-
- At any point, you can save your form by selecting the \gui{Save From As...}
- option from the \gui File menu. The UI files saved by \QD contain
- information about the objects used, and any details of signal and slot
- connections between them.
-
-
- \section1 Editing A Form
-
- By default, new forms are opened in widget editing mode. To switch to Edit
- mode from another mode, select \gui{Edit Widgets} from the \gui Edit menu
- or press the \key F3 key.
-
- Objects are added to the form by dragging them from the main widget box
- and dropping them in the desired location on the form. Once there, they
- can be moved around simply by dragging them, or using the cursor keys.
- Pressing the \key Ctrl key at the same time moves the selected widget
- pixel by pixel, while using the cursor keys alone make the selected widget
- snap to the grid when it is moved. Objects can be selected by clicking on
- them with the left mouse button. You can also use the \key Tab key to
- change the selection.
-
- ### Screenshot of widget box, again
-
- The widget box contains objects in a number of different categories, all of
- which can be placed on the form as required. The only objects that require
- a little more preparation are the \gui Container widgets. These are
- described in further detail in the \l{Using Containers in Qt Designer}
- chapter.
-
-
- \target SelectingObjects
- \table
- \row
- \i \inlineimage designer-selecting-widget.png
- \i \bold{Selecting Objects}
-
- Objects on the form are selected by clicking on them with the left
- mouse button. When an object is selected, resize handles are shown at
- each corner and the midpoint of each side, indicating that it can be
- resized.
-
- To select additional objects, hold down the \key Shift key and click on
- them. If more than one object is selected, the current object will be
- displayed with resize handles of a different color.
-
- To move a widget within a layout, hold down \key Shift and \key Control
- while dragging the widget. This extends the selection to the widget's
- parent layout.
-
- Alternatively, objects can be selected in the
- \l{The Object Inspector}{Object Inspector}.
- \endtable
-
- When a widget is selected, normal clipboard operations such as cut, copy,
- and paste can be performed on it. All of these operations can be done and
- undone, as necessary.
-
- The following shortcuts can be used:
-
- \target ShortcutsForEditing
- \table
- \header \i Action \i Shortcut \i Description
- \row
- \i Cut
- \i \key{Ctrl+X}
- \i Cuts the selected objects to the clipboard.
- \row
- \i Copy
- \i \key{Ctrl+C}
- \i Copies the selected objects to the clipboard.
- \row
- \i Paste
- \i \key{Ctrl+V}
- \i Pastes the objects in the clipboard onto the form.
- \row
- \i Delete
- \i \key Delete
- \i Deletes the selected objects.
- \row
- \i Clone object
- \i \key{Ctrl+drag} (leftmouse button)
- \i Makes a copy of the selected object or group of objects.
- \row
- \i Preview
- \i \key{Ctrl+R}
- \i Shows a preview of the form.
- \endtable
-
- All of the above actions (apart from cloning) can be accessed via both the
- \gui Edit menu and the form's context menu. These menus also provide
- funcitons for laying out objects as well as a \gui{Select All} function to
- select all the objects on the form.
-
- Widgets are not unique objects; you can make as many copies of them as you
- need. To quickly duplicate a widget, you can clone it by holding down the
- \key Ctrl key and dragging it. This allows widgets to be copied and placed
- on the form more quickly than with clipboard operations.
-
-
- \target DragAndDrop
- \table
- \row
- \i \inlineimage designer-dragging-onto-form.png
- \i \bold{Drag and Drop}
-
- \QD makes extensive use of the drag and drop facilities provided by Qt.
- Widgets can be dragged from the widget box and dropped onto the form.
-
- Widgets can also be "cloned" on the form: Holding down \key Ctrl and
- dragging the widget creates a copy of the widget that can be dragged to
- a new position.
-
- It is also possible to drop Widgets onto the \l {The Object Inspector}
- {Object Inspector} to handle nested layouts easily.
- \endtable
-
- \QD allows selections of objects to be copied, pasted, and dragged between
- forms. You can use this feature to create more than one copy of the same
- form, and experiment with different layouts in each of them.
-
-
- \section2 The Property Editor
-
- The Property Editor always displays properties of the currently selected
- object on the form. The available properties depend on the object being
- edited, but all of the widgets provided have common properties such as
- \l{QObject::}{objectName}, the object's internal name, and
- \l{QWidget::}{enabled}, the property that determines whether an
- object can be interacted with or not.
-
-
- \target EditingProperties
- \table
- \row
- \i \inlineimage designer-property-editor.png
- \i \bold{Editing Properties}
-
- The property editor uses standard Qt input widgets to manage the
- properties of jbects on the form. Textual properties are shown in line
- edits, integer properties are displayed in spinboxes, boolean
- properties are displayed in check boxes, and compound properties such
- as colors and sizes are presented in drop-down lists of input widgets.
-
- Modified properties are indicated with bold labels. To reset them, click
- the arrow button on the right.
-
- Changes in properties are applied to all selected objects that have the
- same property.
- \endtable
-
- Certain properties are treated specially by the property editor:
-
- \list
- \o Compound properties -- properties that are made up of more than one
- value -- are represented as nodes that can be expanded, allowing
- their values to be edited.
- \o Properties that contain a choice or selection of flags are edited
- via combo boxes with checkable items.
- \o Properties that allow access to rich data types, such as QPalette,
- are modified using dialogs that open when the properties are edited.
- QLabel and the widgets in the \gui Buttons section of the widget box
- have a \c text property that can also be edited by double-clicking
- on the widget or by pressing \gui F2. \QD interprets the backslash
- (\\) character specially, enabling newline (\\n) characters to be
- inserted into the text; the \\\\ character sequence is used to
- insert a single backslash into the text. A context menu can also be
- opened while editing, providing another way to insert special
- characters and newlines into the text.
- \endlist
-
-
- \section2 Dynamic Properties
-
- The property editor can also be used to add new
- \l{QObject#Dynamic Properties}{dynamic properties} to both standard Qt
- widgets and to forms themselves. Since Qt 4.4, dynamic properties are added
- and removed via the property editor's toolbar, shown below.
-
- \image designer-property-editor-toolbar.png
-
- To add a dynamic property, clcik on the \gui Add button
- \inlineimage designer-property-editor-add-dynamic.png
- . To remove it, click on the \gui Remove button
- \inlineimage designer-property-editor-remove-dynamic.png
- instead. You can also sort the properties alphabetically and change the
- color groups by clickinig on the \gui Configure button
- \inlineimage designer-property-editor-configure.png
- .
-
- \section2 The Object Inspector
- \table
- \row
- \i \inlineimage designer-object-inspector.png
- \i \bold{The Object Inspector}
-
- The \gui{Object Inspector} displays a hierarchical list of all the
- objects on the form that is currently being edited. To show the child
- objects of a container widget or a layout, click the handle next to the
- object label.
-
- Each object on a form can be selected by clicking on the corresponding
- item in the \gui{Object Inspector}. Right-clicking opens the form's
- context menu. These features can be useful if you have many overlapping
- objects. To locate an object in the \gui{Object Inspector}, use
- \key{Ctrl+F}.
-
- Since Qt 4.4, double-clicking on the object's name allows you to change
- the object's name with the in-place editor.
-
- Since Qt 4.5, the \gui{Object Inspector} displays the layout state of
- the containers. The broken layout icon ###ICON is displayed if there is
- something wrong with the layouts.
-
- \endtable
-*/
-
-
-/*!
- \page designer-layouts.html
- \previouspage Qt Designer's Widget Editing Mode
- \contentspage
- \nextpage Qt Designer's Signals and Slots Editing Mode
-
- \title Using Layouts in Qt Designer
-
- Before a form can be used, the objects on the form need to be placed into
- layouts. This ensures that the objects will be displayed properly when the
- form is previewed or used in an application. Placing objects in a layout
- also ensures that they will be resized correctly when the form is resized.
-
-
- \tableofcontents
-
- \section1 Applying and Breaking Layouts
-
- The simplest way to manage objects is to apply a layout to a group of
- existing objects. This is achieved by selecting the objects that you need
- to manage and applying one of the standard layouts using the main toolbar,
- the \gui Form menu, or the form's context menu.
-
- Once widgets have been inserted into a layout, it is not possible to move
- and resize them individually because the layout itself controls the
- geometry of each widget within it, taking account of the hints provided by
- spacers. Instead, you must either break the layout and adjust each object's
- geometry manually, or you can influence the widget's geometry by resizing
- the layout.
-
- To break the layout, press \key{Ctrl+0} or choose \gui{Break Layout} from
- the form's context menu, the \gui Form menu or the main toolbar. You can
- also add and remove spacers from the layout to influence the geometries of
- the widgets.
-
-
- \target InsertingObjectsIntoALayout
- \table
- \row
- \i \inlineimage designer-layout-inserting.png
- \i \bold{Inserting Objects into a Layout}
-
- Objects can be inserted into an existing layout by dragging them from
- their current positions and dropping them at the required location. A
- blue cursor is displayed in the layout as an object is dragged over
- it to indicate where the object will be added.
- \endtable
-
-
- \section2 Setting A Top Level Layout
-
- The form's top level layout can be set by clearing the slection (click the
- left mouse button on the form itself) and applying a layout. A top level
- layout is necessary to ensure that your widgets will resize correctly when
- its window is resized. To check if you have set a top level layout, preview
- your widget and attempt to resize the window by dragging the size grip.
-
- \table
- \row
- \i \inlineimage designer-set-layout.png
- \i \bold{Applying a Layout}
-
- To apply a layout, you can select your choice of layout from the
- toolbar shown on the left, or from the context menu shown below.
- \endtable
-
- \image designer-set-layout2.png
-
-
- \section2 Horizontal and Vertical Layouts
-
- The simplest way to arrange objects on a form is to place them in a
- horizontal or vertical layout. Horizontal layouts ensure that the widgets
- within are aligned horizontally; vertical layouts ensure that they are
- aligned vertically.
-
- Horizontal and vertical layouts can be combined and nested to any depth.
- However, if you need more control over the placement of objects, consider
- using the grid layout.
-
-
- \section3 The Grid Layout
-
- Complex form layouts can be created by placing objects in a grid layout.
- This kind of layout gives the form designer much more freedom to arrange
- widgets on the form, but can result in a much less flexible layout.
- However, for some kinds of form layout, a grid arrangement is much more
- suitable than a nested arrangement of horizontal and vertical layouts.
-
-
- \section3 Splitter Layouts
-
- Another common way to manage the layout of objects on a form is to place
- them in a splitter. These splitters arrange the objects horizontally or
- vertically in the same way as normal layouts, but also allow the user to
- adjust the amount of space allocated to each object.
-
- \image designer-splitter-layout.png
-
- Although QSplitter is a container widget, \QD treats splitter objects as
- layouts that are applied to existing widgets. To place a group of widgets
- into a splitter, select them
- \l{Qt Designer's Widget Editing Mode#SelectingObjects}{as described here}
- then apply the splitter layout by using the appropriate toolbar button,
- keyboard shortcut, or \gui{Lay out} context menu entry.
-
-
- \section3 The Form Layout
-
- Since Qt 4.4, another layout class has been included -- QFormLayout. This
- class manages widgets in a two-column form; the left column holds labels
- and the right column holds field widgets such as line edits, spin boxes,
- etc. The QFormLayout class adheres to various platform look and feel
- guidelines and supports wrapping for long rows.
-
- \image designer-form-layout.png
-
- The UI file above results in the previews shown below.
-
- \table
- \header
- \i Windows XP
- \i Mac OS X
- \i Cleanlooks
- \row
- \i \inlineimage designer-form-layout-windowsXP.png
- \i \inlineimage designer-form-layout-macintosh.png
- \i \inlineimage designer-form-layout-cleanlooks.png
- \endtable
-
-
- \section2 Shortcut Keys
-
- In addition to the standard toolbar and context menu entries, there is also
- a set of keyboard shortcuts to apply layouts on widgets.
-
- \target LayoutShortcuts
- \table
- \header
- \i Layout
- \i Shortcut
- \i Description
- \row
- \i Horizontal
- \i \key{Ctrl+1}
- \i Places the selected objects in a horizontal layout.
- \row
- \i Vertical
- \i \key{Ctrl+2}
- \i Places the selected objects in a vertical layout.
- \row
- \i Grid
- \i \key{Ctrl+5}
- \i Places the selected objects in a grid layout.
- \row
- \i Form
- \i \key{Ctrl+6}
- \i Places the selected objects in a form layout.
- \row
- \i Horizontal splitter
- \i \key{Ctrl+3}
- \i Creates a horizontal splitter and places the selected objects
- inside it.
- \row
- \i Vertical splitter
- \i \key{Ctrl+4}
- \i Creates a vertical splitter and places the selected objects
- inside it.
- \row
- \i Adjust size
- \i \key{Ctrl+J}
- \i Adjusts the size of the layout to ensure that each child object
- has sufficient space to display its contents. See
- QWidget::adjustSize() for more information.
- \endtable
-
- \note \key{Ctrl+0} is used to break a layout.
-
-*/
-
-
-/*!
- \page designer-preview.html
- \contentspage {Qt Designer Manual}{Contents}
- \previouspage Using Layouts in Qt Designer
- \nextpage Qt Designer's Buddy Editing Mode
- \title Saving, Previewing and Printing Forms in Qt Designer
-
- Although \QD's forms are accurate representations of the components being
- edited, it is useful to preview the final appearance while editing. This
- feature can be activated by opening the \gui Form menu and selecting
- \gui Preview, or by pressing \key{Ctrl+R} when in the form.
-
- \image designer-dialog-preview.png
-
- The preview shows exactly what the final component will look like when used
- in an application.
-
- Since Qt 4.4, it is possible to preview forms with various skins - default
- skins, skins created with Qt Style Sheets or device skins. This feature
- simulates the effect of calling \c{QApplication::setStyleSheet()} in the
- application.
-
- To preview your form with skins, open the \gui Edit menu and select
- \gui{Preferences...}
-
- You will see the dialog shown below:
-
- \image designer-preview-style.png
-
- The \gui{Print/Preview Configuration} checkbox must be checked to activate
- previews of skins. You can select the styles provided from the \gui{Style}
- drop-down box.
-
- \image designer-preview-style-selection.png
-
- Alternatively, you can preview custom style sheet created with Qt Style
- Sheets. The figure below shows an example of Qt Style Sheet syntax and the
- corresponding output.
-
- \image designer-preview-stylesheet.png
-
- Another option would be to preview your form with device skins. A list of
- generic device skins are available in \QD, however, you may also use
- other QVFB skins with the \gui{Browse...} option.
-
- \image designer-preview-deviceskin-selection.png
-
-
- \section1 Viewing the Form's Code
-
- Since Qt 4.4, it is possible to view code generated by the User Interface
- Compiler (uic) for the \QD form.
-
- \image designer-form-viewcode.png
-
- Select \gui{View Code...} from the \gui{Form} menu and a dialog with the
- generated code will be displayed. The screenshot below is an example of
- code generated by the \c{uic}.
-
- \image designer-code-viewer.png
-
- \section1 Saving and Printing the Form
-
- Forms created in \QD can be saved to an image or printed.
-
- \table
- \row
- \i \inlineimage designer-file-menu.png
- \i \bold{Saving Forms}
-
- To save a form as an image, choose the \gui{Save Image...} option. The file
- will be saved in \c{.png} format.
-
- \bold{Printing Forms}
-
- To print a form, select the \gui{Print...} option.
-
- \endtable
-*/
-
-
-/*!
- \page designer-connection-mode.html
- \contentspage {Qt Designer Manual}{Contents}
- \previouspage Using Layouts in Qt Designer
- \nextpage Qt Designer's Buddy Editing Mode
-
-
- \title Qt Designer's Signals and Slots Editing Mode
-
- \image designer-connection-mode.png
-
- In \QD's signals and slots editing mode, you can connect objects in a form
- together using Qt's signals and slots mechanism. Both widgets and layouts
- can be connected via an intuitive connection interface, using the menu of
- compatible signals and slots provided by \QD. When a form is saved, all
- connections are preserved so that they will be ready for use when your
- project is built.
-
-
- \tableofcontents
-
- For more information on Qt's signals and sltos mechanism, refer to the
- \l{Signals and Slots} document.
-
-
- \section1 Connecting Objects
-
- To begin connecting objects, enter the signals and slots editing mode by
- opening the \gui Edit menu and selecting \gui{Edit Signals/Slots}, or by
- pressing the \key F4 key.
-
- All widgets and layouts on the form can be connected together. However,
- spacers just provide spacing hints to layouts, so they cannot be connected
- to other objects.
-
-
- \target HighlightedObjects
- \table
- \row
- \i \inlineimage designer-connection-highlight.png
- \i \bold{Highlighted Objects}
-
- When the cursor is over an object that can be used in a connection, the
- object will be highlighted.
- \endtable
-
- To make a connectionn, press the left mouse button and drag the cursor
- towards the object you want to connect it to. As you do this, a line will
- extend from the source object to the cursor. If the cursor is over another
- object on the form, the line will end with an arrow head that points to the
- destination object. This indicates that a connection will be made between
- the two objects when you release the mouse button.
-
- You can abandon the connection at any point while you are dragging the
- connection path by pressing \key{Esc}.
-
- \target MakingAConnection
- \table
- \row
- \i \inlineimage designer-connection-making.png
- \i \bold{Making a Connection}
-
- The connection path will change its shape as the cursor moves around
- the form. As it passes over objects, they are highlighted, indicating
- that they can be used in a signal and slot connection. Release the
- mouse button to make the connection.
- \endtable
-
- The \gui{Configure Connection} dialog (below) is displayed, showing signals
- from the source object and slots from the destination object that you can
- use.
-
- \image designer-connection-dialog.png
-
- To complete the connection, select a signal from the source object and a
- slot from the destination object, then click \key OK. Click \key Cancel if
- you wish to abandon the connection.
-
- \note If the \gui{Show all signals and slots} checkbox is selected, all
- available signals from the source object will be shown. Otherwise, the
- signals and slots inherited from QWidget will be hidden.
-
- You can make as many connections as you like between objects on the form;
- it is possible to connect signals from objects to slots in the form itself.
- As a result, the signal and slot connections in many dialogs can be
- completely configured from within \QD.
-
- \target ConnectingToTheForm
- \table
- \row
- \i \inlineimage designer-connection-to-form.png
- \i \bold{Connecting to a Form}
-
- To connect an object to the form itself, simply position the cursor
- over the form and release the mouse button. The end point of the
- connection changes to the electrical "ground" symbol.
- \endtable
-
-
- \section1 Editing and Deleting Connections
-
- By default, connection paths are created with two labels that show the
- signal and slot involved in the connection. These labels are usually
- oriented along the line of the connection. You can move them around inside
- their host widgets by dragging the red square at each end of the connection
- path.
-
- \target ConnectionEditor
- \table
- \row
- \i \inlineimage designer-connection-editor.png
- \i \bold{The Signal/Slot Editor}
-
- The signal and slot used in a connection can be changed after it has
- been set up. When a connection is configured, it becomes visible in
- \QD's signal and slot editor where it can be further edited. You can
- also edit signal/slot connections by double-clicking on the connection
- path or one of its labels to display the Connection Dialog.
- \endtable
-
- \target DeletingConnections
- \table
- \row
- \i \inlineimage designer-connection-editing.png
- \i \bold{Deleting Connections}
-
- The whole connection can be selected by clicking on any of its path
- segments. Once selected, a connection can be deleted with the
- \key Delete key, ensuring that it will not be set up in the UI
- file.
- \endtable
-*/
-
-
-/*!
- \page designer-buddy-mode.html
- \contentspage{Qt Designer Manual}{Contents}
- \previouspage Qt Designer's Signals and Slots Editing Mode
- \nextpage Qt Designer's Tab Order Editing Mode
-
- \title Qt Designer's Buddy Editing Mode
-
- \image designer-buddy-mode.png
-
- One of the most useful basic features of Qt is the support for buddy
- widgets. A buddy widget accepts the input focus on behalf of a QLabel when
- the user types the label's shortcut key combination. The buddy concept is
- also used in Qt's \l{Model/View Programming}{model/view} framework.
-
-
- \section1 Linking Labels to Buddy Widgets
-
- To enter buddy editing mode, open the \gui Edit menu and select
- \gui{Edit Buddies}. This mode presents the widgets on the form in a similar
- way to \l{Qt Designer's Signals and Slots Editing Mode}{signals and slots
- editing mode} but in this mode, connections must start at label widgets.
- Ideally, you should connect each label widget that provides a shortcut with
- a suitable input widget, such as a QLineEdit.
-
-
- \target MakingBuddies
- \table
- \row
- \i \inlineimage designer-buddy-making.png
- \i \bold{Making Buddies}
-
- To define a buddy widget for a label, click on the label, drag the
- connection to another widget on the form, and release the mouse button.
- The connection shown indicates how input focus is passed to the buddy
- widget. You can use the form preview to test the connections between
- each label and its buddy.
- \endtable
-
-
- \section1 Removing Buddy Connections
-
- Only one buddy widget can be defined for each label. To change the buddy
- used, it is necessary to delete any existing buddy connection before you
- create a new one.
-
- Connections between labels and their buddy widgets can be deleted in the
- same way as signal-slot connections in signals and slots editing mode:
- Select the buddy connection by clicking on it and press the \key Delete
- key. This operation does not modify either the label or its buddy in any
- way.
-*/
-
-
-/*!
- \page designer-tab-order.html
- \contentspage {Qt Designer Manual}{Contents}
- \previouspage Qt Designer's Buddy Editing Mode
- \nextpage Using Containers in Qt Designer
-
- \title Qt Designer's Tab Order Editing Mode
-
- \image designer-tab-order-mode.png
-
- Many users expect to be able to navigate between widgets and controls
- using only the keyboard. Qt lets the user navigate between input widgets
- with the \key Tab and \key{Shift+Tab} keyboard shortcuts. The default
- \e{tab order} is based on the order in which widgets are constructed.
- Although this order may be sufficient for many users, it is often better
- to explicitly specify the tab order to make your application easier to
- use.
-
-
- \section1 Setting the Tab Order
-
- To enter tab order editing mode, open the \gui Edit menu and select
- \gui{Edit Tab Order}. In this mode, each input widget in the form is shown
- with a number indicating its position in the tab order. So, if the user
- gives the first input widget the input focus and then presses the tab key,
- the focus will move to the second input widget, and so on.
-
- The tab order is defined by clicking on each of the numbers in the correct
- order. The first number you click will change to red, indicating the
- currently edited position in the tab order chain. The widget associated
- with the number will become the first one in the tab order chain. Clicking
- on another widget will make it the second in the tab order, and so on.
-
- Repeat this process until you are satisfied with the tab order in the form
- -- you do not need to click every input widget if you see that the
- remaining widgets are already in the correct order. Numbers, for which you
- already set the order, change to green, while those which are not clicked
- yet, remain blue.
-
- If you make a mistake, simply double click outside of any number or choose
- \gui{Restart} from the form's context menu to start again. If you have many
- widgets on your form and would like to change the tab order in the middle or
- at the end of the tab order chain, you can edit it at any position. Press
- \key{Ctrl} and click the number from which you want to start.
- Alternatively, choose \gui{Start from Here} in the context menu.
-
-*/
-
-
-/*!
- \page designer-using-containers.html
- \contentspage {Qt Designer Manual}{Contents}
- \previouspage Qt Designer's Tab Order Editing Mode
- \nextpage Creating Main Windows in Qt Designer
-
-
- \title Using Containers in Qt Designer
-
- Container widgets provide high level control over groups of objects on a
- form. They can be used to perform a variety of functions, such as managing
- input widgets, providing paged and tabbed layouts, or just acting as
- decorative containers for other objects.
-
- \image designer-widget-morph.png
-
- \QD provides visual feedback to help you place objects inside your
- containers. When you drag an object from the widget box (or elsewhere) on
- the form, each container will be highlighted when the cursor is positioned
- over it. This indicates that you can drop the object inside, making it a
- child object of the container. This feedback is important because it is
- easy to place objects close to containers without actually placing them
- inside. Both widgets and spacers can be used inside containers.
-
- Stacked widgets, tab widgets, and toolboxes are handled specially in \QD.
- Normally, when adding pages (tabs, pages, compartments) to these containers
- in your own code, you need to supply existing widgets, either as
- placeholders or containing child widgets. In \QD, these are automatically
- created for you, so you can add child objects to each page straight away.
-
- Each container typically allows its child objects to be arranged in one or
- more layouts. The type of layout management provided depends on each
- container, although setting the layout is usually just a matter of
- selecting the container by clicking it, and applying a layout. The table
- below shows a list of available containers.
-
- \table
- \row
- \i \inlineimage designer-containers-frame.png
- \i \bold Frames
-
- Frames are used to enclose and group widgets, as well as to provide
- decoration. They are used as the foundation for more complex
- containers, but they can also be used as placeholders in forms.
-
- The most important properties of frames are \c frameShape,
- \c frameShadow, \c lineWidth, and \c midLineWidth. These are described
- in more detail in the QFrame class description.
-
- \row
- \i \inlineimage designer-containers-groupbox.png
- \i \bold{Group Boxes}
-
- Group boxes are usually used to group together collections of
- checkboxes and radio buttons with similar purposes.
-
- Among the significant properties of group boxes are \c title, \c flat,
- \c checkable, and \c checked. These are demonstrated in the
- \l{widgets/groupbox}{Group Box} example, and described in the QGroupBox
- class documentation. Each group box can contain its own layout, and
- this is necessary if it contains other widgets. To add a layout to the
- group box, click inside it and apply the layout as usual.
-
- \row
- \i \inlineimage designer-containers-stackedwidget.png
- \i \bold{Stacked Widgets}
-
- Stacked widgets are collections of widgets in which only the topmost
- layer is visible. Control over the visible layer is usually managed by
- another widget, such as combobox, using signals and slots.
-
- \QD shows arrows in the top-right corner of the stack to allow you to
- see all the widgets in the stack when designing it. These arrows do not
- appear in the preview or in the final component. To navigate between
- pages in the stack, select the stacked widget and use the
- \gui{Next Page} and \gui{Previous Page} entries from the context menu.
- The \gui{Insert Page} and \gui{Delete Page} context menu options allow
- you to add and remove pages.
-
- \row
- \i \inlineimage designer-containers-tabwidget.png
- \i \bold{Tab Widgets}
-
- Tab widgets allow the developer to split up the contents of a widget
- into different labelled sections, only one of which is displayed at any
- given time. By default, the tab widget contains two tabs, and these can
- be deleted or renamed as required. You can also add additional tabs.
-
- To delete a tab:
- \list
- \o Click on its label to make it the current tab.
- \o Select the tab widget and open its context menu.
- \o Select \gui{Delete Page}.
- \endlist
-
- To add a new tab:
- \list
- \o Select the tab widget and open its context menu.
- \o Select \gui{Insert Page}.
- \o You can add a page before or after the \e current page. \QD
- will create a new widget for that particular tab and insert it
- into the tab widget.
- \o You can set the title of the current tab by changing the
- \c currentTabText property in the \gui{Property Editor}.
- \endlist
-
- \row
- \i \inlineimage designer-containers-toolbox.png
- \i \bold{ToolBox Widgets}
-
- Toolbox widgets provide a series of pages or compartments in a toolbox.
- They are handled in a way similar to stacked widgets.
-
- To rename a page in a toolbox, make the toolbox your current pange and
- change its \c currentItemText property from the \gui{Property Editor}.
-
- To add a new page, select \gui{Insert Page} from the toolbox widget's
- context menu. You can add the page before or after the current page.
-
- To delete a page, select \gui{Delete Page} from the toolbox widget's
- context menu.
-
- \row
- \i \inlineimage designer-containers-dockwidget.png
- \i \bold{Dock Widgets}
-
- Dock widgets are floating panels, often containing input widgets and
- more complex controls, that are either attached to the edges of the
- main window in "dock areas", or floated as independent tool windows.
-
- Although dock widgets can be added to any type of form, they are
- typically used with forms created from the
- \l{Creating Main Windows in Qt Designer}{main window template}.
-
- \endtable
-*/
-
-
-/*!
- \page designer-creating-mainwindows.html
- \contentspage {Qt Designer Manual}{Contents}
- \previouspage Using Containers in Qt Designer
- \nextpage Editing Resources with Qt Designer
-
- \title Creating Main Windows in Qt Designer
-
- \QD can be used to create user interfaces for different purposes, and
- it provides different kinds of form templates for each user interface. The
- main window template is used to create application windows with menu bars,
- toolbars, and dock widgets.
-
- \omit
- \image designer-mainwindow-example.png
- \endomit
-
- Create a new main window by opening the \gui File menu and selecting the
- \gui{New Form...} option, or by pressing \key{Ctrl+N}. Then, select the
- \gui{Main Window} template. This template provides a main application
- window containing a menu bar and a toolbar by default -- these can be
- removed if they are not required.
-
- If you remove the menu bar, a new one can be created by selecting the
- \gui{Create Menu Bar} option from the context menu, obtained by
- right-clicking within the main window form.
-
- An application can have only \bold one menu bar, but \bold several
- toolbars.
-
-
- \section1 Menus
-
- Menus are added to the menu bar by modifying the \gui{Type Here}
- placeholders. One of these is always present for editing purposes, and
- will not be displayed in the preview or in the finished window.
-
- Once created, the properties of a menu can be accessed using the
- \l{Qt Designer's Widget Editing Mode#The Property Editor}{Property Editor},
- and each menu can be accessed for this purpose via the
- \l{Qt Designer's Widget Editing Mode#The Object Inspector}{The Object Inspector}.
-
- Existing menus can be removed by opening a context menu over the label in
- the menu bar, and selecting \gui{Remove Menu 'menu_name'}.
-
-
- \target CreatingAMenu
- \table
- \row
- \i \inlineimage designer-creating-menu1.png
- \i \inlineimage designer-creating-menu2.png
- \i \bold{Creating a Menu}
-
- Double-click the placeholder item to begin editing. The menu text,
- displayed using a line edit, can be modified.
-
- \row
- \i \inlineimage designer-creating-menu3.png
- \i \inlineimage designer-creating-menu4.png
- \i Insert the required text for the new menu. Inserting an
- ampersand character (&) causes the letter following it to be
- used as a mnemonic for the menu.
-
- Press \key Return or \key Enter to accept the new text, or press
- \key Escape to reject it. You can undo the editing operation later if
- required.
- \endtable
-
- Menus can also be rearranged in the menu bar simply by dragging and
- dropping them in the preferred location. A vertical red line indicates the
- position where the menu will be inserted.
-
- Menus can contain any number of entries and separators, and can be nested
- to the required depth. Adding new entries to menus can be achieved by
- navigating the menu structure in the usual way.
-
- \target CreatingAMenuEntry
- \table
- \row
- \i \inlineimage designer-creating-menu-entry1.png
- \i \inlineimage designer-creating-menu-entry2.png
- \i \bold{Creating a Menu Entry}
-
- Double-click the \gui{new action} placeholder to begin editing, or
- double-click \gui{new separator} to insert a new separator line after
- the last entry in the menu.
-
- The menu entry's text is displayed using a line edit, and can be
- modified.
-
- \row
- \i \inlineimage designer-creating-menu-entry3.png
- \i \inlineimage designer-creating-menu-entry4.png
- \i Insert the required text for the new entry, optionally using
- the ampersand character (&) to mark the letter to use as a
- mnemonic for the entry.
-
- Press \key Return or \key Enter to accept the new text, or press
- \key Escape to reject it. The action created for this menu entry will
- be accessible via the \l{#TheActionEditor}{Action Editor}, and any
- associated keyboard shortcut can be set there.
- \endtable
-
- Just like with menus, entries can be moved around simply by dragging and
- dropping them in the preferred location. When an entry is dragged over a
- closed menu, the menu will open to allow it to be inserted there. Since
- menu entries are based on actions, they can also be dropped onto toolbars,
- where they will be displayed as toolbar buttons.
-
-
- \section1 Toolbars
-
-
- ### SCREENSHOT
-
- Toolbars ared added to a main window in a similar way to the menu bar:
- Select the \gui{Add Tool Bar} option from the form's context menu.
- Alternatively, if there is an existing toolbar in the main window, you can
- click the arrow on its right end to create a new toolbar.
-
- Toolbar buttons are created using the action system to populate each
- toolbar, rather than by using specific button widgets from the widget box.
- Since actions can be represented by menu entries and toolbar buttons, they
- can be moved between menus and toolbars. To share an action between a menu
- and a toolbar, drag its icon from the \l{#TheActionEditor}{Action Editor}
- to the toolbar rather than from the menu where its entry is located.
-
- New actions for menus and toolbars can be created in the
- \l{#TheActionEditor}{Action Editor}.
-
-
- \section1 Actions
-
- With the menu bar and the toolbars in place, it's time to populate them
- with action: \QD provides an action editor to simplify the creation and
- management of actions.
-
-
- \target TheActionEditor
- \table
- \row
- \i \inlineimage designer-action-editor.png
- \i \bold{The Action Editor}
-
- Enable the action editor by opening the \gui Tools menu, and switching
- on the \gui{Action Editor} option.
-
- The action editor allows you to create \gui New actions and \gui Delete
- actions. It also provides a search function, \gui Filter, using the
- action's text.
-
- \QD's action editor can be viewed in the classic \gui{Icon View} and
- \gui{Detailed View}. The screenshot below shows the action editor in
- \gui{Detailed View}. You can also copy and paste actions between menus,
- toolbars and forms.
- \endtable
-
- To create an action, use the action editor's \gui New button, which will
- then pop up an input dialog. Provide the new action with a \gui Text --
- this is the text that will appear in a menu entry and as the action's
- tooltip. The text is also automatically added to an "action" prefix,
- creating the action's \gui{Object Name}.
-
- In addition, the dialog provides the option of selecting an \gui Icon for
- the action, as well as removing the current icon.
-
- Once the action is created, it can be used wherever actions are applicable.
-
-
- \target AddingAnAction
- \table
- \row
- \i \inlineimage designer-adding-menu-action.png
- \i \inlineimage designer-adding-toolbar-action.png
- \i \bold{Adding an Action}
-
- To add an action to a menu or a toolbar, simply press the left mouse
- button over the action in the action editor, and drag it to the
- preferred location.
-
- \QD provides highlighted guide lines that tell you where the action
- will be added. Release the mouse button to add the action when you have
- found the right spot.
- \endtable
-
-
- \section1 Dock Widgets
-
- Since dock widgets are \l{Using Containers in Qt Designer}
- {container widgets}, they can be added to a form in the usuasl way. Once
- added to a form, dock widgets are not placed in any particular dock area by
- default; you need to set the \gui{docked} property to true for each widget
- and choose an appropriate value for its \gui{dockWidgetArea} property.
-
- \target AddingADockWidget
- \table
- \row
- \i \inlineimage designer-adding-dockwidget.png
- \i \bold{Adding a Dock Widget}
-
- To add a dock widget, simply drag one from the \gui Containers section
- of the widget box, and drop it onto the main form area. Just like other
- widgets, its properties can be modified with the \gui{Property Editor}.
-
- Dock widgets can be optionally floated as indpendent tool windows.
- Hence, it is useful to give them window titles by setting their
- \gui{windowTitle} property. This also helps to identify them on the
- form.
-
- \endtable
-*/
-
-
-/*!
- \page designer-resources.html
- \contentspage {Qt Designer Manual}{Contents}
- \previouspage Creating Main Windows in Qt Designer
- \nextpage Using Stylesheets with Qt Designer
-
- \title Editing Resources with Qt Designer
-
- \image designer-resources-editing.png
-
- \QD fully supports the \l{The Qt Resource System}{Qt Resource System},
- enabling resources to be specified together with forms as they are
- designed. To aid designers and developers manage resources for their
- applications, \QD's resource editor allows resources to be defined on a
- per-form basis. In other words, each form can have a separate resource
- file.
-
- \section1 Defining a Resource File
-
- To specify a resource file you must enable the resource editor by opening
- the \gui Tools menu, and switching on the \gui{Resource Browser} option.
-
- \target ResourceFiles
- \table
- \row
- \i \inlineimage designer-resource-browser.png
- \i \bold{Resource Files}
-
- Within the resource browser, you can open existing resource files or
- create new ones. Click the \gui{Edit Resources} button
- \inlineimage designer-edit-resources-button.png
- to edit your resources. To reload resources, click on the \gui Reload
- button
- \inlineimage designer-reload-resources-button.png
- .
- \endtable
-
-
- Once a resource file is loaded, you can create or remove entries in it
- using the given \gui{Add Files}
- \inlineimage designer-add-resource-entry-button.png
- and \gui{Remove Files}
- \inlineimage designer-remove-resource-entry-button.png
- buttons, and specify resources (e.g., images) using the \gui{Add Files}
- button
- \inlineimage designer-add-files-button.png
- . Note that these resources must reside within the current resource file's
- directory or one of its subdirectories.
-
-
- \target EditResource
- \table
- \row
- \i \inlineimage designer-edit-resource.png
- \i \bold{Editing Resource Files}
-
- Press the
- \inlineimage designer-add-resource-entry-button.png
- button to add a new resource entry to the file. Then use the
- \gui{Add Files} button
- \inlineimage designer-add-files-button.png
- to specify the resource.
-
- You can remove resources by selecting the corresponding entry in the
- resource editor, and pressing the
- \inlineimage designer-remove-resource-entry-button.png
- button.
- \endtable
-
-
- \section1 Using the Resources
-
- Once the resources are defined you can use them actively when composing
- your form. For example, you might want to create a tool button using an
- icon specified in the resource file.
-
- \target UsingResources
- \table
- \row
- \i \inlineimage designer-resources-using.png
- \i \bold{Using Resources}
-
- When changing properties with values that may be defined within a
- resource file, \QD's property editor allows you to specify a resource
- in addition to the option of selecting a source file in the ordinary
- way.
-
- \row
- \i \inlineimage designer-resource-selector.png
- \i \bold{Selecting a Resource}
-
- You can open the resource selector by clicking \gui{Choose Resource...}
- to add resources any time during the design process.
-
-\omit
-... check with Friedemann
-To quickly assign icon pixmaps to actions or pixmap properties, you may
-drag the pixmap from the resource editor to the action editor, or to the
-pixmap property in the property editor.
-\endomit
-
- \endtable
-*/
-
-
-/*!
- \page designer-stylesheet.html
- \contentspage {Qt Designer Manual}{Contents}
- \previouspage Editing Resources with Qt Designer
- \nextpage Using a Designer UI File in Your Application
-
- \title Using Stylesheets with Qt Designer
-
- Since Qt 4.2, it is possible to edit stylesheets in \QD with the stylesheet
- editor.
-
- \target UsingStylesheets
- \table
- \row
- \i \inlineimage designer-stylesheet-options.png
- \bold{Setting a Stylesheet}
-
- The stylesheet editor can be accessed by right-clicking a widget
- and selecting \gui{Change styleSheet...}
-
- \row
- \i \inlineimage designer-stylesheet-usage.png
- \endtable
-
-*/
-
-
-/*!
- \page designer-using-a-ui-file.html
- \previouspage Using Stylesheets with Qt Designer
- \contentspage {Qt Designer Manual}{Contents}
- \nextpage Using Custom Widgets with Qt Designer
-
- \title Using a Designer UI File in Your Application
-
- With Qt's integrated build tools, \l{qmake Manual}{qmake} and \l uic, the
- code for user interface components created with \QD is automatically
- generated when the rest of your application is built. Forms can be included
- and used directly from your application. Alternatively, you can use them to
- extend subclasses of standard widgets. These forms can be processed at
- compile time or at run time, depending on the approach used.
-
-
- \tableofcontents
- \section1 Compile Time Form Processing
-
- A compile time processed form can be used in your application with one of
- the following approaches:
-
- \list
- \o The Direct Approach: you construct a widget to use as a placeholder
- for the component, and set up the user interface inside it.
- \o The Single Inheritance Approach: you subclass the form's base class
- (QWidget or QDialog, for example), and include a private instance
- of the form's user interface object.
- \o The MultipleInheritance Approach: you subclass both the form's base
- class and the form's user interface object. This allows the widgets
- defined in the form to be used directly from within the scope of
- the subclass.
- \endlist
-
-
- \section2 The Direct Approach
-
- To demonstrate how to use user interface (UI) files straight from
- \QD, we create a simple Calculator Form application. This is based on the
- original \l{Calculator Form Example}{Calculator Form} example.
-
- The application consists of one source file, \c main.cpp and a UI
- file.
-
- The \c{calculatorform.ui} file designed with \QD is shown below:
-
- \image directapproach-calculatorform.png
-
- We will use \c qmake to build the executable, so we need to write a
- \c{.pro} file:
-
- \snippet doc/src/snippets/uitools/calculatorform/calculatorform.pro 0
-
- The special feature of this file is the \c FORMS declaration that tells
- \c qmake which files to process with \c uic. In this case, the
- \c calculatorform.ui file is used to create a \c ui_calculatorform.h file
- that can be used by any file listed in the \c SOURCES declaration. To
- ensure that \c qmake generates the \c ui_calculatorform.h file, we need to
- include it in a file listed in \c SOURCES. Since we only have \c main.cpp,
- we include it there:
-
- \snippet doc/src/snippets/uitools/calculatorform/main.cpp 0
-
- This include is an additional check to ensure that we do not generate code
- for UI files that are not used.
-
- The \c main function creates the calculator widget by constructing a
- standard QWidget that we use to host the user interface described by the
- \c calculatorform.ui file.
-
- \snippet doc/src/snippets/uitools/calculatorform/main.cpp 1
-
- In this case, the \c{Ui::CalculatorForm} is an interface description object
- from the \c ui_calculatorform.h file that sets up all the dialog's widgets
- and the connections between its signals and slots.
-
- This approach provides a quick and easy way to use simple, self-contained
- components in your applications, but many componens created with \QD will
- require close integration with the rest of the application code. For
- instance, the \c CalculatorForm code provided above will compile and run,
- but the QSpinBox objects will not interact with the QLabel as we need a
- custom slot to carry out the add operation and display the result in the
- QLabel. To achieve this, we need to subclass a standard Qt widget (known as
- the single inheritance approach).
-
-
- \section2 The Single Inheritance Approach
-
- In this approach, we subclass a Qt widget and set up the user interface
- from within the constructor. Components used in this way expose the widgets
- and layouts used in the form to the Qt widget subclass, and provide a
- standard system for making signal and slot connections between the user
- interface and other objects in your application.
-
- This approach is used in the \l{Calculator Form Example}{Calculator Form}
- example.
-
- To ensure that we can use the user interface, we need to include the header
- file that \c uic generates before referring to \c{Ui::CalculatorForm}:
-
- \snippet examples/designer/calculatorform/calculatorform.h 0
-
- This means that the \c{.pro} file must be updated to include
- \c{calculatorform.h}:
-
- \snippet examples/designer/calculatorform/calculatorform.pro 0
-
- The subclass is defined in the following way:
-
- \snippet examples/designer/calculatorform/calculatorform.h 1
-
- The important feature of the class is the private \c ui object which
- provides the code for setting up and managing the user interface.
-
- The constructor for the subclass constructs and configures all the widgets
- and layouts for the dialog just by calling the \c ui object's \c setupUi()
- function. Once this has been done, it is possible to modify the user
- interface as needed.
-
- \snippet examples/designer/calculatorform/calculatorform.cpp 0
-
- We can connect signals and slots in user interface widgets in the usual
- way, taking care to prefix the \c ui object to each widget used.
-
- The advantages of this approach are its simple use of inheritance to
- provide a QWidget-based interface, and its encapsulation of the user
- interface widget variables within the \c ui data member. We can use this
- method to define a number of user interfaces within the same widget, each
- of which is contained within its own namespace, and overlay (or compose)
- them. This approach can be used to create individual tabs from existing
- forms, for example.
-
-
- \section2 The Multiple Inheritance Approach
-
- Forms created with \QD can be subclassed together with a standard
- QWidget-based class. This approach makes all the user interface components
- defined in the form directly accessible within the scope of the subclass,
- and enables signal and slot connections to be made in the usual way with
- the \l{QObject::connect()}{connect()} function.
-
- This approach is used in the \l{Multiple Inheritance Example}
- {Multiple Inheritance} example.
-
- We need to include the header file that \c uic generates from the
- \c calculatorform.ui file:
-
- \snippet examples/uitools/multipleinheritance/calculatorform.h 0
-
- The class is defined in a similar way to the one used in the
- \l{The Single Inheritance Approach}{single inheritance approach}, except that
- this time we inherit from \e{both} QWidget and \c{Ui::CalculatorForm}:
-
- \snippet examples/uitools/multipleinheritance/calculatorform.h 1
-
- We inherit \c{Ui::CalculatorForm} privately to ensure that the user
- interface objects are private in our subclass. We can also inherit it with
- the \c public or \c protected keywords in the same way that we could have
- made \c ui public or protected in the previous case.
-
- The constructor for the subclass performs many of the same tasks as the
- constructor used in the \l{The Single Inheritance Approach}
- {single inheritance} example:
-
- \snippet examples/uitools/multipleinheritance/calculatorform.cpp 0
-
- In this case, the widgets used in the user interface can be accessed in the
- same say as a widget created in code by hand. We no longer require the
- \c{ui} prefix to access them.
-
- Subclassing using multiple inheritance gives us more direct access to the
- contents of the form, is slightly cleaner than the single inheritance
- approach, but does not conveniently support composition of multiple user
- interfaces.
-
-
- \section1 Run Time Form Processing
-
- Alternatively, forms can be processed at run time, producing dynamically-
- generated user interfaces. This can be done using the QtUiTools module
- that provides the QUiLoader class to handle forms created with \QD.
-
-
- \section2 The UiTools Approach
-
- A resource file containing a UI file is required to process forms at
- run time. Also, the application needs to be configured to use the QtUiTools
- module. This is done by including the following declaration in a \c qmake
- project file, ensuring that the application is compiled and linked
- appropriately.
-
- \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 0
-
- The QUiLoader class provides a form loader object to construct the user
- interface. This user interface can be retrieved from any QIODevice, e.g.,
- a QFile object, to obtain a form stored in a project's resource file. The
- QUiLoader::load() function constructs the form widget using the user
- interface description contained in the file.
-
- The QtUiTools module classes can be included using the following directive:
-
- \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 1
-
- The QUiLoader::load() function is invoked as shown in this code from the
- \l{Text Finder Example}{Text Finder} example:
-
- \snippet examples/uitools/textfinder/textfinder.cpp 4
-
- In a class that uses QtUiTools to build its user interface at run time, we
- can locate objects in the form using qFindChild(). For example, in the
- follownig code, we locate some components based on their object names and
- widget types:
-
- \snippet examples/uitools/textfinder/textfinder.cpp 1
-
- Processing forms at run-time gives the developer the freedom to change a
- program's user interface, just by changing the UI file. This is useful
- when customizing programs to suit various user needs, such as extra large
- icons or a different colour scheme for accessibility support.
-
-
- \section1 Automatic Connections
-
- The signals and slots connections defined for compile time or run time
- forms can either be set up manually or automatically, using QMetaObject's
- ability to make connections between signals and suitably-named slots.
-
- Generally, in a QDialog, if we want to process the information entered by
- the user before accepting it, we need to connect the clicked() signal from
- the \gui OK button to a custom slot in our dialog. We will first show an
- example of the dialog in which the slot is connected by hand then compare
- it with a dialog that uses automatic connection.
-
-
- \section2 A Dialog Without Auto-Connect
-
- We define the dialog in the same way as before, but now include a slot in
- addition to the constructor:
-
- \snippet doc/src/snippets/designer/noautoconnection/imagedialog.h 0
-
- The \c checkValues() slot will be used to validate the values provided by
- the user.
-
- In the dialog's constructor we set up the widgets as before, and connect
- the \gui Cancel button's \l{QPushButton::clicked()}{clicked()} signal to
- the dialog's reject() slot. We also disable the
- \l{QPushButton::autoDefault}{autoDefault} property in both buttons to
- ensure that the dialog does not interfere with the way that the line edit
- handles return key events:
-
- \snippet doc/src/snippets/designer/noautoconnection/imagedialog.cpp 0
- \dots
- \snippet doc/src/snippets/designer/noautoconnection/imagedialog.cpp 1
-
- We connect the \gui OK button's \l{QPushButton::clicked()}{clicked()}
- signal to the dialog's checkValues() slot which we implement as follows:
-
- \snippet doc/src/snippets/designer/noautoconnection/imagedialog.cpp 2
-
- This custom slot does the minimum necessary to ensure that the data
- entered by the user is valid - it only accepts the input if a name was
- given for the image.
-
- \section2 Widgets and Dialogs with Auto-Connect
-
- Although it is easy to implement a custom slot in the dialog and connect
- it in the constructor, we could instead use QMetaObject's auto-connection
- facilities to connect the \gui OK button's clicked() signal to a slot in
- our subclass. \c{uic} automatically generates code in the dialog's
- \c setupUi() function to do this, so we only need to declare and
- implement a slot with a name that follows a standard convention:
-
- \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 2
-
- Using this convention, we can define and implement a slot that responds to
- mouse clicks on the \gui OK button:
-
- \snippet doc/src/snippets/designer/autoconnection/imagedialog.h 0
-
- Another example of automatic signal and slot connection would be the
- \l{Text Finder Example}{Text Finder} with its \c{on_findButton_clicked()}
- slot.
-
- We use QMetaObject's system to enable signal and slot connections:
-
- \snippet examples/uitools/textfinder/textfinder.cpp 2
-
- This enables us to implement the slot, as shown below:
-
- \snippet examples/uitools/textfinder/textfinder.cpp 6
- \dots
- \snippet examples/uitools/textfinder/textfinder.cpp 8
-
- Automatic connection of signals and slots provides both a standard naming
- convention and an explicit interface for widget designers to work to. By
- providing source code that implements a given interface, user interface
- designers can check that their designs actually work without having to
- write code themselves.
-*/
-
-
-/*!
- \page designer-customizing-forms.html
- \contentspage {Qt Designer Manual}{Contents}
- \previouspage Using Stylesheets with Qt Designer
- \nextpage Using Custom Widgets with Qt Designer
-
- \title Customizing Qt Designer Forms
-
- \image designer-form-settings.png
-
- When saving a form in \QD, it is stored as a UI file. Several form
- settings, for example the grid settings or the margin and spacing for the
- default layout, are stored along with the form's components. These settings
- are used when the \l uic generates the form's C++ code. For more
- information on how to use forms in your application, see the
- \l{Using a Designer UI File in Your Application} section.
-
-
- \section1 Modifying the Form Settings
-
- To modify the form settings, open the \gui Form menu and select \gui{Form
- Settings...}
-
- In the forms settings dialog you can specify the \gui Author of the form.
-
- You can also alter the margin and spacing properties for the form's default
- layout (\gui {Layout Default}). These default layout properties will be
- replaced by the corresponding \gui {Layout Function}, if the function is
- specified, when \c uic generates code for the form. The form settings
- dialog lets you specify functions for both the margin and the spacing.
-
- \target LayoutFunction
- \table
- \row
- \i \inlineimage designer-form-layoutfunction.png
- \i \bold{Layout Function}
-
- The default layout properties will be replaced by the corresponding
- \gui{Layout Function}, when \c uic generates code for the form. This is
- useful when different environments requires different layouts for the same
- form.
-
- To specify layout functions for the form's margin and spacing, check the
- \gui{Layout Function} group box to enable the line edits.
- \endtable
-
- You can also specify the form's \gui{Include Hints}; i.e., provide a list
- of the header files which will then be included in the form window's
- associated UI file. Header files may be local, i.e., relative to the
- project's directory, \c "mywidget.h", or global, i.e. part of Qt or the
- compilers standard libraries: \c <QtGui/QWidget>.
-
- Finally, you can specify the function used to load pixmaps into the form
- window (the \gui {Pixmap Function}).
-*/
-
-
-/*!
- \page designer-using-custom-widgets.html
- \contentspage {Qt Designer Manual}{Contents}
- \previouspage Customizing Qt Designer Forms
- \nextpage Creating Custom Widgets for Qt Designer
-
- \title Using Custom Widgets with Qt Designer
-
- \QD can display custom widgets through its extensible plugin mechanism,
- allowing the range of designable widgets to be extended by the user and
- third parties. This feature also allows \QD to optionally support
- \l{Qt3Support}{Qt 3 compatibility widgets}. Alternatively, it is possible
- to use existing widgets as placeholders for widget classes that provide
- similar APIs.
-
- Widgets from the Qt3Support library are made available via in \QD's support
- for custom widgets.
-
-
- \section1 Handling Custom Widgets
-
- Although \QD supports all of the standard Qt widgets, and can be configured
- to handle widgets supplied in the Qt3Support library, some specialized
- widgets may not be available as standard for a number of reasons:
-
- \list
- \i Custom widgets may not be available at the time the user interface
- is being designed.
- \i Custom widgets may be platform-specific, and designers may be
- developing the user interface on a different platform to end users.
- \i The source code for a custom widget is not available, or the user
- interface designers are unable to use the widget for non-technical
- reasons.
- \endlist
-
- In the above situations, it is still possible to design forms with the aim
- of using custom widgets in the application. To achieve this, we can use
- the widget promotion feature of \QD.
-
- In all other cases, where the source code to the custom widgets is
- available, we can adapt the custom widget for use with \QD.
-
-
- \section2 Promoting Widgets
-
- \image designer-promoting-widgets.png
-
- If some forms must be designed, but certain custom widgets are unavailble
- to the designer, we can substitute similar widgets to represent the missing
- widgets. For example, we might represent instances of a custom push button
- class, \c MyPushButton, with instances of QPushButton and promote these to
- \c MyPushButton so that \l{uic.html}{uic} generates suitable code for this
- missing class.
-
- When choosing a widget to use as a placeholder, it is useful to compare the
- API of the missing widget with those of standard Qt widgets. For
- specialized widgets that subclass standard classes, the obvious choice of
- placeholder is the base class of the custom widget; for example, QSlider
- might be used for specialized QSlider subclasses.
-
- For specialized widgets that do not share a common API with standard Qt
- widgets, it is worth considering adapting a custom widget for use in \QD.
- If this is not possible then QWidget is the obvious choice for a
- placeholder widget since it is the lowest common denominator for all
- widgets.
-
- To add a placeholder, select an object of a suitable base class and choose
- \gui{Promote to ...} from the form's context menu. After entering the class
- name and header file in the lower part of the dialog, choose \gui{Add}. The
- placeholder class will now appear along with the base class in the upper
- list. Click the \gui{Promote} button to accept this choice.
-
- Now, when the form's context menu is opened over objects of the base class,
- the placeholder class will appear in the \gui{Promote to} submenu, allowing
- for convenient promotion of objects to that class.
-
- A promoted widget can be reverted to its base class by choosing
- \gui{Demote to} from the form's context menu.
-
-
- \section2 User Defined Custom Widgets
-
- \image worldtimeclockplugin-example.png
-
- Custom widgets can be adapted for use with \QD, giving designers the
- opportunity to configure the user interface using the actual widgets that
- will be used in an application rather than placeholder widgets. The process
- of creating a custom widget plugin is described in the
- \l{Creating Custom Widgets for Qt Designer} chapter of this manual.
-
- To use a plugin created in this way, it is necessary to ensure that the
- plugin is located on a path that \QD searches for plugins. Generally,
- plugins stored in \c{$QTDIR/plugins/designer} will be loaded when \QD
- starts. Further information on building and installing plugins can be found
- \l{Creating Custom Widgets for Qt Designer#BuildingandInstallingthePlugin}
- {here}. You can also refer to the \l{How to Create Qt Plugins}
- {Plugins HOWTO} document for information about creating plugins.
-*/
-
-
-/*!
- \page designer-creating-custom-widgets.html
- \previouspage Using Custom Widgets with Qt Designer
- \contentspage {Qt Designer Manual}{Contents}
- \nextpage Creating Custom Widget Extensions
-
- \title Creating Custom Widgets for Qt Designer
-
- \QD's plugin-based architecture allows user-defined and third party custom
- widgets to be edited just like you do with standard Qt widgets. All of the
- custom widget's features are made available to \QD, including widget
- properties, signals, and slots. Since \QD uses real widgets during the form
- design process, custom widgets will appear the same as they do when
- previewed.
-
- \image worldtimeclockplugin-example.png
-
- The \l QtDesigner module provides you with the ability to create custom
- widgets in \QD.
-
-
- \section1 Getting Started
-
- To integrate a custom widget with \QD, you require a suitable description
- for the widget and an appropriate \c{.pro} file.
-
-
- \section2 Providing an Interface Description
-
- To inform \QD about the type of widget you want to provide, create a
- subclass of QDesignerCustomWidgetInterface that describes the various
- properties your widget exposes. Most of these are supplied by functions
- that are pure virtual in the base class, because only the author of the
- plugin can provide this information.
-
- \table
- \header
- \o Function
- \o Description of the return value
- \row
- \o \c name()
- \o The name of the class that provides the widget.
- \row
- \o \c group()
- \o The group in \QD's widget box that the widget belongs to.
- \row
- \o \c toolTip()
- \o A short description to help users identify the widget in \QD.
- \row
- \o \c whatsThis()
- \o A longer description of the widget for users of \QD.
- \row
- \o \c includeFile()
- \o The header file that must be included in applications that use
- this widget. This information is stored in UI files and will
- be used by \c uic to create a suitable \c{#includes} statement
- in the code it generates for the form containing the custom
- widget.
- \row
- \o \c icon()
- \o An icon that can be used to represent the widget in \QD's
- widget box.
- \row
- \o \c isContainer()
- \o True if the widget will be used to hold child widgets;
- false otherwise.
- \row
- \o \c createWidget()
- \o A QWidget pointer to an instance of the custom widget,
- constructed with the parent supplied.
- \note createWidget() is a factory function responsible for
- creating the widget only. The custom widget's properties will
- not be available until load() returns.
- \row
- \o \c domXml()
- \o A description of the widget's properties, such as its object
- name, size hint, and other standard QWidget properties.
- \row
- \o \c codeTemplate()
- \o This function is reserved for future use by \QD.
- \endtable
-
- Two other virtual functions can also be reimplemented:
-
- \table
- \row
- \o \c initialize()
- \o Sets up extensions and other features for custom widgets. Custom
- container extensions (see QDesignerContainerExtension) and task
- menu extensions (see QDesignerTaskMenuExtension) should be set
- up in this function.
- \row
- \o \c isInitialized()
- \o Returns true if the widget has been initialized; returns false
- otherwise. Reimplementations usually check whether the
- \c initialize() function has been called and return the result
- of this test.
- \endtable
-
-
- \section2 Notes on the \c{domXml()} Function
-
- The \c{domXml()} function returns a UI file snippet that is used by
- \QD's widget factory to create a custom widget and its applicable
- properties.
-
- Since Qt 4.4, \QD's widget box allows for a complete UI file to
- describe \bold one custom widget. The UI file can be loaded using the
- \c{<ui>} tag. Specifying the <ui> tag allows for adding the <customwidget>
- element that contains additional information for custom widgets. The
- \c{<widget>} tag is sufficient if no additional information is required
-
- If the custom widget does not provide a reasonable size hint, it is
- necessary to specify a default geometry in the string returned by the
- \c domXml() function in your subclass. For example, the
- \c AnalogClockPlugin provided by the \l{designer/customwidgetplugin}
- {Custom Widget Plugin} example, defines a default widgetgeometry in the
- following way:
-
- \dots
- \snippet examples/designer/customwidgetplugin/customwidgetplugin.cpp 11
- \dots
-
- An additional feature of the \c domXml() function is that, if it returns
- an empty string, the widget will not be installed in \QD's widget box.
- However, it can still be used by other widgets in the form. This feature
- is used to hide widgets that should not be explicitly created by the user,
- but are required by other widgets.
-
-
- A complete custom widget specification looks like:
-
- \code
-<ui language="c++"> displayname="MyWidget">
- <widget class="widgets::MyWidget" name="mywidget"/>
- <customwidgets>
- <customwidget>
- <class>widgets::MyWidget</class>
- <addpagemethod>addPage</addpagemethod>
- <propertyspecifications>
- <stringpropertyspecification name="fileName" notr="true" type="singleline"
- <stringpropertyspecification name="text" type="richtext"
- </propertyspecifications>
- </customwidget>
- </customwidgets>
-</ui>
- \endcode
-
- Attributes of the \c{<ui>} tag:
- \table
- \header
- \o Attribute
- \o Presence
- \o Values
- \o Comment
- \row
- \o \c{language}
- \o optional
- \o "c++", "jambi"
- \o This attribute specifies the language the custom widget is intended for.
- It is mainly there to prevent C++-plugins from appearing in Qt Jambi.
- \row
- \o \c{displayname}
- \o optional
- \o Class name
- \o The value of the attribute appears in the Widget box and can be used to
- strip away namespaces.
- \endtable
-
- The \c{<addpagemethod>} tag tells \QD and \l uic which method should be used to
- add pages to a container widget. This applies to container widgets that require
- calling a particular method to add a child rather than adding the child by passing
- the parent. In particular, this is relevant for containers that are not a
- a subclass of the containers provided in \QD, but are based on the notion
- of \e{Current Page}. In addition, you need to provide a container extension
- for them.
-
- The \c{<propertyspecifications>} element can contain a list of property meta information.
- Currently, properties of type string are supported. For these properties, the
- \c{<stringpropertyspecification>} tag can be used. This tag has the following attributes:
-
-
- \table
- \header
- \o Attribute
- \o Presence
- \o Values
- \o Comment
- \row
- \o \c{name}
- \o required
- \o Name of the property
- \row
- \o \c{type}
- \o required
- \o See below table
- \o The value of the attribute determines how the property editor will handle them.
- \row
- \o \c{notr}
- \o optional
- \o "true", "false"
- \o If the attribute is "true", the value is not meant to be translated.
- \endtable
-
- Values of the \c{type} attribute of the string property:
-
- \table
- \header
- \o Value
- \o Type
- \row
- \o \c{"richtext"}
- \o Rich text.
- \row
- \o \c{"multiline"}
- \o Multi-line plain text.
- \row
- \o \c{"singleline"}
- \o Single-line plain text.
- \row
- \o \c{"stylesheet"}
- \o A CSS-style sheet.
- \row
- \o \c{"objectname"}
- \o An object name (restricted set of valid characters).
- \row
- \o \c{"url"}
- \o URL, file name.
- \endtable
-
- \section1 Plugin Requirements
-
- In order for plugins to work correctly on all platforms, you need to ensure
- that they export the symbols needed by \QD.
-
- First of all, the plugin class must be exported in order for the plugin to
- be loaded by \QD. Use the Q_EXPORT_PLUGIN2() macro to do this. Also, the
- QDESIGNER_WIDGET_EXPORT macro must be used to define each custom widget class
- within a plugin, that \QD will instantiate.
-
-
- \section1 Creating Well Behaved Widgets
-
- Some custom widgets have special user interface features that may make them
- behave differently to many of the standard widgets found in \QD.
- Specifically, if a custom widget grabs the keyboard as a result of a call
- to QWidget::grabKeyboard(), the operation of \QD will be affected.
-
- To give custom widgets special behavior in \QD, provide an implementation
- of the initialize() function to configure the widget construction process
- for \QD specific behavior. This function will be called for the first time
- before any calls to createWidget() and could perhaps set an internal flag
- that can be tested later when \QD calls the plugin's createWidget()
- function.
-
-
- \target BuildingandInstallingthePlugin
- \section1 Building and Installing the Plugin
-
- \section2 A Simple Plugin
-
- The \l{Custom Widget Plugin Example} demonstrates a simple \QD plugin.
-
- The \c{.pro} file for a plugin must specify the headers and sources for
- both the custom widget and the plugin interface. Typically, this file only
- has to specify that the plugin's project is to be built as a library, but
- with specific plugin support for \QD. This is done with the following
- declarations:
-
- \snippet examples/designer/customwidgetplugin/customwidgetplugin.pro 1
-
- If Qt is configured to build in both debug and release modes, \QD will be
- built in release mode. When this occurs, it is necessary to ensure that
- plugins are also built in release mode. To do this, include the following
- declaration in the plugin's \c{.pro} file:
-
- \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 3
-
- If plugins are built in a mode that is incompatible with \QD, they will
- not be loaded and installed. For more information about plugins, see the
- \l{plugins-howto.html}{Plugins HOWTO} document.
-
- It is also necessary to ensure that the plugin is installed together with
- other \QD widget plugins:
-
- \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 4
-
- The \c $[QT_INSTALL_PLUGINS] variable is a placeholder to the location of
- the installed Qt plugins. You can configure \QD to look for plugins in
- other locations by setting the \c QT_PLUGIN_PATH environment variable
- before running the application.
-
- \note \QD will look for a \c designer subdirectory in each path supplied.
-
- See QCoreApplication::libraryPaths() for more information about customizing
- paths for libraries and plugins with Qt applications.
-
- \section2 Splitting up the Plugin
-
- In a real world scenario, you do not want to have dependencies of the
- application making use of the custom widgets to the \QD headers and
- libraries as introduced by the simple approach explained above.
-
- There are two ways to resolve this:
-
- \list
- \i Create a \c{.pri} file that contains the headers sources and sources
- of the custom widget:
-
- \code
- INCLUDEPATH += $$PWD
- HEADERS += $$PWD/analogclock.h
- SOURCES += $$PWD/analogclock.cpp
- \endcode
-
- This file would then be included by the \c{.pro} file of the plugin and
- the application:
-
- \code
- include(customwidget.pri)
- \endcode
-
- Running \c{qmake -Wall} on the \c{.pro} files causes a warning to be
- printed if an included \c{.pri} file cannot be found.
-
- \i Create a standalone shared library containing the custom widgets only
- as described in
- \l{sharedlibrary.html}{Creating Shared Libraries}.
-
- This library would then be used by the application as well as by the
- \QD plugin. Care must be taken to ensure that the plugin can locate
- the library at run-time.
- \endlist
-
- \section1 Related Examples
-
- For more information on using custom widgets in \QD, refer to the
- \l{designer/customwidgetplugin}{Custom Widget Plugin} and
- \l{designer/worldtimeclockplugin}{World Time Clock Plugin} examples for more
- information about using custom widgets in \QD. Also, you can use the
- QDesignerCustomWidgetCollectionInterface class to combine several custom
- widgets into a single library.
-*/
-
-
-/*!
- \page designer-creating-custom-widgets-extensions.html
- \previouspage Creating Custom Widgets for Qt Designer
- \nextpage Qt Designer's UI File Format
- \contentspage {Qt Designer Manual}{Contents}
-
- \title Creating Custom Widget Extensions
-
- Once you have a custom widget plugin for \QD, you can provide it with the
- expected behavior and functionality within \QD's workspace, using custom
- widget extensions.
-
-
- \section1 Extension Types
-
- There are several available types of extensions in \QD. You can use all of
- these extensions in the same pattern, only replacing the respective
- extension base class.
-
- QDesignerContainerExtension is necessary when implementing a custom
- multi-page container.
-
- \table
- \row
- \i \inlineimage designer-manual-taskmenuextension.png
- \i \bold{QDesignerTaskMenuExtension}
-
- QDesignerTaskMenuExtension is useful for custom widgets. It provides an
- extension that allows you to add custom menu entries to \QD's task
- menu.
-
- The \l{designer/taskmenuextension}{Task Menu Extension} example
- illustrates how to use this class.
-
- \row
- \i \inlineimage designer-manual-containerextension.png
- \i \bold{QDesignerContainerExtension}
-
- QDesignerContainerExtension is necessary when implementing a custom
- multi-page container. It provides an extension that allows you to add
- and delete pages for a multi-page container plugin in \QD.
-
- The \l{designer/containerextension}{Container Extension} example
- further explains how to use this class.
-
- \note It is not possible to add custom per-page properties for some
- widgets (e.g., QTabWidget) due to the way they are implemented.
- \endtable
-
- \table
- \row
- \i \inlineimage designer-manual-membersheetextension.png
- \i \bold{QDesignerMemberSheetExtension}
-
- The QDesignerMemberSheetExtension class allows you to manipulate a
- widget's member functions displayed when connecting signals and slots.
-
- \row
- \i \inlineimage designer-manual-propertysheetextension.png
- \i \bold{QDesignerPropertySheetExtension,
- QDesignerDynamicPropertySheetExtension}
-
- These extension classes allow you to control how a widget's properties
- are displayed in \QD's property editor.
- \endtable
-
-\omit
- \row
- \o
- \o \bold {QDesignerScriptExtension}
-
- The QDesignerScriptExtension class allows you to define script
- snippets that are executed when a form is loaded. The extension
- is primarily intended to be used to set up the internal states
- of custom widgets.
- \endtable
-\endomit
-
-
- \QD uses the QDesignerPropertySheetExtension and the
- QDesignerMemberSheetExtension classes to feed its property and signal and
- slot editors. Whenever a widget is selected in its workspace, \QD will
- query for the widget's property sheet extension; likewise, whenever a
- connection between two widgets is requested, \QD will query for the
- widgets' member sheet extensions.
-
- \warning All widgets have default property and member sheets. If you
- implement custom property sheet or member sheet extensions, your custom
- extensions will override the default sheets.
-
-
- \section1 Creating an Extension
-
- To create an extension you must inherit both QObject and the appropriate
- base class, and reimplement its functions. Since we are implementing an
- interface, we must ensure that it is made known to the meta object system
- using the Q_INTERFACES() macro in the extension class's definition. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 7
-
- This enables \QD to use the qobject_cast() function to query for supported
- interfaces using a QObject pointer only.
-
-
- \section1 Exposing an Extension to Qt Designer
-
- In \QD the extensions are not created until they are required. For this
- reason, when implementing extensions, you must subclass QExtensionFactory
- to create a class that is able to make instances of your extensions. Also,
- you must register your factory with \QD's extension manager; the extension
- manager handles the construction of extensions.
-
- When an extension is requested, \QD's extension manager will run through
- its registered factories calling QExtensionFactory::createExtension() for
- each of them until it finds one that is able to create the requested
- extension for the selected widget. This factory will then make an instance
- of the extension.
-
- \image qtdesignerextensions.png
-
-
- \section2 Creating an Extension Factory
-
- The QExtensionFactory class provides a standard extension factory, but it
- can also be used as an interface for custom extension factories.
-
- The purpose is to reimplement the QExtensionFactory::createExtension()
- function, making it able to create your extension, such as a
- \l{designer/containerextension}{MultiPageWidget} container extension.
-
- You can either create a new QExtensionFactory and reimplement the
- QExtensionFactory::createExtension() function:
-
- \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 8
-
- or you can use an existing factory, expanding the
- QExtensionFactory::createExtension() function to enable the factory to
- create your custom extension as well:
-
- \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 9
-
-
- \section2 Accessing Qt Designer's Extension Manager
-
- When implementing a custom widget plugin, you must subclass the
- QDesignerCustomWidgetInterface to expose your plugin to \QD. This is
- covered in more detail in the
- \l{Creating Custom Widgets for Qt Designer} section. The registration of
- an extension factory is typically made in the
- QDesignerCustomWidgetInterface::initialize() function:
-
- \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 10
-
- The \c formEditor parameter in the
- QDesignerCustomWidgetInterface::initialize() function is a pointer to \QD's
- current QDesignerFormEditorInterface object. You must use the
- QDesignerFormEditorInterface::extensionManager() function to retrieve an
- interface to \QD's extension manager. Then you use the
- QExtensionManager::registerExtensions() function to register your custom
- extension factory.
-
-
- \section1 Related Examples
-
- For more information on creating custom widget extensions in \QD, refer to
- the \l{designer/taskmenuextension}{Task Menu Extension} and
- \l{designer/containerextension}{Container Extension} examples.
-*/
-
-
-/*!
- \page designer-ui-file-format.html
- \previouspage Creating Custom Widget Extensions
- \contentspage {Qt Designer Manual}{Contents}
-
- \title Qt Designer's UI File Format
-
- The \c UI file format used by \QD is described by the
- \l{http://www.w3.org/XML/Schema}{XML schema} presented below,
- which we include for your convenience. Be aware that the format
- may change in future Qt releases.
-
- \quotefile tools/designer/data/ui4.xsd
-*/
-
-
-/*!
- \page designer-recursive-shadow-casting.html
- \title Implementation of the Recursive Shadow Casting Algorithm in Qt Designer
- \contentspage {Qt Designer Manual}{Contents}
-
- \ingroup licensing
- \brief License information for contributions to specific parts of the Qt
- Designer source code.
-
- \legalese
- Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). \BR
- Copyright (C) 2005 Bjoern Bergstroem
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, modify, market, reproduce,
- grant sublicenses and distribute subject to the following conditions:
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software. These
- files are provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
- WARRANTY OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
- PURPOSE.
- \endlegalese
-*/
diff --git a/doc/src/desktop-integration.qdoc b/doc/src/desktop-integration.qdoc
deleted file mode 100644
index 1c10ed9a4..000000000
--- a/doc/src/desktop-integration.qdoc
+++ /dev/null
@@ -1,90 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page desktop-integration.html
- \title Desktop Integration
- \ingroup gui-programming
-
- Various classes in Qt are designed to help developers integrate applications into
- users' desktop environments. These classes enable developers to take advantage
- of native services while still using a cross-platform API.
-
- \tableofcontents
-
- \section1 Opening External Resources
-
- Although Qt provides facilities to handle and display resources, such as
- \l{QImageIOHandler}{common image formats} and \l{QTextDocument}{HTML},
- it is sometimes necessary to open files and external resources using external
- applications.
-
- QDesktopServices provides an interface to services offered by the user's desktop
- environment. In particular, the \l{QDesktopServices::}{openUrl()} function is
- used to open resources using the appropriate application, which may have been
- specifically configured by the user.
-
- \section1 System Tray Icons
-
- Many modern desktop environments feature docks or panels with \e{system trays}
- in which applications can install icons. Applications often use system tray icons
- to display status information, either by updating the icon itself or by showing
- information in "balloon messages". Additionally, many applications provide
- pop-up menus that can be accessed via their system tray icons.
-
- The QSystemTrayIcon class exposes all of the above features via an intuitive
- Qt-style API that can be used on all desktop platforms.
-
- \section1 Desktop Widgets
-
- On systems where the user's desktop is displayed using more than one screen,
- certain types of applications may need to obtain information about the
- configuration of the user's workspace to ensure that new windows and dialogs
- are opened in appropriate locations.
-
- The QDesktopWidget class can be used to monitor the positions of widgets and
- notify applications about changes to the way the desktop is split over the
- available screens. This enables applications to implement policies for
- positioning new windows so that, for example, they do not distract a user
- who is working on a specific task.
-
-
-*/
diff --git a/doc/src/developing-on-mac.qdoc b/doc/src/developing-on-mac.qdoc
deleted file mode 100644
index 2546ef1e7..000000000
--- a/doc/src/developing-on-mac.qdoc
+++ /dev/null
@@ -1,269 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page developing-on-mac.html
- \title Developing Qt Applications on Mac OS X
- \brief A overview of items to be aware of when developing Qt applications
- on Mac OS X
- \ingroup platform-notes
-
- \tableofcontents
-
- Mac OS X is a UNIX platform and behaves similar to other Unix-like
- platforms. The main difference is X11 is not used as the primary windowing
- system. Instead, Mac OS X uses its own native windowing system that is
- accessible through the Carbon and Cocoa APIs. Application development on
- Mac OS X is done using Xcode Tools, an optional install included on every
- Mac with updates available from \l {http://developer.apple.com}{Apple's
- developer website}. Xcode Tools includes Apple-modified versions of the GCC
- compiler.
-
-
- \section1 What Versions of Mac OS X are Supported?
-
- As of Qt 4.6, Qt supports Mac OS X versions 10.4 and up. It is usually in
- the best interest of the developer and user to be running the latest
- updates to any version. We test internally against Mac OS X 10.4.11 as well
- as the updated release of Mac OS X 10.5 and Mac OS X 10.6.
-
- \section2 Carbon or Cocoa?
-
- Historically, Qt has used the Carbon toolkit, which supports 32-bit
- applications on Mac OS X 10.4 and up. Qt 4.5 and up has support for the Cocoa
- toolkit, which requires 10.5 and provides 64-bit support.
-
- This detail is typically not important to Qt application developers. Qt is
- cross-platform across Carbon and Cocoa, and Qt applications behave
- the same way when configured for either one. Eventually, the Carbon
- version will be discontinued. This is something to keep in mind when you
- consider writing code directly against native APIs.
-
- The current binary for Qt is built in two flavors, 32-bit Carbon and full
- universal Cocoa (32-bit and 64-bit). If you want a different setup for
- Qt will use, you must build from scratch. Carbon or Cocoa is chosen when
- configuring the package for building. The configure process selects Carbon
- by default, to specify Cocoa use the \c{-cocoa} flag. configure for a
- 64-bit architecture using one of the \c{-arch} flags (see \l{universal
- binaries}{Universal Binaries}).
-
- Currently, Apple's default GCC compiler is used by default (GCC 4.0.1 on
- 10.4 and 10.5, GCC 4.2 on 10.6). You can specify alternate compilers
- though. For example, on Mac OS X 10.5, Apple's GCC 4.2 is also available
- and selectable with the configure flag: \c{-platform macx-g++42}. LLVM-GCC
- support is available by passing in the \c{-platform macx-llvm} flag. GCC
- 3.x will \e not work. Though they may work, We do not support custom-built
- GCC's.
-
- The following table summarizes the different versions of Mac OS X and what
- capabilities are used by Qt.
-
- \table
- \header
- \o Mac OS X Version
- \o Cat Name
- \o Native API Used by Qt
- \o Bits available to address memory
- \o CPU Architecture Supported
- \o Development Platform
- \row
- \o 10.4
- \o Tiger
- \o Carbon
- \o 32
- \o PPC/Intel
- \o Yes
- \row
- \o 10.5
- \o Leopard
- \o Carbon
- \o 32
- \o PPC/Intel
- \o Yes
- \row
- \o 10.5
- \o Leopard
- \o Cocoa
- \o 32/64
- \o PPC/Intel
- \o Yes
- \row
- \o 10.6
- \o Snow Leopard
- \o Carbon
- \o 32
- \o PPC/Intel
- \o Yes
- \row
- \o 10.6
- \o Snow Leopard
- \o Cocoa
- \o 32/64
- \o PPC/Intel
- \o Yes
- \endtable
-
- \section2 Which One Should I Use?
-
- Carbon and Cocoa both have their advantages and disadvantages. Probably the
- easiest way to determine is to look at the version of Mac OS X you are
- targetting. If you are starting a new application and can target 10.5 and
- up, then please consider Cocoa only. If you have an existing application or
- need to target earlier versions of the operating system and do not need
- access to 64-bit or newer Apple technologies, then Carbon is a good fit. If
- your needs fall in between, you can go with a 64-bit Cocoa and 32-bit
- Carbon universal application with the appropriate checks in your code to
- choose the right path based on where you are running the application.
-
- For Mac OS X 10.6, Apple has started recommending developers to build their
- applications 64-bit. The main reason is that there is a small speed
- increase due to the extra registers on Intel CPU's, all their machine
- offerings have been 64-bit since 2007, and there is a cost for reading all
- the 32-bit libraries into memory if everything else is 64-bit. If you want
- to follow this advice, there is only one choice, 64-bit Cocoa.
-
- \target universal binaries
- \section1 Universal Binaries
-
- In 2006, Apple begin transitioning from PowerPC (PPC) to Intel (x86)
- systems. Both architectures are supported by Qt. The release of Mac OS X
- 10.5 in October 2007 added the possibility of writing and deploying 64-bit
- GUI applications. Qt 4.5 and up supports both the 32-bit (PPC and x86) and
- 64-bit (PPC64 and x86-64) versions of PowerPC and Intel-based systems.
-
- Universal binaries are used to bundle binaries for more than one
- architecture into a single package, simplifying deployment and
- distribution. When running an application the operating system will select
- the most appropriate architecture. Universal binaries support the following
- architectures; they can be added to the build at configure time using the
- \c{-arch} arguments:
-
- \table
- \header
- \o Architecture
- \o Flag
- \row
- \o Intel, 32-bit
- \o \c{-arch x86}
- \row
- \o Intel, 64-bit
- \o \c{-arch x86_64}
- \row
- \o PPC, 32-bit
- \o \c{-arch ppc}
- \row
- \o PPC, 64-bit
- \o \c{-arch ppc64}
- \endtable
-
- If there are no \c{-arch} flags specified, configure builds for the 32-bit
- architecture, if you are currently on one. Universal binaries were initially
- used to simplify the PPC to Intel migration. You can use \c{-universal} to
- build for both the 32-bit Intel and PPC architectures.
-
- \note The \c{-arch} flags at configure time only affect how Qt is built.
- Applications are by default built for the 32-bit architecture you are
- currently on. To build a universal binary, add the architectures to the
- CONFIG variable in the .pro file:
-
- \code
- CONFIG += x86 ppc x86_64 ppc64
- \endcode
-
-
- \section1 Day-to-Day Application Development on OS X
-
- On the command-line, applications can be built using \c qmake and \c make.
- Optionally, \c qmake can generate project files for Xcode with
- \c{-spec macx-xcode}. If you are using the binary package, \c qmake
- generates Xcode projects by default; use \c{-spec macx-gcc} to generate
- makefiles.
-
- The result of the build process is an application bundle, which is a
- directory structure that contains the actual application executable. The
- application can be launched by double-clicking it in Finder, or by
- referring directly to its executable from the command line, i. e.
- \c{myApp.app/Contents/MacOS/myApp}.
-
- If you wish to have a command-line tool that does not use the GUI (e.g.,
- \c moc, \c uic or \c ls), you can tell \c qmake not to execute the bundle
- creating steps by removing it from the \c{CONFIG} in your \c{.pro} file:
-
- \code
- CONFIG -= app_bundle
- \endcode
-
-
- \section1 Deployment - "Compile once, deploy everywhere"
-
- In general, Qt supports building on one Mac OS X version and deploying on
- all others, both forward and backwards. You can build on 10.4 Tiger and run
- the same binary on 10.5 and up.
-
- Some restrictions apply:
-
- \list
- \o Some functions and optimization paths that exist in later versions
- of Mac OS X will not be available if you build on an earlier
- version of Mac OS X.
- \o The CPU architecture should match.
- \o Cocoa support is only available for Mac OS X 10.5 and up.
- \endlist
-
- Universal binaries can be used to provide a smorgasbord of configurations
- catering to all possible architectures.
-
- Mac applications are typically deployed as self-contained application
- bundles. The application bundle contains the application executable as well
- as dependencies such as the Qt libraries, plugins, translations and other
- resources you may need. Third party libraries like Qt are normally not
- installed system-wide; each application provides its own copy.
-
- The most common way to distribute applications is to provide a compressed
- disk image (.dmg file) that the user can mount in Finder. The Mac
- deployment tool (macdeployqt) can be used to create the self-contained bundles, and
- optionally also create a .dmg archive. See the
- \l{Deploying an Application on Mac OS X}{Mac deployment guide} for more
- information about deployment. It is also possible to use an installer
- wizard. More information on this option can be found in
- \l{http://developer.apple.com/mac/}{Apple's documentation}.
-*/
-
diff --git a/doc/src/development/activeqt-dumpcpp.qdoc b/doc/src/development/activeqt-dumpcpp.qdoc
new file mode 100644
index 000000000..4d73d0541
--- /dev/null
+++ b/doc/src/development/activeqt-dumpcpp.qdoc
@@ -0,0 +1,143 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 activeqt-dumpcpp.html
+ \title The dumpcpp Tool (ActiveQt)
+
+ \ingroup activeqt-tools
+
+ \keyword dumpcpp
+
+ The \c dumpcpp tool generates a C++ namespace for a type library.
+
+ To generate a C++ namespace for a type library, call \c dumpcpp with the following
+ command line parameters:
+
+ \table
+ \header
+ \i Option
+ \i Result
+ \row
+ \i input
+ \i Generate documentation for \e input. \e input can specify a type library file or a type
+ library ID, or a CLSID or ProgID for an object
+ \row
+ \i -o file
+ \i Writes the class declaration to \e {file}.h and meta object infomation to \e {file}.cpp
+ \row
+ \i -n namespace
+ \i Generate a C++ namespace \e namespace
+ \row
+ \i -nometaobject
+ \i Do not generate a .cpp file with the meta object information.
+ The meta object is then generated in runtime.
+ \row
+ \i -getfile libid
+ \i Print the filename for the typelibrary \e libid to stdout
+ \row
+ \i -compat
+ \i Generate namespace with dynamicCall-compatible API
+ \row
+ \i -v
+ \i Print version information
+ \row
+ \i -h
+ \i Print help
+ \endtable
+
+ \c dumpcpp can be integrated into the \c qmake build system. In your .pro file, list the type
+ libraries you want to use in the TYPELIBS variable:
+
+ \snippet examples/activeqt/qutlook/qutlook.pro 0
+
+ The generated namespace will declare all enumerations, as well as one QAxObject subclass
+ for each \c coclass and \c interface declared in the type library. coclasses marked with
+ the \c control attribute will be wrapped by a QAxWidget subclass.
+
+ Those classes that wrap creatable coclasses (i.e. coclasses that are not marked
+ as \c noncreatable) have a default constructor; this is typically a single class
+ of type \c Application.
+
+ \snippet doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc 0
+
+ All other classes can only be created by passing an IDispatch interface pointer
+ to the constructor; those classes should however not be created explicitly.
+ Instead, use the appropriate API of already created objects.
+
+ \snippet doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc 1
+
+ All coclass wrappers also have one constructors taking an interface wrapper class
+ for each interface implemented.
+
+ \snippet doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc 2
+
+ You have to create coclasses to be able to connect to signals of the subobject.
+ Note that the constructor deletes the interface object, so the following will
+ cause a segmentation fault:
+
+ \snippet doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc 3
+
+ If the return type is of a coclass or interface type declared in another type
+ library you have to include the namespace header for that other type library
+ before including the header for the namespace you want to use (both header have
+ to be generated with this tool).
+
+ By default, methods and property returning subobjects will use the type as in
+ the type library. The caller of the function is responsible for deleting or
+ reparenting the object returned. If the \c -compat switch is set, properties
+ and method returning a COM object have the return type \c IDispatch*, and
+ the namespace will not declare wrapper classes for interfaces.
+
+ In this case, create the correct wrapper class explicitly:
+
+ \snippet doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc 4
+
+ You can of course use the IDispatch* returned directly, in which case you have to
+ call \c Release() when finished with the interface.
+
+ All classes in the namespace are tagged with a macro that allows you to export
+ or import them from a DLL. To do that, declare the macro to expand to
+ \c __declspec(dllimport/export) before including the header file.
+
+ To build the tool you must first build the QAxContainer library.
+ Then run your make tool in \c tools/dumpcpp.
+*/
diff --git a/doc/src/development/activeqt-dumpdoc.qdoc b/doc/src/development/activeqt-dumpdoc.qdoc
new file mode 100644
index 000000000..d7407dde4
--- /dev/null
+++ b/doc/src/development/activeqt-dumpdoc.qdoc
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 activeqt-dumpdoc.html
+ \title The dumpdoc Tool (ActiveQt)
+
+ \ingroup activeqt-tools
+
+ \keyword dumpdoc
+
+ The \c dumpdoc tool generates Qt-style documentation for any
+ COM object and writes it into the file specified.
+
+ Call \c dumpdoc with the following command line parameters:
+
+ \table
+ \header
+ \i Option
+ \i Result
+ \row
+ \i -o file
+ \i Writes output to \e file
+ \row
+ \i object
+ \i Generate documentation for \e object
+ \row
+ \i -v
+ \i Print version information
+ \row
+ \i -h
+ \i Print help
+ \endtable
+
+ \e object must be an object installed on the local machine (ie.
+ remote objects are not supported), and can include subobjects
+ accessible through properties, ie.
+ \c Outlook.Application/Session/CurrentUser
+
+ The generated file will be an HTML file using Qt documentation
+ style.
+
+ To build the tool you must first build the QAxContainer library.
+ Then run your make tool in \c tools/dumpdoc.
+*/
diff --git a/doc/src/development/activeqt-idc.qdoc b/doc/src/development/activeqt-idc.qdoc
new file mode 100644
index 000000000..7de4f1986
--- /dev/null
+++ b/doc/src/development/activeqt-idc.qdoc
@@ -0,0 +1,82 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 activeqt-idc.html
+ \title IDC - The Interface Description Compiler (ActiveQt)
+
+ \ingroup activeqt-tools
+
+ \keyword idc
+
+ The IDC tool is part of the ActiveQt build system and makes
+ it possible to turn any Qt binary into a full COM object server
+ with only a few lines of code.
+
+ IDC understands the following command line parameters:
+
+ \table
+ \header
+ \i Option
+ \i Result
+ \row
+ \i dll -idl idl -version x.y
+ \i Writes the IDL of the server \e dll to the file \e idl. The
+ type library wll have version x.y.
+ \row
+ \i dll -tlb tlb
+ \i Replaces the type library in \e dll with \e tlb
+ \row
+ \i -v
+ \i Print version information
+ \row
+ \i -regserver dll
+ \i Register the COM server \e dll
+ \row
+ \i -unregserver
+ \i Unregister the COM server \e dll
+ \endtable
+
+ It is usually never necessary to invoke IDC manually, as the \c
+ qmake build system takes care of adding the required post
+ processing steps to the build process. See the \l{ActiveQt}
+ documentation for details.
+*/
diff --git a/doc/src/development/activeqt-testcon.qdoc b/doc/src/development/activeqt-testcon.qdoc
new file mode 100644
index 000000000..e3226a93b
--- /dev/null
+++ b/doc/src/development/activeqt-testcon.qdoc
@@ -0,0 +1,77 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 activeqt-testcon.html
+ \title testcon - An ActiveX Test Container (ActiveQt)
+
+ \ingroup activeqt-tools
+
+ \keyword testcon
+
+ This application implements a generic test container for ActiveX
+ controls. You can insert ActiveX controls installed on your
+ system, and execute methods and modify properties. The container
+ will log information about events and property changes as well
+ as debug output in the log window.
+
+ Parts of the code use internals of the Qt meta object and ActiveQt
+ framework and are not recommended to be used in application code.
+
+ Use the application to view the slots, signals and porperties
+ available through the QAxWidget class when instantiated with a
+ certain ActiveX, and to test ActiveX controls you implement or
+ want to use in your Qt application.
+
+ The application can load and execute script files in JavaScript,
+ VBScript, Perl and Python (if installed) to automate the controls
+ loaded. Example script files using the QAxWidget2 class are available
+ in the \c scripts subdirectory.
+
+ Note that the qmake project of this example includes a resource file
+ \c testcon.rc with a version resource. This is required by some
+ ActiveX controls (ie. Shockwave ActiveX Controls), which might crash
+ or misbehave otherwise if such version information is missing.
+
+ To build the tool you must first build the QAxContainer and the
+ QAxServer libraries. Then run your make tool in \c tools/testcon
+ and run the resulting \c testcon.exe.
+*/
diff --git a/doc/src/development/assistant-manual.qdoc b/doc/src/development/assistant-manual.qdoc
new file mode 100644
index 000000000..be721f7b0
--- /dev/null
+++ b/doc/src/development/assistant-manual.qdoc
@@ -0,0 +1,824 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 assistant-manual.html
+ \title Qt Assistant Manual
+ \ingroup qttools
+
+ \startpage {index.html}{Qt Reference Documentation}
+ \nextpage Qt Assistant in More Detail
+
+ \keyword Qt Assistant
+
+ This document introduces \QA, a tool for presenting on-line
+ documentation. The document is divided into the following sections:
+
+ Table of contents:
+
+ \list
+ \o \l{The One-Minute Guide to Using Qt Assistant}
+ \o \l{Qt Assistant in More Detail}
+ \o \l{Using Qt Assistant as a Custom Help Viewer}
+ \endlist
+
+ \chapter The One-Minute Guide to Using Qt Assistant
+
+ Once you have installed Qt, \QA should be ready to run:
+
+ \list
+ \o On Windows, \QA is available as a menu option on the Qt menu.
+ \o On Mac OS X, \QA is installed in the /Developer/Applications/Qt directory.
+ \o On Unix/Linux, open a terminal, type \c{assistant} and press \key{Enter}.
+ \endlist
+
+ When you start up \QA, you will be presented with a standard main window
+ application, with a menu bar and toolbar. Below these, on the left hand
+ side are navigation windows called \e{Contents}, \e{Index} and \e{Bookmarks}.
+ On the right, taking up most of the space, is the \e{Documentation} window.
+ By default, \QA loads the Qt reference documentation along with the manuals
+ of other Qt tools, like \QD or \QL.
+
+ \QA works in a similar way to a Web browser. If you click hyperlinks
+ (cross-references), the \e{Documentation} window will present the relevant
+ page. You can bookmark pages of particular interest and you can click the
+ \gui{Previous} and \gui{Next} toolbar buttons to navigate within the pages
+ you have visited.
+
+ Although \QA can be used just like a Web browser to navigate through
+ the documentation, \QA offers a powerful means of navigation that Web
+ browsers do not provide. \QA uses an advanced full text search engine
+ to index all the pages in each compressed help file so that you can
+ search for particular words and phrases.
+
+ To perform an index search, click the \gui{Index} tab on the Sidebar
+ (or press \key{Alt+I}). In the \gui{'Look For'} line edit enter a word;
+ e.g., 'homedirpath'. As you type, words are found and highlighted in a list
+ beneath the line edit. If the highlighted text matches what you're
+ looking for, double click it, (or press \key{Enter}) and the
+ \e{Documentation} window will display the relevant page. You rarely have
+ to type in the whole word before \QA finds a match. Note that for some
+ words there may be more than one possible page that is relevant.
+
+ \QA also provides full text searching for finding specific words in
+ the documentation. To activate the full text search, either press \key(Alt+S)
+ or click on the \gui{Search} tab in the \e{Documentation} window. Then
+ enter the term you're looking for and hit the \gui{Search} button. All
+ documents containing the specified term will then be listed in the list box
+ below.
+*/
+
+/*!
+ \page assistant-details.html
+ \title Qt Assistant in More Detail
+
+ \contentspage {Qt Assistant Manual}{Contents}
+ \previouspage Qt Assistant Manual
+ \nextpage Using Qt Assistant as a Custom Help Viewer
+
+ \tableofcontents
+
+ \img assistant-assistant.png
+
+ \section1 Command Line Options
+
+ \QA handles the following command line options:
+
+ \table
+ \header
+ \o Command Line Option
+ \o Brief Description
+ \row
+ \o -collectionFile <file.qhc>
+ \o Uses the specified collection file instead of the default one.
+ \row
+ \o -showUrl URL
+ \o Shows the document referenced by URL.
+ \row
+ \o -enableRemoteControl
+ \o Enables \QA to be remotly controlled.
+ \row
+ \o -show <widget>
+ \o Shows the specified dockwidget which can be "contents", "index",
+ "bookmarks" or "search".
+ \row
+ \o -hide <widget>
+ \o Hides the specified dockwidget which can be "contents", "index",
+ "bookmarks" or "search.
+ \row
+ \o -activate <widget>
+ \o Activates the specified dockwidget which can be "contents",
+ "index", "bookmarks" or "search.
+ \row
+ \o -register <doc.qch>
+ \o Registers the specified compressed help file in the given help
+ collection.
+ \row
+ \o -unregister <doc.qch>
+ \o Unregisters the specified compressed help file from the given
+ collection file.
+ \row
+ \o -setCurrentFilter filter
+ \o Sets the given filter as the active filter.
+ \row
+ \o -quiet
+ \o Doesn't show any error, warning or success messages.
+ \endtable
+
+ \section1 Tool Windows
+
+ \img assistant-dockwidgets.png
+
+ The tool windows provide four ways to navigate the documentation:
+
+ \list
+ \o The \gui{Contents} window presents a table of contents implemented as a
+ tree view for the documentation that is available. If you click an item,
+ its documentation will appear in the \e{Documentation} window. If you double
+ click an item or click on the control to the left of it, the item's sub-items
+ will appear. Click a sub-item to make its page appear in the \e{Documentation}
+ window. Click on the control next to an open item to hide its sub-items.
+ \o The \gui{Index} window is used to look up key words or phrases.
+ See \l{The One-Minute Guide to Using Qt Assistant} for how to use this
+ window.
+ \o The \gui{Bookmarks} window lists any bookmarks you have made. Double
+ click a bookmark to make its page appear in the \e{Documentation} window.
+ The \gui{Bookmarks} window provides a context menu with \gui{Show Item},
+ \gui{Delete Item} as well as \gui{Rename Item}. Click in the main menu
+ \menu{Bookmark|Add Bookmark...} (or press \key{Ctrl+B}) to bookmark the
+ page that is currently showing in the \e{Documentation} window. Right click
+ a bookmark in the list to rename or delete the highlighted bookmark.
+ \endlist
+
+ If you want the \gui{Documentation} window to use as much space as possible,
+ you can easily group, move or hide the tool windows. To group the windows,
+ drag one on top of the other and release the mouse. If one or all tool
+ windows are not shown, press \key{Alt+C}, \key{Alt+I} or \key{Alt+O} to show
+ the required window.
+
+ The tool windows can be docked into the main window, so you can drag them
+ to the top, left, right or bottom of \e{Qt Assistant's} window, or you can
+ drag them outside \QA to float them as independent windows.
+
+ \section1 Documentation Window
+
+ \img assistant-docwindow.png
+
+ The \gui{Documentation} window lets you create a tab for each
+ documentation page that you view. Click the \gui{Add Tab} button and a new
+ tab will appear with the page name as the tab's caption. This makes it
+ convenient to switch between pages when you are working with different
+ documentation. You can delete a tab by clicking the \gui{Close Tab} button
+ located on the right side of the \gui{Documentation} window.
+
+ \section1 Toolbars
+
+ \img assistant-toolbar.png
+
+ The main toolbar provides fast access to the most common actions.
+
+ \table
+ \header \o Action \o Description \o Menu Item \o Shortcut
+ \row \o \gui{Previous} \o Takes you to the previous page in the history.
+ \o \menu{Go|Previous} \o \key{Alt+Left Arrow}
+ \row \o \gui{Next} \o Takes you to the next page in the history.
+ \o \menu{Go|Next} \o \key{Alt+Right Arrow}
+ \row \o \gui{Home}
+ \o Takes you to the home page as specified in the Preferences Dialog.
+ \o \menu{Go|Home} \o \key{Ctrl+Home}.
+ \row \o \gui{Sync with Table of Contents}
+ \o Synchronizes the \gui{Contents} tool window with the page currently
+ shown in the \gui{Documentation} window.
+ \o \menu{Go|Sync with Table of Contents} \o
+ \row \o \gui{Copy} \o Copies any selected text to the clipboard.
+ \o \menu{Edit|Copy} \o \key{Ctrl+C}
+ \row \o \gui{Print} \o Opens the \gui{Print} dialog.
+ \o \menu{File|Print} \o \key{Ctrl+P}
+ \row \o \gui{Find in Text} \o Opens the \gui{Find Text} dialog.
+ \o \menu{Edit|Find in Text} \o \key{Ctrl+F}
+ \row \o \gui{Zoom in}
+ \o Increases the font size used to display text in the current tab.
+ \o \menu{View|Zoom in} \o \key{Ctrl++}
+ \row \o \gui{Zoom out}
+ \o Decreases the font size used to display text in the current tab.
+ \o \menu{View|Zoom out} \o \key{Ctrl+-}
+ \row \o \gui{Normal Size}
+ \o Resets the font size to its normal size in the current tab.
+ \o \menu{View|Normal Size} \o \key{Ctrl+0}
+ \endtable
+
+ \img assistant-address-toolbar.png
+
+ The address toolbar provides a fast way to enter a specific URL for a
+ documentation file. By default, the address toolbar is not shown, so it
+ has to be activated via \menu{View|Toolbars|Address Toolbar}.
+
+ \img assistant-filter-toolbar.png
+
+ The filter toolbar allows you to apply a filter to the currently installed
+ documentation. As with the address toolbar, the filter toolbar is not visible
+ by default and has to be activated via \menu{View|Toolbars|Filter Toolbar}.
+
+ \section1 Menus
+
+ \section2 File Menu
+
+ \list
+ \o \menu{File|Page Setup...} invokes a dialog allowing you to define
+ page layout properties, such as margin sizes, page orientation and paper size.
+ \o \menu{File|Print Preview...} provides a preview of the printed pages.
+ \o \menu{File|Print...} opens the \l{#Print Dialog}{\gui{Print} dialog}.
+ \o \menu{File|New Tab} opens a new empty tab in the \gui{Documentation}
+ window.
+ \o \menu{File|Close Tab} closes the current tab of the
+ \gui{Documentation} window.
+ \o \menu{File|Exit} closes the \QA application.
+ \endlist
+
+ \section2 Edit Menu
+
+ \list
+ \o \menu{Edit|Copy} copies any selected text to the clipboard.
+ \o \menu{Edit|Find in Text} invokes the \l{#Find Text Control}{\gui{Find Text}
+ control} at the lower end of the \gui{Documentation} window.
+ \o \menu{Edit|Find Next} looks for the next occurance of the specified
+ text in the \gui{Find Text} control.
+ \o \menu{Edit|Find Previous} looks for the previous occurance of
+ the specified text in the \l{#Find Text Control}{\gui{Find Text} control}.
+ \o \menu{Edit|Preferences} invokes the \l{#Preferences Dialog}{\gui{Preferences} dialog}.
+ \endlist
+
+ \section2 View Menu
+
+ \list
+ \o \menu{View|Zoom in} increases the font size in the current tab.
+ \o \menu{View|Zoom out} decreases the font size in the current tab.
+ \o \menu{View|Normal Size} resets the font size in the current tab.
+ \o \menu{View|Contents} toggles the display of the \gui{Contents} tool window.
+ \o \menu{View|Index} toggles the display of the \gui{Index} tool window.
+ \o \menu{View|Bookmarks} toggles the display of the \gui{Bookmarks} tool window.
+ \o \menu{View|Search} toggles the display of the Search in the \gui{Documentation} window.
+ \endlist
+
+ \section2 Go Menu
+
+ \list
+ \o \menu{Go|Home} goes to the home page.
+ \o \menu{Go|Back} displays the previous page in the history.
+ \o \menu{Go|Forward} displays the next page in the history.
+ \o \menu{Go|Sync with Table of Contents} syncs the \gui{Contents} tool window to the currently shown page.
+ \o \menu{Go|Next Page} selects the next tab in the \gui{Documentation} window.
+ \o \menu{Go|Previous Page} selects the previous tab in the \gui{Documentation} window.
+ \endlist
+
+ \section2 Bookmarks Menu
+
+ \list
+ \o \menu{Bookmarks|Add} adds the current page to the list of bookmarks.
+ \endlist
+
+ \section1 Dialogs
+
+ \section2 Print Dialog
+
+ This dialog is platform-specific. It gives access to various printer
+ options and can be used to print the document shown in the current tab.
+
+ \section2 Preferences Dialog
+
+ \img assistant-preferences-fonts.png
+
+ The \menu{Fonts} page allows you to change the font family and font sizes of the
+ browser window displaying the documentation or the application itself.
+
+ \img assistant-preferences-filters.png
+
+ The \menu{Filters} page lets you create and remove documentation
+ filters. To add a new filter, click the \gui{Add} button, specify a
+ filter name in the pop-up dialog and click \gui{OK}, then select
+ the filter attributes in the list box on the right hand side.
+ You can delete a filter by selecting it and clicking the \gui{Remove}
+ button.
+
+ \img assistant-preferences-documentation.png
+
+ The \menu{Documentation} page lets you install and remove compressed help
+ files. Click the \gui{Install} button and choose the path of the compressed
+ help file (*.qch) you would like to install.
+ To delete a help file, select a documentation set in the list and click
+ \gui{Remove}.
+
+ \img assistant-preferences-options.png
+
+ The \menu{Options} page lets you specify the homepage \QA will display when
+ you click the \gui{Home} button in \QA's main user interface. You can specify
+ the hompage by typing it here or clicking on one of the buttons below the
+ textbox. \gui{Current Page} sets the currently displayed page as your home
+ page while \gui{Restore to default} will reset your home page to the default
+ home page.
+
+ \section1 Find Text Control
+
+ This control is used to find text in the current page. Enter the text you want
+ to find in the line edit. The search is incremental, meaning that the most
+ relevant result is shown as you enter characters into the line edit.
+
+ If you check the \gui{Whole words only} checkbox, the search will only consider
+ whole words; for example, if you search for "spin" with this checkbox checked it will
+ not match "spinbox", but will match "spin". If you check the \gui{Case sensitive}
+ checkbox then, for example, "spin" will match "spin" but not "Spin". You can
+ search forwards or backwards from your current position in the page by clicking
+ the \gui{Previous} or \gui{Next} buttons. To hide the find control, either click the
+ \gui{Close} button or hit the \key{Esc} key.
+
+ \section1 Filtering Help Contents
+
+ \QA allows you to install any kind of documentation as long as it is organized
+ in Qt compressed help files (*.qch). For example, it is possible to install the
+ Qt reference documentation for Qt 4.4.0 and Qt 4.4.1 at the same time. In many
+ respects, this is very convenient since only one version of \QA is needed.
+ However, at the same time it becomes more complicated when performing tasks like
+ searching the index because nearly every keyword is defined in Qt 4.4.0 as well
+ as in Qt 4.4.1. This means that \QA will always ask the user to choose which one
+ should be displayed.
+
+ We use documentation filters to solve this issue. A filter is identified by its
+ name, and contains a list of filter attributes. An attribute is just a string and
+ can be freely chosen. Attributes are defined by the documentation itself, this
+ means that every documentation set usually has one or more attributes.
+
+ For example, the Qt 4.4.0 \QA documentation defines the attributes \c {assistant},
+ \c{tools} and \c{4.4.0}, \QD defines \c{designer}, \c{tools} and \c{4.4.0}.
+ The filter to display all tools would then define only the attribute
+ \c{tools} since this attribute is part of both documentation sets.
+ Adding the attribute \c{assistant} to the filter would then only show \QA
+ documentation since the \QD documentation does not contain this
+ attribute. Having an empty list of attributes in a filter will match all
+ documentation; i.e., it is equivalent to requesting unfiltered documentation.
+
+ \section1 Full Text Searching
+
+ \img assistant-search.png
+
+ \QA provides a powerful full text search engine. To search
+ for certain words or text, click the \gui{Search} tab in the \gui{Documentation}
+ window. Then enter the text you want to look for and press \key{Enter}
+ or click the \gui{Search} button. The search is not case sensitive, so,
+ for example, Foo, fOo and FOO are all treated as the same. The following are
+ examples of common search patterns:
+
+ \list
+ \o \c deep -- lists all the documents that contain the word 'deep'
+ \o \c{deep*} -- lists all the documents that contain a word beginning
+ with 'deep'
+ \o \c{deep copy} -- lists all documents that contain both 'deep' \e
+ and 'copy'
+ \o \c{"deep copy"} -- list all documents that contain the phrase 'deep copy'
+ \endlist
+
+ It is also possible to use the \gui{Advanced search} to get more flexibility.
+ You can specify some words so that hits containing these are excluded from the
+ result, or you can search for an exact phrase. Searching for similar words will
+ give results like these:
+
+ \list
+ \o \c{QStin} -- lists all the documents with titles that are similar, such as \c{QString}
+ \o \c{QSting} -- lists all the documents with titles that are similar, such as \c{QString}
+ \o \c{QStrin} -- lists all the documents with titles that are similar, such as \c{QString}
+ \endlist
+
+ Options can be combined to improve the search results.
+
+ The list of documents found is ordered according to the number of
+ occurrences of the search text which they contain, with those containing
+ the highest number of occurrences appearing first. Simply click any
+ document in the list to display it in the \gui{Documentation} window.
+
+ If the documentation has changed \mdash for example, if documents have been added
+ or removed \mdash \QA will index them again.
+
+*/
+
+/*!
+ \page assistant-custom-help-viewer.html
+ \title Using Qt Assistant as a Custom Help Viewer
+
+ \contentspage {Qt Assistant Manual}{Contents}
+ \previouspage Qt Assistant in More Detail
+
+ Using \QA as custom help viewer requires more than just being able to
+ display custom documentation. It is equally important that the
+ appearance of \QA can be customized so that it is seen as a
+ application-specific help viewer rather than \QA. This is achieved by
+ changing the window title or icon, as well as some application-specific
+ menu texts and actions. The complete list of possible customizations
+ can be found in the \l{Creating a Custom Help Collection File} section.
+
+ Another requirement of a custom help viewer is the ability to receive
+ actions or commands from the application it provides help for. This is
+ especially important when the application offers context sensitive help.
+ When used in this way, the help viewer may need to change its contents
+ depending on the state the application is currently in. This means that
+ the application has to communicate the current state to the help viewer.
+ The section about \l{Using Qt Assistant Remotely} explains how this can
+ be done.
+
+ \tableofcontents
+
+ The \l{Simple Text Viewer Example}{Simple Text Viewer} example uses the
+ techniques described in this document to show how to use \QA as a custom
+ help viewer for an application.
+
+ \warning In order to ship Qt Assistant in your application, it is crucial
+ that you include the sqlite plugin. For more information on how to include
+ plugins in your application, refer to the \l{Deploying Qt Applications}
+ {deployment documentation}.
+
+ \section1 Qt Help Collection Files
+
+ The first important point to know about \QA is that it stores all
+ settings related to its appearance \e and a list of installed
+ documentation in a help collection file. This means, when starting \QA
+ with different collection files, \QA may look totally different. This
+ complete separation of settings makes it possible to deploy \QA as a
+ custom help viewer for more than one application on one machine
+ without risk of interference between different instances of \QA.
+
+ To apply a certain help collection to \QA, specify the respective
+ collection file on the command line when starting it. For example:
+
+ \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 8
+
+ However, storing all settings in one collection file raises some problems.
+ The collection file is usually installed in the same directory as the
+ application itself, or one of its subdirectories. Depending on the
+ directory and the operating system, the user may not have any permissions
+ to modify this file which would happen when the user settings are stored.
+ Also, it may not even be possible to give the user write permissions;
+ e.g., when the file is located on a read-only medium like a CD-ROM.
+
+ Even if it is possible to give everybody the right to store their settings
+ in a globally available collection file, the settings from one user would
+ be overwritten by another user when exiting \QA.
+
+ To solve this dilemma, \QA creates user specific collection files which
+ are more or less copied from the original collection file. The user-specific
+ collection file will be saved in a subdirectory of the path returned by
+ QDesktopServices::DataLocation. The subdirectory, or \e{cache directory}
+ within this user-specific location, can be defined in the help collection
+ project file. For example:
+
+ \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 7
+
+ So, when calling
+
+ \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 8
+
+ \QA actually uses the collection file:
+
+ \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 9
+
+ There is no need ever to start \QA with the user specific collection
+ file. Instead, the collection file shipped with the application should
+ always be used. Also, when adding or removing documentation from the
+ collection file (see next section) always use the normal collection file.
+ \QA will take care of synchronizing the user collection files when the
+ list of installed documentation has changed.
+
+ \section1 Displaying Custom Documentation
+
+ Before \QA is able to show documentation, it has to know where it can
+ find the actual documentation files, meaning that it has to know the
+ location of the Qt compressed help file (*.qch). As already mentioned,
+ \QA stores references to the compressed help files in the currently used
+ collection file. So, when creating a new collection file you can list
+ all compressed help files \QA should display.
+
+ \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 5
+
+ Sometimes, depending on the application for which \QA acts as a
+ help viewer, more documentation needs to be added over time; for
+ example, when installing more application components or plugins.
+ This can be done manually by starting \QA, opening the \gui{Edit|Preferences}
+ dialog and navigating to the \gui{Documentation} tab page. Then click
+ the \gui{Add...} button, select a Qt compressed help file (*.qch)
+ and press \gui{Open}. However, this approach has the disadvantage
+ that every user has to do it manually to get access to the new
+ documentation.
+
+ The prefered way of adding documentation to an already existing collection
+ file is to use the \c{-register} command line flag of \QA. When starting
+ \QA with this flag, the documentation will be added and \QA will
+ exit right away displaying a message if the registration was successful
+ or not.
+
+ \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 6
+
+ The \c{-quiet} flag can be passed on to \QA to prevent it from writing
+ out the status message.
+
+ \bold{Note:} \QA will show the documentation in the contents view in the same
+ order as it was registered.
+
+
+ \section1 Changing the Appearance of Qt Assistant
+
+ The appearance of \QA can be changed by passing different command line options
+ on startup. However, these command line options only allow to show or hide
+ specific widgets, like the contents or index view. Other customizations, such
+ as changing the application title or icon, or disabling the filter functionality,
+ can be done by creating a custom help collection file.
+
+ \section2 Creating a Custom Help Collection File
+
+ The help collection file (*.qhc) used by \QA is created when running the
+ \c qcollectiongenerator tool on a help collection project file (*.qhcp).
+ The project file format is XML and supports the following tags:
+
+ \table
+ \header
+ \o Tag
+ \o Brief Description
+ \row
+ \o \c{<title>}
+ \o This property is used to specify a window title for \QA.
+ \row
+ \o \c{<homePage>}
+ \o This tag specifies which page should be display when
+ pressing the home button in \QA's main user interface.
+ \row
+ \o \c{<startPage>}
+ \o This tag specifies which page \QA should initially
+ display when the help collection is used.
+ \row
+ \o \c{<currentFilter>}
+ \o This tag specifies the \l{Qt Assistant in More Detail#Preferences Dialog}{filter}
+ that is initially used.
+ If this filter is not specified, the documentation will not be filtered. This has
+ no impact if only one documentation set is installed.
+ \row
+ \o \c{<applicationIcon>}
+ \o This tag describes an icon that will be used instead of the normal \QA
+ application icon. This is specified as a relative path from the directory
+ containing the collection file.
+ \row
+ \o \c{<enableFilterFunctionality>}
+ \o This tag is used to enable or disable user accessible filter functionality,
+ making it possible to prevent the user from changing any filter when running \QA.
+ It does not mean that the internal filter functionality is completely disabled.
+ Set the value to \c{false} if you want to disable the filtering. If the filter
+ toolbar should be shown by default, set the attribute \c{visible} to \c{true}.
+ \row
+ \o \c{<enableDocumentationManager>}
+ \o This tag is used to specify whether the documentation manager should be shown
+ in the preferences dialog. Disabling the Documentation Manager allows you to limit
+ \QA to display a specific documentation set or make it impossible for the end user
+ to accidentally remove or install documentation. To hide the documentation manager,
+ set the tag value to \c{false}.
+ \row
+ \o \c{<enableAddressBar>}
+ \o This tag describes if the address bar can be shown. By default it is
+ enabled; if you want to disable it set the tag value to \c{false}. If the
+ address bar functionality is enabled, the address bar can be shown by setting the
+ tag attribute \c{visible} to \c{true}.
+ \row
+ \o \c{<aboutMenuText>, <text>}
+ \o The \c{aboutMenuText} tag lists texts for different languages which will
+ later appear in the \menu{Help} menu; e.g., "About Application". A text is
+ specified within the \c{text} tags; the \c{language} attribute takes the two
+ letter language name. The text is used as the default text if no language
+ attribute is specified.
+ \row
+ \o \c{<aboutDialog>, <file>, <icon>}
+ \o The \c{aboutDialog} tag can be used to specify the text for the \gui{About}
+ dialog that can be opened from the \menu{Help} menu. The text is taken from the
+ file in the \c{file} tags. It is possible to specify a different file or any
+ language. The icon defined by the \c{icon} tags is applied to any language.
+ \row
+ \o \c{<cacheDirectory base="collection|default">}
+ \o The cache directory is used to store index files
+ needed for the full text search and a copy of the collection file.
+ The copy is needed because \QA stores all its settings in the collection file; i.e., it must be writable for the user.
+ The directory is specified as a relative path.
+ If the \c{base} attribute is set to "collection", the path is
+ relative to the directory the collection file resides in.
+ If the attribute is set to "default" or if it is missing,
+ the path is relative to the directory given by
+ QDesktopServices::DataLocation. The first form is useful for
+ collections that are used in a "mobile" way, e.g. carried around
+ on a USB stick.
+
+ \endtable
+
+ In addition to those \QA specific tags, the tags for generating and registering
+ documentation can be used. See \l{The Qt Help Framework#Creating a Qt Help Collection}
+ {Qt Help Collection} documentation for more information.
+
+ An example of a help collection file that uses all the available tags is shown below:
+
+ \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 1
+
+ To create the binary collection file, run the \c qcollectiongenerator tool:
+
+ \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 10
+
+ To test the generated collection file, start \QA in the following way:
+
+ \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 8
+
+ \section1 Using Qt Assistant Remotely
+
+ Even though the help viewer is a standalone application, it will mostly
+ be launched by the application it provides help for. This approach
+ gives the application the possibility to ask for specific help contents
+ to be displayed as soon as the help viewer is started. Another advantage
+ with this approach is that the application can communicate with the
+ help viewer process and can therefore request other help contents to be
+ shown depending on the current state of the application.
+
+ So, to use \QA as the custom help viewer of your application, simply
+ create a QProcess and specify the path to the Assistant executable. In order
+ to make Assistant listen to your application, turn on its remote control
+ functionality by passing the \c{-enableRemoteControl} command line option.
+
+ The following example shows how this can be done:
+
+ \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 2
+
+ Once \QA is running, you can send commands by using the stdin channel of
+ the process. The code snippet below shows how to tell \QA to show a certain
+ page in the documentation.
+
+ \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 3
+
+ Note that the trailing newline character is required to mark the end
+ of the input.
+
+ The following commands can be used to control \QA:
+
+ \table
+ \header
+ \o Command
+ \o Brief Description
+ \row
+ \o \c{show <Widget>}
+ \o Shows the dock widget specified by <Widget>. If the widget
+ is already shown and this command is sent again, the widget will be
+ activated, meaning that it will be raised and given the input focus.
+ Possible values for <Widget> are "contents", "index", "bookmarks" or "search".
+ \row
+ \o \c{hide <Widget>}
+ \o Hides the dock widget specified by <Widget>. Possible values for
+ <Widget> are "contents", "index", "bookmarks" and "search".
+ \row
+ \o \c{setSource <Url>}
+ \o Displays the given <Url>. The URL can be absolute or relative
+ to the currently displayed page. If the URL is absolute, it has to
+ be a valid Qt help system URL; i.e., starting with "qthelp://".
+ \row
+ \o \c{activateKeyword <Keyword>}
+ \o Inserts the specified <Keyword> into the line edit of the
+ index dock widget and activates the corresponding item in the
+ index list. If such an item has more than one link associated
+ with it, a topic chooser will be shown.
+ \row
+ \o \c{activateIdentifier <Id>}
+ \o Displays the help contents for the given <Id>. An ID is unique
+ in each namespace and has only one link associated to it, so the
+ topic chooser will never pop up.
+ \row
+ \o \c{syncContents}
+ \o Selects the item in the contents widget which corresponds to
+ the currently displayed page.
+ \row
+ \o \c{setCurrentFilter <filter>}
+ \o Selects the specified filter and updates the visual representation
+ accordingly.
+ \row
+ \o \c{expandToc <Depth>}
+ \o Expands the table of contents tree to the given depth. If depth
+ is 0, the tree will be collapsed completely. If depth is -1,
+ the tree will be expanded completely.
+ \row
+ \o \c{register <help file>}
+ \o Adds the given Qt compressed help file to the collection.
+ \row
+ \o \c{unregister <help file>}
+ \o Removes the given Qt compressed help file from the collection.
+ \endtable
+
+ If you want to send several commands within a short period of time, it is
+ recommended that you write only a single line to the stdin of the process
+ instead of one line for every command. The commands have to be separated by
+ a semicolon, as shown in the following example:
+
+ \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 4
+
+ \section1 Compatibility with Old Formats
+
+ In older versions of Qt, the help system was based on Document Content File
+ (DCF) and Qt Assistant Documentation Profile (ADP) formats. In contrast,
+ Qt Assistant and the help system used in Qt 4.4 use the formats described
+ earlier in this manual.
+
+ Unfortunately, the old file formats are not compatible with the new ones.
+ In general, the differences are not that big \mdash in most cases is the old
+ format is just a subset of the new one. One example is the \c namespace tag in
+ the Qt Help Project format, which was not part of the old format, but plays a vital
+ role in the new one. To help you to move to the new file format, we have created
+ a conversion wizard.
+
+ The wizard is started by executing \c qhelpconverter. It guides you through the
+ conversion of different parts of the file and generates a new \c qch or \c qhcp
+ file.
+
+ Once the wizard is finished and the files created, run the \c qhelpgenerator
+ or the \c qcollectiongenerator tool to generate the binary help files used by \QA.
+*/
+
+/*
+\section2 Modifying \QA with Command Line Options
+
+ Different help collections can be shown by simply passing the help collection
+ path to \QA. For example:
+
+ \snippet doc/src/snippets/code/doc_src_assistant-manual.qdoc 0
+
+ Other available options the can be passed on the command line.
+
+ \table
+ \header
+ \o Command Line Option
+ \o Brief Description
+ \row
+ \o -collectionFile <file.qhc>
+ \o Uses the specified collection file instead of the default one.
+ \row
+ \o -showUrl URL
+ \o Shows the document referenced by URL.
+ \row
+ \o -enableRemoteControl
+ \o Enables \QA to be remotly controlled.
+ \row
+ \o -show <widget>
+ \o Shows the specified dockwidget which can be "contents", "index",
+ "bookmarks" or "search".
+ \row
+ \o -hide <widget>
+ \o Hides the specified dockwidget which can be "contents", "index",
+ "bookmarks" or "search.
+ \row
+ \o -activate <widget>
+ \o Activates the specified dockwidget which can be "contents",
+ "index", "bookmarks" or "search.
+ \row
+ \o -register <doc.qch>
+ \o Registers the specified compressed help file in the given help
+ collection.
+ \row
+ \o -unregister <doc.qch>
+ \o Unregisters the specified compressed help file from the given
+ collection file.
+ \row
+ \o -quiet
+ \o Doesn't show any error, warning or success messages.
+ \endtable
+ */
diff --git a/doc/src/development/debug.qdoc b/doc/src/development/debug.qdoc
new file mode 100644
index 000000000..95079f2f7
--- /dev/null
+++ b/doc/src/development/debug.qdoc
@@ -0,0 +1,243 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 debug.html
+ \title Debugging Techniques
+
+ Here we present some useful hints to help you with debugging your
+ Qt-based software.
+
+ \tableofcontents
+
+ \section1 Configuring Qt for Debugging
+
+ When \l{Installation}{configuring Qt for installation}, it is possible
+ to ensure that it is built to include debug symbols that can make it
+ easier to track bugs in applications and libraries. However, on some
+ platforms, building Qt in debug mode will cause applications to be larger
+ than desirable.
+
+ \section2 Debugging in Mac OS X and Xcode
+
+ \section3 Debugging With/Without Frameworks
+
+ The basic stuff you need to know about debug libraries and
+ frameworks is found at developer.apple.com in:
+ \l{http://developer.apple.com/technotes/tn2004/tn2124.html#SECDEBUGLIB}
+ {Apple Technicle Note TN2124} Qt follows that.
+
+ When you build Qt, frameworks are built by default, and inside the
+ framework you will find both a release and a debug version (e.g.,
+ QtCore and QtCore_debug). If you pass the \c{-no-framework} flag
+ when you build Qt, two dylibs are built for each Qt library (e.g.,
+ libQtCore.4.dylib and libQtCore_debug.4.dylib).
+
+ What happens when you link depends on whether you use frameworks
+ or not. We don't see a compelling reason to recommend one over the
+ other.
+
+ \section4 With Frameworks:
+
+ Since the release and debug libraries are inside the framework,
+ the app is simply linked against the framework. Then when you run
+ in the debugger, you will get either the release version or the
+ debug version, depending on whether you set \c{DYLD_IMAGE_SUFFIX}.
+ If you don't set it, you get the release version by default (i.e.,
+ non _debug). If you set \c{DYLD_IMAGE_SUFFIX=_debug}, you get the
+ debug version.
+
+ \section4 Without Frameworks:
+
+ When you tell \e{qmake} to generate a Makefile with the debug
+ config, it will link against the _debug version of the libraries
+ and generate debug symbols for the app. Running this program in
+ GDB will then work like running GDB on other platforms, and you
+ will be able to trace inside Qt.
+
+ \section3 Debug Symbols and Size
+
+ The amount of space taken up by debug symbols generated by GCC can
+ be excessively large. However, with the release of Xcode 2.3 it is
+ now possible to use Dwarf symbols which take up a significantly
+ smaller amount of space. To enable this feature when configuring
+ Qt, pass the \c{-dwarf-2} option to the configure script.
+
+ This is not enabled by default because previous versions of Xcode
+ will not work with the compiler flag used to implement this
+ feature. Mac OS X 10.5 will use dwarf-2 symbols by default.
+
+ dwarf-2 symbols contain references to source code, so the size of
+ the final debug application should compare favorably to a release
+ build.
+
+ \omit
+ Although it is not necessary to build Qt with debug symbols to use the
+ other techniques described in this document, certain features are only
+ available when Qt is configured for debugging.
+ \endomit
+
+ \section1 Command Line Options Recognized by Qt
+
+ When you run a Qt application, you can specify several
+ command-line options that can help with debugging. These are
+ recognized by QApplication.
+
+ \table
+ \header \o Option \o Description
+ \row \o \c -nograb
+ \o The application should never grab \link QWidget::grabMouse()
+ the mouse\endlink or \link QWidget::grabKeyboard() the
+ keyboard \endlink. This option is set by default when the
+ program is running in the \c gdb debugger under Linux.
+ \row \o \c -dograb
+ \o Ignore any implicit or explicit \c{-nograb}. \c -dograb wins over
+ \c -nograb even when \c -nograb is last on the command line.
+ \row \o \c -sync
+ \o Runs the application in X synchronous mode. Synchronous mode
+ forces the X server to perform each X client request
+ immediately and not use buffer optimization. It makes the
+ program easier to debug and often much slower. The \c -sync
+ option is only valid for the X11 version of Qt.
+ \endtable
+
+ \section1 Warning and Debugging Messages
+
+ Qt includes four global functions for writing out warning and debug
+ text. You can use them for the following purposes:
+
+ \list
+ \o qDebug() is used for writing custom debug output.
+ \o qWarning() is used to report warnings and recoverable errors in
+ your application.
+ \o qCritical() is used for writing critical error mesages and
+ reporting system errors.
+ \o qFatal() is used for writing fatal error messages shortly before exiting.
+ \endlist
+
+ If you include the <QtDebug> header file, the \c qDebug() function
+ can also be used as an output stream. For example:
+
+ \snippet doc/src/snippets/code/doc_src_debug.qdoc 0
+
+ The Qt implementation of these functions prints the text to the
+ \c stderr output under Unix/X11 and Mac OS X. With Windows, if it
+ is a console application, the text is sent to console; otherwise, it
+ is sent to the debugger. You can take over these functions by
+ installing a message handler using qInstallMsgHandler().
+
+ If the \c QT_FATAL_WARNINGS environment variable is set,
+ qWarning() exits after printing the warning message. This makes
+ it easy to obtain a backtrace in the debugger.
+
+ Both qDebug() and qWarning() are debugging tools. They can be
+ compiled away by defining \c QT_NO_DEBUG_OUTPUT and \c
+ QT_NO_WARNING_OUTPUT during compilation.
+
+ The debugging functions QObject::dumpObjectTree() and
+ QObject::dumpObjectInfo() are often useful when an application
+ looks or acts strangely. More useful if you use \l{QObject::setObjectName()}{object names}
+ than not, but often useful even without names.
+
+ \section1 Providing Support for the qDebug() Stream Operator
+
+ You can implement the stream operator used by qDebug() to provide
+ debugging support for your classes. The class that implements the
+ stream is \c QDebug. The functions you need to know about in \c
+ QDebug are \c space() and \c nospace(). They both return a debug
+ stream; the difference between them is whether a space is inserted
+ between each item. Here is an example for a class that represents
+ a 2D coordinate.
+
+ \snippet doc/src/snippets/qdebug/qdebugsnippet.cpp 0
+
+ Integration of custom types with Qt's meta-object system is covered
+ in more depth in the \l{Creating Custom Qt Types} document.
+
+ \section1 Debugging Macros
+
+ The header file \c <QtGlobal> contains some debugging macros and
+ \c{#define}s.
+
+ Three important macros are:
+ \list
+ \o \l{Q_ASSERT()}{Q_ASSERT}(cond), where \c cond is a boolean
+ expression, writes the warning "ASSERT: '\e{cond}' in file xyz.cpp, line
+ 234" and exits if \c cond is false.
+ \o \l{Q_ASSERT_X()}{Q_ASSERT_X}(cond, where, what), where \c cond is a
+ boolean expression, \c where a location, and \c what a message,
+ writes the warning: "ASSERT failure in \c{where}: '\c{what}', file xyz.cpp, line 234"
+ and exits if \c cond is false.
+ \o \l{Q_CHECK_PTR()}{Q_CHECK_PTR}(ptr), where \c ptr is a pointer.
+ Writes the warning "In file xyz.cpp, line 234: Out of memory" and
+ exits if \c ptr is 0.
+ \endlist
+
+ These macros are useful for detecting program errors, e.g. like this:
+
+ \snippet doc/src/snippets/code/doc_src_debug.qdoc 1
+
+ Q_ASSERT(), Q_ASSERT_X(), and Q_CHECK_PTR() expand to nothing if
+ \c QT_NO_DEBUG is defined during compilation. For this reason,
+ the arguments to these macro should not have any side-effects.
+ Here is an incorrect usage of Q_CHECK_PTR():
+
+ \snippet doc/src/snippets/code/doc_src_debug.qdoc 2
+
+ If this code is compiled with \c QT_NO_DEBUG defined, the code in
+ the Q_CHECK_PTR() expression is not executed and \e alloc returns
+ an unitialized pointer.
+
+ The Qt library contains hundreds of internal checks that will
+ print warning messages when a programming error is detected. We
+ therefore recommend that you use a debug version of Qt when
+ developing Qt-based software.
+
+ \section1 Common Bugs
+
+ There is one bug that is so common that it deserves mention here:
+ If you include the Q_OBJECT macro in a class declaration and
+ run \link moc.html the meta-object compiler\endlink (\c{moc}),
+ but forget to link the \c{moc}-generated object code into your
+ executable, you will get very confusing error messages. Any link
+ error complaining about a lack of \c{vtbl}, \c{_vtbl}, \c{__vtbl}
+ or similar is likely to be a result of this problem.
+*/
diff --git a/doc/src/development/designer-manual.qdoc b/doc/src/development/designer-manual.qdoc
new file mode 100644
index 000000000..bfd80666f
--- /dev/null
+++ b/doc/src/development/designer-manual.qdoc
@@ -0,0 +1,2793 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 designer-manual.html
+
+ \title Qt Designer Manual
+ \ingroup qttools
+ \keyword Qt Designer
+
+ \QD is Qt's tool for designing and building graphical user
+ interfaces (GUIs) from Qt components. You can compose and customize your
+ widgets or dialogs in a what-you-see-is-what-you-get (WYSIWYG) manner, and
+ test them using different styles and resolutions.
+
+ Widgets and forms created with \QD integrated seamlessly with programmed
+ code, using Qt's signals and slots mechanism, that lets you easily assign
+ behavior to graphical elements. All properties set in \QD can be changed
+ dynamically within the code. Furthermore, features like widget promotion
+ and custom plugins allow you to use your own components with \QD.
+
+ If you are new to \QD, you can take a look at the
+ \l{Getting To Know Qt Designer} document. For a quick tutorial on how to
+ use \QD, refer to \l{A Quick Start to Qt Designer}.
+
+ \image designer-multiple-screenshot.png
+
+ For more information on using \QD, you can take a look at the following
+ links:
+
+ \list
+ \o \l{Qt Designer's Editing Modes}
+ \list
+ \o \l{Qt Designer's Widget Editing Mode}{Widget Editing Mode}
+ \o \l{Qt Designer's Signals and Slots Editing Mode}
+ {Signals and Slots Editing Mode}
+ \o \l{Qt Designer's Buddy Editing Mode}
+ {Buddy Editing Mode}
+ \o \l{Qt Designer's Tab Order Editing Mode}
+ {Tab Order Editing Mode}
+ \endlist
+ \o \l{Using Layouts in Qt Designer}
+ \o \l{Saving, Previewing and Printing Forms in Qt Designer}
+ \o \l{Using Containers in Qt Designer}
+ \o \l{Creating Main Windows in Qt Designer}
+ \o \l{Editing Resources with Qt Designer}
+ \o \l{Using Stylesheets with Qt Designer}
+ \o \l{Using a Designer UI File in Your Application}
+ \endlist
+
+ For advanced usage of \QD, you can refer to these links:
+
+ \list
+ \o \l{Customizing Qt Designer Forms}
+ \o \l{Using Custom Widgets with Qt Designer}
+ \o \l{Creating Custom Widgets for Qt Designer}
+ \o \l{Creating Custom Widget Extensions}
+ \o \l{Qt Designer's UI File Format}
+ \endlist
+
+
+ \section1 Legal Notices
+
+ Some source code in \QD is licensed under specific highly permissive
+ licenses from the original authors. The Qt team gratefully acknowledges
+ these contributions to \QD and all uses of \QD should also acknowledge
+ these contributions and quote the following license statements in an
+ appendix to the documentation.
+
+ \list
+ \i \l{Implementation of the Recursive Shadow Casting Algorithm in Qt Designer}
+ \endlist
+*/
+
+
+/*!
+ \page designer-to-know.html
+ \contentspage {Qt Designer Manual}{Contents}
+
+
+ \title Getting to Know Qt Designer
+
+ \tableofcontents
+
+ \image designer-screenshot.png
+
+ \section1 Launching Designer
+
+ The way that you launch \QD depends on your platform:
+
+ \list
+ \i On Windows, click the Start button, under the \gui Programs submenu,
+ open the \gui{Qt 4} submenu and click \gui Designer.
+ \i On Unix or Linux, you might find a \QD icon on the desktop
+ background or in the desktop start menu under the \gui Programming
+ or \gui Development submenus. You can launch \QD from this icon.
+ Alternatively, you can type \c{designer} in a terminal window.
+ \i On Mac OS X, double click on \QD in \gui Finder.
+ \endlist
+
+ \section1 The User Interface
+
+ When used as a standalone application, \QD's user interface can be
+ configured to provide either a multi-window user interface (the default
+ mode), or it can be used in docked window mode. When used from within an
+ integrated development environment (IDE) only the multi-window user
+ interface is available. You can switch modes in the \gui Preferences dialog
+ from the \gui Edit menu.
+
+ In multi-window mode, you can arrange each of the tool windows to suit your
+ working style. The main window consists of a menu bar, a tool bar, and a
+ widget box that contains the widgets you can use to create your user
+ interface.
+
+ \target MainWindow
+ \table
+ \row
+ \i \inlineimage designer-main-window.png
+ \i \bold{Qt Designer's Main Window}
+
+ The menu bar provides all the standard actions for managing forms,
+ using the clipboard, and accessing application-specific help.
+ The current editing mode, the tool windows, and the forms in use can
+ also be accessed via the menu bar.
+
+ The tool bar displays common actions that are used when editing a form.
+ These are also available via the main menu.
+
+ The widget box provides common widgets and layouts that are used to
+ design components. These are grouped into categories that reflect their
+ uses or features.
+ \endtable
+
+ Most features of \QD are accessible via the menu bar, the tool bar, or the
+ widget box. Some features are also available through context menus that can
+ be opened over the form windows. On most platforms, the right mouse is used
+ to open context menus.
+
+ \target WidgetBox
+ \table
+ \row
+ \i \inlineimage designer-widget-box.png
+ \i \bold{Qt Designer's Widget Box}
+
+ The widget box provides a selection of standard Qt widgets, layouts,
+ and other objects that can be used to create user interfaces on forms.
+ Each of the categories in the widget box contain widgets with similar
+ uses or related features.
+
+ \note Since Qt 4.4, new widgets have been included, e.g.,
+ QPlainTextEdit, QCommandLinkButton, QScrollArea, QMdiArea, and
+ QWebView.
+
+ You can display all of the available objects in a category by clicking
+ on the handle next to the category label. When in
+ \l{Qt Designer's Widget Editing Mode}{Widget Editing
+ Mode}, you can add objects to a form by dragging the appropriate items
+ from the widget box onto the form, and dropping them in the required
+ locations.
+
+ \QD provides a scratch pad feature that allows you to collect
+ frequently used objects in a separate category. The scratch pad
+ category can be filled with any widget currently displayed in a form
+ by dragging them from the form and dropping them onto the widget box.
+ These widgets can be used in the same way as any other widgets, but
+ they can also contain child widgets. Open a context menu over a widget
+ to change its name or remove it from the scratch pad.
+ \endtable
+
+
+ \section1 The Concept of Layouts in Qt
+
+ A layout is used to arrange and manage the elements that make up a user
+ interface. Qt provides a number of classes to automatically handle layouts
+ -- QHBoxLayout, QVBoxLayout, QGridLayout, and QFormLayout. These classes
+ solve the challenge of laying out widgets automatically, providing a user
+ interface that behaves predictably. Fortunately knowledge of the layout
+ classes is not required to arrange widgets with \QD. Instead, select one of
+ the \gui{Lay Out Horizontally}, \gui{Lay Out in a Grid}, etc., options from
+ the context menu.
+
+ Each Qt widget has a recommended size, known as \l{QWidget::}{sizeHint()}.
+ The layout manager will attempt to resize a widget to meet its size hint.
+ In some cases, there is no need to have a different size. For example, the
+ height of a QLineEdit is always a fixed value, depending on font size and
+ style. In other cases, you may require the size to change, e.g., the width
+ of a QLineEdit or the width and height of item view widgets. This is where
+ the widget size constraints -- \l{QWidget::minimumSize()}{minimumSize} and
+ \l{QWidget::maximumSize()}{maximumSize} constraints come into play. These
+ are properties you can set in the property editor. For example, to override
+ the default \l{QWidget::}{sizeHint()}, simply set
+ \l{QWidget::minimumSize()}{minimumSize} and \l{QWidget::maximumSize()}
+ {maximumSize} to the same value. Alternatively, to use the current size as
+ a size constraint value, choose one of the \gui{Size Constraint} options
+ from the widget's context menu. The layout will then ensure that those
+ constraints are met. To control the size of your widgets via code, you can
+ reimplement \l{QWidget::}{sizeHint()} in your code.
+
+ The screenshot below shows the breakdown of a basic user interface designed
+ using a grid. The coordinates on the screenshot show the position of each
+ widget within the grid.
+
+ \image addressbook-tutorial-part3-labeled-layout.png
+
+ \note Inside the grid, the QPushButton objects are actually nested. The
+ buttons on the right are first placed in a QVBoxLayout; the buttons at the
+ bottom are first placed in a QHBoxLayout. Finally, they are put into
+ coordinates (1,2) and (3,1) of the QGridLayout.
+
+ To visualize, imagine the layout as a box that shrinks as much as possible,
+ attempting to \e squeeze your widgets in a neat arrangement, and, at the
+ same time, maximize the use of available space.
+
+ Qt's layouts help when you:
+
+ \list 1
+ \i Resize the user face to fit different window sizes.
+ \i Resize elements within the user interface to suit different
+ localizations.
+ \i Arrange elements to adhere to layout guidelines for different
+ platforms.
+ \endlist
+
+ So, you no longer have to worry about rearranging widgets for different
+ platforms, settings, and languages.
+
+ The example below shows how different localizations can affect the user
+ interface. When a localization requires more space for longer text strings
+ the Qt layout automatically scales to accommodate this, while ensuring that
+ the user interface looks presentable and still matches the platform
+ guidelines.
+
+ \table
+ \header
+ \i A Dialog in English
+ \i A Dialog in French
+ \row
+ \i \image designer-english-dialog.png
+ \i \image designer-french-dialog.png
+ \endtable
+
+ The process of laying out widgets consists of creating the layout hierarchy
+ while setting as few widget size constraints as possible.
+
+ For a more technical perspective on Qt's layout classes, refer to the
+ \l{Layout Management} documentation.
+*/
+
+
+/*!
+ \page designer-quick-start.html
+ \contentspage {Qt Designer Manual}{Contents}
+
+
+ \title A Quick Start to Qt Designer
+
+ Using \QD involves \bold four basic steps:
+
+ \list 1
+ \o Choose your form and objects
+ \o Lay the objects out on the form
+ \o Connect the signals to the slots
+ \o Preview the form
+ \endlist
+
+ \image rgbController-screenshot.png
+
+ Suppose you would like to design a small widget (see screenshot above) that
+ contains the controls needed to manipulate Red, Green and Blue (RGB) values
+ -- a type of widget that can be seen everywhere in image manipulation
+ programs.
+
+ \table
+ \row
+ \i \inlineimage designer-choosing-form.png
+ \i \bold{Choosing a Form}
+
+ You start by choosing \gui Widget from the \gui{New Form} dialog.
+ \endtable
+
+
+ \table
+ \row
+ \i \inlineimage rgbController-arrangement.png
+ \i \bold{Placing Widgets on a Form}
+
+ Drag three labels, three spin boxes and three vertical sliders on to your
+ form. To change the label's default text, simply double-click on it. You
+ can arrange them according to how you would like them to be laid out.
+ \endtable
+
+ To ensure that they are laid out exactly like this in your program, you
+ need to place these widgets into a layout. We will do this in groups of
+ three. Select the "RED" label. Then, hold down \key Ctrl while you select
+ its corresponding spin box and slider. In the \gui{Form} menu, select
+ \gui{Lay Out in a Grid}.
+
+ \table
+ \row
+ \i \inlineimage rgbController-form-gridLayout.png
+ \i \inlineimage rgbController-selectForLayout.png
+ \endtable
+
+
+ Repeat the step for the other two labels along with their corresponding
+ spin boxes and sliders as well.
+
+ The next step is to combine all three layouts into one \bold{main layout}.
+ The main layout is the top level widget's (in this case, the QWidget)
+ layout. It is important that your top level widget has a layout; otherwise,
+ the widgets on your window will not resize when your window is resized. To
+ set the layout, \gui{Right click} anywhere on your form, outside of the
+ three separate layouts, and select \gui{Lay Out Horizontally}.
+ Alternatively, you could also select \gui{Lay Out in a Grid} -- you will
+ still see the same arrangement (shown below).
+
+ \image rgbController-final-layout.png
+
+ \note Main layouts cannot be seen on the form. To check if you have a main
+ layout installed, try resizing your form; your widgets should resize
+ accordingly. Alternatively, you can take a look at \QD's
+ \gui{Object Inspector}. If your top level widget does not have a layout,
+ you will see the broken layout icon next to it,
+ \inlineimage rgbController-no-toplevel-layout.png
+ .
+
+ When you click on the slider and drag it to a certain value, you want the
+ spin box to display the slider's position. To accomplish this behavior, you
+ need to connect the slider's \l{QAbstractSlider::}{valueChanged()} signal
+ to the spin box's \l{QSpinBox::}{setValue()} slot. You also need to make
+ the reverse connections, e.g., connect the spin box's \l{QSpinBox::}
+ {valueChanged()} signal to the slider's \l{QAbstractSlider::value()}
+ {setValue()} slot.
+
+ To do this, you have to switch to \gui{Edit Signals/Slots} mode, either by
+ pressing \key{F4} or something \gui{Edit Signals/Slots} from the \gui{Edit}
+ menu.
+
+ \table
+ \row
+ \i \inlineimage rgbController-signalsAndSlots.png
+ \i \bold{Connecting Signals to Slots}
+
+ Click on the slider and drag the cursor towards the spin box. The
+ \gui{Configure Connection} dialog, shown below, will pop up. Select the
+ correct signal and slot and click \gui OK.
+ \endtable
+
+ \image rgbController-configure-connection1.png
+
+ Repeat the step (in reverse order), clicking on the spin box and dragging
+ the cursor towards the slider, to connect the spin box's
+ \l{QSpinBox::}{valueChanged()} signal to the slider's
+ \l{QAbstractSlider::value()}{setValue()} slot.
+
+ You can use the screenshot below as a guide to selecting the correct signal
+ and slot.
+
+ \image rgbController-configure-connection2.png
+
+ Now that you have successfully connected the objects for the "RED"
+ component of the RGB Controller, do the same for the "GREEN" and "BLUE"
+ components as well.
+
+ Since RGB values range between 0 and 255, we need to limit the spin box
+ and slider to that particular range.
+
+ \table
+ \row
+ \i \inlineimage rgbController-property-editing.png
+ \i \bold{Setting Widget Properties}
+
+ Click on the first spin box. Within the \gui{Property Editor}, you will
+ see \l{QSpinBox}'s properties. Enter "255" for the
+ \l{QSpinBox::}{maximum} property. Then, click on the first vertical
+ slider, you will see \l{QAbstractSlider}'s properties. Enter "255" for
+ the \l{QAbstractSlider::}{maximum} property as well. Repeat this
+ process for the remaining spin boxes and sliders.
+ \endtable
+
+ Now, we preview your form to see how it would look in your application -
+ press \key{Ctrl + R} or select \gui Preview from the \gui Form menu. Try
+ dragging the slider - the spin box will mirror its value too (and vice
+ versa). Also, you can resize it to see how the layouts that are used to
+ manage the child widgets, respond to different window sizes.
+*/
+
+
+/*!
+ \page designer-editing-mode.html
+ \previouspage Getting to Know Qt Designer
+ \contentspage {Qt Designer Manual}{Contents}
+ \nextpage Using Layouts in Qt Designer
+
+ \title Qt Designer's Editing Modes
+
+ \QD provides four editing modes: \l{Qt Designer's Widget Editing Mode}
+ {Widget Editing Mode}, \l{Qt Designer's Signals and Slots Editing Mode}
+ {Signals and Slots Editing Mode}, \l{Qt Designer's Buddy Editing Mode}
+ {Buddy Editing Mode} and \l{Qt Designer's Tab Order Editing Mode}
+ {Tab Order Editing Mode}. When working with \QD, you will always be in one
+ of these four modes. To switch between modes, simply select it from the
+ \gui{Edit} menu or the toolbar. The table below describes these modes in
+ further detail.
+
+ \table
+ \header \i \i \bold{Editing Modes}
+ \row
+ \i \inlineimage designer-widget-tool.png
+ \i In \l{Qt Designer's Widget Editing Mode}{Edit} mode, we can
+ change the appearance of the form, add layouts, and edit the
+ properties of each widget. To switch to this mode, press
+ \key{F3}. This is \QD's default mode.
+
+ \row
+ \i \inlineimage designer-connection-tool.png
+ \i In \l{Qt Designer's Signals and Slots Editing Mode}
+ {Signals and Slots} mode, we can connect widgets together using
+ Qt's signals and slots mechanism. To switch to this mode, press
+ \key{F4}.
+
+ \row
+ \i \inlineimage designer-buddy-tool.png
+ \i In \l{Qt Designer's Buddy Editing Mode}{Buddy Editing Mode},
+ buddy widgets can be assigned to label widgets to help them
+ handle keyboard focus correctly.
+
+ \row
+ \i \inlineimage designer-tab-order-tool.png
+ \i In \l{Qt Designer's Tab Order Editing Mode}
+ {Tab Order Editing Mode}, we can set the order in which widgets
+ receive the keyboard focus.
+ \endtable
+
+*/
+
+
+/*!
+ \page designer-widget-mode.html
+ \previouspage Qt Designer's Editing Modes
+ \contentspage {Qt Designer Manual}{Contents}
+ \nextpage Qt Designer's Signals and Slots Editing Mode
+
+ \title Qt Designer's Widget Editing Mode
+
+ \image designer-editing-mode.png
+
+ In the Widget Editing Mode, objects can be dragged from the main window's
+ widget box to a form, edited, resized, dragged around on the form, and even
+ dragged between forms. Object properties can be modified interactively, so
+ that changes can be seen immediately. The editing interface is intuitive
+ for simple operations, yet it still supports Qt's powerful layout
+ facilities.
+
+
+ \tableofcontents
+
+ To create and edit new forms, open the \gui File menu and select
+ \gui{New Form...} or press \key{Ctrl+N}. Existing forms can also be edited
+ by selecting \gui{Open Form...} from the \gui File menu or pressing
+ \key{Ctrl+O}.
+
+ At any point, you can save your form by selecting the \gui{Save From As...}
+ option from the \gui File menu. The UI files saved by \QD contain
+ information about the objects used, and any details of signal and slot
+ connections between them.
+
+
+ \section1 Editing A Form
+
+ By default, new forms are opened in widget editing mode. To switch to Edit
+ mode from another mode, select \gui{Edit Widgets} from the \gui Edit menu
+ or press the \key F3 key.
+
+ Objects are added to the form by dragging them from the main widget box
+ and dropping them in the desired location on the form. Once there, they
+ can be moved around simply by dragging them, or using the cursor keys.
+ Pressing the \key Ctrl key at the same time moves the selected widget
+ pixel by pixel, while using the cursor keys alone make the selected widget
+ snap to the grid when it is moved. Objects can be selected by clicking on
+ them with the left mouse button. You can also use the \key Tab key to
+ change the selection.
+
+ ### Screenshot of widget box, again
+
+ The widget box contains objects in a number of different categories, all of
+ which can be placed on the form as required. The only objects that require
+ a little more preparation are the \gui Container widgets. These are
+ described in further detail in the \l{Using Containers in Qt Designer}
+ chapter.
+
+
+ \target SelectingObjects
+ \table
+ \row
+ \i \inlineimage designer-selecting-widget.png
+ \i \bold{Selecting Objects}
+
+ Objects on the form are selected by clicking on them with the left
+ mouse button. When an object is selected, resize handles are shown at
+ each corner and the midpoint of each side, indicating that it can be
+ resized.
+
+ To select additional objects, hold down the \key Shift key and click on
+ them. If more than one object is selected, the current object will be
+ displayed with resize handles of a different color.
+
+ To move a widget within a layout, hold down \key Shift and \key Control
+ while dragging the widget. This extends the selection to the widget's
+ parent layout.
+
+ Alternatively, objects can be selected in the
+ \l{The Object Inspector}{Object Inspector}.
+ \endtable
+
+ When a widget is selected, normal clipboard operations such as cut, copy,
+ and paste can be performed on it. All of these operations can be done and
+ undone, as necessary.
+
+ The following shortcuts can be used:
+
+ \target ShortcutsForEditing
+ \table
+ \header \i Action \i Shortcut \i Description
+ \row
+ \i Cut
+ \i \key{Ctrl+X}
+ \i Cuts the selected objects to the clipboard.
+ \row
+ \i Copy
+ \i \key{Ctrl+C}
+ \i Copies the selected objects to the clipboard.
+ \row
+ \i Paste
+ \i \key{Ctrl+V}
+ \i Pastes the objects in the clipboard onto the form.
+ \row
+ \i Delete
+ \i \key Delete
+ \i Deletes the selected objects.
+ \row
+ \i Clone object
+ \i \key{Ctrl+drag} (leftmouse button)
+ \i Makes a copy of the selected object or group of objects.
+ \row
+ \i Preview
+ \i \key{Ctrl+R}
+ \i Shows a preview of the form.
+ \endtable
+
+ All of the above actions (apart from cloning) can be accessed via both the
+ \gui Edit menu and the form's context menu. These menus also provide
+ funcitons for laying out objects as well as a \gui{Select All} function to
+ select all the objects on the form.
+
+ Widgets are not unique objects; you can make as many copies of them as you
+ need. To quickly duplicate a widget, you can clone it by holding down the
+ \key Ctrl key and dragging it. This allows widgets to be copied and placed
+ on the form more quickly than with clipboard operations.
+
+
+ \target DragAndDrop
+ \table
+ \row
+ \i \inlineimage designer-dragging-onto-form.png
+ \i \bold{Drag and Drop}
+
+ \QD makes extensive use of the drag and drop facilities provided by Qt.
+ Widgets can be dragged from the widget box and dropped onto the form.
+
+ Widgets can also be "cloned" on the form: Holding down \key Ctrl and
+ dragging the widget creates a copy of the widget that can be dragged to
+ a new position.
+
+ It is also possible to drop Widgets onto the \l {The Object Inspector}
+ {Object Inspector} to handle nested layouts easily.
+ \endtable
+
+ \QD allows selections of objects to be copied, pasted, and dragged between
+ forms. You can use this feature to create more than one copy of the same
+ form, and experiment with different layouts in each of them.
+
+
+ \section2 The Property Editor
+
+ The Property Editor always displays properties of the currently selected
+ object on the form. The available properties depend on the object being
+ edited, but all of the widgets provided have common properties such as
+ \l{QObject::}{objectName}, the object's internal name, and
+ \l{QWidget::}{enabled}, the property that determines whether an
+ object can be interacted with or not.
+
+
+ \target EditingProperties
+ \table
+ \row
+ \i \inlineimage designer-property-editor.png
+ \i \bold{Editing Properties}
+
+ The property editor uses standard Qt input widgets to manage the
+ properties of jbects on the form. Textual properties are shown in line
+ edits, integer properties are displayed in spinboxes, boolean
+ properties are displayed in check boxes, and compound properties such
+ as colors and sizes are presented in drop-down lists of input widgets.
+
+ Modified properties are indicated with bold labels. To reset them, click
+ the arrow button on the right.
+
+ Changes in properties are applied to all selected objects that have the
+ same property.
+ \endtable
+
+ Certain properties are treated specially by the property editor:
+
+ \list
+ \o Compound properties -- properties that are made up of more than one
+ value -- are represented as nodes that can be expanded, allowing
+ their values to be edited.
+ \o Properties that contain a choice or selection of flags are edited
+ via combo boxes with checkable items.
+ \o Properties that allow access to rich data types, such as QPalette,
+ are modified using dialogs that open when the properties are edited.
+ QLabel and the widgets in the \gui Buttons section of the widget box
+ have a \c text property that can also be edited by double-clicking
+ on the widget or by pressing \gui F2. \QD interprets the backslash
+ (\\) character specially, enabling newline (\\n) characters to be
+ inserted into the text; the \\\\ character sequence is used to
+ insert a single backslash into the text. A context menu can also be
+ opened while editing, providing another way to insert special
+ characters and newlines into the text.
+ \endlist
+
+
+ \section2 Dynamic Properties
+
+ The property editor can also be used to add new
+ \l{QObject#Dynamic Properties}{dynamic properties} to both standard Qt
+ widgets and to forms themselves. Since Qt 4.4, dynamic properties are added
+ and removed via the property editor's toolbar, shown below.
+
+ \image designer-property-editor-toolbar.png
+
+ To add a dynamic property, clcik on the \gui Add button
+ \inlineimage designer-property-editor-add-dynamic.png
+ . To remove it, click on the \gui Remove button
+ \inlineimage designer-property-editor-remove-dynamic.png
+ instead. You can also sort the properties alphabetically and change the
+ color groups by clickinig on the \gui Configure button
+ \inlineimage designer-property-editor-configure.png
+ .
+
+ \section2 The Object Inspector
+ \table
+ \row
+ \i \inlineimage designer-object-inspector.png
+ \i \bold{The Object Inspector}
+
+ The \gui{Object Inspector} displays a hierarchical list of all the
+ objects on the form that is currently being edited. To show the child
+ objects of a container widget or a layout, click the handle next to the
+ object label.
+
+ Each object on a form can be selected by clicking on the corresponding
+ item in the \gui{Object Inspector}. Right-clicking opens the form's
+ context menu. These features can be useful if you have many overlapping
+ objects. To locate an object in the \gui{Object Inspector}, use
+ \key{Ctrl+F}.
+
+ Since Qt 4.4, double-clicking on the object's name allows you to change
+ the object's name with the in-place editor.
+
+ Since Qt 4.5, the \gui{Object Inspector} displays the layout state of
+ the containers. The broken layout icon ###ICON is displayed if there is
+ something wrong with the layouts.
+
+ \endtable
+*/
+
+
+/*!
+ \page designer-layouts.html
+ \previouspage Qt Designer's Widget Editing Mode
+ \contentspage
+ \nextpage Qt Designer's Signals and Slots Editing Mode
+
+ \title Using Layouts in Qt Designer
+
+ Before a form can be used, the objects on the form need to be placed into
+ layouts. This ensures that the objects will be displayed properly when the
+ form is previewed or used in an application. Placing objects in a layout
+ also ensures that they will be resized correctly when the form is resized.
+
+
+ \tableofcontents
+
+ \section1 Applying and Breaking Layouts
+
+ The simplest way to manage objects is to apply a layout to a group of
+ existing objects. This is achieved by selecting the objects that you need
+ to manage and applying one of the standard layouts using the main toolbar,
+ the \gui Form menu, or the form's context menu.
+
+ Once widgets have been inserted into a layout, it is not possible to move
+ and resize them individually because the layout itself controls the
+ geometry of each widget within it, taking account of the hints provided by
+ spacers. Instead, you must either break the layout and adjust each object's
+ geometry manually, or you can influence the widget's geometry by resizing
+ the layout.
+
+ To break the layout, press \key{Ctrl+0} or choose \gui{Break Layout} from
+ the form's context menu, the \gui Form menu or the main toolbar. You can
+ also add and remove spacers from the layout to influence the geometries of
+ the widgets.
+
+
+ \target InsertingObjectsIntoALayout
+ \table
+ \row
+ \i \inlineimage designer-layout-inserting.png
+ \i \bold{Inserting Objects into a Layout}
+
+ Objects can be inserted into an existing layout by dragging them from
+ their current positions and dropping them at the required location. A
+ blue cursor is displayed in the layout as an object is dragged over
+ it to indicate where the object will be added.
+ \endtable
+
+
+ \section2 Setting A Top Level Layout
+
+ The form's top level layout can be set by clearing the slection (click the
+ left mouse button on the form itself) and applying a layout. A top level
+ layout is necessary to ensure that your widgets will resize correctly when
+ its window is resized. To check if you have set a top level layout, preview
+ your widget and attempt to resize the window by dragging the size grip.
+
+ \table
+ \row
+ \i \inlineimage designer-set-layout.png
+ \i \bold{Applying a Layout}
+
+ To apply a layout, you can select your choice of layout from the
+ toolbar shown on the left, or from the context menu shown below.
+ \endtable
+
+ \image designer-set-layout2.png
+
+
+ \section2 Horizontal and Vertical Layouts
+
+ The simplest way to arrange objects on a form is to place them in a
+ horizontal or vertical layout. Horizontal layouts ensure that the widgets
+ within are aligned horizontally; vertical layouts ensure that they are
+ aligned vertically.
+
+ Horizontal and vertical layouts can be combined and nested to any depth.
+ However, if you need more control over the placement of objects, consider
+ using the grid layout.
+
+
+ \section3 The Grid Layout
+
+ Complex form layouts can be created by placing objects in a grid layout.
+ This kind of layout gives the form designer much more freedom to arrange
+ widgets on the form, but can result in a much less flexible layout.
+ However, for some kinds of form layout, a grid arrangement is much more
+ suitable than a nested arrangement of horizontal and vertical layouts.
+
+
+ \section3 Splitter Layouts
+
+ Another common way to manage the layout of objects on a form is to place
+ them in a splitter. These splitters arrange the objects horizontally or
+ vertically in the same way as normal layouts, but also allow the user to
+ adjust the amount of space allocated to each object.
+
+ \image designer-splitter-layout.png
+
+ Although QSplitter is a container widget, \QD treats splitter objects as
+ layouts that are applied to existing widgets. To place a group of widgets
+ into a splitter, select them
+ \l{Qt Designer's Widget Editing Mode#SelectingObjects}{as described here}
+ then apply the splitter layout by using the appropriate toolbar button,
+ keyboard shortcut, or \gui{Lay out} context menu entry.
+
+
+ \section3 The Form Layout
+
+ Since Qt 4.4, another layout class has been included -- QFormLayout. This
+ class manages widgets in a two-column form; the left column holds labels
+ and the right column holds field widgets such as line edits, spin boxes,
+ etc. The QFormLayout class adheres to various platform look and feel
+ guidelines and supports wrapping for long rows.
+
+ \image designer-form-layout.png
+
+ The UI file above results in the previews shown below.
+
+ \table
+ \header
+ \i Windows XP
+ \i Mac OS X
+ \i Cleanlooks
+ \row
+ \i \inlineimage designer-form-layout-windowsXP.png
+ \i \inlineimage designer-form-layout-macintosh.png
+ \i \inlineimage designer-form-layout-cleanlooks.png
+ \endtable
+
+
+ \section2 Shortcut Keys
+
+ In addition to the standard toolbar and context menu entries, there is also
+ a set of keyboard shortcuts to apply layouts on widgets.
+
+ \target LayoutShortcuts
+ \table
+ \header
+ \i Layout
+ \i Shortcut
+ \i Description
+ \row
+ \i Horizontal
+ \i \key{Ctrl+1}
+ \i Places the selected objects in a horizontal layout.
+ \row
+ \i Vertical
+ \i \key{Ctrl+2}
+ \i Places the selected objects in a vertical layout.
+ \row
+ \i Grid
+ \i \key{Ctrl+5}
+ \i Places the selected objects in a grid layout.
+ \row
+ \i Form
+ \i \key{Ctrl+6}
+ \i Places the selected objects in a form layout.
+ \row
+ \i Horizontal splitter
+ \i \key{Ctrl+3}
+ \i Creates a horizontal splitter and places the selected objects
+ inside it.
+ \row
+ \i Vertical splitter
+ \i \key{Ctrl+4}
+ \i Creates a vertical splitter and places the selected objects
+ inside it.
+ \row
+ \i Adjust size
+ \i \key{Ctrl+J}
+ \i Adjusts the size of the layout to ensure that each child object
+ has sufficient space to display its contents. See
+ QWidget::adjustSize() for more information.
+ \endtable
+
+ \note \key{Ctrl+0} is used to break a layout.
+
+*/
+
+
+/*!
+ \page designer-preview.html
+ \contentspage {Qt Designer Manual}{Contents}
+ \previouspage Using Layouts in Qt Designer
+ \nextpage Qt Designer's Buddy Editing Mode
+ \title Saving, Previewing and Printing Forms in Qt Designer
+
+ Although \QD's forms are accurate representations of the components being
+ edited, it is useful to preview the final appearance while editing. This
+ feature can be activated by opening the \gui Form menu and selecting
+ \gui Preview, or by pressing \key{Ctrl+R} when in the form.
+
+ \image designer-dialog-preview.png
+
+ The preview shows exactly what the final component will look like when used
+ in an application.
+
+ Since Qt 4.4, it is possible to preview forms with various skins - default
+ skins, skins created with Qt Style Sheets or device skins. This feature
+ simulates the effect of calling \c{QApplication::setStyleSheet()} in the
+ application.
+
+ To preview your form with skins, open the \gui Edit menu and select
+ \gui{Preferences...}
+
+ You will see the dialog shown below:
+
+ \image designer-preview-style.png
+
+ The \gui{Print/Preview Configuration} checkbox must be checked to activate
+ previews of skins. You can select the styles provided from the \gui{Style}
+ drop-down box.
+
+ \image designer-preview-style-selection.png
+
+ Alternatively, you can preview custom style sheet created with Qt Style
+ Sheets. The figure below shows an example of Qt Style Sheet syntax and the
+ corresponding output.
+
+ \image designer-preview-stylesheet.png
+
+ Another option would be to preview your form with device skins. A list of
+ generic device skins are available in \QD, however, you may also use
+ other QVFB skins with the \gui{Browse...} option.
+
+ \image designer-preview-deviceskin-selection.png
+
+
+ \section1 Viewing the Form's Code
+
+ Since Qt 4.4, it is possible to view code generated by the User Interface
+ Compiler (uic) for the \QD form.
+
+ \image designer-form-viewcode.png
+
+ Select \gui{View Code...} from the \gui{Form} menu and a dialog with the
+ generated code will be displayed. The screenshot below is an example of
+ code generated by the \c{uic}.
+
+ \image designer-code-viewer.png
+
+ \section1 Saving and Printing the Form
+
+ Forms created in \QD can be saved to an image or printed.
+
+ \table
+ \row
+ \i \inlineimage designer-file-menu.png
+ \i \bold{Saving Forms}
+
+ To save a form as an image, choose the \gui{Save Image...} option. The file
+ will be saved in \c{.png} format.
+
+ \bold{Printing Forms}
+
+ To print a form, select the \gui{Print...} option.
+
+ \endtable
+*/
+
+
+/*!
+ \page designer-connection-mode.html
+ \contentspage {Qt Designer Manual}{Contents}
+ \previouspage Using Layouts in Qt Designer
+ \nextpage Qt Designer's Buddy Editing Mode
+
+
+ \title Qt Designer's Signals and Slots Editing Mode
+
+ \image designer-connection-mode.png
+
+ In \QD's signals and slots editing mode, you can connect objects in a form
+ together using Qt's signals and slots mechanism. Both widgets and layouts
+ can be connected via an intuitive connection interface, using the menu of
+ compatible signals and slots provided by \QD. When a form is saved, all
+ connections are preserved so that they will be ready for use when your
+ project is built.
+
+
+ \tableofcontents
+
+ For more information on Qt's signals and sltos mechanism, refer to the
+ \l{Signals and Slots} document.
+
+
+ \section1 Connecting Objects
+
+ To begin connecting objects, enter the signals and slots editing mode by
+ opening the \gui Edit menu and selecting \gui{Edit Signals/Slots}, or by
+ pressing the \key F4 key.
+
+ All widgets and layouts on the form can be connected together. However,
+ spacers just provide spacing hints to layouts, so they cannot be connected
+ to other objects.
+
+
+ \target HighlightedObjects
+ \table
+ \row
+ \i \inlineimage designer-connection-highlight.png
+ \i \bold{Highlighted Objects}
+
+ When the cursor is over an object that can be used in a connection, the
+ object will be highlighted.
+ \endtable
+
+ To make a connectionn, press the left mouse button and drag the cursor
+ towards the object you want to connect it to. As you do this, a line will
+ extend from the source object to the cursor. If the cursor is over another
+ object on the form, the line will end with an arrow head that points to the
+ destination object. This indicates that a connection will be made between
+ the two objects when you release the mouse button.
+
+ You can abandon the connection at any point while you are dragging the
+ connection path by pressing \key{Esc}.
+
+ \target MakingAConnection
+ \table
+ \row
+ \i \inlineimage designer-connection-making.png
+ \i \bold{Making a Connection}
+
+ The connection path will change its shape as the cursor moves around
+ the form. As it passes over objects, they are highlighted, indicating
+ that they can be used in a signal and slot connection. Release the
+ mouse button to make the connection.
+ \endtable
+
+ The \gui{Configure Connection} dialog (below) is displayed, showing signals
+ from the source object and slots from the destination object that you can
+ use.
+
+ \image designer-connection-dialog.png
+
+ To complete the connection, select a signal from the source object and a
+ slot from the destination object, then click \key OK. Click \key Cancel if
+ you wish to abandon the connection.
+
+ \note If the \gui{Show all signals and slots} checkbox is selected, all
+ available signals from the source object will be shown. Otherwise, the
+ signals and slots inherited from QWidget will be hidden.
+
+ You can make as many connections as you like between objects on the form;
+ it is possible to connect signals from objects to slots in the form itself.
+ As a result, the signal and slot connections in many dialogs can be
+ completely configured from within \QD.
+
+ \target ConnectingToTheForm
+ \table
+ \row
+ \i \inlineimage designer-connection-to-form.png
+ \i \bold{Connecting to a Form}
+
+ To connect an object to the form itself, simply position the cursor
+ over the form and release the mouse button. The end point of the
+ connection changes to the electrical "ground" symbol.
+ \endtable
+
+
+ \section1 Editing and Deleting Connections
+
+ By default, connection paths are created with two labels that show the
+ signal and slot involved in the connection. These labels are usually
+ oriented along the line of the connection. You can move them around inside
+ their host widgets by dragging the red square at each end of the connection
+ path.
+
+ \target ConnectionEditor
+ \table
+ \row
+ \i \inlineimage designer-connection-editor.png
+ \i \bold{The Signal/Slot Editor}
+
+ The signal and slot used in a connection can be changed after it has
+ been set up. When a connection is configured, it becomes visible in
+ \QD's signal and slot editor where it can be further edited. You can
+ also edit signal/slot connections by double-clicking on the connection
+ path or one of its labels to display the Connection Dialog.
+ \endtable
+
+ \target DeletingConnections
+ \table
+ \row
+ \i \inlineimage designer-connection-editing.png
+ \i \bold{Deleting Connections}
+
+ The whole connection can be selected by clicking on any of its path
+ segments. Once selected, a connection can be deleted with the
+ \key Delete key, ensuring that it will not be set up in the UI
+ file.
+ \endtable
+*/
+
+
+/*!
+ \page designer-buddy-mode.html
+ \contentspage{Qt Designer Manual}{Contents}
+ \previouspage Qt Designer's Signals and Slots Editing Mode
+ \nextpage Qt Designer's Tab Order Editing Mode
+
+ \title Qt Designer's Buddy Editing Mode
+
+ \image designer-buddy-mode.png
+
+ One of the most useful basic features of Qt is the support for buddy
+ widgets. A buddy widget accepts the input focus on behalf of a QLabel when
+ the user types the label's shortcut key combination. The buddy concept is
+ also used in Qt's \l{Model/View Programming}{model/view} framework.
+
+
+ \section1 Linking Labels to Buddy Widgets
+
+ To enter buddy editing mode, open the \gui Edit menu and select
+ \gui{Edit Buddies}. This mode presents the widgets on the form in a similar
+ way to \l{Qt Designer's Signals and Slots Editing Mode}{signals and slots
+ editing mode} but in this mode, connections must start at label widgets.
+ Ideally, you should connect each label widget that provides a shortcut with
+ a suitable input widget, such as a QLineEdit.
+
+
+ \target MakingBuddies
+ \table
+ \row
+ \i \inlineimage designer-buddy-making.png
+ \i \bold{Making Buddies}
+
+ To define a buddy widget for a label, click on the label, drag the
+ connection to another widget on the form, and release the mouse button.
+ The connection shown indicates how input focus is passed to the buddy
+ widget. You can use the form preview to test the connections between
+ each label and its buddy.
+ \endtable
+
+
+ \section1 Removing Buddy Connections
+
+ Only one buddy widget can be defined for each label. To change the buddy
+ used, it is necessary to delete any existing buddy connection before you
+ create a new one.
+
+ Connections between labels and their buddy widgets can be deleted in the
+ same way as signal-slot connections in signals and slots editing mode:
+ Select the buddy connection by clicking on it and press the \key Delete
+ key. This operation does not modify either the label or its buddy in any
+ way.
+*/
+
+
+/*!
+ \page designer-tab-order.html
+ \contentspage {Qt Designer Manual}{Contents}
+ \previouspage Qt Designer's Buddy Editing Mode
+ \nextpage Using Containers in Qt Designer
+
+ \title Qt Designer's Tab Order Editing Mode
+
+ \image designer-tab-order-mode.png
+
+ Many users expect to be able to navigate between widgets and controls
+ using only the keyboard. Qt lets the user navigate between input widgets
+ with the \key Tab and \key{Shift+Tab} keyboard shortcuts. The default
+ \e{tab order} is based on the order in which widgets are constructed.
+ Although this order may be sufficient for many users, it is often better
+ to explicitly specify the tab order to make your application easier to
+ use.
+
+
+ \section1 Setting the Tab Order
+
+ To enter tab order editing mode, open the \gui Edit menu and select
+ \gui{Edit Tab Order}. In this mode, each input widget in the form is shown
+ with a number indicating its position in the tab order. So, if the user
+ gives the first input widget the input focus and then presses the tab key,
+ the focus will move to the second input widget, and so on.
+
+ The tab order is defined by clicking on each of the numbers in the correct
+ order. The first number you click will change to red, indicating the
+ currently edited position in the tab order chain. The widget associated
+ with the number will become the first one in the tab order chain. Clicking
+ on another widget will make it the second in the tab order, and so on.
+
+ Repeat this process until you are satisfied with the tab order in the form
+ -- you do not need to click every input widget if you see that the
+ remaining widgets are already in the correct order. Numbers, for which you
+ already set the order, change to green, while those which are not clicked
+ yet, remain blue.
+
+ If you make a mistake, simply double click outside of any number or choose
+ \gui{Restart} from the form's context menu to start again. If you have many
+ widgets on your form and would like to change the tab order in the middle or
+ at the end of the tab order chain, you can edit it at any position. Press
+ \key{Ctrl} and click the number from which you want to start.
+ Alternatively, choose \gui{Start from Here} in the context menu.
+
+*/
+
+
+/*!
+ \page designer-using-containers.html
+ \contentspage {Qt Designer Manual}{Contents}
+ \previouspage Qt Designer's Tab Order Editing Mode
+ \nextpage Creating Main Windows in Qt Designer
+
+
+ \title Using Containers in Qt Designer
+
+ Container widgets provide high level control over groups of objects on a
+ form. They can be used to perform a variety of functions, such as managing
+ input widgets, providing paged and tabbed layouts, or just acting as
+ decorative containers for other objects.
+
+ \image designer-widget-morph.png
+
+ \QD provides visual feedback to help you place objects inside your
+ containers. When you drag an object from the widget box (or elsewhere) on
+ the form, each container will be highlighted when the cursor is positioned
+ over it. This indicates that you can drop the object inside, making it a
+ child object of the container. This feedback is important because it is
+ easy to place objects close to containers without actually placing them
+ inside. Both widgets and spacers can be used inside containers.
+
+ Stacked widgets, tab widgets, and toolboxes are handled specially in \QD.
+ Normally, when adding pages (tabs, pages, compartments) to these containers
+ in your own code, you need to supply existing widgets, either as
+ placeholders or containing child widgets. In \QD, these are automatically
+ created for you, so you can add child objects to each page straight away.
+
+ Each container typically allows its child objects to be arranged in one or
+ more layouts. The type of layout management provided depends on each
+ container, although setting the layout is usually just a matter of
+ selecting the container by clicking it, and applying a layout. The table
+ below shows a list of available containers.
+
+ \table
+ \row
+ \i \inlineimage designer-containers-frame.png
+ \i \bold Frames
+
+ Frames are used to enclose and group widgets, as well as to provide
+ decoration. They are used as the foundation for more complex
+ containers, but they can also be used as placeholders in forms.
+
+ The most important properties of frames are \c frameShape,
+ \c frameShadow, \c lineWidth, and \c midLineWidth. These are described
+ in more detail in the QFrame class description.
+
+ \row
+ \i \inlineimage designer-containers-groupbox.png
+ \i \bold{Group Boxes}
+
+ Group boxes are usually used to group together collections of
+ checkboxes and radio buttons with similar purposes.
+
+ Among the significant properties of group boxes are \c title, \c flat,
+ \c checkable, and \c checked. These are demonstrated in the
+ \l{widgets/groupbox}{Group Box} example, and described in the QGroupBox
+ class documentation. Each group box can contain its own layout, and
+ this is necessary if it contains other widgets. To add a layout to the
+ group box, click inside it and apply the layout as usual.
+
+ \row
+ \i \inlineimage designer-containers-stackedwidget.png
+ \i \bold{Stacked Widgets}
+
+ Stacked widgets are collections of widgets in which only the topmost
+ layer is visible. Control over the visible layer is usually managed by
+ another widget, such as combobox, using signals and slots.
+
+ \QD shows arrows in the top-right corner of the stack to allow you to
+ see all the widgets in the stack when designing it. These arrows do not
+ appear in the preview or in the final component. To navigate between
+ pages in the stack, select the stacked widget and use the
+ \gui{Next Page} and \gui{Previous Page} entries from the context menu.
+ The \gui{Insert Page} and \gui{Delete Page} context menu options allow
+ you to add and remove pages.
+
+ \row
+ \i \inlineimage designer-containers-tabwidget.png
+ \i \bold{Tab Widgets}
+
+ Tab widgets allow the developer to split up the contents of a widget
+ into different labelled sections, only one of which is displayed at any
+ given time. By default, the tab widget contains two tabs, and these can
+ be deleted or renamed as required. You can also add additional tabs.
+
+ To delete a tab:
+ \list
+ \o Click on its label to make it the current tab.
+ \o Select the tab widget and open its context menu.
+ \o Select \gui{Delete Page}.
+ \endlist
+
+ To add a new tab:
+ \list
+ \o Select the tab widget and open its context menu.
+ \o Select \gui{Insert Page}.
+ \o You can add a page before or after the \e current page. \QD
+ will create a new widget for that particular tab and insert it
+ into the tab widget.
+ \o You can set the title of the current tab by changing the
+ \c currentTabText property in the \gui{Property Editor}.
+ \endlist
+
+ \row
+ \i \inlineimage designer-containers-toolbox.png
+ \i \bold{ToolBox Widgets}
+
+ Toolbox widgets provide a series of pages or compartments in a toolbox.
+ They are handled in a way similar to stacked widgets.
+
+ To rename a page in a toolbox, make the toolbox your current pange and
+ change its \c currentItemText property from the \gui{Property Editor}.
+
+ To add a new page, select \gui{Insert Page} from the toolbox widget's
+ context menu. You can add the page before or after the current page.
+
+ To delete a page, select \gui{Delete Page} from the toolbox widget's
+ context menu.
+
+ \row
+ \i \inlineimage designer-containers-dockwidget.png
+ \i \bold{Dock Widgets}
+
+ Dock widgets are floating panels, often containing input widgets and
+ more complex controls, that are either attached to the edges of the
+ main window in "dock areas", or floated as independent tool windows.
+
+ Although dock widgets can be added to any type of form, they are
+ typically used with forms created from the
+ \l{Creating Main Windows in Qt Designer}{main window template}.
+
+ \endtable
+*/
+
+
+/*!
+ \page designer-creating-mainwindows.html
+ \contentspage {Qt Designer Manual}{Contents}
+ \previouspage Using Containers in Qt Designer
+ \nextpage Editing Resources with Qt Designer
+
+ \title Creating Main Windows in Qt Designer
+
+ \QD can be used to create user interfaces for different purposes, and
+ it provides different kinds of form templates for each user interface. The
+ main window template is used to create application windows with menu bars,
+ toolbars, and dock widgets.
+
+ \omit
+ \image designer-mainwindow-example.png
+ \endomit
+
+ Create a new main window by opening the \gui File menu and selecting the
+ \gui{New Form...} option, or by pressing \key{Ctrl+N}. Then, select the
+ \gui{Main Window} template. This template provides a main application
+ window containing a menu bar and a toolbar by default -- these can be
+ removed if they are not required.
+
+ If you remove the menu bar, a new one can be created by selecting the
+ \gui{Create Menu Bar} option from the context menu, obtained by
+ right-clicking within the main window form.
+
+ An application can have only \bold one menu bar, but \bold several
+ toolbars.
+
+
+ \section1 Menus
+
+ Menus are added to the menu bar by modifying the \gui{Type Here}
+ placeholders. One of these is always present for editing purposes, and
+ will not be displayed in the preview or in the finished window.
+
+ Once created, the properties of a menu can be accessed using the
+ \l{Qt Designer's Widget Editing Mode#The Property Editor}{Property Editor},
+ and each menu can be accessed for this purpose via the
+ \l{Qt Designer's Widget Editing Mode#The Object Inspector}{The Object Inspector}.
+
+ Existing menus can be removed by opening a context menu over the label in
+ the menu bar, and selecting \gui{Remove Menu 'menu_name'}.
+
+
+ \target CreatingAMenu
+ \raw HTML
+ <div style="float: left; margin-right: 2em">
+ \endraw
+ \inlineimage designer-creating-menu1.png
+ \inlineimage designer-creating-menu2.png
+ \br
+ \inlineimage designer-creating-menu3.png
+ \inlineimage designer-creating-menu4.png
+ \raw HTML
+ </div>
+ \endraw
+
+ \section2 Creating a Menu
+
+ Double-click the placeholder item to begin editing. The menu text,
+ displayed using a line edit, can be modified.
+
+ Insert the required text for the new menu. Inserting an
+ ampersand character (&) causes the letter following it to be
+ used as a mnemonic for the menu.
+
+ Press \key Return or \key Enter to accept the new text, or press
+ \key Escape to reject it. You can undo the editing operation later if
+ required.
+
+ \raw HTML
+ <div style="clear: both" />
+ \endraw
+
+ Menus can also be rearranged in the menu bar simply by dragging and
+ dropping them in the preferred location. A vertical red line indicates the
+ position where the menu will be inserted.
+
+ Menus can contain any number of entries and separators, and can be nested
+ to the required depth. Adding new entries to menus can be achieved by
+ navigating the menu structure in the usual way.
+
+ \target CreatingAMenuEntry
+ \raw HTML
+ <div style="float: right; margin-left: 2em">
+ \endraw
+ \inlineimage designer-creating-menu-entry1.png
+ \inlineimage designer-creating-menu-entry2.png
+ \br
+ \inlineimage designer-creating-menu-entry3.png
+ \inlineimage designer-creating-menu-entry4.png
+ \raw HTML
+ </div>
+ \endraw
+
+ \section2 Creating a Menu Entry
+
+ Double-click the \gui{Type Here} placeholder to begin editing, or
+ double-click \gui{Add Separator} to insert a new separator line after
+ the last entry in the menu.
+
+ The menu entry's text is displayed using a line edit, and can be
+ modified.
+
+ Insert the required text for the new entry, optionally using
+ the ampersand character (&) to mark the letter to use as a
+ mnemonic for the entry.
+
+ Press \key Return or \key Enter to accept the new text, or press
+ \key Escape to reject it. The action created for this menu entry will
+ be accessible via the \l{#TheActionEditor}{Action Editor}, and any
+ associated keyboard shortcut can be set there.
+
+ \raw HTML
+ <div style="clear: both" />
+ \endraw
+
+ Just like with menus, entries can be moved around simply by dragging and
+ dropping them in the preferred location. When an entry is dragged over a
+ closed menu, the menu will open to allow it to be inserted there. Since
+ menu entries are based on actions, they can also be dropped onto toolbars,
+ where they will be displayed as toolbar buttons.
+
+ \section1 Toolbars
+
+ \raw HTML
+ <div style="float: left; margin-right: 2em">
+ \endraw
+ \inlineimage designer-creating-toolbar.png
+ \raw HTML
+ </div>
+ \endraw
+
+ \section2 Creating and Removing a Toolbar
+
+ Toolbars are added to a main window in a similar way to the menu bar:
+ Select the \gui{Add Tool Bar} option from the form's context menu.
+ Alternatively, if there is an existing toolbar in the main window, you can
+ click the arrow on its right end to create a new toolbar.
+
+ Toolbars are removed from the form via an entry in the toolbar's context
+ menu.
+
+ \raw HTML
+ <div style="clear: both" />
+ \endraw
+
+ \section2 Adding and Removing Toolbar Buttons
+
+ Toolbar buttons are created as actions in the
+ \l{#TheActionEditor}{Action Editor} and dragged onto the toolbar.
+ Since actions can be represented by menu entries and toolbar buttons,
+ they can be moved between menus and toolbars.
+
+ \raw HTML
+ <div style="float: right; margin-left: 2em">
+ \endraw
+ \inlineimage designer-adding-toolbar-action.png
+ \inlineimage designer-removing-toolbar-action.png
+ \raw HTML
+ </div>
+ \endraw
+
+ To share an action between a menu and a toolbar, drag its icon from the
+ action editor to the toolbar rather than from the menu where its entry is
+ located. See \l{#Adding an Action}{Adding an Action} for more information
+ about this process.
+
+ Toolbar buttons are removed via the toolbar's context menu.
+
+ \raw HTML
+ <div style="clear: both" />
+ \endraw
+
+ \section1 Actions
+
+ With the menu bar and the toolbars in place, it's time to populate them
+ with actions. New actions for both menus and toolbars are created in the
+ action editor window, simplifying the creation and management of actions.
+
+ \target TheActionEditor
+ \raw HTML
+ <div style="float: left; margin-right: 2em">
+ \endraw
+ \inlineimage designer-action-editor.png
+ \raw HTML
+ </div>
+ \endraw
+
+ \section2 The Action Editor
+
+ Enable the action editor by opening the \gui Tools menu, and switching
+ on the \gui{Action Editor} option.
+
+ The action editor allows you to create \gui New actions and \gui Delete
+ actions. It also provides a search function, \gui Filter, using the
+ action's text.
+
+ \QD's action editor can be viewed in the classic \gui{Icon View} and
+ \gui{Detailed View}. The screenshot below shows the action editor in
+ \gui{Detailed View}. You can also copy and paste actions between menus,
+ toolbars and forms.
+
+ \raw HTML
+ <div style="clear: both" />
+ \endraw
+
+ \section2 Creating an Action
+
+ To create an action, use the action editor's \gui New button, which will
+ then pop up an input dialog. Provide the new action with a \gui Text --
+ this is the text that will appear in a menu entry and as the action's
+ tooltip. The text is also automatically added to an "action" prefix,
+ creating the action's \gui{Object Name}.
+
+ In addition, the dialog provides the option of selecting an \gui Icon for
+ the action, as well as removing the current icon.
+
+ Once the action is created, it can be used wherever actions are applicable.
+
+ \raw HTML
+ <div style="clear: left" />
+ \endraw
+
+ \target AddingAnAction
+ \raw HTML
+ <div style="float: right; margin-left: 2em">
+ \endraw
+ \inlineimage designer-adding-menu-action.png
+ \inlineimage designer-adding-toolbar-action.png
+ \raw HTML
+ </div>
+ \endraw
+
+ \section2 Adding an Action
+
+ To add an action to a menu or a toolbar, simply press the left mouse
+ button over the action in the action editor, and drag it to the
+ preferred location.
+
+ \QD provides highlighted guide lines that tell you where the action
+ will be added. Release the mouse button to add the action when you have
+ found the right spot.
+
+ \raw HTML
+ <div style="clear: right" />
+ \endraw
+
+ \section1 Dock Widgets
+
+ Since dock widgets are \l{Using Containers in Qt Designer}
+ {container widgets}, they can be added to a form in the usuasl way. Once
+ added to a form, dock widgets are not placed in any particular dock area by
+ default; you need to set the \gui{docked} property to true for each widget
+ and choose an appropriate value for its \gui{dockWidgetArea} property.
+
+ \target AddingADockWidget
+
+ \raw HTML
+ <div style="float: left; margin-right: 2em">
+ \endraw
+ \inlineimage designer-adding-dockwidget.png
+ \raw HTML
+ </div>
+ \endraw
+
+ \section2 Adding a Dock Widget
+
+ To add a dock widget to a form, drag one from the \gui Containers section
+ of the widget box, and drop it onto the main form area. Do not add the
+ dock widget to an existing layout. Instead, open the \gui{Property Editor}
+ and enable the \gui{docked} property to place it in a dock area.
+
+ Note that it is sometimes easier to configure a dock widget if it is added
+ to a form before a layout is applied to the central widget. For example,
+ it is possible to undock it and resize it, making it more convenient to
+ add child widgets.
+
+ Dock widgets can be optionally floated as independent tool windows.
+ Hence, it is useful to give them window titles by setting their
+ \l{QDockWidget::}{windowTitle} property. This also helps to identify them on the
+ form.
+
+ \raw HTML
+ <div style="clear: both" />
+ \endraw
+*/
+
+
+/*!
+ \page designer-resources.html
+ \contentspage {Qt Designer Manual}{Contents}
+ \previouspage Creating Main Windows in Qt Designer
+ \nextpage Using Stylesheets with Qt Designer
+
+ \title Editing Resources with Qt Designer
+
+ \image designer-resources-editing.png
+
+ \QD fully supports the \l{The Qt Resource System}{Qt Resource System},
+ enabling resources to be specified together with forms as they are
+ designed. To aid designers and developers manage resources for their
+ applications, \QD's resource editor allows resources to be defined on a
+ per-form basis. In other words, each form can have a separate resource
+ file.
+
+ \section1 Defining a Resource File
+
+ To specify a resource file you must enable the resource editor by opening
+ the \gui Tools menu, and switching on the \gui{Resource Browser} option.
+
+ \target ResourceFiles
+ \table
+ \row
+ \i \inlineimage designer-resource-browser.png
+ \i \bold{Resource Files}
+
+ Within the resource browser, you can open existing resource files or
+ create new ones. Click the \gui{Edit Resources} button
+ \inlineimage designer-edit-resources-button.png
+ to edit your resources. To reload resources, click on the \gui Reload
+ button
+ \inlineimage designer-reload-resources-button.png
+ .
+ \endtable
+
+
+ Once a resource file is loaded, you can create or remove entries in it
+ using the given \gui{Add Files}
+ \inlineimage designer-add-resource-entry-button.png
+ and \gui{Remove Files}
+ \inlineimage designer-remove-resource-entry-button.png
+ buttons, and specify resources (e.g., images) using the \gui{Add Files}
+ button
+ \inlineimage designer-add-files-button.png
+ . Note that these resources must reside within the current resource file's
+ directory or one of its subdirectories.
+
+
+ \target EditResource
+ \table
+ \row
+ \i \inlineimage designer-edit-resource.png
+ \i \bold{Editing Resource Files}
+
+ Press the
+ \inlineimage designer-add-resource-entry-button.png
+ button to add a new resource entry to the file. Then use the
+ \gui{Add Files} button
+ \inlineimage designer-add-files-button.png
+ to specify the resource.
+
+ You can remove resources by selecting the corresponding entry in the
+ resource editor, and pressing the
+ \inlineimage designer-remove-resource-entry-button.png
+ button.
+ \endtable
+
+
+ \section1 Using the Resources
+
+ Once the resources are defined you can use them actively when composing
+ your form. For example, you might want to create a tool button using an
+ icon specified in the resource file.
+
+ \target UsingResources
+ \table
+ \row
+ \i \inlineimage designer-resources-using.png
+ \i \bold{Using Resources}
+
+ When changing properties with values that may be defined within a
+ resource file, \QD's property editor allows you to specify a resource
+ in addition to the option of selecting a source file in the ordinary
+ way.
+
+ \row
+ \i \inlineimage designer-resource-selector.png
+ \i \bold{Selecting a Resource}
+
+ You can open the resource selector by clicking \gui{Choose Resource...}
+ to add resources any time during the design process.
+
+\omit
+... check with Friedemann
+To quickly assign icon pixmaps to actions or pixmap properties, you may
+drag the pixmap from the resource editor to the action editor, or to the
+pixmap property in the property editor.
+\endomit
+
+ \endtable
+*/
+
+
+/*!
+ \page designer-stylesheet.html
+ \contentspage {Qt Designer Manual}{Contents}
+ \previouspage Editing Resources with Qt Designer
+ \nextpage Using a Designer UI File in Your Application
+
+ \title Using Stylesheets with Qt Designer
+
+ Since Qt 4.2, it is possible to edit stylesheets in \QD with the stylesheet
+ editor.
+
+ \target UsingStylesheets
+ \table
+ \row
+ \i \inlineimage designer-stylesheet-options.png
+ \bold{Setting a Stylesheet}
+
+ The stylesheet editor can be accessed by right-clicking a widget
+ and selecting \gui{Change styleSheet...}
+
+ \row
+ \i \inlineimage designer-stylesheet-usage.png
+ \endtable
+
+*/
+
+
+/*!
+ \page designer-using-a-ui-file.html
+ \previouspage Using Stylesheets with Qt Designer
+ \contentspage {Qt Designer Manual}{Contents}
+ \nextpage Using Custom Widgets with Qt Designer
+
+ \title Using a Designer UI File in Your Application
+
+ With Qt's integrated build tools, \l{qmake Manual}{qmake} and \l uic, the
+ code for user interface components created with \QD is automatically
+ generated when the rest of your application is built. Forms can be included
+ and used directly from your application. Alternatively, you can use them to
+ extend subclasses of standard widgets. These forms can be processed at
+ compile time or at run time, depending on the approach used.
+
+
+ \tableofcontents
+ \section1 Compile Time Form Processing
+
+ A compile time processed form can be used in your application with one of
+ the following approaches:
+
+ \list
+ \o The Direct Approach: you construct a widget to use as a placeholder
+ for the component, and set up the user interface inside it.
+ \o The Single Inheritance Approach: you subclass the form's base class
+ (QWidget or QDialog, for example), and include a private instance
+ of the form's user interface object.
+ \o The MultipleInheritance Approach: you subclass both the form's base
+ class and the form's user interface object. This allows the widgets
+ defined in the form to be used directly from within the scope of
+ the subclass.
+ \endlist
+
+
+ \section2 The Direct Approach
+
+ To demonstrate how to use user interface (UI) files straight from
+ \QD, we create a simple Calculator Form application. This is based on the
+ original \l{Calculator Form Example}{Calculator Form} example.
+
+ The application consists of one source file, \c main.cpp and a UI
+ file.
+
+ The \c{calculatorform.ui} file designed with \QD is shown below:
+
+ \image directapproach-calculatorform.png
+
+ We will use \c qmake to build the executable, so we need to write a
+ \c{.pro} file:
+
+ \snippet doc/src/snippets/uitools/calculatorform/calculatorform.pro 0
+
+ The special feature of this file is the \c FORMS declaration that tells
+ \c qmake which files to process with \c uic. In this case, the
+ \c calculatorform.ui file is used to create a \c ui_calculatorform.h file
+ that can be used by any file listed in the \c SOURCES declaration. To
+ ensure that \c qmake generates the \c ui_calculatorform.h file, we need to
+ include it in a file listed in \c SOURCES. Since we only have \c main.cpp,
+ we include it there:
+
+ \snippet doc/src/snippets/uitools/calculatorform/main.cpp 0
+
+ This include is an additional check to ensure that we do not generate code
+ for UI files that are not used.
+
+ The \c main function creates the calculator widget by constructing a
+ standard QWidget that we use to host the user interface described by the
+ \c calculatorform.ui file.
+
+ \snippet doc/src/snippets/uitools/calculatorform/main.cpp 1
+
+ In this case, the \c{Ui::CalculatorForm} is an interface description object
+ from the \c ui_calculatorform.h file that sets up all the dialog's widgets
+ and the connections between its signals and slots.
+
+ This approach provides a quick and easy way to use simple, self-contained
+ components in your applications, but many componens created with \QD will
+ require close integration with the rest of the application code. For
+ instance, the \c CalculatorForm code provided above will compile and run,
+ but the QSpinBox objects will not interact with the QLabel as we need a
+ custom slot to carry out the add operation and display the result in the
+ QLabel. To achieve this, we need to subclass a standard Qt widget (known as
+ the single inheritance approach).
+
+
+ \section2 The Single Inheritance Approach
+
+ In this approach, we subclass a Qt widget and set up the user interface
+ from within the constructor. Components used in this way expose the widgets
+ and layouts used in the form to the Qt widget subclass, and provide a
+ standard system for making signal and slot connections between the user
+ interface and other objects in your application.
+
+ This approach is used in the \l{Calculator Form Example}{Calculator Form}
+ example.
+
+ To ensure that we can use the user interface, we need to include the header
+ file that \c uic generates before referring to \c{Ui::CalculatorForm}:
+
+ \snippet examples/designer/calculatorform/calculatorform.h 0
+
+ This means that the \c{.pro} file must be updated to include
+ \c{calculatorform.h}:
+
+ \snippet examples/designer/calculatorform/calculatorform.pro 0
+
+ The subclass is defined in the following way:
+
+ \snippet examples/designer/calculatorform/calculatorform.h 1
+
+ The important feature of the class is the private \c ui object which
+ provides the code for setting up and managing the user interface.
+
+ The constructor for the subclass constructs and configures all the widgets
+ and layouts for the dialog just by calling the \c ui object's \c setupUi()
+ function. Once this has been done, it is possible to modify the user
+ interface as needed.
+
+ \snippet examples/designer/calculatorform/calculatorform.cpp 0
+
+ We can connect signals and slots in user interface widgets in the usual
+ way, taking care to prefix the \c ui object to each widget used.
+
+ The advantages of this approach are its simple use of inheritance to
+ provide a QWidget-based interface, and its encapsulation of the user
+ interface widget variables within the \c ui data member. We can use this
+ method to define a number of user interfaces within the same widget, each
+ of which is contained within its own namespace, and overlay (or compose)
+ them. This approach can be used to create individual tabs from existing
+ forms, for example.
+
+
+ \section2 The Multiple Inheritance Approach
+
+ Forms created with \QD can be subclassed together with a standard
+ QWidget-based class. This approach makes all the user interface components
+ defined in the form directly accessible within the scope of the subclass,
+ and enables signal and slot connections to be made in the usual way with
+ the \l{QObject::connect()}{connect()} function.
+
+ This approach is used in the \l{Multiple Inheritance Example}
+ {Multiple Inheritance} example.
+
+ We need to include the header file that \c uic generates from the
+ \c calculatorform.ui file:
+
+ \snippet examples/uitools/multipleinheritance/calculatorform.h 0
+
+ The class is defined in a similar way to the one used in the
+ \l{The Single Inheritance Approach}{single inheritance approach}, except that
+ this time we inherit from \e{both} QWidget and \c{Ui::CalculatorForm}:
+
+ \snippet examples/uitools/multipleinheritance/calculatorform.h 1
+
+ We inherit \c{Ui::CalculatorForm} privately to ensure that the user
+ interface objects are private in our subclass. We can also inherit it with
+ the \c public or \c protected keywords in the same way that we could have
+ made \c ui public or protected in the previous case.
+
+ The constructor for the subclass performs many of the same tasks as the
+ constructor used in the \l{The Single Inheritance Approach}
+ {single inheritance} example:
+
+ \snippet examples/uitools/multipleinheritance/calculatorform.cpp 0
+
+ In this case, the widgets used in the user interface can be accessed in the
+ same say as a widget created in code by hand. We no longer require the
+ \c{ui} prefix to access them.
+
+ Subclassing using multiple inheritance gives us more direct access to the
+ contents of the form, is slightly cleaner than the single inheritance
+ approach, but does not conveniently support composition of multiple user
+ interfaces.
+
+
+ \section1 Run Time Form Processing
+
+ Alternatively, forms can be processed at run time, producing dynamically-
+ generated user interfaces. This can be done using the QtUiTools module
+ that provides the QUiLoader class to handle forms created with \QD.
+
+
+ \section2 The UiTools Approach
+
+ A resource file containing a UI file is required to process forms at
+ run time. Also, the application needs to be configured to use the QtUiTools
+ module. This is done by including the following declaration in a \c qmake
+ project file, ensuring that the application is compiled and linked
+ appropriately.
+
+ \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 0
+
+ The QUiLoader class provides a form loader object to construct the user
+ interface. This user interface can be retrieved from any QIODevice, e.g.,
+ a QFile object, to obtain a form stored in a project's resource file. The
+ QUiLoader::load() function constructs the form widget using the user
+ interface description contained in the file.
+
+ The QtUiTools module classes can be included using the following directive:
+
+ \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 1
+
+ The QUiLoader::load() function is invoked as shown in this code from the
+ \l{Text Finder Example}{Text Finder} example:
+
+ \snippet examples/uitools/textfinder/textfinder.cpp 4
+
+ In a class that uses QtUiTools to build its user interface at run time, we
+ can locate objects in the form using qFindChild(). For example, in the
+ follownig code, we locate some components based on their object names and
+ widget types:
+
+ \snippet examples/uitools/textfinder/textfinder.cpp 1
+
+ Processing forms at run-time gives the developer the freedom to change a
+ program's user interface, just by changing the UI file. This is useful
+ when customizing programs to suit various user needs, such as extra large
+ icons or a different colour scheme for accessibility support.
+
+
+ \section1 Automatic Connections
+
+ The signals and slots connections defined for compile time or run time
+ forms can either be set up manually or automatically, using QMetaObject's
+ ability to make connections between signals and suitably-named slots.
+
+ Generally, in a QDialog, if we want to process the information entered by
+ the user before accepting it, we need to connect the clicked() signal from
+ the \gui OK button to a custom slot in our dialog. We will first show an
+ example of the dialog in which the slot is connected by hand then compare
+ it with a dialog that uses automatic connection.
+
+
+ \section2 A Dialog Without Auto-Connect
+
+ We define the dialog in the same way as before, but now include a slot in
+ addition to the constructor:
+
+ \snippet doc/src/snippets/designer/noautoconnection/imagedialog.h 0
+
+ The \c checkValues() slot will be used to validate the values provided by
+ the user.
+
+ In the dialog's constructor we set up the widgets as before, and connect
+ the \gui Cancel button's \l{QPushButton::clicked()}{clicked()} signal to
+ the dialog's reject() slot. We also disable the
+ \l{QPushButton::autoDefault}{autoDefault} property in both buttons to
+ ensure that the dialog does not interfere with the way that the line edit
+ handles return key events:
+
+ \snippet doc/src/snippets/designer/noautoconnection/imagedialog.cpp 0
+ \dots
+ \snippet doc/src/snippets/designer/noautoconnection/imagedialog.cpp 1
+
+ We connect the \gui OK button's \l{QPushButton::clicked()}{clicked()}
+ signal to the dialog's checkValues() slot which we implement as follows:
+
+ \snippet doc/src/snippets/designer/noautoconnection/imagedialog.cpp 2
+
+ This custom slot does the minimum necessary to ensure that the data
+ entered by the user is valid - it only accepts the input if a name was
+ given for the image.
+
+ \section2 Widgets and Dialogs with Auto-Connect
+
+ Although it is easy to implement a custom slot in the dialog and connect
+ it in the constructor, we could instead use QMetaObject's auto-connection
+ facilities to connect the \gui OK button's clicked() signal to a slot in
+ our subclass. \c{uic} automatically generates code in the dialog's
+ \c setupUi() function to do this, so we only need to declare and
+ implement a slot with a name that follows a standard convention:
+
+ \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 2
+
+ Using this convention, we can define and implement a slot that responds to
+ mouse clicks on the \gui OK button:
+
+ \snippet doc/src/snippets/designer/autoconnection/imagedialog.h 0
+
+ Another example of automatic signal and slot connection would be the
+ \l{Text Finder Example}{Text Finder} with its \c{on_findButton_clicked()}
+ slot.
+
+ We use QMetaObject's system to enable signal and slot connections:
+
+ \snippet examples/uitools/textfinder/textfinder.cpp 2
+
+ This enables us to implement the slot, as shown below:
+
+ \snippet examples/uitools/textfinder/textfinder.cpp 6
+ \dots
+ \snippet examples/uitools/textfinder/textfinder.cpp 8
+
+ Automatic connection of signals and slots provides both a standard naming
+ convention and an explicit interface for widget designers to work to. By
+ providing source code that implements a given interface, user interface
+ designers can check that their designs actually work without having to
+ write code themselves.
+*/
+
+
+/*!
+ \page designer-customizing-forms.html
+ \contentspage {Qt Designer Manual}{Contents}
+ \previouspage Using Stylesheets with Qt Designer
+ \nextpage Using Custom Widgets with Qt Designer
+
+ \title Customizing Qt Designer Forms
+
+ \image designer-form-settings.png
+
+ When saving a form in \QD, it is stored as a UI file. Several form
+ settings, for example the grid settings or the margin and spacing for the
+ default layout, are stored along with the form's components. These settings
+ are used when the \l uic generates the form's C++ code. For more
+ information on how to use forms in your application, see the
+ \l{Using a Designer UI File in Your Application} section.
+
+
+ \section1 Modifying the Form Settings
+
+ To modify the form settings, open the \gui Form menu and select \gui{Form
+ Settings...}
+
+ In the forms settings dialog you can specify the \gui Author of the form.
+
+ You can also alter the margin and spacing properties for the form's default
+ layout (\gui {Layout Default}). These default layout properties will be
+ replaced by the corresponding \gui {Layout Function}, if the function is
+ specified, when \c uic generates code for the form. The form settings
+ dialog lets you specify functions for both the margin and the spacing.
+
+ \target LayoutFunction
+ \table
+ \row
+ \i \inlineimage designer-form-layoutfunction.png
+ \i \bold{Layout Function}
+
+ The default layout properties will be replaced by the corresponding
+ \gui{Layout Function}, when \c uic generates code for the form. This is
+ useful when different environments requires different layouts for the same
+ form.
+
+ To specify layout functions for the form's margin and spacing, check the
+ \gui{Layout Function} group box to enable the line edits.
+ \endtable
+
+ You can also specify the form's \gui{Include Hints}; i.e., provide a list
+ of the header files which will then be included in the form window's
+ associated UI file. Header files may be local, i.e., relative to the
+ project's directory, \c "mywidget.h", or global, i.e. part of Qt or the
+ compilers standard libraries: \c <QtGui/QWidget>.
+
+ Finally, you can specify the function used to load pixmaps into the form
+ window (the \gui {Pixmap Function}).
+*/
+
+
+/*!
+ \page designer-using-custom-widgets.html
+ \contentspage {Qt Designer Manual}{Contents}
+ \previouspage Customizing Qt Designer Forms
+ \nextpage Creating Custom Widgets for Qt Designer
+
+ \title Using Custom Widgets with Qt Designer
+
+ \QD can display custom widgets through its extensible plugin mechanism,
+ allowing the range of designable widgets to be extended by the user and
+ third parties. This feature also allows \QD to optionally support
+ \l{Qt3Support}{Qt 3 compatibility widgets}. Alternatively, it is possible
+ to use existing widgets as placeholders for widget classes that provide
+ similar APIs.
+
+ Widgets from the Qt3Support library are made available via in \QD's support
+ for custom widgets.
+
+
+ \section1 Handling Custom Widgets
+
+ Although \QD supports all of the standard Qt widgets, and can be configured
+ to handle widgets supplied in the Qt3Support library, some specialized
+ widgets may not be available as standard for a number of reasons:
+
+ \list
+ \i Custom widgets may not be available at the time the user interface
+ is being designed.
+ \i Custom widgets may be platform-specific, and designers may be
+ developing the user interface on a different platform to end users.
+ \i The source code for a custom widget is not available, or the user
+ interface designers are unable to use the widget for non-technical
+ reasons.
+ \endlist
+
+ In the above situations, it is still possible to design forms with the aim
+ of using custom widgets in the application. To achieve this, we can use
+ the widget promotion feature of \QD.
+
+ In all other cases, where the source code to the custom widgets is
+ available, we can adapt the custom widget for use with \QD.
+
+
+ \section2 Promoting Widgets
+
+ \image designer-promoting-widgets.png
+
+ If some forms must be designed, but certain custom widgets are unavailble
+ to the designer, we can substitute similar widgets to represent the missing
+ widgets. For example, we might represent instances of a custom push button
+ class, \c MyPushButton, with instances of QPushButton and promote these to
+ \c MyPushButton so that \l{uic.html}{uic} generates suitable code for this
+ missing class.
+
+ When choosing a widget to use as a placeholder, it is useful to compare the
+ API of the missing widget with those of standard Qt widgets. For
+ specialized widgets that subclass standard classes, the obvious choice of
+ placeholder is the base class of the custom widget; for example, QSlider
+ might be used for specialized QSlider subclasses.
+
+ For specialized widgets that do not share a common API with standard Qt
+ widgets, it is worth considering adapting a custom widget for use in \QD.
+ If this is not possible then QWidget is the obvious choice for a
+ placeholder widget since it is the lowest common denominator for all
+ widgets.
+
+ To add a placeholder, select an object of a suitable base class and choose
+ \gui{Promote to ...} from the form's context menu. After entering the class
+ name and header file in the lower part of the dialog, choose \gui{Add}. The
+ placeholder class will now appear along with the base class in the upper
+ list. Click the \gui{Promote} button to accept this choice.
+
+ Now, when the form's context menu is opened over objects of the base class,
+ the placeholder class will appear in the \gui{Promote to} submenu, allowing
+ for convenient promotion of objects to that class.
+
+ A promoted widget can be reverted to its base class by choosing
+ \gui{Demote to} from the form's context menu.
+
+
+ \section2 User Defined Custom Widgets
+
+ \image worldtimeclockplugin-example.png
+
+ Custom widgets can be adapted for use with \QD, giving designers the
+ opportunity to configure the user interface using the actual widgets that
+ will be used in an application rather than placeholder widgets. The process
+ of creating a custom widget plugin is described in the
+ \l{Creating Custom Widgets for Qt Designer} chapter of this manual.
+
+ To use a plugin created in this way, it is necessary to ensure that the
+ plugin is located on a path that \QD searches for plugins. Generally,
+ plugins stored in \c{$QTDIR/plugins/designer} will be loaded when \QD
+ starts. Further information on building and installing plugins can be found
+ \l{Creating Custom Widgets for Qt Designer#BuildingandInstallingthePlugin}
+ {here}. You can also refer to the \l{How to Create Qt Plugins}
+ {Plugins HOWTO} document for information about creating plugins.
+*/
+
+
+/*!
+ \page designer-creating-custom-widgets.html
+ \previouspage Using Custom Widgets with Qt Designer
+ \contentspage {Qt Designer Manual}{Contents}
+ \nextpage Creating Custom Widget Extensions
+
+ \title Creating Custom Widgets for Qt Designer
+
+ \QD's plugin-based architecture allows user-defined and third party custom
+ widgets to be edited just like you do with standard Qt widgets. All of the
+ custom widget's features are made available to \QD, including widget
+ properties, signals, and slots. Since \QD uses real widgets during the form
+ design process, custom widgets will appear the same as they do when
+ previewed.
+
+ \image worldtimeclockplugin-example.png
+
+ The \l QtDesigner module provides you with the ability to create custom
+ widgets in \QD.
+
+
+ \section1 Getting Started
+
+ To integrate a custom widget with \QD, you require a suitable description
+ for the widget and an appropriate \c{.pro} file.
+
+
+ \section2 Providing an Interface Description
+
+ To inform \QD about the type of widget you want to provide, create a
+ subclass of QDesignerCustomWidgetInterface that describes the various
+ properties your widget exposes. Most of these are supplied by functions
+ that are pure virtual in the base class, because only the author of the
+ plugin can provide this information.
+
+ \table
+ \header
+ \o Function
+ \o Description of the return value
+ \row
+ \o \c name()
+ \o The name of the class that provides the widget.
+ \row
+ \o \c group()
+ \o The group in \QD's widget box that the widget belongs to.
+ \row
+ \o \c toolTip()
+ \o A short description to help users identify the widget in \QD.
+ \row
+ \o \c whatsThis()
+ \o A longer description of the widget for users of \QD.
+ \row
+ \o \c includeFile()
+ \o The header file that must be included in applications that use
+ this widget. This information is stored in UI files and will
+ be used by \c uic to create a suitable \c{#includes} statement
+ in the code it generates for the form containing the custom
+ widget.
+ \row
+ \o \c icon()
+ \o An icon that can be used to represent the widget in \QD's
+ widget box.
+ \row
+ \o \c isContainer()
+ \o True if the widget will be used to hold child widgets;
+ false otherwise.
+ \row
+ \o \c createWidget()
+ \o A QWidget pointer to an instance of the custom widget,
+ constructed with the parent supplied.
+ \note createWidget() is a factory function responsible for
+ creating the widget only. The custom widget's properties will
+ not be available until load() returns.
+ \row
+ \o \c domXml()
+ \o A description of the widget's properties, such as its object
+ name, size hint, and other standard QWidget properties.
+ \row
+ \o \c codeTemplate()
+ \o This function is reserved for future use by \QD.
+ \endtable
+
+ Two other virtual functions can also be reimplemented:
+
+ \table
+ \row
+ \o \c initialize()
+ \o Sets up extensions and other features for custom widgets. Custom
+ container extensions (see QDesignerContainerExtension) and task
+ menu extensions (see QDesignerTaskMenuExtension) should be set
+ up in this function.
+ \row
+ \o \c isInitialized()
+ \o Returns true if the widget has been initialized; returns false
+ otherwise. Reimplementations usually check whether the
+ \c initialize() function has been called and return the result
+ of this test.
+ \endtable
+
+
+ \section2 Notes on the \c{domXml()} Function
+
+ The \c{domXml()} function returns a UI file snippet that is used by
+ \QD's widget factory to create a custom widget and its applicable
+ properties.
+
+ Since Qt 4.4, \QD's widget box allows for a complete UI file to
+ describe \bold one custom widget. The UI file can be loaded using the
+ \c{<ui>} tag. Specifying the <ui> tag allows for adding the <customwidget>
+ element that contains additional information for custom widgets. The
+ \c{<widget>} tag is sufficient if no additional information is required
+
+ If the custom widget does not provide a reasonable size hint, it is
+ necessary to specify a default geometry in the string returned by the
+ \c domXml() function in your subclass. For example, the
+ \c AnalogClockPlugin provided by the \l{designer/customwidgetplugin}
+ {Custom Widget Plugin} example, defines a default widgetgeometry in the
+ following way:
+
+ \dots
+ \snippet examples/designer/customwidgetplugin/customwidgetplugin.cpp 11
+ \dots
+
+ An additional feature of the \c domXml() function is that, if it returns
+ an empty string, the widget will not be installed in \QD's widget box.
+ However, it can still be used by other widgets in the form. This feature
+ is used to hide widgets that should not be explicitly created by the user,
+ but are required by other widgets.
+
+
+ A complete custom widget specification looks like:
+
+ \code
+<ui language="c++"> displayname="MyWidget">
+ <widget class="widgets::MyWidget" name="mywidget"/>
+ <customwidgets>
+ <customwidget>
+ <class>widgets::MyWidget</class>
+ <addpagemethod>addPage</addpagemethod>
+ <propertyspecifications>
+ <stringpropertyspecification name="fileName" notr="true" type="singleline"
+ <stringpropertyspecification name="text" type="richtext"
+ </propertyspecifications>
+ </customwidget>
+ </customwidgets>
+</ui>
+ \endcode
+
+ Attributes of the \c{<ui>} tag:
+ \table
+ \header
+ \o Attribute
+ \o Presence
+ \o Values
+ \o Comment
+ \row
+ \o \c{language}
+ \o optional
+ \o "c++", "jambi"
+ \o This attribute specifies the language the custom widget is intended for.
+ It is mainly there to prevent C++-plugins from appearing in Qt Jambi.
+ \row
+ \o \c{displayname}
+ \o optional
+ \o Class name
+ \o The value of the attribute appears in the Widget box and can be used to
+ strip away namespaces.
+ \endtable
+
+ The \c{<addpagemethod>} tag tells \QD and \l uic which method should be used to
+ add pages to a container widget. This applies to container widgets that require
+ calling a particular method to add a child rather than adding the child by passing
+ the parent. In particular, this is relevant for containers that are not a
+ a subclass of the containers provided in \QD, but are based on the notion
+ of \e{Current Page}. In addition, you need to provide a container extension
+ for them.
+
+ The \c{<propertyspecifications>} element can contain a list of property meta information.
+ Currently, properties of type string are supported. For these properties, the
+ \c{<stringpropertyspecification>} tag can be used. This tag has the following attributes:
+
+
+ \table
+ \header
+ \o Attribute
+ \o Presence
+ \o Values
+ \o Comment
+ \row
+ \o \c{name}
+ \o required
+ \o Name of the property
+ \row
+ \o \c{type}
+ \o required
+ \o See below table
+ \o The value of the attribute determines how the property editor will handle them.
+ \row
+ \o \c{notr}
+ \o optional
+ \o "true", "false"
+ \o If the attribute is "true", the value is not meant to be translated.
+ \endtable
+
+ Values of the \c{type} attribute of the string property:
+
+ \table
+ \header
+ \o Value
+ \o Type
+ \row
+ \o \c{"richtext"}
+ \o Rich text.
+ \row
+ \o \c{"multiline"}
+ \o Multi-line plain text.
+ \row
+ \o \c{"singleline"}
+ \o Single-line plain text.
+ \row
+ \o \c{"stylesheet"}
+ \o A CSS-style sheet.
+ \row
+ \o \c{"objectname"}
+ \o An object name (restricted set of valid characters).
+ \row
+ \o \c{"url"}
+ \o URL, file name.
+ \endtable
+
+ \section1 Plugin Requirements
+
+ In order for plugins to work correctly on all platforms, you need to ensure
+ that they export the symbols needed by \QD.
+
+ First of all, the plugin class must be exported in order for the plugin to
+ be loaded by \QD. Use the Q_EXPORT_PLUGIN2() macro to do this. Also, the
+ QDESIGNER_WIDGET_EXPORT macro must be used to define each custom widget class
+ within a plugin, that \QD will instantiate.
+
+
+ \section1 Creating Well Behaved Widgets
+
+ Some custom widgets have special user interface features that may make them
+ behave differently to many of the standard widgets found in \QD.
+ Specifically, if a custom widget grabs the keyboard as a result of a call
+ to QWidget::grabKeyboard(), the operation of \QD will be affected.
+
+ To give custom widgets special behavior in \QD, provide an implementation
+ of the initialize() function to configure the widget construction process
+ for \QD specific behavior. This function will be called for the first time
+ before any calls to createWidget() and could perhaps set an internal flag
+ that can be tested later when \QD calls the plugin's createWidget()
+ function.
+
+
+ \target BuildingandInstallingthePlugin
+ \section1 Building and Installing the Plugin
+
+ \section2 A Simple Plugin
+
+ The \l{Custom Widget Plugin Example} demonstrates a simple \QD plugin.
+
+ The \c{.pro} file for a plugin must specify the headers and sources for
+ both the custom widget and the plugin interface. Typically, this file only
+ has to specify that the plugin's project is to be built as a library, but
+ with specific plugin support for \QD. This is done with the following
+ declarations:
+
+ \snippet examples/designer/customwidgetplugin/customwidgetplugin.pro 1
+
+ If Qt is configured to build in both debug and release modes, \QD will be
+ built in release mode. When this occurs, it is necessary to ensure that
+ plugins are also built in release mode. To do this, include the following
+ declaration in the plugin's \c{.pro} file:
+
+ \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 3
+
+ If plugins are built in a mode that is incompatible with \QD, they will
+ not be loaded and installed. For more information about plugins, see the
+ \l{plugins-howto.html}{Plugins HOWTO} document.
+
+ It is also necessary to ensure that the plugin is installed together with
+ other \QD widget plugins:
+
+ \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 4
+
+ The \c $[QT_INSTALL_PLUGINS] variable is a placeholder to the location of
+ the installed Qt plugins. You can configure \QD to look for plugins in
+ other locations by setting the \c QT_PLUGIN_PATH environment variable
+ before running the application.
+
+ \note \QD will look for a \c designer subdirectory in each path supplied.
+
+ See QCoreApplication::libraryPaths() for more information about customizing
+ paths for libraries and plugins with Qt applications.
+
+ \section2 Splitting up the Plugin
+
+ In a real world scenario, you do not want to have dependencies of the
+ application making use of the custom widgets to the \QD headers and
+ libraries as introduced by the simple approach explained above.
+
+ There are two ways to resolve this:
+
+ \list
+ \i Create a \c{.pri} file that contains the headers sources and sources
+ of the custom widget:
+
+ \code
+ INCLUDEPATH += $$PWD
+ HEADERS += $$PWD/analogclock.h
+ SOURCES += $$PWD/analogclock.cpp
+ \endcode
+
+ This file would then be included by the \c{.pro} file of the plugin and
+ the application:
+
+ \code
+ include(customwidget.pri)
+ \endcode
+
+ Running \c{qmake -Wall} on the \c{.pro} files causes a warning to be
+ printed if an included \c{.pri} file cannot be found.
+
+ \i Create a standalone shared library containing the custom widgets only
+ as described in
+ \l{sharedlibrary.html}{Creating Shared Libraries}.
+
+ This library would then be used by the application as well as by the
+ \QD plugin. Care must be taken to ensure that the plugin can locate
+ the library at run-time.
+ \endlist
+
+ \section1 Related Examples
+
+ For more information on using custom widgets in \QD, refer to the
+ \l{designer/customwidgetplugin}{Custom Widget Plugin} and
+ \l{designer/worldtimeclockplugin}{World Time Clock Plugin} examples for more
+ information about using custom widgets in \QD. Also, you can use the
+ QDesignerCustomWidgetCollectionInterface class to combine several custom
+ widgets into a single library.
+*/
+
+
+/*!
+ \page designer-creating-custom-widgets-extensions.html
+ \previouspage Creating Custom Widgets for Qt Designer
+ \nextpage Qt Designer's UI File Format
+ \contentspage {Qt Designer Manual}{Contents}
+
+ \title Creating Custom Widget Extensions
+
+ Once you have a custom widget plugin for \QD, you can provide it with the
+ expected behavior and functionality within \QD's workspace, using custom
+ widget extensions.
+
+
+ \section1 Extension Types
+
+ There are several available types of extensions in \QD. You can use all of
+ these extensions in the same pattern, only replacing the respective
+ extension base class.
+
+ QDesignerContainerExtension is necessary when implementing a custom
+ multi-page container.
+
+ \table
+ \row
+ \i \inlineimage designer-manual-taskmenuextension.png
+ \i \bold{QDesignerTaskMenuExtension}
+
+ QDesignerTaskMenuExtension is useful for custom widgets. It provides an
+ extension that allows you to add custom menu entries to \QD's task
+ menu.
+
+ The \l{designer/taskmenuextension}{Task Menu Extension} example
+ illustrates how to use this class.
+
+ \row
+ \i \inlineimage designer-manual-containerextension.png
+ \i \bold{QDesignerContainerExtension}
+
+ QDesignerContainerExtension is necessary when implementing a custom
+ multi-page container. It provides an extension that allows you to add
+ and delete pages for a multi-page container plugin in \QD.
+
+ The \l{designer/containerextension}{Container Extension} example
+ further explains how to use this class.
+
+ \note It is not possible to add custom per-page properties for some
+ widgets (e.g., QTabWidget) due to the way they are implemented.
+ \endtable
+
+ \table
+ \row
+ \i \inlineimage designer-manual-membersheetextension.png
+ \i \bold{QDesignerMemberSheetExtension}
+
+ The QDesignerMemberSheetExtension class allows you to manipulate a
+ widget's member functions displayed when connecting signals and slots.
+
+ \row
+ \i \inlineimage designer-manual-propertysheetextension.png
+ \i \bold{QDesignerPropertySheetExtension,
+ QDesignerDynamicPropertySheetExtension}
+
+ These extension classes allow you to control how a widget's properties
+ are displayed in \QD's property editor.
+ \endtable
+
+\omit
+ \row
+ \o
+ \o \bold {QDesignerScriptExtension}
+
+ The QDesignerScriptExtension class allows you to define script
+ snippets that are executed when a form is loaded. The extension
+ is primarily intended to be used to set up the internal states
+ of custom widgets.
+ \endtable
+\endomit
+
+
+ \QD uses the QDesignerPropertySheetExtension and the
+ QDesignerMemberSheetExtension classes to feed its property and signal and
+ slot editors. Whenever a widget is selected in its workspace, \QD will
+ query for the widget's property sheet extension; likewise, whenever a
+ connection between two widgets is requested, \QD will query for the
+ widgets' member sheet extensions.
+
+ \warning All widgets have default property and member sheets. If you
+ implement custom property sheet or member sheet extensions, your custom
+ extensions will override the default sheets.
+
+
+ \section1 Creating an Extension
+
+ To create an extension you must inherit both QObject and the appropriate
+ base class, and reimplement its functions. Since we are implementing an
+ interface, we must ensure that it is made known to the meta object system
+ using the Q_INTERFACES() macro in the extension class's definition. For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 7
+
+ This enables \QD to use the qobject_cast() function to query for supported
+ interfaces using a QObject pointer only.
+
+
+ \section1 Exposing an Extension to Qt Designer
+
+ In \QD the extensions are not created until they are required. For this
+ reason, when implementing extensions, you must subclass QExtensionFactory
+ to create a class that is able to make instances of your extensions. Also,
+ you must register your factory with \QD's extension manager; the extension
+ manager handles the construction of extensions.
+
+ When an extension is requested, \QD's extension manager will run through
+ its registered factories calling QExtensionFactory::createExtension() for
+ each of them until it finds one that is able to create the requested
+ extension for the selected widget. This factory will then make an instance
+ of the extension.
+
+ \image qtdesignerextensions.png
+
+
+ \section2 Creating an Extension Factory
+
+ The QExtensionFactory class provides a standard extension factory, but it
+ can also be used as an interface for custom extension factories.
+
+ The purpose is to reimplement the QExtensionFactory::createExtension()
+ function, making it able to create your extension, such as a
+ \l{designer/containerextension}{MultiPageWidget} container extension.
+
+ You can either create a new QExtensionFactory and reimplement the
+ QExtensionFactory::createExtension() function:
+
+ \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 8
+
+ or you can use an existing factory, expanding the
+ QExtensionFactory::createExtension() function to enable the factory to
+ create your custom extension as well:
+
+ \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 9
+
+
+ \section2 Accessing Qt Designer's Extension Manager
+
+ When implementing a custom widget plugin, you must subclass the
+ QDesignerCustomWidgetInterface to expose your plugin to \QD. This is
+ covered in more detail in the
+ \l{Creating Custom Widgets for Qt Designer} section. The registration of
+ an extension factory is typically made in the
+ QDesignerCustomWidgetInterface::initialize() function:
+
+ \snippet doc/src/snippets/code/doc_src_designer-manual.qdoc 10
+
+ The \c formEditor parameter in the
+ QDesignerCustomWidgetInterface::initialize() function is a pointer to \QD's
+ current QDesignerFormEditorInterface object. You must use the
+ QDesignerFormEditorInterface::extensionManager() function to retrieve an
+ interface to \QD's extension manager. Then you use the
+ QExtensionManager::registerExtensions() function to register your custom
+ extension factory.
+
+
+ \section1 Related Examples
+
+ For more information on creating custom widget extensions in \QD, refer to
+ the \l{designer/taskmenuextension}{Task Menu Extension} and
+ \l{designer/containerextension}{Container Extension} examples.
+*/
+
+
+/*!
+ \page designer-ui-file-format.html
+ \previouspage Creating Custom Widget Extensions
+ \contentspage {Qt Designer Manual}{Contents}
+
+ \title Qt Designer's UI File Format
+
+ The \c UI file format used by \QD is described by the
+ \l{http://www.w3.org/XML/Schema}{XML schema} presented below,
+ which we include for your convenience. Be aware that the format
+ may change in future Qt releases.
+
+ \quotefile tools/designer/data/ui4.xsd
+*/
+
+
+/*!
+ \page designer-recursive-shadow-casting.html
+ \title Implementation of the Recursive Shadow Casting Algorithm in Qt Designer
+ \contentspage {Qt Designer Manual}{Contents}
+
+ \ingroup licensing
+ \brief License information for contributions to specific parts of the Qt
+ Designer source code.
+
+ \legalese
+ Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). \BR
+ Copyright (C) 2005 Bjoern Bergstroem
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, modify, market, reproduce,
+ grant sublicenses and distribute subject to the following conditions:
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software. These
+ files are provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+ WARRANTY OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE.
+ \endlegalese
+*/
diff --git a/doc/src/development/developing-on-mac.qdoc b/doc/src/development/developing-on-mac.qdoc
new file mode 100644
index 000000000..56b90a1a9
--- /dev/null
+++ b/doc/src/development/developing-on-mac.qdoc
@@ -0,0 +1,271 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 developing-on-mac.html
+ \title Developing Qt Applications on Mac OS X
+ \brief A overview of items to be aware of when developing Qt applications
+ on Mac OS X
+ \ingroup platform-specific
+
+ \tableofcontents
+
+ Mac OS X is a UNIX platform and behaves similar to other Unix-like
+ platforms. The main difference is X11 is not used as the primary windowing
+ system. Instead, Mac OS X uses its own native windowing system that is
+ accessible through the Carbon and Cocoa APIs. Application development on
+ Mac OS X is done using Xcode Tools, an optional install included on every
+ Mac with updates available from \l {http://developer.apple.com}{Apple's
+ developer website}. Xcode Tools includes Apple-modified versions of the GCC
+ compiler.
+
+
+ \section1 What Versions of Mac OS X are Supported?
+
+ As of Qt 4.6, Qt supports Mac OS X versions 10.4 and up. It is usually in
+ the best interest of the developer and user to be running the latest
+ updates to any version. We test internally against Mac OS X 10.4.11 as well
+ as the updated release of Mac OS X 10.5 and Mac OS X 10.6.
+
+ \section2 Carbon or Cocoa?
+
+ Historically, Qt has used the Carbon toolkit, which supports 32-bit
+ applications on Mac OS X 10.4 and up. Qt 4.5 and up has support for the Cocoa
+ toolkit, which requires 10.5 and provides 64-bit support.
+
+ This detail is typically not important to Qt application developers. Qt is
+ cross-platform across Carbon and Cocoa, and Qt applications behave
+ the same way when configured for either one. Eventually, the Carbon
+ version will be discontinued. This is something to keep in mind when you
+ consider writing code directly against native APIs.
+
+ The current binary for Qt is built in two flavors, 32-bit Carbon and full
+ universal Cocoa (32-bit and 64-bit). If you want a different setup for
+ Qt will use, you must build from scratch. Carbon or Cocoa is chosen when
+ configuring the package for building. The configure process selects Carbon
+ by default, to specify Cocoa use the \c{-cocoa} flag. configure for a
+ 64-bit architecture using one of the \c{-arch} flags (see \l{universal
+ binaries}{Universal Binaries}).
+
+ Currently, Apple's default GCC compiler is used by default (GCC 4.0.1 on
+ 10.4 and 10.5, GCC 4.2 on 10.6). You can specify alternate compilers
+ though. For example, on Mac OS X 10.5, Apple's GCC 4.2 is also available
+ and selectable with the configure flag: \c{-platform macx-g++42}. LLVM-GCC
+ support is available by passing in the \c{-platform macx-llvm} flag. GCC
+ 3.x will \e not work. Though they may work, We do not support custom-built
+ GCC's.
+
+ The following table summarizes the different versions of Mac OS X and what
+ capabilities are used by Qt.
+
+ \table
+ \header
+ \o Mac OS X Version
+ \o Cat Name
+ \o Native API Used by Qt
+ \o Bits available to address memory
+ \o CPU Architecture Supported
+ \o Development Platform
+ \row
+ \o 10.4
+ \o Tiger
+ \o Carbon
+ \o 32
+ \o PPC/Intel
+ \o Yes
+ \row
+ \o 10.5
+ \o Leopard
+ \o Carbon
+ \o 32
+ \o PPC/Intel
+ \o Yes
+ \row
+ \o 10.5
+ \o Leopard
+ \o Cocoa
+ \o 32/64
+ \o PPC/Intel
+ \o Yes
+ \row
+ \o 10.6
+ \o Snow Leopard
+ \o Cocoa/Carbon
+ \o 32
+ \o PPC/Intel
+ \o Yes
+ \row
+ \o 10.6
+ \o Snow Leopard
+ \o Cocoa
+ \o 64
+ \o Intel
+ \o Yes
+ \endtable
+
+ Note that building for ppc-64 is not supported on 10.6.
+
+ \section2 Which One Should I Use?
+
+ Carbon and Cocoa both have their advantages and disadvantages. Probably the
+ easiest way to determine is to look at the version of Mac OS X you are
+ targetting. If you are starting a new application and can target 10.5 and
+ up, then please consider Cocoa only. If you have an existing application or
+ need to target earlier versions of the operating system and do not need
+ access to 64-bit or newer Apple technologies, then Carbon is a good fit. If
+ your needs fall in between, you can go with a 64-bit Cocoa and 32-bit
+ Carbon universal application with the appropriate checks in your code to
+ choose the right path based on where you are running the application.
+
+ For Mac OS X 10.6, Apple has started recommending developers to build their
+ applications 64-bit. The main reason is that there is a small speed
+ increase due to the extra registers on Intel CPU's, all their machine
+ offerings have been 64-bit since 2007, and there is a cost for reading all
+ the 32-bit libraries into memory if everything else is 64-bit. If you want
+ to follow this advice, there is only one choice, 64-bit Cocoa.
+
+ \target universal binaries
+ \section1 Universal Binaries
+
+ In 2006, Apple begin transitioning from PowerPC (PPC) to Intel (x86)
+ systems. Both architectures are supported by Qt. The release of Mac OS X
+ 10.5 in October 2007 added the possibility of writing and deploying 64-bit
+ GUI applications. Qt 4.5 and up supports both the 32-bit (PPC and x86) and
+ 64-bit (PPC64 and x86-64) versions of PowerPC and Intel-based systems.
+
+ Universal binaries are used to bundle binaries for more than one
+ architecture into a single package, simplifying deployment and
+ distribution. When running an application the operating system will select
+ the most appropriate architecture. Universal binaries support the following
+ architectures; they can be added to the build at configure time using the
+ \c{-arch} arguments:
+
+ \table
+ \header
+ \o Architecture
+ \o Flag
+ \row
+ \o Intel, 32-bit
+ \o \c{-arch x86}
+ \row
+ \o Intel, 64-bit
+ \o \c{-arch x86_64}
+ \row
+ \o PPC, 32-bit
+ \o \c{-arch ppc}
+ \row
+ \o PPC, 64-bit
+ \o \c{-arch ppc64}
+ \endtable
+
+ If there are no \c{-arch} flags specified, configure builds for the 32-bit
+ architecture, if you are currently on one. Universal binaries were initially
+ used to simplify the PPC to Intel migration. You can use \c{-universal} to
+ build for both the 32-bit Intel and PPC architectures.
+
+ \note The \c{-arch} flags at configure time only affect how Qt is built.
+ Applications are by default built for the 32-bit architecture you are
+ currently on. To build a universal binary, add the architectures to the
+ CONFIG variable in the .pro file:
+
+ \code
+ CONFIG += x86 ppc x86_64 ppc64
+ \endcode
+
+
+ \section1 Day-to-Day Application Development on OS X
+
+ On the command-line, applications can be built using \c qmake and \c make.
+ Optionally, \c qmake can generate project files for Xcode with
+ \c{-spec macx-xcode}. If you are using the binary package, \c qmake
+ generates Xcode projects by default; use \c{-spec macx-gcc} to generate
+ makefiles.
+
+ The result of the build process is an application bundle, which is a
+ directory structure that contains the actual application executable. The
+ application can be launched by double-clicking it in Finder, or by
+ referring directly to its executable from the command line, i. e.
+ \c{myApp.app/Contents/MacOS/myApp}.
+
+ If you wish to have a command-line tool that does not use the GUI (e.g.,
+ \c moc, \c uic or \c ls), you can tell \c qmake not to execute the bundle
+ creating steps by removing it from the \c{CONFIG} in your \c{.pro} file:
+
+ \code
+ CONFIG -= app_bundle
+ \endcode
+
+
+ \section1 Deployment - "Compile once, deploy everywhere"
+
+ In general, Qt supports building on one Mac OS X version and deploying on
+ all others, both forward and backwards. You can build on 10.4 Tiger and run
+ the same binary on 10.5 and up.
+
+ Some restrictions apply:
+
+ \list
+ \o Some functions and optimization paths that exist in later versions
+ of Mac OS X will not be available if you build on an earlier
+ version of Mac OS X.
+ \o The CPU architecture should match.
+ \o Cocoa support is only available for Mac OS X 10.5 and up.
+ \endlist
+
+ Universal binaries can be used to provide a smorgasbord of configurations
+ catering to all possible architectures.
+
+ Mac applications are typically deployed as self-contained application
+ bundles. The application bundle contains the application executable as well
+ as dependencies such as the Qt libraries, plugins, translations and other
+ resources you may need. Third party libraries like Qt are normally not
+ installed system-wide; each application provides its own copy.
+
+ The most common way to distribute applications is to provide a compressed
+ disk image (.dmg file) that the user can mount in Finder. The Mac
+ deployment tool (macdeployqt) can be used to create the self-contained bundles, and
+ optionally also create a .dmg archive. See the
+ \l{Deploying an Application on Mac OS X}{Mac deployment guide} for more
+ information about deployment. It is also possible to use an installer
+ wizard. More information on this option can be found in
+ \l{http://developer.apple.com/mac/}{Apple's documentation}.
+*/
+
diff --git a/doc/src/development/developing-with-qt.qdoc b/doc/src/development/developing-with-qt.qdoc
new file mode 100644
index 000000000..d1cbef77c
--- /dev/null
+++ b/doc/src/development/developing-with-qt.qdoc
@@ -0,0 +1,74 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 developing-with-qt.html
+ \title Cross Platform Development with Qt
+
+ Qt is provided with a set of build tools to help developers automate
+ the process of building and installing Qt applications.
+
+ \table 100%
+ \header \o Development \o Cross-Platform Issues \o Specific Tools
+ \row
+ \o
+ \list
+ \o \l {Debugging Techniques}
+ \o \l {Qt's Tools}
+ \o \l {The Qt Resource System}
+ \o \l {Using Precompiled Headers}
+ \endlist
+ \o
+ \list
+ \o \l {Cross Compiling Qt for Embedded Linux Applications}
+ \o \l {Deploying Qt Applications}
+ \o \l {Installation}{Installing Qt}
+ \o \l {Window System Specific Notes}
+ \endlist
+ \o
+ \list
+ \o \l lupdate and \l lrelease
+ \o \l {moc}{Meta-Object Compiler (moc)}
+ \o \l {User Interface Compiler (uic)}
+ \o \l {Resource Compiler (rcc)}
+ \endlist
+ \endtable
+*/
diff --git a/doc/src/development/moc.qdoc b/doc/src/development/moc.qdoc
new file mode 100644
index 000000000..c54ade739
--- /dev/null
+++ b/doc/src/development/moc.qdoc
@@ -0,0 +1,335 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 moc.html
+ \title Using the Meta-Object Compiler (moc)
+ \ingroup qttools
+ \keyword moc
+
+ The Meta-Object Compiler, \c moc, is the program that handles
+ \l{Meta-Object System}{Qt's C++ extensions}.
+
+ The \c moc tool reads a C++ header file. If it finds one or more
+ class declarations that contain the Q_OBJECT macro, it
+ produces a C++ source file containing the meta-object code for
+ those classes. Among other things, meta-object code is required
+ for the signals and slots mechanism, the run-time type information,
+ and the dynamic property system.
+
+ The C++ source file generated by \c moc must be compiled and
+ linked with the implementation of the class.
+
+ If you use \l qmake to create your makefiles, build rules will be
+ included that call the moc when required, so you will not need to
+ use the moc directly. For more background information on \c moc,
+ see \l{Why Doesn't Qt Use Templates for Signals and Slots?}
+
+ \section1 Usage
+
+ \c moc is typically used with an input file containing class
+ declarations like this:
+
+ \snippet doc/src/snippets/moc/myclass1.h 0
+
+ In addition to the signals and slots shown above, \c moc also
+ implements object properties as in the next example. The
+ Q_PROPERTY() macro declares an object property, while
+ Q_ENUMS() declares a list of enumeration types within the class
+ to be usable inside the \l{Qt's Property System}{property
+ system}.
+
+ In the following example, we declare a property of the
+ enumeration type \c Priority that is also called \c priority and
+ has a get function \c priority() and a set function \c
+ setPriority().
+
+ \snippet doc/src/snippets/moc/myclass2.h 0
+
+ The Q_FLAGS() macro declares enums that are to be used
+ as flags, i.e. OR'd together. Another macro, Q_CLASSINFO(),
+ allows you to attach additional name/value pairs to the class's
+ meta-object:
+
+ \snippet doc/src/snippets/moc/myclass3.h 0
+
+ The output produced by \c moc must be compiled and linked, just
+ like the other C++ code in your program; otherwise, the build
+ will fail in the final link phase. If you use \c qmake, this is
+ done automatically. Whenever \c qmake is run, it parses the
+ project's header files and generates make rules to invoke \c moc
+ for those files that contain a Q_OBJECT macro.
+
+ If the class declaration is found in the file \c myclass.h, the
+ moc output should be put in a file called \c moc_myclass.cpp.
+ This file should then be compiled as usual, resulting in an
+ object file, e.g., \c moc_myclass.obj on Windows. This object
+ should then be included in the list of object files that are
+ linked together in the final building phase of the program.
+
+ \section1 Writing Make Rules for Invoking \c moc
+
+ For anything but the simplest test programs, it is recommended
+ that you automate running the \c{moc}. By adding some rules to
+ your program's makefile, \c make can take care of running moc
+ when necessary and handling the moc output.
+
+ We recommend using the \l qmake makefile generation tool for
+ building your makefiles. This tool generates a makefile that does
+ all the necessary \c moc handling.
+
+ If you want to create your makefiles yourself, here are some tips
+ on how to include moc handling.
+
+ For Q_OBJECT class declarations in header files, here is a
+ useful makefile rule if you only use GNU make:
+
+ \snippet doc/src/snippets/code/doc_src_moc.qdoc 0
+
+ If you want to write portably, you can use individual rules of
+ the following form:
+
+ \snippet doc/src/snippets/code/doc_src_moc.qdoc 1
+
+ You must also remember to add \c moc_foo.cpp to your \c SOURCES
+ (substitute your favorite name) variable and \c moc_foo.o or \c
+ moc_foo.obj to your \c OBJECTS variable.
+
+ Both examples assume that \c $(DEFINES) and \c $(INCPATH) expand
+ to the define and include path options that are passed to the C++
+ compiler. These are required by \c moc to preprocess the source
+ files.
+
+ While we prefer to name our C++ source files \c .cpp, you can use
+ any other extension, such as \c .C, \c .cc, \c .CC, \c .cxx, and
+ \c .c++, if you prefer.
+
+ For Q_OBJECT class declarations in implementation (\c .cpp)
+ files, we suggest a makefile rule like this:
+
+ \snippet doc/src/snippets/code/doc_src_moc.qdoc 2
+
+ This guarantees that make will run the moc before it compiles
+ \c foo.cpp. You can then put
+
+ \snippet doc/src/snippets/code/doc_src_moc.qdoc 3
+
+ at the end of \c foo.cpp, where all the classes declared in that
+ file are fully known.
+
+ \section1 Command-Line Options
+
+ Here are the command-line options supported by the moc:
+
+ \table
+ \header \o Option \o Description
+
+ \row
+ \o \c{-o<file>}
+ \o Write output to \c <file> rather than to standard output.
+
+ \row
+ \o \c{-f[<file>]}
+ \o Force the generation of an \c #include statement in the
+ output. This is the default for header files whose extension
+ starts with \c H or \c h. This option is useful if you have
+ header files that do not follow the standard naming conventions.
+ The \c <file> part is optional.
+
+ \row
+ \o \c -i
+ \o Do not generate an \c #include statement in the output.
+ This may be used to run the moc on on a C++ file containing one or
+ more class declarations. You should then \c #include the meta-object
+ code in the \c .cpp file.
+
+ \row
+ \o \c -nw
+ \o Do not generate any warnings. (Not recommended.)
+
+ \row
+ \o \c {-p<path>}
+ \o Makes the moc prepend \c {<path>/} to the file name in the
+ generated \c #include statement.
+
+ \row
+ \o \c {-I<dir>}
+ \o Add dir to the include path for header files.
+
+ \row
+ \o \c{-E}
+ \o Preprocess only; do not generate meta-object code.
+
+ \row
+ \o \c {-D<macro>[=<def>]}
+ \o Define macro, with optional definition.
+
+ \row
+ \o \c{-U<macro>}
+ \o Undefine macro.
+
+ \row
+ \o \c{@<file>}
+ \o Read additional command-line options from \c{<file>}.
+ Each line of the file is treated as a single option. Empty lines
+ are ignored. Note that this option is not supported within the
+ options file itself (i.e. an options file can't "include" another
+ file).
+
+ \row
+ \o \c{-h}
+ \o Display the usage and the list of options.
+
+ \row
+ \o \c {-v}
+ \o Display \c{moc}'s version number.
+
+ \row
+ \o \c{-Fdir}
+
+ \o Mac OS X. Add the framework directory \c{dir} to the head of
+ the list of directories to be searched for header files. These
+ directories are interleaved with those specified by -I options
+ and are scanned in a left-to-right order (see the manpage for
+ gcc). Normally, use -F /Library/Frameworks/
+
+ \endtable
+
+ You can explicitly tell the moc not to parse parts of a header
+ file. \c moc defines the preprocessor symbol \c Q_MOC_RUN. Any
+ code surrounded by
+
+ \snippet doc/src/snippets/code/doc_src_moc.qdoc 4
+
+ is skipped by the \c moc.
+
+ \section1 Diagnostics
+
+ \c moc will warn you about a number of dangerous or illegal
+ constructs in the Q_OBJECT class declarations.
+
+ If you get linkage errors in the final building phase of your
+ program, saying that \c YourClass::className() is undefined or
+ that \c YourClass lacks a vtable, something has been done wrong.
+ Most often, you have forgotten to compile or \c #include the
+ moc-generated C++ code, or (in the former case) include that
+ object file in the link command. If you use \c qmake, try
+ rerunning it to update your makefile. This should do the trick.
+
+ \section1 Limitations
+
+ \c moc does not handle all of C++. The main problem is that class
+ templates cannot have signals or slots. Here is an example:
+
+ \snippet doc/src/snippets/code/doc_src_moc.qdoc 5
+
+ Another limitation is that moc does not expand macros, so you
+ for example cannot use a macro to declare a signal/slot
+ or use one to define a base class for a QObject.
+
+ Less importantly, the following constructs are illegal. All of
+ them have alternatives which we think are usually better, so
+ removing these limitations is not a high priority for us.
+
+ \section2 Multiple Inheritance Requires QObject to Be First
+
+ If you are using multiple inheritance, \c moc assumes that the
+ first inherited class is a subclass of QObject. Also, be sure
+ that only the first inherited class is a QObject.
+
+ \snippet doc/src/snippets/code/doc_src_moc.qdoc 6
+
+ Virtual inheritance with QObject is \e not supported.
+
+ \section2 Function Pointers Cannot Be Signal or Slot Parameters
+
+ In most cases where you would consider using function pointers as
+ signal or slot parameters, we think inheritance is a better
+ alternative. Here is an example of illegal syntax:
+
+ \snippet doc/src/snippets/code/doc_src_moc.qdoc 7
+
+ You can work around this restriction like this:
+
+ \snippet doc/src/snippets/code/doc_src_moc.qdoc 8
+
+ It may sometimes be even better to replace the function pointer
+ with inheritance and virtual functions.
+
+ \section2 Enums and Typedefs Must Be Fully Qualified for Signal and Slot Parameters
+
+ When checking the signatures of its arguments, QObject::connect()
+ compares the data types literally. Thus,
+ \l{Qt::Alignment}{Alignment} and \l{Qt::Alignment} are treated as
+ two distinct types. To work around this limitation, make sure to
+ fully qualify the data types when declaring signals and slots,
+ and when establishing connections. For example:
+
+ \snippet doc/src/snippets/code/doc_src_moc.qdoc 9
+
+ \section2 Type Macros Cannot Be Used for Signal and Slot Parameters
+
+ Since \c moc doesn't expand \c{#define}s, type macros that take
+ an argument will not work in signals and slots. Here is an
+ illegal example:
+
+ \snippet doc/src/snippets/code/doc_src_moc.qdoc 10
+
+ A macro without parameters will work.
+
+ \section2 Nested Classes Cannot Have Signals or Slots
+
+ Here's an example of the offending construct:
+
+ \snippet doc/src/snippets/code/doc_src_moc.qdoc 11
+
+ \section2 Signal/Slot return types cannot be references
+
+ Signals and slots can have return types, but signals or slots returning references
+ will be treated as returning void.
+
+ \section2 Only Signals and Slots May Appear in the \c signals and \c slots Sections of a Class
+
+ \c moc will complain if you try to put other constructs in the \c
+ signals or \c slots sections of a class than signals and slots.
+
+ \sa {Meta-Object System}, {Signals and Slots}, {Qt's Property System}
+*/
diff --git a/doc/src/development/qmake-manual.qdoc b/doc/src/development/qmake-manual.qdoc
new file mode 100644
index 000000000..9548848f7
--- /dev/null
+++ b/doc/src/development/qmake-manual.qdoc
@@ -0,0 +1,4772 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qmake-manual.html
+ \title qmake Manual
+ \startpage {index.html}{Qt Reference Documentation}
+ \nextpage qmake Tutorial
+
+ \ingroup qttools
+ \keyword qmake
+
+ \c qmake is a tool that helps simplify the build
+ process for development project across different platforms. \c qmake
+ automates the generation of Makefiles so that only a few lines of
+ information are needed to create each Makefile. \c qmake can be used for
+ any software project, whether it is written in Qt or not.
+
+ \c qmake generates a Makefile based on the information in a project
+ file. Project files are created by the developer, and are usually
+ simple, but more sophisticated project files can be created for
+ complex projects.
+ \c qmake contains additional features to support development with Qt,
+ automatically including build rules for \l{moc.html}{moc}
+ and \l{uic.html}{uic}.
+ \c qmake can also generate projects for Microsoft Visual studio
+ without requiring the developer to change the project file.
+
+ \section1 Getting Started
+
+ The \l{qmake Tutorial} and guide to \l{qmake Common Projects} provide overviews
+ that aim to help new users get started with \c qmake.
+
+ \list
+ \o \l{qmake Tutorial}
+ \tableofcontents{1 qmake Tutorial}
+ \endlist
+
+ \list
+ \o \l{qmake Common Projects}
+ \tableofcontents{1 qmake Common Projects}
+ \endlist
+
+ \section1 Table of Contents
+
+ \list
+ \o \l{Using qmake}
+ \tableofcontents{1 Using qmake}
+ \o \l{qmake Project Files}
+ \tableofcontents{1 qmake Project Files}
+ \o \l{Running qmake}
+ \tableofcontents{1 Running qmake}
+ \o \l{qmake Platform Notes}
+ \tableofcontents{1 qmake Platform Notes}
+ \o \l{qmake Advanced Usage}
+ \tableofcontents{1 qmake Advanced Usage}
+ \o \l{Using Precompiled Headers}
+ \tableofcontents{1 Using Precompiled Headers}
+ \o \l{qmake Reference}
+ \tableofcontents{1 qmake Reference}
+ \o \l{qmake Variable Reference}
+ \tableofcontents{1 qmake Variable Reference}
+ \o \l{qmake Function Reference}
+ \tableofcontents{1 qmake Function Reference}
+ \o \l{Configuring qmake's Environment}
+ \tableofcontents{1 Configuring qmake's Environment}
+ \endlist
+*/
+
+/*!
+ \page qmake-using.html
+ \title Using qmake
+ \contentspage {qmake Manual}{Contents}
+ \previouspage qmake Manual
+ \nextpage qmake Project Files
+
+ \c qmake provides a project-oriented system for managing the build
+ process for applications, libraries, and other components. This
+ approach gives developers control over the source files used, and
+ allows each of the steps in the process to be described concisely,
+ typically within a single file. \c qmake expands the information in
+ each project file to a Makefile that executes the necessary commands
+ for compiling and linking.
+
+ In this document, we provide a basic introduction to project files,
+ describe some of the main features of \c qmake, and show how to use
+ \c qmake on the command line.
+
+ \section1 Describing a Project
+
+ Projects are described by the contents of project (\c .pro) files.
+ The information within these is used by \c qmake to generate a Makefile
+ containing all the commands that are needed to build each project.
+ Project files typically contain a list of source and header files,
+ general configuration information, and any application-specific details,
+ such as a list of extra libraries to link against, or a list of extra
+ include paths to use.
+
+ Project files can contain a number of different elements, including
+ comments, variable declarations, built-in functions, and some simple
+ control structures. In most simple projects, it is only necessary
+ to declare the source and header files that are used to build the
+ project with some basic configuration options.
+
+ Complete examples of project files can be found in the
+ \l{qmake Tutorial}.
+ An introduction to project files can be found in the
+ \l{qmake Project Files} chapter, and a more detailed description is
+ available in the \l{qmake Reference}.
+
+ \section1 Building a Project
+
+ For simple projects, you only need to run \c qmake in the top
+ level directory of your project. By default, \c qmake generates a
+ Makefile that you then use to build the project, and you can then
+ run your platform's \c make tool to build the project.
+
+ \c qmake can also be used to generate project files. A full
+ description of \c{qmake}'s command line options can be found in the
+ \l{Running qmake} chapter of this manual.
+
+ \section1 Using Precompiled Headers
+
+ In large projects, it is possible to take advantage of precompiled
+ header files to speed up the build process. This feature is described
+ in detail in the \l{Using Precompiled Headers} chapter.
+*/
+
+/*!
+ \page qmake-project-files.html
+ \title qmake Project Files
+ \contentspage {qmake Manual}{Contents}
+ \previouspage Using qmake
+ \nextpage Running qmake
+
+ Project files contain all the information required by \c qmake to build
+ your application, library, or plugin. The resources used by your project
+ are generally specified using a series of declarations, but support for
+ simple programming constructs allow you to describe different build
+ processes for different platforms and environments.
+
+ \tableofcontents
+
+ \section1 Project File Elements
+
+ The project file format used by \c qmake can be used to support both
+ simple and fairly complex build systems. Simple project files will
+ use a straightforward declarative style, defining standard variables
+ to indicate the source and header files that are used in the project.
+ Complex projects may use the control flow structures to fine-tune the
+ build process.
+
+ The following sections describe the different types of elements used
+ in project files.
+
+ \section2 Variables
+
+ In a project file, variables are used to hold lists of strings.
+ In the simplest projects, these variables inform \c qmake about the
+ configuration options to use, or supply filenames and paths to use
+ in the build process.
+
+ \c qmake looks for certain variables in each project file, and it
+ uses the contents of these to determine what it should write to a
+ Makefile. For example, the list of values in the \c HEADERS and
+ \c SOURCES variables are used to tell \c qmake about header and
+ source files in the same directory as the project file.
+
+ Variables can also be used internally to store temporary lists of values,
+ and existing lists of values can be overwritten or extended with new
+ values.
+
+ The following lines show how lists of values are assigned to variables:
+
+ \snippet doc/src/snippets/qmake/variables.pro 0
+
+ Note that the first assignment only includes values that are specified on
+ the same line as the \c SOURCES variable. The second assignment splits
+ the items across lines by using the \c \\ character.
+
+ The list of values in a variable is extended in the following way:
+
+ \snippet doc/src/snippets/qmake/variables.pro 1
+
+ The \c CONFIG variable is another special variable that \c qmake
+ uses when generating a Makefile. It is discussed in the section on
+ \l{#GeneralConfiguration}{general configuration} later in this chapter.
+ In the above line, \c qt is added to the list of existing values
+ contained in \c CONFIG.
+
+ The following table lists the variables that \c qmake recognizes, and
+ describes what they should contain.
+
+ \table
+ \header \o Variable \o Contents
+ \row \o CONFIG \o General project configuration options.
+ \row \o DESTDIR \o The directory in which the executable or binary file will
+ be placed.
+ \row \o FORMS \o A list of UI files to be processed by \c uic.
+ \row \o HEADERS \o A list of filenames of header (.h) files used when
+ building the project.
+ \row \o QT \o Qt-specific configuration options.
+ \row \o RESOURCES \o A list of resource (.rc) files to be included in the
+ final project. See the \l{The Qt Resource System} for
+ more information about these files.
+ \row \o SOURCES \o A list of source code files to be used when building
+ the project.
+ \row \o TEMPLATE \o The template to use for the project. This determines
+ whether the output of the build process will be an
+ application, a library, or a plugin.
+ \endtable
+
+ The contents of a variable can be read by prepending the variable name with
+ \c $$. This can be used to assign the contents of one variable to another:
+
+ \snippet doc/src/snippets/qmake/dereferencing.pro 0
+
+ The \c $$ operator is used extensively with built-in functions that operate
+ on strings and lists of values. These are described in the chapter on
+ \l{qmake Advanced Usage}.
+
+ \section3 Whitespace
+
+ Normally, variables are used to contain whitespace-separated lists
+ of values. However, it is sometimes necessary to specify values containing
+ spaces. These must be quoted by using the
+ \l{qmake Function Reference#quote-string}{quote()} function in the following way:
+
+ \snippet doc/src/snippets/qmake/quoting.pro 0
+
+ The quoted text is treated as a single item in the list of values held by
+ the variable. A similar approach is used to deal with paths that contain
+ spaces, particularly when defining the
+ \l{qmake Variable Reference#INCLUDEPATH}{INCLUDEPATH} and
+ \l{qmake Variable Reference#LIBS}{LIBS} variables for the Windows platform.
+ In cases like these, the \l{qmake Function Reference#quote(string)}{quote()}
+ function can be used in the following way:
+
+ \snippet doc/src/snippets/qmake/spaces.pro quoting include paths with spaces
+
+ \section2 Comments
+
+ You can add comments to project files. Comments begin with the \c
+ # character and continue to the end of the same line. For example:
+
+ \snippet doc/src/snippets/qmake/comments.pro 0
+
+ To include the \c # character in variable assignments, it is necessary
+ to use the contents of the built-in \c LITERAL_HASH variable. See the
+ \l{qmake Variable Reference#LITERAL_HASH}{variable reference} for more
+ information.
+
+ \section2 Built-in Functions and Control Flow
+
+ \c qmake provides a number of built-in functions to allow the contents
+ of variables to be processed. The most commonly used function in simple
+ project files is the \c include function which takes a filename as an
+ argument. The contents of the given file are included in the project
+ file at the place where the \c include function is used.
+ The \c include function is most commonly used to include other project
+ files:
+
+ \snippet doc/src/snippets/qmake/include.pro 0
+
+ Support for conditional structures is made available via
+ \l{qmake Advanced Usage#scopes}{scopes} that behave like \c if
+ statements in programming languages:
+
+ \snippet doc/src/snippets/qmake/scopes.pro 0
+
+ The assignments inside the braces are only made if the condition is
+ true. In this case, the special \c win32 variable must be set; this
+ happens automatically on Windows, but this can also be specified on
+ other platforms by running \c qmake with the \c{-win32} command line
+ option (see \l{Running qmake} for more information). The opening
+ brace must stand on the same line as the condition.
+
+ Simple loops are constructed by iterating over lists of values using
+ the built-in \c for function. The following code adds directories
+ to the \l{qmake Variable Reference#SUBDIRS}{SUBDIRS} variable, but
+ only if they exist:
+
+ \snippet doc/src/snippets/qmake/functions.pro 0
+
+ More complex operations on variables that would usually require loops
+ are provided by built-in functions such as \c find, \c unique, and
+ \c count. These functions, and many others are provided to manipulate
+ strings and paths, support user input, and call external tools. A list
+ of the functions available can be found in the
+ \l{qmake Advanced Usage} chapter of this manual.
+
+ \section1 Project Templates
+
+ The \c TEMPLATE variable is used to define the type of project that will
+ be built. If this is not declared in the project file, \c qmake assumes
+ that an application should be built, and will generate an appropriate
+ Makefile (or equivalent file) for the purpose.
+
+ The types of project available are listed in the following table with
+ information about the files that \c qmake will generate for each of them:
+
+ \table
+ \header \o Template \o Description of \c qmake output
+ \row \o app (default) \o Creates a Makefile to build an application.
+ \row \o lib \o Creates a Makefile to build a library.
+ \row \o subdirs \o Creates a Makefile containing rules for the
+ subdirectories specified using the \l{qmake Variable Reference#SUBDIRS}{SUBDIRS}
+ variable. Each subdirectory must contain its own project file.
+ \row \o vcapp \o Creates a Visual Studio Project file to build
+ an application.
+ \row \o vclib \o Creates a Visual Studio Project file to build a library.
+ \endtable
+
+ See the \l{qmake Tutorial} for advice on writing project files for
+ projects that use the \c app and \c lib templates.
+
+ When the \c subdirs template is used, \c qmake generates a Makefile
+ to examine each specified subdirectory, process any project file it finds
+ there, and run the platform's \c make tool on the newly-created Makefile.
+ The \l{qmake Variable Reference#SUBDIRS}{SUBDIRS} variable is used to
+ contain a list of all the subdirectories to be processed.
+
+ \target GeneralConfiguration
+ \section1 General Configuration
+
+ The \l{qmake Variable Reference#CONFIG}{CONFIG variable} specifies the
+ options and features that the compiler should use and the libraries that
+ should be linked against. Anything can be added to the \c CONFIG variable,
+ but the options covered below are recognized by \c qmake internally.
+
+ The following options control the compiler flags that are used to build the
+ project:
+
+ \table
+ \header \o Option \o Description
+ \row \o release \o The project is to be built in release mode.
+ This is ignored if \c debug is also specified.
+ \row \o debug \o The project is to be built in debug mode.
+ \row \o debug_and_release \o The project is built in \e both debug and
+ release modes.
+ \row \o debug_and_release_target \o The project is built in \e both debug
+ and release modes. TARGET is built into \e both the debug and release directories.
+ \row \o build_all \o If \c debug_and_release is specified, the project is
+ built in both debug and release modes by default.
+ \row \o autogen_precompile_source \o Automatically generates a \c .cpp file that includes
+ the precompiled header file specified in the .pro file.
+ \row \o ordered \o When using the \c subdirs template, this option
+ specifies that the directories listed should be processed in the
+ order in which they are given.
+ \row \o warn_on \o The compiler should output as many warnings as possible.
+ This is ignored if \c warn_off is specified.
+ \row \o warn_off \o The compiler should output as few warnings as possible.
+ \row \o copy_dir_files \o Enables the install rule to also copy directories, not just files.
+ \endtable
+
+ The \c debug_and_release option is special in that it enables \e both debug and
+ release versions of a project to be built. In such a case, the Makefile that
+ \c qmake generates includes a rule that builds both versions, and this can be
+ invoked in the following way:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 0
+
+ Adding the \c build_all option to the \c CONFIG variable makes this rule
+ the default when building the project, and installation targets will be
+ created for both debug and release builds.
+
+ Note that each of the options specified in the \c CONFIG variable can also be
+ used as a scope condition.
+ You can test for the presence of certain configuration options by using the
+ built-in \l{qmake Function Reference#CONFIG(config)}{CONFIG()} function.
+ For example, the following lines show the function as the condition in a scope
+ to test whether only the \c opengl option is in use:
+
+ \snippet doc/src/snippets/qmake/configscopes.pro 4
+ \snippet doc/src/snippets/qmake/configscopes.pro 5
+
+ This enables different configurations to be defined for \c release and
+ \c debug builds, and is described in more detail in the
+ \l{qmake Advanced Usage#Scopes}{Scopes} section of the
+ \l{qmake Advanced Usage}{Advanced Usage} chapter of this manual.
+
+ The following options define the type of project to be built. Note that some
+ of these options only take effect when used on the relevant platform. On other
+ platforms, they have no effect.
+
+ \table
+ \header \o Option \o Description
+ \row \o qt \o The project is a Qt application and should link against the Qt
+ library. You can use the \c QT variable to control any additional
+ Qt modules that are required by your application.
+ \row \o thread \o The project is a multi-threaded application.
+ \row \o x11 \o The project is an X11 application or library.
+ \endtable
+
+ When using \l{qmake Variable Reference#TEMPLATE}{application or library project
+ templates}, more specialized configuration options can be used to fine tune the
+ build process. These are explained in details in the
+ \l{qmake-common-projects.html}{Common Projects} chapter of this manual.
+
+ For example, if your application uses the Qt library and you want to
+ build it as a multi-threaded application in \c debug mode, your project
+ file will contain the following line:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 1
+
+ Note, that you must use "+=", not "=", or \c qmake will not be able to
+ use Qt's configuration to determine the settings needed for your project.
+
+ \section1 Declaring Qt Libraries
+
+ If the \c CONFIG variable contains the \c qt value, qmake's support for Qt
+ applications is enabled. This makes it possible to fine-tune which of the
+ Qt modules are used by your application. This is achieved with the \c QT
+ variable which can be used to declare the required extension modules.
+ For example, we can enable the XML and network modules in the following way:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 2
+
+ Note that \c QT includes the \c core and \c gui modules by default, so the
+ above declaration \e adds the network and XML modules to this default list.
+ The following assignment \e omits the default modules, and will lead to
+ errors when the application's source code is being compiled:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 3
+
+ If you want to build a project \e without the \c gui module, you need to
+ exclude it with the "-=" operator. By default, \c QT contains both
+ \c core and \c gui, so the following line will result in a minimal
+ Qt project being built:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 4
+
+ The table below shows the options that can be used with the \c QT variable
+ and the features that are associated with each of them:
+
+ \table
+ \header \o Option \o Features
+ \row \o core (included by default) \o QtCore module
+ \row \o gui (included by default) \o QtGui module
+ \row \o network \o QtNetwork module
+ \row \o opengl \o QtOpenGL module
+ \row \o sql \o QtSql module
+ \row \o svg \o QtSvg module
+ \row \o xml \o QtXml module
+ \row \o xmlpatterns \o QtXmlPatterns module
+ \row \o qt3support \o Qt3Support module
+ \endtable
+
+ Note that adding the \c opengl option to the \c QT variable automatically
+ causes the equivalent option to be added to the \c CONFIG variable.
+ Therefore, for Qt applications, it is not necessary to add the \c opengl
+ option to both \c CONFIG and \c{QT}.
+
+ \section1 Configuration Features
+
+ \c qmake can be set up with extra configuration features that are specified
+ in feature (.prf) files. These extra features often provide support for
+ custom tools that are used during the build process. To add a feature to
+ the build process, append the feature name (the stem of the feature filename)
+ to the \c CONFIG variable.
+
+ For example, \c qmake can configure the build process to take advantage
+ of external libraries that are supported by
+ \l{http://www.freedesktop.org/wiki/Software_2fpkgconfig}{pkg-config},
+ such as the D-Bus and ogg libraries, with the following lines:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 5
+
+ More information about features can be found in the
+ \l{qmake Advanced Usage#Adding New Configuration Features}
+ {Adding New Configuration Features} section of the \l{qmake Advanced Usage}
+ chapter.
+
+ \section1 Declaring Other Libraries
+
+ If you are using other libraries in your project in addition to those
+ supplied with Qt, you need to specify them in your project file.
+
+ The paths that \c qmake searches for libraries and the specific libraries
+ to link against can be added to the list of values in the
+ \l{qmake Variable Reference#LIBS}{LIBS} variable. The paths to the libraries
+ themselves can be given, or the familiar Unix-style notation for specifying
+ libraries and paths can be used if preferred.
+
+ For example, the following lines show how a library can be specified:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 6
+
+ The paths containing header files can also be specified in a similar way
+ using the \l{qmake Variable Reference#INCLUDEPATH}{INCLUDEPATH} variable.
+
+ For example, it is possible to add several paths to be searched for header
+ files:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 7
+*/
+
+/*!
+ \page qmake-running.html
+ \title Running qmake
+ \contentspage {qmake Manual}{Contents}
+ \previouspage qmake Project Files
+ \nextpage qmake Platform Notes
+
+ The behavior of \c qmake can be customized when it is run by
+ specifying various options on the command line. These allow the
+ build process to be fine-tuned, provide useful diagnostic
+ information, and can be used to specify the target platform for
+ your project.
+
+ \tableofcontents
+
+ \target Commands
+ \section1 Command-Line Options
+
+ \section2 Syntax
+
+ The syntax used to run \c qmake takes the following simple form:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 8
+
+ \c qmake supports two different modes of operation: In the default mode,
+ \c qmake will use the description in a project file to generate a Makefile,
+ but it is also possible to use \c qmake to generate project files.
+ If you want to explicitly set the mode, you must specify it before all
+ other options. The \c mode can be either of the following two values:
+
+ \list
+ \o \c -makefile \BR
+ \c qmake output will be a Makefile.
+ \o \c -project \BR
+ \c qmake output will be a project file. \BR
+\bold{Note:} It is likely that the created file will need to be edited for example adding the \c QT variable to suit what modules are required for the project.
+ \endlist
+
+ The following \c options are used to specify both general and mode-specific
+ settings. Options that only apply to the Makefile mode are described in the
+ \l{#MakefileMode}{Makefile Mode Options} section; options that influence the
+ creation of project files are described in the
+ \l{#ProjectMode}{Project File Options} section.
+
+ The \c files argument represents a list of one or more project files, separated
+ by spaces.
+
+ \section2 Options
+
+ A wide range of options can be specified on the command line to \c qmake in
+ order to customize the build process, and to override default settings for
+ your platform. The following basic options provide usage information, specify
+ where \c qmake writes the output file, and control the level of debugging
+ information that will be written to the console:
+
+ \list
+ \o \c -help \BR
+ \c qmake will go over these features and give some useful help.
+ \o \c -o file \BR
+ \c qmake output will be directed to \e file. If this option
+ is not specified, \c qmake will try to use a suitable file name for its
+ output, depending on the mode it is running in.\BR
+ If '-' is specified, output is directed to stdout.
+ \o \c -d \BR
+ \c qmake will output debugging information.
+ \endlist
+
+ For projects that need to be built differently on each target platform, with
+ many subdirectories, you can run \c qmake with each of the following
+ options to set the corresponding platform-specific variable in each
+ project file:
+
+ \list
+ \o \c -unix \BR
+ \c qmake will run in unix mode. In this mode, Unix file
+ naming and path conventions will be used, additionally testing for \c unix
+ (as a scope) will succeed. This is the default mode on all Unices.
+ \o \c -macx \BR
+ \c qmake will run in Mac OS X mode. In this mode, Unix file
+ naming and path conventions will be used, additionally testing for \c macx
+ (as a scope) will succeed. This is the default mode on Mac OS X.
+ \o \c -win32 \BR
+ \c qmake will run in win32 mode. In this mode, Windows file naming and path
+ conventions will be used, additionally testing for \c win32 (as a scope)
+ will succeed. This is the default mode on Windows.
+ \endlist
+
+ The template used for the project is usually specified by the \c TEMPLATE
+ variable in the project file. We can override or modify this by using the
+ following options:
+
+ \list
+ \o \c -t tmpl \BR
+ \c qmake will override any set \c TEMPLATE variables with tmpl, but only
+ \e after the .pro file has been processed.
+ \o \c -tp prefix \BR
+ \c qmake will add the prefix to the \c TEMPLATE variable.
+ \endlist
+
+ The level of warning information can be fine-tuned to help you find problems in
+ your project file:
+
+ \list
+ \o \c -Wall \BR
+ \c qmake will report all known warnings.
+ \o \c -Wnone \BR
+ No warning information will be generated by \c qmake.
+ \o \c -Wparser \BR
+ \c qmake will only generate parser warnings. This will alert
+ you to common pitfalls and potential problems in the parsing of your
+ project files.
+ \o \c -Wlogic \BR
+ \c qmake will warn of common pitfalls and potential problems in your
+ project file. For example, \c qmake will report whether a file is placed
+ into a list of files multiple times, or if a file cannot be found.
+ \endlist
+
+ \target MakefileMode
+ \section2 Makefile Mode Options
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 9
+
+ In Makefile mode, \c qmake will generate a Makefile that is used to build the
+ project. Additionally, the following options may be used in this mode to
+ influence the way the project file is generated:
+
+ \list
+ \o \c -after \BR
+ \c qmake will process assignments given on the command line after
+ the specified files.
+ \o \c -nocache \BR
+ \c qmake will ignore the .qmake.cache file.
+ \o \c -nodepend \BR
+ \c qmake will not generate any dependency information.
+ \o \c -cache file \BR
+ \c qmake will use \e file as the cache file, ignoring any other
+ .qmake.cache files found.
+ \o \c -spec spec \BR
+ \c qmake will use \e spec as a path to platform and compiler information,
+ and the value of \c QMAKESPEC will be ignored.
+ \endlist
+
+ You may also pass \c qmake assignments on the command line;
+ they will be processed before all of the files specified. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 10
+
+ This will generate a Makefile, from test.pro with Unix pathnames. However
+ many of the specified options aren't necessary as they are the default.
+ Therefore, the line can be simplified on Unix to:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 11
+
+ If you are certain you want your variables processed after the
+ files specified, then you may pass the \c -after option. When this
+ is specified, all assignments on the command line after the \c -after
+ option will be postponed until after the specified files are parsed.
+
+ \target ProjectMode
+ \section2 Project Mode Options
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 12
+
+ In project mode, \c qmake will generate a project file. Additionally, you
+ may supply the following options in this mode:
+
+ \list
+ \o \c -r \BR
+ \c qmake will look through supplied directories recursively
+ \o \c -nopwd \BR
+ \c qmake will not look in your current working directory for
+ source code and only use the specified \c files
+ \endlist
+
+ In this mode, the \c files argument can be a list of files or directories.
+ If a directory is specified, it will be included in the \c DEPENDPATH
+ variable, and relevant code from there will be included in the generated
+ project file. If a file is given, it will be appended to the correct
+ variable, depending on its extension; for example, UI files are added
+ to \c FORMS, and C++ files are added to \c SOURCES.
+
+ You may also pass assignments on the command line in this mode. When doing
+ so, these assignments will be placed last in the generated project file.
+*/
+
+/*!
+ \page qmake-platform-notes.html
+ \title qmake Platform Notes
+ \contentspage {qmake Manual}{Contents}
+ \previouspage Running qmake
+ \nextpage qmake Advanced Usage
+
+ Many cross-platform projects can be handled by the \c{qmake}'s basic
+ configuration features. On some platforms, it is sometimes useful, or even
+ necessary, to take advantage of platform-specific features. \c qmake knows
+ about many of these features, and these can be accessed via specific
+ variables that only have an effect on the platforms where they are relevant.
+
+ \tableofcontents
+
+ \section1 Mac OS X
+
+ Features specific to this platform include support for creating universal
+ binaries, frameworks and bundles.
+
+ \section2 Source and Binary Packages
+
+ The version of \c qmake supplied in source packages is configured slightly
+ differently to that supplied in binary packages in that it uses a different
+ feature specification. Where the source package typically uses the
+ \c macx-g++ specification, the binary package is typically configured to
+ use the \c macx-xcode specification.
+
+ Users of each package can override this configuration by invoking \c qmake
+ with the \c -spec option (see \l{Running qmake} for more information). This
+ makes it possible, for example, to use \c qmake from a binary package to
+ create a Makefile in a project directory with the following command line
+ invocation:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 13
+
+ \section2 Using Frameworks
+
+ \c qmake is able to automatically generate build rules for linking against
+ frameworks in the standard framework directory on Mac OS X, located at
+ \c{/Library/Frameworks/}.
+
+ Directories other than the standard framework directory need to be specified
+ to the build system, and this is achieved by appending linker options to the
+ \l{qmake Variable Reference#QMAKE_LFLAGS}{QMAKE_LFLAGS} variable, as shown
+ in the following example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 14
+
+ The framework itself is linked in by appending the \c{-framework} options and
+ the name of the framework to the \l{qmake Variable Reference#LIBS}{LIBS}
+ variable:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 15
+
+ \section2 Creating Frameworks
+
+ Any given library project can be configured so that the resulting library
+ file is placed in a
+ \l{http://developer.apple.com/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WhatAreFrameworks.html}
+ {framework}, ready for deployment. To do this, set up the project to use the
+ \l{qmake Variable Reference#TEMPLATE}{\c lib template} and add the
+ \c lib_bundle option to the
+ \l{qmake Variable Reference#CONFIG}{CONFIG} variable:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 16
+
+ The data associated with the library is specified using the
+ \l{qmake Variable Reference#QMAKE_BUNDLE_DATA}{QMAKE_BUNDLE_DATA}
+ variable. This holds items that will be installed with a library
+ bundle, and is often used to specify a collection of header files,
+ as in the following example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 17
+
+ Here, the \c FRAMEWORK_HEADERS variable is a user-defined variable that
+ is used to define the headers required to use a particular framework.
+ Appending it to the \c QMAKE_BUNDLE_DATA variable ensures that the
+ information about these headers are added to the collection of
+ resources that will be installed with the library bundle. Also, the
+ framework's name and version are specified by
+ \l{qmake Variable Reference#QMAKE_FRAMEWORK_BUNDLE_NAME}
+ {QMAKE_FRAMEWORK_BUNDLE_NAME}
+ and \l{qmake Variable Reference#QMAKE_FRAMEWORK_VERSION}
+ {QMAKE_FRAMEWORK_VERSION} variables. By default, the values used for
+ these are obtained from the \l{qmake Variable Reference#TARGET}{TARGET}
+ and \l{qmake Variable Reference#VERSION}{VERSION} variables.
+
+ See \l{Deploying an Application on Mac OS X} for more information about
+ deploying applications and libraries.
+
+ \section2 Creating Universal Binaries
+
+ To create a universal binary for your application, you need to be using
+ a version of Qt that has been configured with the \c{-universal} option.
+
+ The architectures to be supported in the binary are specified with the
+ \l{qmake Variable Reference#CONFIG}{CONFIG} variable. For example, the
+ following assignment causes \c qmake to generate build rules to create
+ a universal binary for both PowerPC and x86 architectures:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 18
+
+ Additionally, developers using a PowerPC-based platform need to set the
+ \l{qmake Variable Reference#QMAKE_MAC_SDK}{QMAKE_MAC_SDK} variable.
+ This process is discussed in more detail in the
+ \l{Deploying an Application on Mac OS X#Architecture Dependencies}{deployment guide for Mac OS X}.
+
+ \section2 Creating and Moving Xcode Projects
+
+ Developers on Mac OS X can take advantage of \c{qmake}'s support for Xcode
+ project files, as described in
+ \l{Qt is Mac OS X Native#Development Tools}{Qt is Mac OS X Native},
+ by running \c qmake to generate an Xcode project from an existing \c qmake
+ project files. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 19
+
+ Note that, if a project is later moved on the disk, \c qmake must be run
+ again to process the project file and create a new Xcode project file.
+
+ \section2 On supporting two build targets simultaneously
+
+ Implementing this is currently not feasible, because the XCode
+ concept of Active Build Configurations is conceptually different
+ from the qmake idea of build targets.
+
+ The XCode Active Build Configurations settings are for modifying
+ xcode configurations, compiler flags and similar build
+ options. Unlike Visual Studio, XCode does not allow for the
+ selection of specific library files based on whether debug or
+ release build configurations are selected. The qmake debug and
+ release settings control which library files are linked to the
+ executable.
+
+ It is currently not possible to set files in XCode configuration
+ settings from the qmake generated xcode project file. The way the
+ libraries are linked in the "Frameworks & Libraries" phase in the
+ XCode build system.
+
+ Furthermore, The selected "Active Build Configuration" is stored
+ in a .pbxuser file, which is generated by xcode on first load, not
+ created by qmake.
+
+ \section1 Windows
+
+ Features specific to this platform include support for creating Visual
+ Studio project files and handling manifest files when deploying Qt
+ applications developed using Visual Studio 2005.
+
+ \section2 Creating Visual Studio Project Files
+
+ Developers using Visual Studio to write Qt applications can use the
+ Visual Studio integration facilities provided with the
+ \l{Qt Commercial Editions} and do not need to worry about how
+ project dependencies are managed.
+
+ However, some developers may need to import an existing \c qmake project
+ into Visual Studio. \c qmake is able to take a project file and create a
+ Visual Studio project that contains all the necessary information required
+ by the development environment. This is achieved by setting the \c qmake
+ \l{qmake Variable Reference#TEMPLATE}{project template} to either \c vcapp
+ (for application projects) or \c vclib (for library projects).
+
+ This can also be set using a command line option, for example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 20
+
+ It is possible to recursively generate \c{.vcproj} files in subdirectories
+ and a \c{.sln} file in the main directory, by typing:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 21
+
+ Each time you update the project file, you need to run \c qmake to generate
+ an updated Visual Studio project.
+
+ \note If you are using the Visual Studio Add-in, you can import \c .pro
+ files via the \gui{Qt->Import from .pro file} menu item.
+
+ \section2 Visual Studio 2005 Manifest Files
+
+ When deploying Qt applications built using Visual Studio 2005, it is
+ necessary to ensure that the manifest file, created when the application
+ was linked, is handled correctly. This is handled automatically for
+ projects that generate DLLs.
+
+ Removing manifest embedding for application executables can be done with
+ the following assignment to the \l{qmake Variable Reference#CONFIG}
+ {CONFIG} variable:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 22
+
+ Also, the manifest embedding for DLLs can be removed with the following
+ assignment to the \l{qmake Variable Reference#CONFIG}{CONFIG} variable:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 23
+
+ This is discussed in more detail in the
+ \l{Deploying an Application on Windows#Visual Studio 2005 Onwards}
+ {deployment guide for Windows}.
+
+
+ \section1 Symbian platform
+
+ Features specific to this platform include handling of static data,
+ capabilities, stack and heap size, compiler specific options, and unique
+ identifiers for the application or library.
+
+ \section2 Handling of static data
+
+ If the application uses any static data, the build system needs to be
+ informed about it. This is because Symbian tries to save memory if no
+ static data is in use.
+
+ To specify that static data support is desired, add this to the project file:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 129
+
+ The default value is zero.
+
+ \section2 Stack and heap size
+
+ The Symbian platform uses predefined sizes for stacks and heaps. If an
+ application exceeds either limit, it may crash or fail to complete its
+ task. Crashes that seem to have no reason can often be traced back to
+ insufficient stack and/or heap sizes.
+
+ The stack size has a maximum value, whereas the heap size has a
+ minimum and a maximum value, all specified in bytes. The minimum value
+ prevents the application from starting if that amount of memory is not available. The
+ minimum and maximum values are separated by a space. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 130
+
+ The default values depend on the version of the Symbian SDK you're using.
+
+ \section2 Compiler specific options
+
+ General compiler options can as usual be set using \c QMAKE_CFLAGS and \c QMAKE_CXXFLAGS.
+ In order to set specific compiler options, \c QMAKE_CFLAGS.<compiler> and
+ \c QMAKE_CXXFLAGS.<compiler> can be used. \c <compiler> can be either \c CW for the WINSCW
+ architecture (emulator), or \c ARMCC for the ARMv5 architecture (hardware), or \c GCCE for
+ the ARMv5 architecture (hardware).
+
+ Here is an example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 131
+
+ \section2 Unique identifiers
+
+ Symbian applications may have unique identifiers attached to them.
+ Here is how to define them in a project file:
+
+ There are four types of IDs supported: \c UID2, \c UID3, \c SID, and \c VID. They
+ are specified like this:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 132
+
+ If \c UID2 is not specified, it defaults to the same value as \c UID3.
+ If \c UID3 is not specified, qmake will automatically generate a \c UID3
+ suitable for development and debugging. This value should be manually
+ specified for applications that are to be released. In order to optain
+ an official UID, please contact Nokia. Both \c SID and \c VID default to empty values.
+
+ For more information about unique identifiers and their meaning for
+ Symbian applications, please refer to the Symbian SDK documentation.
+
+ \section2 Capabilities
+
+ Capabilities define extra priviledges for the application, such as the
+ ability to list all files on the file system. Capabilities are defined
+ in the project file like this:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 133
+
+ It is also possible to specify which capabilities \e not to have,
+ by first specifying \c ALL and then list the unwanted capabilities
+ with a minus in front of them, like this:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 134
+
+ For more information about capabilities, please refer to the Symbian SDK documentation.
+*/
+
+/*!
+ \page qmake-reference.html
+ \title qmake Reference
+ \contentspage {qmake Manual}{Contents}
+ \previouspage Using Precompiled Headers
+ \nextpage qmake Variable Reference
+
+ This reference is a detailed index of all the variables and function
+ that are available for use in \c qmake project files.
+
+ \section1 Variable Reference
+
+ The \l{qmake Variable Reference} describes the variables that are
+ recognized by \c qmake when configuring the build process for
+ projects.
+
+ \section1 Function Reference
+
+ The \l{qmake Function Reference} describes the function that can be
+ used to process the contents of variables defined in project files.
+
+ \target FrequentlyUsedVariables
+ \section1 Frequently Used Variables
+
+ The following variables are frequently used in project files to describe
+ common aspects of the build process. These are fully described in the
+ \l{qmake-variable-reference.html}{Variable Reference}.
+
+ \list
+ \o \l{qmake Variable Reference#CONFIG}{CONFIG}
+ \o \l{qmake Variable Reference#DEF_FILE}{DEF_FILE}
+ \o \l{qmake Variable Reference#DEFINES}{DEFINES}
+ \o \l{qmake Variable Reference#DESTDIR}{DESTDIR}
+ \o \l{qmake Variable Reference#DISTFILES}{DISTFILES}
+ \o \l{qmake Variable Reference#DLLDESTDIR}{DLLDESTDIR}
+ \o \l{qmake Variable Reference#FORMS}{FORMS}
+ \o \l{qmake Variable Reference#FORMS3}{FORMS3}
+ \o \l{qmake Variable Reference#GUID}{GUID}
+ \o \l{qmake Variable Reference#HEADERS}{HEADERS}
+ \o \l{qmake Variable Reference#INCLUDEPATH}{INCLUDEPATH}
+ \o \l{qmake Variable Reference#LEXSOURCES}{LEXSOURCES}
+ \o \l{qmake Variable Reference#LIBS}{LIBS}
+ \o \l{qmake Variable Reference#MOC_DIR}{MOC_DIR}
+ \o \l{qmake Variable Reference#OBJECTS_DIR}{OBJECTS_DIR}
+ \o \l{qmake Variable Reference#QT}{QT}
+ \o \l{qmake Variable Reference#RCC_DIR}{RCC_DIR}
+ \o \l{qmake Variable Reference#REQUIRES}{REQUIRES}
+ \o \l{qmake Variable Reference#RESOURCES}{RESOURCES}
+ \o \l{qmake Variable Reference#SOURCES}{SOURCES}
+ \o \l{qmake Variable Reference#SUBDIRS}{SUBDIRS}
+ \o \l{qmake Variable Reference#TARGET}{TARGET}
+ \o \l{qmake Variable Reference#TEMPLATE}{TEMPLATE}
+ \o \l{qmake Variable Reference#TRANSLATIONS}{TRANSLATIONS}
+ \o \l{qmake Variable Reference#UI_DIR}{UI_DIR}
+ \o \l{qmake Variable Reference#UI_HEADERS_DIR}{UI_HEADERS_DIR}
+ \o \l{qmake Variable Reference#UI_SOURCES_DIR}{UI_SOURCES_DIR}
+ \o \l{qmake Variable Reference#VERSION}{VERSION}
+ \o \l{qmake Variable Reference#YACCSOURCES}{YACCSOURCES}
+ \endlist
+
+ \section1 Environment Variables and Configuration
+
+ The \l{Configuring qmake's Environment} chapter of this manual
+ describes the environment variables that \c qmake uses when
+ configuring the build process.
+*/
+
+/*!
+ \page qmake-variable-reference.html
+ \title qmake Variable Reference
+ \contentspage {qmake Manual}{Contents}
+ \previouspage qmake Reference
+ \nextpage qmake Function Reference
+
+ \c{qmake}'s fundamental behavior is influenced by variable declarations that
+ define the build process of each project. Some of these declare resources,
+ such as headers and source files, that are common to each platform; others
+ are used to customize the behavior of compilers and linkers on specific
+ platforms.
+
+ Platform-specific variables follow the naming pattern of the
+ variables which they extend or modify, but include the name of the relevant
+ platform in their name. For example, \c QMAKE_LIBS can be used to specify a list
+ of libraries that a project needs to link against, and \c QMAKE_LIBS_X11 can be
+ used to extend or override this list.
+
+ \tableofcontents{3}
+
+ \target BLD_INF_RULES
+ \section1 BLD_INF_RULES
+
+ \e {This is only used on the Symbian platform.}
+
+ Generic \c bld.inf file content can be specified with \c BLD_INF_RULES variables.
+ The section of \c bld.inf file where each rule goes is appended to
+ \c BLD_INF_RULES with a dot.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 146
+
+ This will add the specified statements to the \c prj_exports section of the
+ generated \c bld.inf file.
+
+ It is also possible to add multiple rows in a single block. Each double
+ quoted string will be placed on a new row in the generated \c bld.inf file.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 143
+
+ Any rules you define will be added after automatically generated
+ rules in each section.
+
+ \target CONFIG
+ \section1 CONFIG
+
+ The \c CONFIG variable specifies project configuration and
+ compiler options. The values will be recognized internally by
+ \c qmake and have special meaning. They are as follows.
+
+ These \c CONFIG values control compilation flags:
+
+ \table 95%
+ \header \o Option \o Description
+ \row \o release \o The project is to be built in release mode.
+ This is ignored if \c debug is also specified.
+ \row \o debug \o The project is to be built in debug mode.
+ \row \o debug_and_release \o The project is built in \e both debug and
+ release modes. This can have some unexpected side effects (see
+ below for more information).
+ \row \o build_all \o If \c debug_and_release is specified, the project is
+ built in both debug and release modes by default.
+ \row \o ordered \o When using the \c subdirs template, this option
+ specifies that the directories listed should be processed in the
+ order in which they are given.
+ \row \o precompile_header \o Enables support for the use of
+ \l{Using Precompiled Headers}{precompiled headers} in projects.
+ \row \o warn_on \o The compiler should output as many warnings as possible.
+ This is ignored if \c warn_off is specified.
+ \row \o warn_off \o The compiler should output as few warnings as possible.
+ \omit
+ \row \o qt_debug \o Specifies that the project should be built against
+ debug versions of the Qt libraries specified using the
+ \l{#QT}{QT} variable.
+ \row \o qt_release \o Specifies that the project should be built against
+ release versions of the Qt libraries specified using the
+ \l{#QT}{QT} variable.
+ \endomit
+ \endtable
+
+ Since the \c debug option overrides the \c release option when both are
+ defined in the \c CONFIG variable, it is necessary to use the
+ \c debug_and_release option if you want to allow both debug and release
+ versions of a project to be built. In such a case, the Makefile that
+ \c qmake generates includes a rule that builds both versions, and this can
+ be invoked in the following way:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 24
+
+ When linking a library, \c qmake relies on the underlying platform to know
+ what other libraries this library links against. However, if linking
+ statically, \c qmake will not get this information unless we use the following
+ \c CONFIG options:
+
+ \table 95%
+ \header \o Option \o Description
+ \row \o create_prl \o This option enables \c qmake to track these
+ dependencies. When this option is enabled, \c qmake will create a file
+ ending in \c .prl which will save meta-information about the library
+ (see \l{LibDepend}{Library Dependencies} for more info).
+ \row \o link_prl \o When this is enabled, \c qmake will process all
+ libraries linked to by the application and find their meta-information
+ (see \l{LibDepend}{Library Dependencies} for more info).
+ \endtable
+
+ Please note that \c create_prl is required when \e {building} a
+ static library, while \c link_prl is required when \e {using} a
+ static library.
+
+ On Windows (or if Qt is configured with \c{-debug_and_release}, adding the
+ \c build_all option to the \c CONFIG variable makes this rule the default
+ when building the project, and installation targets will be created for
+ both debug and release builds.
+
+ Additionally, adding \c debug_and_release to the \c CONFIG variable will
+ cause both \c debug and \c release to be defined in the contents of
+ \c CONFIG. When the project file is processed, the
+ \l{qmake Advanced Usage#Scopes}{scopes} that test for each value will be
+ processed for \e both debug and release modes. The \c{build_pass} variable
+ will be set for each of these mode, and you can test for this to perform
+ build-specific tasks. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 25
+
+ As a result, it may be useful to define mode-specific variables, such as
+ \l{#QMAKE_LFLAGS_RELEASE}{QMAKE_LFLAGS_RELEASE}, instead of general
+ variables, such as \l{#QMAKE_LFLAGS}{QMAKE_LFLAGS}, where possible.
+
+ The following options define the application/library type:
+
+ \table 95%
+ \header \o Option \o Description
+ \row \o qt \o The target is a Qt application/library and requires the Qt
+ library and header files. The proper include and library paths for the
+ Qt library will automatically be added to the project. This is defined
+ by default, and can be fine-tuned with the \c{\l{#qt}{QT}} variable.
+ \row \o thread \o The target is a multi-threaded application or library. The
+ proper defines and compiler flags will automatically be added to
+ the project.
+ \row \o x11 \o The target is a X11 application or library. The proper
+ include paths and libraries will automatically be added to the
+ project.
+ \row \o windows \o The target is a Win32 window application (app only). The
+ proper include paths, compiler flags and libraries will
+ automatically be added to the project.
+ \row \o console \o The target is a Win32 console application (app only). The
+ proper include paths, compiler flags and libraries will
+ automatically be added to the
+ project.
+ \row \o shared \o{1,3} The target is a shared object/DLL. The proper
+ include paths, compiler flags and libraries will automatically be
+ added to the project.
+ \row \o dll \o
+ \row \o dylib \o
+ \row \o static \o{1,2} The target is a static library (lib only). The proper
+ compiler flags will automatically be added to the project.
+ \row \o staticlib \o
+ \row \o plugin \o The target is a plugin (lib only). This enables dll as well.
+ \row \o designer \o The target is a plugin for \QD.
+ \row \o uic3 \o Configures qmake to run uic3 on the content of \c FORMS3 if
+ defined; otherwise the contents of \c FORMS will be processed instead.
+ \row \o no_lflags_merge \o Ensures that the list of libraries stored in the
+ \c LIBS variable is not reduced to a list of unique values before it is used.
+ \row \o resources \o Configures qmake to run rcc on the content of \c RESOURCES
+ if defined.
+ \endtable
+
+ These options are used to set the compiler flags:
+
+ \table 95%
+ \header \o Option \o Description
+ \row \o 3dnow \o AMD 3DNow! instruction support is enabled.
+ \row \o exceptions \o Exception support is enabled.
+ \row \o mmx \o Intel MMX instruction support is enabled.
+ \row \o rtti \o RTTI support is enabled.
+ \row \o stl \o STL support is enabled.
+ \row \o sse \o SSE support is enabled.
+ \row \o sse2 \o SSE2 support is enabled.
+ \endtable
+
+ These options define specific features on Windows only:
+
+ \table 95%
+ \header \o Option \o Description
+ \row \o flat \o When using the vcapp template this will put all the source
+ files into the source group and the header files into the header group
+ regardless of what directory they reside in. Turning this
+ option off will group the files within the source/header group depending
+ on the directory they reside. This is turned on by default.
+ \row \o embed_manifest_dll \o Embeds a manifest file in the DLL created
+ as part of a library project.
+ \row \o embed_manifest_exe \o Embeds a manifest file in the DLL created
+ as part of an application project.
+ \row \o incremental \o Used to enable or disable incremental linking in Visual
+ C++, depending on whether this feature is enabled or disabled by default.
+ \endtable
+
+ See \l{qmake Platform Notes#Visual Studio 2005 Manifest Files}{qmake Platform Notes}
+ for more information on the options for embedding manifest files.
+
+ These options only have an effect on Mac OS X:
+
+ \table 95%
+ \header \o Option \o Description
+ \row \o ppc \o Builds a PowerPC binary.
+ \row \o x86 \o Builds an i386 compatible binary.
+ \row \o app_bundle \o Puts the executable into a bundle (this is the default).
+ \row \o lib_bundle \o Puts the library into a library bundle.
+ \endtable
+
+ The build process for bundles is also influenced by
+ the contents of the \l{#QMAKE_BUNDLE_DATA}{QMAKE_BUNDLE_DATA} variable.
+
+ These options only have an effect on the Symbian platform:
+
+ \table 95%
+ \header \o Option \o Description
+ \row \o stdbinary \o Builds an Open C binary (i.e. STDDLL, STDEXE, or STDLIB,
+ depending on the target binary type.)
+ \row \o no_icon \o Doesn't generate resources needed for displaying an icon
+ for executable in application menu (app only).
+ \row \o symbian_test \o Places mmp files and extension makefiles under
+ test sections in generated bld.inf instead of their regular sections.
+ Note that this only affects automatically generated bld.inf content;
+ the content added via \c BLD_INF_RULES variable is not affected.
+ \endtable
+
+ These options have an effect on Linux/Unix platforms:
+
+ \table 95%
+ \header \o Option \o Description
+ \row \o largefile \o Includes support for large files.
+ \row \o separate_debug_info \o Puts debugging information for libraries in
+ separate files.
+ \endtable
+
+ The \c CONFIG variable will also be checked when resolving scopes. You may
+ assign anything to this variable.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 26
+
+ \target DEFINES
+ \section1 DEFINES
+
+ \c qmake adds the values of this variable as compiler C
+ preprocessor macros (-D option).
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 27
+
+ \target DEF_FILE
+ \section1 DEF_FILE
+
+ \e {This is only used on Windows when using the \c app template}.
+
+ Specifies a \c .def file to be included in the project.
+
+ \target DEPENDPATH
+ \section1 DEPENDPATH
+
+ This variable contains the list of all directories to look in to
+ resolve dependencies. This will be used when crawling through
+ \c included files.
+
+ \target DEPLOYMENT
+ \section1 DEPLOYMENT
+
+ \e {This is only used on Windows CE and the Symbian platform.}
+
+ Specifies which additional files will be deployed. Deployment means the
+ transfer of files from the development system to the target device or
+ emulator.
+
+ Files can be deployed by either creating a Visual Studio project or using
+ the \l {Using QTestLib remotely on Windows CE}{cetest} executable.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 28
+
+ This will upload all PNG images in \c path to the same directory your
+ build target will be deployed to.
+
+ The default deployment target path for Windows CE is
+ \c{%CSIDL_PROGRAM_FILES%\target}, which usually gets expanded to
+ \c{\Program Files\target}. For the Symbian platform, the default target
+is the application private directory on the drive it is installed to.
+
+ It is also possible to specify multiple \c sources to be deployed on
+ target \c paths. In addition, different variables can be used for
+ deployment to different directories.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 29
+
+ \note In Windows CE all linked Qt libraries will be deployed to the path
+ specified by \c{myFiles.path}. On Symbian platform all libraries and executables
+ will always be deployed to the \\sys\\bin of the installation drive.
+
+ Since the Symbian platform build system automatically moves binaries to certain
+ directories under the epoc32 directory, custom plugins, executables or
+ dynamically loadable libraries need special handling. When deploying
+ extra executables or dynamically loadable libraries, the target path
+ must specify \\sys\\bin. For plugins, the target path must specify the
+ location where the plugin stub will be deployed to (see the
+ \l{How to Create Qt Plugins} document for more information about plugins).
+ If the binary cannot be found from the indicated source path,
+ the directory Symbian build process moves the executables to is
+ searched, e.g. \\epoc32\\release\\armv5\\urel.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 128
+
+ On the Symbian platform, generic PKG file content can also be specified with this
+ variable. You can use either \c pkg_prerules or \c pkg_postrules to
+ pass raw data to PKG file. The strings in \c pkg_prerules are added before
+ package-body and \c pkg_postrules after. The strings defined in
+ \c pkg_postrules or \c pkg_prerules are not parsed by qmake, so they
+ should be in a format understood by Symbian package generation tools.
+ Please consult the Symbian platform documentation for correct syntax.
+
+ For example, to deploy DLL and add a new dependency:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 140
+
+ Please note that \c pkg_prerules can also replace default statements in
+ pkg file. If no pkg_prerules is defined, qmake makes sure that PKG file
+ syntax is correct and it contains all mandatory statements such as:
+
+ \list
+ \o languages, for example \BR
+ &EN,FR
+ \o package-header, for example \BR
+ #{"MyApp-EN", "MyApp-FR"}, (0x1000001F), 1, 2, 3, TYPE=SA
+ \o localized and unique vendor, for example \BR
+ %{"Vendor-EN", ..., "Vendor-FR"}
+ :"Unique vendor name"
+ \endlist
+
+ If you decide to override any of these statements, you need to pay
+ attention that also other statements stay valid. For example if you
+ override languages statement, you must override also package-header
+ statement and all other statements which are language specific.
+
+ On the Symbian platform, the \c default_deployment item specifies
+ default platform dependencies. It can be overwritten if a more
+ restrictive set is needed - e.g. if a specific
+ device is required to run the application.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 141
+
+ \target DEPLOYMENT_PLUGIN
+ \section1 DEPLOYMENT_PLUGIN
+
+ \e {This is only used on Windows CE and the Symbian platform.}
+
+ This variable specifies the Qt plugins that will be deployed. All plugins
+ available in Qt can be explicitly deployed to the device. See
+ \l{Static Plugins}{Static Plugins} for a complete list.
+
+ \note In Windows CE, No plugins will be deployed automatically.
+ If the application depends on plugins, these plugins have to be specified
+ manually.
+
+ \note On the Symbian platform, all plugins supported by this variable
+will be deployed by default with Qt libraries, so generally using this
+variable is not needed.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 142
+
+ This will upload the jpeg imageformat plugin to the plugins directory
+ on the Windows CE device.
+
+ \target DESTDIR
+ \section1 DESTDIR
+
+ Specifies where to put the \l{#TARGET}{target} file.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 30
+
+ \target DESTDIR_TARGET
+ \section1 DESTDIR_TARGET
+
+ This variable is set internally by \c qmake, which is basically the
+ \c DESTDIR variable with the \c TARGET variable appened at the end.
+ The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \target DLLDESTDIR
+ \section1 DLLDESTDIR
+
+ Specifies where to copy the \l{#TARGET}{target} dll.
+
+ \target DISTFILES
+ \section1 DISTFILES
+
+ This variable contains a list of files to be included in the dist
+ target. This feature is supported by UnixMake specs only.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 31
+
+ \target DSP_TEMPLATE
+ \section1 DSP_TEMPLATE
+
+ This variable is set internally by \c qmake, which specifies where the
+ dsp template file for basing generated dsp files is stored. The value
+ of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \target FORMS
+ \section1 FORMS
+
+ This variable specifies the UI files (see \link
+ designer-manual.html Qt Designer \endlink) to be processed through \c uic
+ before compiling. All dependencies, headers and source files required
+ to build these UI files will automatically be added to the project.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 32
+
+ If FORMS3 is defined in your project, then this variable must contain
+ forms for uic, and not uic3. If CONFIG contains uic3, and FORMS3 is not
+ defined, the this variable must contain only uic3 type forms.
+
+ \target FORMS3
+ \section1 FORMS3
+
+ This variable specifies the old style UI files to be processed
+ through \c uic3 before compiling, when \c CONFIG contains uic3.
+ All dependencies, headers and source files required to build these
+ UI files will automatically be added to the project.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 33
+
+ \target GUID
+ \section1 GUID
+
+ Specifies the GUID that is set inside a \c{.vcproj} file. The GUID is
+ usually randomly determined. However, should you require a fixed GUID,
+ it can be set using this variable.
+
+ This variable is specific to \c{.vcproj} files only; it is ignored
+ otherwise.
+
+ \target HEADERS
+ \section1 HEADERS
+
+ Defines the header files for the project.
+
+ \c qmake will generate dependency information (unless \c -nodepend
+ is specified on the \l{Running qmake#Commands}{command line})
+ for the specified headers. \c qmake will also automatically detect if
+ \c moc is required by the classes in these headers, and add the
+ appropriate dependencies and files to the project for generating and
+ linking the moc files.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 34
+
+ See also \l{#SOURCES}{SOURCES}.
+
+ \target ICON
+ \section1 ICON
+
+ This variable is used only in MAC and the Symbian platform to set the application icon.
+ Please see \l{Setting the Application Icon}{the application icon documentation}
+ for more information.
+
+ \target INCLUDEPATH
+ \section1 INCLUDEPATH
+
+ This variable specifies the #include directories which should be
+ searched when compiling the project. Use ';' or a space as the
+ directory separator.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 35
+
+ To specify a path containing spaces, quote the path using the technique
+ mentioned in the \l{qmake Project Files#Whitespace}{qmake Project Files}
+ document. For example, paths with spaces can be specified on Windows
+ and Unix platforms by using the \l{qmake Function Reference#quote-string}{quote()}
+ function in the following way:
+
+ \snippet doc/src/snippets/qmake/spaces.pro quoting include paths with spaces
+
+ \target INSTALLS
+ \section1 INSTALLS
+
+ This variable contains a list of resources that will be installed when
+ \c{make install} or a similar installation procedure is executed. Each
+ item in the list is typically defined with attributes that provide
+ information about where it will be installed.
+
+ For example, the following \c{target.path} definition describes where the
+ build target will be installed, and the \c INSTALLS assignment adds the
+ build target to the list of existing resources to be installed:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 36
+
+ \target LEXIMPLS
+ \section1 LEXIMPLS
+
+ This variable contains a list of lex implementation files. The value
+ of this variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely
+ needs to be modified.
+
+ \target LEXOBJECTS
+ \section1 LEXOBJECTS
+
+ This variable contains the names of intermediate lex object
+ files.The value of this variable is typically handled by
+ \c qmake and rarely needs to be modified.
+
+ \target LEXSOURCES
+ \section1 LEXSOURCES
+
+ This variable contains a list of lex source files. All
+ dependencies, headers and source files will automatically be added to
+ the project for building these lex files.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 37
+
+ \target LIBS
+ \section1 LIBS
+
+ This variable contains a list of libraries to be linked into the project.
+ You can use the Unix \c -l (library) and -L (library path) flags and qmake
+ will do the correct thing with these libraries on Windows and the
+ Symbian platform (namely this means passing the full path of the library to
+ the linker). The only limitation to this is the library must exist, for
+ qmake to find which directory a \c -l lib lives in.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 38
+
+ To specify a path containing spaces, quote the path using the technique
+ mentioned in the \l{qmake Project Files#Whitespace}{qmake Project Files}
+ document. For example, paths with spaces can be specified on Windows
+ and Unix platforms by using the \l{qmake Function Reference#quote-string}{quote()}
+ function in the following way:
+
+ \snippet doc/src/snippets/qmake/spaces.pro quoting library paths with spaces
+
+ \bold{Note:} On Windows, specifying libraries with the \c{-l} option,
+ as in the above example, will cause the library with the highest version
+ number to be used; for example, \c{libmath2.lib} could potentially be used
+ instead of \c{libmathlib}. To avoid this ambiguity, we recommend that you
+ explicitly specify the library to be used by including the \c{.lib}
+ file name suffix.
+
+ \bold{Note:} On the Symbian platform, the build system makes a
+distinction between shared and
+ static libraries. In most cases, qmake will figure out which library you
+ are refering to, but in some cases you may have to specify it explicitly to
+ get the expected behavior. This typically happens if you are building a
+ library and using it in the same project. To specify that the library is
+ either shared or static, add a ".dll" or ".lib" suffix, respectively, to the
+ library name.
+
+ By default, the list of libraries stored in \c LIBS is reduced to a list of
+ unique names before it is used. To change this behavior, add the
+ \c no_lflags_merge option to the \c CONFIG variable:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 39
+
+ \target LITERAL_HASH
+ \section1 LITERAL_HASH
+
+ This variable is used whenever a literal hash character (\c{#}) is needed in
+ a variable declaration, perhaps as part of a file name or in a string passed
+ to some external application.
+
+ For example:
+
+ \snippet doc/src/snippets/qmake/comments.pro 1
+
+ By using \c LITERAL_HASH in this way, the \c # character can be used
+ to construct a URL for the \c message() function to print to the console.
+
+ \target MAKEFILE
+ \section1 MAKEFILE
+
+ This variable specifies the name of the Makefile which
+ \c qmake should use when outputting the dependency information
+ for building a project. The value of this variable is typically
+ handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \target MAKEFILE_GENERATOR
+ \section1 MAKEFILE_GENERATOR
+
+ This variable contains the name of the Makefile generator to use
+ when generating a Makefile. The value of this variable is typically
+ handled internally by \c qmake and rarely needs to be modified.
+
+ \target MMP_RULES
+ \section1 MMP_RULES
+
+ \e {This is only used on the Symbian platform.}
+
+ Generic MMP file content can be specified with this variable.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 137
+
+ This will add the specified statement to the end of the generated MMP file.
+
+ It is also possible to add multiple rows in a single block. Each double
+ quoted string will be placed on a new row in the generated MMP file.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 138
+
+ If you need to include a hash (\c{#}) character inside the
+ \c MMP_RULES statement, it can be done with the variable
+ \c LITERAL_HASH as follows:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 139
+
+ \note You should not use this variable to add MMP statements that are
+ explicitly supported by their own variables, such as
+ \c TARGET.EPOCSTACKSIZE.
+ Doing so could result in duplicate statements in the MMP file.
+
+ \target MOC_DIR
+ \section1 MOC_DIR
+
+ This variable specifies the directory where all intermediate moc
+ files should be placed.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 40
+
+ \target OBJECTS
+ \section1 OBJECTS
+
+ This variable is generated from the \link #SOURCES SOURCES
+ \endlink variable. The extension of each source file will have been
+ replaced by .o (Unix) or .obj (Win32). The value of this variable is
+ typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and
+ rarely needs to be modified.
+
+ \target OBJECTS_DIR
+ \section1 OBJECTS_DIR
+
+ This variable specifies the directory where all intermediate
+ objects should be placed.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 41
+
+ \target OBJMOC
+ \section1 OBJMOC
+
+ This variable is set by \c qmake if files can be found that
+ contain the Q_OBJECT macro. \c OBJMOC contains the
+ name of all intermediate moc object files. The value of this variable
+ is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
+ modified.
+
+ \target POST_TARGETDEPS
+ \section1 POST_TARGETDEPS
+
+ All libraries that the \l{#TARGET}{target} depends on can be
+ listed in this variable. Some backends do not support this, these include
+ MSVC Dsp, and ProjectBuilder .pbproj files. Generally this is supported
+ internally by these build tools, this is useful for explicitly listing
+ dependant static libraries.
+
+ This list will go after all builtin (and \link #PRE_TARGETDEPS
+ $$PRE_TARGETDEPS \endlink) dependencies.
+
+ \target PRE_TARGETDEPS
+ \section1 PRE_TARGETDEPS
+
+ All libraries that the \l{#TARGET}{target} depends on can be
+ listed in this variable. Some backends do not support this, these include
+ MSVC Dsp, and ProjectBuilder .pbproj files. Generally this is supported
+ internally by these build tools, this is useful for explicitly listing
+ dependant static libraries.
+
+ This list will go before all builtin dependencies.
+
+ \target PRECOMPILED_HEADER
+ \section1 PRECOMPILED_HEADER
+
+ This variable indicates the header file for creating a precompiled
+ header file, to increase the compilation speed of a project.
+ Precompiled headers are currently only supported on some platforms
+ (Windows - all MSVC project types, Mac OS X - Xcode, Makefile,
+ Unix - gcc 3.3 and up).
+
+ On other platforms, this variable has different meaning, as noted
+ below.
+
+ This variable contains a list of header files that require some
+ sort of pre-compilation step (such as with moc). The value of this
+ variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
+ modified.
+
+ \target PWD
+ \section1 PWD
+
+ This variable contains the full path leading to the directory where
+ the \c qmake project file (project.pro) is located.
+
+ \target OUT_PWD
+ \section1 OUT_PWD
+
+ This variable contains the full path leading to the directory where
+ \c qmake places the generated Makefile.
+
+ \target QMAKE_systemvariable
+ \section1 QMAKE
+
+ This variable contains the name of the \c qmake program
+ itself and is placed in generated Makefiles. The value of this
+ variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
+ modified.
+
+ \target QMAKESPEC_systemvariable
+ \section1 QMAKESPEC
+
+ This variable contains the name of the \c qmake
+ configuration to use when generating Makefiles. The value of this
+ variable is typically handled by \c qmake and rarely needs to be modified.
+
+ Use the \c{QMAKESPEC} environment variable to override the \c qmake configuration.
+ Note that, due to the way \c qmake reads project files, setting the \c{QMAKESPEC}
+ environment variable from within a project file will have no effect.
+
+ \target QMAKE_APP_FLAG
+ \section1 QMAKE_APP_FLAG
+
+ This variable is empty unless the \c app
+ \l{#TEMPLATE}{TEMPLATE} is specified. The value of this
+ variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
+ modified. Use the following instead:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 42
+
+ \target QMAKE_APP_OR_DLL
+ \section1 QMAKE_APP_OR_DLL
+
+ This variable is empty unless the \c app or \c dll
+ \l{#TEMPLATE}{TEMPLATE} is specified. The value of this
+ variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
+ modified.
+
+ \target QMAKE_AR_CMD
+ \section1 QMAKE_AR_CMD
+
+ \e {This is used on Unix platforms only.}
+
+ This variable contains the command for invoking the program which
+ creates, modifies and extracts archives. The value of this variable is
+ typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
+ and rarely needs to be modified.
+
+ \target QMAKE_BUNDLE_DATA
+ \section1 QMAKE_BUNDLE_DATA
+
+ This variable is used to hold the data that will be installed with a library
+ bundle, and is often used to specify a collection of header files.
+
+ For example, the following lines add \c path/to/header_one.h
+ and \c path/to/header_two.h to a group containing information about the
+ headers supplied with the framework:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 43
+
+ The last line adds the information about the headers to the collection of
+ resources that will be installed with the library bundle.
+
+ Library bundles are created when the \c lib_bundle option is added to the
+ \l{#CONFIG}{CONFIG} variable.
+
+ See \l{qmake Platform Notes#Creating Frameworks}{qmake Platform Notes} for
+ more information about creating library bundles.
+
+ \e{This is used on Mac OS X only.}
+
+ \section1 QMAKE_BUNDLE_EXTENSION
+
+ This variable defines the extension to be used for library bundles.
+ This allows frameworks to be created with custom extensions instead of the
+ standard \c{.framework} directory name extension.
+
+ For example, the following definition will result in a framework with the
+ \c{.myframework} extension:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 44
+
+ \e{This is used on Mac OS X only.}
+
+ \section1 QMAKE_CC
+
+ This variable specifies the C compiler that will be used when building
+ projects containing C source code. Only the file name of the compiler
+ executable needs to be specified as long as it is on a path contained
+ in the \c PATH variable when the Makefile is processed.
+
+ \target QMAKE_CFLAGS_DEBUG
+ \section1 QMAKE_CFLAGS_DEBUG
+
+ This variable contains the flags for the C compiler in debug mode.The value of this variable is
+ typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
+ and rarely needs to be modified.
+
+ \target QMAKE_CFLAGS_MT
+ \section1 QMAKE_CFLAGS_MT
+
+ This variable contains the compiler flags for creating a
+ multi-threaded application or when the version of Qt that you link
+ against is a multi-threaded statically linked library. The value of
+ this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \target QMAKE_CFLAGS_MT_DBG
+ \section1 QMAKE_CFLAGS_MT_DBG
+
+ This variable contains the compiler flags for creating a debuggable
+ multi-threaded application or when the version of Qt that you link
+ against is a debuggable multi-threaded statically linked library. The
+ value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \target QMAKE_CFLAGS_MT_DLL
+ \section1 QMAKE_CFLAGS_MT_DLL
+
+ \e {This is used on Windows only.}
+
+ This variable contains the compiler flags for creating a
+ multi-threaded dll or when the version of Qt that you link
+ against is a multi-threaded dll. The value of this variable is typically
+ handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and
+ rarely needs to be modified.
+
+ \target QMAKE_CFLAGS_MT_DLLDBG
+ \section1 QMAKE_CFLAGS_MT_DLLDBG
+
+ \e {This is used on Windows only.}
+
+ This variable contains the compiler flags for creating a debuggable
+ multi-threaded dll or when the version of Qt that you link
+ against is a debuggable multi-threaded statically linked library.
+ The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \target QMAKE_CFLAGS_RELEASE
+ \section1 QMAKE_CFLAGS_RELEASE
+
+ This variable contains the compiler flags for creating a non-debuggable
+ application. The value of this variable is typically
+ handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and
+ rarely needs to be modified.
+
+ \target QMAKE_CFLAGS_SHLIB
+ \section1 QMAKE_CFLAGS_SHLIB
+
+ \e {This is used on Unix platforms only.}
+
+ This variable contains the compiler flags for creating a shared
+ library. The value of this variable is typically handled by
+ \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
+ to be modified.
+
+ \target QMAKE_CFLAGS_THREAD
+ \section1 QMAKE_CFLAGS_THREAD
+
+ This variable contains the compiler flags for creating a multi-threaded
+ application. The value of this variable is typically handled by
+ \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
+ to be modified.
+
+ \target QMAKE_CFLAGS_WARN_OFF
+ \section1 QMAKE_CFLAGS_WARN_OFF
+
+ This variable is not empty if the warn_off
+ \l{#TEMPLATE}{TEMPLATE} option is specified. The value of this
+ variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
+ and rarely needs to be modified.
+
+ \target QMAKE_CFLAGS_WARN_ON
+ \section1 QMAKE_CFLAGS_WARN_ON
+
+ This variable is not empty if the warn_on
+ \l{#TEMPLATE}{TEMPLATE} option is specified.
+ The value of this variable is typically handled by
+ \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
+ to be modified.
+
+ \target QMAKE_CLEAN
+ \section1 QMAKE_CLEAN
+
+ This variable contains any files which are not generated files (such as moc and uic
+ generated files) and object files that should be removed when using "make clean".
+
+ \section1 QMAKE_CXX
+
+ This variable specifies the C++ compiler that will be used when building
+ projects containing C++ source code. Only the file name of the compiler
+ executable needs to be specified as long as it is on a path contained
+ in the \c PATH variable when the Makefile is processed.
+
+ \section1 QMAKE_CXXFLAGS
+
+ This variable contains the C++ compiler flags that are used when building
+ a project. The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified. The flags
+ specific to debug and release modes can be adjusted by modifying
+ the \c QMAKE_CXXFLAGS_DEBUG and \c QMAKE_CXXFLAGS_RELEASE variables,
+ respectively.
+
+ \bold{Note:} On the Symbian platform, this variable can be used to pass
+architecture specific options to each compiler in the Symbian build system.
+For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 131
+
+ For more information, see
+ \l{qmake Platform Notes#Compiler specific options}{qmake Platform Notes}.
+
+ \target QMAKE_CXXFLAGS_DEBUG
+ \section1 QMAKE_CXXFLAGS_DEBUG
+
+ This variable contains the C++ compiler flags for creating a debuggable
+ application. The value of this variable is typically handled by
+ \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
+ to be modified.
+
+ \target QMAKE_CXXFLAGS_MT
+ \section1 QMAKE_CXXFLAGS_MT
+
+ This variable contains the C++ compiler flags for creating a multi-threaded
+ application. The value of this variable is typically handled by
+ \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
+ to be modified.
+
+ \target QMAKE_CXXFLAGS_MT_DBG
+ \section1 QMAKE_CXXFLAGS_MT_DBG
+
+ This variable contains the C++ compiler flags for creating a debuggable multi-threaded
+ application. The value of this variable is typically handled by
+ \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
+ to be modified.
+
+ \target QMAKE_CXXFLAGS_MT_DLL
+ \section1 QMAKE_CXXFLAGS_MT_DLL
+
+ \c {This is used on Windows only.}
+
+ This variable contains the C++ compiler flags for creating a multi-threaded
+ dll. The value of this variable is typically handled by
+ \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
+ to be modified.
+
+ \target QMAKE_CXXFLAGS_MT_DLLDBG
+ \section1 QMAKE_CXXFLAGS_MT_DLLDBG
+
+ \c {This is used on Windows only.}
+
+ This variable contains the C++ compiler flags for creating a multi-threaded debuggable
+ dll. The value of this variable is typically handled by
+ \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
+ to be modified.
+
+ \target QMAKE_CXXFLAGS_RELEASE
+ \section1 QMAKE_CXXFLAGS_RELEASE
+
+ This variable contains the C++ compiler flags for creating an
+ application. The value of this variable is typically handled by
+ \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
+ to be modified.
+
+ \target QMAKE_CXXFLAGS_SHLIB
+ \section1 QMAKE_CXXFLAGS_SHLIB
+
+ This variable contains the C++ compiler flags for creating a
+ shared library. The value of this variable is typically handled by
+ \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
+ to be modified.
+
+ \target QMAKE_CXXFLAGS_THREAD
+ \section1 QMAKE_CXXFLAGS_THREAD
+
+ This variable contains the C++ compiler flags for creating a
+ multi-threaded application. The value of this variable is typically handled by
+ \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
+ to be modified.
+
+ \target QMAKE_CXXFLAGS_WARN_OFF
+ \section1 QMAKE_CXXFLAGS_WARN_OFF
+
+ This variable contains the C++ compiler flags for suppressing compiler warnings.
+ The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \target QMAKE_CXXFLAGS_WARN_ON
+ \section1 QMAKE_CXXFLAGS_WARN_ON
+
+ This variable contains C++ compiler flags for generating compiler warnings.
+ The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \target QMAKE_DISTCLEAN
+ \section1 QMAKE_DISTCLEAN
+
+ This variable removes extra files upon the invocation of \c{make distclean}.
+
+ \target QMAKE_EXTENSION_SHLIB
+ \section1 QMAKE_EXTENSION_SHLIB
+
+ This variable contains the extention for shared libraries. The value of this
+ variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
+ and rarely needs to be modified.
+
+ Note that platform-specific variables that change the extension will override
+ the contents of this variable.
+
+ \section1 QMAKE_EXT_MOC
+
+ This variable changes the extention used on included moc files.
+
+ See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
+
+ \section1 QMAKE_EXT_UI
+
+ This variable changes the extention used on /e Designer UI files.
+
+ See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
+
+ \section1 QMAKE_EXT_PRL
+
+ This variable changes the extention used on created PRL files.
+
+ See also \l{Configuring qmake's Environment#Extensions}{File Extensions},
+ \l{Configuring qmake's Environment#libdepend}{Library Dependencies}.
+
+ \section1 QMAKE_EXT_LEX
+
+ This variable changes the extention used on files given to lex.
+
+ See also \l{Configuring qmake's Environment#Extensions}{File Extensions},
+ \l{#LEXSOURCES}{LEXSOURCES}.
+
+ \section1 QMAKE_EXT_YACC
+ This variable changes the extention used on files given to yacc.
+
+ See also \l{Configuring qmake's Environment#Extensions}{File Extensions},
+ \l{#YACCSOURCES}{YACCSOURCES}.
+
+ \section1 QMAKE_EXT_OBJ
+
+ This variable changes the extention used on generated object files.
+
+ See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
+
+ \section1 QMAKE_EXT_CPP
+
+ This variable changes the interpretation of all suffixes in this
+ list of values as files of type C++ source code.
+
+ See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
+
+ \section1 QMAKE_EXT_H
+
+ This variable changes the interpretation of all suffixes in this
+ list of values as files of type C header files.
+
+ See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
+
+ \section1 QMAKE_EXTRA_COMPILERS
+
+ This variable contains the extra compilers/preprocessors that have been added
+
+ See also \l{Configuring qmake's Environment#Customizing}{Customizing Makefile Output}
+
+ \section1 QMAKE_EXTRA_TARGETS
+
+ This variable contains the extra targets that have been added
+
+ See also \l{Configuring qmake's Environment#Customizing}{Customizing Makefile Output}
+
+ \target QMAKE_FAILED_REQUIREMENTS
+ \section1 QMAKE_FAILED_REQUIREMENTS
+
+ This variable contains the list of requirements that were failed to be met when
+ \c qmake was used. For example, the sql module is needed and wasn't compiled into Qt. The
+ value of this variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
+ and rarely needs to be modified.
+
+ \target QMAKE_FILETAGS
+ \section1 QMAKE_FILETAGS
+
+ This variable contains the file tags needed to be entered into the Makefile, such as SOURCES
+ and HEADERS. The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_FRAMEWORK_BUNDLE_NAME
+
+ In a framework project, this variable contains the name to be used for the
+ framework that is built.
+
+ By default, this variable contains the same value as the \l{#TARGET}{TARGET}
+ variable.
+
+ See \l{qmake Platform Notes#Creating Frameworks}{qmake Platform Notes} for
+ more information about creating frameworks and library bundles.
+
+ \e{This is used on Mac OS X only.}
+
+ \target QMAKE_FRAMEWORK_VERSION
+ \section1 QMAKE_FRAMEWORK_VERSION
+
+ For projects where the build target is a Mac OS X framework, this variable
+ is used to specify the version number that will be applied to the framework
+ that is built.
+
+ By default, this variable contains the same value as the \l{#VERSION}{VERSION}
+ variable.
+
+ See \l{qmake Platform Notes#Creating Frameworks}{qmake Platform Notes} for
+ more information about creating frameworks.
+
+ \e{This is used on Mac OS X only.}
+
+ \target QMAKE_INCDIR
+ \section1 QMAKE_INCDIR
+
+ This variable contains the location of all known header files to be added to
+ INCLUDEPATH when building an application. The value of this variable is
+ typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely
+ needs to be modified.
+
+ \target QMAKE_INCDIR_EGL
+ \section1 QMAKE_INCDIR_EGL
+
+ This variable contains the location of EGL header files to be added
+ to INCLUDEPATH when building an application with OpenGL/ES or
+ OpenVG support. The value of this variable is typically handled by
+ \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \target QMAKE_INCDIR_OPENGL
+ \section1 QMAKE_INCDIR_OPENGL
+
+ This variable contains the location of OpenGL header files to be added
+ to INCLUDEPATH when building an application with OpenGL support. The
+ value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ If the OpenGL implementation uses EGL (most OpenGL/ES systems),
+ then QMAKE_INCDIR_EGL may also need to be set.
+
+ \section1 QMAKE_INCDIR_OPENGL_ES1, QMAKE_INCDIR_OPENGL_ES1CL, QMAKE_INCDIR_OPENGL_ES2
+
+ These variables contain the location of OpenGL headers files to be added
+ to INCLUDEPATH when building an application with OpenGL ES 1, OpenGL ES 1 Common
+ Lite or OpenGL ES 2 support respectively.
+
+ The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ If the OpenGL implementation uses EGL (most OpenGL/ES systems),
+ then QMAKE_INCDIR_EGL may also need to be set.
+
+ \target QMAKE_INCDIR_OPENVG
+ \section1 QMAKE_INCDIR_OPENVG
+
+ This variable contains the location of OpenVG header files to be added
+ to INCLUDEPATH when building an application with OpenVG support. The
+ value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ If the OpenVG implementation uses EGL then QMAKE_INCDIR_EGL may also
+ need to be set.
+
+ \target QMAKE_INCDIR_QT
+ \section1 QMAKE_INCDIR_QT
+
+ This variable contains the location of all known header file
+ paths to be added to INCLUDEPATH when building a Qt application. The value
+ of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \target QMAKE_INCDIR_THREAD
+ \section1 QMAKE_INCDIR_THREAD
+
+ This variable contains the location of all known header file
+ paths to be added to INCLUDEPATH when building a multi-threaded application.
+ The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \target QMAKE_INCDIR_X11
+ \section1 QMAKE_INCDIR_X11
+
+ \e {This is used on Unix platforms only.}
+
+ This variable contains the location of X11 header file paths to be
+ added to INCLUDEPATH when building a X11 application. The
+ value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \target QMAKE_INFO_PLIST
+ \section1 QMAKE_INFO_PLIST
+
+ \e {This is used on Mac OS X platforms only.}
+
+ This variable contains the name of the property list file, \c{.plist}, you
+ would like to include in your Mac OS X application bundle.
+
+ In the \c{.plist} file, you can define some variables, e.g., @EXECUTABLE@,
+ which qmake will replace with the actual executable name. Other variables
+ include @ICON@, @TYPEINFO@, @LIBRARY@, and @SHORT_VERSION@.
+
+ \note Most of the time, the default \c{Info.plist} is good enough.
+
+ \section1 QMAKE_LFLAGS
+
+ This variable contains a general set of flags that are passed to
+ the linker. If you need to change the flags used for a particular
+ platform or type of project, use one of the specialized variables
+ for that purpose instead of this variable.
+
+ \target QMAKE_LFLAGS_CONSOLE
+ \section1 QMAKE_LFLAGS_CONSOLE
+
+ \e {This is used on Windows only.}
+
+ This variable contains link flags when building console
+ programs. The value of this variable is typically handled by
+ \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LFLAGS_CONSOLE_DLL
+
+ \e {This is used on Windows only.}
+
+ This variable contains link flags when building console
+ dlls. The value of this variable is typically handled by
+ \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LFLAGS_DEBUG
+
+ This variable contains link flags when building debuggable applications. The
+ value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LFLAGS_PLUGIN
+
+ This variable contains link flags when building plugins. The value
+ of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LFLAGS_RPATH
+
+ \e {This is used on Unix platforms only.}
+
+ Library paths in this definition are added to the executable at link
+ time so that the added paths will be preferentially searched at runtime.
+
+ \section1 QMAKE_LFLAGS_QT_DLL
+
+ This variable contains link flags when building programs that
+ use the Qt library built as a dll. The value of this variable is
+ typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LFLAGS_RELEASE
+
+ This variable contains link flags when building applications for
+ release. The value of this variable is typically handled by
+ \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LFLAGS_SHAPP
+
+ This variable contains link flags when building applications which are using
+ the \c app template. The value of this variable is typically handled by
+ \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LFLAGS_SHLIB
+
+ This variable contains link flags when building shared libraries
+ The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LFLAGS_SONAME
+
+ This variable specifies the link flags to set the name of shared objects,
+ such as .so or .dll. The value of this variable is typically handled by \c
+ qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LFLAGS_THREAD
+
+ This variable contains link flags when building multi-threaded projects.
+ The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LFLAGS_WINDOWS
+
+ \e {This is used on Windows only.}
+
+ This variable contains link flags when building Windows GUI projects
+ (i.e. non-console applications).
+ The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LFLAGS_WINDOWS_DLL
+
+ \e {This is used on Windows only.}
+
+ This variable contains link flags when building Windows DLL projects.
+ The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LIBDIR
+
+ This variable contains the location of all known library
+ directories.The value of this variable is typically handled by
+ \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LIBDIR_FLAGS
+
+ \e {This is used on Unix platforms only.}
+
+ This variable contains the location of all library
+ directory with -L prefixed. The value of this variable is typically handled by
+ \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LIBDIR_EGL
+
+ This variable contains the location of the EGL library
+ directory, when EGL is used with OpenGL/ES or OpenVG. The value
+ of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LIBDIR_OPENGL
+
+ This variable contains the location of the OpenGL library
+ directory.The value of this variable is typically handled by
+ \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ If the OpenGL implementation uses EGL (most OpenGL/ES systems),
+ then QMAKE_LIBDIR_EGL may also need to be set.
+
+ \section1 QMAKE_LIBDIR_OPENVG
+
+ This variable contains the location of the OpenVG library
+ directory. The value of this variable is typically handled by
+ \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ If the OpenVG implementation uses EGL, then QMAKE_LIBDIR_EGL
+ may also need to be set.
+
+ \section1 QMAKE_LIBDIR_QT
+
+ This variable contains the location of the Qt library
+ directory.The value of this variable is typically handled by
+ \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LIBDIR_X11
+
+ \e {This is used on Unix platforms only.}
+
+ This variable contains the location of the X11 library
+ directory.The value of this variable is typically handled by
+ \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LIBS
+
+ This variable contains all project libraries. The value of this
+ variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LIBS_CONSOLE
+
+ \e {This Windows-specific variable is no longer used.}
+
+ Prior to Qt 4.2, this variable was used to list the libraries
+ that should be linked against when building a console application
+ project on Windows. \l{#QMAKE_LIBS_WINDOW}{QMAKE_LIBS_WINDOW}
+ should now be used instead.
+
+ \section1 QMAKE_LIBS_EGL
+
+ This variable contains all EGL libraries when building Qt with
+ OpenGL/ES or OpenVG. The value of this variable is typically
+ handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely
+ needs to be modified. The usual value is \c{-lEGL}.
+
+ \section1 QMAKE_LIBS_OPENGL
+
+ This variable contains all OpenGL libraries. The value of this
+ variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ If the OpenGL implementation uses EGL (most OpenGL/ES systems),
+ then QMAKE_LIBS_EGL may also need to be set.
+
+ \section1 QMAKE_LIBS_OPENGL_QT
+
+ This variable contains all OpenGL Qt libraries.The value of this
+ variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LIBS_OPENGL_ES1, QMAKE_LIBS_OPENGL_ES1CL, QMAKE_LIBS_OPENGL_ES2
+
+ These variables contain all the OpenGL libraries for OpenGL ES 1,
+ OpenGL ES 1 Common Lite profile and OpenGL ES 2.
+
+ The value of these variables is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ If the OpenGL implementation uses EGL (most OpenGL/ES systems),
+ then QMAKE_LIBS_EGL may also need to be set.
+
+ \section1 QMAKE_LIBS_OPENVG
+
+ This variable contains all OpenVG libraries. The value of this
+ variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
+ and rarely needs to be modified. The usual value is \c{-lOpenVG}.
+
+ Some OpenVG engines are implemented on top of OpenGL. This will
+ be detected at configure time and QMAKE_LIBS_OPENGL will be implicitly
+ added to QMAKE_LIBS_OPENVG wherever the OpenVG libraries are linked.
+
+ If the OpenVG implementation uses EGL, then QMAKE_LIBS_EGL may also
+ need to be set.
+
+ \section1 QMAKE_LIBS_QT
+
+ This variable contains all Qt libraries.The value of this
+ variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LIBS_QT_DLL
+
+ \e {This is used on Windows only.}
+
+ This variable contains all Qt libraries when Qt is built as a dll. The
+ value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LIBS_QT_OPENGL
+
+ This variable contains all the libraries needed to link against if
+ OpenGL support is turned on. The
+ value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LIBS_QT_THREAD
+
+ This variable contains all the libraries needed to link against if
+ thread support is turned on. The
+ value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LIBS_RT
+
+ \e {This is used with Borland compilers only.}
+
+ This variable contains the runtime library needed to link against when
+ building an application. The
+ value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LIBS_RTMT
+
+ \e {This is used with Borland compilers only.}
+
+ This variable contains the runtime library needed to link against when
+ building a multi-threaded application. The
+ value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LIBS_THREAD
+
+ \e {This is used on Unix platforms only.}
+
+ This variable contains all libraries that need to be linked against
+ when building a multi-threaded application. The
+ value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LIBS_WINDOWS
+
+ \e {This is used on Windows only.}
+
+ This variable contains all windows libraries.The value of this
+ variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LIBS_X11
+
+ \e {This is used on Unix platforms only.}
+
+ This variable contains all X11 libraries.The value of this
+ variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LIBS_X11SM
+
+ \e {This is used on Unix platforms only.}
+
+ This variable contains all X11 session management libraries. The
+ value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LIB_FLAG
+
+ This variable is not empty if the \c lib template is specified. The
+ value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_LINK_SHLIB_CMD
+
+ This variable contains the command to execute when creating a
+ shared library. The
+ value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_POST_LINK
+
+ This variable contains the command to execute after linking the TARGET
+ together. This variable is normally empty and therefore nothing is
+ executed, additionally some backends will not support this - mostly only
+ Makefile backends.
+
+ \section1 QMAKE_PRE_LINK
+
+ This variable contains the command to execute before linking the TARGET
+ together. This variable is normally empty and therefore nothing is
+ executed, additionally some backends will not support this - mostly only
+ Makefile backends.
+
+ \section1 QMAKE_LN_SHLIB
+
+ This variable contains the command to execute when creating a link
+ to a shared library. The
+ value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_MAC_SDK
+
+ This variable is used on Mac OS X when building universal binaries.
+ This process is described in more detail in the
+ \l{Deploying an Application on Mac OS X#Architecture Dependencies}{Deploying
+ an Application on Mac OS X} document.
+
+ \section1 QMAKE_MACOSX_DEPLOYMENT_TARGET
+ This variable only has an effect when building on Mac OS X. On that
+ platform, the variable will be forwarded to the MACOSX_DEPLOYMENT_TARGET
+ environment variable, which is interpreted by the compiler or linker.
+ For more information, see the
+ \l{Deploying an Application on Mac OS X#Mac OS X Version Dependencies}{Deploying
+ an Application on Mac OS X} document.
+
+ \section1 QMAKE_MAKEFILE
+
+ This variable contains the name of the Makefile to create. The
+ value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_MOC_SRC
+
+ This variable contains the names of all moc source files to
+ generate and include in the project. The value of this variable is
+ typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_QMAKE
+
+ This variable contains the location of qmake if it is not in the path.
+ The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_QT_DLL
+
+ This variable is not empty if Qt was built as a dll. The
+ value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_RESOURCE_FLAGS
+
+ This variable is used to customize the list of options passed to the
+ \l{rcc}{Resource Compiler} in each of the build rules where it is used.
+ For example, the following line ensures that the \c{-threshold} and
+ \c{-compress} options are used with particular values each time that
+ \c rcc is invoked:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 45
+
+ \section1 QMAKE_RPATH
+
+ \e {This is used on Unix platforms only.}
+
+ Is equivalent to \l QMAKE_LFLAGS_RPATH.
+
+ \section1 QMAKE_RPATHDIR
+
+ \e {This is used on Unix platforms only.}
+
+ A list of library directory paths, these paths are added to the
+ executable at link time so that the paths will be preferentially
+ searched at runtime.
+
+ \section1 QMAKE_RUN_CC
+
+ This variable specifies the individual rule needed to build an object.
+ The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_RUN_CC_IMP
+
+ This variable specifies the individual rule needed to build an object.
+ The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_RUN_CXX
+
+ This variable specifies the individual rule needed to build an object.
+ The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_RUN_CXX_IMP
+
+ This variable specifies the individual rule needed to build an object.
+ The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_TARGET
+
+ This variable contains the name of the project target. The value of
+ this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 QMAKE_UIC
+
+ This variable contains the location of uic if it is not in the path.
+ The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ It can be used to specify arguments to uic as well, such as additional plugin
+ paths. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 46
+
+ \section1 QT
+
+ The values stored in the \c QT variable control which of the Qt modules are
+ used by your project.
+
+ The table below shows the options that can be used with the \c QT variable
+ and the features that are associated with each of them:
+
+ \table
+ \header \o Option \o Features
+ \row \o core (included by default) \o QtCore module
+ \row \o gui (included by default) \o QtGui module
+ \row \o network \o QtNetwork module
+ \row \o opengl \o QtOpenGL module
+ \row \o phonon \o Phonon Multimedia Framework
+ \row \o sql \o QtSql module
+ \row \o svg \o QtSvg module
+ \row \o xml \o QtXml module
+ \row \o webkit \o WebKit integration
+ \row \o qt3support \o Qt3Support module
+ \endtable
+
+ By default, \c QT contains both \c core and \c gui, ensuring that standard
+ GUI applications can be built without further configuration.
+
+ If you want to build a project \e without the QtGui module, you need to
+ exclude the \c gui value with the "-=" operator; the following line will
+ result in a minimal Qt project being built:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 47
+
+ Note that adding the \c opengl option to the \c QT variable automatically
+ causes the equivalent option to be added to the \c CONFIG variable.
+ Therefore, for Qt applications, it is not necessary to add the \c opengl
+ option to both \c CONFIG and \c{QT}.
+
+ \section1 QTPLUGIN
+
+ This variable contains a list of names of static plugins that are to be
+ compiled with an application so that they are available as built-in
+ resources.
+
+ \target QT_VERSION
+ \section1 QT_VERSION
+
+ This variable contains the current version of Qt.
+
+ \target QT_MAJOR_VERSION
+ \section1 QT_MAJOR_VERSION
+
+ This variable contains the current major version of Qt.
+
+ \target QT_MINOR_VERSION
+ \section1 QT_MINOR_VERSION
+
+ This variable contains the current minor version of Qt.
+
+ \target QT_PATCH_VERSION
+ \section1 QT_PATCH_VERSION
+
+ This variable contains the current patch version of Qt.
+
+ \section1 RC_FILE
+
+ This variable contains the name of the resource file for the application.
+ The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \target RCC_DIR
+ \section1 RCC_DIR
+
+ This variable specifies the directory where all intermediate
+ resource files should be placed.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 48
+
+ \target REQUIRES
+ \section1 REQUIRES
+
+ This is a special variable processed by \c qmake. If the
+ contents of this variable do not appear in CONFIG by the time this
+ variable is assigned, then a minimal Makefile will be generated that
+ states what dependencies (the values assigned to REQUIRES) are
+ missing.
+
+ This is mainly used in Qt's build system for building the examples.
+
+ \section1 RESOURCES
+
+ This variable contains the name of the resource collection file (qrc)
+ for the application. Further information about the resource collection
+ file can be found at \l{The Qt Resource System}.
+
+ \section1 RES_FILE
+
+ This variable contains the name of the resource file for the application.
+ The value of this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \target RSS_RULES
+ \section1 RSS_RULES
+
+ \e {This is only used on the Symbian platform.}
+
+ Generic RSS file content can be specified with this variable. The syntax is
+ similar to \c MMP_RULES and \c BLD_INF_RULES.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 144
+
+ This will add the specified statement to the end of the generated
+ registration resource file. As an impact of this statement, the application
+ will not be visible in application shell.
+
+ It is also possible to add multiple rows in a single block. Each double
+ quoted string will be placed on a new row in the registration resource file.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 145
+
+ This example will install the application to MyFolder in the Symbian
+ platform application shell. In addition it will make the application to
+ be launched in background.
+
+ For detailed list of possible RSS statements, please refer to the
+ Symbian platform help.
+
+ \note You should not use \c RSS_RULES variable to set the following RSS statements:
+
+ app_file
+ localisable_resource_file
+ localisable_resource_id
+
+ These statements are internally handled by qmake.
+
+ \target S60_VERSION
+ \section1 S60_VERSION
+
+ \e {This is only used on the Symbian platform.}
+
+ Contains the version number of the underlying S60 SDK; e.g. "5.0".
+
+ \target SIGNATURE_FILE
+ \section1 SIGNATURE_FILE
+
+ \e {This is only used on Windows CE.}
+
+ Specifies which signature file should be used to sign the project target.
+
+ \note This variable will overwrite the setting you have specified in configure,
+ with the \c -signature option.
+
+ \target SOURCES
+ \section1 SOURCES
+
+ This variable contains the name of all source files in the project.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 49
+
+ See also \l{#HEADERS}{HEADERS}
+
+ \section1 SRCMOC
+
+ This variable is set by \c qmake if files can be found that
+ contain the Q_OBJECT macro. \c SRCMOC contains the
+ name of all the generated moc files. The value of this variable
+ is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
+ modified.
+
+ \target SUBDIRS
+ \section1 SUBDIRS
+
+ This variable, when used with the \l{#TEMPLATE}{\c subdirs template}
+ contains the names of all subdirectories that contain parts of the project
+ that need be built. Each subdirectory must contain its own project file.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 50
+
+ It is essential that the project file in each subdirectory has the same
+ name as the subdirectory itself, so that \c qmake can find it.
+ For example, if the subdirectory is called \c myapp then the project file
+ in that directory should be called \c myapp.pro.
+
+ If you need to ensure that the subdirectories are built in the order in
+ which they are specified, update the \l{#CONFIG}{CONFIG} variable to
+ include the \c ordered option:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 51
+
+ \target TARGET
+ \section1 TARGET
+
+ This specifies the name of the target file.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 52
+
+ The project file above would produce an executable named \c myapp on
+ unix and 'myapp.exe' on windows.
+
+ \target TARGET.CAPABILITY
+ \section1 TARGET.CAPABILITY
+
+ \e {This is only used on the Symbian platform.}
+
+ Specifies which platform capabilities the application should have. For more
+ information, please refer to the Symbian SDK documentation.
+
+ \target TARGET.EPOCALLOWDLLDATA
+ \section1 TARGET.EPOCALLOWDLLDATA
+
+ \e {This is only used on the Symbian platform.}
+
+ Specifies whether static data should be allowed in the application. Symbian
+ disallows this by default in order to save memory. To use it, set this to 1.
+
+ \target TARGET.EPOCHEAPSIZE
+ \section1 TARGET.EPOCHEAPSIZE
+
+ \e {This is only used on the Symbian platform.}
+
+ Specifies the minimum and maximum heap size of the application. The program
+ will refuse to run if the minimum size is not available when it starts. For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 135
+
+ \target TARGET.EPOCSTACKSIZE
+ \section1 TARGET.EPOCSTACKSIZE
+
+ \e {This is only used on the Symbian platform.}
+
+ Specifies the maximum stack size of the application. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 136
+
+ \target TARGET.SID
+ \section1 TARGET.SID
+
+ \e {This is only used on the Symbian platform.}
+
+ Specifies which secure identifier to use for the target application or
+ library. For more information, see the Symbian SDK documentation.
+
+ \target TARGET.UID2
+ \section1 TARGET.UID2
+
+ \e {This is only used on the Symbian platform.}
+
+ Specifies which unique identifier 2 to use for the target application or
+ library. If this variable is not specified, it defaults to the same value
+ as TARGET.UID3. For more information, see the Symbian SDK documentation.
+
+ \target TARGET.UID3
+ \section1 TARGET.UID3
+
+ \e {This is only used on the Symbian platform.}
+
+ Specifies which unique identifier 3 to use for the target application or
+ library. If this variable is not specified, a UID3 suitable for development
+ and debugging will be generated automatically. However, applications being
+ released should always define this variable. For more information, see the
+ Symbian SDK documentation.
+
+ \target TARGET.VID
+ \section1 TARGET.VID
+
+ \e {This is only used on the Symbian platform.}
+
+ Specifies which vendor identifier to use for the target application or
+ library. For more information, see the Symbian SDK documentation.
+
+ \section1 TARGET_EXT
+
+ This variable specifies the target's extension. The value of this variable
+ is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
+ modified.
+
+ \section1 TARGET_x
+
+ This variable specifies the target's extension with a major version number. The value of this variable
+ is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
+ modified.
+
+ \section1 TARGET_x.y.z
+
+ This variable specifies the target's extension with version number. The value of this variable
+ is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
+ modified.
+
+ \target TEMPLATE
+ \section1 TEMPLATE
+
+ This variable contains the name of the template to use when
+ generating the project. The allowed values are:
+
+ \table
+ \header \o Option \o Description
+ \row \o app \o Creates a Makefile for building applications (the default). (See
+ \l{qmake Common Projects#Application}{qmake Common Projects} for more information.)
+ \row \o lib \o Creates a Makefile for building libraries. (See
+ \l{qmake Common Projects#Library}{qmake Common Projects} for more information.)
+ \row \o subdirs \o Creates a Makefile for building targets in subdirectories.
+ The subdirectories are specified using the \l{#SUBDIRS}{SUBDIRS}
+ variable.
+ \row \o vcapp \o \e {Windows only} Creates an application project for Visual Studio.
+ (See \l{qmake Platform Notes#Creating Visual Studio Project Files}{qmake Platform Notes}
+ for more information.)
+ \row \o vclib \o \e {Windows only} Creates a library project for Visual Studio.
+ (See \l{qmake Platform Notes#Creating Visual Studio Project Files}{qmake Platform Notes}
+ for more information.)
+ \endtable
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 53
+
+ The template can be overridden by specifying a new template type with the
+ \c -t command line option. This overrides the template type \e after the .pro
+ file has been processed. With .pro files that use the template type to
+ determine how the project is built, it is necessary to declare TEMPLATE on
+ the command line rather than use the \c -t option.
+
+ \section1 TRANSLATIONS
+
+ This variable contains a list of translation (.ts) files that contain
+ translations of the user interface text into non-native languages.
+
+ See the \l{Qt Linguist Manual} for more information about
+ internationalization (i18n) and localization (l10n) with Qt.
+
+ \section1 UICIMPLS
+
+ This variable contains a list of the generated implementation files by UIC.
+ The value of this variable
+ is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
+ modified.
+
+ \section1 UICOBJECTS
+
+ This variable is generated from the UICIMPLS variable. The extension of each
+ file will have been replaced by .o (Unix) or .obj (Win32). The value of this variable is
+ typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and
+ rarely needs to be modified.
+
+ \target UI_DIR
+ \section1 UI_DIR
+
+ This variable specifies the directory where all intermediate files from uic
+ should be placed. This variable overrides both UI_SOURCES_DIR and
+ UI_HEADERS_DIR.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 54
+
+ \target UI_HEADERS_DIR
+ \section1 UI_HEADERS_DIR
+
+ This variable specifies the directory where all declaration files (as
+ generated by uic) should be placed.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 55
+
+ \target UI_SOURCES_DIR
+ \section1 UI_SOURCES_DIR
+
+ This variable specifies the directory where all implementation files (as generated
+ by uic) should be placed.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 56
+
+ \target VERSION
+ \section1 VERSION
+
+ This variable contains the version number of the application or library if
+ either the \c app \l{#TEMPLATE}{TEMPLATE} or the \c lib \l{#TEMPLATE}{TEMPLATE}
+ is specified.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 57
+
+ \section1 VER_MAJ
+
+ This variable contains the major version number of the library, if the
+ \c lib \l{#TEMPLATE}{template} is specified.
+
+ \section1 VER_MIN
+
+ This variable contains the minor version number of the library, if the
+ \c lib \l{#TEMPLATE}{template} is specified.
+
+ \section1 VER_PAT
+
+ This variable contains the patch version number of the library, if the
+ \c lib \l{#TEMPLATE}{template} is specified.
+
+ \section1 VPATH
+
+ This variable tells \c qmake where to search for files it cannot
+ open. With this you may tell \c qmake where it may look for things
+ like SOURCES, and if it finds an entry in SOURCES that cannot be
+ opened it will look through the entire VPATH list to see if it can
+ find the file on its own.
+
+ See also \l{#DEPENDPATH}{DEPENDPATH}.
+
+ \section1 YACCIMPLS
+
+ This variable contains a list of yacc source files. The value of
+ this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \section1 YACCOBJECTS
+
+ This variable contains a list of yacc object files. The value of
+ this variable is typically handled by \c qmake or
+ \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
+
+ \target YACCSOURCES
+ \section1 YACCSOURCES
+
+ This variable contains a list of yacc source files to be included
+ in the project. All dependencies, headers and source files will
+ automatically be included in the project.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 58
+
+ \section1 _PRO_FILE_
+
+ This variable contains the path to the project file in use.
+
+ For example, the following line causes the location of the project
+ file to be written to the console:
+
+ \snippet doc/src/snippets/qmake/project_location.pro project file
+
+ \section1 _PRO_FILE_PWD_
+
+ This variable contains the path to the directory containing the project
+ file in use.
+
+ For example, the following line causes the location of the directory
+ containing the project file to be written to the console:
+
+ \snippet doc/src/snippets/qmake/project_location.pro project file directory
+*/
+
+/*!
+ \page qmake-function-reference.html
+ \title qmake Function Reference
+ \contentspage {qmake Manual}{Contents}
+ \previouspage qmake Variable Reference
+ \nextpage Configuring qmake's Environment
+
+ \c qmake provides built-in functions to allow the contents of
+ variables to be processed, and to enable tests to be performed
+ during the configuration process. Functions that process the
+ contents of variables typically return values that can be assigned
+ to other variables, and these values are obtained by prefixing
+ function with the \c $$ operator. Functions that perform tests
+ are usually used as the conditional parts of scopes; these are
+ indicated in the function descriptions below.
+
+ \tableofcontents{2}
+
+ \section1 basename(variablename)
+
+ Returns the basename of the file specified. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 59
+
+ \section1 CONFIG(config)
+ [Conditional]
+
+ This function can be used to test for variables placed into the
+ \c CONFIG variable. This is the same as regular old style (tmake) scopes,
+ but has the added advantage a second parameter can be passed to test for
+ the active config. As the order of values is important in \c CONFIG
+ variables (i.e. the last one set will be considered the active config for
+ mutually exclusive values) a second parameter can be used to specify a set
+ of values to consider. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 60
+
+ Because release is considered the active setting (for feature parsing)
+ it will be the CONFIG used to generate the build file. In the common
+ case a second parameter is not needed, but for specific mutual
+ exclusive tests it is invaluable.
+
+ \section1 contains(variablename, value)
+ [Conditional]
+
+ Succeeds if the variable \e variablename contains the value \e value;
+ otherwise fails. You can check the return value of this function using
+ a scope.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 61
+
+ The contents of the scope are only processed if the \c drivers
+ variable contains the value, \c network. If this is the case, the
+ appropriate files are added to the \c SOURCES and \c HEADERS
+ variables.
+
+ \section1 count(variablename, number)
+ [Conditional]
+
+ Succeeds if the variable \e variablename contains a list with the
+ specified \e number of value; otherwise fails.
+
+ This function is used to ensure that declarations inside a scope are
+ only processed if the variable contains the correct number of values;
+ for example:
+
+ \snippet doc/src/snippets/qmake/functions.pro 2
+
+ \section1 dirname(file)
+
+ Returns the directory name part of the specified file. For example:
+
+ \snippet doc/src/snippets/qmake/dirname.pro 0
+
+ \section1 error(string)
+
+ This function never returns a value. \c qmake displays the given
+ \e string to the user, and exits. This function should only be used
+ for unrecoverable errors.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 62
+
+ \section1 eval(string)
+ [Conditional]
+
+ Evaluates the contents of the string using \c qmake's syntax rules
+ and returns true.
+ Definitions and assignments can be used in the string to modify the
+ values of existing variables or create new definitions.
+
+ For example:
+ \snippet doc/src/snippets/qmake/functions.pro 4
+
+ Note that quotation marks can be used to delimit the string, and that
+ the return value can be discarded if it is not needed.
+
+ \section1 exists(filename)
+ [Conditional]
+
+ Tests whether a file with the given \e filename exists.
+ If the file exists, the function succeeds; otherwise it fails.
+ If a regular expression is specified for the filename, this function
+ succeeds if any file matches the regular expression specified.
+
+ For example:
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 63
+
+ Note that "/" can be used as a directory separator, regardless of the
+ platform in use.
+
+ \section1 find(variablename, substr)
+
+ Places all the values in \e variablename that match \e substr. \e
+ substr may be a regular expression, and will be matched accordingly.
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 64
+
+ MY_VAR2 will contain '-Lone -Ltwo -Lthree -Lfour -Lfive', and MY_VAR3 will
+ contains 'three two three'.
+
+ \section1 for(iterate, list)
+
+ This special test function will cause a loop to be started that
+ iterates over all values in \e list, setting \e iterate to each
+ value in turn. As a convenience, if \e list is 1..10 then iterate will
+ iterate over the values 1 through 10.
+
+ The use of an else scope afer a condition line with a for() loop is
+ disallowed.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 65
+
+ \section1 include(filename)
+ [Conditional]
+
+ Includes the contents of the file specified by \e filename into the
+ current project at the point where it is included. This function
+ succeeds if \e filename is included; otherwise it fails. The included
+ file is processed immediately.
+
+ You can check whether the file was included by using this function as
+ the condition for a scope; for example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 66
+
+ \section1 infile(filename, var, val)
+ [Conditional]
+
+ Succeeds if the file \e filename (when parsed by \c qmake itself)
+ contains the variable \e var with a value of \e val; otherwise fails.
+ If you do not specify a third argument (\e val), the function will
+ only test whether \e var has been declared in the file.
+
+ \section1 isEmpty(variablename)
+ [Conditional]
+
+ Succeeds if the variable \e variablename is empty; otherwise fails.
+ This is the equivalent of \c{count( variablename, 0 )}.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 67
+
+ \section1 join(variablename, glue, before, after)
+
+ Joins the value of \e variablename with \c glue. If this value is
+ non-empty it prefixes the value with \e before and suffix it with \e
+ after. \e variablename is the only required field, the others default
+ to empty strings. If you need to encode spaces in \e glue, \e before, or \e
+ after you must quote them.
+
+ \section1 member(variablename, position)
+
+ Returns the value at the given \e position in the list of items in
+ \e variablename.
+ If an item cannot be found at the position specified, an empty string is
+ returned. \e variablename is the only required field. If not specified,
+ \c position defaults to 0, causing the first value in the list to be
+ returned.
+
+ \section1 message(string)
+
+ This function simply writes a message to the console. Unlike the
+ \c error() function, this function allows processing to continue.
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 68
+
+ The above line causes "This is a message" to be written to the console.
+ The use of quotation marks is optional.
+
+ \note By default, messages are written out for each Makefile generated by
+ qmake for a given project. If you want to ensure that messages only appear
+ once for each project, test the \c build_pass variable
+ \l{qmake Advanced Usage}{in conjunction with a scope} to filter out
+ messages during builds; for example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 69
+
+ \section1 prompt(question)
+
+ Displays the specified \e question, and returns a value read from stdin.
+
+ \section1 quote(string)
+
+ Converts a whole \e string into a single entity and returns the result.
+ Newlines, carriage returns, and tabs can be specified in the string
+ with \\n \\r and \\t. The return value does not contain either single
+ or double quotation marks unless you explicitly include them yourself,
+ but will be placed into a single entry (for literal expansion).
+
+ \section1 replace(string, old_string, new_string)
+
+ Replaces each instance of \c old_string with \c new_string in the
+ contents of the variable supplied as \c string. For example, the
+ code
+
+ \snippet doc/src/snippets/qmake/replace.pro 0
+
+ prints the message:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 70
+
+ \section1 sprintf(string, arguments...)
+
+ Replaces %1-%9 with the arguments passed in the comma-separated list
+ of function \e arguments and returns the processed string.
+
+ \section1 system(command)
+ [Conditional]
+
+ Executes the given \c command in a secondary shell, and succeeds
+ if the command returns with a zero exit status; otherwise fails.
+ You can check the return value of this function using a scope:
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 71
+
+ Alternatively, you can use this function to obtain stdout and stderr
+ from the command, and assign it to a variable. For example, you can
+ use this to interrogate information about the platform:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 72
+
+ \target unique
+ \section1 unique(variablename)
+
+ This will return a list of values in variable that are unique (that is
+ with repetitive entries removed). For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 73
+
+ \section1 warning(string)
+
+ This function will always succeed, and will display the given
+ \e string to the user. message() is a synonym for warning().
+*/
+
+/*!
+ \page qmake-environment-reference.html
+ \contentspage {qmake Manual}{Contents}
+ \previouspage qmake Function Reference
+
+ \title Configuring qmake's Environment
+
+ \tableofcontents
+
+ \target Properties
+ \section1 Properties
+
+ \c qmake has a system of persistant information, this allows you to
+ \c set a variable in qmake once, and each time qmake is invoked this
+ value can be queried. Use the following to set a property in qmake:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 74
+
+ The appropriate variable and value should be substituted for
+ \c VARIABLE and \c VALUE.
+
+ To retrieve this information back from qmake you can do:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 75
+
+ \note \c{qmake -query} will only list variables that you have
+ previously set with \c{qmake -set VARIABLE VALUE}.
+
+ This information will be saved into a QSettings object (meaning it
+ will be stored in different places for different platforms). As
+ \c VARIABLE is versioned as well, you can set one value in an older
+ version of \c qmake, and newer versions will retrieve this value. However,
+ if you set \c VARIABLE for a newer version of \c qmake, the older version
+ will not use this value. You can however query a specific version of a
+ variable if you prefix that version of \c qmake to \c VARIABLE, as in
+ the following example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 76
+
+ \c qmake also has the notion of \c builtin properties, for example you can
+ query the installation of Qt for this version of \c qmake with the
+ \c QT_INSTALL_PREFIX property:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 77
+
+ These built-in properties cannot have a version prefixed to them as
+ they are not versioned, and each version of \c qmake will have its own
+ built-in set of these values. The list below outlines the built-in
+ properties:
+
+ \list
+ \o \c QT_INSTALL_PREFIX - Where the version of Qt this qmake is built for resides
+ \o \c QT_INSTALL_DATA - Where data for this version of Qt resides
+ \o \c QMAKE_VERSION - The current version of qmake
+ \endlist
+
+ Finally, these values can be queried in a project file with a special
+ notation such as:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 78
+
+ \target QMAKESPEC
+ \section1 QMAKESPEC
+
+ \c qmake requires a platform and compiler description file which
+ contains many default values used to generate appropriate Makefiles.
+ The standard Qt distribution comes with many of these files, located
+ in the \c mkspecs subdirectory of the Qt installation.
+
+ The \c QMAKESPEC environment variable can contain any of the following:
+
+ \list
+ \o A complete path to a directory containing a \c{qmake.conf} file.
+ In this case \c qmake will open the \c{qmake.conf} file from within that
+ directory. If the file does not exist, \c qmake will exit with an
+ error.
+ \o The name of a platform-compiler combination. In this case, \c qmake
+ will search in the directory specified by the \c mkspecs subdirectory
+ of the data path specified when Qt was compiled (see
+ QLibraryInfo::DataPath).
+ \endlist
+
+ \bold{Note:} The \c QMAKESPEC path will automatically be added to the
+ \l{qmake Variable Reference#INCLUDEPATH}{INCLUDEPATH} system variable.
+
+ \target INSTALLS
+ \section1 INSTALLS
+
+ It is common on Unix to also use the build tool to install applications
+ and libraries; for example, by invoking \c{make install}. For this reason,
+ \c qmake has the concept of an install set, an object which contains
+ instructions about the way part of a project is to be installed.
+ For example, a collection of documentation files can be described in the
+ following way:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 79
+
+ The \c path member informs \c qmake that the files should be installed in
+ \c /usr/local/program/doc (the path member), and the \c files member
+ specifies the files that should be copied to the installation directory.
+ In this case, everything in the \c docs directory will be coped to
+ \c /usr/local/program/doc.
+
+ Once an install set has been fully described, you can append it to the
+ install list with a line like this:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 80
+
+ \c qmake will ensure that the specified files are copied to the installation
+ directory. If you require greater control over this process, you can also
+ provide a definition for the \c extra member of the object. For example,
+ the following line tells \c qmake to execute a series of commands for this
+ install set:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 81
+
+ The \c unix scope
+ (see \l{qmake Advanced Usage#Scopes and Conditions}{Scopes and Conditions})
+ ensures that these particular commands are only executed on Unix platforms.
+ Appropriate commands for other platforms can be defined using other scope
+ rules.
+
+ Commands specified in the \c extra member are executed before the instructions
+ in the other members of the object are performed.
+
+ If you append a built-in install set to the \c INSTALLS variable and do
+ not specify \c files or \c extra members, \c qmake will decide what needs to
+ be copied for you. Currently, the only supported built-in install set is
+ \c target:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 82
+
+ In the above lines, \c qmake knows what needs to be copied, and will handle
+ the installation process automatically.
+
+ \target cache
+ \section1 Cache File
+
+ The cache file is a special file \c qmake reads to find settings not specified
+ in the \c qmake.conf file, project files, or at the command line. If
+ \c -nocache is not specified when \c qmake is run, it will try to find a file
+ called \c{.qmake.cache} in parent directories of the current directory. If
+ it fails to find this file, it will silently ignore this step of processing.
+
+ If it finds a \c{.qmake.cache} file then it will process this file first before
+ it processes the project file.
+
+ \target LibDepend
+ \section1 Library Dependencies
+
+ Often when linking against a library, \c qmake relies on the underlying
+ platform to know what other libraries this library links against, and
+ lets the platform pull them in. In many cases, however, this is not
+ sufficent. For example, when statically linking a library, no other
+ libraries are linked to, and therefore no dependencies to those
+ libraries are created. However, an application that later links
+ against this library will need to know where to find the symbols that
+ the static library will require. To help with this situation, \c qmake
+ attempts to follow a library's dependencies where appropriate, but
+ this behavior must be explicitly enabled by following two steps.
+
+ The first step is to enable dependency tracking in the library itself.
+ To do this you must tell \c qmake to save information about the library:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 83
+
+ This is only relevant to the \c lib template, and will be ignored for
+ all others. When this option is enabled, \c qmake will create a file
+ ending in .prl which will save some meta-information about the
+ library. This metafile is just like an ordinary project file, but only
+ contains internal variable declarations. You are free to view this file
+ and, if it is deleted, \c qmake will know to recreate it when necessary,
+ either when the project file is later read, or if a dependent library
+ (described below) has changed. When installing this library, by
+ specifying it as a target in an \c INSTALLS declaration, \c qmake will
+ automatically copy the .prl file to the installation path.
+
+ The second step in this process is to enable reading of this meta
+ information in the applications that use the static library:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 84
+
+ When this is enabled, \c qmake will process all libraries linked to
+ by the application and find their meta-information. \c qmake will use
+ this to determine the relevant linking information, specifically adding
+ values to the application project file's list of \c DEFINES as well as
+ \c LIBS. Once \c qmake has processed this file, it will then look through
+ the newly introduced libraries in the \c LIBS variable, and find their
+ dependent .prl files, continuing until all libraries have been resolved.
+ At this point, the Makefile is created as usual, and the libraries are
+ linked explicitlyy against the application.
+
+ The internals of the .prl file are left closed so they can easily
+ change later. They are not designed to be changed by hand, should only
+ be created by \c qmake, and should not be transferred between operating
+ systems as they may contain platform-dependent information.
+
+ \target Extensions
+ \section1 File Extensions
+
+ Under normal circumstances \c qmake will try to use appropriate file extensions
+ for your platform. However, it is sometimes necessary to override the default
+ choices for each platform and explicitly define file extensions for \c qmake to use.
+ This is achieved by redefining certain built-in variables; for example the extension
+ used for \l moc files can be redefined with the following assignment in a project
+ file:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 85
+
+ The following variables can be used to redefine common file extensions recognized
+ by \c qmake:
+
+ \list
+ \o QMAKE_EXT_MOC - This modifies the extension placed on included moc files.
+ \o QMAKE_EXT_UI - This modifies the extension used for designer UI files (usually
+ in \c FORMS).
+ \o QMAKE_EXT_PRL - This modifies the extension placed on
+ \l{#LibDepend}{library dependency files}.
+ \o QMAKE_EXT_LEX - This changes the suffix used in files (usually in \c LEXSOURCES).
+ \o QMAKE_EXT_YACC - This changes the suffix used in files (usually in \c YACCSOURCES).
+ \o QMAKE_EXT_OBJ - This changes the suffix used on generated object files.
+ \endlist
+
+ All of the above accept just the first value, so you must assign to it just one
+ value that will be used throughout your project file. There are two variables that
+ accept a list of values:
+
+ \list
+ \o QMAKE_EXT_CPP - Causes \c qmake to interpret all files with these suffixes as
+ C++ source files.
+ \o QMAKE_EXT_H - Causes \c qmake to interpret all files with these suffixes as
+ C and C++ header files.
+ \endlist
+
+ \target Customizing
+ \section1 Customizing Makefile Output
+
+ \c qmake tries to do everything expected of a cross-platform build tool.
+ This is often less than ideal when you really need to run special
+ platform-dependent commands. This can be achieved with specific instructions
+ to the different \c qmake backends.
+
+ Customization of the Makefile output is performed through an object-style
+ API as found in other places in \c qmake. Objects are defined automatically
+ by specifying their members; for example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 86
+
+ The definitions above define a \c qmake target called \c mytarget, containing
+ a Makefile target called \c{.buildfile} which in turn is generated with
+ the \c touch command. Finally, the \c{.depends} member specifies that
+ \c mytarget depends on \c mytarget2, another target that is defined afterwards.
+ \c mytarget2 is a dummy target; it is only defined to echo some text to
+ the console.
+
+ The final step is to instruct \c qmake that this object is a target to be built:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 87
+
+ This is all you need to do to actually build custom targets. Of course, you may
+ want to tie one of these targets to the
+ \l{qmake Variable Reference#TARGET}{qmake build target}. To do this, you simply need to
+ include your Makefile target in the list of
+ \l{qmake Variable Reference#PRE_TARGETDEPS}{PRE_TARGETDEPS}.
+
+ The following tables are an overview of the options available to you with the QMAKE_EXTRA_TARGETS
+ variable.
+
+ \table
+ \header
+ \o Member
+ \o Description
+ \row
+ \o commands
+ \o The commands for generating the custom build target.
+ \row
+ \o CONFIG
+ \o Specific configuration options for the custom build target. See the CONFIG table for details.
+ \row
+ \o depends
+ \o The existing build targets that the custom build target depends on.
+ \row
+ \o recurse
+ \o Specifies which sub-targets should used when creating the rules in the Makefile to call in
+ the sub-target specific Makefile. This is only used when \c recursive is set in the CONFIG.
+ \row
+ \o recurse_target
+ \o Specifies the target that should be built via the sub-target Makefile for the rule in the Makefile.
+ This adds something like $(MAKE) -f Makefile.[subtarget] [recurse_target]. This is only used when
+ \c recursive is set in the CONFIG.
+ \row
+ \o target
+ \o The file being created by the custom build target.
+ \endtable
+
+ List of members specific to the CONFIG option:
+
+ \table
+ \header
+ \o Member
+ \o Description
+ \row
+ \o recursive
+ \o Indicates that rules should be created in the Makefile and thus call
+ the relevant target inside the sub-target specific Makefile. This defaults to creating
+ an entry for each of the sub-targets.
+ \endtable
+
+ For convenience, there is also a method of customizing projects
+ for new compilers or preprocessors:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 88
+
+ With the above definitions, you can use a drop-in replacement for moc if one
+ is available. The commands is executed on all arguments given to the
+ \c NEW_HEADERS variable (from the \c input member), and the result is written
+ to the file defined by the \c output member; this file is added to the
+ other source files in the project.
+ Additionally, \c qmake will execute \c depend_command to generate dependency
+ information, and place this information in the project as well.
+
+ These commands can easily be placed into a cache file, allowing subsequent
+ project files to add arguments to \c NEW_HEADERS.
+
+ The following tables are an overview of the options available to you with the QMAKE_EXTRA_COMPILERS
+ variable.
+
+ \table
+ \header
+ \o Member
+ \o Description
+ \row
+ \o commands
+ \o The commands used for for generating the output from the input.
+ \row
+ \o CONFIG
+ \o Specific configuration options for the custom compiler. See the CONFIG table for details.
+ \row
+ \o depend_command
+ \o Specifies a command used to generate the list of dependencies for the output.
+ \row
+ \o dependency_type
+ \o Specifies the type of file the output is, if it is a known type (such as TYPE_C,
+ TYPE_UI, TYPE_QRC) then it is handled as one of those type of files.
+ \row
+ \o depends
+ \o Specifies the dependencies of the output file.
+ \row
+ \o input
+ \o The variable that contains the files that should be processed with the custom compiler.
+ \row
+ \o name
+ \o A description of what the custom compiler is doing. This is only used in some backends.
+ \row
+ \o output
+ \o The filename that is created from the custom compiler.
+ \row
+ \o output_function
+ \o Specifies a custom qmake function that is used to specify the filename to be created.
+ \row
+ \o variable_out
+ \o The variable that the files created from the output should be added to.
+ \endtable
+
+ List of members specific to the CONFIG option:
+
+ \table
+ \header
+ \o Member
+ \o Description
+ \row
+ \o commands
+ \o The commands used for for generating the output from the input.
+ \row
+ \o CONFIG
+ \o Specific configuration options for the custom compiler. See the CONFIG table for details.
+ \row
+ \o depend_command
+ \o Specifies a command used to generate the list of dependencies for the output.
+ \row
+ \o dependency_type
+ \o Specifies the type of file the output is, if it is a known type (such as TYPE_C,
+ TYPE_UI, TYPE_QRC) then it is handled as one of those type of files.
+ \row
+ \o depends
+ \o Specifies the dependencies of the output file.
+ \row
+ \o input
+ \o The variable that contains the files that should be processed with the custom compiler.
+ \row
+ \o name
+ \o A description of what the custom compiler is doing. This is only used in some backends.
+ \row
+ \o output
+ \o The filename that is created from the custom compiler.
+ \row
+ \o output_function
+ \o Specifies a custom qmake function that is used to specify the filename to be created.
+ \row
+ \o variables
+ \o Indicates that the variables specified here are replaced with $(QMAKE_COMP_VARNAME) when refered to
+ in the pro file as $(VARNAME).
+ \row
+ \o variable_out
+ \o The variable that the files created from the output should be added to.
+ \endtable
+
+ List of members specific to the CONFIG option:
+
+ \table
+ \header
+ \o Member
+ \o Description
+ \row
+ \o combine
+ \o Indicates that all of the input files are combined into a single output file.
+ \row
+ \o target_predeps
+ \o Indicates that the output should be added to the list of PRE_TARGETDEPS.
+ \row
+ \o explicit_dependencies
+ \o The dependencies for the output only get generated from the depends member and from
+ nowhere else.
+ \row
+ \o no_link
+ \o Indicates that the output should not be added to the list of objects to be linked in.
+ \endtable
+
+ \note Symbian platform specific: Generating objects to be linked in is
+ not supported on the Symbian platform, so either the \c CONFIG option
+ \c no_link or variable \c variable_out should always be defined for
+ extra compilers.
+
+*/
+
+/*!
+ \page qmake-advanced-usage.html
+ \title qmake Advanced Usage
+ \contentspage {qmake Manual}{Contents}
+ \previouspage qmake Platform Notes
+ \nextpage Using Precompiled Headers
+
+ Many \c qmake project files simply describe the sources and header files used
+ by the project, using a list of \c{name = value} and \c{name += value}
+ definitions. \c qmake also provides other operators, functions, and scopes
+ that can be used to process the information supplied in variable declarations.
+ These advanced features allow Makefiles to be generated for multiple platforms
+ from a single project file.
+
+ \tableofcontents
+
+ \section1 Operators
+
+ In many project files, the assignment (\c{=}) and append (\c{+=}) operators can
+ be used to include all the information about a project. The typical pattern of
+ use is to assign a list of values to a variable, and append more values
+ depending on the result of various tests. Since \c qmake defines certain
+ variables using default values, it is sometimes necessary to use the removal
+ (\c{-=}) operator to filter out values that are not required. The following
+ operators can be used to manipulate the contents of variables.
+
+ The \c = operator assigns a value to a variable:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 89
+
+ The above line sets the \c TARGET variable to \c myapp. This will overwrite any
+ values previously set for \c TARGET with \c myapp.
+
+ The \c += operator appends a new value to the list of values in a variable:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 90
+
+ The above line appends \c QT_DLL to the list of pre-processor defines to be put
+ in the generated Makefile.
+
+ The \c -= operator removes a value from the list of values in a variable:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 91
+
+ The above line removes \c QT_DLL from the list of pre-processor defines to be
+ put in the generated Makefile.
+
+ The \c *= operator adds a value to the list of values in a variable, but only
+ if it is not already present. This prevents values from being included many
+ times in a variable. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 92
+
+ In the above line, \c QT_DLL will only be added to the list of pre-processor
+ defines if it is not already defined. Note that the
+ \l{qmake Function Reference#unique}{unique()}
+ function can also be used to ensure that a variables only contains one
+ instance of each value.
+
+ The \c ~= operator replaces any values that match a regular expression with
+ the specified value:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 93
+
+ In the above line, any values in the list that start with \c QT_D or \c QT_T are
+ replaced with \c QT.
+
+ The \c $$ operator is used to extract the contents of a variable, and can be
+ used to pass values between variables or supply them to functions:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 94
+
+ \target Scopes
+ \section1 Scopes
+
+ Scopes are similar to \c if statements in procedural programming languages.
+ If a certain condition is true, the declarations inside the scope are processed.
+
+ \section2 Syntax
+
+ Scopes consist of a condition followed by an opening brace on the same line,
+ a sequence of commands and definitions, and a closing brace on a new line:
+
+ \snippet doc/src/snippets/qmake/scopes.pro syntax
+
+ The opening brace \e{must be written on the same line as the condition}.
+ Scopes may be concatenated to include more than one condition; see below
+ for examples.
+
+ \section2 Scopes and Conditions
+
+ A scope is written as a condition followed by a series of declarations
+ contained within a pair of braces; for example:
+
+ \snippet doc/src/snippets/qmake/scopes.pro 0
+
+ The above code will add the \c paintwidget_win.cpp file to the sources listed
+ in the generated Makefile if \c qmake is used on a Windows platform.
+ If \c qmake is used on a platform other than Windows, the define will be
+ ignored.
+
+ The conditions used in a given scope can also be negated to provide an
+ alternative set of declarations that will be processed only if the
+ original condition is false. For example, suppose we want to process
+ something on all platforms \e except for Windows. We can achieve this by
+ negating the scope like this:
+
+ \snippet doc/src/snippets/qmake/scopes.pro 1
+
+ Scopes can be nested to combine more than one condition. For instance, if
+ you want to include a particular file for a certain platform only if
+ debugging is enabled then you write the following:
+
+ \snippet doc/src/snippets/qmake/scopes.pro 2
+
+ To save writing many nested scopes, you can nest scopes using the \c :
+ operator. The nested scopes in the above example can be rewritten in
+ the following way:
+
+ \snippet doc/src/snippets/qmake/scopes.pro 3
+
+ You may also use the \c : operator to perform single line conditional
+ assignments; for example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 95
+
+ The above line adds \c QT_DLL to the \c DEFINES variable only on the
+ Windows platform.
+ Generally, the \c : operator behaves like a logical AND operator, joining
+ together a number of conditions, and requiring all of them to be true.
+
+ There is also the \c | operator to act like a logical OR operator, joining
+ together a number of conditions, and requiring only one of them to be true.
+
+ \snippet doc/src/snippets/qmake/scopes.pro 4
+
+ You can also provide alternative declarations to those within a scope by
+ using an \c else scope. Each \c else scope is processed if the conditions
+ for the preceding scopes are false.
+ This allows you to write complex tests when combined with other scopes
+ (separated by the \c : operator as above). For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 96
+
+ \section2 Configuration and Scopes
+
+ The values stored in the
+ \l{qmake-project-files.html#GeneralConfiguration}{\c CONFIG variable}
+ are treated specially by \c qmake. Each of the possible values can be
+ used as the condition for a scope. For example, the list of values
+ held by \c CONFIG can be extended with the \c opengl value:
+
+ \snippet doc/src/snippets/qmake/configscopes.pro 0
+
+ As a result of this operation, any scopes that test for \c opengl will
+ be processed. We can use this feature to give the final executable an
+ appropriate name:
+
+ \snippet doc/src/snippets/qmake/configscopes.pro 1
+ \snippet doc/src/snippets/qmake/configscopes.pro 2
+ \snippet doc/src/snippets/qmake/configscopes.pro 3
+
+ This feature makes it easy to change the configuration for a project
+ without losing all the custom settings that might be needed for a specific
+ configuration. In the above code, the declarations in the first scope are
+ processed, and the final executable will be called \c application-gl.
+ However, if \c opengl is not specified, the declarations in the second
+ scope are processed instead, and the final executable will be called
+ \c application.
+
+ Since it is possible to put your own values on the \c CONFIG
+ line, this provides you with a convenient way to customize project files
+ and fine-tune the generated Makefiles.
+
+ \section2 Platform Scope Values
+
+ In addition to the \c win32, \c macx, and \c unix values used in many
+ scope conditions, various other built-in platform and compiler-specific
+ values can be tested with scopes. These are based on platform
+ specifications provided in Qt's \c mkspecs directory. For example, the
+ following lines from a project file show the current specification in
+ use and test for the \c linux-g++ specification:
+
+ \snippet doc/src/snippets/qmake/specifications.pro 0
+
+ You can test for any other platform-compiler combination as long as a
+ specification exists for it in the \c mkspecs directory.
+
+ The scope \c unix is true for the Symbian platform.
+
+ \section1 Variables
+
+ Many of the variables used in project files are special variables that
+ \c qmake uses when generating Makefiles, such as \c DEFINES, \c SOURCES,
+ and \c HEADERS. It is possible for you to create variables for your own
+ use; \c qmake creates new variables with a given name when it encounters
+ an assignment to that name. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 97
+
+ There are no restricitions on what you do to your own variables, as \c
+ qmake will ignore them unless it needs to evaluate them when processing
+ a scope.
+
+ You can also assign the value of a current variable to another
+ variable by prefixing $$ to the variable name. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 98
+
+ Now the MY_DEFINES variable contains what is in the DEFINES variable at
+ this point in the project file. This is also equivalent to:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 99
+
+ The second notation allows you to append the contents of the variable to
+ another value without separating the two with a space. For example, the
+ following will ensure that the final executable will be given a name
+ that includes the project template being used:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 100
+
+ Variables can be used to store the contents of environment variables.
+ These can be evaluated at the time that \c qmake is run, or included
+ in the generated Makefile for evaluation when the project is built.
+
+ To obtain the contents of an environment value when \c qmake is run,
+ use the \c $$(...) operator:
+
+ \snippet doc/src/snippets/qmake/environment.pro 0
+
+ In the above assignment, the value of the \c PWD environment variable
+ is read when the project file is processed.
+
+ To obtain the contents of an environment value at the time when the
+ generated Makefile is processed, use the \c $(...) operator:
+
+ \snippet doc/src/snippets/qmake/environment.pro 1
+
+ In the above assignment, the value of \c PWD is read immediately
+ when the project file is processed, but \c $(PWD) is assigned to
+ \c DESTDIR in the generated Makefile. This makes the build process
+ more flexible as long as the environment variable is set correctly
+ when the Makefile is processed.
+
+ The special \c $$[...] operator can be used to access various
+ configuration options that were set when Qt was built:
+
+ \snippet doc/src/snippets/qmake/qtconfiguration.pro 0
+
+ The variables accessible with this operator are typically used to
+ enable third party plugins and components to be integrated with Qt.
+ For example, a \QD plugin can be installed alongside \QD's built-in
+ plugins if the following declaration is made in its project file:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 101
+
+ \target VariableProcessingFunctions
+ \section1 Variable Processing Functions
+
+ \c qmake provides a selection of built-in functions to allow the
+ contents of variables to be processed. These functions process the
+ arguments supplied to them and return a value, or list of values, as
+ a result. In order to assign a result to a variable, it is necessary
+ to use the \c $$ operator with this type of function in the same way
+ used to assign contents of one variable to another:
+
+ \snippet doc/src/snippets/qmake/functions.pro 1
+
+ This type of function should be used on the right-hand side of
+ assignments (i.e, as an operand).
+
+ It is possible to define your own functions for processing the
+ contents of variables. These functions can be defined in the following
+ way:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 102
+
+ The following example function takes a variable name as its only
+ argument, extracts a list of values from the variable with the
+ \l{qmake-function-reference.html}{eval()} built-in function,
+ and compiles a list of files:
+
+ \snippet doc/src/snippets/qmake/replacefunction.pro 0
+
+ \target ConditionalFunctions
+ \section1 Conditional Functions
+
+ \c qmake provides built-in functions that can be used as conditions
+ when writing scopes. These functions do not return a value, but
+ instead indicate "success" or "failure":
+
+ \snippet doc/src/snippets/qmake/functions.pro 3
+
+ This type of function should be used in conditional expressions
+ only.
+
+ It is possible to define your own functions to provide conditions
+ for scopes. The following example tests whether each file in a list
+ exists and returns true if they all exist, or false if not:
+
+ \snippet doc/src/snippets/qmake/testfunction.pro 0
+
+ \section1 Adding New Configuration Features
+
+ \c qmake lets you create your own \e features that can be included in
+ project files by adding their names to the list of values specified by
+ the \c CONFIG variable. Features are collections of custom functions and
+ definitions in \c{.prf} files that can reside in one of many standard
+ directories. The locations of these directories are defined in a number
+ of places, and \c qmake checks each of them in the following order when
+ it looks for \c{.prf} files:
+
+ \list 1
+ \o In a directory listed in the \c QMAKEFEATURES environment variable;
+ this contains a colon-separated list of directories.
+ \o In a directory listed in the \c QMAKEFEATURES property variable; this
+ contains a colon-spearated list of directories.
+ \omit
+ \o In a features directory beneath the project's root directory (where
+ the \c{.qmake.cache} file is generated).
+ \endomit
+ \o In a features directory residing within a \c mkspecs directory.
+ \c mkspecs directories can be located beneath any of the directories
+ listed in the \c QMAKEPATH environment variable (a colon-separated list
+ of directories). (\c{$QMAKEPATH/mkspecs/<features>})
+ \o In a features directory residing beneath the directory provided by the
+ \c QMAKESPEC environment variable. (\c{$QMAKESPEC/<features>})
+ \o In a features directory residing in the \c data_install/mkspecs directory.
+ (\c{data_install/mkspecs/<features>})
+ \o In a features directory that exists as a sibling of the directory
+ specified by the \c QMAKESPEC environment variable.
+ (\c{$QMAKESPEC/../<features>})
+ \endlist
+
+ The following features directories are searched for features files:
+
+ \list 1
+ \o \c{features/unix}, \c{features/win32}, or \c{features/macx}, depending on
+ the platform in use
+ \o \c features/
+ \endlist
+
+ For example, consider the following assignment in a project file:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 103
+
+ With this addition to the \c CONFIG variable, \c qmake will search the
+ locations listed above for the \c myfeatures.prf file after it has
+ finished parsing your project file. On Unix systems, it will look for
+ the following file:
+
+ \list 1
+ \o \c $QMAKEFEATURES/myfeatures.prf (for each directory listed in the
+ \c QMAKEFEATURES environment variable)
+ \o \c $$QMAKEFEATURES/myfeatures.prf (for each directory listed in the
+ \c QMAKEFEATURES property variable)
+ \o \c myfeatures.prf (in the project's root directory)
+ \o \c $QMAKEPATH/mkspecs/features/unix/myfeatures.prf and
+ \c $QMAKEPATH/mkspecs/features/myfeatures.prf (for each directory
+ listed in the \c QMAKEPATH environment variable)
+ \o \c $QMAKESPEC/features/unix/myfeatures.prf and
+ \c $QMAKESPEC/features/myfeatures.prf
+ \o \c data_install/mkspecs/features/unix/myfeatures.prf and
+ \c data_install/mkspecs/features/myfeatures.prf
+ \o \c $QMAKESPEC/../features/unix/myfeatures.prf and
+ \c $QMAKESPEC/../features/myfeatures.prf
+ \endlist
+
+ \note The \c{.prf} files must have names in lower case.
+
+
+*/
+
+/*!
+ \page qmake-precompiledheaders.html
+ \title Using Precompiled Headers
+ \contentspage {qmake Manual}{Contents}
+ \previouspage qmake Advanced Usage
+ \nextpage qmake Reference
+
+ \target Introduction
+
+ Precompiled headers are a performance feature supported by some
+ compilers to compile a stable body of code, and store the compiled
+ state of the code in a binary file. During subsequent compilations,
+ the compiler will load the stored state, and continue compiling the
+ specified file. Each subsequent compilation is faster because the
+ stable code does not need to be recompiled.
+
+ \c qmake supports the use of precompiled headers (PCH) on some
+ platforms and build environments, including:
+ \list
+ \o Windows
+ \list
+ \o nmake
+ \o Dsp projects (VC 6.0)
+ \o Vcproj projects (VC 7.0 \& 7.1)
+ \endlist
+ \o Mac OS X
+ \list
+ \o Makefile
+ \o Xcode
+ \endlist
+ \o Unix
+ \list
+ \o GCC 3.4 and above
+ \endlist
+ \endlist
+
+ \target ADD_PCH
+ \section1 Adding Precompiled Headers to Your Project
+
+ \target PCH_CONTENTS
+ \section2 Contents of the Precompiled Header File
+
+ The precompiled header must contain code which is \e stable
+ and \e static throughout your project. A typical PCH might look
+ like this:
+
+ \section3 Example: \c stable.h
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 104
+
+ Note that a precompiled header file needs to separate C includes from
+ C++ includes, since the precompiled header file for C files may not
+ contain C++ code.
+
+ \target PROJECT_OPTIONS
+ \section2 Project Options
+
+ To make your project use PCH, you only need to define the
+ \c PRECOMPILED_HEADER variable in your project file:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 105
+
+ \c qmake will handle the rest, to ensure the creation and use of the
+ precompiled header file. You do not need to include the precompiled
+ header file in \c HEADERS, as \c qmake will do this if the configuration
+ supports PCH.
+
+ All platforms that support precompiled headers have the configuration
+ option \c precompile_header set. Using this option, you may trigger
+ conditional blocks in your project file to add settings when using PCH.
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 106
+
+ \section1 Notes on Possible Issues
+
+ On some platforms, the file name suffix for precompiled header files is
+ the same as that for other object files. For example, the following
+ declarations may cause two different object files with the same name to
+ be generated:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 107
+
+ To avoid potential conflicts like these, it is good practice to ensure
+ that header files that will be precompiled are given distinctive names.
+
+ \target EXAMPLE_PROJECT
+ \section1 Example Project
+
+ You can find the following source code in the
+ \c{examples/qmake/precompile} directory in the Qt distribution:
+
+ \section2 \c mydialog.ui
+
+ \quotefromfile examples/qmake/precompile/mydialog.ui
+ \printuntil
+
+ \section2 \c stable.h
+
+ \snippet examples/qmake/precompile/stable.h 0
+
+ \section2 \c myobject.h
+
+ \snippet examples/qmake/precompile/myobject.h 0
+
+ \section2 \c myobject.cpp
+
+ \snippet examples/qmake/precompile/myobject.cpp 0
+
+ \section2 \c util.cpp
+
+ \snippet examples/qmake/precompile/util.cpp 0
+
+ \section2 \c main.cpp
+
+ \snippet examples/qmake/precompile/main.cpp 0
+
+ \section2 \c precompile.pro
+
+ \snippet examples/qmake/precompile/precompile.pro 0
+*/
+
+/*!
+ \page qmake-tutorial.html
+ \title qmake Tutorial
+ \contentspage {qmake Manual}{Contents}
+ \previouspage qmake Manual
+ \nextpage qmake Common Projects
+
+ This tutorial teaches you how to use \c qmake. We recommend that
+ you read the \c qmake user guide after completing this tutorial.
+
+ \section1 Starting off Simple
+
+ Let's assume that you have just finished a basic implementation of
+ your application, and you have created the following files:
+
+ \list
+ \o hello.cpp
+ \o hello.h
+ \o main.cpp
+ \endlist
+
+ You will find these files in the \c{examples/qmake/tutorial} directory
+ of the Qt distribution. The only other thing you know about the setup of
+ the application is that it's written in Qt. First, using your favorite
+ plain text editor, create a file called \c hello.pro in
+ \c{examples/qmake/tutorial}. The first thing you need to do is add the
+ lines that tell \c qmake about the source and header files that are part
+ of your development project.
+
+ We'll add the source files to the project file first. To do this you
+ need to use the \l{qmake Variable Reference#SOURCES}{SOURCES} variable.
+ Just start a new line with \c {SOURCES +=} and put hello.cpp after it.
+ You should have something like this:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 108
+
+ We repeat this for each source file in the project, until we end up
+ with the following:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 109
+
+ If you prefer to use a Make-like syntax, with all the files listed in
+ one go you can use the newline escaping like this:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 110
+
+ Now that the source files are listed in the project file, the header
+ files must be added. These are added in exactly the same way as source
+ files, except that the variable name we use is
+ \l{qmake Variable Reference#HEADERS}{HEADERS}.
+
+ Once you have done this, your project file should look something like
+ this:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 111
+
+ The target name is set automatically; it is the same as the project
+ file, but with the suffix appropriate to the platform. For example, if
+ the project file is called \c hello.pro, the target will be \c hello.exe
+ on Windows and \c hello on Unix. If you want to use a different name
+ you can set it in the project file:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 112
+
+ The final step is to set the \l{qmake Variable Reference#CONFIG}{CONFIG}
+ variable. Since this is a Qt application, we need to put \c qt on the
+ \c CONFIG line so that \c qmake will add the relevant libraries to be
+ linked against and ensure that build lines for \c moc and \c uic are
+ included in the generated Makefile.
+
+ The finished project file should look like this:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 113
+
+ You can now use \c qmake to generate a Makefile for your application.
+ On the command line, in your project's directory, type the following:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 114
+
+ Then type \c make or \c nmake depending on the compiler you use.
+
+ For Visual Studio users, \c qmake can also generate \c .dsp or
+ \c .vcproj files, for example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 115
+
+ \section1 Making an Application Debuggable
+
+ The release version of an application doesn't contain any debugging
+ symbols or other debugging information. During development it is useful
+ to produce a debugging version of the application that has the
+ relevant information. This is easily achieved by adding \c debug to the
+ \c CONFIG variable in the project file.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 116
+
+ Use \c qmake as before to generate a Makefile and you will be able to
+ obtain useful information about your application when running it in
+ a debugging environment.
+
+ \section1 Adding Platform-Specific Source Files
+
+ After a few hours of coding, you might have made a start on the
+ platform-specific part of your application, and decided to keep the
+ platform-dependent code separate. So you now have two new files to
+ include into your project file: \c hellowin.cpp and \c
+ hellounix.cpp. We can't just add these to the \c SOURCES
+ variable since this will put both files in the Makefile. So, what we
+ need to do here is to use a scope which will be processed depending on
+ which platform \c qmake is run on.
+
+ A simple scope that will add in the platform-dependent file for
+ Windows looks like this:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 117
+
+ So if \c qmake is run on Windows, it will add \c hellowin.cpp to the
+ list of source files. If \c qmake is run on any other platform, it
+ will simply ignore it. Now all that is left to be done is to create a
+ scope for the Unix-specific file.
+
+ When you have done that, your project file should now look
+ something like this:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 118
+
+ Use \c qmake as before to generate a Makefile.
+
+ \section1 Stopping qmake If a File Doesn't Exist
+
+ You may not want to create a Makefile if a certain file doesn't exist.
+ We can check if a file exists by using the exists() function. We can
+ stop \c qmake from processing by using the error() function. This
+ works in the same way as scopes do. Simply replace the scope condition
+ with the function. A check for a \c main.cpp file looks like this:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 119
+
+ The \c{!} symbol is used to negate the test; i.e. \c{exists( main.cpp )}
+ is true if the file exists, and \c{!exists( main.cpp )} is true if the
+ file doesn't exist.
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 120
+
+ Use \c qmake as before to generate a makefile. If you rename \c
+ main.cpp temporarily, you will see the message and \c qmake will stop
+ processing.
+
+ \section1 Checking for More than One Condition
+
+ Suppose you use Windows and you want to be able to see statement
+ output with qDebug() when you run your application on the command line.
+ Unless you build your application with the appropriate console setting,
+ you won't see the output. We can easily put \c console on the \c CONFIG
+ line so that on Windows the makefile will have this setting. However,
+ let's say that we only want to add the \c CONFIG line if we are running
+ on Windows \e and when \c debug is already on the \c CONFIG line.
+ This requires using two nested scopes; just create one scope, then create
+ the other inside it. Put the settings to be processed inside the last
+ scope, like this:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 121
+
+ Nested scopes can be joined together using colons, so the final
+ project file looks like this:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 122
+
+ That's it! You have now completed the tutorial for \c qmake, and are
+ ready to write project files for your development projects.
+*/
+
+/*!
+ \page qmake-common-projects.html
+ \title qmake Common Projects
+ \contentspage {qmake Manual}{Contents}
+ \previouspage qmake Tutorial
+ \nextpage Using qmake
+
+ This chapter describes how to set up \c qmake project files for three
+ common project types that are based on Qt. Although all kinds of
+ projects use many of the same variables, each of them use project-specific
+ variables to customize output files.
+
+ Platform-specific variables are not described here; we refer the reader to
+ the \l{Deploying Qt Applications} document for information on issues such as
+ \l{Deploying an Application on Mac OS X#Architecture Dependencies}{building
+ universal binaries for Mac OS X} and
+ \l{Deploying an Application on Windows#Visual Studio 2005 Onwards}
+ {handling Visual Studio manifest files}.
+
+ \tableofcontents
+
+ \target Application
+ \section1 Building an Application
+
+ \section2 The app Template
+
+ The \c app template tells \c qmake to generate a Makefile that will build
+ an application. With this template, the type of application can be specified
+ by adding one of the following options to the \c CONFIG variable definition:
+
+ \table
+ \header \o Option \o Description
+ \row \o windows \o The application is a Windows GUI application.
+ \row \o console \o \c app template only: the application is a Windows console
+ application.
+ \endtable
+
+ When using this template the following \c qmake system variables are recognized.
+ You should use these in your .pro file to specify information about your
+ application.
+
+ \list
+ \o HEADERS - A list of all the header files for the application.
+ \o SOURCES - A list of all the source files for the application.
+ \o FORMS - A list of all the UI files (created using \c{Qt Designer})
+ for the application.
+ \o LEXSOURCES - A list of all the lex source files for the application.
+ \o YACCSOURCES - A list of all the yacc source files for the application.
+ \o TARGET - Name of the executable for the application. This defaults
+ to the name of the project file. (The extension, if any, is added
+ automatically).
+ \o DESTDIR - The directory in which the target executable is placed.
+ \o DEFINES - A list of any additional pre-processor defines needed for the application.
+ \o INCLUDEPATH - A list of any additional include paths needed for the application.
+ \o DEPENDPATH - The dependency search path for the application.
+ \o VPATH - The search path to find supplied files.
+ \o DEF_FILE - Windows only: A .def file to be linked against for the application.
+ \o RC_FILE - Windows only: A resource file for the application.
+ \o RES_FILE - Windows only: A resource file to be linked against for the application.
+ \endlist
+
+ You only need to use the system variables that you have values for,
+ for instance, if you do not have any extra INCLUDEPATHs then you do not
+ need to specify any, \c qmake will add in the default ones needed.
+ For instance, an example project file might look like this:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 123
+
+ For items that are single valued, e.g. the template or the destination
+ directory, we use "="; but for multi-valued items we use "+=" to \e
+ add to the existing items of that type. Using "=" replaces the item's
+ value with the new value, for example if we wrote \c{DEFINES=QT_DLL},
+ all other definitions would be deleted.
+
+ \target Library
+ \section1 Building a Library
+
+ \section2 The lib Template
+
+ The \c lib template tells \c qmake to generate a Makefile that will
+ build a library. When using this template, in addition to the system variables
+ mentioned above for the \c app template the \c VERSION variable is
+ supported. You should use these in your .pro file to specify
+ information about the library.
+
+ When using the \c lib template, the following options can be added to the
+ \c CONFIG variable to determine the type of library that is built:
+
+ \table
+ \header \o Option \o Description
+ \row \o dll \o The library is a shared library (dll).
+ \row \o staticlib \o The library is a static library.
+ \row \o plugin \o The library is a plugin; this also enables the dll option.
+ \endtable
+
+ The following option can also be defined to provide additional information about
+ the library.
+
+ \list
+ \o VERSION - The version number of the target library, for example, 2.3.1.
+ \endlist
+
+ The target file name for the library is platform-dependent. For example, on
+ X11 and Mac OS X, the library name will be prefixed by \c lib; on Windows,
+ no prefix is added to the file name.
+
+ \target Plugin
+ \section1 Building a Plugin
+
+ Plugins are built using the \c lib template, as described in the previous
+ section. This tells \c qmake to generate a Makefile for the project that will
+ build a plugin in a suitable form for each platform, usually in the form of a
+ library. As with ordinary libraries, the \c VERSION variable is used to specify
+ information about the plugin.
+
+ \list
+ \o VERSION - The version number of the target library, for example, 2.3.1.
+ \endlist
+
+ \section2 Building a Qt Designer Plugin
+
+ \QD plugins are built using a specific set of configuration settings that
+ depend on the way Qt was configured for your system. For convenience, these
+ settings can be enabled by adding \c designer to the project's \c CONFIG
+ variable. For example:
+
+ \snippet examples/designer/worldtimeclockplugin/worldtimeclockplugin.pro 0
+
+ See the \l{Qt Designer Examples} for more examples of plugin-based projects.
+
+ \section1 Building and Installing in Debug and Release Modes
+
+ Sometimes, it is necessary to build a project in both debug and release
+ modes. Although the \c CONFIG variable can hold both \c debug and \c release
+ options, the \c debug option overrides the \c release option.
+
+ \section2 Building in Both Modes
+
+ To enable a project to be built in both modes, you must add the
+ \c debug_and_release option to your project's \c CONFIG definition:
+
+ \snippet doc/src/snippets/qmake/debug_and_release.pro 0
+ \snippet doc/src/snippets/qmake/debug_and_release.pro 1
+
+ The scope in the above snippet modifies the build target in each mode to
+ ensure that the resulting targets have different names. Providing different
+ names for targets ensures that one will not overwrite the other.
+
+ When \c qmake processes the project file, it will generate a Makefile rule
+ to allow the project to be built in both modes. This can be invoked in the
+ following way:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 124
+
+ The \c build_all option can be added to the \c CONFIG variable in the
+ project file to ensure that the project is built in both modes by default:
+
+ \snippet doc/src/snippets/qmake/debug_and_release.pro 2
+
+ This allows the Makefile to be processed using the default rule:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 125
+
+ \section2 Installing in Both Modes
+
+ The \c build_all option also ensures that both versions of the target
+ will be installed when the installation rule is invoked:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 126
+
+ It is possible to customize the names of the build targets depending on
+ the target platform. For example, a library or plugin may be named using a
+ different convention on Windows to the one used on Unix platforms:
+
+ \omit
+ Note: This was originally used in the customwidgetplugin.pro file, but is
+ no longer needed there.
+ \endomit
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 127
+
+ The default behavior in the above snippet is to modify the name used for
+ the build target when building in debug mode. An \c else clause could be
+ added to the scope to do the same for release mode; left as it is, the
+ target name remains unmodified.
+*/
+
diff --git a/doc/src/development/qmsdev.qdoc b/doc/src/development/qmsdev.qdoc
new file mode 100644
index 000000000..b8f257fac
--- /dev/null
+++ b/doc/src/development/qmsdev.qdoc
@@ -0,0 +1,166 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/* NOT DOCUMENTED !
+ \page qmsdev.html
+
+ \title The QMsDev Plugin
+
+ The Visual Studio Integration Plugin is currently available only to users of
+ Visual Studio 6. It offers simple ways of doing common tasks when writing a
+ Qt application.
+
+ \tableofcontents
+
+ \section1 How to install the Visual Studio Integration Plugin
+
+ When you install Qt, the integration plugin should be installed for you,
+ however, sometimes this does not happen, so to install the integration
+ plugin manually just carry out the following steps.
+
+ \list
+ \i Start up Visual Studio.
+ \i Select Tools|Customize|Add-ins and Macro Files.
+ \i Ensure that there is a tick next to QMsDev Developer Studio Add-In.
+ \i Click Close.
+ \endlist
+
+ Now the integration plugin should be installed. If this doesn't
+ work, then contact Qt technical support giving details of
+ what went wrong.
+
+ \section1 How to uninstall the Visual Studio Integration Plugin
+
+ When you want to uninstall the integration plugin, just carry out the
+ following steps.
+
+ \list
+ \i Close down any instances of Visual Studio.
+ \i Delete the file '%MSDevDir%\\addins\\qmsdev.dll'
+ \endlist
+
+ \section1 What can the Visual Studio Integration Plugin do?
+
+ The integration plugin adds the following options to Visual Studio:
+
+ \list
+ \i New Qt Project
+ \i New Qt Dialog
+ \i Qt Designer
+ \i Open Qt Project
+ \i Write Qt Project
+ \i Use Qt In Current Project
+ \i Add MOC
+ \endlist
+
+ \section2 Using the 'New Qt Project' button
+
+ The 'New Qt Project' button allows you to create a simple Qt project
+ ready for development. Simply fill in the form and if you select
+ 'Dialog' or 'Main Window' without MDI support then it will
+ automatically start up \e{Qt Designer}. When you have finished with
+ the form in \e{Qt Designer} just save it and it will appear in a
+ ready made Qt project.
+
+ If you select 'Main Window' with 'MDI Support' then it will simply
+ give you a code skeleton in a project ready for you to populate with
+ your own code.
+
+ \section2 Using the 'New Qt Dialog' button
+
+ The 'New Qt Dialog' button works in two ways: You can use it to create a new
+ dialog for your project; or you can use it to insert an existing
+ dialog into your project.
+
+ If you want to create a new dialog then all you need to do is specify where
+ the dialog file should be saved and give it a name. This will start up
+ \e{Qt Designer} to allow you to design your new dialog, and will add it to
+ the existing project.
+
+ If you want to add an existing dialog to your project, then just select the
+ relevant UI file. This will then add it to your existing project and add
+ the relevant steps to create the generated code.
+
+ \section2 Using the 'Qt Designer' button
+
+ The 'Qt Designer' button simply starts up \e{Qt Designer}, it has no ties to
+ your existing project so whatever you do with it will not affect your
+ existing projects. It can also be started up by using the Ctrl+Shift+D key
+ combination in Visual Studio.
+
+ \section2 Using the 'Open Qt Project' button
+
+ The 'Open Qt Project' button allows you to convert an existing \c
+ qmake project file into a \c .dsp file which you can insert into
+ your existing workspace. When you click the 'Open Qt Project'
+ button, just select an existing \c qmake project file (a \c .pro
+ file) and then click OK. You will get a message box at the end
+ which asks you to insert the newly created \c .dsp file into your
+ existing workspace.
+
+ \section2 Using the 'Write Qt Project' button
+
+ The 'Write Qt Project' button creates a \c qmake project (\c .pro)
+ file for your current project so that you can easily copy the files
+ onto another platform and be able to use \c qmake to create a Makefile
+ on that other platform. All you need to do is make the project you
+ want to create a \c .pro file for, and click on the button. Just
+ name your \c qmake project file and click Save.
+
+ \section2 Using the 'Use Qt In Current Project' button
+
+ The 'Use Qt In Current Project' button simply adds in the necessary
+ information for the current project so that it links against Qt and
+ sets any other settings needed to use Qt in that project.
+
+ \section2 Using the 'Add MOC' button
+
+ The 'Add MOC' button will add in the custom build step for the selected file
+ so that it creates any needed MOC files and it will add these generated
+ files to the project. All you need to do to use it is click on a file that
+ has Q_OBJECT and click the button.
+
+ You only need to use this button if you added a file that has
+ Q_OBJECT in it by hand, you don't need to use this if you used any
+ of the previously mentioned buttons. It can also be invoked by using
+ the \key{Ctrl+Shift+M} key combination in Visual Studio.
+
+*/
diff --git a/doc/src/development/qtestlib.qdoc b/doc/src/development/qtestlib.qdoc
new file mode 100644
index 000000000..02c0daed6
--- /dev/null
+++ b/doc/src/development/qtestlib.qdoc
@@ -0,0 +1,778 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qtestlib-manual.html
+ \title QTestLib Manual
+ \brief An overview of Qt's unit testing framework.
+
+ \ingroup frameworks-technologies
+ \keyword qtestlib
+
+ The QTestLib framework, provided by Nokia, is a tool for unit
+ testing Qt based applications and libraries. QTestLib provides
+ all the functionality commonly found in unit testing frameworks as
+ well as extensions for testing graphical user interfaces.
+
+ Table of contents:
+
+ \tableofcontents
+
+ \section1 QTestLib Features
+
+ QTestLib is designed to ease the writing of unit tests for Qt
+ based applications and libraries:
+
+ \table
+ \header \o Feature \o Details
+ \row
+ \o \bold Lightweight
+ \o QTestLib consists of about 6000 lines of code and 60
+ exported symbols.
+ \row
+ \o \bold Self-contained
+ \o QTestLib requires only a few symbols from the Qt Core library
+ for non-gui testing.
+ \row
+ \o \bold {Rapid testing}
+ \o QTestLib needs no special test-runners; no special
+ registration for tests.
+ \row
+ \o \bold {Data-driven testing}
+ \o A test can be executed multiple times with different test data.
+ \row
+ \o \bold {Basic GUI testing}
+ \o QTestLib offers functionality for mouse and keyboard simulation.
+ \row
+ \o \bold {Benchmarking}
+ \o QTestLib supports benchmarking and provides several measurement back-ends.
+ \row
+ \o \bold {IDE friendly}
+ \o QTestLib outputs messages that can be interpreted by Visual
+ Studio and KDevelop.
+ \row
+ \o \bold Thread-safety
+ \o The error reporting is thread safe and atomic.
+ \row
+ \o \bold Type-safety
+ \o Extensive use of templates prevent errors introduced by
+ implicit type casting.
+ \row
+ \o \bold {Easily extendable}
+ \o Custom types can easily be added to the test data and test output.
+ \endtable
+
+ Note: For higher-level GUI and application testing needs, please
+ see the \l{Third-Party Tools}{Qt testing products provided by
+ Nokia partners}.
+
+
+ \section1 QTestLib API
+
+ All public methods are in the \l QTest namespace. In addition, the
+ \l QSignalSpy class provides easy introspection for Qt's signals and slots.
+
+
+ \section1 Using QTestLib
+
+ \section2 Creating a Test
+
+ To create a test, subclass QObject and add one or more private slots to it. Each
+ private slot is a testfunction in your test. QTest::qExec() can be used to execute
+ all testfunctions in the test object.
+
+ In addition, there are four private slots that are \e not treated as testfunctions.
+ They will be executed by the testing framework and can be used to initialize and
+ clean up either the entire test or the current test function.
+
+ \list
+ \o \c{initTestCase()} will be called before the first testfunction is executed.
+ \o \c{cleanupTestCase()} will be called after the last testfunction was executed.
+ \o \c{init()} will be called before each testfunction is executed.
+ \o \c{cleanup()} will be called after every testfunction.
+ \endlist
+
+ If \c{initTestCase()} fails, no testfunction will be executed. If \c{init()} fails,
+ the following testfunction will not be executed, the test will proceed to the next
+ testfunction.
+
+ Example:
+ \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 0
+
+ For more examples, refer to the \l{QTestLib Tutorial}.
+
+ \section2 Building a Test
+
+ If you are using \c qmake as your build tool, just add the
+ following to your project file:
+
+ \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 1
+
+ If you are using other buildtools, make sure that you add the location
+ of the QTestLib header files to your include path (usually \c{include/QtTest}
+ under your Qt installation directory). If you are using a release build
+ of Qt, link your test to the \c QtTest library. For debug builds, use
+ \c{QtTest_debug}.
+
+ See \l {Chapter 1: Writing a Unit Test}{Writing a Unit Test} for a step by
+ step explanation.
+
+ \section2 QTestLib Command Line Arguments
+
+ \section3 Syntax
+
+ The syntax to execute an autotest takes the following simple form:
+
+ \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 2
+
+ Substitute \c testname with the name of your executable. \c
+ testfunctions can contain names of test functions to be
+ executed. If no \c testfunctions are passed, all tests are run. If you
+ append the name of an entry in \c testdata, the test function will be
+ run only with that test data.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 3
+
+ Runs the test function called \c toUpper with all available test data.
+
+ \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 4
+
+ Runs the \c toUpper test function with all available test data,
+ and the \c toInt test function with the testdata called \c
+ zero (if the specified test data doesn't exist, the associated test
+ will fail).
+
+ \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 5
+
+ Runs the testMyWidget function test, outputs every signal
+ emission and waits 500 milliseconds after each simulated
+ mouse/keyboard event.
+
+ \section3 Options
+
+ The following command line arguments are understood:
+
+ \list
+ \o \c -help \BR
+ outputs the possible command line arguments and give some useful help.
+ \o \c -functions \BR
+ outputs all test functions available in the test.
+ \o \c -o \e filename \BR
+ write output to the specified file, rather than to standard output
+ \o \c -silent \BR
+ silent output, only shows warnings, failures and minimal status messages
+ \o \c -v1 \BR
+ verbose output; outputs information on entering and exiting test functions.
+ \o \c -v2 \BR
+ extended verbose output; also outputs each \l QCOMPARE() and \l QVERIFY()
+ \o \c -vs \BR
+ outputs every signal that gets emitted
+ \o \c -xml \BR
+ outputs XML formatted results instead of plain text
+ \o \c -lightxml \BR
+ outputs results as a stream of XML tags
+ \o \c -eventdelay \e ms \BR
+ if no delay is specified for keyboard or mouse simulation
+ (\l QTest::keyClick(),
+ \l QTest::mouseClick() etc.), the value from this parameter
+ (in milliseconds) is substituted.
+ \o \c -keydelay \e ms \BR
+ like -eventdelay, but only influences keyboard simulation and not mouse
+ simulation.
+ \o \c -mousedelay \e ms \BR
+ like -eventdelay, but only influences mouse simulation and not keyboard
+ simulation.
+ \o \c -keyevent-verbose \BR
+ output more verbose output for keyboard simulation
+ \o \c -maxwarnings \e number\BR
+ sets the maximum number of warnings to output. 0 for unlimited, defaults to 2000.
+ \endlist
+
+ \section2 Creating a Benchmark
+
+ To create a benchmark, follow the instructions for crating a test and then add a
+ QBENCHMARK macro to the test function that you want to benchmark.
+
+ \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 12
+
+ The code insde the QBENCHMARK macro will be measured, and possibly also repeated
+ several times in order to get an accurate measurement. This depends on the selected
+ measurement back-end. Several back-ends are available an can be selected on the
+ command line:
+
+ \target testlib-benchmarking-measurement
+
+ \table
+ \header \o Name
+ \o Commmand-line Arguemnt
+ \o Availability
+ \row \o Walltime
+ \o (default)
+ \o All platforms
+ \row \o CPU tick counter
+ \o -tickcounter
+ \o Windows, Mac OS X, Linux, many UNIX-like systems.
+ \row \o Valgrind/Callgrind
+ \o -callgrind
+ \o Linux (if installed)
+ \row \o Event Counter
+ \o -eventcounter
+ \o All platforms
+ \endtable
+
+ In short, walltime is always available but requires many repetitions to
+ get a useful result.
+ Tick counters are usually available and can provide
+ results with fewer repetitions, but can be susceptible to CPU frequency
+ scaling issues.
+ Valgrind provides exact results, but does not take
+ I/O waits into account, and is only available on a limited number of
+ platforms.
+ Event counting is available on all platforms and it provides the number of events
+ that were received by the event loop before they are sent to their corresponding
+ targets (this might include non-Qt events).
+
+ \note Depending on the device configuration, Tick counters on the
+ Windows CE platform may not be as fine-grained, compared to other platforms.
+ Devices that do not support high-resolution timers default to
+ one-millisecond granularity.
+
+ See the chapter 5 in the \l{QTestLib Tutorial} for more benchmarking examples.
+
+ \section1 Using QTestLib remotely on Windows CE
+ \c cetest is a convenience application which helps the user to launch an
+ application remotely on a Windows CE device or emulator.
+
+ It needs to be executed after the unit test has been successfully compiled.
+
+ Prior to launching, the following files are copied to the device:
+
+ \list
+ \o all Qt libraries the project links to
+ \o \l {QtRemote}{QtRemote.dll}
+ \o the c runtime library specified during installation
+ \o all files specified in the \c .pro file following the \l DEPLOYMENT rules.
+ \endlist
+
+ \section2 Using \c cetest
+ \section3 Syntax
+ The syntax to execute an autotest takes the following simple form:
+
+ \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 6
+
+ \section3 Options
+ \c cetest provides the same options as those for unit-testing on non cross-compiled
+ platforms. See \l {QTestLib Command Line Arguments} {Command Line Arguments} for
+ more information.
+
+ The following commands are also included:
+
+ \list
+ \o \c -debug \BR
+ Test version compiled in debug mode.
+ \o \c -release \BR
+ Test version compiled in release mode.
+ \o \c -libpath \e path \BR
+ Target path to copy Qt libraries to.
+ \o \c -qt-delete \BR
+ Delete Qt libraries after execution.
+ \o \c -project-delete \BR
+ Delete project files after execution.
+ \o \c -delete \BR
+ Delete project and Qt libraries after execution.
+ \o \c -conf \BR
+ Specifies a qt.conf file to be deployed to remote directory.
+ \endlist
+
+ \note \c{debug} is the default build option.
+
+ \section2 QtRemote
+ \c QtRemote is a small library which is build after QTestLib. It allows the host
+ system to create a process on a remote device and waits until its execution has
+ been finished.
+
+ \section2 Requirements
+ \c cetest uses Microsoft ActiveSync to establish a remote connection between the
+ host computer and the device. Thus header files and libraries are needed to compile
+ cetest and QtRemote successfully.
+
+ Prior to \l{Installing Qt on Windows CE}{installation} of Qt, you need to set your
+ \c INCLUDE and \c LIB environment variables properly.
+
+ A default installation of Windows Mobile 5 for Pocket PC can be obtained by:
+
+ \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 7
+
+ Note that Qt will remember the path, so you do not need to set it again
+ after switching the environments for cross-compilation.
+
+ \section1 3rd Party Code
+
+ The CPU tick counters used for benchmarking is licensed under the following
+ license: (from src/testlib/3rdparty/cycle.h)
+
+ \legalese
+ Copyright (c) 2003, 2006 Matteo Frigo\br
+ Copyright (c) 2003, 2006 Massachusetts Institute of Technology
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ \endlegalese
+*/
+
+/*!
+ \page qtestlib-tutorial.html
+ \brief A short introduction to testing with QTestLib.
+ \contentspage QTestLib Manual
+ \nextpage {Chapter 1: Writing a Unit Test}{Chapter 1}
+
+ \title QTestLib Tutorial
+
+ This tutorial gives a short introduction to how to use some of the
+ features of the QTestLib framework. It is divided into four
+ chapters:
+
+ \list 1
+ \o \l {Chapter 1: Writing a Unit Test}{Writing a Unit Test}
+ \o \l {Chapter 2: Data Driven Testing}{Data Driven Testing}
+ \o \l {Chapter 3: Simulating GUI Events}{Simulating GUI Events}
+ \o \l {Chapter 4: Replaying GUI Events}{Replaying GUI Events}
+ \o \l {Chapter 5: Writing a Benchmark}{Writing a Benchmark}
+ \endlist
+
+*/
+
+
+/*!
+ \example qtestlib/tutorial1
+
+ \contentspage {QTestLib Tutorial}{Contents}
+ \nextpage {Chapter 2: Data Driven Testing}{Chapter 2}
+
+ \title Chapter 1: Writing a Unit Test
+
+ In this first chapter we will see how to write a simple unit test
+ for a class, and how to execute it.
+
+ \section1 Writing a Test
+
+ Let's assume you want to test the behavior of our QString class.
+ First, you need a class that contains your test functions. This class
+ has to inherit from QObject:
+
+ \snippet examples/qtestlib/tutorial1/testqstring.cpp 0
+
+ Note that you need to include the QTest header, and that the
+ test functions have to be declared as private slots so the
+ test framework finds and executes it.
+
+ Then you need to implement the test function itself. The
+ implementation could look like this:
+
+ \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 8
+
+ The \l QVERIFY() macro evaluates the expression passed as its
+ argument. If the expression evaluates to true, the execution of
+ the test function continues. Otherwise, a message describing the
+ failure is appended to the test log, and the test function stops
+ executing.
+
+ But if you want a more verbose output to the test log, you should
+ use the \l QCOMPARE() macro instead:
+
+ \snippet examples/qtestlib/tutorial1/testqstring.cpp 1
+
+ If the strings are not equal, the contents of both strings is
+ appended to the test log, making it immediately visible why the
+ comparison failed.
+
+ Finally, to make our test case a stand-alone executable, the
+ following two lines are needed:
+
+ \snippet examples/qtestlib/tutorial1/testqstring.cpp 2
+
+ The \l QTEST_MAIN() macro expands to a simple \c main()
+ method that runs all the test functions. Note that if both the
+ declaration and the implementation of our test class are in a \c
+ .cpp file, we also need to include the generated moc file to make
+ Qt's introspection work.
+
+ \section1 Executing a Test
+
+ Now that we finished writing our test, we want to execute
+ it. Assuming that our test was saved as \c testqstring.cpp in an
+ empty directory: we build the test using qmake to create a project
+ and generate a makefile.
+
+ \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 9
+
+ \bold {Note:}If you're using windows, replace \c make with \c
+ nmake or whatever build tool you use.
+
+ Running the resulting executable should give you the following
+ output:
+
+ \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 10
+
+ Congratulations! You just wrote and executed your first unit test
+ using the QTestLib framework.
+*/
+
+/*!
+ \example qtestlib/tutorial2
+
+ \previouspage {Chapter 1: Writing a Unit Test}{Chapter 1}
+ \contentspage {QTestLib Tutorial}{Contents}
+ \nextpage {Chapter 3: Simulating Gui Events}{Chapter 3}
+
+ \title Chapter 2: Data Driven Testing
+
+ In this chapter we will demonstrate how to execute a test
+ multiple times with different test data.
+
+ So far, we have hard coded the data we wanted to test into our
+ test function. If we add more test data, the function might look like
+ this:
+
+ \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 11
+
+ To prevent that the function ends up being cluttered by repetitive
+ code, QTestLib supports adding test data to a test function. All
+ we need is to add another private slot to our test class:
+
+ \snippet examples/qtestlib/tutorial2/testqstring.cpp 0
+
+ \section1 Writing the Data Function
+
+ A test function's associated data function carries the same name,
+ appended by \c{_data}. Our data function looks like this:
+
+ \snippet examples/qtestlib/tutorial2/testqstring.cpp 1
+
+ First, we define the two elements of our test table using the \l
+ QTest::addColumn() function: A test string, and the
+ expected result of applying the QString::toUpper() function to
+ that string.
+
+ Then we add some data to the table using the \l
+ QTest::newRow() function. Each set of data will become a
+ separate row in the test table.
+
+ \l QTest::newRow() takes one argument: A name that will be
+ associated with the data set. If the test fails, the name will be
+ used in the test log, referencing the failed data. Then we
+ stream the data set into the new table row: First an arbitrary
+ string, and then the expected result of applying the
+ QString::toUpper() function to that string.
+
+ You can think of the test data as a two-dimensional table. In
+ our case, it has two columns called \c string and \c result and
+ three rows. In addition a name as well as an index is associated
+ with each row:
+
+ \table
+ \header
+ \o index
+ \o name
+ \o string
+ \o result
+ \row
+ \o 0
+ \o all lower
+ \o "hello"
+ \o HELLO
+ \row
+ \o 1
+ \o mixed
+ \o "Hello"
+ \o HELLO
+ \row
+ \o 2
+ \o all upper
+ \o "HELLO"
+ \o HELLO
+ \endtable
+
+ \section1 Rewriting the Test Function
+
+ Our test function can now be rewritten:
+
+ \snippet examples/qtestlib/tutorial2/testqstring.cpp 2
+
+ The TestQString::toUpper() function will be executed three times,
+ once for each entry in the test table that we created in the
+ associated TestQString::toUpper_data() function.
+
+ First, we fetch the two elements of the data set using the \l
+ QFETCH() macro. \l QFETCH() takes two arguments: The data type of
+ the element and the element name. Then we perform the test using
+ the \l QCOMPARE() macro.
+
+ This approach makes it very easy to add new data to the test
+ without modifying the test itself.
+
+ And again, to make our test case a stand-alone executable,
+ the following two lines are needed:
+
+ \snippet examples/qtestlib/tutorial2/testqstring.cpp 3
+
+ As before, the QTEST_MAIN() macro expands to a simple main()
+ method that runs all the test functions, and since both the
+ declaration and the implementation of our test class are in a .cpp
+ file, we also need to include the generated moc file to make Qt's
+ introspection work.
+*/
+
+/*!
+ \example qtestlib/tutorial3
+
+ \previouspage {Chapter 2 Data Driven Testing}{Chapter 2}
+ \contentspage {QTestLib Tutorial}{Contents}
+ \nextpage {Chapter 4: Replaying GUI Events}{Chapter 4}
+
+ \title Chapter 3: Simulating GUI Events
+
+ QTestLib features some mechanisms to test graphical user
+ interfaces. Instead of simulating native window system events,
+ QTestLib sends internal Qt events. That means there are no
+ side-effects on the machine the tests are running on.
+
+ In this chapter we will se how to write a simple GUI test.
+
+ \section1 Writing a GUI test
+
+ This time, let's assume you want to test the behavior of our
+ QLineEdit class. As before, you will need a class that contains
+ your test function:
+
+ \snippet examples/qtestlib/tutorial3/testgui.cpp 0
+
+ The only difference is that you need to include the QtGui class
+ definitions in addition to the QTest namespace.
+
+ \snippet examples/qtestlib/tutorial3/testgui.cpp 1
+
+ In the implementation of the test function we first create a
+ QLineEdit. Then we simulate writing "hello world" in the line edit
+ using the \l QTest::keyClicks() function.
+
+ \note The widget must also be shown in order to correctly test keyboard
+ shortcuts.
+
+ QTest::keyClicks() simulates clicking a sequence of keys on a
+ widget. Optionally, a keyboard modifier can be specified as well
+ as a delay (in milliseconds) of the test after each key click. In
+ a similar way, you can use the QTest::keyClick(),
+ QTest::keyPress(), QTest::keyRelease(), QTest::mouseClick(),
+ QTest::mouseDClick(), QTest::mouseMove(), QTest::mousePress()
+ and QTest::mouseRelease() functions to simulate the associated
+ GUI events.
+
+ Finally, we use the \l QCOMPARE() macro to check if the line edit's
+ text is as expected.
+
+ As before, to make our test case a stand-alone executable, the
+ following two lines are needed:
+
+ \snippet examples/qtestlib/tutorial3/testgui.cpp 2
+
+ The QTEST_MAIN() macro expands to a simple main() method that
+ runs all the test functions, and since both the declaration and
+ the implementation of our test class are in a .cpp file, we also
+ need to include the generated moc file to make Qt's introspection
+ work.
+*/
+
+/*!
+ \example qtestlib/tutorial4
+
+ \previouspage {Chapter 3: Simulating GUI Event}{Chapter 3}
+ \contentspage {QTestLib Tutorial}{Contents}
+ \nextpage {Chapter 5: Writing a Benchmark}{Chapter 5}
+
+ \title Chapter 4: Replaying GUI Events
+
+ In this chapter, we will show how to simulate a GUI event,
+ and how to store a series of GUI events as well as replay them on
+ a widget.
+
+ The approach to storing a series of events and replay them, is
+ quite similar to the approach explained in \l {Chapter 2:
+ Data Driven Testing}{chapter 2}; all you need is to add a data
+ function to your test class:
+
+ \snippet examples/qtestlib/tutorial4/testgui.cpp 0
+
+ \section1 Writing the Data Function
+
+ As before, a test function's associated data function carries the
+ same name, appended by \c{_data}.
+
+ \snippet examples/qtestlib/tutorial4/testgui.cpp 1
+
+ First, we define the elements of the table using the
+ QTest::addColumn() function: A list of GUI events, and the
+ expected result of applying the list of events on a QWidget. Note
+ that the type of the first element is \l QTestEventList.
+
+ A QTestEventList can be populated with GUI events that can be
+ stored as test data for later usage, or be replayed on any
+ QWidget.
+
+ In our current data function, we create two \l
+ {QTestEventList}s. The first list consists of a single click to
+ the 'a' key. We add the event to the list using the
+ QTestEventList::addKeyClick() function. Then we use the
+ QTest::newRow() function to give the data set a name, and
+ stream the event list and the expected result into the table.
+
+ The second list consists of two key clicks: an 'a' with a
+ following 'backspace'. Again we use the
+ QTestEventList::addKeyClick() to add the events to the list, and
+ QTest::newRow() to put the event list and the expected
+ result into the table with an associated name.
+
+ \section1 Rewriting the Test Function
+
+ Our test can now be rewritten:
+
+ \snippet examples/qtestlib/tutorial4/testgui.cpp 2
+
+ The TestGui::testGui() function will be executed two times,
+ once for each entry in the test data that we created in the
+ associated TestGui::testGui_data() function.
+
+ First, we fetch the two elements of the data set using the \l
+ QFETCH() macro. \l QFETCH() takes two arguments: The data type of
+ the element and the element name. Then we create a QLineEdit, and
+ apply the list of events on that widget using the
+ QTestEventList::simulate() function.
+
+ Finally, we use the QCOMPARE() macro to check if the line edit's
+ text is as expected.
+
+ As before, to make our test case a stand-alone executable,
+ the following two lines are needed:
+
+ \snippet examples/qtestlib/tutorial4/testgui.cpp 3
+
+ The QTEST_MAIN() macro expands to a simple main() method that
+ runs all the test functions, and since both the declaration and
+ the implementation of our test class are in a .cpp file, we also
+ need to include the generated moc file to make Qt's introspection
+ work.
+*/
+
+/*!
+ \example qtestlib/tutorial5
+
+ \previouspage {Chapter 4: Replaying GUI Events}{Chapter 4}
+ \contentspage {QTestLib Tutorial}{Contents}
+
+ \title Chapter 5: Writing a Benchmark
+
+ In this final chapter we will demonstrate how to write benchmarks
+ using QTestLib.
+
+ \section1 Writing a Benchmark
+ To create a benchmark we extend a test function with a QBENCHMARK macro.
+ A benchmark test function will then typically consist of setup code and
+ a QBENCHMARK macro that contains the code to be measured. This test
+ function benchmarks QString::localeAwareCompare().
+
+ \snippet examples/qtestlib/tutorial5/benchmarking.cpp 0
+
+ Setup can be done at the beginning of the function, the clock is not
+ running at this point. The code inside the QBENCHMARK macro will be
+ measured, and possibly repeated several times in order to get an
+ accurate measurement.
+
+ Several \l {testlib-benchmarking-measurement}{back-ends} are available
+ and can be selected on the command line.
+
+ \section1 Data Functions
+
+ Data functions are useful for creating benchmarks that compare
+ multiple data inputs, for example locale aware compare against standard
+ compare.
+
+ \snippet examples/qtestlib/tutorial5/benchmarking.cpp 1
+
+ The test function then uses the data to determine what to benchmark.
+
+ \snippet examples/qtestlib/tutorial5/benchmarking.cpp 2
+
+ The "if(useLocaleCompare)" switch is placed outside the QBENCHMARK
+ macro to avoid measuring its overhead. Each benchmark test function
+ can have one active QBENCHMARK macro.
+
+ \section1 External Tools
+
+ Tools for handling and visualizing test data are available as part of
+ the \l{qtestlib-tools} project on the Qt Labs Web site. These include
+ a tool for comparing performance data obtained from test runs and a
+ utility to generate Web-based graphs of performance data.
+
+ See the \l{qtestlib-tools Announcement} for more information on these
+ tools and a simple graphing example.
+
+*/
+
+
+
diff --git a/doc/src/development/rcc.qdoc b/doc/src/development/rcc.qdoc
new file mode 100644
index 000000000..46f11481d
--- /dev/null
+++ b/doc/src/development/rcc.qdoc
@@ -0,0 +1,95 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 rcc.html
+ \title Resource Compiler (rcc)
+ \ingroup qttools
+ \keyword rcc
+
+ The \c rcc tool is used to embed resources into a Qt application during
+ the build process. It works by generating a C++ source file containing
+ data specified in a Qt resource (.qrc) file.
+
+ Usage:
+ \snippet doc/src/snippets/code/doc_src_rcc.qdoc 0
+
+ RCC accepts the following command line options:
+
+ \table
+ \header \o Option \o Argument \o Description
+
+ \row \o \c{-o} \o \o Writes output to file rather than
+ stdout.
+
+ \row \o \c{-name} \o \c name \o Creates an external initialization
+ function with name.
+
+ \row \o \c{-threshold} \o \c level \o Specifies a threshold (in bytes)
+ to use when compressing files. If
+ the file is smaller than the
+ threshold, it will not be
+ compressed, independent of what
+ the compression level is.
+
+ \row \o \c{-compress} \o \c level \o Compresses input files with the
+ given level. Level is an integer
+ from 1 to 9 - 1 being the fastest,
+ producing the least compression;
+ 9 being the slowest, producing
+ the most compression.
+
+ \row \o \c{-root} \o \c path \o Prefixes the resource access path
+ with root path.
+
+ \row \o \c{-no-compress} \o \o Disables all compression.
+
+ \row \o \c{-binary} \o \o Outputs a binary file for use as
+ a dynamic resource.
+
+ \row \o \c{-version} \o \o Displays version information.
+
+ \row \o \c{-help} \o \o Displays usage information.
+ \endtable
+
+ See also \l{The Qt Resource System} for more information about embedding
+ resources in Qt applications.
+*/
diff --git a/doc/src/development/tools-list.qdoc b/doc/src/development/tools-list.qdoc
new file mode 100644
index 000000000..32ab695cb
--- /dev/null
+++ b/doc/src/development/tools-list.qdoc
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group qttools
+ \title Qt's Tools
+
+ Qt is supplied with several command line and graphical tools to
+ ease and speed the development process. Each tool is listed here
+ with a link to its documentation.
+
+ \table
+ \header \o Tool \o Description
+ \row \o \l{Qt Designer Manual}{Qt Designer}
+ \o Create forms visually.
+ \row \o \l{Qt Assistant Manual}{Qt Assistant}
+ \o Quickly find the help you need.
+ \row \o \l{Qt Linguist Manual}{Qt Linguist, lupdate, lrelease, lconvert}
+ \o Translate applications to reach international markets.
+ \row \o \l{qmake Manual}{qmake}
+ \o Create makefiles from simple platform-independent project files (\c .pro files).
+ \row \o \l{The Virtual Framebuffer}{qvfb}
+ \o Run and test embedded applications on the desktop.
+ \row \o \l{makeqpf}
+ \o Create pre-rendered fonts for embedded devices.
+ \row \o \l{moc}{Meta-Object Compiler (moc)}
+ \o Generate meta-object information for QObject subclasses.
+ \row \o \l{User Interface Compiler (uic)}
+ \o Generate C++ code from user interface files.
+ \row \o \l{Resource Compiler (rcc)}
+ \o Embed resources into Qt applications during the build process.
+ \row \o \l{Configuring Qt}{Configuring Qt (qtconfig)}
+ \o X11-based Qt configuration tool with online help.
+ \row \o \l{Fine-Tuning Features in Qt}{Configuring Qt Embedded (qconfig)}
+ \o Qt Embedded (Linux and Windows CE) configuration tool.
+ \row \o \l{Examples and Demos Launcher}
+ \o A launcher for Qt's Examples and Demonstration programs.
+ \row \o \l{qt3to4 - The Qt 3 to 4 Porting Tool}
+ \o A tool to assist in porting applications from Qt 3 to Qt 4.
+ \row \o \l{QtDBus XML compiler (qdbusxml2cpp)}
+ \o A tool to convert D-Bus interface descriptions to C++ source code.
+ \row \o \l{D-Bus Viewer}
+ \o A tool to introspect D-Bus objects and messages.
+ \endtable
+
+*/
diff --git a/doc/src/development/uic.qdoc b/doc/src/development/uic.qdoc
new file mode 100644
index 000000000..36179d337
--- /dev/null
+++ b/doc/src/development/uic.qdoc
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 uic.html
+ \title User Interface Compiler (uic)
+ \ingroup qttools
+ \keyword uic
+
+ \omit KEEP THIS FILE SYNCHRONIZED WITH uic.1 \endomit
+
+ This page documents the \e{User Interface Compiler} for the Qt GUI
+ toolkit. The \c uic reads an XML format user interface definition
+ (\c .ui) file as generated by \l{designer-manual.html}{Qt
+ Designer} and creates a corresponding C++ header file.
+
+ Usage:
+ \snippet doc/src/snippets/code/doc_src_uic.qdoc 0
+
+ \section1 Options
+
+ The following table lists the command-line options recognized by
+ \c uic.
+
+ \table
+ \header \o Option \o Description
+ \row \o \c{-o <file>} \o Write output to \c <file> instead of to standard output.
+ \row \o \c{-tr <func>} \o Use \c <func> for translating strings instead of \c tr().
+ \row \o \c{-p} \o Don't generate guards against multiple inclusion (\c #ifndef FOO_H ...).
+ \row \o \c{-h} \o Display the usage and the list of options.
+ \row \o \c{-v} \o Display \c{uic}'s version number.
+ \endtable
+
+ \section1 Examples
+
+ If you use \c qmake, \c uic will be invoked automatically for
+ header files.
+
+ Here are useful makefile rules if you only use GNU make:
+
+ \snippet doc/src/snippets/code/doc_src_uic.qdoc 1
+
+ If you want to write portably, you can use individual rules of the
+ following form:
+
+ \snippet doc/src/snippets/code/doc_src_uic.qdoc 2
+
+ You must also remember to add \c{ui_foo.h} to your \c HEADERS
+ (substitute your favorite name).
+*/
diff --git a/doc/src/diagrams/contentspropagation/customwidget.py b/doc/src/diagrams/contentspropagation/customwidget.py
index 89e0b1bfc..4d3733281 100755
--- a/doc/src/diagrams/contentspropagation/customwidget.py
+++ b/doc/src/diagrams/contentspropagation/customwidget.py
@@ -1,4 +1,44 @@
#!/usr/bin/env python
+#############################################################################
+##
+## Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+## All rights reserved.
+## Contact: Nokia Corporation (qt-info@nokia.com)
+##
+## This file is part of the 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$
+##
+#############################################################################
import os, sys
from PyQt4.QtCore import *
diff --git a/doc/src/diagrams/contentspropagation/standardwidgets.py b/doc/src/diagrams/contentspropagation/standardwidgets.py
index 975287d60..2284aa511 100755
--- a/doc/src/diagrams/contentspropagation/standardwidgets.py
+++ b/doc/src/diagrams/contentspropagation/standardwidgets.py
@@ -1,4 +1,44 @@
#!/usr/bin/env python
+#############################################################################
+##
+## Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+## All rights reserved.
+## Contact: Nokia Corporation (qt-info@nokia.com)
+##
+## This file is part of the 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$
+##
+#############################################################################
import os, sys
from PyQt4.QtCore import *
diff --git a/doc/src/diagrams/dbus-examples.png b/doc/src/diagrams/dbus-examples.png
new file mode 100644
index 000000000..816a9ab49
--- /dev/null
+++ b/doc/src/diagrams/dbus-examples.png
Binary files differ
diff --git a/doc/src/diagrams/designer-adding-toolbar-action1.png b/doc/src/diagrams/designer-adding-toolbar-action1.png
deleted file mode 100644
index 6b8237388..000000000
--- a/doc/src/diagrams/designer-adding-toolbar-action1.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/diagrams/designer-adding-actions.txt b/doc/src/diagrams/designer-manual/designer-adding-actions.txt
index 4124eccc7..4124eccc7 100644
--- a/doc/src/diagrams/designer-adding-actions.txt
+++ b/doc/src/diagrams/designer-manual/designer-adding-actions.txt
diff --git a/doc/src/diagrams/designer-adding-dockwidget.txt b/doc/src/diagrams/designer-manual/designer-adding-dockwidget.txt
index 97b4beb05..97b4beb05 100644
--- a/doc/src/diagrams/designer-adding-dockwidget.txt
+++ b/doc/src/diagrams/designer-manual/designer-adding-dockwidget.txt
diff --git a/doc/src/diagrams/designer-adding-dockwidget1.png b/doc/src/diagrams/designer-manual/designer-adding-dockwidget1.png
index 960da833b..960da833b 100644
--- a/doc/src/diagrams/designer-adding-dockwidget1.png
+++ b/doc/src/diagrams/designer-manual/designer-adding-dockwidget1.png
Binary files differ
diff --git a/doc/src/diagrams/designer-adding-dockwidget1.zip b/doc/src/diagrams/designer-manual/designer-adding-dockwidget1.zip
index 0492df68a..0492df68a 100644
--- a/doc/src/diagrams/designer-adding-dockwidget1.zip
+++ b/doc/src/diagrams/designer-manual/designer-adding-dockwidget1.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-adding-dynamic-property.png b/doc/src/diagrams/designer-manual/designer-adding-dynamic-property.png
index 8e81dd9cf..8e81dd9cf 100644
--- a/doc/src/diagrams/designer-adding-dynamic-property.png
+++ b/doc/src/diagrams/designer-manual/designer-adding-dynamic-property.png
Binary files differ
diff --git a/doc/src/diagrams/designer-adding-menu-action1.png b/doc/src/diagrams/designer-manual/designer-adding-menu-action1.png
index cde92d997..cde92d997 100644
--- a/doc/src/diagrams/designer-adding-menu-action1.png
+++ b/doc/src/diagrams/designer-manual/designer-adding-menu-action1.png
Binary files differ
diff --git a/doc/src/diagrams/designer-adding-menu-action1.zip b/doc/src/diagrams/designer-manual/designer-adding-menu-action1.zip
index 08395eb87..08395eb87 100644
--- a/doc/src/diagrams/designer-adding-menu-action1.zip
+++ b/doc/src/diagrams/designer-manual/designer-adding-menu-action1.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-adding-menu-action2.zip b/doc/src/diagrams/designer-manual/designer-adding-menu-action2.zip
index ca1a5b3cd..ca1a5b3cd 100644
--- a/doc/src/diagrams/designer-adding-menu-action2.zip
+++ b/doc/src/diagrams/designer-manual/designer-adding-menu-action2.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-manual/designer-adding-toolbar-action1.png b/doc/src/diagrams/designer-manual/designer-adding-toolbar-action1.png
new file mode 100644
index 000000000..4d28722dd
--- /dev/null
+++ b/doc/src/diagrams/designer-manual/designer-adding-toolbar-action1.png
Binary files differ
diff --git a/doc/src/diagrams/designer-adding-toolbar-action1.zip b/doc/src/diagrams/designer-manual/designer-adding-toolbar-action1.zip
index e673b3ca4..e673b3ca4 100644
--- a/doc/src/diagrams/designer-adding-toolbar-action1.zip
+++ b/doc/src/diagrams/designer-manual/designer-adding-toolbar-action1.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-adding-toolbar-action2.zip b/doc/src/diagrams/designer-manual/designer-adding-toolbar-action2.zip
index 96a9d69bf..96a9d69bf 100644
--- a/doc/src/diagrams/designer-adding-toolbar-action2.zip
+++ b/doc/src/diagrams/designer-manual/designer-adding-toolbar-action2.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-creating-dynamic-property.png b/doc/src/diagrams/designer-manual/designer-creating-dynamic-property.png
index 1c3d3cacc..1c3d3cacc 100644
--- a/doc/src/diagrams/designer-creating-dynamic-property.png
+++ b/doc/src/diagrams/designer-manual/designer-creating-dynamic-property.png
Binary files differ
diff --git a/doc/src/diagrams/designer-creating-menu-entry1.png b/doc/src/diagrams/designer-manual/designer-creating-menu-entry1.png
index 33aa0d605..33aa0d605 100644
--- a/doc/src/diagrams/designer-creating-menu-entry1.png
+++ b/doc/src/diagrams/designer-manual/designer-creating-menu-entry1.png
Binary files differ
diff --git a/doc/src/diagrams/designer-creating-menu-entry1.zip b/doc/src/diagrams/designer-manual/designer-creating-menu-entry1.zip
index f9e64c805..f9e64c805 100644
--- a/doc/src/diagrams/designer-creating-menu-entry1.zip
+++ b/doc/src/diagrams/designer-manual/designer-creating-menu-entry1.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-creating-menu-entry2.png b/doc/src/diagrams/designer-manual/designer-creating-menu-entry2.png
index 8338d0861..8338d0861 100644
--- a/doc/src/diagrams/designer-creating-menu-entry2.png
+++ b/doc/src/diagrams/designer-manual/designer-creating-menu-entry2.png
Binary files differ
diff --git a/doc/src/diagrams/designer-creating-menu-entry2.zip b/doc/src/diagrams/designer-manual/designer-creating-menu-entry2.zip
index 67d81e4d2..67d81e4d2 100644
--- a/doc/src/diagrams/designer-creating-menu-entry2.zip
+++ b/doc/src/diagrams/designer-manual/designer-creating-menu-entry2.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-creating-menu-entry3.png b/doc/src/diagrams/designer-manual/designer-creating-menu-entry3.png
index d2426464f..d2426464f 100644
--- a/doc/src/diagrams/designer-creating-menu-entry3.png
+++ b/doc/src/diagrams/designer-manual/designer-creating-menu-entry3.png
Binary files differ
diff --git a/doc/src/diagrams/designer-creating-menu-entry3.zip b/doc/src/diagrams/designer-manual/designer-creating-menu-entry3.zip
index d530186c4..d530186c4 100644
--- a/doc/src/diagrams/designer-creating-menu-entry3.zip
+++ b/doc/src/diagrams/designer-manual/designer-creating-menu-entry3.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-creating-menu-entry4.png b/doc/src/diagrams/designer-manual/designer-creating-menu-entry4.png
index 07a49ba1d..07a49ba1d 100644
--- a/doc/src/diagrams/designer-creating-menu-entry4.png
+++ b/doc/src/diagrams/designer-manual/designer-creating-menu-entry4.png
Binary files differ
diff --git a/doc/src/diagrams/designer-creating-menu-entry4.zip b/doc/src/diagrams/designer-manual/designer-creating-menu-entry4.zip
index d800c311e..d800c311e 100644
--- a/doc/src/diagrams/designer-creating-menu-entry4.zip
+++ b/doc/src/diagrams/designer-manual/designer-creating-menu-entry4.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-creating-menu.txt b/doc/src/diagrams/designer-manual/designer-creating-menu.txt
index b5b293425..b5b293425 100644
--- a/doc/src/diagrams/designer-creating-menu.txt
+++ b/doc/src/diagrams/designer-manual/designer-creating-menu.txt
diff --git a/doc/src/diagrams/designer-creating-menu1.png b/doc/src/diagrams/designer-manual/designer-creating-menu1.png
index d92a88ada..d92a88ada 100644
--- a/doc/src/diagrams/designer-creating-menu1.png
+++ b/doc/src/diagrams/designer-manual/designer-creating-menu1.png
Binary files differ
diff --git a/doc/src/diagrams/designer-creating-menu1.zip b/doc/src/diagrams/designer-manual/designer-creating-menu1.zip
index 780b1ac09..780b1ac09 100644
--- a/doc/src/diagrams/designer-creating-menu1.zip
+++ b/doc/src/diagrams/designer-manual/designer-creating-menu1.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-creating-menu2.png b/doc/src/diagrams/designer-manual/designer-creating-menu2.png
index 7be4891b2..7be4891b2 100644
--- a/doc/src/diagrams/designer-creating-menu2.png
+++ b/doc/src/diagrams/designer-manual/designer-creating-menu2.png
Binary files differ
diff --git a/doc/src/diagrams/designer-creating-menu2.zip b/doc/src/diagrams/designer-manual/designer-creating-menu2.zip
index 00664a6ea..00664a6ea 100644
--- a/doc/src/diagrams/designer-creating-menu2.zip
+++ b/doc/src/diagrams/designer-manual/designer-creating-menu2.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-creating-menu3.png b/doc/src/diagrams/designer-manual/designer-creating-menu3.png
index c2f1bebf0..c2f1bebf0 100644
--- a/doc/src/diagrams/designer-creating-menu3.png
+++ b/doc/src/diagrams/designer-manual/designer-creating-menu3.png
Binary files differ
diff --git a/doc/src/diagrams/designer-creating-menu3.zip b/doc/src/diagrams/designer-manual/designer-creating-menu3.zip
index 76ecbe01d..76ecbe01d 100644
--- a/doc/src/diagrams/designer-creating-menu3.zip
+++ b/doc/src/diagrams/designer-manual/designer-creating-menu3.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-creating-menu4.png b/doc/src/diagrams/designer-manual/designer-creating-menu4.png
index 3a3ab54c6..3a3ab54c6 100644
--- a/doc/src/diagrams/designer-creating-menu4.png
+++ b/doc/src/diagrams/designer-manual/designer-creating-menu4.png
Binary files differ
diff --git a/doc/src/diagrams/designer-creating-menubar.png b/doc/src/diagrams/designer-manual/designer-creating-menubar.png
index e8078e09a..e8078e09a 100644
--- a/doc/src/diagrams/designer-creating-menubar.png
+++ b/doc/src/diagrams/designer-manual/designer-creating-menubar.png
Binary files differ
diff --git a/doc/src/diagrams/designer-creating-menubar.zip b/doc/src/diagrams/designer-manual/designer-creating-menubar.zip
index bddbf0e7a..bddbf0e7a 100644
--- a/doc/src/diagrams/designer-creating-menubar.zip
+++ b/doc/src/diagrams/designer-manual/designer-creating-menubar.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-edit-resource.zip b/doc/src/diagrams/designer-manual/designer-edit-resource.zip
index dc43d9ec7..dc43d9ec7 100644
--- a/doc/src/diagrams/designer-edit-resource.zip
+++ b/doc/src/diagrams/designer-manual/designer-edit-resource.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-find-icon.zip b/doc/src/diagrams/designer-manual/designer-find-icon.zip
index e94abd962..e94abd962 100644
--- a/doc/src/diagrams/designer-find-icon.zip
+++ b/doc/src/diagrams/designer-manual/designer-find-icon.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-form-layoutfunction-crop.png b/doc/src/diagrams/designer-manual/designer-form-layoutfunction-crop.png
index e8dd39fd7..e8dd39fd7 100644
--- a/doc/src/diagrams/designer-form-layoutfunction-crop.png
+++ b/doc/src/diagrams/designer-manual/designer-form-layoutfunction-crop.png
Binary files differ
diff --git a/doc/src/diagrams/designer-form-layoutfunction.png b/doc/src/diagrams/designer-manual/designer-form-layoutfunction.png
index 9101e89de..9101e89de 100644
--- a/doc/src/diagrams/designer-form-layoutfunction.png
+++ b/doc/src/diagrams/designer-manual/designer-form-layoutfunction.png
Binary files differ
diff --git a/doc/src/diagrams/designer-form-layoutfunction.zip b/doc/src/diagrams/designer-manual/designer-form-layoutfunction.zip
index fcce637f6..fcce637f6 100644
--- a/doc/src/diagrams/designer-form-layoutfunction.zip
+++ b/doc/src/diagrams/designer-manual/designer-form-layoutfunction.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-main-window.zip b/doc/src/diagrams/designer-manual/designer-main-window.zip
index 69b7ee630..69b7ee630 100644
--- a/doc/src/diagrams/designer-main-window.zip
+++ b/doc/src/diagrams/designer-manual/designer-main-window.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-mainwindow-actions.ui b/doc/src/diagrams/designer-manual/designer-mainwindow-actions.ui
index 593a2dee2..593a2dee2 100644
--- a/doc/src/diagrams/designer-mainwindow-actions.ui
+++ b/doc/src/diagrams/designer-manual/designer-mainwindow-actions.ui
diff --git a/doc/src/diagrams/designer-palette-brush-editor.zip b/doc/src/diagrams/designer-manual/designer-palette-brush-editor.zip
index 698f27195..698f27195 100644
--- a/doc/src/diagrams/designer-palette-brush-editor.zip
+++ b/doc/src/diagrams/designer-manual/designer-palette-brush-editor.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-palette-editor.zip b/doc/src/diagrams/designer-manual/designer-palette-editor.zip
index 96646ab0b..96646ab0b 100644
--- a/doc/src/diagrams/designer-palette-editor.zip
+++ b/doc/src/diagrams/designer-manual/designer-palette-editor.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-palette-gradient-editor.zip b/doc/src/diagrams/designer-manual/designer-palette-gradient-editor.zip
index 46965161d..46965161d 100644
--- a/doc/src/diagrams/designer-palette-gradient-editor.zip
+++ b/doc/src/diagrams/designer-manual/designer-palette-gradient-editor.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-palette-pattern-editor.zip b/doc/src/diagrams/designer-manual/designer-palette-pattern-editor.zip
index 7382bad6a..7382bad6a 100644
--- a/doc/src/diagrams/designer-palette-pattern-editor.zip
+++ b/doc/src/diagrams/designer-manual/designer-palette-pattern-editor.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-resource-editor.zip b/doc/src/diagrams/designer-manual/designer-resource-editor.zip
index 2c11da420..2c11da420 100644
--- a/doc/src/diagrams/designer-resource-editor.zip
+++ b/doc/src/diagrams/designer-manual/designer-resource-editor.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-widget-box.zip b/doc/src/diagrams/designer-manual/designer-widget-box.zip
index 7ba8f77c6..7ba8f77c6 100644
--- a/doc/src/diagrams/designer-widget-box.zip
+++ b/doc/src/diagrams/designer-manual/designer-widget-box.zip
Binary files differ
diff --git a/doc/src/diagrams/designer-manual/rgbController.ui b/doc/src/diagrams/designer-manual/rgbController.ui
new file mode 100644
index 000000000..37c839f55
--- /dev/null
+++ b/doc/src/diagrams/designer-manual/rgbController.ui
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Form</class>
+ <widget class="QWidget" name="Form">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>RGB Controller</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>RED</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QSpinBox" name="spinBox">
+ <property name="maximum">
+ <number>255</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QSlider" name="verticalSlider">
+ <property name="maximum">
+ <number>255</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>GREEN</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QSpinBox" name="spinBox_2">
+ <property name="maximum">
+ <number>255</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QSlider" name="verticalSlider_2">
+ <property name="maximum">
+ <number>255</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QGridLayout" name="gridLayout_3">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>BLUE</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QSpinBox" name="spinBox_3">
+ <property name="maximum">
+ <number>255</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QSlider" name="verticalSlider_3">
+ <property name="maximum">
+ <number>255</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ <zorder>label</zorder>
+ <zorder>label_2</zorder>
+ <zorder>label_3</zorder>
+ <zorder>spinBox</zorder>
+ <zorder>spinBox_2</zorder>
+ <zorder>spinBox_3</zorder>
+ <zorder>verticalSlider</zorder>
+ <zorder>verticalSlider_2</zorder>
+ <zorder>verticalSlider_3</zorder>
+ <zorder>verticalSlider</zorder>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>spinBox</sender>
+ <signal>valueChanged(int)</signal>
+ <receiver>verticalSlider</receiver>
+ <slot>setValue(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>55</x>
+ <y>51</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>53</x>
+ <y>233</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>spinBox_2</sender>
+ <signal>valueChanged(int)</signal>
+ <receiver>verticalSlider_2</receiver>
+ <slot>setValue(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>193</x>
+ <y>46</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>186</x>
+ <y>105</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>spinBox_3</sender>
+ <signal>valueChanged(int)</signal>
+ <receiver>verticalSlider_3</receiver>
+ <slot>setValue(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>312</x>
+ <y>38</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>312</x>
+ <y>132</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>verticalSlider</sender>
+ <signal>valueChanged(int)</signal>
+ <receiver>spinBox</receiver>
+ <slot>setValue(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>57</x>
+ <y>86</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>73</x>
+ <y>46</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>verticalSlider_2</sender>
+ <signal>valueChanged(int)</signal>
+ <receiver>spinBox_2</receiver>
+ <slot>setValue(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>187</x>
+ <y>135</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>212</x>
+ <y>44</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>verticalSlider_3</sender>
+ <signal>valueChanged(int)</signal>
+ <receiver>spinBox_3</receiver>
+ <slot>setValue(int)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>315</x>
+ <y>187</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>349</x>
+ <y>50</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/doc/src/diagrams/gestures/pangesture.svg b/doc/src/diagrams/gestures/pangesture.svg
new file mode 100644
index 000000000..c5b95ca04
--- /dev/null
+++ b/doc/src/diagrams/gestures/pangesture.svg
@@ -0,0 +1,273 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448819"
+ height="1052.3622047"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="pangesture.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient3198">
+ <stop
+ style="stop-color:#c8c8e1;stop-opacity:1;"
+ offset="0"
+ id="stop3200" />
+ <stop
+ style="stop-color:#e0e0e0;stop-opacity:0;"
+ offset="1"
+ id="stop3202" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2473"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3198"
+ id="linearGradient3204"
+ x1="487.5"
+ y1="158.61218"
+ x2="487.5"
+ y2="171.11218"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-143.75,1.0517187e-5)" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2"
+ inkscape:cx="297.42699"
+ inkscape:cy="855.02875"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1184"
+ inkscape:window-height="668"
+ inkscape:window-x="152"
+ inkscape:window-y="228">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2383"
+ visible="true"
+ enabled="true"
+ units="pt"
+ spacingx="1pt"
+ spacingy="1pt" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3235"
+ width="275"
+ height="162.5"
+ x="137.5"
+ y="114.86218"
+ ry="25.253815"
+ rx="25.253815"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.5;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:5, 5;stroke-dashoffset:0;stroke-opacity:1"
+ id="path3167"
+ sodipodi:cx="137.5"
+ sodipodi:cy="164.86218"
+ sodipodi:rx="12.5"
+ sodipodi:ry="12.5"
+ d="M 150,164.86218 A 12.5,12.5 0 1 1 125,164.86218 A 12.5,12.5 0 1 1 150,164.86218 z"
+ transform="translate(62.5,18.75)"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#c90000;stroke-width:2.5;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path3169"
+ sodipodi:cx="137.5"
+ sodipodi:cy="164.86218"
+ sodipodi:rx="12.5"
+ sodipodi:ry="12.5"
+ d="M 150,164.86218 A 12.5,12.5 0 1 1 125,164.86218 A 12.5,12.5 0 1 1 150,164.86218 z"
+ transform="translate(206.25,18.75)"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:5.625, 5.625;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 200,183.61218 C 243.75,171.11218 300,171.11218 343.75,183.61218"
+ sodipodi:nodetypes="cc"
+ id="path12"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <g
+ id="g3214"
+ transform="translate(2.07835,-3.2783474)"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72">
+ <path
+ inkscape:export-ydpi="72"
+ inkscape:export-xdpi="72"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 316.67165,230.64053 C 318.73754,225.81328 330.55722,234.70496 337.5,236.73718 L 337.5,189.86218 C 337.5,180.48718 346.875,180.48718 346.875,189.86218 L 346.875,222.67468 L 346.875,208.61218 C 346.875,203.92468 356.25,203.92468 356.25,208.61218 L 356.25,222.67468 L 356.25,213.29968 C 356.25,208.61218 365.625,208.61218 365.625,213.29968 L 365.625,227.36218 L 365.625,217.98718 C 365.625,213.29968 375,213.29968 375,217.98718 L 375,264.86218 C 365.625,269.54968 346.875,269.54968 337.5,264.86218 L 337.5,250.79968 C 331.50558,243.39877 314.0625,236.73718 316.67165,230.64053 z"
+ id="path2480"
+ sodipodi:nodetypes="ccccccccccccccccc" />
+ <path
+ inkscape:export-ydpi="72"
+ inkscape:export-xdpi="72"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9375;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 345.62962,192.2547 C 345.62962,188.66774 345.62962,185.08078 342.1875,185.08078 C 338.7454,185.08078 338.7454,188.66774 338.7454,192.2547 C 338.7454,195.84166 345.62962,195.84166 345.62962,192.2547 z"
+ id="path2478"
+ sodipodi:nodetypes="cccc" />
+ </g>
+ <path
+ inkscape:export-ydpi="72"
+ inkscape:export-xdpi="72"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ id="path3218"
+ d="M 165.625,142.98718 L 175,133.61218 L 184.375,142.98718 L 165.625,142.98718 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ inkscape:export-ydpi="72"
+ inkscape:export-xdpi="72"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ sodipodi:nodetypes="cccc"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 193.75,139.86218 L 206.25,127.36218 L 218.75,139.86218 L 193.75,139.86218 z"
+ id="path3220" />
+ <path
+ style="fill:none;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 143.75,164.86218 L 175,133.61218 L 187.5,146.11218 L 206.25,127.36218 L 243.75,164.86218"
+ id="path3157"
+ sodipodi:nodetypes="ccccc"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ inkscape:export-ydpi="72"
+ inkscape:export-xdpi="72"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ id="path3222"
+ d="M 237.5,146.11218 L 243.75,139.86218 L 250,146.11218 L 237.5,146.11218 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:none;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 231.25,152.36218 L 243.75,139.86218 L 256.25,152.36218"
+ id="path3159"
+ sodipodi:nodetypes="ccc"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ sodipodi:nodetypes="cc"
+ id="path3186"
+ d="M 175,158.61218 L 187.5,146.11218"
+ style="fill:none;fill-opacity:0.75000000000000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ style="fill:url(#linearGradient3204);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 281.25,171.11218 L 318.75,133.61218 L 331.25,146.11218 L 350,127.36218 L 375,152.36218 L 387.5,139.86218 L 400,152.36218 L 400,171.11218"
+ id="path3196"
+ sodipodi:nodetypes="cccccccc"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d="M 309.375,142.98718 L 318.75,133.61218 L 328.125,142.98718 L 309.375,142.98718 z"
+ id="path3182"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ id="path3184"
+ d="M 337.5,139.86218 L 350,127.36218 L 362.5,139.86218 L 337.5,139.86218 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ sodipodi:nodetypes="cccc"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ sodipodi:nodetypes="cccc"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d="M 381.25,146.11218 L 387.5,139.86218 L 393.75,146.11218 L 381.25,146.11218 z"
+ id="path3188"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path3208"
+ d="M 287.5,164.86218 L 318.75,133.61218 L 331.25,146.11218 L 350,127.36218 L 387.5,164.86218"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ sodipodi:nodetypes="ccc"
+ id="path3210"
+ d="M 375,152.36218 L 387.5,139.86218 L 400,152.36218"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 318.75,158.61218 L 331.25,146.11218"
+ id="path3212"
+ sodipodi:nodetypes="cc"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ </g>
+</svg>
diff --git a/doc/src/diagrams/gestures/pinchgesture.svg b/doc/src/diagrams/gestures/pinchgesture.svg
new file mode 100644
index 000000000..1c520b9c0
--- /dev/null
+++ b/doc/src/diagrams/gestures/pinchgesture.svg
@@ -0,0 +1,341 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448819"
+ height="1052.3622047"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="pinchgesture.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2473"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective3362"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective3429"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective3639"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.979899"
+ inkscape:cx="299.95763"
+ inkscape:cy="879.65793"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1184"
+ inkscape:window-height="668"
+ inkscape:window-x="223"
+ inkscape:window-y="324">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2383"
+ visible="true"
+ enabled="true"
+ units="pt"
+ spacingx="1pt"
+ spacingy="1pt" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3235"
+ width="275"
+ height="162.5"
+ x="137.5"
+ y="114.86218"
+ ry="25.253815"
+ rx="25.253815"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <rect
+ ry="0"
+ rx="0"
+ y="127.36218"
+ x="168.75"
+ height="81.25"
+ width="212.5"
+ id="rect3839"
+ style="opacity:1;fill:#4040a0;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ style="fill:#008000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 168.75,158.61218 C 200,164.86218 243.75,164.86218 275,171.11218 C 293.75,164.86218 356.25,158.61218 381.25,158.61218 L 381.25,208.61218 L 256.25,208.61218 L 168.75,208.61218 L 168.75,158.61218 z"
+ id="path3845"
+ sodipodi:nodetypes="ccccccc"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <rect
+ style="opacity:1;fill:#404060;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.93750000000000000;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3328"
+ width="75"
+ height="56.25"
+ x="237.5"
+ y="139.86218"
+ rx="0"
+ ry="0"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ style="fill:#2f4f2f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 312.5,164.86218 C 306.25,158.61218 281.25,171.11218 262.5,164.86218 C 247.30507,158.35772 243.75,164.86218 237.5,171.11218 L 237.5,196.11218 L 312.5,196.11218 L 312.5,164.86218 z"
+ id="path3841"
+ sodipodi:nodetypes="cccccc"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#ffffff;fill-opacity:0.12437811;fill-rule:evenodd;stroke:#000000;stroke-width:2.50000000000000000;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:5, 5;stroke-dashoffset:0;stroke-opacity:1"
+ id="path3167"
+ sodipodi:cx="137.5"
+ sodipodi:cy="164.86218"
+ sodipodi:rx="12.5"
+ sodipodi:ry="12.5"
+ d="M 150,164.86218 A 12.5,12.5 0 1 1 125,164.86218 A 12.5,12.5 0 1 1 150,164.86218 z"
+ transform="translate(118.75,0)"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#ffffff;fill-opacity:0;fill-rule:evenodd;stroke:#c90000;stroke-width:2.50000000000000000;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path3169"
+ sodipodi:cx="137.5"
+ sodipodi:cy="164.86218"
+ sodipodi:rx="12.5"
+ sodipodi:ry="12.5"
+ d="M 150,164.86218 A 12.5,12.5 0 1 1 125,164.86218 A 12.5,12.5 0 1 1 150,164.86218 z"
+ transform="translate(225.5176,19.302421)"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ inkscape:export-ydpi="72"
+ inkscape:export-xdpi="72"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ transform="translate(50,-6.25)"
+ d="M 150,164.86218 A 12.5,12.5 0 1 1 125,164.86218 A 12.5,12.5 0 1 1 150,164.86218 z"
+ sodipodi:ry="12.5"
+ sodipodi:rx="12.5"
+ sodipodi:cy="164.86218"
+ sodipodi:cx="137.5"
+ id="path3649"
+ style="opacity:1;fill:#ffffff;fill-opacity:0;fill-rule:evenodd;stroke:#c90000;stroke-width:2.50000000000000000;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <g
+ id="g3641"
+ inkscape:label="Layer 1"
+ transform="matrix(-0.75,0,0,0.75,585.42164,37.937193)"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72">
+ <g
+ id="g3643">
+ <path
+ sodipodi:nodetypes="ccccccccccccccccc"
+ id="path3645"
+ d="M 497.22886,219.23332 C 499.98338,212.79698 515.74295,224.65256 525,227.36218 L 525,164.86218 C 525,152.36218 537.5,152.36218 537.5,164.86218 L 537.5,208.61218 L 537.5,189.86218 C 537.5,183.61218 550,183.61218 550,189.86218 L 550,208.61218 L 550,196.11218 C 550,189.86218 562.5,189.86218 562.5,196.11218 L 562.5,214.86218 L 562.5,202.36218 C 562.5,196.11218 575,196.11218 575,202.36218 L 575,264.86218 C 562.5,271.11218 537.5,271.11218 525,264.86218 L 525,246.11218 C 517.00744,236.2443 493.75,227.36218 497.22886,219.23332 z"
+ style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path3647"
+ d="M 535.83948,168.05221 C 535.83948,163.26959 535.83948,158.48698 531.25,158.48698 C 526.66052,158.48698 526.66052,163.26959 526.66052,168.05221 C 526.66052,172.83482 535.83948,172.83482 535.83948,168.05221 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:5.625, 5.625;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 187.5,158.61218 L 256.25,164.86218"
+ sodipodi:nodetypes="cc"
+ id="path12"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ inkscape:export-ydpi="72"
+ inkscape:export-xdpi="72"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ transform="translate(156.25,6.25)"
+ d="M 150,164.86218 A 12.5,12.5 0 1 1 125,164.86218 A 12.5,12.5 0 1 1 150,164.86218 z"
+ sodipodi:ry="12.5"
+ sodipodi:rx="12.5"
+ sodipodi:cy="164.86218"
+ sodipodi:cx="137.5"
+ id="path3659"
+ style="opacity:1;fill:#ffffff;fill-opacity:0.12437811;fill-rule:evenodd;stroke:#000000;stroke-width:2.50000000000000000;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:5, 5;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="arc" />
+ <path
+ inkscape:export-ydpi="72"
+ inkscape:export-xdpi="72"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ id="path3661"
+ sodipodi:nodetypes="cc"
+ d="M 293.75,171.11218 L 362.5,183.61218"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:5.625, 5.625;stroke-dashoffset:0;stroke-opacity:1" />
+ <g
+ id="g3431"
+ inkscape:label="Layer 1"
+ transform="matrix(0.7386058,0.1302361,-0.1302361,0.7386058,-8.1572814,-2.6927947)"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72">
+ <g
+ id="g3210">
+ <path
+ sodipodi:nodetypes="ccccccccccccccccc"
+ id="path3191"
+ d="M 497.22886,219.23332 C 499.98338,212.79698 515.74295,224.65256 525,227.36218 L 525,164.86218 C 525,152.36218 537.5,152.36218 537.5,164.86218 L 537.5,208.61218 L 537.5,189.86218 C 537.5,183.61218 550,183.61218 550,189.86218 L 550,208.61218 L 550,196.11218 C 550,189.86218 562.5,189.86218 562.5,196.11218 L 562.5,214.86218 L 562.5,202.36218 C 562.5,196.11218 575,196.11218 575,202.36218 L 575,264.86218 C 562.5,271.11218 537.5,271.11218 525,264.86218 L 525,246.11218 C 517.00744,236.2443 493.75,227.36218 497.22886,219.23332 z"
+ style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path3197"
+ d="M 535.83948,168.05221 C 535.83948,163.26959 535.83948,158.48698 531.25,158.48698 C 526.66052,158.48698 526.66052,163.26959 526.66052,168.05221 C 526.66052,172.83482 535.83948,172.83482 535.83948,168.05221 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 312.5,171.11218 L 356.25,171.11218"
+ id="path3847"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ style="fill:#c44060;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 362.5,171.11218 L 362.5,139.86218 L 312.5,139.86218 L 312.5,171.11218 L 362.5,171.11218 z"
+ id="path3849"
+ sodipodi:nodetypes="cccc"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 368.75,139.86218 L 356.25,127.36218 L 318.75,127.36218 L 306.25,139.86218 L 368.75,139.86218 z"
+ id="path3853"
+ sodipodi:nodetypes="ccccc"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path3855"
+ d="M 331.25,158.61218 L 331.25,146.11218 L 318.75,146.11218 L 318.75,158.61218 L 331.25,158.61218 z"
+ style="fill:#5b77ff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ style="fill:#c0cb54;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 356.25,171.11218 L 356.25,146.11218 L 343.75,146.11218 L 343.75,171.11218 L 356.25,171.11218 z"
+ id="path3857"
+ sodipodi:nodetypes="ccccc"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ id="path3868"
+ d="M 282.8125,167.98719 L 293.75,167.98719"
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.25px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path3870"
+ d="M 295.3125,167.98719 L 295.3125,160.17469 L 282.8125,160.17469 L 282.8125,167.98719 L 295.3125,167.98719 z"
+ style="fill:#681e2f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.25000000000000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path3872"
+ d="M 296.875,160.17469 L 293.75,157.04969 L 284.375,157.04969 L 281.25,160.17469 L 296.875,160.17469 z"
+ style="fill:#6e6c6c;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.25000000000000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ style="fill:#2f3e85;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.31250000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 287.5,164.86219 L 287.5,161.73719 L 284.375,161.73719 L 284.375,164.86219 L 287.5,164.86219 z"
+ id="path3874"
+ sodipodi:nodetypes="cccc"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ sodipodi:nodetypes="ccccc"
+ id="path3876"
+ d="M 293.75,167.98719 L 293.75,161.73719 L 290.625,161.73719 L 290.625,167.98719 L 293.75,167.98719 z"
+ style="fill:#65692a;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.31250000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pinchgesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ </g>
+</svg>
diff --git a/doc/src/diagrams/gestures/swipegesture-details.svg b/doc/src/diagrams/gestures/swipegesture-details.svg
new file mode 100644
index 000000000..0f7de5b48
--- /dev/null
+++ b/doc/src/diagrams/gestures/swipegesture-details.svg
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448819"
+ height="1052.3622047"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="swipegesture-details.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2473"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective3362"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective3429"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.4"
+ inkscape:cx="321.9787"
+ inkscape:cy="855.02875"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1184"
+ inkscape:window-height="668"
+ inkscape:window-x="152"
+ inkscape:window-y="228">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2383"
+ visible="true"
+ enabled="true"
+ units="pt"
+ spacingx="1pt"
+ spacingy="1pt" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3235"
+ width="275"
+ height="162.5"
+ x="137.5"
+ y="114.86218"
+ ry="25.253815"
+ rx="25.253815"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.5;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:5, 5;stroke-dashoffset:0;stroke-opacity:1"
+ id="path3167"
+ sodipodi:cx="137.5"
+ sodipodi:cy="164.86218"
+ sodipodi:rx="12.5"
+ sodipodi:ry="12.5"
+ d="M 150,164.86218 A 12.5,12.5 0 1 1 125,164.86218 A 12.5,12.5 0 1 1 150,164.86218 z"
+ transform="translate(43.75,-25)"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#c90000;stroke-width:2.5;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path3169"
+ sodipodi:cx="137.5"
+ sodipodi:cy="164.86218"
+ sodipodi:rx="12.5"
+ sodipodi:ry="12.5"
+ d="M 150,164.86218 A 12.5,12.5 0 1 1 125,164.86218 A 12.5,12.5 0 1 1 150,164.86218 z"
+ transform="translate(218.75,18.75)"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:5.625, 5.625;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 181.25,139.86218 L 356.25,183.61218"
+ sodipodi:nodetypes="cc"
+ id="path12"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <g
+ id="g3431"
+ inkscape:label="Layer 1"
+ transform="matrix(0.7386058,0.1302361,-0.1302361,0.7386058,-15.203718,-5.6523172)">
+ <g
+ id="g3210">
+ <path
+ sodipodi:nodetypes="ccccccccccccccccc"
+ id="path3191"
+ d="M 497.22886,219.23332 C 499.98338,212.79698 515.74295,224.65256 525,227.36218 L 525,164.86218 C 525,152.36218 537.5,152.36218 537.5,164.86218 L 537.5,208.61218 L 537.5,189.86218 C 537.5,183.61218 550,183.61218 550,189.86218 L 550,208.61218 L 550,196.11218 C 550,189.86218 562.5,189.86218 562.5,196.11218 L 562.5,214.86218 L 562.5,202.36218 C 562.5,196.11218 575,196.11218 575,202.36218 L 575,264.86218 C 562.5,271.11218 537.5,271.11218 525,264.86218 L 525,246.11218 C 517.00744,236.2443 493.75,227.36218 497.22886,219.23332 z"
+ style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path3197"
+ d="M 535.83948,168.05221 C 535.83948,163.26959 535.83948,158.48698 531.25,158.48698 C 526.66052,158.48698 526.66052,163.26959 526.66052,168.05221 C 526.66052,172.83482 535.83948,172.83482 535.83948,168.05221 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 181.25,139.86218 L 356.25,139.86218"
+ id="path3436"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 287.5,139.86218 C 287.5,146.11218 287.5,158.61218 281.25,164.86218"
+ id="path3438"
+ sodipodi:nodetypes="cc" />
+ </g>
+</svg>
diff --git a/doc/src/diagrams/gestures/swipegesture.svg b/doc/src/diagrams/gestures/swipegesture.svg
new file mode 100644
index 000000000..fc60a4db2
--- /dev/null
+++ b/doc/src/diagrams/gestures/swipegesture.svg
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448819"
+ height="1052.3622047"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docname="swipegesture.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2473"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective3362"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective3429"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.4"
+ inkscape:cx="321.9787"
+ inkscape:cy="855.02875"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1184"
+ inkscape:window-height="668"
+ inkscape:window-x="152"
+ inkscape:window-y="228">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2383"
+ visible="true"
+ enabled="true"
+ units="pt"
+ spacingx="1pt"
+ spacingy="1pt" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3235"
+ width="275"
+ height="162.5"
+ x="137.5"
+ y="114.86218"
+ ry="25.253815"
+ rx="25.253815"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.5;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:5, 5;stroke-dashoffset:0;stroke-opacity:1"
+ id="path3167"
+ sodipodi:cx="137.5"
+ sodipodi:cy="164.86218"
+ sodipodi:rx="12.5"
+ sodipodi:ry="12.5"
+ d="M 150,164.86218 A 12.5,12.5 0 1 1 125,164.86218 A 12.5,12.5 0 1 1 150,164.86218 z"
+ transform="translate(43.75,-25)"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#c90000;stroke-width:2.5;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path3169"
+ sodipodi:cx="137.5"
+ sodipodi:cy="164.86218"
+ sodipodi:rx="12.5"
+ sodipodi:ry="12.5"
+ d="M 150,164.86218 A 12.5,12.5 0 1 1 125,164.86218 A 12.5,12.5 0 1 1 150,164.86218 z"
+ transform="translate(218.75,18.75)"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <path
+ style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:5.625, 5.625;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 181.25,139.86218 L 356.25,183.61218"
+ sodipodi:nodetypes="cc"
+ id="path12"
+ inkscape:export-filename="/home/dboddie/git/qt/doc/src/images/pangesture.png"
+ inkscape:export-xdpi="72"
+ inkscape:export-ydpi="72" />
+ <g
+ id="g3431"
+ inkscape:label="Layer 1"
+ transform="matrix(0.7386058,0.1302361,-0.1302361,0.7386058,-15.203718,-5.6523172)">
+ <g
+ id="g3210">
+ <path
+ sodipodi:nodetypes="ccccccccccccccccc"
+ id="path3191"
+ d="M 497.22886,219.23332 C 499.98338,212.79698 515.74295,224.65256 525,227.36218 L 525,164.86218 C 525,152.36218 537.5,152.36218 537.5,164.86218 L 537.5,208.61218 L 537.5,189.86218 C 537.5,183.61218 550,183.61218 550,189.86218 L 550,208.61218 L 550,196.11218 C 550,189.86218 562.5,189.86218 562.5,196.11218 L 562.5,214.86218 L 562.5,202.36218 C 562.5,196.11218 575,196.11218 575,202.36218 L 575,264.86218 C 562.5,271.11218 537.5,271.11218 525,264.86218 L 525,246.11218 C 517.00744,236.2443 493.75,227.36218 497.22886,219.23332 z"
+ style="fill:#e0e0e0;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ sodipodi:nodetypes="cccc"
+ id="path3197"
+ d="M 535.83948,168.05221 C 535.83948,163.26959 535.83948,158.48698 531.25,158.48698 C 526.66052,158.48698 526.66052,163.26959 526.66052,168.05221 C 526.66052,172.83482 535.83948,172.83482 535.83948,168.05221 z"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/doc/src/diagrams/programs/easingcurve/main.cpp b/doc/src/diagrams/programs/easingcurve/main.cpp
index a20f142bb..0b583e7f4 100644
--- a/doc/src/diagrams/programs/easingcurve/main.cpp
+++ b/doc/src/diagrams/programs/easingcurve/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the examples of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/diagrams/programs/mdiarea.py b/doc/src/diagrams/programs/mdiarea.py
index c78659f2e..491e3154f 100644
--- a/doc/src/diagrams/programs/mdiarea.py
+++ b/doc/src/diagrams/programs/mdiarea.py
@@ -1,4 +1,44 @@
#!/usr/bin/env python
+#############################################################################
+##
+## Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+## All rights reserved.
+## Contact: Nokia Corporation (qt-info@nokia.com)
+##
+## This file is part of the 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$
+##
+#############################################################################
import sys
from PyQt4.QtCore import SIGNAL
diff --git a/doc/src/diagrams/programs/qpen-dashpattern.py b/doc/src/diagrams/programs/qpen-dashpattern.py
index 095d51f78..7535f486f 100644
--- a/doc/src/diagrams/programs/qpen-dashpattern.py
+++ b/doc/src/diagrams/programs/qpen-dashpattern.py
@@ -1,4 +1,44 @@
#!/usr/bin/env python
+#############################################################################
+##
+## Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+## All rights reserved.
+## Contact: Nokia Corporation (qt-info@nokia.com)
+##
+## This file is part of the 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$
+##
+#############################################################################
import sys
from PyQt4.QtCore import *
diff --git a/doc/src/diagrams/programs/standard_views.py b/doc/src/diagrams/programs/standard_views.py
new file mode 100644
index 000000000..55813875f
--- /dev/null
+++ b/doc/src/diagrams/programs/standard_views.py
@@ -0,0 +1,82 @@
+#!/usr/bin/env python
+#############################################################################
+##
+## Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+## All rights reserved.
+## Contact: Nokia Corporation (qt-info@nokia.com)
+##
+## This file is part of the 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$
+##
+#############################################################################
+
+import sys
+from PyQt4.QtCore import QDir, Qt
+from PyQt4.QtGui import *
+
+app = QApplication(sys.argv)
+
+background = QWidget()
+palette = QPalette()
+palette.setColor(QPalette.Window, QColor(Qt.white))
+background.setPalette(palette)
+
+model = QFileSystemModel()
+model.setRootPath(QDir.currentPath())
+
+treeView = QTreeView(background)
+treeView.setModel(model)
+treeView.setRootIndex(model.index(QDir.currentPath()))
+
+listView = QListView(background)
+listView.setModel(model)
+listView.setRootIndex(model.index(QDir.currentPath()))
+
+tableView = QTableView(background)
+tableView.setModel(model)
+tableView.setRootIndex(model.index(QDir.currentPath()))
+
+selection = QItemSelectionModel(model)
+treeView.setSelectionModel(selection)
+listView.setSelectionModel(selection)
+tableView.setSelectionModel(selection)
+
+layout = QHBoxLayout(background)
+layout.addWidget(listView)
+layout.addSpacing(24)
+layout.addWidget(treeView, 1)
+layout.addSpacing(24)
+layout.addWidget(tableView)
+background.show()
+
+sys.exit(app.exec_())
diff --git a/doc/src/diagrams/qt-embedded-architecture.sk b/doc/src/diagrams/qt-embedded-architecture.sk
new file mode 100644
index 000000000..1aba03b8a
--- /dev/null
+++ b/doc/src/diagrams/qt-embedded-architecture.sk
@@ -0,0 +1,402 @@
+##Sketch 1 2
+document()
+layout('A4',0)
+layer('Layer 1',1,1,0,0,(0,0,0))
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(284.808,72.5,0)
+bs(282.5,72.5,0)
+bs(282.5,77.5,0)
+bs(287.5,77.5,0)
+bs(287.5,72.5,0)
+bs(284.808,72.5,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(12.308,72.5,0)
+bs(10,72.5,0)
+bs(10,77.5,0)
+bs(15,77.5,0)
+bs(15,72.5,0)
+bs(12.308,72.5,0)
+gl([(0,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgl(0,-1,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(148.669,72.5,0)
+bs(12.5,72.5,0)
+bs(12.5,75,0)
+bs(285,75,0)
+bs(285,72.5,0)
+bs(148.669,72.5,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(94.808,32.5,0)
+bs(92.5,32.5,0)
+bs(92.5,37.5,0)
+bs(97.5,37.5,0)
+bs(97.5,32.5,0)
+bs(94.808,32.5,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(284.808,32.5,0)
+bs(282.5,32.5,0)
+bs(282.5,37.5,0)
+bs(287.5,37.5,0)
+bs(287.5,32.5,0)
+bs(284.808,32.5,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(284.808,112.5,0)
+bs(282.5,112.5,0)
+bs(282.5,117.5,0)
+bs(287.5,117.5,0)
+bs(287.5,112.5,0)
+bs(284.808,112.5,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(12.308,32.5,0)
+bs(10,32.5,0)
+bs(10,37.5,0)
+bs(15,37.5,0)
+bs(15,32.5,0)
+bs(12.308,32.5,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(202.308,32.5,0)
+bs(200,32.5,0)
+bs(200,37.5,0)
+bs(205,37.5,0)
+bs(205,32.5,0)
+bs(202.308,32.5,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(12.308,112.5,0)
+bs(10,112.5,0)
+bs(10,117.5,0)
+bs(15,117.5,0)
+bs(15,112.5,0)
+bs(12.308,112.5,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(94.808,60,0)
+bs(92.5,60,0)
+bs(92.5,65,0)
+bs(97.5,65,0)
+bs(97.5,60,0)
+bs(94.808,60,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(284.808,60,0)
+bs(282.5,60,0)
+bs(282.5,65,0)
+bs(287.5,65,0)
+bs(287.5,60,0)
+bs(284.808,60,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(284.808,150,0)
+bs(282.5,150,0)
+bs(282.5,155,0)
+bs(287.5,155,0)
+bs(287.5,150,0)
+bs(284.808,150,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(284.808,100,0)
+bs(282.5,100,0)
+bs(282.5,105,0)
+bs(287.5,105,0)
+bs(287.5,100,0)
+bs(284.808,100,0)
+gl([(0,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgl(0,-1,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(53.7255,32.5,0)
+bs(12.5,32.5,0)
+bs(12.5,35,0)
+bs(95,35,0)
+bs(95,32.5,0)
+bs(53.7255,32.5,0)
+gl([(0,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgl(0,-1,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(243.725,32.5,0)
+bs(202.5,32.5,0)
+bs(202.5,35,0)
+bs(285,35,0)
+bs(285,32.5,0)
+bs(243.725,32.5,0)
+gl([(0,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgl(0,-1,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(148.669,112.5,0)
+bs(12.5,112.5,0)
+bs(12.5,115,0)
+bs(285,115,0)
+bs(285,112.5,0)
+bs(148.669,112.5,0)
+gl([(0,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgl(1,0,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(96.249,35,0)
+bs(95,35,0)
+bs(95,62.5,0)
+bs(97.5,62.5,0)
+bs(97.5,35,0)
+bs(96.249,35,0)
+gl([(0,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgl(1,0,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(286.249,35,0)
+bs(285,35,0)
+bs(285,62.5,0)
+bs(287.5,62.5,0)
+bs(287.5,35,0)
+bs(286.249,35,0)
+gl([(0,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgl(1,0,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(286.249,115,0)
+bs(285,115,0)
+bs(285,152.5,0)
+bs(287.5,152.5,0)
+bs(287.5,115,0)
+bs(286.249,115,0)
+gl([(0,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgl(1,0,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(286.249,75,0)
+bs(285,75,0)
+bs(285,102.5,0)
+bs(287.5,102.5,0)
+bs(287.5,75,0)
+bs(286.249,75,0)
+gl([(0,(0.13,0.255,0.167)),(1,(0.165,0.362,0.168))])
+pgl(0,-1,0)
+fp()
+r(85,0,0,-30,10,65)
+gl([(0,(0.542,0.544,0.197)),(1,(0.855,0.859,0.231))])
+pgl(0,-1,0)
+fp()
+r(85,0,0,-30,200,65)
+fp((1,1,1))
+b()
+bs(10,135,0)
+bs(285,135,0)
+bs(285,155,0)
+bs(10,155,0)
+bs(10,135,0)
+bC()
+fp((0.8,0.8,0.8))
+b()
+bs(10,115,0)
+bs(285,115,0)
+bs(285,135,0)
+bs(10,135,0)
+bs(10,115,0)
+bC()
+fp((0.651,0.808,0.224))
+b()
+bs(10,75,0)
+bs(285,75,0)
+bs(285,105,0)
+bs(10,105,0)
+bs(10,75,0)
+bC()
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt('Application Source Code',(81.47,141.384))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt('Qt API',(129.824,121.384))
+fp((1,1,1))
+le()
+lw(1)
+Fn('Helvetica')
+txt('Linux',(38.16,46.384))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt('S60',(231.826,46.384))
+fp((1,1,1))
+Fn('Helvetica')
+txt('Qt for Embedded Platforms',(74.804,85.126))
+G()
+G()
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(189.808,32.5,0)
+bs(187.5,32.5,0)
+bs(187.5,37.5,0)
+bs(192.5,37.5,0)
+bs(192.5,32.5,0)
+bs(189.808,32.5,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(189.808,60,0)
+bs(187.5,60,0)
+bs(187.5,65,0)
+bs(192.5,65,0)
+bs(192.5,60,0)
+bs(189.808,60,0)
+gl([(0,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgl(1,0,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(191.249,35,0)
+bs(190,35,0)
+bs(190,62.5,0)
+bs(192.5,62.5,0)
+bs(192.5,35,0)
+bs(191.249,35,0)
+G_()
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(107.308,32.5,0)
+bs(105,32.5,0)
+bs(105,37.5,0)
+bs(110,37.5,0)
+bs(110,32.5,0)
+bs(107.308,32.5,0)
+gl([(0,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgl(0,-1,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(148.725,32.5,0)
+bs(107.5,32.5,0)
+bs(107.5,35,0)
+bs(190,35,0)
+bs(190,32.5,0)
+bs(148.725,32.5,0)
+gl([(0,(0.384,0.491,0.805)),(1,(0.617,0.746,1))])
+pgl(0,-1,0)
+fp()
+r(85,0,0,-30,105,65)
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt('Windows CE',(113.162,46.384))
+G_()
+le()
+lw(1)
+r(277.5,0,0,-125,10,155)
+guidelayer('Guide Lines',1,0,0,1,(0,0,1))
+grid((0,0,2.5,2.5),1,(0,0,1),'Grid')
diff --git a/doc/src/diagrams/qtopiacore/home-screen.png b/doc/src/diagrams/qtopiacore/home-screen.png
new file mode 100644
index 000000000..400c4483c
--- /dev/null
+++ b/doc/src/diagrams/qtopiacore/home-screen.png
Binary files differ
diff --git a/doc/src/diagrams/qtopiacore/qt-embedded-linux-architecture.sk b/doc/src/diagrams/qtopiacore/qt-embedded-linux-architecture.sk
new file mode 100644
index 000000000..3c00b17ab
--- /dev/null
+++ b/doc/src/diagrams/qtopiacore/qt-embedded-linux-architecture.sk
@@ -0,0 +1,303 @@
+##Sketch 1 2
+document()
+layout('A4',0)
+layer('Layer 1',1,1,0,0,(0,0,0))
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(284.808,72.5,0)
+bs(282.5,72.5,0)
+bs(282.5,77.5,0)
+bs(287.5,77.5,0)
+bs(287.5,72.5,0)
+bs(284.808,72.5,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(12.308,72.5,0)
+bs(10,72.5,0)
+bs(10,77.5,0)
+bs(15,77.5,0)
+bs(15,72.5,0)
+bs(12.308,72.5,0)
+gl([(0,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgl(0,-1,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(148.669,72.5,0)
+bs(12.5,72.5,0)
+bs(12.5,75,0)
+bs(285,75,0)
+bs(285,72.5,0)
+bs(148.669,72.5,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(284.808,32.5,0)
+bs(282.5,32.5,0)
+bs(282.5,37.5,0)
+bs(287.5,37.5,0)
+bs(287.5,32.5,0)
+bs(284.808,32.5,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(284.808,112.5,0)
+bs(282.5,112.5,0)
+bs(282.5,117.5,0)
+bs(287.5,117.5,0)
+bs(287.5,112.5,0)
+bs(284.808,112.5,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(12.308,32.5,0)
+bs(10,32.5,0)
+bs(10,37.5,0)
+bs(15,37.5,0)
+bs(15,32.5,0)
+bs(12.308,32.5,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(12.308,112.5,0)
+bs(10,112.5,0)
+bs(10,117.5,0)
+bs(15,117.5,0)
+bs(15,112.5,0)
+bs(12.308,112.5,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(284.808,60,0)
+bs(282.5,60,0)
+bs(282.5,65,0)
+bs(287.5,65,0)
+bs(287.5,60,0)
+bs(284.808,60,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(284.808,150,0)
+bs(282.5,150,0)
+bs(282.5,155,0)
+bs(287.5,155,0)
+bs(287.5,150,0)
+bs(284.808,150,0)
+gl([(0,(1,1,1)),(0.29,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgr(0.5,0.5,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(284.808,100,0)
+bs(282.5,100,0)
+bs(282.5,105,0)
+bs(287.5,105,0)
+bs(287.5,100,0)
+bs(284.808,100,0)
+gl([(0,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgl(0,-1,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(148.669,32.5,0)
+bs(12.5,32.5,0)
+bs(12.5,35,0)
+bs(285,35,0)
+bs(285,32.5,0)
+bs(148.669,32.5,0)
+gl([(0,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgl(0,-1,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(148.669,112.5,0)
+bs(12.5,112.5,0)
+bs(12.5,115,0)
+bs(285,115,0)
+bs(285,112.5,0)
+bs(148.669,112.5,0)
+gl([(0,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgl(1,0,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(286.249,35,0)
+bs(285,35,0)
+bs(285,62.5,0)
+bs(287.5,62.5,0)
+bs(287.5,35,0)
+bs(286.249,35,0)
+gl([(0,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgl(1,0,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(286.249,115,0)
+bs(285,115,0)
+bs(285,152.5,0)
+bs(287.5,152.5,0)
+bs(287.5,115,0)
+bs(286.249,115,0)
+gl([(0,(1,1,1)),(1,(0.396,0.396,0.396))])
+pgl(1,0,0)
+fp()
+le()
+lw(1)
+lj(1)
+b()
+bs(286.249,75,0)
+bs(285,75,0)
+bs(285,102.5,0)
+bs(287.5,102.5,0)
+bs(287.5,75,0)
+bs(286.249,75,0)
+gl([(0,(0,0,0)),(1,(0.362,0.362,0.362))])
+pgl(0,-1,0)
+fp()
+r(275,0,0,-30,10,65)
+fp((1,1,1))
+b()
+bs(10,135,0)
+bs(285,135,0)
+bs(285,155,0)
+bs(10,155,0)
+bs(10,135,0)
+bC()
+fp((0.8,0.8,0.8))
+b()
+bs(10,115,0)
+bs(285,115,0)
+bs(285,135,0)
+bs(10,135,0)
+bs(10,115,0)
+bC()
+fp((0.651,0.808,0.224))
+b()
+bs(10,75,0)
+bs(285,75,0)
+bs(285,105,0)
+bs(10,105,0)
+bs(10,75,0)
+bC()
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt('Application Source Code',(81.47,141.384))
+fp((0,0,0))
+le()
+lw(1)
+Fn('Helvetica')
+txt('Qt API',(129.824,121.384))
+gl([(0,(0.248,0.248,0.248)),(1,(0.362,0.362,0.362))])
+pgl(0,-1,0)
+fp()
+le()
+lw(0.5)
+b()
+bs(105,40,0)
+bs(115,60,0)
+bs(200,60,0)
+bs(190,40,0)
+bs(105,40,0)
+bC()
+fp((0.788,0.13,0.13))
+le()
+lw(0.5)
+b()
+bs(190,40,0)
+bs(200,60,0)
+bs(280,60,0)
+bs(280,40,0)
+bs(190,40,0)
+bC()
+fp((1,1,1))
+le()
+lw(1)
+Fn('Helvetica')
+txt('Framebuffer',(120,46.384))
+gl([(0,(0.248,0.248,0.248)),(1,(0.362,0.362,0.362))])
+pgl(0,-1,0)
+fp()
+le()
+lw(0.5)
+b()
+bs(15,40,0)
+bs(15,60,0)
+bs(110,60,0)
+bs(99.4444,40,0)
+bs(15,40,0)
+bC()
+fp((1,1,1))
+le()
+lw(1)
+Fn('Helvetica')
+txt('Linux Kernel',(25,46.384))
+G()
+fp((1,1,1))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(8)
+txt('Accelerated',(217.76,51.756))
+fp((1,1,1))
+le()
+lw(1)
+Fn('Helvetica')
+Fs(8)
+txt('Graphics',(222.876,42.6))
+G_()
+fp((1,1,1))
+Fn('Helvetica')
+txt('Qt for Embedded Linux',(85.802,86.934))
+le()
+lw(1)
+r(280,0,0,-125,7.5,157.5)
+guidelayer('Guide Lines',1,0,0,1,(0,0,1))
+grid((0,0,2.5,2.5),1,(0,0,1),'Grid')
diff --git a/doc/src/diagrams/webkit-domtraversal.png b/doc/src/diagrams/webkit-domtraversal.png
new file mode 100644
index 000000000..5cd6d1ff7
--- /dev/null
+++ b/doc/src/diagrams/webkit-domtraversal.png
Binary files differ
diff --git a/doc/src/diagrams/webkit-simpleselector.png b/doc/src/diagrams/webkit-simpleselector.png
new file mode 100644
index 000000000..e442f977f
--- /dev/null
+++ b/doc/src/diagrams/webkit-simpleselector.png
Binary files differ
diff --git a/doc/src/distributingqt.qdoc b/doc/src/distributingqt.qdoc
deleted file mode 100644
index 073997664..000000000
--- a/doc/src/distributingqt.qdoc
+++ /dev/null
@@ -1,154 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Documentation on deploying Qt.
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
-/*
-\page distributingqt.html
-
-\title Deploying Qt Applications
-
-This document lists the platform-specific files needed to distribute
-Qt applications. We do not include any compiler-specific files that
-may also be required. (See also, \link winsystem.html Window
-System-specific Notes\endlink.)
-
-\tableofcontents
-
-Also see the "deployment" articles in
-\e{\link http://qt.nokia.com/doc/qq/ Qt Quarterly\endlink}:
-\list
-\i \link http://qt.nokia.com/doc/qq/qq09-mac-deployment.html
-Deploying Applications on Mac OS X\endlink
-\i \link http://qt.nokia.com/doc/qq/qq10-windows-deployment.html
-Deploying Applications on Windows\endlink
-\i \link http://qt.nokia.com/doc/qq/qq11-unix-deployment.html
-Deploying Applications on X11\endlink
-\endlist
-
-\section1 Static Qt Applications
-
-To distribute static Qt applications, you need the following file for
-all platforms:
-
-\list
-\i your application's executable
-\endlist
-
-\section1 Dynamic Qt Applications
-
-To distribute dynamic Qt applications, you will need the following
-files for all platforms:
-
-\list
-\i application executable
-\i the Qt library
-\endlist
-
-The Qt library must either be in the same directory as the application
-executable or in a directory which is included in the system library
-path.
-
-The library is provided by the following platform specific files:
-
-\table
-\header \i Platform \i File
-\row \i Windows \i \c qt[version].dll
-\row \i Unix/Linux \i \c libqt[version].so
-\row \i Mac \i \c libqt[version].dylib
-\endtable
-
-\e version includes the three version numbers.
-
-\section2 Distributing Plugins
-
-You must include any plugin files required by the application.
-
-Plugins must be put into a subdirectory under a directory known to
-Qt as a plugin directory. The subdirectory must have the name of the
-plugin category (e.g. \c styles, \c sqldrivers, \c designer, etc.).
-
-Qt searches in the following directories for plugin categories:
-
-\list
-\i Application specific plugin paths
-\i Build-directory of Qt
-\i The application directory
-\endlist
-
-Application specific plugin paths can be added using
-QCoreApplication::addLibraryPath(). The build-directory of Qt is hardcoded
-in the Qt library and can be changed as a part of the installation
-process.
-
-\section1 Dynamic Dialogs
-
-For dynamic dialogs if you use QWidgetFactory, you need the following
-files for all platforms:
-
-\list
-\i The same files as used for dynamic Qt applications
-\i The QUI Library
-\endlist
-
-The QUI library is provided by the following platform specific files:
-\table
-\header \i Platform \i File
-\row \i Windows \i\c qui.lib
-\row \i Unix/Linux \i\c libqui.so
-\row \i Mac \i \c libqui.dylib
-\endtable
-
-The QUI library must either be in the same directory as the
-application executable or in a directory which is included in the
-system library path.
-
-*/
diff --git a/doc/src/dnd.qdoc b/doc/src/dnd.qdoc
deleted file mode 100644
index 661c62167..000000000
--- a/doc/src/dnd.qdoc
+++ /dev/null
@@ -1,546 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page dnd.html
- \title Drag and Drop
- \ingroup architecture
- \brief An overview of the drag and drop system provided by Qt.
-
- Drag and drop provides a simple visual mechanism which users can use
- to transfer information between and within applications. (In the
- literature this is referred to as a "direct manipulation model".) Drag
- and drop is similar in function to the clipboard's cut and paste
- mechanism.
-
- \tableofcontents
-
- This document describes the basic drag and drop mechanism and
- outlines the approach used to enable it in custom widgets. Drag
- and drop operations are also supported by Qt's item views and by
- the graphics view framework; more information is available in the
- \l{Using Drag and Drop with Item Views} and \l{The Graphics View
- Framework} documents.
-
- \section1 Configuration
-
- The QApplication object provides some properties that are related
- to drag and drop operations:
-
- \list
- \i \l{QApplication::startDragTime} describes the amount of time in
- milliseconds that the user must hold down a mouse button over an
- object before a drag will begin.
- \i \l{QApplication::startDragDistance} indicates how far the user has to
- move the mouse while holding down a mouse button before the movement
- will be interpreted as dragging. Use of high values for this quantity
- prevents accidental dragging when the user only meant to click on an
- object.
- \endlist
-
- These quantities provide sensible default values for you to use if you
- provide drag and drop support in your widgets.
-
- \section1 Dragging
-
- To start a drag, create a QDrag object, and call its
- exec() function. In most applications, it is a good idea to begin a drag
- and drop operation only after a mouse button has been pressed and the
- cursor has been moved a certain distance. However, the simplest way to
- enable dragging from a widget is to reimplement the widget's
- \l{QWidget::mousePressEvent()}{mousePressEvent()} and start a drag
- and drop operation:
-
- \snippet doc/src/snippets/dragging/mainwindow.cpp 0
- \dots 8
- \snippet doc/src/snippets/dragging/mainwindow.cpp 2
-
- Although the user may take some time to complete the dragging operation,
- as far as the application is concerned the exec() function is a blocking
- function that returns with \l{Qt::DropActions}{one of several values}.
- These indicate how the operation ended, and are described in more detail
- below.
-
- Note that the exec() function does not block the main event loop.
-
- For widgets that need to distinguish between mouse clicks and drags, it
- is useful to reimplement the widget's
- \l{QWidget::mousePressEvent()}{mousePressEvent()} function to record to
- start position of the drag:
-
- \snippet doc/src/snippets/draganddrop/dragwidget.cpp 6
-
- Later, in \l{QWidget::mouseMoveEvent()}{mouseMoveEvent()}, we can determine
- whether a drag should begin, and construct a drag object to handle the
- operation:
-
- \snippet doc/src/snippets/draganddrop/dragwidget.cpp 7
- \dots
- \snippet doc/src/snippets/draganddrop/dragwidget.cpp 8
-
- This particular approach uses the \l QPoint::manhattanLength() function
- to get a rough estimate of the distance between where the mouse click
- occurred and the current cursor position. This function trades accuracy
- for speed, and is usually suitable for this purpose.
-
- \section1 Dropping
-
- To be able to receive media dropped on a widget, call
- \l{QWidget::setAcceptDrops()}{setAcceptDrops(true)} for the widget,
- and reimplement the \l{QWidget::dragEnterEvent()}{dragEnterEvent()} and
- \l{QWidget::dropEvent()}{dropEvent()} event handler functions.
-
- For example, the following code enables drop events in the constructor of
- a QWidget subclass, making it possible to usefully implement drop event
- handlers:
-
- \snippet doc/src/snippets/dropevents/window.cpp 0
- \dots
- \snippet doc/src/snippets/dropevents/window.cpp 1
- \snippet doc/src/snippets/dropevents/window.cpp 2
-
- The dragEnterEvent() function is typically used to inform Qt about the
- types of data that the widget accepts.
- You must reimplement this function if you want to receive either
- QDragMoveEvent or QDropEvent in your reimplementations of
- \l{QWidget::dragMoveEvent()}{dragMoveEvent()} and
- \l{QWidget::dropEvent()}{dropEvent()}.
-
- The following code shows how \l{QWidget::dragEnterEvent()}{dragEnterEvent()}
- can be reimplemented to
- tell the drag and drop system that we can only handle plain text:
-
- \snippet doc/src/snippets/dropevents/window.cpp 3
-
- The \l{QWidget::dropEvent()}{dropEvent()} is used to unpack dropped data
- and handle it in way that is suitable for your application.
-
- In the following code, the text supplied in the event is passed to a
- QTextBrowser and a QComboBox is filled with the list of MIME types that
- are used to describe the data:
-
- \snippet doc/src/snippets/dropevents/window.cpp 4
-
- In this case, we accept the proposed action without checking what it is.
- In a real world application, it may be necessary to return from the
- \l{QWidget::dropEvent()}{dropEvent()} function without accepting the
- proposed action or handling
- the data if the action is not relevant. For example, we may choose to
- ignore Qt::LinkAction actions if we do not support
- links to external sources in our application.
-
- \section2 Overriding Proposed Actions
-
- We may also ignore the proposed action, and perform some other action on
- the data. To do this, we would call the event object's
- \l{QDropEvent::setDropAction()}{setDropAction()} with the preferred
- action from Qt::DropAction before calling \l{QEvent::}{accept()}.
- This ensures that the replacement drop action is used instead of the
- proposed action.
-
- For more sophisticated applications, reimplementing
- \l{QWidget::dragMoveEvent()}{dragMoveEvent()} and
- \l{QWidget::dragLeaveEvent()}{dragLeaveEvent()} will let you make
- certain parts of your widgets sensitive to drop events, and give you more
- control over drag and drop in your application.
-
- \section2 Subclassing Complex Widgets
-
- Certain standard Qt widgets provide their own support for drag and drop.
- When subclassing these widgets, it may be necessary to reimplement
- \l{QWidget::dragMoveEvent()}{dragMoveEvent()} in addition to
- \l{QWidget::dragEnterEvent()}{dragEnterEvent()} and
- \l{QWidget::dropEvent()}{dropEvent()} to prevent the base class from
- providing default drag and drop handling, and to handle any special
- cases you are interested in.
-
- \section1 Drag and Drop Actions
-
- In the simplest case, the target of a drag and drop action receives a
- copy of the data being dragged, and the source decides whether to
- delete the original. This is described by the \c CopyAction action.
- The target may also choose to handle other actions, specifically the
- \c MoveAction and \c LinkAction actions. If the source calls
- QDrag::exec(), and it returns \c MoveAction, the source is responsible
- for deleting any original data if it chooses to do so. The QMimeData
- and QDrag objects created by the source widget \e{should not be deleted}
- - they will be destroyed by Qt. The target is responsible for taking
- ownership of the data sent in the drag and drop operation; this is
- usually done by keeping references to the data.
-
- If the target understands the \c LinkAction action, it should
- store its own reference to the original information; the source
- does not need to perform any further processing on the data. The
- most common use of drag and drop actions is when performing a
- Move within the same widget; see the section on \l{Drop Actions}
- for more information about this feature.
-
- The other major use of drag actions is when using a reference type
- such as text/uri-list, where the dragged data are actually references
- to files or objects.
-
- \section1 Adding New Drag and Drop Types
-
- Drag and drop is not limited to text and images. Any type of information
- can be transferred in a drag and drop operation. To drag information
- between applications, the applications must be able to indicate to each
- other which data formats they can accept and which they can produce.
- This is achieved using
- \l{http://www.rfc-editor.org/rfc/rfc1341.txt}{MIME types}. The QDrag
- object constructed by the source contains a list of MIME types that it
- uses to represent the data (ordered from most appropriate to least
- appropriate), and the drop target uses one of these to access the data.
- For common data types, the convenience functions handle the MIME types
- used transparently but, for custom data types, it is necessary to
- state them explicitly.
-
- To implement drag and drop actions for a type of information that is
- not covered by the QDrag convenience functions, the first and most
- important step is to look for existing formats that are appropriate:
- The Internet Assigned Numbers Authority (\l{http://www.iana.org}{IANA})
- provides a
- \l{http://www.iana.org/assignments/media-types/}{hierarchical
- list of MIME media types} at the Information Sciences Institute
- (\l{http://www.isi.edu}{ISI}).
- Using standard MIME types maximizes the interoperability of
- your application with other software now and in the future.
-
- To support an additional media type, simply set the data in the QMimeData
- object with the \l{QMimeData::setData()}{setData()} function, supplying
- the full MIME type and a QByteArray containing the data in the appropriate
- format. The following code takes a pixmap from a label and stores it
- as a Portable Network Graphics (PNG) file in a QMimeData object:
-
- \snippet doc/src/snippets/separations/finalwidget.cpp 0
-
- Of course, for this case we could have simply used
- \l{QMimeData::setImageData()}{setImageData()} instead to supply image data
- in a variety of formats:
-
- \snippet doc/src/snippets/separations/finalwidget.cpp 1
-
- The QByteArray approach is still useful in this case because it provides
- greater control over the amount of data stored in the QMimeData object.
-
- Note that custom datatypes used in item views must be declared as
- \l{QMetaObject}{meta objects} and that stream operators for them
- must be implemented.
-
- \section1 Drop Actions
-
- In the clipboard model, the user can \e cut or \e copy the source
- information, then later paste it. Similarly in the drag and drop
- model, the user can drag a \e copy of the information or they can drag
- the information itself to a new place (\e moving it). The
- drag and drop model has an additional complication for the programmer:
- The program doesn't know whether the user wants to cut or copy the
- information until the operation is complete. This often makes no
- difference when dragging information between applications, but within
- an application it is important to check which drop action was used.
-
- We can reimplement the mouseMoveEvent() for a widget, and start a drag
- and drop operation with a combination of possible drop actions. For
- example, we may want to ensure that dragging always moves objects in
- the widget:
-
- \snippet doc/src/snippets/draganddrop/dragwidget.cpp 7
- \dots
- \snippet doc/src/snippets/draganddrop/dragwidget.cpp 8
-
- The action returned by the exec() function may default to a
- \c CopyAction if the information is dropped into another application
- but, if it is dropped in another widget in the same application, we
- may obtain a different drop action.
-
- The proposed drop actions can be filtered in a widget's dragMoveEvent()
- function. However, it is possible to accept all proposed actions in
- the dragEnterEvent() and let the user decide which they want to accept
- later:
-
- \snippet doc/src/snippets/draganddrop/dragwidget.cpp 0
-
- When a drop occurs in the widget, the dropEvent() handler function is
- called, and we can deal with each possible action in turn. First, we
- deal with drag and drop operations within the same widget:
-
- \snippet doc/src/snippets/draganddrop/dragwidget.cpp 1
-
- In this case, we refuse to deal with move operations. Each type of drop
- action that we accept is checked and dealt with accordingly:
-
- \snippet doc/src/snippets/draganddrop/dragwidget.cpp 2
- \snippet doc/src/snippets/draganddrop/dragwidget.cpp 3
- \snippet doc/src/snippets/draganddrop/dragwidget.cpp 4
- \dots
- \snippet doc/src/snippets/draganddrop/dragwidget.cpp 5
-
- Note that we checked for individual drop actions in the above code.
- As mentioned above in the section on
- \l{#Overriding Proposed Actions}{Overriding Proposed Actions}, it is
- sometimes necessary to override the proposed drop action and choose a
- different one from the selection of possible drop actions.
- To do this, you need to check for the presence of each action in the value
- supplied by the event's \l{QDropEvent::}{possibleActions()}, set the drop
- action with \l{QDropEvent::}{setDropAction()}, and call
- \l{QEvent::}{accept()}.
-
- \section1 Drop Rectangles
-
- The widget's dragMoveEvent() can be used to restrict drops to certain parts
- of the widget by only accepting the proposed drop actions when the cursor
- is within those areas. For example, the following code accepts any proposed
- drop actions when the cursor is over a child widget (\c dropFrame):
-
- \snippet doc/src/snippets/droprectangle/window.cpp 0
-
- The dragMoveEvent() can also be used if you need to give visual
- feedback during a drag and drop operation, to scroll the window, or
- whatever is appropriate.
-
- \section1 The Clipboard
-
- Applications can also communicate with each other by putting data on
- the clipboard. To access this, you need to obtain a QClipboard object
- from the QApplication object:
-
- \snippet examples/widgets/charactermap/mainwindow.cpp 3
-
- The QMimeData class is used to represent data that is transferred to and
- from the clipboard. To put data on the clipboard, you can use the
- setText(), setImage(), and setPixmap() convenience functions for common
- data types. These functions are similar to those found in the QMimeData
- class, except that they also take an additional argument that controls
- where the data is stored: If \l{QClipboard::Mode}{Clipboard} is
- specified, the data is placed on the clipboard; if
- \l{QClipboard::Mode}{Selection} is specified, the data is placed in the
- mouse selection (on X11 only). By default, data is put on the clipboard.
-
- For example, we can copy the contents of a QLineEdit to the clipboard
- with the following code:
-
- \snippet examples/widgets/charactermap/mainwindow.cpp 11
-
- Data with different MIME types can also be put on the clipboard.
- Construct a QMimeData object and set data with setData() function in
- the way described in the previous section; this object can then be
- put on the clipboard with the
- \l{QClipboard::setMimeData()}{setMimeData()} function.
-
- The QClipboard class can notify the application about changes to the
- data it contains via its \l{QClipboard::dataChanged()}{dataChanged()}
- signal. For example, we can monitor the clipboard by connecting this
- signal to a slot in a widget:
-
- \snippet doc/src/snippets/clipboard/clipwindow.cpp 0
-
- The slot connected to this signal can read the data on the clipboard
- using one of the MIME types that can be used to represent it:
-
- \snippet doc/src/snippets/clipboard/clipwindow.cpp 1
- \dots
- \snippet doc/src/snippets/clipboard/clipwindow.cpp 2
-
- The \l{QClipboard::selectionChanged()}{selectionChanged()} signal can
- be used on X11 to monitor the mouse selection.
-
- \section1 Examples
-
- \list
- \o \l{draganddrop/draggableicons}{Draggable Icons}
- \o \l{draganddrop/draggabletext}{Draggable Text}
- \o \l{draganddrop/dropsite}{Drop Site}
- \o \l{draganddrop/fridgemagnets}{Fridge Magnets}
- \o \l{draganddrop/puzzle}{Drag and Drop Puzzle}
- \endlist
-
- \section1 Interoperating with Other Applications
-
- On X11, the public \l{http://www.newplanetsoftware.com/xdnd/}{XDND
- protocol} is used, while on Windows Qt uses the OLE standard, and
- Qt for Mac OS X uses the Carbon Drag Manager. On X11, XDND uses MIME,
- so no translation is necessary. The Qt API is the same regardless of
- the platform. On Windows, MIME-aware applications can communicate by
- using clipboard format names that are MIME types. Already some
- Windows applications use MIME naming conventions for their
- clipboard formats. Internally, Qt uses QWindowsMime and
- QMacPasteboardMime for translating proprietary clipboard formats
- to and from MIME types.
-
- On X11, Qt also supports drops via the Motif Drag & Drop Protocol. The
- implementation incorporates some code that was originally written by
- Daniel Dardailler, and adapted for Qt by Matt Koss <koss@napri.sk>
- and Nokia. Here is the original copyright notice:
-
- \legalese
- Copyright 1996 Daniel Dardailler.
-
- Permission to use, copy, modify, distribute, and sell this software
- for any purpose is hereby granted without fee, provided that the above
- copyright notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting documentation,
- and that the name of Daniel Dardailler not be used in advertising or
- publicity pertaining to distribution of the software without specific,
- written prior permission. Daniel Dardailler makes no representations
- about the suitability of this software for any purpose. It is
- provided "as is" without express or implied warranty.
-
- Modifications Copyright 1999 Matt Koss, under the same license as
- above.
- \endlegalese
- \omit NOTE: The copyright notice is from qmotifdnd_x11.cpp. \endomit
-
- Note: The Motif Drag \& Drop Protocol only allows receivers to
- request data in response to a QDropEvent. If you attempt to
- request data in response to e.g. a QDragMoveEvent, an empty
- QByteArray is returned.
-*/
-
-/*!
- \page porting4-dnd.html
- \title Porting to Qt 4 - Drag and Drop
- \contentspage {Porting Guides}{Contents}
- \previouspage Porting to Qt 4 - Virtual Functions
- \nextpage Porting UI Files to Qt 4
- \ingroup porting
- \brief An overview of the porting process for applications that use drag and drop.
-
- Qt 4 introduces a new set of classes to handle drag and drop operations
- that aim to be easier to use than their counterparts in Qt 3. As a result,
- the way that drag and drop is performed is quite different to the way
- developers of Qt 3 applications have come to expect. In this guide, we
- show the differences between the old and new APIs and indicate where
- applications need to be changed when they are ported to Qt 4.
-
- \tableofcontents
-
- \section1 Dragging
-
- In Qt 3, drag operations are encapsulated by \c QDragObject (see Q3DragObject)
- and its subclasses. These objects are typically constructed on the heap in
- response to mouse click or mouse move events, and ownership of them is
- transferred to Qt so that they can be deleted when the corresponding drag and
- drop operations have been completed. The drag source has no control over how
- the drag and drop operation is performed once the object's
- \l{Q3DragObject::}{drag()} function is called, and it receives no information
- about how the operation ended.
-
- \snippet doc/src/snippets/code/doc_src_dnd.qdoc 0
-
- Similarly, in Qt 4, drag operations are also initiated when a QDrag object
- is constructed and its \l{QDrag::}{exec()} function is called. In contrast,
- these objects are typically constructed on the stack rather than the heap
- since each drag and drop operation is performed synchronously as far as the
- drag source is concerned. One key benefit of this is that the drag source
- can receive information about how the operation ended from the value returned
- by \l{QDrag::}{exec()}.
-
- \snippet doc/src/snippets/porting4-dropevents/window.cpp 2
- \snippet doc/src/snippets/porting4-dropevents/window.cpp 3
- \dots 8
- \snippet doc/src/snippets/porting4-dropevents/window.cpp 4
- \snippet doc/src/snippets/porting4-dropevents/window.cpp 5
-
- A key difference in the above code is the use of the QMimeData class to hold
- information about the data that is transferred. Qt 3 relies on subclasses
- of \c QDragObject to provide support for specific MIME types; in Qt 4, the
- use of QMimeData as a generic container for data makes the relationship
- between MIME type and data more tranparent. QMimeData is described in more
- detail later in this document.
-
- \section1 Dropping
-
- In both Qt 3 and Qt 4, it is possible to prepare a custom widget to accept
- dropped data by enabling the \l{QWidget::}{acceptDrops} property of a widget,
- usually in the widget's constructor. As a result, the widget will receive
- drag enter events that can be handled by its \l{QWidget::}{dragEnterEvent()}
- function.
- As in Qt 3, custom widgets in Qt 4 handle these events by determining
- whether the data supplied by the drag and drop operation can be dropped onto
- the widget. Since the classes used to encapsulate MIME data are different in
- Qt 3 and Qt 4, the exact implementations differ.
-
- In Qt 3, the drag enter event is handled by checking whether each of the
- standard \c QDragObject subclasses can decode the data supplied, and
- indicating success or failure of these checks via the event's
- \l{QDragEnterEvent::}{accept()} function, as shown in this simple example:
-
- \snippet doc/src/snippets/code/doc_src_dnd.qdoc 1
-
- In Qt 4, you can examine the MIME type describing the data to determine
- whether the widget should accept the event or, for common data types, you
- can use convenience functions:
-
- \snippet doc/src/snippets/porting4-dropevents/window.cpp 0
-
- The widget has some control over the type of drag and drop operation to be
- performed. In the above code, the action proposed by the drag source is
- accepted, but
- \l{Drag and Drop#Overriding Proposed Actions}{this can be overridden} if
- required.
-
- In both Qt 3 and Qt 4, it is necessary to accept a given drag event in order
- to receive the corresponding drop event. A custom widget in Qt 3 that can
- accept dropped data in the form of text or images might provide an
- implementation of \l{QWidget::}{dropEvent()} that looks like the following:
-
- \snippet doc/src/snippets/code/doc_src_dnd.qdoc 2
-
- In Qt 4, the event is handled in a similar way:
-
- \snippet doc/src/snippets/porting4-dropevents/window.cpp 1
-
- It is also possible to extract data stored for a particular MIME type if it
- was specified by the drag source.
-
- \section1 MIME Types and Data
-
- In Qt 3, data to be transferred in drag and drop operations is encapsulated
- in instances of \c QDragObject and its subclasses, representing specific
- data formats related to common MIME type and subtypes.
-
- In Qt 4, only the QMimeData class is used to represent data, providing a
- container for data stored in multiple formats, each associated with
- a relevant MIME type. Since arbitrary MIME types can be specified, there is
- no need for an extensive class hierarchy to represent different kinds of
- information. Additionally, QMimeData it provides some convenience functions
- to allow the most common data formats to be stored and retrieved with less
- effort than for arbitrary MIME types.
-*/
diff --git a/doc/src/ecmascript.qdoc b/doc/src/ecmascript.qdoc
deleted file mode 100644
index a13f55d1f..000000000
--- a/doc/src/ecmascript.qdoc
+++ /dev/null
@@ -1,313 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page ecmascript.html
- \title ECMAScript Reference
- \ingroup scripting
- \brief A list of objects, functions and properties supported by QtScript.
-
- This reference contains a list of objects, functions and
- properties supported by QtScript.
-
- \tableofcontents
-
- \section1 The Global Object
-
- \section2 Value Properties
-
- \list
- \o NaN
- \o Infinity
- \o undefined
- \o Math
- \endlist
-
- \section2 Function Properties
-
- \list
- \o eval(x)
- \o parseInt(string, radix)
- \o parseFloat(string)
- \o isNaN(number)
- \o isFinite(number)
- \o decodeURI(encodedURI)
- \o decodeURIComponent(encodedURIComponent)
- \o encodeURI(uri)
- \o encodeURIComponent(uriComponent)
- \endlist
-
- \section2 Constructor Properties
-
- \list
- \o Object
- \o Function
- \o Array
- \o String
- \o Boolean
- \o Number
- \o Date
- \o RegExp
- \o Error
- \o EvalError
- \o RangeError
- \o ReferenceError
- \o SyntaxError
- \o TypeError
- \o URIError
- \endlist
-
- \section1 Object Objects
-
- \section2 Object Prototype Object
-
- \list
- \o toString()
- \o toLocaleString()
- \o valueOf()
- \o hasOwnProperty(V)
- \o isPrototypeOf(V)
- \o propertyIsEnumerable(V)
- \endlist
-
- \section1 Function Objects
-
- \section2 Function Prototype Object
-
- \section3 Function Properties
-
- \list
- \o toString()
- \o apply(thisArg, argArray)
- \o call(thisArg [, arg1 [, arg2, ...]])
- \endlist
-
- \section1 Array Objects
-
- \section2 Array Prototype Object
-
- \section3 Function Properties
-
- \list
- \o toString()
- \o toLocaleString()
- \o concat([item1 [, item2 [, ...]]])
- \o join(separator)
- \o pop()
- \o push([item1 [, item2 [, ...]]])
- \o reverse()
- \o shift()
- \o slice(start, end)
- \o sort(comparefn)
- \o splice(start, deleteCount[, item1 [, item2 [, ...]]])
- \o unshift([item1 [, item2 [, ...]]])
- \endlist
-
- \section1 String Objects
-
- \section2 String Prototype Object
-
- \section3 Function Properties
-
- \list
- \o toString()
- \o valueOf()
- \o charAt(pos)
- \o charCodeAt(pos)
- \o concat([string1 [, string2 [, ...]]])
- \o indexOf(searchString ,position)
- \o lastIndexOf(searchString, position)
- \o localeCompare(that)
- \o match(regexp)
- \o replace(searchValue, replaceValue)
- \o search(regexp)
- \o slice(start, end)
- \o split(separator, limit)
- \o substring(start, end)
- \o toLowerCase()
- \o toLocaleLowerCase()
- \o toUpperCase()
- \o toLocaleUpperCase()
- \endlist
-
- \section1 Boolean Objects
-
- \section2 Boolean Prototype Object
-
- \section3 Function Properties
-
- \list
- \o toString()
- \o valueOf()
- \endlist
-
- \section1 Number Objects
-
- \section2 Number Prototype Object
-
- \section3 Function Properties
-
- \list
- \o toString(radix)
- \o toLocaleString()
- \o toFixed(fractionDigits)
- \o toExponential(fractionDigits)
- \o toPrecision(precision)
- \endlist
-
- \section1 The Math Object
-
- \section2 Value Properties
-
- \list
- \o E
- \o LN10
- \o LN2
- \o LOG2E
- \o LOG10E
- \o PI
- \o SQRT1_2
- \o SQRT2
- \endlist
-
- \section2 Function Properties
-
- \list
- \o abs(x)
- \o acos(x)
- \o asin(x)
- \o atan(x)
- \o atan2(y, x)
- \o ceil(x)
- \o cos(x)
- \o exp(x)
- \o floor(x)
- \o log(x)
- \o max([value1 [, value2 [, ...]]])
- \o min([value1 [, value2 [, ...]]])
- \o pow(x, y)
- \o random()
- \o round(x)
- \o sin(x)
- \o sqrt(x)
- \o tan(x)
- \endlist
-
- \section1 Date Objects
-
- \section2 Date Prototype Object
-
- \section3 Function Properties
-
- \list
- \o toString()
- \o toDateString()
- \o toTimeString()
- \o toLocaleString()
- \o toLocaleDateString()
- \o toLocaleTimeString()
- \o valueOf()
- \o getTime()
- \o getFullYear()
- \o getUTCFullYear()
- \o getMonth()
- \o getUTCMonth()
- \o getDate()
- \o getUTCDate()
- \o getDay()
- \o getUTCDay()
- \o getHours()
- \o getUTCHours()
- \o getMinutes()
- \o getUTCMinutes()
- \o getSeconds()
- \o getUTCSeconds()
- \o getMilliseconds()
- \o getUTCMilliseconds()
- \o getTimeZoneOffset()
- \o setTime(time)
- \o setMilliseconds(ms)
- \o setUTCMilliseconds(ms)
- \o setSeconds(sec [, ms])
- \o setUTCSeconds(sec [, ms])
- \o setMinutes(min [, sec [, ms]])
- \o setUTCMinutes(min [, sec [, ms]])
- \o setHours(hour [, min [, sec [, ms]]])
- \o setUTCHours(hour [, min [, sec [, ms]]])
- \o setDate(date)
- \o setUTCDate(date)
- \o setMonth(month [, date])
- \o setUTCMonth(month [, date])
- \o setFullYear(year [, month [, date]])
- \o setUTCFullYear(year [, month [, date]])
- \o toUTCString()
- \endlist
-
- \section1 RegExp Objects
-
- \section2 RegExp Prototype Object
-
- \section3 Function Properties
-
- \list
- \o exec(string)
- \o test(string)
- \o toString()
- \endlist
-
- \section1 Error Objects
-
- \section2 Error Prototype Object
-
- \section3 Value Properties
-
- \list
- \o name
- \o message
- \endlist
-
- \section3 Function Properties
-
- \list
- \o toString()
- \endlist
-
-*/
diff --git a/doc/src/emb-accel.qdoc b/doc/src/emb-accel.qdoc
deleted file mode 100644
index 818538a8a..000000000
--- a/doc/src/emb-accel.qdoc
+++ /dev/null
@@ -1,143 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-embedded-accel.html
-
- \target add your graphics driver to Qt for Embedded Linux
-
- \title Adding an Accelerated Graphics Driver to Qt for Embedded Linux
- \ingroup qt-embedded-linux
-
- In \l{Qt for Embedded Linux}, painting is a pure software implementation
- normally performed in two steps. First, each window is rendered
- onto a QWSWindowSurface using QPaintEngine. Second, the server
- composes the surface images and copies the composition to the
- screen (see \l{Qt for Embedded Linux Architecture} for details).
- \l{Qt for Embedded Linux} uses QRasterPaintEngine (a raster-based implementation of
- QPaintEngine) to implement painting operations, and uses QScreen
- to implement window composition.
-
- It is possible to add an accelerated graphics driver to take
- advantage of available hardware resources. This is described in
- detail in the \l {Accelerated Graphics Driver Example} which uses
- the following approach:
-
- \tableofcontents
-
- \warning This feature is under development and is subject to
- change.
-
- \section1 Step 1: Create a Custom Screen
-
- Create a custom screen by deriving from the QScreen class.
-
- The \l {QScreen::}{connect()}, \l {QScreen::}{disconnect()}, \l
- {QScreen::}{initDevice()} and \l {QScreen::}{shutdownDevice()}
- functions are declared as pure virtual functions in QScreen and
- must be implemented. These functions are used to configure the
- hardware, or query its configuration. The \l
- {QScreen::}{connect()} and \l {QScreen::}{disconnect()} are called
- by both the server and client processes, while the \l
- {QScreen::}{initDevice()} and \l {QScreen::}{shutdownDevice()}
- functions are only called by the server process.
-
- You might want to accelerate the final copying to the screen by
- reimplementing the \l {QScreen::}{blit()} and \l
- {QScreen::}{solidFill()} functions.
-
- \section1 Step 2: Implement a Custom Raster Paint Engine
-
- Implement the painting operations by subclassing the
- QRasterPaintEngine class.
-
- To accelerate a graphics primitive, simply reimplement the
- corresponding function in your custom paint engine. If there is
- functionality you do not want to reimplement (such as certain
- pens, brushes, modes, etc.), you can just call the corresponding
- base class implementation.
-
- \section1 Step 3: Make the Paint Device Aware of Your Paint Engine
-
- To activate your paint engine you must create a subclass of the
- QCustomRasterPaintDevice class and reimplement its \l
- {QCustomRasterPaintDevice::}{paintEngine()} function. Let this
- function return a pointer to your paint engine. In addition, the
- QCustomRasterPaintDevice::memory() function must be reimplemented
- to return a pointer to the buffer where the painting should be
- done.
-
- \table
- \header \o Acceleration Without a Memory Buffer
- \row
- \o
-
- By default the QRasterPaintEngine draws into a memory buffer (this can
- be local memory, shared memory or graphics memory mapped into
- application memory).
- In some cases you might want to avoid using a memory buffer directly,
- e.g if you want to use an accelerated graphic controller to handle all
- the buffer manipulation. This can be implemented by reimplementing
- the QCustomRasterPaintDevice::memory() function to return 0 (meaning
- no buffer available). Then, whenever a color or image buffer normally
- would be written into paint engine buffer, the paint engine will call the
- QRasterPaintEngine::drawColorSpans() and
- QRasterPaintEngine::drawBufferSpan() functions instead.
-
- Note that the default implementations of these functions only
- calls qFatal() with an error message; reimplement the functions
- and let them do the appropriate communication with the accelerated
- graphics controller.
-
- \endtable
-
- \section1 Step 4: Make the Window Surface Aware of Your Paint Device
-
- Derive from the QWSWindowSurface class and reimplement its \l
- {QWSWindowSurface::}{paintDevice()} function. Make this function
- return a pointer to your custom raster paint device.
-
- \section1 Step 5: Enable Creation of an Instance of Your Window Surface
-
- Finally, reimplement QScreen's \l {QScreen::}{createSurface()}
- function and make this function able to create an instance of your
- QWSWindowSurface subclass.
-*/
diff --git a/doc/src/emb-charinput.qdoc b/doc/src/emb-charinput.qdoc
deleted file mode 100644
index 5ceb6a416..000000000
--- a/doc/src/emb-charinput.qdoc
+++ /dev/null
@@ -1,164 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-embedded-charinput.html
-
- \title Qt for Embedded Linux Character Input
- \ingroup qt-embedded-linux
-
- When running a \l {Qt for Embedded Linux} application, it either runs as a
- server or connects to an existing server. The keyboard driver is
- loaded by the server application when it starts running, using
- Qt's \l {How to Create Qt Plugins}{plugin system}.
-
- Internally in the client/server protocol, all system generated
- events, including key events, are passed to the server application
- which then propagates the event to the appropriate client. Note
- that key events do not always come from a keyboard device, they
- can can also be generated by the server process using input
- widgets.
-
- \table
- \header \o Input Widgets
- \row
- \o
-
- The server process may call the static QWSServer::sendKeyEvent()
- function at any time. Typically, this is done by popping up a
- widget that enables the user specify characters with the pointer
- device.
-
- Note that the key input widget should not take focus since the
- server would then just send the key events back to the input
- widget. One way to make sure that the input widget never takes
- focus is to set the Qt::Tool widget flag in the QWidget
- constructor.
-
- The \l{Qt Extended} environment contains various input widgets such as
- Handwriting Recognition and Virtual Keyboard.
-
- \endtable
-
- \tableofcontents
-
- \section1 Available Keyboard Drivers
-
- \l {Qt for Embedded Linux} provides ready-made drivers for the console
- (TTY) and the standard Linux Input Subsystem (USB, PS/2, ...). Run the
- \c configure script to list the available drivers:
-
- \snippet doc/src/snippets/code/doc_src_emb-charinput.qdoc 0
-
- Note that only the console (TTY) keyboard driver handles console
- switching (\bold{Ctrl+Alt+F1}, ..., \bold{Ctrl+Alt+F10}) and
- termination (\bold{Ctrl+Alt+Backspace}).
-
- In the default Qt configuration, only the "TTY" driver is
- enabled. The various drivers can be enabled and disabled using the
- \c configure script. For example:
-
- \snippet doc/src/snippets/code/doc_src_emb-charinput.qdoc 1
-
- Custom keyboard drivers can be implemented by subclassing the
- QWSKeyboardHandler class and creating a keyboard driver plugin
- (derived from the QKbdDriverPlugin class). The default
- implementation of the QKbdDriverFactory class will automatically
- detect the plugin, loading the driver into the server application
- at run-time.
-
- \section1 Keymaps
-
- Starting with 4.6, \l {Qt for Embedded Linux} has gained support for
- user defined keymaps. Keymap handling is supported by the built-in
- keyboard drivers \c TTY and \c LinuxInput. Custom keyboard drivers can
- use the existing keymap handling code via
- QWSKeyboardHandler::processKeycode().
-
- By default Qt will use an internal, compiled-in US keymap.
- See the options below for how to load a different keymap.
-
- \section1 Specifying a Keyboard Driver
-
- To specify which driver to use, set the QWS_KEYBOARD environment
- variable. For example (if the current shell is bash, ksh, zsh or
- sh):
-
- \snippet doc/src/snippets/code/doc_src_emb-charinput.qdoc 2
-
- The \c <driver> arguments are \c TTY, \c LinuxInput and \l
- {QKbdDriverPlugin::keys()}{keys} identifying custom drivers, and the
- driver specific options are typically a device, e.g., \c /dev/tty0.
-
- Multiple keyboard drivers can be specified in one go:
-
- \snippet doc/src/snippets/code/doc_src_emb-charinput.qdoc 3
-
- Input will be read from all specified drivers.
-
- Currently the following options are supported by both the \c TTY and \c
- LinuxInput driver:
-
- \table
- \header \o Option \o Description
- \row \o \c /dev/xxx \o
- Open the specified device, instead of the driver's default device.
- \row \o \c repeat-delay=<d> \o
- Time (in milliseconds) until auto-repeat kicks in.
- \row \o \c repeat-rate=<r> \o
- Time (in milliseconds) specifying the interval between auto-repeats.
- \row \o \c keymap=xx.qmap \o
- File name of a keymap file in Qt's \c qmap format. See \l {kmap2qmap}
- for instructions on how to create thoes files.\br Note that the file
- name can of course also be the name of a QResource.
- \row \o \c disable-zap \o
- Disable the QWS server "Zap" shortcut \bold{Ctrl+Alt+Backspace}
- \row \o \c enable-compose \o
- Activate Latin-1 composing features in the built-in US keymap. You can
- use the right \c AltGr or right \c Alt is used as a dead key modifier,
- while \c AltGr+. is the compose key. For example:
- \list
- \o \c AltGr + \c " + \c u = \uuml (u with diaeresis / umlaut u)
- \o \c AltGr + \c . + \c / + \c o = \oslash (slashed o)
- \endlist
- \endtable
-
-*/
diff --git a/doc/src/emb-crosscompiling.qdoc b/doc/src/emb-crosscompiling.qdoc
deleted file mode 100644
index 2e0ba4ba7..000000000
--- a/doc/src/emb-crosscompiling.qdoc
+++ /dev/null
@@ -1,191 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-embedded-crosscompiling.html
-
- \title Cross-Compiling Qt for Embedded Linux Applications
- \ingroup qt-embedded-linux
-
- Cross-compiling is the process of compiling an application on one
- machine, producing executable code for a different machine or
- device. To cross-compile a \l{Qt for Embedded Linux} application,
- use the following approach:
-
- \tableofcontents
-
- \note The cross-compiling procedure has the configuration
- process in common with the installation procedure; i.e., you might
- not necessarily have to perform all the mentioned actions
- depending on your current configuration.
-
- \section1 Step 1: Set the Cross-Compiler's Path
-
- Specify which cross-compiler to use by setting the \c PATH
- environment variable. For example, if the current shell is bash,
- ksh, zsh or sh:
-
- \snippet doc/src/snippets/code/doc_src_emb-crosscompiling.qdoc 0
-
- \section1 Step 2: Create a Target Specific qmake Specification
-
- The qmake tool requires a platform and compiler specific \c
- qmake.conf file describing the various default values, to generate
- the appropriate Makefiles. The standard \l{Qt for Embedded Linux}
- distribution provides such files for several combinations of
- platforms and compilers. These files are located in the
- distribution's \c mkspecs/qws subdirectory.
-
- Each platform has a default specification. \l{Qt for Embedded Linux} will
- use the default specification for the current platform unless told
- otherwise. To override this behavior, you can use the \c configure
- script's \c -platform option to change the specification for the host
- platform (where compilation will take place).
-
- The \c configure script's \c -xplatform option is used to provide a
- specification for the target architecture (where the library will be
- deployed).
-
- For example, to cross-compile an application to run on a device with
- an ARM architecture, using the GCC toolchain, run the configure
- script at the command line in the following way:
-
- \snippet doc/src/snippets/code/doc_src_emb-crosscompiling.qdoc 1
-
- If neither of the provided specifications fits your target device,
- you can create your own. To create a custom \c qmake.conf file,
- just copy and customize an already existing file. For example:
-
- \snippet doc/src/snippets/code/doc_src_emb-crosscompiling.qdoc 2
-
- \note When defining a mkspec for a Linux target, the directory must
- be prefixed with "linux-". We recommend that you copy the entire
- directory.
-
- Note also that when providing you own qmake specifcation, you must
- use the \c configure script's \c -xplatform option to make
- \l{Qt for Embedded Linux} aware of the custom \c qmake.conf file.
-
- \section1 Step 3: Provide Architecture Specific Files
-
- Starting with Qt 4, all of Qt's implicitly shared classes can
- safely be copied across threads like any other value classes,
- i.e., they are fully reentrant. This is accomplished by
- implementing reference counting operations using atomic hardware
- instructions on all the different platforms supported by Qt.
-
- To support a new architecture, it is important to ensure that
- these platform-specific atomic operations are implemented in a
- corresponding header file (\c qatomic_ARCH.h), and that this file
- is located in Qt's \c src/corelib/arch directory. For example, the
- Intel 80386 implementation is located in \c
- src/corelib/arch/qatomic_i386.h.
-
- See the \l {Implementing Atomic Operations} documentation for
- details.
-
- \section1 Step 4: Provide Hardware Drivers
-
- Without the proper mouse and keyboard drivers, you will not be
- able to give any input to your application when it is installed on
- the target device. You must also ensure that the appropriate
- screen driver is present to make the server process able to put
- the application's widgets on screen.
-
- \l{Qt for Embedded Linux} provides several ready-made mouse, keyboard and
- screen drivers, see the \l{Qt for Embedded Linux Pointer Handling}{pointer
- handling}, \l{Qt for Embedded Linux Character Input}{character input} and
- \l{Qt for Embedded Linux Display Management}{display management}
- documentation for details.
-
- In addition, custom drivers can be added by deriving from the
- QWSMouseHandler, QWSKeyboardHandler and QScreen classes
- respectively, and by creating corresponding plugins to make use of
- Qt's plugin mechanism (dynamically loading the drivers into the
- server application at runtime). Note that the plugins must be
- located in a location where Qt will look for plugins, e.g., the
- standard \c plugin directory.
-
- See the \l {How to Create Qt Plugins} documentation and the \l
- {tools/plugandpaint}{Plug & Paint} example for details.
-
- \section1 Step 5: Build the Target Specific Executable
-
- Before building the executable, you must specify the target
- architecture as well as the target specific hardware drivers by
- running the \c configure script:
-
- \snippet doc/src/snippets/code/doc_src_emb-crosscompiling.qdoc 3
-
- It is also important to make sure that all the third party
- libraries that the application and the Qt libraries require, are
- present in the tool chain. In particular, if the zlib and jpeg
- libraries are not available, they must be included by running the
- \c configure script with the \c -L and \c -I options. For example:
-
- \snippet doc/src/snippets/code/doc_src_emb-crosscompiling.qdoc 4
-
- The JPEG source can be downloaded from \l http://www.ijg.org/. The
- \l{Qt for Embedded Linux} distribution includes a version of the zlib source
- that can be compiled into the Qt for Embedded Linux library. If integrators
- wish to use a later version of the zlib library, it can be
- downloaded from the \l http://www.gzip.org/zlib/ website.
-
- Then build the executable:
-
- \snippet doc/src/snippets/code/doc_src_emb-crosscompiling.qdoc 5
-
- That's all. Your target specific executable is ready for deployment.
-
- \table 100%
- \row
- \o \bold {See also:}
-
- \l{Qt for Embedded Linux Architecture} and \l{Deploying Qt for Embedded Linux
- Applications}.
-
- \row
- \o \bold{Third party resources:}
-
- \l{http://silmor.de/29}{Cross compiling Qt/Win Apps on Linux} covers the
- process of cross-compiling Windows applications on Linux.
- \endtable
-*/
diff --git a/doc/src/emb-deployment.qdoc b/doc/src/emb-deployment.qdoc
deleted file mode 100644
index 9a83dcfd0..000000000
--- a/doc/src/emb-deployment.qdoc
+++ /dev/null
@@ -1,111 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-embedded-deployment.html
-
- \title Deploying Qt for Embedded Linux Applications
- \ingroup qt-embedded-linux
-
- The procedure of deploying an Qt application on \l{Qt for Embedded Linux}
- is essentially the same as the deployment procedure on X11 platforms
- which is described in detail in the \l {Deploying an Application
- on X11 Platforms} documentation. See also the \l {Deploying Qt
- applications}{general remarks} about deploying Qt applications.
-
- In addition, there is a couple of Qt for Embedded Linux specific issues to
- keep in mind:
-
- \tableofcontents
-
- \section1 Fonts
-
- When Qt for Embedded Linux applications run, they look for a file called
- \c fontdir in Qt's \c /lib/fonts/ directory defining the
- fonts that are available to the application (i.e. the fonts
- located in the mentioned directory).
-
- For that reason, the preferred fonts must be copied to the \c
- /lib/fonts/ directory, and the \c fontdir file must be customized
- accordingly. See the \l {Qt for Embedded Linux Fonts}{fonts} documentation
- for more details about the supported font formats.
-
- Note that the application will look for the \c /lib/fonts/
- directory relative to the path set using the \c -prefix parameter
- when running the \c configure script; ensure that this is a
- sensible path in the target device environment. See the \l
- {Installing Qt for Embedded Linux#Step 3: Building the
- Library}{installation} documentation for more details.
-
- \section1 Environment Variables
-
- In general, any variable value that differs from the provided
- default values must be set explicitly in the target device
- environment. Typically, these include the QWS_MOUSE_PROTO,
- QWS_KEYBOARD and QWS_DISPLAY variables specifying the drivers for
- pointer handling, character input and display management,
- respectively.
-
- For example, without the proper mouse and keyboard drivers, there
- is no way to give any input to the application when it is
- installed on the target device. By running the \c configure script
- using the \c -qt-kbd-<keyboarddriver> and \c
- -qt-mouse-<mousedriver> options, the drivers are enabled, but in
- addition the drivers and the preferred devices must be specified
- as the ones to use in the target environment, by setting the
- environment variables.
-
- See the \l{Qt for Embedded Linux Pointer Handling}{pointer handling},
- \l{Qt for Embedded Linux Character Input}{character input} and
- \l{Qt for Embedded Linux Display Management}{display management}
- documentation for more information.
-
- \section1 Framebuffer Support
-
- No particular actions are required to enable the framebuffer on
- target devices: The Linux framebuffer is enabled by default on all
- modern Linux distributions. For information on older versions, see
- \l http://en.tldp.org/HOWTO/Framebuffer-HOWTO.html.
-
- To test that the Linux framebuffer is set up correctly, and that
- the device permissions are correct, use the program provided by
- the \l {Testing the Linux Framebuffer} document.
-*/
diff --git a/doc/src/emb-differences.qdoc b/doc/src/emb-differences.qdoc
deleted file mode 100644
index cf3ab7535..000000000
--- a/doc/src/emb-differences.qdoc
+++ /dev/null
@@ -1,72 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-embedded-differences.html
-
- \title Porting Qt Applications to Qt for Embedded Linux
- \ingroup porting
- \ingroup qt-embedded-linux
-
- Existing Qt applications should require no porting provided there is no
- platform dependent code.
-
- \table 100%
- \header \o Platform Dependent Code
-
- \row
- \o
- Platform dependent code includes system calls, calls to the
- underlying window system (Windows or X11), and Qt platform
- specific methods such as QApplication::x11EventFilter().
-
- For cases where it is necessary to use platform dependent code
- there are macros defined that can be used to enable and disable
- code for each platform using \c #ifdef directives:
-
- \list
- \o Qt for Embedded Linux: Q_WS_QWS
- \o Qt for Mac OS X: Q_WS_MAC
- \o Qt for Windows: Q_WS_WIN
- \o Qt for X11: Q_WS_X11
- \endlist
- \endtable
-*/
diff --git a/doc/src/emb-envvars.qdoc b/doc/src/emb-envvars.qdoc
deleted file mode 100644
index c423fef6c..000000000
--- a/doc/src/emb-envvars.qdoc
+++ /dev/null
@@ -1,168 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-embedded-envvars.html
-
- \title Qt for Embedded Linux Environment Variables
- \ingroup qt-embedded-linux
-
- These environment variables are relevant to \l{Qt for Embedded Linux}
- users.
-
- \table
- \header \o Variable \o Description
-
- \row
- \o \bold POINTERCAL_FILE \target POINTERCAL_FILE
-
- \o Specifies the file containing the data used to calibrate the
- pointer device.
-
- See also QWSCalibratedMouseHandler and \l{Qt for Embedded Linux Pointer
- Handling}.
-
- \row
- \o \bold QT_ONSCREEN_PAINT \target QT_ONSCREEN_PAINT
-
- \o If defined, the application will render its widgets directly on
- screen. The affected regions of the screen will not be modified by
- the screen driver unless another window with a higher focus
- requests (parts of) the same region.
-
- Setting this environment variable is equivalent to setting the
- Qt::WA_PaintOnScreen attribute for all the widgets in the
- application.
-
- See also the Qt for Embedded Linux \l{Qt for Embedded Linux Architecture#Graphics
- Rendering}{graphics rendering} documentation.
-
- \row
- \o \bold QWS_SW_CURSOR \target QWS_SW_CURSOR
- \o If defined, the software mouse cursor is always used (even when using an
- accelerated driver that supports a hardware cursor).
-
- \row
- \o \bold QWS_DISPLAY \target QWS_DISPLAY
- \o
-
- Specifies the display type and framebuffer. For example, if the
- current shell is bash, ksh, zsh or sh:
-
- \snippet doc/src/snippets/code/doc_src_emb-envvars.qdoc 0
-
- The valid values for the \c <driver> argument are \c LinuxFb, \c
- QVFb, \c VNC, \c Transformed, \c Multi and \l
- {QScreenDriverPlugin::keys()}{keys} identifying custom drivers,
- and the \c {<display num>} argument is used to separate screens
- that are using the same screen driver and to enable multiple
- displays (see the \l {Running Qt for Embedded Linux Applications}
- documentation for more details).
-
- The driver specific options are described in the \l{Qt for Embedded Linux
- Display Management}{display management} documentation.
-
- \row
- \o \bold QWS_SIZE \target QWS_SIZE
- \o
-
- Specifies the size of the \l{Qt for Embedded Linux} window which is centered
- within the screen. For example, if the current shell is bash, ksh,
- zsh or sh:
-
- \snippet doc/src/snippets/code/doc_src_emb-envvars.qdoc 1
-
- \row
- \o \bold QWS_MOUSE_PROTO \target QWS_MOUSE_PROTO
- \o
-
- Specifies the driver for pointer handling. For example, if the
- current shell is bash, ksh, zsh or sh:
-
- \snippet doc/src/snippets/code/doc_src_emb-envvars.qdoc 2
-
- The valid values for the \c <driver> argument are \c MouseMan, \c
- IntelliMouse, \c Microsoft, \c VR41xx, \c LinuxTP, \c Yopy. \c
- Tslib and \l {QMouseDriverPlugin::keys()}{keys} identifying
- custom drivers, and the driver specific options are typically a
- device, e.g., \c /dev/mouse for mouse devices and \c /dev/ts for
- touch panels.
-
- Multiple keyboard drivers can be specified in one go:
-
- \snippet doc/src/snippets/code/doc_src_emb-envvars.qdoc 3
-
- Input will be read from all specified drivers.
- Note that the \c Vr41xx driver also accepts two optional
- arguments: \c press=<value> defining a mouseclick (the default
- value is 750) and \c filter=<value> specifying the length of the
- filter used to eliminate noise (the default length is 3). For
- example:
-
- \snippet doc/src/snippets/code/doc_src_emb-envvars.qdoc 4
-
- See also \l {Qt for Embedded Linux Pointer Handling}.
-
- \row
- \o \bold QWS_KEYBOARD \target QWS_KEYBOARD
- \o
-
- Specifies the driver and device for character input. For example, if the
- current shell is bash, ksh, zsh or sh:
-
- \snippet doc/src/snippets/code/doc_src_emb-envvars.qdoc 5
-
- The valid values for the \c <driver> argument are \c SL5000, \c
- Yopy, \c VR41xx, \c TTY, \c USB and \l
- {QKbdDriverPlugin::keys()}{keys} identifying custom drivers,
- and the driver specific options are typically a device, e.g., \c
- /dev/tty0.
-
- Multiple keyboard drivers can be specified in one go:
-
- \snippet doc/src/snippets/code/doc_src_emb-envvars.qdoc 6
-
- Input will be read from all specified drivers.
-
- See also \l {Qt for Embedded Linux Character Input}.
-
- \endtable
-*/
diff --git a/doc/src/emb-features.qdoc b/doc/src/emb-features.qdoc
deleted file mode 100644
index fdd2e462e..000000000
--- a/doc/src/emb-features.qdoc
+++ /dev/null
@@ -1,147 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page fine-tuning-features.html
- \title Fine-Tuning Features in Qt
- \ingroup qtce
- \ingroup qt-embedded-linux
- \brief Describes how to reduce the size of Qt libraries by selecting only
- the features that are needed.
-
- In many cases, only a fixed set of applications are deployed on an
- embedded device, making it possible to save resources by minimizing
- the size of the associated libraries. The Qt installation can easily
- be optimized by avoiding to compile in the features that are not
- required.
-
- \tableofcontents
-
- A wide range of features are defined, covering classes and technologies
- provided by several of Qt's modules.
- You can look up the different feature definitions in the
- \c{src/corelib/global/qfeatures.txt} file within the Qt source
- distribution.
-
- \section1 Simple Customization
-
- \section2 Embedded Linux
-
- To disable a particular feature, just run the \c configure script
- for Qt for Embedded Linux with the \c -no-feature-<feature> option.
- For example:
-
- \snippet doc/src/snippets/code/doc_src_emb-features.qdoc 1
-
- The feature can easily be enabled again by running \c configure
- with the \c -feature-<feature> option.
-
- See also \l{Qt Performance Tuning}.
-
- \section2 Windows CE
-
- To disable a particular feature, just run the \c configure script
- with the set of required \c -D<feature> options. For example,
- you can use the \c -D option to define \c{QT_NO_THREAD}:
-
- \snippet doc/src/snippets/code/doc_src_emb-features.qdoc 0
-
- The \c -D option only creates a Qt internal define. If you get linker
- errors you have to define \c QT_NO_THREAD also for your project.
- You can do this by adding \c DEFINES += \c QT_NO_THREAD to your
- \c .pro file.
-
- See also \l{Qt Performance Tuning}.
-
- \section1 Managing Large Numbers of Features
-
- If you want to disable a lot of features, it is more comfortable
- to use the \c qconfig tool.
- You can disable a \e set of features by creating a custom
- configuration file that defines the preferred subset of Qt's
- functionality. Such a file uses macros to disable the unwanted
- features, and can be created manually or by using the \c qconfig
- tool located in the \c{tools/qconfig} directory of the Qt source
- distribution.
-
- \note The \c qconfig tool is intended to be built against Qt on
- desktop platforms.
-
- \bold{Windows CE:} The Qt for Windows CE package contains a \c qconfig
- executable that you can run on a Windows desktop to configure the build.
-
- \image qt-embedded-qconfigtool.png
-
- The \c qconfig tool's interface displays all of Qt's
- functionality, and allows the user to both disable and enable
- features. The user can open and edit any custom configuration file
- located in the \c{src/corelib/global} directory. When creating a
- custom configuration file manually, a description of the currently
- available Qt features can be found in the
- \c{src/corelib/global/qfeatures.txt} file.
-
- Note that some features depend on others; disabling any feature
- will automatically disable all features depending on it. The
- feature dependencies can be explored using the \c qconfig tool,
- but they are also described in the \c{src/corelib/global/qfeatures.h}
- file.
-
- To be able to apply the custom configuration, it must be saved in
- a file called \c qconfig-myfile.h in the \c{src/corelib/global}
- directory. Then use the \c configure tool's \c -qconfig option
- and pass the configuration's file name without the \c qconfig-
- prefix and \c .h extension, as argument.
- The following examples show how this is invoked on each of the
- embedded platforms for a file called \c{qconfig-myfile.h}:
-
- \bold{Embedded Linux:}
-
- \snippet doc/src/snippets/code/doc_src_emb-features.qdoc 3
-
- \bold{Windows CE:}
-
- \snippet doc/src/snippets/code/doc_src_emb-features.qdoc 2
-
- Qt provides several ready-made custom configuration files,
- defining minimal, small, medium and large installations,
- respectively. These files are located in the
- \c{/src/corelib/global} directory in the Qt source distribution.
-*/
diff --git a/doc/src/emb-fonts.qdoc b/doc/src/emb-fonts.qdoc
deleted file mode 100644
index 70fddbf16..000000000
--- a/doc/src/emb-fonts.qdoc
+++ /dev/null
@@ -1,201 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-embedded-fonts.html
-
- \title Qt for Embedded Linux Fonts
- \ingroup qt-embedded-linux
-
- \l {Qt for Embedded Linux} uses the
- \l{http://freetype.sourceforge.net/freetype2/index.html}{FreeType 2}
- font engine to produce font output. The formats supported depends on
- the locally installed version of the FreeType library. In addition,
- \l{Qt for Embedded Linux} supports the Qt Prerendered Font formats (\l QPF and \l QPF2):
- light-weight non-scalable font formats specific to \l {Qt for Embedded Linux}.
- QPF2 is the native format of \l{Qt for Embedded Linux}. QPF is the legacy
- format used by Qt/Embedded 2.x and 3.x. Several of the formats may be rendered
- using anti-aliasing for improved readability.
-
- When \l{Qt for Embedded Linux} applications run, they look for fonts in
- Qt's \c lib/fonts/ directory. \l {Qt for Embedded Linux} will automatically detect
- prerendered fonts and TrueType fonts. For compatibility, it will also read the
- legacy \c lib/fonts/fontdir file.
-
- Support for other font formats can be added, contact
- \l{mailto:qt-info@nokia.com}{qt-info@nokia.com} for more
- information.
-
- \tableofcontents
-
- \table 100%
- \row
- \o
- \bold {Optimization}
-
- The \l FreeType, \l QPF2 and \l QPF formats are features that can be
- disabled using the
- \l{Fine-Tuning Features in Qt}{feature definition system},
- reducing the size of Qt and saving resources.
-
- Note that at least one font format must be defined.
-
- See the \l {Fine-Tuning Features in Qt} documentation for
- details.
-
- \o
- \inlineimage qt-embedded-fontfeatures.png
- \endtable
-
- All supported fonts use the Unicode character encoding. Most fonts
- available today do, but they usually don't contain \e all the
- Unicode characters. A complete 16-point Unicode font uses over 1
- MB of memory.
-
- \target FreeType
- \section1 FreeType Formats
-
- The \l {http://freetype.sourceforge.net/freetype2/index.html}{FreeType 2}
- library (and therefore \l{Qt for Embedded Linux}) can support the following font formats:
-
- \list
- \o TrueType (TTF)
- \o PostScript Type1 (PFA/PFB)
- \o Bitmap Distribution Format (BDF)
- \o CID-keyed Type1
- \o Compact Font Format (CFF)
- \o OpenType fonts
- \o SFNT-based bitmap fonts
- \o Portable Compiled Format (PCF)
- \o Microsoft Windows Font File Format (Windows FNT)
- \o Portable Font Resource (PFR)
- \o Type 42 (limited support)
- \endlist
-
- It is possible to add modules to the \l
- {http://freetype.sourceforge.net/freetype2/index.html}{FreeType 2}
- font engine to support other types of font files. For more
- information, see the font engine's own website: \l
- http://freetype.sourceforge.net/freetype2/index.html.
-
- Glyphs rendered using FreeType are shared efficiently between applications,
- reducing memory requirements and speeding up text rendering.
-
- \omit
- \l {Qt for Embedded Linux} will by default use the system FreeType library if it exists.
- Otherwise it will use a copy of the FreeType library in Qt, which by default only
- supports TrueType fonts to reduce footprint.
- \endomit
-
- \target QPF2
- \section1 Qt Prerendered Font (QPF2)
-
- The Qt Prerendered Font (QPF2) is an architecture-independent,
- light-weight and non-scalable font format specific to \l{Qt for Embedded Linux}.
-
- Nokia provides the cross-platform \l makeqpf tool, included in the
- \c tools directory of both \l {Qt} and \l{Qt for Embedded Linux}, which allows
- generation of QPF2 files from system fonts.
-
- QPF2 supports anti-aliasing and complex writing systems, using information
- from the corresponding TrueType font, if present on the system. The format
- is designed to be mapped directly to memory. The same format is used to
- share glyphs from non-prerendered fonts between applications.
-
- \target QPF
- \section1 Legacy Qt Prerendered Font (QPF)
-
- Nokia provides support for the legacy QPF format for compatibility
- reasons. QPF is based on the internal font engine data structure of Qt/Embedded
- versions 2 and 3.
-
- Note that the file name describes the font, for example \c helvetica_120_50.qpf
- is 12 point Helvetica while \c helvetica_120_50i.qpf is 12 point Helvetica \e italic.
-
- \omit
- \section1 Memory Requirements
-
- Taking advantage of the way the QPF format is structured, Qt for
- Embedded Linux memory-maps the data rather than reading and parsing it.
- This reduces RAM consumption even further.
-
- Scalable fonts use a larger amount of memory per font, but
- these fonts provide a memory saving if many different sizes of each
- font are needed.
- \endomit
-
- \section1 The Legacy \c fontdir File
-
- For compatibility reasons \l{Qt for Embedded Linux} supports the \c fontdir
- file, if present. The file defines additional fonts available to the
- application, and has the following format:
-
- \snippet doc/src/snippets/code/doc_src_emb-fonts.qdoc 0
-
- \table 100%
- \header \o Field \o Description
- \row \o \bold name
- \o The name of the font format, e.g.,\c Helvetica, \c Times, etc.
- \row \o \bold file
- \o The name of the file containing the font, e.g., \c
- helvR0810.bdf, \c verdana.ttf, etc.
- \row \o \bold renderer
- \o Specifies the font engine that should be used to render the
- font, currently only the FreeType font engine (\c FT) is
- supported.
- \row \o \bold italic
- \o Specifies whether the font is italic or not; the accepted
- values are \c y or \c n.
- \row \o \bold weight
- \o Specifies the font's weight: \c 50 is normal, \c 75 is bold,
- etc.
- \row \o \bold size
- \o Specifies the font size, i.e., point size * 10. For example, a
- value of 120 means 12pt. A value of 0 means that the font is
- scalable.
- \row \o \bold flags
- \o The following flag is supported:
- \list
- \o \c s: smooth (anti-aliased)
- \endlist
- All other flags are ignored.
- \endtable
-*/
diff --git a/doc/src/emb-framebuffer-howto.qdoc b/doc/src/emb-framebuffer-howto.qdoc
deleted file mode 100644
index 14400c21d..000000000
--- a/doc/src/emb-framebuffer-howto.qdoc
+++ /dev/null
@@ -1,53 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-embedded-testingframebuffer.html
-
- \title Testing the Linux Framebuffer
- \subtitle for Qt for Embedded Linux
- \ingroup qt-embedded-linux
-
- To test that the Linux framebuffer is set up correctly, and that
- the device permissions are correct, use the program found in
- \c examples/qws/framebuffer which opens the frame buffer and draws
- three squares of different colors.
-*/
diff --git a/doc/src/emb-install.qdoc b/doc/src/emb-install.qdoc
deleted file mode 100644
index e23cc1b77..000000000
--- a/doc/src/emb-install.qdoc
+++ /dev/null
@@ -1,197 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-embedded-install.html
-
- \title Installing Qt for Embedded Linux
- \ingroup qt-embedded-linux
- \ingroup installation
- \brief How to install Qt for Embedded Linux.
-
- This document describes how to install \l{Qt for Embedded Linux} in your
- development environment:
-
- \tableofcontents
-
- Please see the \l{Cross-Compiling Qt for Embedded Linux Applications}{cross
- compiling} and \l{Deploying Qt for Embedded Linux Applications}{deployment}
- documentation for details on how to install \l{Qt for Embedded Linux} on
- your target device.
-
- Note also that this installation procedure is written for Linux,
- and that it may need to be modified for other platforms.
-
- \section1 Step 1: Installing the License File (commercial editions only)
-
- If you have the commercial edition of \l{Qt for Embedded Linux}, the first step
- is to install your license file as \c $HOME/.qt-license.
-
- For the open source version you do not need a license file.
-
- \section1 Step 2: Unpacking the Archive
-
- First uncompress the archive in the preferred location, then
- unpack it:
-
- \snippet doc/src/snippets/code/doc_src_emb-install.qdoc 0
-
- This document assumes that the archive is unpacked in the
- following directory:
-
- \snippet doc/src/snippets/code/doc_src_emb-install.qdoc 1
-
- \section1 Step 3: Building the Library
-
- Before building the \l{Qt for Embedded Linux} library, run the \c
- ./configure script to configure the library for your development
- architecture. You can list all of the configuration system's
- options by typing \c {./configure -help}.
-
- Note that by default, \l{Qt for Embedded Linux} is configured for
- installation in the \c{/usr/local/Trolltech/QtEmbedded-%VERSION%}
- directory, but this can be changed by using the \c{-prefix}
- option. Alternatively, the \c{-prefix-install} option can be used
- to specify a "local" installation within the source directory.
-
- The configuration system is also designed to allow you to specify
- your platform architecture:
-
- \snippet doc/src/snippets/code/doc_src_emb-install.qdoc 2
-
- In general, all Linux systems which have framebuffer support can
- use the \c generic architecture. Other typical architectures are
- \c x86, \c arm and \c mips.
-
- \note If you want to build Qt for Embedded Linux for use with a virtual
- framebuffer, pass the \c{-qvfb} option to the \c configure
- script.
-
- To create the library and compile all the demos, examples, tools,
- and tutorials, type:
-
- \snippet doc/src/snippets/code/doc_src_emb-install.qdoc 3
-
- On some systems the \c make utility is named differently, e.g. \c
- gmake. The \c configure script tells you which \c make utility to
- use.
-
- If you did not configure \l{Qt for Embedded Linux} using the \c{-prefix-install}
- option, you need to install the library, demos, examples, tools,
- and tutorials in the appropriate place. To do this, type:
-
- \snippet doc/src/snippets/code/doc_src_emb-install.qdoc 4
-
- and enter the root password.
-
- \note You can use the \c INSTALL_ROOT environment variable to specify
- the location of the installed files when invoking \c{make install}.
-
- \section1 Step 4: Adjusting the Environment Variables
-
- In order to use \l{Qt for Embedded Linux}, the \c PATH variable must be extended
- to locate \c qmake, \c moc and other \l{Qt for Embedded Linux} tools, and the \c
- LD_LIBRARY_PATH must be extended for compilers that do not support
- \c rpath.
-
- To set the \c PATH variable, add the following lines to your \c
- .profile file if your shell is bash, ksh, zsh or sh:
-
- \snippet doc/src/snippets/code/doc_src_emb-install.qdoc 5
-
- In case your shell is csh or tcsh, add the following line to the
- \c .login file instead:
-
- \snippet doc/src/snippets/code/doc_src_emb-install.qdoc 6
-
- If you use a different shell, please modify your environment
- variables accordingly.
-
- For compilers that do not support \c rpath you must also extend
- the \c LD_LIBRARY_PATH environment variable to include
- \c /usr/local/Trolltech/QtEmbedded-%VERSION%/lib. Note that on Linux
- with GCC, this step is not needed.
-
- \section1 Step 5: Building the Virtual Framebuffer
-
- For development and debugging, \l{Qt for Embedded Linux} provides a virtual
- framebuffer as well as the option of running \l{Qt for Embedded Linux} as a VNC
- server. For a description of how to install the virtual
- framebuffer and how to use the VNC protocol, please consult the
- documentation at:
-
- \list
- \o \l {The Virtual Framebuffer}
- \o \l {The VNC Protocol and Qt for Embedded Linux}
- \endlist
-
- Note that the virtual framebuffer requires a Qt for X11
- installation. See \l {Installing Qt on X11 Platforms} for details.
-
- The Linux framebuffer, on the other hand, is enabled by default on
- all modern Linux distributions. For information on older versions,
- see \l http://en.tldp.org/HOWTO/Framebuffer-HOWTO.html. To test
- that the Linux framebuffer is set up correctly, use the program
- provided by the \l {Testing the Linux Framebuffer} document.
-
- That's all. \l{Qt for Embedded Linux} is now installed.
-
- \table 100%
- \row
- \o
- \bold {Customizing the Qt for Embedded Linux Library}
-
- When building embedded applications on low-powered devices,
- reducing the memory and CPU requirements is important.
-
- A number of options tuning the library's performance are
- available. But the most direct way of saving resources is to
- fine-tune the set of Qt features that is compiled. It is also
- possible to make use of accelerated graphics hardware.
-
- \list
- \o \l {Fine-Tuning Features in Qt}
- \o \l {Qt Performance Tuning}
- \o \l {Adding an Accelerated Graphics Driver to Qt for Embedded Linux}
- \endlist
-
- \endtable
-*/
diff --git a/doc/src/emb-kmap2qmap.qdoc b/doc/src/emb-kmap2qmap.qdoc
deleted file mode 100644
index 291a55317..000000000
--- a/doc/src/emb-kmap2qmap.qdoc
+++ /dev/null
@@ -1,84 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-embedded-kmap2qmap.html
- \title kmap2qmap
- \ingroup qt-embedded-linux
-
- \c kmap2qmap is a tool to generate keymaps for use on Embedded Linux.
- The source files have to be in standard Linux \c kmap format that is
- e.g. understood by the kernel's \c loadkeys command. This means you
- can use the following sources to generate \c qmap files:
-
- \list
- \o The \l {http://lct.sourceforge.net/}{Linux Console Tools (LCT)} project.
- \o \l {http://www.x.org/}{Xorg} X11 keymaps can be converted to the \c
- kmap format with the \c ckbcomp utility.
- \o Since \c kmap files are plain text files, they can also be hand crafted.
- \endlist
-
- The generated \c qmap files are size optimized binary files.
-
- \c kmap2qmap is a command line program, that needs at least 2 files as
- parameters. The last one will be the generated \c .qmap file, while all
- the others will be parsed as input \c .kmap files. For example:
-
- \code
- kmap2qmap i386/qwertz/de-latin1-nodeadkeys.kmap include/compose.latin1.inc de-latin1-nodeadkeys.qmap
- \endcode
-
- \c kmap2qmap does not support all the (pseudo) symbols that the Linux
- kernel supports. If you are converting a standard keymap you will get a
- lot of warnings for things like \c Show_Registers, \c Hex_A, etc.: you
- can safely ignore those.
-
- It also doesn't support numeric symbols (e.g. \c{keycode 1 = 4242},
- instead of \c{keycode 1 = colon}), since these are deprecated and can
- change from one kernel version to the other.
-
- On the other hand, \c kmap2qmap supports one additional, Qt specific,
- symbol: \c QtZap. The built-in US keymap has that symbol mapped tp
- \c{Ctrl+Alt+Backspace} and it serves as a shortcut to kill your QWS
- server (similiar to the X11 server).
-
- See also \l {Qt for Embedded Linux Character Input}
-*/
diff --git a/doc/src/emb-makeqpf.qdoc b/doc/src/emb-makeqpf.qdoc
deleted file mode 100644
index dc1196a81..000000000
--- a/doc/src/emb-makeqpf.qdoc
+++ /dev/null
@@ -1,53 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-embedded-makeqpf.html
- \title makeqpf
- \ingroup qt-embedded-linux
-
- \c makeqpf is a tool to generate pre-rendered fonts in QPF2 format for use on Embedded Linux.
-
- Qt 4 can read files in QPF2 format in addition to QPF files generated by older versions of
- \c makeqpf from Qt 2 or 3.
-
- \sa {Qt for Embedded Linux Fonts}
-*/
diff --git a/doc/src/emb-performance.qdoc b/doc/src/emb-performance.qdoc
deleted file mode 100644
index 9bc373b6a..000000000
--- a/doc/src/emb-performance.qdoc
+++ /dev/null
@@ -1,152 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-performance.html
- \title Qt Performance Tuning
- \ingroup qtce
- \ingroup qt-embedded-linux
- \brief Ways to improve performance on embedded platforms.
-
- When building embedded applications on low-powered devices,
- \l{Qt for Windows CE} and \l{Qt for Embedded Linux} provide
- a number of options that reduce the memory and/or CPU requirements
- by making various trade-offs. These options range from variations
- in programming style, to linking and memory allocation.
-
- Note that the most direct way of saving resources, is to avoid compiling
- in features that are not required. See the \l{Fine-Tuning Features in Qt}
- {fine tuning features} documentation for details.
-
- \tableofcontents
-
- \section1 Programming Style
-
- Rather than creating dialogs and widgets every time they are
- needed, and delete them when they are no longer required, create
- them once and use the QWidget::hide() and QWidget::show()
- functions whenever appropriate. To avoid a slow startup of the
- application, delay the creation of dialogs and widgets until they
- are requested. All this will improve the CPU performance, it
- requires a little more memory, but will be much faster.
-
- \section1 Static vs. Dynamic Linking
-
- A lot of CPU and memory is used by the ELF (Executable and Linking
- Format) linking process. Significant savings can be achieved by
- using a static build of the application suite; rather than having
- a collection of executables which link dynamically to Qt's
- libraries, all the applications is built into into a single
- executable which is statically linked to Qt's libraries.
-
- This improves the start-up time and reduces memory usage at the
- expense of flexibility (to add a new application, you must
- recompile the single executable) and robustness (if one
- application has a bug, it might harm other applications).
-
- \table 100%
- \row
- \o \bold {Creating a Static Build}
-
- To compile Qt as a static library, use the \c -static option when
- running configure:
-
- \snippet doc/src/snippets/code/doc_src_emb-performance.qdoc 0
-
- To build the application suite as an all-in-one application,
- design each application as a stand-alone widget (or set of
- widgets) with only minimal code in the \c main() function. Then,
- write an application that provides a means of switching between
- the applications. The \l Qt Extended platform is an example using this
- approach: It can be built either as a set of dynamically linked
- executables, or as a single static application.
-
- Note that the application still should link dynamically against
- the standard C library and any other libraries which might be used
- by other applications on the target device.
-
- \endtable
-
- When installing end-user applications, this approach may not be an
- option, but when building a single application suite for a device
- with limited CPU power and memory, this option could be very
- beneficial.
-
- \section1 Alternative Memory Allocation
-
- The libraries shipped with some C++ compilers on some platforms
- have poor performance in the built-in "new" and "delete"
- operators. Improved memory allocation and performance may be
- gained by re-implementing these functions:
-
- \snippet doc/src/snippets/code/doc_src_emb-performance.qdoc 1
-
- The example above shows the necessary code to switch to the plain
- C memory allocators.
-
- \section1 Bypassing the Backing Store
-
- When rendering, Qt uses the concept of a backing store; i.e., a
- paint buffer, to reduce flicker and to support graphics operations
- such as blending.
-
- The default behavior is for each client to render
- its widgets into memory while the server is responsible for
- putting the contents of the memory onto the screen. But when the
- hardware is known and well defined, as is often the case with
- software for embedded devices, it might be useful to bypass the
- backing store, allowing the clients to manipulate the underlying
- hardware directly.
- \if defined(qtce)
- This is achieved by setting the Qt::WA_PaintOnScreen window attribute
- for each widget.
- \else
-
- There are two approaches to direct painting: The first approach is
- to set the Qt::WA_PaintOnScreen window attribute for each widget,
- the other is to use the QDirectPainter class to reserve a region
- of the framebuffer.
- For more information, see the
- \l{Qt for Embedded Linux Architecture#Direct Painting}{direct painting}
- section of the \l{Qt for Embedded Linux Architecture}{architecture}
- documentation.
- \endif
-*/
diff --git a/doc/src/emb-pointer.qdoc b/doc/src/emb-pointer.qdoc
deleted file mode 100644
index 39a84822c..000000000
--- a/doc/src/emb-pointer.qdoc
+++ /dev/null
@@ -1,209 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-embedded-pointer.html
-
- \title Qt for Embedded Linux Pointer Handling
- \ingroup qt-embedded-linux
-
- When running a \l{Qt for Embedded Linux} application, it either runs as a
- server or connects to an existing server. The mouse driver is
- loaded by the server application when it starts running, using
- Qt's \l {How to Create Qt Plugins}{plugin system}.
-
- Internally in the client/server protocol, all system generated
- events, including pointer events, are passed to the server
- application which then propagates the event to the appropriate
- client. Note that pointer handling in \l{Qt for Embedded Linux} works for
- both mouse and mouse-like devices such as touch panels and
- trackballs.
-
- Contents:
-
- \tableofcontents
-
- \section1 Available Drivers
-
- \l{Qt for Embedded Linux} provides ready-made drivers for the MouseMan,
- IntelliMouse, Microsoft and Linux Touch Panel protocols, for the
- standard Linux Input Subsystem as well as the universal touch screen
- library, tslib. Run the \c configure script to list the available
- drivers:
-
- \if defined(QTOPIA_PHONE)
-
- \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 0
-
- \bold{Note:} By default only the PC mouse driver is enabled.
-
- The various drivers can be enabled and disabled using the \c
- configure script. For example:
-
- \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 1
-
- \else
-
- \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 2
-
- In the default Qt configuration, only the "pc" mouse driver is
- enabled. The various drivers can be enabled and disabled using
- the \c configure script. For example:
-
- \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 3
- \endif
-
- Custom mouse drivers can be implemented by subclassing the
- QWSMouseHandler class and creating a mouse driver plugin (derived
- from the QMouseDriverPlugin class). The default implementation of the
- QMouseDriverFactory class will automatically detect the plugin,
- loading the driver into the server application at run-time.
-
- If you are creating a driver for a device that needs calibration
- or noise reduction, such as a touchscreen, derive from the
- QWSCalibratedMouseHandler subclass instead to take advantage of
- its calibration functionality.
-
- \if defined(QTOPIA_PHONE)
- For a tutorial on how to add a new keyboard driver plug-in
- see: \l {Tutorial: Implementing a Device Plug-in}.
- \endif
-
- \section1 Specifying a Driver
-
- Provided that the "pc" mouse driver is enabled, \l{Qt for Embedded Linux} will
- try to auto-detect the mouse device if it is one of the supported
- types on \c /dev/psaux or one of the \c /dev/ttyS? serial
- lines. If multiple mice are detected, all may be used
- simultaneously.
-
- Note that \l{Qt for Embedded Linux} does not support auto-detection of \e
- {touch panels} in which case the driver must be specified
- explicitly to determine which device to use.
-
- To manually specify which driver to use, set the QWS_MOUSE_PROTO
- environment variable. For example (if the current shell is bash,
- ksh, zsh or sh):
-
- \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 4
-
- The valid values for the \c <driver> argument are \c MouseMan, \c
- IntelliMouse, \c Microsoft, \c LinuxTP, \c LinuxInput, \c
- Tslib and \l {QMouseDriverPlugin::keys()}{keys} identifying custom
- drivers, and the driver specific options are typically a device,
- e.g., \c /dev/mouse for mouse devices and \c /dev/ts for touch
- panels.
-
- Multiple mouse drivers can be specified in one go:
-
- \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 5
-
- Input will be read from all specified drivers.
-
- \table
- \header \o The Tslib Mouse Driver
- \row
- \o
-
- The tslib mouse driver inherits the QWSCalibratedMouseHandler
- class, providing calibration and noise reduction functionality in
- addition to generating mouse events for devices using the
- Universal Touch Screen Library.
-
- To be able to compile this mouse handler, \l{Qt for Embedded Linux} must be
- configured with the \c -qt-mouse-tslib option as described
- above. In addition, the tslib headers and library must be present
- in the build environment.
-
- The tslib sources can be downloaded from \l
- http://tslib.berlios.de. Use the \c configure script's -L and
- -I options to explicitly specify the location of the library and
- its headers:
-
- \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 7
-
- In order to use this mouse driver, tslib must also be correctly
- installed on the target machine. This includes providing a \c
- ts.conf configuration file and setting the neccessary environment
- variables (see the README file provided with tslib for details).
-
- The \c ts.conf file will usually contain the following two lines:
-
- \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 8
-
- To make \l{Qt for Embedded Linux} explicitly choose the tslib mouse
- handler, set the QWS_MOUSE_PROTO environment variable as explained
- above.
-
- \endtable
-
- \section1 Troubleshooting
-
- \section2 Device Files
-
- Make sure you are using the correct device file.
-
- As a first step, you can test whether the device file actually gives any
- output. For instance, if you have specified the mouse driver with
- \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 9
- then try examining
- the output from the device by entering the following command in a console:
- \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 10
-
- If you see output from the device printed on the console when you move
- the mouse, you are probably using the correct device file; otherwise, you
- will need to experiment to find the correct device file.
-
- \section2 File Permissions
-
- Make sure you have sufficient permissions to access the device file.
-
- The Qt for Embedded Linux server process needs at least read permission for the
- device file. Some drivers also require write access to the device file.
- For instance, if you have specified the mouse driver with
- \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 11
- then examine the permissions of the device file by entering the following
- command in a console:
- \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 12
-
- If the device file is actually a symbolic link to another file, you must
- change the permissions of the actual file instead.
-*/
diff --git a/doc/src/emb-porting.qdoc b/doc/src/emb-porting.qdoc
deleted file mode 100644
index 1afd1bec7..000000000
--- a/doc/src/emb-porting.qdoc
+++ /dev/null
@@ -1,193 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-embedded-porting-operatingsystem.html
-
- \title Porting Qt for Embedded Linux to Another Operating System
- \ingroup qt-embedded-linux
-
- \l{Qt for Embedded Linux} is reasonably platform-independent, making use of
- the standard C library and some POSIX functions, but only a Linux
- implementation is publically available. If you are looking for a
- non-Linux commercial implementation, it is worth contacting \l
- {mailto:qt-info@nokia.com}{qt-info@nokia.com} to see if we can
- help.
-
- There are several issues to be aware of if you plan to do your own
- port to another operating system. In particular you must resolve
- \l{Qt for Embedded Linux}'s shared memory and semaphores (used to share
- window regions), and you must provide something similar to
- Unix-domain sockets for inter-application communication. You must
- also provide a screen driver, and if you want to implement sound
- you must provide your own sound server. Finally you must modify
- the event dispatcher used by \l{Qt for Embedded Linux}.
-
- Contents:
-
- \tableofcontents
-
- \section1 Shared Memory and Semaphores
-
- \l{Qt for Embedded Linux} uses System V IPC (shared memory and semaphores)
- to share window regions between client and server. When porting,
- something similar must be provided; otherwise it will not be
- possible to run multiple applications.
-
- System V semaphores are also used for synchronizing access to the
- framebuffer.
-
- \list
- \o Modify \c qsharedmemory_p.cpp
- \o Modify \c qlock_qws.cpp
- \o Modify \c qwslock.cpp
- \endlist
-
- \section1 Inter-Application Communication
-
- To communicate between applications, \l{Qt for Embedded Linux} uses the
- Unix-domain sockets. When porting, something similar must be
- provided; otherwise it will not be possible to run multiple
- applications.
-
- It should be possible to use message queues or similar mechanisms
- to achieve this. With the exception of QCOP messages, individual
- messages should be no more than a few bytes in length (QCOP
- messages are generated by the client applications and not Qt for
- Embedded Linux).
-
- \list
- \o Modify \c qwssocket_qws.cpp
- \endlist
-
- \section1 Screen Management
-
- When rendering, the default behavior in \l{Qt for Embedded Linux} is
- for each client to render its widgets into memory while the server is
- responsible for putting the contents of the memory onto the screen
- using the screen driver.
-
- When porting, a new screen driver must be implemented, providing a
- byte pointer to a memory-mapped framebuffer and information about
- width, height and bit depth (the latter information can most
- likely be hard-coded).
-
- \list
- \o Reimplement \c qscreen_qws.cpp
- \endlist
-
- \section1 Sound Management
-
- To implement sound, \l{Qt for Embedded Linux} uses a Linux style device (\c
- /dev/dsp). If you want to use the \l{Qt for Embedded Linux} sound server on
- another platform you must reimplement it.
-
- \list
- \o Reimplement \c qsoundqss_qws.cpp
- \endlist
-
- \section1 Event Dispatching
-
- \l{Qt for Embedded Linux} uses an event dispatcher to pass events to and
- from the \l{Qt for Embedded Linux} server application. Reimplement the \c
- select() function to enable \l{Qt for Embedded Linux} to dispatch events on
- your platform.
-
- \list
- \o Modify \c qeventdispatcher_qws.cpp
- \endlist
-*/
-
-/*!
- \page qt-embedded-porting-device.html
-
- \title Porting Qt for Embedded Linux to a New Architecture
- \ingroup qt-embedded-linux
-
- When porting \l{Qt for Embedded Linux} to a new architecture there are
- several issues to be aware of: You must provide suitable hardware
- drivers, and you must ensure to implement platform dependent
- atomic operations to enable multithreading on the new
- architecture.
-
- \section1 Hardware Drivers
-
- When running a \l{Qt for Embedded Linux} application, it either runs as a
- server or connects to an existing server. All system generated
- events, including keyboard and mouse events, are passed to the
- server application which then propagates the event to the
- appropriate client. When rendering, the default behavior is for
- each client to render its widgets into memory while the server is
- responsible for putting the contents of the memory onto the
- screen.
-
- The various hardware drivers are loaded by the server
- application when it starts running, using Qt's \l {How to Create
- Qt Plugins}{plugin system}.
-
- Derive from the QWSMouseHandler, QWSKeyboardHandler and QScreen
- classes to create a custom mouse, keyboard and screen driver
- respectively. To load the drivers into the server application at
- runtime, you must also create corresponding plugins. See the
- following documentation for more details:
-
- \list
- \o \l{Qt for Embedded Linux Pointer Handling}{Pointer Handling}
- \o \l{Qt for Embedded Linux Character Input}{Character Input}
- \o \l{Qt for Embedded Linux Display Management}{Display Management}
- \endlist
-
- \section1 Atomic Operations
-
- Qt uses an optimization called \l {Implicitly Shared Classes}{implicit sharing}
- for many of its value classes; implicitly shared classes can safely be
- copied across threads. This technology is implemented using atomic
- operations; i.e., \l{Qt for Embedded Linux} requires that platform-specific
- atomic operations are implemented to support Linux.
-
- When porting \l{Qt for Embedded Linux} to a new architecture, it is
- important to ensure that the platform-specific atomic operations
- are implemented in a corresponding header file, and that this file
- is located in Qt's \c src/corelib/arch directory.
-
- See the \l {Implementing Atomic Operations}{atomic operations}
- documentation for more details.
-*/
diff --git a/doc/src/emb-qvfb.qdoc b/doc/src/emb-qvfb.qdoc
deleted file mode 100644
index 48e0d35bb..000000000
--- a/doc/src/emb-qvfb.qdoc
+++ /dev/null
@@ -1,296 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qvfb.html
-
- \title The Virtual Framebuffer
- \ingroup qt-embedded-linux
-
- \l{Qt for Embedded Linux} applications write directly to the
- framebuffer, eliminating the need for the X Window System and
- saving memory. For development and debugging purposes, a virtual
- framebuffer can be used, allowing \l{Qt for Embedded Linux}
- programs to be developed on a desktop machine, without switching
- between consoles and X11.
-
- QVFb is an X11 application supplied with Qt for X11 that provides
- a virtual framebuffer for Qt for Embedded Linux to use. To use it,
- you need to \l{Installing Qt on X11 Platforms}{configure and
- install Qt on X11 platforms} appropriately. Further requirements
- can be found in the \l{Qt for Embedded Linux Requirements}
- document.
-
- \image qt-embedded-virtualframebuffer.png
-
- The virtual framebuffer emulates a framebuffer using a shared
- memory region and the \c qvfb tool to display the framebuffer in a
- window. The \c qvfb tool also supports a feature known as a skin
- which can be used to change the look and feel of the display. The
- tool is located in Qt's \c tools/qvfb directory, and provides
- several additional features accessible through its \gui File and
- \gui View menus.
-
- Please note that the virtual framebuffer is a development tool
- only. No security issues have been considered in the virtual
- framebuffer design. It should be avoided in a production
- environment; i.e. do not configure production libraries with the
- \c -qvfb option.
-
- \tableofcontents
-
- \section1 Displaying the Virtual Framebuffer
-
- To run the \c qvfb tool displaying the virtual framebuffer, the
- \l{Qt for Embedded Linux} library must be configured and compiled
- with the \c -qvfb option:
-
- \snippet doc/src/snippets/code/doc_src_emb-qvfb.qdoc 0
-
- Ensure that you have all the
- \l{Qt for Embedded Linux Requirements#Additional X11 Libraries for QVFb}
- {necessary libraries} needed to build the tool, then compile and run the
- \c qvfb tool as a normal Qt for X11 application (i.e., do \e not compile
- it as a \l{Qt for Embedded Linux} application):
-
- \snippet doc/src/snippets/code/doc_src_emb-qvfb.qdoc 1
-
- The \c qvfb application supports the following command line
- options:
-
- \table
- \header \o Option \o Description
- \row
- \o \c {-width <value>}
- \o The width of the virtual framebuffer (default: 240).
- \row
- \o \c {-height <value>}
- \o The height of the virtual framebuffer (default: 320).
- \row
- \o \c {-depth <value>}
- \o The depth of the virtual framebuffer (1, 8 or 32; default: 8).
- \row
- \o \c -nocursor
- \o Do not display the X11 cursor in the framebuffer window.
- \row
- \o \c {-qwsdisplay <:id>}
- \o The \l{Qt for Embedded Linux} display ID (default: 0).
- \row
- \o \c {-skin <name>.skin}
- \o The preferred skin. Note that the skin must be located in Qt's
- \c /tools/qvfb/ directory.
- \row
- \o \c {-zoom <factor>}
- \o Scales the application view with the given factor.
-
- \endtable
-
- \section2 Skins
-
- A skin is a set of XML and pixmap files that tells the vitual
- framebuffer what it should look like and how it should behave; a
- skin can change the unrealistic default display into a display
- that is similar to the target device. To access the \c qvfb tool's
- menus when a skin is activated, right-click over the display.
-
- Note that a skin can have buttons which (when clicked) send
- signals to the Qt Extended application running inside the virtual
- framebuffer, just as would happen on a real device.
-
- \table 100%
- \row
- \o
- \bold {Target Device Environment}
-
- The \c qvfb tool provides various skins by default, allowing
- the user to view their application in an environment similar
- to their target device. The provided skins are:
-
- \list
- \o ClamshellPhone
- \o pda
- \o PDAPhone
- \o Qt ExtendedPDA
- \o Qt ExtendedPhone-Advanced
- \o Qt ExtendedPhone-Simple
- \o SmartPhone
- \o SmartPhone2
- \o SmartPhoneWithButtons
- \o TouchscreenPhone
- \o Trolltech-Keypad
- \o Trolltech-Touchscreen
- \endlist
-
- In addition, it is possible to create custom skins.
-
- \o \image qt-embedded-phone.png
- \o \image qt-embedded-pda.png
- \endtable
-
- \bold {Creating Custom Skins}
-
- The XML and pixmap files specifying a custom skin must be located
- in subdirectory of the Qt's \c /tools/qvfb directory, called \c
- /customskin.skin. See the ClamshellPhone skin for an example of the
- file structure:
-
- \snippet doc/src/snippets/code/doc_src_emb-qvfb.qdoc 2
-
- The \c /ClamshellPhone.skin directory contains the following files:
-
- \list
- \o \c ClamshellPhone.skin
- \o \c ClamshellPhone1-5.png
- \o \c ClamshellPhone1-5-pressed.png
- \o \c ClamshellPhone1-5-closed.png
- \o \c defaultbuttons.conf (only necessary for \l Qt Extended)
- \endlist
-
- Note that the \c defaultbuttons.conf file is only necessary if the
- skin is supposed to be used with \l Qt Extended (The file customizes
- the launch screen applications, orders the soft keys and provides
- input method hints). See the \l Qt Extended documentation for more
- information.
-
- \table 100%
- \header
- \o {3,1} The ClamshellPhone Skin
- \row
- \o {3,1}
-
- \snippet doc/src/snippets/code/doc_src_emb-qvfb.qdoc 3
-
- The \c ClamShellPhone.skin file quoted above, specifies three
- pixmaps: One for the normal skin (\c Up), one for the activated
- skin (\c Down) and one for the closed skin (\c Closed). In
- addition, it is possible to specify a pixmap for the cursor (using
- a \c Cursor variable).
-
- The file also specifies the screen size (\c Screen) and the number
- of available buttons (\c Areas). Then it describes the buttons
- themselves; each button is specified by its name, keycode and
- coordinates.
-
- The coordinates are a list of at least 2 points in clockwise order
- that define a shape for the button; a click inside this shape will
- be treated as a click on that button. While pressed, the pixels
- for the button are redrawn from the activated skin.
-
- \row
- \row
- \o
- \image qt-embedded-clamshellphone-closed.png The ClamshellPhone Skin (closed)
- \o
- \image qt-embedded-clamshellphone.png The ClamshellPhone Skin
- \o
- \image qt-embedded-clamshellphone-pressed.png The ClamshellPhone Skin (pressed)
- \row
- \o \c ClamshellPhone1-5-closed.png
- \o \c ClamshellPhone1-5.png
- \o \c ClamshellPhone1-5-pressed.png
- \endtable
-
- \section2 The File Menu
-
- \image qt-embedded-qvfbfilemenu.png
-
- The \gui File menu allows the user to configure the virtual
- framebuffer display (\gui File|Configure...), save a snapshot of
- the framebuffer contents (\gui {File|Save Image...}) and record
- the movements in the framebuffer (\gui File|Animation...).
-
- When choosing the \gui File|Configure menu item, the \c qvfb tool
- provides a configuration dialog allowing the user to customize the
- display of the virtual framebuffer. The user can modify the size
- and depth as well as the Gamma values, and also select the
- preferred skin (i.e. making the virtual framebuffer simulate the
- target device environment). In addition, it is possible to emulate
- a touch screen and a LCD screen.
-
- Note that when configuring (except when changing the Gamma values
- only), any applications using the virtual framebuffer will be
- terminated.
-
- \section2 The View Menu
-
- \image qt-embedded-qvfbviewmenu.png
-
- The \gui View menu allows the user to modify the target's refresh
- rate (\gui {View|Refresh Rate...}), making \c qvfb check for
- updated regions more or less frequently.
-
- The regions of the display that have changed are updated
- periodically, i.e. the virtual framebuffer is displaying discrete
- snapshots of the framebuffer rather than each individual drawing
- operation. For this reason drawing problems such as flickering may
- not be apparent until the program is run using a real framebuffer.
- If little drawing is being done, the framebuffer will not show any
- updates between drawing events. If an application is displaying an
- animation, the updates will be frequent, and the application and
- \c qvfb will compete for processor time.
-
- The \gui View menu also allows the user to zoom the view of the
- application (\gui {View|Zoom *}).
-
- \section1 Running Applications Using the Virtual Framebuffer
-
- Once the virtual framebuffer (the \c qvfb application) is running,
- it is ready for use: Start a server application (i.e. construct a
- QApplication object with the QApplication::GuiServer flag or use
- the \c -qws command line parameter. See the
- \l {Running Qt for Embedded Linux Applications}{running applications}
- documentation for details). For example:
-
- \snippet doc/src/snippets/code/doc_src_emb-qvfb.qdoc 4
-
- Note that as long as the virtual framebuffer is running and the
- current \l{Qt for Embedded Linux} configuration supports \c qvfb,
- \l{Qt for Embedded Linux} will automatically detect it and use it by
- default. Alternatively, the \c -display option can be used to
- specify the virtual framebuffer driver. For example:
-
- \snippet doc/src/snippets/code/doc_src_emb-qvfb.qdoc 5
-
- \warning If \c qvfb is not running (or the current
- \l{Qt for Embedded Linux} configuration doesn't support it) and the
- driver is not explicitly specified, \l{Qt for Embedded Linux} will
- write to the real framebuffer and the X11 display will be corrupted.
-*/
diff --git a/doc/src/emb-running.qdoc b/doc/src/emb-running.qdoc
deleted file mode 100644
index cb7a7ae66..000000000
--- a/doc/src/emb-running.qdoc
+++ /dev/null
@@ -1,210 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-embedded-running.html
-
- \title Running Qt for Embedded Linux Applications
- \ingroup qt-embedded-linux
-
- A \l{Qt for Embedded Linux} application requires a server application to be
- running, or to be the server application itself. Any \l{Qt for Embedded Linux}
- application can be the server application by constructing the QApplication
- object with the QApplication::GuiServer type, or by running the application
- with the \c -qws command line option.
-
- Applications can run using both single and multiple displays, and
- various command line options are available.
-
- Note that this document assumes that you either are using the
- \l{The Virtual Framebuffer} or that you are running \l{Qt for Embedded Linux}
- using the \l {The VNC Protocol and Qt for Embedded Linux}{VNC} protocol,
- \e or that you have the Linux framebuffer configured
- correctly and that no server process is running. (To test that the
- Linux framebuffer is set up correctly, use the program provided by
- the \l {Testing the Linux Framebuffer} document.)
-
- \tableofcontents
-
- \section1 Using a Single Display
-
- To run the application using a single display, change to a Linux
- console and select an application to run, e.g. \l {Text
- Edit}{demos/textedit}. Run the application with the \c -qws
- option:
-
- \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 0
-
- \table 100%
- \row
- \o
- Provided that the environment variables are adjusted properly
- during the \l {Installing Qt for Embedded Linux}{installation process}, you
- should see the \l {Text Edit} demo appear.
-
- It might be that the hardware drivers must be specified explicitly
- to make everything work properly. For more information, please
- consult the following documentation:
-
- \list
- \o \l{Qt for Embedded Linux Pointer Handling}{Pointer Handling}
- \o \l{Qt for Embedded Linux Character Input}{Character Input}
- \o \l{Qt for Embedded Linux Display Management}{Display Management}
- \endlist
-
- \o
- \inlineimage qt-embedded-runningapplication.png
- \endtable
-
- Additional applications can be run as clients, i.e., by running
- these applications \e without the \c -qws option they will connect
- to the existing server as clients. You can exit the server
- application at any time using \gui{Ctrl+Alt+Backspace}.
-
- \section1 Using Multiple Displays
-
- Qt for Embedded Linux also allows multiple displays to be used
- simultaneously. There are two ways of achieving this: Either run
- multiple Qt for Embedded Linux server processes, or use the
- ready-made \c Multi screen driver.
-
- When running multiple server processes, the screen driver (and
- display number) must be specified for each process using the \c
- -display command line option or by setting the QWS_DISPLAY
- environment variable. For example:
-
- \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 1
-
- See the \l {Qt for Embedded Linux Display Management}{display management}
- documentation for more details on how to specify a screen
- driver. Note that you must also specify the display (i.e., server
- process) when starting client applications:
-
- \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 2
-
- There is no way of moving a client from one display to another
- when running multiple server processes. Using the \c Multi screen
- driver, on the other hand, applications can easiliy be moved
- between the various screens.
-
- The \c Multi screen driver can be specified just like any other
- screen driver by using the \c -display command line option or by
- setting the QWS_DISPLAY environment variable. For example:
-
- \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 3
-
- See the \l {Qt for Embedded Linux Display Management}{display management}
- documentation for details regarding arguments.
-
- \section1 Command Line Options
-
- \table 100%
- \header
- \o Option \o Description
- \row
- \o \bold -fn <font>
- \o
- Defines the application font. For example:
- \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 4
- The font should be specified using an X logical font description.
- \row
- \o \bold -bg <color>
- \o
- Sets the default application background color. For example:
- \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 5
- The color-name must be one of the names recognized by the QColor constructor.
- \row
- \o \bold -btn <color> \o
- Sets the default button color. For example:
- \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 6
- The color-name must be one of the names recognized by the QColor constructor.
- \row
- \o \bold -fg <color> \o
- Sets the default application foreground color. For example:
- \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 7
- The color-name must be one of the names recognized by the QColor constructor.
- \row
- \o \bold -name <objectname> \o
- Sets the application name, i.e. the application object's object name. For example:
- \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 8
- \row
- \o \bold -title <title> \o
- Sets the application's title. For example:
- \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 9
- \row
- \o \bold -geometry <width>x<height>+<Xoffset>+<Yoffset> \o
- Sets the client geometry of the first window that is shown. For example:
- \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 10
- \row
- \o \bold -keyboard \o
- Enables the keyboard.
-
- See also: \l {Qt for Embedded Linux Character Input}.
- \row
- \o \bold -nokeyboard \o
- Disables the keyboard.
- \row
- \o \bold -mouse \o
- Enables the mouse cursor.
-
- See also: \l {Qt for Embedded Linux Pointer Handling}.
- \row
- \o \bold -nomouse \o
- Disables the mouse cursor.
- \row
- \o \bold -qws \o
- Runs the application as a server application, i.e. constructs a
- QApplication object of the QApplication::GuiServer type.
- \row
- \o \bold -display \o
- Specifies the screen driver.
-
- See also: \l {Qt for Embedded Linux Display Management}.
- \row
- \o \bold -decoration <style>\o
- Sets the application decoration. For example:
- \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 11
- The supported styles are \c windows, \c default and \c styled.
-
- See also QDecoration.
-
- \endtable
-*/
diff --git a/doc/src/emb-vnc.qdoc b/doc/src/emb-vnc.qdoc
deleted file mode 100644
index c8289f8b7..000000000
--- a/doc/src/emb-vnc.qdoc
+++ /dev/null
@@ -1,141 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-embedded-vnc.html
- \brief A guide to using Qt for Embedded Linux applications as VNC servers
- and clients.
-
- \title The VNC Protocol and Qt for Embedded Linux
- \ingroup qt-embedded-linux
-
- VNC (Virtual Network Computing) software makes it possible to view
- and interact with one computer (the "server") from any other
- computer or mobile device (the "viewer") anywhere on a network.
-
- \image qt-embedded-vnc-screen.png
-
- VNC clients are available for a vast array of display systems, including
- X11, Mac OS X and Windows.
-
- \section1 Configuring Qt with VNC Capabilities
-
- To run a \l{Qt for Embedded Linux} application using the VNC protocol, the
- \l{Qt for Embedded Linux} library must be configured and compiled with the
- \c -qt-gfx-vnc option:
-
- \snippet doc/src/snippets/code/doc_src_emb-vnc.qdoc 0
-
- \section1 Running a Server Application
-
- Start a server application by specifying the \c -qws command
- line option when running the application. (This can also be
- specified in the application's source code.)
- Use the \c -display command line option to specify the VNC server's
- driver and the virtual screen to use. For example:
-
- \snippet doc/src/snippets/code/doc_src_emb-vnc.qdoc 1
-
- The application will act as a VNC server which can be accessed using
- an ordinary VNC client, either on the development machine or from a
- different machine on a network.
-
- For example, using the X11 VNC client to view the application from the
- same machine:
-
- \snippet doc/src/snippets/code/doc_src_emb-vnc.qdoc 2
-
- To interact with the application from another machine on the network,
- run a VNC client pointing to the machine that is running the server
- application.
-
- \l{Qt for Embedded Linux} will create a 640 by 480 pixel display by
- default. Alternatively, the \c QWS_SIZE environment variable can be
- used to set another size; e.g., \c{QWS_SIZE=240x320}.
-
- \section1 Running Client Applications
-
- If you want to run more than one application on the same display, you
- only need to start the first one as a server application, using the
- \c -qws command line option to indicate that it will manage other
- windows.
-
- \snippet doc/src/snippets/code/doc_src_emb-vnc.qdoc Starting server
-
- Subsequent client applications can be started \e without the \c -qws
- option, but will each require the same \c -display option and argument
- as those used for the server.
-
- \snippet doc/src/snippets/code/doc_src_emb-vnc.qdoc Starting clients
-
- However, for the clients, this option will not cause a new VNC server
- to be started, but only indicates that their windows will appear on the
- virtual screen managed by the server application.
-
- \section1 Related Resources
-
- It is not always necessary to specify the \c -qws command line option
- when running a server application as long as the QApplication object
- used by the application has been constructed with the
- QApplication::GuiServer flag.
-
- See the \l{Running Qt for Embedded Linux Applications}{running applications}
- documentation for more details about server and client applications.
-
- \table
- \row
- \o \bold {The Virtual Framebuffer}
-
- The \l{The Virtual Framebuffer}{virtual framebuffer} is
- an alternative technique recommended for development and debugging
- purposes.
-
- The virtual framebuffer emulates a framebuffer using a shared
- memory region and the \c qvfb tool to display the framebuffer in a
- window.
-
- Its use of shared memory makes the virtual framebuffer much faster
- and smoother than using the VNC protocol, but it does not operate
- over a network.
-
- \o \inlineimage qt-embedded-virtualframebuffer.png
- \endtable
-*/
diff --git a/doc/src/eventsandfilters.qdoc b/doc/src/eventsandfilters.qdoc
deleted file mode 100644
index a67e523e7..000000000
--- a/doc/src/eventsandfilters.qdoc
+++ /dev/null
@@ -1,221 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page eventsandfilters.html
- \title Events and Event Filters
- \ingroup architecture
- \brief A guide to event handling in Qt.
-
- In Qt, events are objects, derived from the abstract QEvent class,
- that represent things that have happened either within an application
- or as a result of outside activity that the application needs to know
- about. Events can be received and handled by any instance of a
- QObject subclass, but they are especially relevant to widgets. This
- document describes how events are delivered and handled in a typical
- application.
-
- \tableofcontents
-
- \section1 How Events are Delivered
-
- When an event occurs, Qt creates an event object to represent it by
- constructing an instance of the appropriate QEvent subclass, and
- delivers it to a particular instance of QObject (or one of its
- subclasses) by calling its \l{QObject::}{event()} function.
-
- This function does not handle the event itself; based on the type
- of event delivered, it calls an event handler for that specific
- type of event, and sends a response based on whether the event
- was accepted or ignored.
-
- \omit
- Event delivery means that an
- event has occurred, the QEvent indicates precisely what, and the
- QObject needs to respond. Most events are specific to QWidget and its
- subclasses, but there are important events that aren't related to
- graphics (e.g., \l{QTimer}{timer events}).
- \endomit
-
- Some events, such as QMouseEvent and QKeyEvent, come from the
- window system; some, such as QTimerEvent, come from other sources;
- some come from the application itself.
-
- \section1 Event Types
-
- Most events types have special classes, notably QResizeEvent,
- QPaintEvent, QMouseEvent, QKeyEvent, and QCloseEvent. Each class
- subclasses QEvent and adds event-specific functions. For example,
- QResizeEvent adds \l{QResizeEvent::}{size()} and
- \l{QResizeEvent::}{oldSize()} to enable widgets to discover how
- their dimensions have been changed.
-
- Some classes support more than one actual event type. QMouseEvent
- supports mouse button presses, double-clicks, moves, and other
- related operations.
-
- Each event has an associated type, defined in QEvent::Type, and this
- can be used as a convenient source of run-time type information to
- quickly determine which subclass a given event object was constructed
- from.
-
- Since programs need to react in varied and complex ways, Qt's
- event delivery mechanisms are flexible. The documentation for
- QCoreApplication::notify() concisely tells the whole story; the
- \e{Qt Quarterly} article
- \l{http://qt.nokia.com/doc/qq/qq11-events.html}{Another Look at Events}
- rehashes it less concisely. Here we will explain enough for 95%
- of applications.
-
- \section1 Event Handlers
-
- The normal way for an event to be delivered is by calling a virtual
- function. For example, QPaintEvent is delivered by calling
- QWidget::paintEvent(). This virtual function is responsible for
- reacting appropriately, normally by repainting the widget. If you
- do not perform all the necessary work in your implementation of the
- virtual function, you may need to call the base class's implementation.
-
- For example, the following code handles left mouse button clicks on
- a custom checkbox widget while passing all other button clicks to the
- base QCheckBox class:
-
- \snippet doc/src/snippets/events/events.cpp 0
-
- If you want to replace the base class's function, you must
- implement everything yourself. However, if you only want to extend
- the base class's functionality, then you implement what you want and
- call the base class to obtain the default behavior for any cases you
- do not want to handle.
-
- Occasionally, there isn't such an event-specific function, or the
- event-specific function isn't sufficient. The most common example
- involves \key Tab key presses. Normally, QWidget intercepts these to
- move the keyboard focus, but a few widgets need the \key{Tab} key for
- themselves.
-
- These objects can reimplement QObject::event(), the general event
- handler, and either do their event handling before or after the usual
- handling, or they can replace the function completely. A very unusual
- widget that both interprets \key Tab and has an application-specific
- custom event might contain the following \l{QObject::event()}{event()}
- function:
-
- \snippet doc/src/snippets/events/events.cpp 1
-
- Note that QWidget::event() is still called for all of the cases not
- handled, and that the return value indicates whether an event was
- dealt with; a \c true value prevents the event from being sent on
- to other objects.
-
- \section1 Event Filters
-
- Sometimes an object needs to look at, and possibly intercept, the
- events that are delivered to another object. For example, dialogs
- commonly want to filter key presses for some widgets; for example,
- to modify \key{Return}-key handling.
-
- The QObject::installEventFilter() function enables this by setting
- up an \e{event filter}, causing a nominated filter object to receive
- the events for a target object in its QObject::eventFilter()
- function. An event filter gets to process events before the target
- object does, allowing it to inspect and discard the events as
- required. An existing event filter can be removed using the
- QObject::removeEventFilter() function.
-
- When the filter object's \l{QObject::}{eventFilter()} implementation
- is called, it can accept or reject the event, and allow or deny
- further processing of the event. If all the event filters allow
- further processing of an event (by each returning \c false), the event
- is sent to the target object itself. If one of them stops processing
- (by returning \c true), the target and any later event filters do not
- get to see the event at all.
-
- \snippet doc/src/snippets/eventfilters/filterobject.cpp 0
-
- The above code shows another way to intercept \key{Tab} key press
- events sent to a particular target widget. In this case, the filter
- handles the relevant events and returns \c true to stop them from
- being processed any further. All other events are ignored, and the
- filter returns \c false to allow them to be sent on to the target
- widget, via any other event filters that are installed on it.
-
- It is also possible to filter \e all events for the entire application,
- by installing an event filter on the QApplication or QCoreApplication
- object. Such global event filters are called before the object-specific
- filters. This is very powerful, but it also slows down event delivery
- of every single event in the entire application; the other techniques
- discussed should generally be used instead.
-
- \section1 Sending Events
-
- Many applications want to create and send their own events. You can
- send events in exactly the same ways as Qt's own event loop by
- constructing suitable event objects and sending them with
- QCoreApplication::sendEvent() and QCoreApplication::postEvent().
-
- \l{QCoreApplication::}{sendEvent()} processes the event immediately.
- When it returns, the event filters and/or the object itself have
- already processed the event. For many event classes there is a function
- called isAccepted() that tells you whether the event was accepted
- or rejected by the last handler that was called.
-
- \l{QCoreApplication::}{postEvent()} posts the event on a queue for
- later dispatch. The next time Qt's main event loop runs, it dispatches
- all posted events, with some optimization. For example, if there are
- several resize events, they are are compressed into one. The same
- applies to paint events: QWidget::update() calls
- \l{QCoreApplication::}{postEvent()}, which eliminates flickering and
- increases speed by avoiding multiple repaints.
-
- \l{QCoreApplication::}{postEvent()} is also used during object
- initialization, since the posted event will typically be dispatched
- very soon after the initialization of the object is complete.
- When implementing a widget, it is important to realise that events
- can be delivered very early in its lifetime so, in its constructor,
- be sure to initialize member variables early on, before there's any
- chance that it might receive an event.
-
- To create events of a custom type, you need to define an event
- number, which must be greater than QEvent::User, and you may need to
- subclass QEvent in order to pass specific information about your
- custom event. See the QEvent documentation for further details.
-*/
diff --git a/doc/src/examples-overview.qdoc b/doc/src/examples-overview.qdoc
deleted file mode 100644
index 50c19fa31..000000000
--- a/doc/src/examples-overview.qdoc
+++ /dev/null
@@ -1,367 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page examples-overview.html
- \title An Overview of Qt's Examples
- \brief A short guide to the different categories of examples included with Qt.
- \ingroup howto
-
- Qt is supplied with a variety of examples that cover almost every aspect
- of development. These examples are ordered by functional area, but many
- examples often use features from many parts of Qt to highlight one area
- in particular.
-
- This document provides a brief overview of each example category and
- provides links to the more formal \l{Qt Examples}{list of examples}.
-
- \section1 \l{Qt Examples#Widgets}{Widgets}
-
- \l{Qt Examples#Widgets}{\inlineimage widget-examples.png
- }
-
- Qt comes with a large range of standard widgets that users of modern
- applications have come to expect.
-
- You can also develop your own custom widgets and controls, and use them
- alongside standard widgets.
-
- It is even possible to provide custom styles and themes for widgets that can
- be used to change the appearance of standard widgets and appropriately
- written custom widgets.
-
- \section1 \l{Qt Examples#Dialogs}{Dialogs}
-
- \l{Qt Examples#Dialogs}{\inlineimage dialog-examples.png
- }
-
- Qt includes standard dialogs for many common operations, such as file
- selection, printing, and color selection.
-
- Custom dialogs can also be created for specialized modal or modeless
- interactions with users.
-
- \section1 \l{Qt Examples#Main Windows}{Main Windows}
-
- \l{Qt Examples#Main Windows}{\inlineimage mainwindow-examples.png
- }
-
- All the standard features of application main windows are provided by Qt.
-
- Main windows can have pull down menus, tool bars, and dock windows. These
- separate forms of user input are unified in an integrated action system that
- also supports keyboard shortcuts and accelerator keys in menu items.
-
- \section1 \l{Qt Examples#Layouts}{Layouts}
-
- \l{Qt Examples#Layouts}{\inlineimage layout-examples.png
- }
-
- Qt uses a layout-based approach to widget management. Widgets are arranged in
- the optimal positions in windows based on simple layout rules, leading to a
- consistent look and feel.
-
- Custom layouts can be used to provide more control over the positions and
- sizes of child widgets.
-
- \section1 \l{Qt Examples#Painting}{Painting}
-
- \l{Qt Examples#Painting}{\inlineimage painting-examples.png
- }
-
- Qt's painting system is able to render vector graphics, images, and outline
- font-based text with sub-pixel accuracy accuracy using anti-aliasing to
- improve rendering quality.
-
- These examples show the most common techniques that are used when painting
- with Qt, from basic concepts such as drawing simple primitives to the use of
- transformations.
-
- \section1 \l{Qt Examples#Item Views}{Item Views}
-
- \l{Qt Examples#Item Views}{\inlineimage itemview-examples.png
- }
-
- Item views are widgets that typically display data sets. Qt 4's model/view
- framework lets you handle large data sets by separating the underlying data
- from the way it is represented to the user, and provides support for
- customized rendering through the use of delegates.
-
- \section1 \l{Qt Examples#Graphics View}{Graphics View}
-
- \l{Qt Examples#Graphics View}{\inlineimage graphicsview-examples.png
- }
-
- Qt is provided with a comprehensive canvas through the GraphicsView
- classes.
-
- These examples demonstrate the fundamental aspects of canvas programming
- with Qt.
-
- \section1 \l{Qt Examples#Rich Text}{Rich Text}
-
- \l{Qt Examples#Rich Text}{\inlineimage richtext-examples.png
- }
-
- Qt provides powerful document-oriented rich text engine that supports Unicode
- and right-to-left scripts. Documents can be manipulated using a cursor-based
- API, and their contents can be imported and exported as both HTML and in a
- custom XML format.
-
- \section1 \l{Qt Examples#Tools}{Tools}
-
- \l{Qt Examples#Tools}{\inlineimage tool-examples.png
- }
-
- Qt is equipped with a range of capable tool classes, from containers and
- iterators to classes for string handling and manipulation.
-
- Other classes provide application infrastructure support, handling plugin
- loading and managing configuration files.
-
- \section1 \l{Qt Examples#Desktop}{Desktop}
-
- \l{Qt Examples#Desktop}{\inlineimage desktop-examples.png
- }
-
- Qt provides features to enable applications to integrate with the user's
- preferred desktop environment.
-
- Features such as system tray icons, access to the desktop widget, and
- support for desktop services can be used to improve the appearance of
- applications and take advantage of underlying desktop facilities.
-
- \section1 \l{Qt Examples#Drag and Drop}{Drag and Drop}
-
- \l{Qt Examples#Drag and Drop}{\inlineimage draganddrop-examples.png
- }
-
- Qt supports native drag and drop on all platforms via an extensible
- MIME-based system that enables applications to send data to each other in the
- most appropriate formats.
-
- Drag and drop can also be implemented for internal use by applications.
-
- \section1 \l{Qt Examples#Threads}{Threads}
-
- \l{Qt Examples#Threads}{\inlineimage thread-examples.png
- }
-
- Qt 4 makes it easier than ever to write multithreaded applications. More
- classes have been made usable from non-GUI threads, and the signals and slots
- mechanism can now be used to communicate between threads.
-
- Additionally, it is now possible to move objects between threads.
-
- \section1 \l{Qt Examples#Concurrent Programming}{Concurrent Programming}
-
- The QtConcurrent namespace includes a collection of classes and functions
- for straightforward concurrent programming.
-
- These examples show how to apply the basic techniques of concurrent
- programming to simple problems.
-
- \section1 \l{Qt Examples#Network}{Network}
-
- \l{Qt Examples#Network}{\inlineimage network-examples.png
- }
-
- Qt is provided with an extensive set of network classes to support both
- client-based and server side network programming.
-
- These examples demonstrate the fundamental aspects of network programming
- with Qt.
-
- \section1 \l{Qt Examples#XML}{XML}
-
- \l{Qt Examples#XML}{\inlineimage xml-examples.png
- }
-
- XML parsing and handling is supported through SAX and DOM compliant APIs.
-
- Qt's SAX compliant classes allow you to parse XML incrementally; the DOM
- classes enable more complex document-level operations to be performed on
- XML files.
-
- \section1 \l{Qt Examples#XQuery, XPath}{XQuery, XPath}
-
- Qt provides an XQuery/XPath engine, QtXmlPatterns, for querying XML
- files and custom data models, similar to the model/view framework.
-
- \section1 \l{Qt Examples#OpenGL}{OpenGL}
-
- \l{Qt Examples#OpenGL}{\inlineimage opengl-examples.png
- }
-
- Qt provides support for integration with OpenGL implementations on all
- platforms, giving developers the opportunity to display hardware accelerated
- 3D graphics alongside a more conventional user interface.
-
- These examples demonstrate the basic techniques used to take advantage of
- OpenGL in Qt applications.
-
- \section1 \l{Qt Examples#Multimedia}{Multimedia}
-
- \l{Qt Examples#Multimedia}
-
- Qt provides low-level audio support on linux,windows and mac platforms by default and
- an audio plugin API to allow developers to implement there own audio support for
- custom devices and platforms.
-
- These examples demonstrate the basic techniques used to take advantage of
- Audio API in Qt applications.
-
- \section1 \l{Qt Examples#SQL}{SQL}
-
- \l{Qt Examples#SQL}{\inlineimage sql-examples.png
- }
-
- Qt provides extensive database interoperability, with support for products
- from both open source and proprietary vendors.
-
- SQL support is integrated with Qt's model/view architecture, making it easier
- to provide GUI integration for your database applications.
-
- \section1 \l{Qt Examples#Help System}{Help System}
-
- \l{Qt Examples#Help System}{\inlineimage assistant-examples.png
- }
-
- Support for interactive help is provided by the Qt Assistant application.
- Developers can take advantages of the facilities it offers to display
- specially-prepared documentation to users of their applications.
-
- \section1 \l{Qt Examples#Qt Designer}{Qt Designer}
-
- \l{Qt Examples#Qt Designer}{\inlineimage designer-examples.png
- }
-
- Qt Designer is a capable graphical user interface designer that lets you
- create and configure forms without writing code. GUIs created with
- Qt Designer can be compiled into an application or created at run-time.
-
- \section1 \l{Qt Examples#UiTools}{UiTools}
-
- \l{Qt Examples#UiTools}{\inlineimage uitools-examples.png
- }
-
- Qt is equipped with a range of capable tool classes, from containers and
- iterators to classes for string handling and manipulation.
-
- Other classes provide application infrastructure support, handling plugin
- loading and managing configuration files.
-
- \section1 \l{Qt Examples#Qt Linguist}{Qt Linguist}
-
- \l{Qt Examples#Qt Linguist}{\inlineimage linguist-examples.png
- }
-
- Internationalization is a core feature of Qt. These examples show how to
- access translation and localization facilities at run-time.
-
- \section1 \l{Qt Examples#Qt Script}{Qt Script}
-
- \l{Qt Examples#Qt Script}{\inlineimage qtscript-examples.png
- }
-
- Qt is provided with a powerful embedded scripting environment through the QtScript
- classes.
-
- These examples demonstrate the fundamental aspects of scripting applications
- with Qt.
-
- \section1 \l{Qt Examples#Phonon Multimedia Framework}{Phonon Multimedia Framework}
-
- \l{Qt Examples#Phonon Multimedia Framework}{\inlineimage phonon-examples.png
- }
-
- The Phonon Multimedia Framework brings multimedia support to Qt applications.
-
- The examples and demonstrations provided show how to play music and movies
- using the Phonon API.
-
- \section1 \l{Qt Examples#WebKit}{WebKit}
-
- \l{Qt Examples#WebKit}{\inlineimage webkit-examples.png
- }
-
- Qt provides an integrated Web browser component based on WebKit, the popular
- open source browser engine.
-
- These examples and demonstrations show a range of different uses for WebKit,
- from displaying Web pages within a Qt user interface to an implementation of
- a basic function Web browser.
-
- \section1 \l{Qt Examples#State Machine}{State Machine}
-
- Qt provides a powerful hierchical finite state machine through the Qt State
- Machine classes.
-
- These examples demonstrate the fundamental aspects of implementing
- Statecharts with Qt.
-
- \section1 \l{Qt Examples#Qt for Embedded Linux}{Qt for Embedded Linux}
-
- \l{Qt Examples#Qt for Embedded Linux}{\inlineimage qt-embedded-examples.png
- }
-
- These examples show how to take advantage of features specifically designed
- for use on systems with limited resources, specialized hardware, and small
- screens.
-
- \section1 \l{Qt Examples#ActiveQt}{ActiveQt}
-
- Qt is supplied with a number of example applications and demonstrations that
- have been written to provide developers with examples of the Qt API in use,
- highlight good programming practice, and showcase features found in each of
- Qt's core technologies.
-
- The example and demo launcher can be used to explore the different categories
- available. It provides an overview of each example, lets you view the
- documentation in Qt Assistant, and is able to launch examples and demos.
-
- \section1 \l{http://qt.nokia.com/doc/qq}{Another Source of Examples}
-
- One more valuable source for examples and explanations of Qt
- features is the archive of the \l {http://qt.nokia.com/doc/qq}
- {Qt Quarterly}.
-
-*/
diff --git a/doc/src/examples.qdoc b/doc/src/examples.qdoc
deleted file mode 100644
index 0181e09f9..000000000
--- a/doc/src/examples.qdoc
+++ /dev/null
@@ -1,437 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page examples.html
- \title Qt Examples
- \brief Information about the example programs provided with Qt.
- \ingroup howto
-
- This is the list of examples in Qt's \c examples directory. The
- examples demonstrate Qt features in small, self-contained
- programs. They are not all designed to be impressive when you run
- them, but their source code is carefully written to show good Qt
- programming practices. You can launch any of these programs from the
- \l{Examples and Demos Launcher} application.
-
- If you are new to Qt, you should probably start by going through
- the \l{Tutorials} before you have a look at the
- \l{mainwindows/application}{Application} example.
-
- In addition to the examples and the tutorial, Qt includes a
- \l{Qt Demonstrations}{selection of demos} that deliberately show off
- Qt's features. You might want to look at these as well.
-
- One more valuable source for examples and explanations of Qt
- features is the archive of the \l {Qt Quarterly}.
-
- In the list below, examples marked with an asterisk (*) are fully
- documented. Eventually, all the examples will be fully documented,
- but sometimes we include an example before we have time to write
- about it, because someone might need it right now.
-
- Categories:
-
- \tableofcontents
-
- \section1 ActiveQt
-
- \list
- \o \l{activeqt/comapp}{COM App}\raisedaster
- \o \l{Dot Net Example (ActiveQt)}{Dot Net}\raisedaster
- \o \l{activeqt/hierarchy}{Hierarchy}\raisedaster
- \o \l{activeqt/menus}{Menus}\raisedaster
- \o \l{activeqt/multiple}{Multiple}\raisedaster
- \o \l{activeqt/opengl}{OpenGL}\raisedaster
- \o \l{activeqt/qutlook}{Qutlook}\raisedaster
- \o \l{activeqt/simple}{Simple}\raisedaster
- \o \l{activeqt/webbrowser}{Web Browser}\raisedaster
- \o \l{activeqt/wrapper}{Wrapper}\raisedaster
- \endlist
-
- \section1 Animation
-
- \list
- \o \l{animation/moveblocks}{Move Blocks}\raisedaster
- \o \l{animation/stickman}{Stick man}\raisedaster
- \endlist
-
- \section1 Concurrent Programming
-
- \list
- \o \l{qtconcurrent/imagescaling}{QtConcurrent Asynchronous Image Scaling}
- \o \l{qtconcurrent/map}{QtConcurrent Map}
- \o \l{qtconcurrent/progressdialog}{QtConcurrent Progress Dialog}
- \o \l{qtconcurrent/runfunction}{QtConcurrent Run Function}
- \o \l{qtconcurrent/wordcount}{QtConcurrent Word Count}
- \endlist
-
- \section1 D-Bus
- \list
- \o \l{dbus/dbus-chat}{Chat}
- \o \l{dbus/complexpingpong}{Complex Ping Pong}
- \o \l{dbus/listnames}{List Names}
- \o \l{dbus/pingpong}{Ping Pong}
- \o \l{dbus/remotecontrolledcar}{Remote Controlled Car}
- \endlist
-
- \section1 Desktop
-
- \list
- \o \l{desktop/screenshot}{Screenshot}\raisedaster
- \o \l{desktop/systray}{System Tray}\raisedaster
- \endlist
-
- \section1 Dialogs
-
- \list
- \o \l{dialogs/classwizard}{Class Wizard}\raisedaster
- \o \l{dialogs/configdialog}{Config Dialog}
- \o \l{dialogs/extension}{Extension}\raisedaster
- \o \l{dialogs/findfiles}{Find Files}\raisedaster
- \o \l{dialogs/licensewizard}{License Wizard}\raisedaster
- \o \l{dialogs/standarddialogs}{Standard Dialogs}
- \o \l{dialogs/tabdialog}{Tab Dialog}\raisedaster
- \o \l{dialogs/trivialwizard}{Trivial Wizard}
- \endlist
-
- \section1 Drag and Drop
-
- \list
- \o \l{draganddrop/delayedencoding}{Delayed Encoding}\raisedaster
- \o \l{draganddrop/draggableicons}{Draggable Icons}
- \o \l{draganddrop/draggabletext}{Draggable Text}
- \o \l{draganddrop/dropsite}{Drop Site}
- \o \l{draganddrop/fridgemagnets}{Fridge Magnets}\raisedaster
- \o \l{draganddrop/puzzle}{Drag and Drop Puzzle}
- \endlist
-
- \section1 Graphics View
-
- \list
- \o \l{graphicsview/collidingmice}{Colliding Mice}\raisedaster
- \o \l{graphicsview/diagramscene}{Diagram Scene}\raisedaster
- \o \l{graphicsview/dragdroprobot}{Drag and Drop Robot}
- \o \l{graphicsview/elasticnodes}{Elastic Nodes}
- \o \l{graphicsview/portedasteroids}{Ported Asteroids}
- \o \l{graphicsview/portedcanvas}{Ported Canvas}
- \endlist
-
- \section1 Help System
-
- \list
- \o \l{help/simpletextviewer}{Simple Text Viewer}\raisedaster
- \endlist
-
- \section1 Item Views
-
- \list
- \o \l{itemviews/addressbook}{Address Book}\raisedaster
- \o \l{itemviews/basicsortfiltermodel}{Basic Sort/Filter Model}
- \o \l{itemviews/chart}{Chart}
- \o \l{itemviews/coloreditorfactory}{Color Editor Factory}\raisedaster
- \o \l{itemviews/combowidgetmapper}{Combo Widget Mapper}\raisedaster
- \o \l{itemviews/customsortfiltermodel}{Custom Sort/Filter Model}\raisedaster
- \o \l{itemviews/dirview}{Dir View}
- \o \l{itemviews/editabletreemodel}{Editable Tree Model}\raisedaster
- \o \l{itemviews/fetchmore}{Fetch More}\raisedaster
- \o \l{itemviews/frozencolumn}{Frozen Column}\raisedaster
- \o \l{itemviews/pixelator}{Pixelator}\raisedaster
- \o \l{itemviews/puzzle}{Puzzle}
- \o \l{itemviews/simpledommodel}{Simple DOM Model}\raisedaster
- \o \l{itemviews/simpletreemodel}{Simple Tree Model}\raisedaster
- \o \l{itemviews/simplewidgetmapper}{Simple Widget Mapper}\raisedaster
- \o \l{itemviews/spinboxdelegate}{Spin Box Delegate}\raisedaster
- \o \l{itemviews/stardelegate}{Star Delegate}\raisedaster
- \endlist
-
- \section1 Layouts
-
- \list
- \o \l{layouts/basiclayouts}{Basic Layouts}\raisedaster
- \o \l{layouts/borderlayout}{Border Layout}
- \o \l{layouts/dynamiclayouts}{Dynamic Layouts}
- \o \l{layouts/flowlayout}{Flow Layout}
- \endlist
-
- \section1 Main Windows
-
- \list
- \o \l{mainwindows/application}{Application}\raisedaster
- \o \l{mainwindows/dockwidgets}{Dock Widgets}\raisedaster
- \o \l{mainwindows/mdi}{MDI}
- \o \l{mainwindows/menus}{Menus}\raisedaster
- \o \l{mainwindows/recentfiles}{Recent Files}
- \o \l{mainwindows/sdi}{SDI}
- \endlist
-
- \section1 Network
-
- \list
- \o \l{network/blockingfortuneclient}{Blocking Fortune Client}\raisedaster
- \o \l{network/broadcastreceiver}{Broadcast Receiver}
- \o \l{network/broadcastsender}{Broadcast Sender}
- \o \l{network/network-chat}{Network Chat}
- \o \l{network/fortuneclient}{Fortune Client}\raisedaster
- \o \l{network/fortuneserver}{Fortune Server}\raisedaster
- \o \l{network/ftp}{FTP}\raisedaster
- \o \l{network/http}{HTTP}
- \o \l{network/loopback}{Loopback}
- \o \l{network/threadedfortuneserver}{Threaded Fortune Server}\raisedaster
- \o \l{network/torrent}{Torrent}
- \o \l{network/googlesuggest}{Google Suggest}
- \endlist
-
- \section1 OpenGL
-
- \list
- \o \l{opengl/2dpainting}{2D Painting}\raisedaster
- \o \l{opengl/framebufferobject}{Framebuffer Object}
- \o \l{opengl/framebufferobject2}{Framebuffer Object 2}
- \o \l{opengl/grabber}{Grabber}
- \o \l{opengl/hellogl}{Hello GL}\raisedaster
- \o \l{opengl/overpainting}{Overpainting}\raisedaster
- \o \l{opengl/pbuffers}{Pixel Buffers}
- \o \l{opengl/pbuffers2}{Pixel Buffers 2}
- \o \l{opengl/samplebuffers}{Sample Buffers}
- \o \l{opengl/textures}{Textures}
- \endlist
-
- \section1 Painting
-
- \list
- \o \l{painting/basicdrawing}{Basic Drawing}\raisedaster
- \o \l{painting/concentriccircles}{Concentric Circles}\raisedaster
- \o \l{painting/fontsampler}{Font Sampler}
- \o \l{painting/imagecomposition}{Image Composition}\raisedaster
- \o \l{painting/painterpaths}{Painter Paths}\raisedaster
- \o \l{painting/svggenerator}{SVG Generator}\raisedaster
- \o \l{painting/svgviewer}{SVG Viewer}
- \o \l{painting/transformations}{Transformations}\raisedaster
- \endlist
-
- \section1 Phonon Multimedia Framework
-
- \list
- \o \l{phonon/capabilities}{Capabilities}\raisedaster
- \o \l{phonon/musicplayer}{Music Player}\raisedaster
- \endlist
-
- \section1 Multimedia
-
- \list
- \o \l{multimedia/audio/audiodevices}{Audio Devices}\raisedaster
- \o \l{multimedia/audio/audiooutput}{Audio Output}\raisedaster
- \o \l{multimedia/audio/audioinput}{Audio Input}\raisedaster
- \endlist
-
- \section1 Qt Designer
-
- \list
- \o \l{designer/calculatorbuilder}{Calculator Builder}\raisedaster
- \o \l{designer/calculatorform}{Calculator Form}\raisedaster
- \o \l{designer/customwidgetplugin}{Custom Widget Plugin}\raisedaster
- \o \l{designer/taskmenuextension}{Task Menu Extension}\raisedaster
- \o \l{designer/containerextension}{Container Extension}\raisedaster
- \o \l{designer/worldtimeclockbuilder}{World Time Clock Builder}\raisedaster
- \o \l{designer/worldtimeclockplugin}{World Time Clock Plugin}\raisedaster
- \endlist
-
- \section1 Qt Linguist
-
- \list
- \o \l{linguist/hellotr}{Hello tr()}\raisedaster
- \o \l{linguist/arrowpad}{Arrow Pad}\raisedaster
- \o \l{linguist/trollprint}{Troll Print}\raisedaster
- \endlist
-
- \section1 Qt for Embedded Linux
-
- \list
- \o \l{qws/svgalib}{Accelerated Graphics Driver}\raisedaster
- \o \l{qws/dbscreen}{Double Buffered Graphics Driver}\raisedaster
- \o \l{qws/mousecalibration}{Mouse Calibration}\raisedaster
- \o \l{qws/ahigl}{OpenGL for Embedded Systems}\raisedaster
- \o \l{qws/simpledecoration}{Simple Decoration}\raisedaster
- \endlist
-
- \section1 Qt Script
-
- \list
- \o \l{script/calculator}{Calculator}\raisedaster
- \o \l{script/context2d}{Context2D}\raisedaster
- \o \l{script/defaultprototypes}{Default Prototypes}\raisedaster
- \o \l{script/helloscript}{Hello Script}\raisedaster
- \o \l{script/qstetrix}{Qt Script Tetrix}\raisedaster
- \o \l{script/customclass}{Custom Script Class}\raisedaster
- \endlist
-
- \section1 Rich Text
-
- \list
- \o \l{richtext/calendar}{Calendar}\raisedaster
- \o \l{richtext/orderform}{Order Form}\raisedaster
- \o \l{richtext/syntaxhighlighter}{Syntax Highlighter}\raisedaster
- \o \l{richtext/textobject}{Text Object}\raisedaster
- \endlist
-
- \section1 SQL
-
- \list
- \o \l{sql/cachedtable}{Cached Table}\raisedaster
- \o \l{sql/drilldown}{Drill Down}\raisedaster
- \o \l{sql/querymodel}{Query Model}
- \o \l{sql/relationaltablemodel}{Relational Table Model}
- \o \l{sql/tablemodel}{Table Model}
- \o \l{sql/sqlwidgetmapper}{SQL Widget Mapper}\raisedaster
- \endlist
-
- \section1 State Machine
-
- \list
- \o \l{statemachine/eventtransitions}{Event Transitions}\raisedaster
- \o \l{statemachine/factorial}{Factorial States}\raisedaster
- \o \l{statemachine/pingpong}{Ping Pong States}\raisedaster
- \o \l{statemachine/rogue}{Rogue}\raisedaster
- \o \l{statemachine/trafficlight}{Traffic Light}\raisedaster
- \o \l{statemachine/twowaybutton}{Two-way Button}\raisedaster
- \endlist
-
- \section1 Threads
-
- \list
- \o \l{threads/queuedcustomtype}{Queued Custom Type}\raisedaster
- \o \l{threads/mandelbrot}{Mandelbrot}\raisedaster
- \o \l{threads/semaphores}{Semaphores}\raisedaster
- \o \l{threads/waitconditions}{Wait Conditions}\raisedaster
- \endlist
-
- \section1 Tools
-
- \list
- \o \l{tools/codecs}{Codecs}
- \o \l{tools/completer}{Completer}\raisedaster
- \o \l{tools/customcompleter}{Custom Completer}\raisedaster
- \o \l{tools/customtype}{Custom Type}\raisedaster
- \o \l{tools/customtypesending}{Custom Type Sending}\raisedaster
- \o \l{tools/echoplugin}{Echo Plugin}\raisedaster
- \o \l{tools/i18n}{I18N}
- \o \l{tools/plugandpaint}{Plug & Paint}\raisedaster
- \o Plug & Paint Plugins: \l{tools/plugandpaintplugins/basictools}{Basic Tools}\raisedaster
- and \l{tools/plugandpaintplugins/extrafilters}{Extra Filters}\raisedaster
- \o \l{tools/regexp}{RegExp}
- \o \l{tools/settingseditor}{Settings Editor}
- \o \l{tools/styleplugin}{Style Plugin}\raisedaster
- \o \l{tools/treemodelcompleter}{Tree Model Completer}\raisedaster
- \o \l{tools/undoframework}{Undo Framework}\raisedaster
- \endlist
-
- \section1 UiTools
-
- \list
- \o \l{uitools/multipleinheritance}{Multiple Inheritance}\raisedaster
- \o \l{uitools/textfinder}{Text Finder}\raisedaster
- \endlist
-
- \section1 WebKit
-
- \list
- \o \l{webkit/previewer}{Previewer}\raisedaster
- \o \l{webkit/formextractor}{Form Extractor}
- \o \l{webkit/googlechat}{Google Chat}
- \o \l{webkit/fancybrowser}{Fancy Browser}
- \endlist
-
- \section1 Widgets
-
- \list
- \o \l{widgets/analogclock}{Analog Clock}\raisedaster
- \o \l{widgets/calculator}{Calculator}\raisedaster
- \o \l{widgets/calendarwidget}{Calendar Widget}\raisedaster
- \o \l{widgets/charactermap}{Character Map}\raisedaster
- \o \l{widgets/codeeditor}{Code Editor}\raisedaster
- \o \l{widgets/digitalclock}{Digital Clock}\raisedaster
- \o \l{widgets/groupbox}{Group Box}\raisedaster
- \o \l{widgets/icons}{Icons}\raisedaster
- \o \l{widgets/imageviewer}{Image Viewer}\raisedaster
- \o \l{widgets/lineedits}{Line Edits}\raisedaster
- \o \l{widgets/movie}{Movie}
- \o \l{widgets/scribble}{Scribble}\raisedaster
- \o \l{widgets/shapedclock}{Shaped Clock}\raisedaster
- \o \l{widgets/sliders}{Sliders}\raisedaster
- \o \l{widgets/spinboxes}{Spin Boxes}\raisedaster
- \o \l{widgets/styles}{Styles}\raisedaster
- \o \l{widgets/stylesheet}{Style Sheet}\raisedaster
- \o \l{widgets/tablet}{Tablet}\raisedaster
- \o \l{widgets/tetrix}{Tetrix}\raisedaster
- \o \l{widgets/tooltips}{Tooltips}\raisedaster
- \o \l{widgets/wiggly}{Wiggly}\raisedaster
- \o \l{widgets/windowflags}{Window Flags}\raisedaster
- \endlist
-
- \section1 XML
-
- \list
- \o \l{xml/dombookmarks}{DOM Bookmarks}
- \o \l{xml/saxbookmarks}{SAX Bookmarks}
- \o \l{xml/streambookmarks}{QXmlStream Bookmarks}\raisedaster
- \o \l{xml/rsslisting}{RSS-Listing}
- \o \l{xml/xmlstreamlint}{XML Stream Lint Example}\raisedaster
- \endlist
-
- \section1 XQuery, XPath
-
- \list
- \o \l{xmlpatterns/recipes}{Recipes}
- \o \l{xmlpatterns/filetree}{File System Example}
- \o \l{xmlpatterns/qobjectxmlmodel}{QObject XML Model Example}
- \o \l{xmlpatterns/xquery/globalVariables}{C++ Source Code Analyzer Example}
- \o \l{xmlpatterns/trafficinfo}{Traffic Info}\raisedaster
- \o \l{xmlpatterns/schema}{XML Schema Validation}\raisedaster
- \endlist
-
- \section1 Inter-Process Communication
- \list
- \o \l{ipc/localfortuneclient}{Local Fortune Client}\raisedaster
- \o \l{ipc/localfortuneserver}{Local Fortune Server}\raisedaster
- \o \l{ipc/sharedmemory}{Shared Memory}\raisedaster
- \endlist
-*/
diff --git a/doc/src/examples/2dpainting.qdoc b/doc/src/examples/2dpainting.qdoc
index 2164828a8..2d9ee5384 100644
--- a/doc/src/examples/2dpainting.qdoc
+++ b/doc/src/examples/2dpainting.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/activeqt/comapp.qdoc b/doc/src/examples/activeqt/comapp.qdoc
index e48c94a0a..8a3486b28 100644
--- a/doc/src/examples/activeqt/comapp.qdoc
+++ b/doc/src/examples/activeqt/comapp.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/activeqt/dotnet.qdoc b/doc/src/examples/activeqt/dotnet.qdoc
index c33f6f87c..64db59393 100644
--- a/doc/src/examples/activeqt/dotnet.qdoc
+++ b/doc/src/examples/activeqt/dotnet.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/activeqt/hierarchy.qdoc b/doc/src/examples/activeqt/hierarchy.qdoc
index 95a456f9b..50d05f5d4 100644
--- a/doc/src/examples/activeqt/hierarchy.qdoc
+++ b/doc/src/examples/activeqt/hierarchy.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/activeqt/menus.qdoc b/doc/src/examples/activeqt/menus.qdoc
index 8214f6df7..1287856b9 100644
--- a/doc/src/examples/activeqt/menus.qdoc
+++ b/doc/src/examples/activeqt/menus.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/activeqt/multiple.qdoc b/doc/src/examples/activeqt/multiple.qdoc
index 4020a497f..0774102ed 100644
--- a/doc/src/examples/activeqt/multiple.qdoc
+++ b/doc/src/examples/activeqt/multiple.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/activeqt/opengl.qdoc b/doc/src/examples/activeqt/opengl.qdoc
index d7eaf9c4d..f49d0c31f 100644
--- a/doc/src/examples/activeqt/opengl.qdoc
+++ b/doc/src/examples/activeqt/opengl.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/activeqt/qutlook.qdoc b/doc/src/examples/activeqt/qutlook.qdoc
index 7cf33110a..c30c0c43b 100644
--- a/doc/src/examples/activeqt/qutlook.qdoc
+++ b/doc/src/examples/activeqt/qutlook.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/activeqt/simple.qdoc b/doc/src/examples/activeqt/simple.qdoc
index c9c77c4cd..44d5f1cdf 100644
--- a/doc/src/examples/activeqt/simple.qdoc
+++ b/doc/src/examples/activeqt/simple.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/activeqt/webbrowser.qdoc b/doc/src/examples/activeqt/webbrowser.qdoc
index bd2745fef..a110b0bba 100644
--- a/doc/src/examples/activeqt/webbrowser.qdoc
+++ b/doc/src/examples/activeqt/webbrowser.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/activeqt/wrapper.qdoc b/doc/src/examples/activeqt/wrapper.qdoc
index 5a0e6cfe7..86b14eb2b 100644
--- a/doc/src/examples/activeqt/wrapper.qdoc
+++ b/doc/src/examples/activeqt/wrapper.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/addressbook.qdoc b/doc/src/examples/addressbook.qdoc
index 874f14a21..734317f7d 100644
--- a/doc/src/examples/addressbook.qdoc
+++ b/doc/src/examples/addressbook.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/ahigl.qdoc b/doc/src/examples/ahigl.qdoc
deleted file mode 100644
index 888882984..000000000
--- a/doc/src/examples/ahigl.qdoc
+++ /dev/null
@@ -1,572 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \example qws/ahigl
- \title OpenGL for Embedded Systems Example
-
- \section1 Introduction
-
- This example demonstrates how you can use OpenGL for Embedded
- Systems (ES) in your own screen driver and \l{add your graphics
- driver to Qt for Embedded Linux}. In \l{Qt for Embedded Linux},
- painting is done in software, normally performed in two steps:
- First, each client renders its windows onto its window surface in
- memory using a paint engine. Then the server uses the screen
- driver to compose the window surface images and copy the
- composition to the screen. (See the \l{Qt for Embedded Linux
- Architecture} documentation for details.)
-
- This example is not for the novice. It assumes the reader is
- familiar with both OpenGL and the screen driver framework
- demonstrated in the \l {Accelerated Graphics Driver Example}.
-
- An OpenGL screen driver for Qt for Embedded Linux can use OpenGL ES
- in three ways. First, the \l{QWSServer}{Qt for Embedded Linux server}
- can use the driver to compose multiple window images and then show the
- composition on the screen. Second, clients can use the driver to
- accelerate OpenGL painting operations using the QOpenGLPaintEngine
- class. Finally, clients can use the driver to do OpenGL operations
- with instances of the QGLWidget class. This example implements all
- three cases.
-
- The example uses an implementation of OpenGL ES from
- \l {http://ati.amd.com}{ATI} for the
- \l {http://ati.amd.com/products/imageon238x/}{Imageon 2380}. The
- OpenGL include files gl.h and egl.h must be installed to compile
- the example, and the OpenGL and EGL libraries must be installed
- for linking. If your target device is different, you must install
- the include files and libraries for that device, and you also
- might need to modify the example source code, if any API signatures
- in your EGL library differ from the ones used here.
-
- After compiling and linking the example source, install the
- screen driver plugin with the command \c {make install}. To
- start an application that uses the plugin, you can either set the
- environment variable \l QWS_DISPLAY and then start the
- application, or just start the application with the \c -display
- switch, as follows:
-
- \snippet doc/src/snippets/code/doc_src_examples_ahigl.qdoc 0
-
- The example driver also implements an animated transition effect
- for use when showing new windows or reshowing windows that have
- been minimized. To enable this transition effect, run the
- application with \c {-display ahigl:effects}.
-
- \section1 The Class Definitions
-
- The example comprises three main classes plus some helper classes.
- The three main classes are the plugin (QAhiGLScreenPlugin), which
- is defined in qscreenahiglplugin.cpp, the screen driver
- (QAhiGLScreen), which is defined in qscreenahigl_qws.h, and the
- window surface (QAhiGLWindowSurface), which is defined in
- qwindowsurface_ahigl_p.h. The "Ahi" prefix in these class names
- stands for \e {ATI Handheld Interface}. The example was written
- for the ATI Imageon 2380, but it can also be used as a template
- for other ATI handheld devices.
-
- \section2 The Plugin Class Definition
-
- The screen driver plugin is class QAhiGLScreenPlugin.
-
- \snippet examples/qws/ahigl/qscreenahiglplugin.cpp 0
-
- QAhiGLScreenPlugin is derived from class QScreenDriverPlugin,
- which in turn is derived from QObject.
-
- \section2 The Screen Driver Class Definitions
-
- The screen driver classes are the public class QAhiGLScreen and
- its private implementation class QAhiGLScreenPrivate. QAhiGLScreen
- is derived from QGLScreen, which is derived from QScreen. If your
- screen driver will only do window compositions and display them,
- then you can derive your screen driver class directly from
- QScreen. But if your screen driver will do accelerated graphics
- rendering operations with the QOpenGLPaintEngine, or if it will
- handle instances of class QGLWidget, then you must derive your
- screen driver class from QGLScreen.
-
- \snippet examples/qws/ahigl/qscreenahigl_qws.h 0
-
- All functions in the public API of class QAhiGLScreen are virtual
- functions declared in its base classes. hasOpenGL() is declared in
- QGLScreen. It simply returns true indicating our example screen
- driver does support OpenGL operations. The other functions in the
- public API are declared in QScreen. They are called by the
- \l{QWSServer}{Qt for Embedded Linux server} at the appropriate times.
-
- Note that class QScreen is a documented class but class QGLScreen
- is not. This is because the design of class QGLScreen is not yet
- final.
-
- The only data member in class QAhiGLScreen is a standard d_ptr,
- which points to an instance of the driver's private implementation
- class QAhiGLScreenPrivate. The driver's internal state is stored
- in the private class. Using the so-called d-pointer pattern allows
- you to make changes to the driver's internal design without
- breaking binary compatibility.
-
- \snippet examples/qws/ahigl/qscreenahigl_qws.cpp 0
-
- Class QAhiGLScreenPrivate is derived from QObject so that it can
- use the Qt signal/slot mechanism. QAhiGLScreen is not a QObject,
- so it can't use the signal/slot mechanism. Signals meant for our
- screen driver are received by slots in the private implementation
- class, in this case, windowEvent() and redrawScreen().
-
- \section2 The Window Surface Class Definitions
-
- The window surface classes are QAhiGLWindowSurface and its private
- implementation class QAhiGLWindowSurfacePrivate. We create class
- QAhiGLWindowSurface so the screen driver can use the OpenGL paint
- engine and the OpenGL widget, classes QOpenGLPaintEngine and
- QGLWidget. QAhiGLWindowSurface is derived from the more general
- OpenGL window surface class, QWSGLWindowSurface, which is derived
- from QWSWindowSurface.
-
- \snippet examples/qws/ahigl/qwindowsurface_ahigl_p.h 0
-
- In addition to implementing the standard functionality required by
- any new subclass of QWSWindowSurface, QAhiGLWindowSurface also
- contains the textureId() function used by QAhiGLScreen.
-
- The same d-pointer pattern is used in this window surface class.
- The private implementation class is QAhiGLWindowSurfacePrivate. It
- allows making changes to the state variables of the window surface
- without breaking binary compatibility.
-
- \snippet examples/qws/ahigl/qwindowsurface_ahigl.cpp 0
-
- In this case, our private implementation class has no member
- functions except for its constructor. It contains only public data
- members which hold state information for the window surface.
-
- \section2 The Helper Classes
-
- The example screen driver maintains a static \l {QMap} {map} of
- all the \l {QWSWindow} {windows} it is showing on the screen.
- Each window is mapped to an instance of struct WindowInfo.
-
- \snippet examples/qws/ahigl/qscreenahigl_qws.cpp 2
-
- As each new window is created, an instance of struct WindowInfo is
- allocated and inserted into the window map. WindowInfo uses a
- GLuint to identify the OpenGL texture it creates for the window.
- Note that the example driver, in addition to drawing windows using
- OpenGL, also supports drawing windows in the normal way without
- OpenGL, but it uses an OpenGL texture for the rendering operations
- in either case. Top-level windows that are drawn without OpenGL
- are first rendered in the normal way into a shared memory segment,
- which is then converted to a OpenGL texture and drawn to the
- screen.
-
- To animate the window transition effect, WindowInfo uses an
- instance of the helper class ShowAnimation. The animation is
- created by the windowEvent() slot in QAhiGLScreenPrivate, whenever
- a \l {QWSServer::WindowEvent} {Show} window event is emitted by
- the \l {QWSServer} {window server}. The server emits this signal
- when a window is shown the first time and again later, when the
- window is reshown after having been minimized.
-
- \snippet examples/qws/ahigl/qscreenahigl_qws.cpp 1
-
- Class ShowAnimation is derived from the QTimeLine class, which is
- used for controlling animations. QTimeLine is a QObject, so
- ShowAnimation can use the Qt signal/slot mechanism. We will see
- how the timeline's \l {QTimeLine::valueChanged()} {valueChanged()}
- and \l {QTimeLine::finished()} {finished()} signals are used to
- control the animation and then destroy the instance of
- ShowAnimation, when the animation ends. The ShowAnimation
- constructor needs the pointer to the screen driver's private
- implementation class so it can set up these signal/slot
- connections.
-
- \section1 The Class Implementations
-
- \section2 The Plugin Class Implementation
-
- QAhiGLScreenPlugin is a straightforward derivation of
- QScreenDriverPlugin. It reimplements \l{QScreenDriverPlugin::}{keys()}
- and \l{QScreenDriverPlugin::}{create()}. They are
- called as needed by the \l{QWSServer}{Qt for Embedded Linux server.}
- Recall that the server detects that the ahigl screen driver has
- been requested, either by including "ahigl" in the value for the
- environment variable QWS_DISPLAY, or by running your application
- with a command line like the following.
-
- \snippet doc/src/snippets/code/doc_src_examples_ahigl.qdoc 1
-
- The server calls \l {QScreenDriverPlugin::} {keys()}, which
- returns a \l {QStringList} containing the singleton "ahigl"
- matching the requested screen driver and telling the server that
- it can use our example screen driver. The server then calls \l
- {QScreenDriverPlugin::} {create()}, which creates the instance of
- QAhiGLScreen.
-
- \snippet examples/qws/ahigl/qscreenahiglplugin.cpp 1
-
- In the code snippet above, the macro Q_EXPORT_PLUGIN2 is used to export
- the plugin class, QAhiGLScreen, for the qahiglscreen plugin.
- Further information regarding plugins and how to create them
- can be found at \l{How to Create Qt Plugins}.
-
- \section2 The Screen Driver Class Implementations
-
- The plugin creates the singleton instance of QAhiGLScreen. The
- constructor is passed a \c displayId, which is used in the base
- class QGLScreen to identify the server that the screen driver is
- connected to. The constructor also creates its instance of
- QAhiGLScreenPrivate, which instantiates a QTimer. The timeout()
- signal of this timer is connected to the redrawScreen() slot so
- the timer can be used to limit the frequency of actual drawing
- operations in the hardware.
-
- The public API of class QAhiGLScreen consists of implementations
- of virtual functions declared in its base classes. The function
- hasOpenGL() is declared in base class QGLScreen. The others are
- declared in base class QScreen.
-
- The \l {QScreen::}{connect()} function is the first one called by
- the server after the screen driver is constructed. It initializes
- the QScreen data members to hardcoded values that describe the ATI
- screen. A better implementation would query the hardware for the
- corresponding values in its current state and use those. It asks
- whether the screen driver was started with the \c effects option
- and sets the \c doEffects flag accordingly.
-
- \snippet examples/qws/ahigl/qscreenahigl_qws.cpp 7
-
- The \l {QScreen::}{initDevice()} function is called by the server
- after \l {QScreen::}{connect()}. It uses EGL library functions to
- initialize the ATI hardware. Note that some data structures used
- in this example are specific to the EGL implementation used, e.g.,
- the DummyScreen structure.
-
- \snippet examples/qws/ahigl/qscreenahigl_qws.cpp 8
-
- Note the signal/slot connection at the bottom of initDevice(). We
- connect the server's QWSServer::windowEvent() signal to the
- windowEvent() slot in the screen driver's private implementation
- class. The windowEvent() slot handles three window events,
- QWSServer::Create, QWSServer::Destroy, and QWSServer::Show.
-
- \snippet examples/qws/ahigl/qscreenahigl_qws.cpp 5
-
- The function manages instances of the helper classes associated
- with each window. When a QWSServer::Create event occurs, it means
- a new top-level \l {QWSWindow} {window} has been created. In this
- case, an instance of helper class WindowInfo is created and
- inserted into the window map with the pointer to the new \l
- {QWSWindow} {window} as its key. When a QWSServer::Destroy event
- occurs, a window is being destroyed, and its mapping is removed
- from the window map. These two events are straightforward. The
- tricky bits happen when a QWSServer::Show event occurs. This case
- occurs when a window is shown for the first time and when it is
- reshown after having been minimized. If the window transition
- effect has been enabled, a new instance of the helper class
- ShowAnimation is created and stored in a QPointer in the window's
- instance of WindowInfo. The constructor of ShowAnimation
- automatically \l {QTimeLine::start()} {starts} the animation of
- the transition effect.
-
- \snippet examples/qws/ahigl/qscreenahigl_qws.cpp 3
-
- To ensure that a ShowAnimation is not deleted until its animation
- ends, the \l {QTimeLine::finished()} {finished()} signal is
- connected to the \l {QObject::deleteLater()} {deleteLater()} slot.
- When the animation ends, the finished() signal is emitted and the
- deleteLater() slot deletes the ShowAnimation. The key here is that
- the pointer to the ShowAnimation is stored in a QPointer in the
- WindowInfo class. This QPointer will also be notified when the
- ShowAnimation is deleted, so the QPointer in WindowInfo can null
- itself out, if and only if it is still pointing to the instance
- of ShowAnimation being deleted.
-
- The \l {QTimeLine::valueForTime()} {valueForTime()} function in
- QTimeLine is reimplemented in ShowAnimation to return time values
- that represent a curved path for the window transition effect.
-
- \snippet examples/qws/ahigl/qscreenahigl_qws.cpp 4
-
- valueForTime() is called internally, when the time interval it
- computed during the previous call has elapsed. If it computes a
- next time value that is different from the one computed
- previously, the \l {QTimeLine::valueChanged()} {valueChanged()}
- signal is emitted. The ShowAnimation constructor shown above
- connects this signal to the redrawScreen() slot in the screen
- driver's private implementation class. This is how the animation
- actually happens.
-
- The screen driver's implementation of \l {QScreen::}
- {exposeRegion()} is where the main work of the screen driver is
- meant to be done, i.e., updating the screen. It is called by the
- \l {QWSServer} {window system} to update a particular window's
- region of the screen. But note that it doesn't actually update the
- screen, i.e., it doesn't actually call redrawScreen() directly,
- but starts the updateTimer, which causes redrawScreen() to be
- called once for each updateTimer interval. This means that all
- calls to exposeRegion() during an updateTimer interval are handled
- by a single call to redrawScreen(). Thus updateTimer can be used
- to limit the frequency of screen updates.
-
- \snippet examples/qws/ahigl/qscreenahigl_qws.cpp 13
-
- The call to the private function invalidateTexture() destroys
- the window's existing texture (image). This ensures that a new
- texture will be created for the window, when redrawScreen() is
- eventually called.
-
- But there is a caveat to using updateTimer to limit the frequency
- of screen updates. When the driver's animated transition effect
- for new windows is enabled and a new window is being shown for the
- first time or reshown after having been minimized, an instance of
- ShowAnimation is created to run the animation. The valueChanged()
- signal of this ShowAnimation is also connected to the
- redrawScreen() slot, and QTimeLine, the base class of our
- ShowAnimation, uses its own, internal timer to limit the speed of
- the animation. This means that in the driver as currently written,
- if the window transition effect is enabled (i.e. if the plugin is
- started, with \c {-display ahigl:effects}), then redrawScreen()
- can be called both when the update timer times out and when the
- ShowAnimation timer times out, so the screen might get updated
- more often than the frequency established by the update timer.
- This may or may not be a bug, depending on your own hardware, if
- you use this example as a template for your own OpenGL driver.
-
- The screen driver's private function redrawScreen() constructs
- the window compositions. It is called only by the function of the
- same name in the screen driver's private implementation class.
-
- \snippet examples/qws/ahigl/qscreenahigl_qws.cpp 6
-
- Recall that this redrawScreen() in the private implementation
- class is a slot function connected to two signals, the \c
- timeout() signal of the updateTimer in the private implementation
- class, and the valueChanged() signal of the helper class
- ShowAnimation. Thus, the screen is only ever updated when a
- timeout of one of the two timers occurs. This is important for two
- reasons. First, the screen is meant to be updated no more than
- once per updateTimer interval. Second, however, if the animated
- window transition effect is requested, the screen might be updated
- more often than that, and this might be a bug if the hardware
- can't handle more frequent updates.
-
- The redrawScreen() in QAhiGLScreen begins by using standard
- OpenGL to fill the screen with the background color.
-
- \snippet examples/qws/ahigl/qscreenahigl_qws.cpp 10
-
- Next it iterates over the list of all \l {QWSWindow} {client
- windows} obtained from the \l {QWSServer} {server}, extracting
- from each window its instance of QWSWIndowSurface, then using that
- window surface to create an OpenGL texture, and finally calling
- the helper function drawWindow() to draw the texture on the
- screen.
-
- \snippet examples/qws/ahigl/qscreenahigl_qws.cpp 11
-
- Note the call to glBindTexture() immediately before the call to
- drawWindow(). This call binds the identifer \c GL_TEXTURE_2D to
- the texture we have just created. This makes our texture
- accessible to functions in the OpenGL libraries. If you miss that
- point, digging into the internals of drawWindow() won't make much
- sense.
-
- Finally, the cursor is added to the window composition, and in the
- last statement, the whole thing is displayed on the screen.
-
- \snippet examples/qws/ahigl/qscreenahigl_qws.cpp 12
-
- The call to \c drawWindow(win,progress), in addition to passing a
- pointer to the window to be redrawn, also passes the \c progress
- parameter obtained by calling \l {QTimeLine::currentValue()} on
- the window's instance of ShowAnimation. Recall that the current
- value of the timeline is updated internally by a timer local to
- the timeline, and the redrawScreen() slot is called whenever the
- current value changes. The progress value will only be used if
- the animated transition effect has been enabled. These extra calls
- of redrawScreen() may cause the screen to be updated more often
- than the rate determined by updateTimer. This must be taken
- into account, if you set your updateTimer to timeout at the
- maximum screen update frequency your hardware can handle.
-
- The drawWindow() function is not shown here and not explained
- further, but the call to drawWindow() is the entry point to a
- hierarchy of private helper functions that execute sequences of
- OpenGL and EGL library calls. The reader is assumed to be familiar
- enough with the OpenGL and EGL APIs to understand the code in
- these helper functions on his own. Besides drawWindow(), the list
- of these helper functions includes drawQuad(), drawQuadWavyFlag(),
- the two overloadings of drawQuad_helper() (used by drawQuad() and
- drawQuadWacyFlag()), and setRectCoords().
-
- Note the two different ways the window's texture can be created in
- redrawScreen(). If the window surface is an OpenGL window surface
- (QAhiGLWindowSurface described below), the texture is obtained
- from the window surface directly by calling its textureId()
- function. But when the window surface is not an OpenGL one, the
- static function createTexture() is called with the window
- surface's \l {QImage} {image} to copy that image into an OpenGL
- texture. This is done with the EGL functions glTexImage2D() and
- glTexSubImage2D(). createTexture() is another function that
- should be understandable for exsperienced OpenGL users, so it is
- not shown or explained further here.
-
- The two implementations of \l {QScreen::}{createSurface()} are for
- instantiating new window surfaces. The overloading with the widget
- parameter is called in the client.
-
- \snippet examples/qws/ahigl/qscreenahigl_qws.cpp 14
-
- If the parameter is an \l {QGLWidget} {OpenGL widget}, or, when it
- isn't an OpenGL widget but its size is no bigger than 256 x 256,
- we instantiate our subclass QAhiGLWindowSurface. Otherwise, we
- instantiate a QWSWindowSurface. The size contraint is a
- limitation of the OpenGL ES libraries we are using for our ATI
- device.
-
- Note the test at the top of the function asking if our application
- process is the \l {QApplication::GuiServer} {server}. We only
- create instances of QAhiGLWindowSurface if our client is in the
- server process. This is because of an implementation restriction
- required by the OpenGL library used in the example. They only
- support use of OpenGL in the server process. Hence a client can
- use the QAhiGLWindowSurface if the client is in the server
- process.
-
- The other overloading of createSurface() is called by the
- server to create a window surface that will hold a copy of a
- client side window surface.
-
- \snippet examples/qws/ahigl/qscreenahigl_qws.cpp 15
-
- This overloading accepts a QString parameter identifying the type
- of window surface to instantiate. QAhiGLWindowSurface is
- instantiated if the parameter is \c ahigl. Otherwise, a normal
- QWSWindowSurface is instantiated. The client's window surface
- communicates its image data to the server's window surface through
- shared memory.
-
- The implementation of \l {QScreen::}{setMode()}, is a stub in this
- example. It would normally reset the frame buffer's resolution.
- Its parameters are the \e width, \e height, and the bit \e depth
- for the frame buffer's new resolution. If you implement setMode()
- in your screen driver, remember that it must emit a signal to warn
- other applications to redraw their frame buffers with the new
- resolution. There is no significance to setMode() not being
- implemented in this example. It simply wasn't implemented.
- However, the stub had to be included because QScreen declares
- setMode() to be pure virtual.
-
- Before the application exits, the server will call \l {QScreen::}
- {shutdownDevice()} to release the hardware resources. This is also
- done using EGL library functions.
-
- \snippet examples/qws/ahigl/qscreenahigl_qws.cpp 9
-
- The server will also call \l {QScreen::}{disconnect()}, but this
- function is only a stub in this example.
-
- \section2 The window Surface Class Implementations
-
- QAhiGLScreen creates instances of QAhiGLWindowSurface in its two
- createSurface() functions, and there are two constructors for
- QAhiGLWindowSurface that correspond to these two versions of
- createSurface(). The constructor accepting a \l {QWidget} {widget}
- parameter is called by the client side version of createSurface(),
- and the constructor without the \l {QWidget} {widget} parameter is
- called by the server side version. There will be a window surface
- constructed on the server side for each one constructed on the
- client side.
-
- \snippet examples/qws/ahigl/qwindowsurface_ahigl.cpp 1
- \codeline
- \snippet examples/qws/ahigl/qwindowsurface_ahigl.cpp 2
-
- The constructors create an instance of QAhiGLWindowSurfacePrivate,
- the private implementation class, which contains all the state
- variables for QAhiGLWindowSurface. The client side constructor
- also creates an instance of QWSGLPaintDevice, the OpenGL paint
- device, for return by \l {QWSWindowSurface::} {paintDevice()}.
- This ensures that all \l {QPainter}s used on this surface will use
- an OpenGL enabled QPaintEngine. It is a bit of jiggery pokery,
- which is required because \l {QWSWindowSurface::} {paintDevice()}
- is declared pure virtual. Normally, the client side constructor
- will be called with an \l {QGLWidget}{OpenGL widget}, which has
- its own \l {QWidget::} {paintEngine()} function that returns the
- global static OpenGL paint engine, but because the constructor
- also accepts a normal \l {QWidget}{widget}, it must be able to
- find the OpenGL paint engine in that case as well, so since \l
- {QWSWindowSurface::} {paintDevice()} must be implemented anyway,
- the constructor creates an instance of QWSGLPaintDevice, which can
- always return the global static pointer to QOpenGLPaintEngine.
-
- The OpenGL library implementation used for this example only
- supports one OpenGL context. This context is therefore shared
- among the single instance of QAhiGLScreen and all instances of
- QAhiGLWindowSurface. It is passed to both constructors.
-
- This example uses the OpenGL frame buffer object extension, which
- allows for accelerating OpenGL painting operations. Using this
- OpenGL extension, painting operations are performed in a frame
- buffer object, which QAhiGLScreen later uses to construct window
- compositions on the screen. Allocation of the frame buffer object
- is performed in \l {QWindowSurface::} {setGeometry()}. A safer way
- to use this extension would be to first test to see if the
- extension is supported by your OpenGL library, and use a different
- approach if it is not.
-
- \snippet examples/qws/ahigl/qwindowsurface_ahigl.cpp 3
-
- Since there can be several instances of the QAhiGLWindowSurface, we need
- to make sure that the correct framebuffer object is active before painting.
- This is done by reimplementing \l QWindowSurface::beginPaint():
-
- \snippet examples/qws/ahigl/qwindowsurface_ahigl.cpp 4
-
- Finally we need to make sure that whenever a widget grows beyond the size
- supported by this driver (256 x 256), the surface is deleted and a new
- standard surface is created instead. This is handled by reimplementing
- \l QWSWindowSurface::isValid():
-
- \snippet examples/qws/ahigl/qwindowsurface_ahigl.cpp 5
-*/
diff --git a/doc/src/examples/analogclock.qdoc b/doc/src/examples/analogclock.qdoc
index 64281ab13..a7179261b 100644
--- a/doc/src/examples/analogclock.qdoc
+++ b/doc/src/examples/analogclock.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/animatedtiles.qdoc b/doc/src/examples/animatedtiles.qdoc
new file mode 100644
index 000000000..962e27bbd
--- /dev/null
+++ b/doc/src/examples/animatedtiles.qdoc
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example animation/animatedtiles
+ \title Animated Tiles Example
+
+ The Animated Tiles example animates items in a graphics scene.
+
+ \image animatedtiles-example.png
+*/
+
diff --git a/doc/src/examples/appchooser.qdoc b/doc/src/examples/appchooser.qdoc
new file mode 100644
index 000000000..9a13fcf56
--- /dev/null
+++ b/doc/src/examples/appchooser.qdoc
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example animation/appchooser
+ \title Application Chooser Example
+
+ The Application Chooser example shows how to use the Qt state
+ machine and the animation framework to select between
+ applications.
+
+ \image appchooser-example.png
+
+*/
diff --git a/doc/src/examples/application.qdoc b/doc/src/examples/application.qdoc
index 7b7b88192..ce19c2fd4 100644
--- a/doc/src/examples/application.qdoc
+++ b/doc/src/examples/application.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -289,7 +289,7 @@
When restoring the position and size of a window, it's important
to call QWidget::resize() before QWidget::move(). The reason why
- is given in the \l{geometry.html}{Window Geometry} overview.
+ is given in the \l{Window Geometry} overview.
\snippet examples/mainwindows/application/mainwindow.cpp 37
\snippet examples/mainwindows/application/mainwindow.cpp 39
diff --git a/doc/src/examples/arrowpad.qdoc b/doc/src/examples/arrowpad.qdoc
index a8affbe40..7193828f7 100644
--- a/doc/src/examples/arrowpad.qdoc
+++ b/doc/src/examples/arrowpad.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/audiodevices.qdoc b/doc/src/examples/audiodevices.qdoc
index 0954b7c3d..150584617 100644
--- a/doc/src/examples/audiodevices.qdoc
+++ b/doc/src/examples/audiodevices.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,27 +21,26 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
/*!
- \example multimedia/audio/audiodevices
+ \example multimedia/audiodevices
\title Audio Devices Example
The Audio Devices example demonstrates the basic use of QAudioDeviceInfo class
diff --git a/doc/src/examples/audioinput.qdoc b/doc/src/examples/audioinput.qdoc
index e276e6b7b..8553e92fe 100644
--- a/doc/src/examples/audioinput.qdoc
+++ b/doc/src/examples/audioinput.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,27 +21,26 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
/*!
- \example multimedia/audio/audioinput
+ \example multimedia/audioinput
\title AudioInput Example
The Audio Input example demonstrates the basic use of QAudioInput class
@@ -49,6 +49,6 @@
Qt provides the QAudioInput class to enable audio functionality within
a standard application user interface.
- This example uses a fast-fourier transform on the input audio from the microphone
+ This example calculates the maximum linear value of the input audio from the microphone
and displays the output.
*/
diff --git a/doc/src/examples/audiooutput.qdoc b/doc/src/examples/audiooutput.qdoc
index 194a856f4..58b8ea9e6 100644
--- a/doc/src/examples/audiooutput.qdoc
+++ b/doc/src/examples/audiooutput.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,27 +21,26 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
/*!
- \example multimedia/audio/audiooutput
+ \example multimedia/audiooutput
\title Audio Output Example
The Audio Output example demonstrates the basic use of the QAudioOutput class
diff --git a/doc/src/examples/basicdrawing.qdoc b/doc/src/examples/basicdrawing.qdoc
index 08f6cd779..0f5d83ef9 100644
--- a/doc/src/examples/basicdrawing.qdoc
+++ b/doc/src/examples/basicdrawing.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/basicgraphicslayouts.qdoc b/doc/src/examples/basicgraphicslayouts.qdoc
index 54555df12..4414c8443 100644
--- a/doc/src/examples/basicgraphicslayouts.qdoc
+++ b/doc/src/examples/basicgraphicslayouts.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/basiclayouts.qdoc b/doc/src/examples/basiclayouts.qdoc
index ea6c34161..e4c71e60d 100644
--- a/doc/src/examples/basiclayouts.qdoc
+++ b/doc/src/examples/basiclayouts.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/basicsortfiltermodel.qdoc b/doc/src/examples/basicsortfiltermodel.qdoc
index e0d3aaa4d..eb437a079 100644
--- a/doc/src/examples/basicsortfiltermodel.qdoc
+++ b/doc/src/examples/basicsortfiltermodel.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/blockingfortuneclient.qdoc b/doc/src/examples/blockingfortuneclient.qdoc
index 28e19345d..48dcdfe78 100644
--- a/doc/src/examples/blockingfortuneclient.qdoc
+++ b/doc/src/examples/blockingfortuneclient.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/blurpicker.qdoc b/doc/src/examples/blurpicker.qdoc
new file mode 100644
index 000000000..93c12bfdd
--- /dev/null
+++ b/doc/src/examples/blurpicker.qdoc
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example effects/blurpicker
+ \title Blur Picker Effect Example
+
+ \image blurpickereffect-example.png
+*/
diff --git a/doc/src/examples/borderlayout.qdoc b/doc/src/examples/borderlayout.qdoc
index 9325cad1a..5f915719a 100644
--- a/doc/src/examples/borderlayout.qdoc
+++ b/doc/src/examples/borderlayout.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/broadcastreceiver.qdoc b/doc/src/examples/broadcastreceiver.qdoc
index eec573a86..5ad0b3a67 100644
--- a/doc/src/examples/broadcastreceiver.qdoc
+++ b/doc/src/examples/broadcastreceiver.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/broadcastsender.qdoc b/doc/src/examples/broadcastsender.qdoc
index b59183cbb..bfb6eb7ff 100644
--- a/doc/src/examples/broadcastsender.qdoc
+++ b/doc/src/examples/broadcastsender.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/cachedtable.qdoc b/doc/src/examples/cachedtable.qdoc
index 67946b1ec..aca0d6e3b 100644
--- a/doc/src/examples/cachedtable.qdoc
+++ b/doc/src/examples/cachedtable.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/calculator.qdoc b/doc/src/examples/calculator.qdoc
index b0a193728..306f97269 100644
--- a/doc/src/examples/calculator.qdoc
+++ b/doc/src/examples/calculator.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/calculatorbuilder.qdoc b/doc/src/examples/calculatorbuilder.qdoc
index 55e71878e..78f06ddcf 100644
--- a/doc/src/examples/calculatorbuilder.qdoc
+++ b/doc/src/examples/calculatorbuilder.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/calculatorform.qdoc b/doc/src/examples/calculatorform.qdoc
index 2c67e1b83..00024eaae 100644
--- a/doc/src/examples/calculatorform.qdoc
+++ b/doc/src/examples/calculatorform.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/calendar.qdoc b/doc/src/examples/calendar.qdoc
index d001244c5..112518ee7 100644
--- a/doc/src/examples/calendar.qdoc
+++ b/doc/src/examples/calendar.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/calendarwidget.qdoc b/doc/src/examples/calendarwidget.qdoc
index 61d8b8bc5..d93b9122e 100644
--- a/doc/src/examples/calendarwidget.qdoc
+++ b/doc/src/examples/calendarwidget.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/capabilitiesexample.qdoc b/doc/src/examples/capabilitiesexample.qdoc
index ce07e1e8b..3644eac14 100644
--- a/doc/src/examples/capabilitiesexample.qdoc
+++ b/doc/src/examples/capabilitiesexample.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/charactermap.qdoc b/doc/src/examples/charactermap.qdoc
index 496bef189..0aceeebc7 100644
--- a/doc/src/examples/charactermap.qdoc
+++ b/doc/src/examples/charactermap.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/chart.qdoc b/doc/src/examples/chart.qdoc
index 69a08a5a7..b7fa3188d 100644
--- a/doc/src/examples/chart.qdoc
+++ b/doc/src/examples/chart.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/classwizard.qdoc b/doc/src/examples/classwizard.qdoc
index 7f4ad5a49..d6aa916b8 100644
--- a/doc/src/examples/classwizard.qdoc
+++ b/doc/src/examples/classwizard.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/codecs.qdoc b/doc/src/examples/codecs.qdoc
index 7a0379ee3..e1a06b794 100644
--- a/doc/src/examples/codecs.qdoc
+++ b/doc/src/examples/codecs.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/codeeditor.qdoc b/doc/src/examples/codeeditor.qdoc
index 3e64d012f..b6b1409fa 100644
--- a/doc/src/examples/codeeditor.qdoc
+++ b/doc/src/examples/codeeditor.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/collidingmice-example.qdoc b/doc/src/examples/collidingmice-example.qdoc
index a907f7c6a..5a6fa6b0d 100644
--- a/doc/src/examples/collidingmice-example.qdoc
+++ b/doc/src/examples/collidingmice-example.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/coloreditorfactory.qdoc b/doc/src/examples/coloreditorfactory.qdoc
index 26d947032..25e9f6a31 100644
--- a/doc/src/examples/coloreditorfactory.qdoc
+++ b/doc/src/examples/coloreditorfactory.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/combowidgetmapper.qdoc b/doc/src/examples/combowidgetmapper.qdoc
index 60b78f55e..727d82b6a 100644
--- a/doc/src/examples/combowidgetmapper.qdoc
+++ b/doc/src/examples/combowidgetmapper.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/completer.qdoc b/doc/src/examples/completer.qdoc
index 48ed46a17..d0920271a 100644
--- a/doc/src/examples/completer.qdoc
+++ b/doc/src/examples/completer.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/complexpingpong.qdoc b/doc/src/examples/complexpingpong.qdoc
index e76fb6aec..1c9514dce 100644
--- a/doc/src/examples/complexpingpong.qdoc
+++ b/doc/src/examples/complexpingpong.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -46,5 +46,5 @@
The Complex Ping Pong example improves on the \l{D-Bus Ping Pong Example} by providing
a more useful demonstration of D-Bus interfaces.
- \quotefile doc/src/snippets/complexpingpong-example.qdoc
+ \quotefile doc/src/snippets/complexpingpong-example.txt
*/
diff --git a/doc/src/examples/concentriccircles.qdoc b/doc/src/examples/concentriccircles.qdoc
index af21e95e5..28968507a 100644
--- a/doc/src/examples/concentriccircles.qdoc
+++ b/doc/src/examples/concentriccircles.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/configdialog.qdoc b/doc/src/examples/configdialog.qdoc
index 657f673ba..2ba105181 100644
--- a/doc/src/examples/configdialog.qdoc
+++ b/doc/src/examples/configdialog.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/containerextension.qdoc b/doc/src/examples/containerextension.qdoc
index e1bbea0e9..fca2234ab 100644
--- a/doc/src/examples/containerextension.qdoc
+++ b/doc/src/examples/containerextension.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/context2d.qdoc b/doc/src/examples/context2d.qdoc
index abc3b907e..ab00f576e 100644
--- a/doc/src/examples/context2d.qdoc
+++ b/doc/src/examples/context2d.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/contextsensitivehelp.qdoc b/doc/src/examples/contextsensitivehelp.qdoc
new file mode 100644
index 000000000..668fa360b
--- /dev/null
+++ b/doc/src/examples/contextsensitivehelp.qdoc
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example help/contextsensitivehelp
+ \title Context-Sensitive Help Example
+
+ This example shows how to use the services of the QHelpEngineCore class.
+*/
diff --git a/doc/src/examples/contiguouscache.qdoc b/doc/src/examples/contiguouscache.qdoc
index c79f5c35d..90cb1faa3 100644
--- a/doc/src/examples/contiguouscache.qdoc
+++ b/doc/src/examples/contiguouscache.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/customcompleter.qdoc b/doc/src/examples/customcompleter.qdoc
index 5c0136875..3bb7af1a9 100644
--- a/doc/src/examples/customcompleter.qdoc
+++ b/doc/src/examples/customcompleter.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/customsortfiltermodel.qdoc b/doc/src/examples/customsortfiltermodel.qdoc
index efa5ae27d..04d0bbcf3 100644
--- a/doc/src/examples/customsortfiltermodel.qdoc
+++ b/doc/src/examples/customsortfiltermodel.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/customtype.qdoc b/doc/src/examples/customtype.qdoc
index 7c4c729b5..1fdf3d64c 100644
--- a/doc/src/examples/customtype.qdoc
+++ b/doc/src/examples/customtype.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/customtypesending.qdoc b/doc/src/examples/customtypesending.qdoc
index 2da597dd0..0d26f4d98 100644
--- a/doc/src/examples/customtypesending.qdoc
+++ b/doc/src/examples/customtypesending.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/customwidgetplugin.qdoc b/doc/src/examples/customwidgetplugin.qdoc
index 0fa87db7c..e4690d019 100644
--- a/doc/src/examples/customwidgetplugin.qdoc
+++ b/doc/src/examples/customwidgetplugin.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/dbscreen.qdoc b/doc/src/examples/dbscreen.qdoc
index 93eb851e8..d9a5718e4 100644
--- a/doc/src/examples/dbscreen.qdoc
+++ b/doc/src/examples/dbscreen.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/dbus-chat.qdoc b/doc/src/examples/dbus-chat.qdoc
index 259baa0e0..b9b612bb5 100644
--- a/doc/src/examples/dbus-chat.qdoc
+++ b/doc/src/examples/dbus-chat.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/dbus-listnames.qdoc b/doc/src/examples/dbus-listnames.qdoc
index 378f35222..90d3e9fd8 100644
--- a/doc/src/examples/dbus-listnames.qdoc
+++ b/doc/src/examples/dbus-listnames.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/dbus-pingpong.qdoc b/doc/src/examples/dbus-pingpong.qdoc
index 6b1597884..d16b936b5 100644
--- a/doc/src/examples/dbus-pingpong.qdoc
+++ b/doc/src/examples/dbus-pingpong.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
/*!
\example dbus/pingpong
\title D-Bus Ping Pong Example
@@ -5,5 +46,5 @@
The D-Bus Ping Pong example provides a basic demonstration of D-Bus
interfaces.
- \quotefile doc/src/snippets/dbus-pingpong-example.qdoc
+ \quotefile doc/src/snippets/dbus-pingpong-example.txt
*/
diff --git a/doc/src/examples/dbus-remotecontrolledcar.qdoc b/doc/src/examples/dbus-remotecontrolledcar.qdoc
index b156fd2ac..49133f435 100644
--- a/doc/src/examples/dbus-remotecontrolledcar.qdoc
+++ b/doc/src/examples/dbus-remotecontrolledcar.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/defaultprototypes.qdoc b/doc/src/examples/defaultprototypes.qdoc
index 1812c6e9a..c59ee8c8b 100644
--- a/doc/src/examples/defaultprototypes.qdoc
+++ b/doc/src/examples/defaultprototypes.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/delayedencoding.qdoc b/doc/src/examples/delayedencoding.qdoc
index ecd48ca5b..4d7257e8e 100644
--- a/doc/src/examples/delayedencoding.qdoc
+++ b/doc/src/examples/delayedencoding.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/diagramscene.qdoc b/doc/src/examples/diagramscene.qdoc
index c2d498589..623587b0b 100644
--- a/doc/src/examples/diagramscene.qdoc
+++ b/doc/src/examples/diagramscene.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -704,7 +704,7 @@
We use \c itemChange() and \c focusOutEvent() to notify the
\c DiagramScene when the text item loses focus and gets selected.
- Vi reimplement the functions that handle mouse events to make it
+ We reimplement the functions that handle mouse events to make it
possible to alter the mouse behavior of QGraphicsTextItem.
\section1 DiagramTextItem Implementation
@@ -729,7 +729,8 @@
\snippet examples/graphicsview/diagramscene/diagramtextitem.cpp 2
\c DiagramScene uses the signal emitted when the text item looses
- remove the item if it is empty, i.e., it contains no text.
+ focus to remove the item if it is empty, i.e., it contains no
+ text.
This is the implementation of \c mouseDoubleClickEvent():
@@ -838,7 +839,7 @@
\snippet examples/graphicsview/diagramscene/arrow.cpp 7
- If the line is selected we draw to dotted lines that are
+ If the line is selected, we draw two dotted lines that are
parallel with the line of the arrow. We do not use the default
implementation, which uses \l{QGraphicsItem::}{boundingRect()}
because the QRect bounding rectangle is considerably larger than
diff --git a/doc/src/examples/digitalclock.qdoc b/doc/src/examples/digitalclock.qdoc
index 5e3d64233..8b72ce256 100644
--- a/doc/src/examples/digitalclock.qdoc
+++ b/doc/src/examples/digitalclock.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/dirview.qdoc b/doc/src/examples/dirview.qdoc
index 73f63da22..9b677c62c 100644
--- a/doc/src/examples/dirview.qdoc
+++ b/doc/src/examples/dirview.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/dockwidgets.qdoc b/doc/src/examples/dockwidgets.qdoc
index ebc96f3c7..56b099cc4 100644
--- a/doc/src/examples/dockwidgets.qdoc
+++ b/doc/src/examples/dockwidgets.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/dombookmarks.qdoc b/doc/src/examples/dombookmarks.qdoc
index f3b0186d5..bfd25786b 100644
--- a/doc/src/examples/dombookmarks.qdoc
+++ b/doc/src/examples/dombookmarks.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/domtraversal.qdoc b/doc/src/examples/domtraversal.qdoc
new file mode 100644
index 000000000..57e61d05b
--- /dev/null
+++ b/doc/src/examples/domtraversal.qdoc
@@ -0,0 +1,139 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example webkit/domtraversal
+ \title DOM Traversal Example
+
+ The DOM Traversal example shows how to use the QWebElement class to access
+ the structure of a Web page.
+
+ \image webkit-domtraversal.png
+
+ The QWebElement class provides an API that can be used to examine the structure
+ and content of a Web page via a Document Object Model (DOM) interface. It can be
+ used for basic traversal of the document structure, to search for particular
+ elements (see the \l{Simple Selector Example}), and to modify content in-place.
+
+ This example uses a QWebView widget to display the Web page, and a dock widget
+ holds the QTreeWidget that shows the document structure. These widgets are
+ placed in an instance of the \c Window class, which we describe below.
+
+ \section1 Window Class Definition
+
+ The \c Window class is derived from QMainWindow and its user interface is created
+ using \l{Qt Designer}. As a result, the class is also derived from the user
+ interface class created by \l uic:
+
+ \snippet examples/webkit/domtraversal/window.h Window class definition
+
+ Two important functions to note are the \c on_webView_loadFinished() slot and
+ the \c examineChildElements() function. The former is automatically called
+ when the QWebView widget finishes loading a page \mdash see the
+ \l{#Further Reading}{Further Reading} section for more information on this
+ mechanism.
+
+ The \c examineChildElements() function is used to traverse the document structure
+ and add items to the QTreeWidget.
+
+ \section1 Window Class Implementation
+
+ In the \c Window class constructor, we call the \l{QWidget::}{setupUi()} function
+ to set up the user interface described in the \c{window.ui} file:
+
+ \snippet examples/webkit/domtraversal/window.cpp Window constructor
+
+ When the Web page is loaded, the \c on_webView_loadFinished() slot is called. Here,
+ we clear the tree widget and begin inspection of the document by obtaining the
+ document element from the page's main frame:
+
+ \snippet examples/webkit/domtraversal/window.cpp begin document inspection
+
+ At this point, we call the \c examineChildElements() function to traverse the
+ document, starting with the child elements of the document element for which we
+ will create top level items in the tree widget.
+
+ The \c examineChildElements() function accepts a parent element and a parent item.
+ Starting with the first child element, which we obtain with the element's
+ \l{QWebElement::}{firstChild()} function, we examine each child element of the
+ parent item. For each valid (non-null) element, which we check by calling its
+ \l{QWebElement::}{isNull()} function, we create a new QTreeWidgetItem instance with
+ the element name and add it to the parent item.
+
+ \snippet examples/webkit/domtraversal/window.cpp traverse document
+
+ We recursively examine the child elements for each element by calling
+ \c examineChildElements() with the current child element and the newly-created item.
+ To obtain the next element at the same level in the document, we call its
+ \l{QWebElement::}{nextSibling()} function.
+
+ This recursive approach to reading the document makes it easy to create a simple
+ representation of the document structure in a tree widget.
+
+ For completeness, we show the \c setUrl() function, which is provided to allow the
+ document URL to be set from the example's \c main() function.
+
+ \snippet examples/webkit/domtraversal/window.cpp set URL
+
+ \section1 Starting the Example
+
+ We set up the application, create
+ a \c Window instance, set its URL, and show it:
+
+ \snippet examples/webkit/simpleselector/main.cpp main program
+
+ When the application's event loop is run, the Qt home page will load, and the
+ tree widget will be updated to show the document structure. Navigating to another
+ page will cause the tree widget to be updated to show the document structure of
+ the new page.
+
+ \section1 Further Reading
+
+ The QWebElement documentation contains more information about DOM access for the
+ QtWebKit classes.
+
+ In this example, we take advantage of Qt's
+ \l{Using a Designer UI File in Your Application#Automatic Connections}{auto-connection}
+ feature to avoid explicitly connecting signals to slots. The user interface
+ contains a QWebView widget called \c webView whose \l{QWebView::}{loadFinished()}
+ signal is automatically connected to the \c on_webView_loadFinished() slot when
+ we call \l{QWidget::}{setupUi()} in the \c Window constructor.
+*/
diff --git a/doc/src/examples/draganddroppuzzle.qdoc b/doc/src/examples/draganddroppuzzle.qdoc
index 9838bffc6..99d5ce8d9 100644
--- a/doc/src/examples/draganddroppuzzle.qdoc
+++ b/doc/src/examples/draganddroppuzzle.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/dragdroprobot.qdoc b/doc/src/examples/dragdroprobot.qdoc
index 6d0424e91..e4e00c281 100644
--- a/doc/src/examples/dragdroprobot.qdoc
+++ b/doc/src/examples/dragdroprobot.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/draggableicons.qdoc b/doc/src/examples/draggableicons.qdoc
index 5c1d5d300..3b04abb65 100644
--- a/doc/src/examples/draggableicons.qdoc
+++ b/doc/src/examples/draggableicons.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/draggabletext.qdoc b/doc/src/examples/draggabletext.qdoc
index a4365a07d..63565a253 100644
--- a/doc/src/examples/draggabletext.qdoc
+++ b/doc/src/examples/draggabletext.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/drilldown.qdoc b/doc/src/examples/drilldown.qdoc
index fff3b600c..a3ccffaa3 100644
--- a/doc/src/examples/drilldown.qdoc
+++ b/doc/src/examples/drilldown.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -389,9 +389,7 @@
the item's hover events, animating the item when the mouse cursor
is hovering over the image (by default, no items accept hover
events). Please see the \l{The Graphics View Framework}
- documentation and the
- \l{Qt Examples#Graphics View}{Graphics View examples} for more
- details.
+ documentation and the \l{Graphics View Examples} for more details.
\snippet examples/sql/drilldown/view.cpp 5
diff --git a/doc/src/examples/dropsite.qdoc b/doc/src/examples/dropsite.qdoc
index c9ebc3034..fdcf599c9 100644
--- a/doc/src/examples/dropsite.qdoc
+++ b/doc/src/examples/dropsite.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/dynamiclayouts.qdoc b/doc/src/examples/dynamiclayouts.qdoc
index 2e82863e6..59bdd2eb0 100644
--- a/doc/src/examples/dynamiclayouts.qdoc
+++ b/doc/src/examples/dynamiclayouts.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/easing.qdoc b/doc/src/examples/easing.qdoc
new file mode 100644
index 000000000..c8b938fcf
--- /dev/null
+++ b/doc/src/examples/easing.qdoc
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example animation/easing
+ \title Easing Curves Example
+
+ The Easing Curves example shows how to use easing curves to
+ control the speed of an animation.
+
+ \image easing-example.png
+
+*/
diff --git a/doc/src/examples/echoplugin.qdoc b/doc/src/examples/echoplugin.qdoc
index 4dff7e5a5..7dcc1a9b9 100644
--- a/doc/src/examples/echoplugin.qdoc
+++ b/doc/src/examples/echoplugin.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/editabletreemodel.qdoc b/doc/src/examples/editabletreemodel.qdoc
index d36036fbe..33bdbfcd9 100644
--- a/doc/src/examples/editabletreemodel.qdoc
+++ b/doc/src/examples/editabletreemodel.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/elasticnodes.qdoc b/doc/src/examples/elasticnodes.qdoc
index 1e120107a..14845191b 100644
--- a/doc/src/examples/elasticnodes.qdoc
+++ b/doc/src/examples/elasticnodes.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/eventtransitions.qdoc b/doc/src/examples/eventtransitions.qdoc
index 48a7f5c94..97af26fb1 100644
--- a/doc/src/examples/eventtransitions.qdoc
+++ b/doc/src/examples/eventtransitions.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/extension.qdoc b/doc/src/examples/extension.qdoc
index aa3239510..45b71a1f8 100644
--- a/doc/src/examples/extension.qdoc
+++ b/doc/src/examples/extension.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/factorial.qdoc b/doc/src/examples/factorial.qdoc
index 7933f5dc6..709a7c778 100644
--- a/doc/src/examples/factorial.qdoc
+++ b/doc/src/examples/factorial.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/fademessage.qdoc b/doc/src/examples/fademessage.qdoc
new file mode 100644
index 000000000..ecea0958d
--- /dev/null
+++ b/doc/src/examples/fademessage.qdoc
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example effects/fademessage
+ \title Fade Message Effect Example
+
+ \image fademessageeffect-example.png
+*/
diff --git a/doc/src/examples/fancybrowser.qdoc b/doc/src/examples/fancybrowser.qdoc
index b5052954d..4a9eaec69 100644
--- a/doc/src/examples/fancybrowser.qdoc
+++ b/doc/src/examples/fancybrowser.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -119,6 +119,10 @@
page is loaded. Once the jQuery library is loaded, we can start executing
the different jQuery functions in the browser.
+ The rotateImages() function is then called explicitely to make sure
+ that the images of the newly loaded page respect the state of the toggle
+ action.
+
\snippet examples/webkit/fancybrowser/mainwindow.cpp 7
The first jQuery-based function, \c highlightAllLinks(), is designed to
diff --git a/doc/src/examples/fetchmore.qdoc b/doc/src/examples/fetchmore.qdoc
index 543409850..5572e26fe 100644
--- a/doc/src/examples/fetchmore.qdoc
+++ b/doc/src/examples/fetchmore.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
/*!
\example itemviews/fetchmore
\title Fetch More Example
diff --git a/doc/src/examples/filetree.qdoc b/doc/src/examples/filetree.qdoc
index dff7e7dbe..9c1648c33 100644
--- a/doc/src/examples/filetree.qdoc
+++ b/doc/src/examples/filetree.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/findfiles.qdoc b/doc/src/examples/findfiles.qdoc
index f8c3ef382..01a066224 100644
--- a/doc/src/examples/findfiles.qdoc
+++ b/doc/src/examples/findfiles.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/fingerpaint.qdoc b/doc/src/examples/fingerpaint.qdoc
new file mode 100644
index 000000000..9c55dacce
--- /dev/null
+++ b/doc/src/examples/fingerpaint.qdoc
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example multitouch/fingerpaint
+ \title Finger Paint Example
+
+ The Finger Paint example shows the use of multi-touch with a custom widget
+ to create a simple painting application.
+
+ \image multitouch-fingerpaint.png
+*/
diff --git a/doc/src/examples/flowlayout.qdoc b/doc/src/examples/flowlayout.qdoc
index 1b3d01ff0..a23ae020f 100644
--- a/doc/src/examples/flowlayout.qdoc
+++ b/doc/src/examples/flowlayout.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/fontsampler.qdoc b/doc/src/examples/fontsampler.qdoc
index d9d2cc190..75a2a4493 100644
--- a/doc/src/examples/fontsampler.qdoc
+++ b/doc/src/examples/fontsampler.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/formextractor.qdoc b/doc/src/examples/formextractor.qdoc
index 9eb93e0a5..6b6820884 100644
--- a/doc/src/examples/formextractor.qdoc
+++ b/doc/src/examples/formextractor.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/fortuneclient.qdoc b/doc/src/examples/fortuneclient.qdoc
index 6c15e6a17..f4481f9b2 100644
--- a/doc/src/examples/fortuneclient.qdoc
+++ b/doc/src/examples/fortuneclient.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/fortuneserver.qdoc b/doc/src/examples/fortuneserver.qdoc
index f60f67232..c13123231 100644
--- a/doc/src/examples/fortuneserver.qdoc
+++ b/doc/src/examples/fortuneserver.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/framebufferobject.qdoc b/doc/src/examples/framebufferobject.qdoc
index e4daa2bf6..f52a81f40 100644
--- a/doc/src/examples/framebufferobject.qdoc
+++ b/doc/src/examples/framebufferobject.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/framebufferobject2.qdoc b/doc/src/examples/framebufferobject2.qdoc
index ea58bcc80..6e5141834 100644
--- a/doc/src/examples/framebufferobject2.qdoc
+++ b/doc/src/examples/framebufferobject2.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/fridgemagnets.qdoc b/doc/src/examples/fridgemagnets.qdoc
index efbb547f3..205d1b926 100644
--- a/doc/src/examples/fridgemagnets.qdoc
+++ b/doc/src/examples/fridgemagnets.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/frozencolumn.qdoc b/doc/src/examples/frozencolumn.qdoc
index 78d6764b4..43a725aee 100644
--- a/doc/src/examples/frozencolumn.qdoc
+++ b/doc/src/examples/frozencolumn.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/ftp.qdoc b/doc/src/examples/ftp.qdoc
index 4376d3752..68fb0d723 100644
--- a/doc/src/examples/ftp.qdoc
+++ b/doc/src/examples/ftp.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,27 +21,26 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
/*!
- \example network/ftp
+ \example network/qftp
\title FTP Example
The FTP example demonstrates a simple FTP client that can be used
@@ -78,27 +78,27 @@
\l{QFtp::Command}{commands} we request are finished, the progress
of current commands, and information about files on the server.
- \snippet examples/network/ftp/ftpwindow.h 0
+ \snippet examples/network/qftp/ftpwindow.h 0
We will look at each slot when we examine the \c FtpWindow
implementation in the next section. We also make use of a few
private variables:
- \snippet examples/network/ftp/ftpwindow.h 1
+ \snippet examples/network/qftp/ftpwindow.h 1
The \c isDirectory hash keeps a history of all entries explored on
the FTP server, and registers whether an entry represents a
directory or a file. We use the QFile object to download files
from the FTP server.
-
+
\section1 FtpWindow Class Implementation
We skip the \c FtpWindow constructor as it only contains code for
setting up the GUI, which is explained in other examples.
-
+
We move on to the slots, starting with \c connectOrDisconnect().
- \snippet examples/network/ftp/ftpwindow.cpp 0
+ \snippet examples/network/qftp/ftpwindow.cpp 0
If \c ftp is already pointing to a QFtp object, we QFtp::Close its
FTP connection and delete the object it points to. Note that we do
@@ -106,7 +106,7 @@
to finish its abort operation.
\dots
- \snippet examples/network/ftp/ftpwindow.cpp 1
+ \snippet examples/network/qftp/ftpwindow.cpp 1
If we get here, \c connectOrDisconnect() was called to establish a
new FTP connection. We create a new QFtp for our new connection,
@@ -118,7 +118,7 @@
is emitted repeatedly during an FTP file transfer, giving us
progress reports.
- \snippet examples/network/ftp/ftpwindow.cpp 2
+ \snippet examples/network/qftp/ftpwindow.cpp 2
The \gui {Ftp Server} line edit contains the IP address or
hostname of the server to which we want to connect. We first check
@@ -134,39 +134,39 @@
We move on to the \c downloadFile() slot:
- \snippet examples/network/ftp/ftpwindow.cpp 3
+ \snippet examples/network/qftp/ftpwindow.cpp 3
\dots
- \snippet examples/network/ftp/ftpwindow.cpp 4
-
+ \snippet examples/network/qftp/ftpwindow.cpp 4
+
We first fetch the name of the file, which we find in the selected
item of \c fileList. We then start the download by using
QFtp::get(). QFtp will send progress signals during the download
and a signal when the download is completed.
- \snippet examples/network/ftp/ftpwindow.cpp 5
+ \snippet examples/network/qftp/ftpwindow.cpp 5
QFtp supports canceling the download of files.
- \snippet examples/network/ftp/ftpwindow.cpp 6
+ \snippet examples/network/qftp/ftpwindow.cpp 6
The \c ftpCommandFinished() slot is called when QFtp has
finished a QFtp::Command. If an error occurred during the
command, QFtp will set \c error to one of the values in
the QFtp::Error enum; otherwise, \c error is zero.
-
- \snippet examples/network/ftp/ftpwindow.cpp 7
+
+ \snippet examples/network/qftp/ftpwindow.cpp 7
After login, the QFtp::list() function will list the top-level
directory on the server. addToList() is connected to
QFtp::listInfo(), and will be invoked for each entry in that
directory.
- \snippet examples/network/ftp/ftpwindow.cpp 8
+ \snippet examples/network/qftp/ftpwindow.cpp 8
When a \l{QFtp::}{Get} command is finished, a file has finished
downloading (or an error occurred during the download).
-
- \snippet examples/network/ftp/ftpwindow.cpp 9
+
+ \snippet examples/network/qftp/ftpwindow.cpp 9
After a \l{QFtp::}{List} command is performed, we have to check if
no entries were found (in which case our \c addToList() function
@@ -174,7 +174,7 @@
Let's continue with the \c addToList() slot:
- \snippet examples/network/ftp/ftpwindow.cpp 10
+ \snippet examples/network/qftp/ftpwindow.cpp 10
When a new file has been resolved during a QFtp::List command,
this slot is invoked with a QUrlInfo describing the file. We
@@ -182,26 +182,26 @@
does not have a current item, we set the new item to be the
current item.
- \snippet examples/network/ftp/ftpwindow.cpp 11
+ \snippet examples/network/qftp/ftpwindow.cpp 11
The \c processItem() slot is called when an item is double clicked
in the \gui {File List}. If the item represents a directory, we
want to load the contents of that directory with QFtp::list().
- \snippet examples/network/ftp/ftpwindow.cpp 12
+ \snippet examples/network/qftp/ftpwindow.cpp 12
\c cdToParent() is invoked when the user requests to go to the
parent directory of the one displayed in the file list. After
changing the directory, we QFtp::List its contents.
- \snippet examples/network/ftp/ftpwindow.cpp 13
+ \snippet examples/network/qftp/ftpwindow.cpp 13
The \c updateDataTransferProgress() slot is called regularly by
QFtp::dataTransferProgress() when a file download is in progress.
We use a QProgressDialog to show the download progression to the
user.
- \snippet examples/network/ftp/ftpwindow.cpp 14
+ \snippet examples/network/qftp/ftpwindow.cpp 14
The \c enableDownloadButton() is called whenever the current item
in \c fileList changes. If the item represents a file, the \gui
diff --git a/doc/src/examples/globalVariables.qdoc b/doc/src/examples/globalVariables.qdoc
index 6afeefff7..e79541c70 100644
--- a/doc/src/examples/globalVariables.qdoc
+++ b/doc/src/examples/globalVariables.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/googlechat.qdoc b/doc/src/examples/googlechat.qdoc
index 956788603..cc1c796cd 100644
--- a/doc/src/examples/googlechat.qdoc
+++ b/doc/src/examples/googlechat.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/googlesuggest.qdoc b/doc/src/examples/googlesuggest.qdoc
index 9fa0c36ac..ab8ab57a9 100644
--- a/doc/src/examples/googlesuggest.qdoc
+++ b/doc/src/examples/googlesuggest.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -43,10 +43,152 @@
\example network/googlesuggest
\title Google Suggest Example
- The Google Suggest example shows how to use the network access manager
- to get the list of suggested search terms from Google.
+ The Google Suggest example demonstrates how to use the QNetworkAccessManager
+ class to obtain a list of suggestions from the Google search engine as the
+ user types into a QLineEdit.
\image googlesuggest-example.png
- \note The Google Suggest suggestion service is a registered trademark of Google Inc.
+ The application makes use of the \c get function in
+ QNetworkAccessManager to post a request and obtain the result of the search
+ query sent to the Google search engine. The results returned are listed as
+ clickable links appearing below the search box as a drop-down menu.
+
+ The widget is built up by a QLineEdit as the search box, and a QTreeView
+ used as a popup menu below the search box.
+
+ \section1 GSuggestCompletion Class Declaration
+
+ This class implements an event filter and a number of functions to display
+ the search results and to determent when and how to perform the search.
+
+ \snippet examples/network/googlesuggest/googlesuggest.h 1
+
+ The class connects to a QLineEdit and uses a QTreeWidget to display the
+ results. A QTimer controls the start of the network requests that are
+ executed using a QNetworkAccessManager.
+
+ \section1 GSuggestCompletion Class Implementation
+
+ We start by defining a constant containing the URL to be used in the Google
+ queries. This is the basis for the query. The letters typed into the search
+ box will be added to the query to perform the search itself.
+
+ \snippet examples/network/googlesuggest/googlesuggest.cpp 1
+
+ In the constructor, we set the parent of this GSuggestCompletion instance
+ to be the QLineEdit passed in. For simplicity, the QLineEdit is also stored
+ in the explicit \c editor member variable.
+
+ We then create a QTreeWidget as a toplevel widget and configure the various
+ properties to give it the look of a popup widget.
+
+ The popup will be populated by the results returned from Google. We set
+ the number of columns to be two, since we want to display both the
+ suggested search term and the number of hits it will trigger in the search
+ engine.
+
+ Furthermore, we install the GSuggestCompletion instance as an event filter
+ on the QTreeWidget, and connect the \c itemClicked() signal with the \c
+ doneCompletion() slot.
+
+ A single-shot QTimer is used to start the request when the user has stopped
+ typing for 500 ms.
+
+ Finally, we connect the networkManagers \c finished() signal with the \c
+ handleNetworkData() slot to handle the incoming data.
+
+ \snippet examples/network/googlesuggest/googlesuggest.cpp 2
+
+ Since the QTreeWidget popup has been instantiated as a toplevel widget, the
+ destructor has to delete it explicitly from memory to avoid a memory leak.
+
+ \snippet examples/network/googlesuggest/googlesuggest.cpp 3
+
+ The event filter handles mouse press and key press events that are
+ delivered to the popup. For mouse press events we just hide the popup and
+ return focus to the editor widget, and then return true to prevent further
+ event processing.
+
+ Key event handling is implemented so that Enter and Return execute the
+ selected link, while the Escape key hides the popup. Sine we want to be
+ able to navigate the list of suggestions using the different navigation
+ keys on the keyboard we let Qt continue regular event processing for those
+ by returning false from the eventFilter reimplementation.
+
+ For all other keys, the event will be passed on to the editor widget and the
+ popup is hidden. This way the user's typing will not be interrupted by the
+ popping up of the completion list.
+
+ \snippet examples/network/googlesuggest/googlesuggest.cpp 4
+
+ The \c showCompletion() function populates the QTreeWidget with the results
+ returned from the query. It takes two QStringLists, one with the suggested
+ search terms and the other with the corresponding number of hits.
+
+ \snippet examples/network/googlesuggest/googlesuggest.cpp 5
+
+ A QTreeWidgetItem is created for each index in the list and inserted into
+ the QTreeWidget. Finally, we adjust position and size of the popup to make
+ sure that it pops up in the correct position below the editor, and show it.
+
+ The \c doneCompletion() function, which is called by the event filter when
+ either Enter or Return keys are pressed, stops the timer to prevent further
+ requests and passes the text of the selected item to the editor. We then
+ make the \c editor QLineEdit emit the returnPressed() signal, to which the
+ application can connect to open the respective web page.
+
+ \snippet examples/network/googlesuggest/googlesuggest.cpp 6
+
+ The \c autoSuggest() slot is called when the timer times out, and uses the
+ text in the editor to build the complete search query. The query is then
+ passed to the QNetworkAccessManager's \c get() function to start the
+ request.
+
+ \snippet examples/network/googlesuggest/googlesuggest.cpp 7
+
+ The function \c preventSuggest() stops the timer to prevent further
+ requests from being started.
+
+ \snippet examples/network/googlesuggest/googlesuggest.cpp 8
+
+ When the network request is finished, the QNetworkAccessManager delivers the
+ data received from the server through the networkReply object.
+
+ \snippet examples/network/googlesuggest/googlesuggest.cpp 9
+
+ To extract the data from the reply we use the \c readAll() function, which
+ is inherited from QIODevice and returns a QByteArray. Since this data is
+ encoded in XML we can use a QXmlStreamReader to traverse the data and
+ extract the search result as QStrings, which we can stream into two
+ QStringLists used to populate the popup.
+
+ Finally, we schedule the QNetworkReply object for deletion using the \c
+ deleteLater function.
+
+ \section1 SearchBox Class Declaration
+
+ The SearchBox class inherits QLineEdit and adds the protected slot \c
+ doSearch().
+
+ A \c GSuggestCompletion member provides the SearchBox with the request
+ functionality and the suggestions returned from the Google search engine.
+
+ \snippet examples/network/googlesuggest/searchbox.h 1
+
+ \section1 SearchBox Class Implementation
+
+ The search box constructor instantiates the GSuggestCompletion object and
+ connects the returnPressed() signal to the doSearch() slot.
+
+ \snippet examples/network/googlesuggest/searchbox.cpp 1
+
+ The function \c doSearch() stops the completer from sending any further
+ queries to the search engine.
+
+ Further, the function extracts the selected search phrase and opens it
+ in the default web browser using QDesktopServices.
+
+ \snippet examples/network/googlesuggest/searchbox.cpp 2
+
*/
diff --git a/doc/src/examples/grabber.qdoc b/doc/src/examples/grabber.qdoc
index 604aad06c..56c2433df 100644
--- a/doc/src/examples/grabber.qdoc
+++ b/doc/src/examples/grabber.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/groupbox.qdoc b/doc/src/examples/groupbox.qdoc
index 09c312197..08f3a3dbd 100644
--- a/doc/src/examples/groupbox.qdoc
+++ b/doc/src/examples/groupbox.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/hellogl.qdoc b/doc/src/examples/hellogl.qdoc
index bba5063fa..5fd2c6f18 100644
--- a/doc/src/examples/hellogl.qdoc
+++ b/doc/src/examples/hellogl.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -65,7 +65,8 @@
\snippet examples/opengl/hellogl/glwidget.h 0
We use a destructor to ensure that any OpenGL-specific data structures
- are deleted when the widget is no longer needed.
+ are deleted when the widget is no longer needed (although in this case nothing
+ needs cleaning up).
\snippet examples/opengl/hellogl/glwidget.h 1
@@ -84,8 +85,8 @@
The rest of the class contains utility functions and variables that are
used to construct and hold orientation information for the scene. The
- \c object variable will be used to hold an identifier for an OpenGL
- display list.
+ \c logo variable will be used to hold a pointer to the QtLogo object which
+ contains all the geometry.
\section1 GLWidget Class Implementation
@@ -95,8 +96,9 @@
\section2 Widget Construction and Sizing
- The constructor provides default rotation angles for the scene, initializes
- the variable used for the display list, and sets up some colors for later use.
+ The constructor provides default rotation angles for the scene, sets
+ the pointer to the QtLogo object to null, and sets up some colors for
+ later use.
\snippet examples/opengl/hellogl/glwidget.cpp 0
@@ -105,7 +107,7 @@
\snippet examples/opengl/hellogl/glwidget.cpp 1
- The destructor ensures that the display list is deleted properly.
+ In this case nothing requires cleaning up.
We provide size hint functions to ensure that the widget is shown at a
reasonable size:
@@ -139,9 +141,9 @@
\snippet examples/opengl/hellogl/glwidget.cpp 6
In this example, we reimplement the function to set the background color,
- create a display list containing information about the object we want to
+ create a QtLogo object instance which will contain all the geometry to
display, and set up the rendering process to use a particular shading model
- and rendering flags:
+ and rendering flags.
\section2 Resizing the Viewport
@@ -172,8 +174,8 @@
In this example, we clear the widget using the background color that
we defined in the \l{QGLWidget::initializeGL()}{initializeGL()} function,
- set up the frame of reference for the object we want to display, and call
- the display list containing the rendering commands for the object.
+ set up the frame of reference for the geometry we want to display, and
+ call the draw method of the QtLogo object to render the scene.
\section2 Mouse Handling
@@ -196,12 +198,57 @@
cursor to rotate the object, the cursor's position is updated every time
a move event is received.
- \section2 Utility Functions
+ \section1 QtLogo Class
+
+ This class encapsulates the OpenGL geometry data which will be rendered
+ in the basic 3D scene.
+
+ \snippet examples/opengl/shared/qtlogo.h 0
+
+ The geometry is divided into a list of parts which may be rendered in
+ different ways. The data itself is contained in a Geometry structure that
+ includes the vertices, their lighting normals and index values which
+ point into the vertices, grouping them into faces.
+
+ \snippet examples/opengl/shared/qtlogo.cpp 0
+
+ The data in the Geometry class is stored in QVector<QVector3D> members
+ which are convenient for use with OpenGL because they expose raw
+ contiguous floating point values via the constData() method. Methods
+ are included for adding new vertex data, either with smooth normals, or
+ facetted normals; and for enabling the geometry ready for rendering.
+
+ \snippet examples/opengl/shared/qtlogo.cpp 1
+
+ The higher level Patch class has methods for accumulating the geometry
+ one face at a time, and treating collections of faces or "patches" with
+ transformations, applying different colors or smoothing. Although faces
+ may be added as triangles or quads, at the OpenGL level all data is
+ treated as triangles for compatibility with OpenGL/ES.
+
+ \snippet examples/opengl/shared/qtlogo.cpp 2
+
+ Drawing a Patch is simply acheived by applying any transformation,
+ and material effect, then drawing the data using the index range for
+ the patch. The model-view matrix is saved and then restored so that
+ any transformation does not affect other parts of the scene.
+
+ \snippet examples/opengl/shared/qtlogo.cpp 3
+
+ The geometry is built once on construction of the QtLogo, and it is
+ paramaterized on a number of divisions - which controls how "chunky" the
+ curved section of the logo looks - and on a scale, so larger and smaller
+ QtLogo objects can be created without having to use OpenGL scaling
+ (which would force normal recalculation).
+
+ The building process is done by helper classes (read the source for full
+ details) which only exist during the build phase, to assemble the parts
+ of the scene.
+
+ \snippet examples/opengl/shared/qtlogo.cpp 4
- We have omitted the utility functions, \c makeObject(), \c quad(),
- \c extrude(), and \c normalizeAngle() from our discussion. These can be
- viewed in the quoted source for \c glwidget.cpp via the link at the
- start of this document.
+ Finally the complete QtLogo scene is simply drawn by enabling the data arrays
+ and then iterating over the parts, calling draw() on each one.
\section1 Window Class Definition
diff --git a/doc/src/examples/hellogl_es.qdoc b/doc/src/examples/hellogl_es.qdoc
index 0293584ee..a6a64df09 100644
--- a/doc/src/examples/hellogl_es.qdoc
+++ b/doc/src/examples/hellogl_es.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
/*!
\example opengl/hellogl_es
\title Hello GL ES Example
diff --git a/doc/src/examples/helloscript.qdoc b/doc/src/examples/helloscript.qdoc
index 61615f0b7..243b10fad 100644
--- a/doc/src/examples/helloscript.qdoc
+++ b/doc/src/examples/helloscript.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -69,7 +69,7 @@
The contents of the script file are read.
- \snippet examples/script/helloscript/helloscript.qs 0
+ \snippet examples/script/helloscript/helloscript.js 0
The script sets the \c text (note that the qTr() function is used to allow
for translation) and \c styleSheet properties of the button, and calls the
@@ -105,7 +105,7 @@
To generate the translation file, run \c lupdate as follows:
\code
- lupdate helloscript.qs -ts helloscript_la.ts
+ lupdate helloscript.js -ts helloscript_la.ts
\endcode
You should now have a file \c helloscript_la.ts in the current
@@ -115,7 +115,7 @@
linguist helloscript_la.ts
\endcode
- You should now see the text "helloscript.qs" in the top left pane.
+ You should now see the text "helloscript.js" in the top left pane.
Double-click it, then click on "Hello world!" and enter "Orbis, te
saluto!" in the \gui Translation pane (the middle right of the
window). Don't forget the exclamation mark!
diff --git a/doc/src/examples/hellotr.qdoc b/doc/src/examples/hellotr.qdoc
index bb454e73e..7d2304e7f 100644
--- a/doc/src/examples/hellotr.qdoc
+++ b/doc/src/examples/hellotr.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/htmlinfo.qdoc b/doc/src/examples/htmlinfo.qdoc
new file mode 100644
index 000000000..7c5cf6c08
--- /dev/null
+++ b/doc/src/examples/htmlinfo.qdoc
@@ -0,0 +1,89 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example xml/htmlinfo
+ \title XML HTML Info Example
+
+ The XML HTML Info example provides a simple command line utility that
+ scans the current directory for HTML files and prints statistics about
+ them to standard out.
+
+ \note Standard out is redirected on some platforms. On Symbian using Open
+ C \c stdout is by default directed to the console window, but this window
+ may not always be visible. To redirect to a file instead, locate the \c
+ c:\\system\\data\\config.ini file (on either the emulator or the device)
+ and change \c STDOUT to point to \c MEDIA4. This will redirect the console
+ to \c c:\\system\\data\\out.txt.
+
+ The files are parsed using a QXmlStreamReader object. If the file does
+ not contain a well-formed XML document, a description of the error is
+ printed to the standard error console.
+
+ \section1 Basic Operation
+
+ The main function of the example uses QDir to access files in the current
+ directory that match either "*.htm" or "*.html". For each file found,
+ the \c parseHtmlFile() function is called.
+
+ Reading XML is handled by an instance of the QXmlStreamReader class, which
+ operates on the input file object:
+
+ \snippet examples/xml/htmlinfo/main.cpp 0
+
+ The work of parsing and the XML and extracting statistics is done in a
+ while loop, and is driven by input from the reader:
+
+ \snippet examples/xml/htmlinfo/main.cpp 1
+
+ If more input is available, the next token from the input file is read
+ and parsed. The program then looks for the specific element types,
+ "title", "a", and "p", and stores information about them.
+
+ When there is no more input, the loop terminates. If an error occurred,
+ information is written to the standard out file via a stream, and the
+ example exits:
+
+ \snippet examples/xml/htmlinfo/main.cpp 2
+
+ If no error occurred, the example prints some statistics from the data
+ gathered in the loop, and then exits.
+*/
diff --git a/doc/src/examples/http.qdoc b/doc/src/examples/http.qdoc
index bb91eb2fb..0826951bd 100644
--- a/doc/src/examples/http.qdoc
+++ b/doc/src/examples/http.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/i18n.qdoc b/doc/src/examples/i18n.qdoc
index 74bd254dc..b4629f43c 100644
--- a/doc/src/examples/i18n.qdoc
+++ b/doc/src/examples/i18n.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/icons.qdoc b/doc/src/examples/icons.qdoc
index 858b16b32..46b648f4a 100644
--- a/doc/src/examples/icons.qdoc
+++ b/doc/src/examples/icons.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/imagecomposition.qdoc b/doc/src/examples/imagecomposition.qdoc
index ed9d7be89..c68a7b27d 100644
--- a/doc/src/examples/imagecomposition.qdoc
+++ b/doc/src/examples/imagecomposition.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/imagegestures.qdoc b/doc/src/examples/imagegestures.qdoc
new file mode 100644
index 000000000..33c1ace93
--- /dev/null
+++ b/doc/src/examples/imagegestures.qdoc
@@ -0,0 +1,116 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example gestures/imagegestures
+ \title Image Gestures Example
+
+ This example shows how to enable gestures for a widget and use gesture input
+ to perform actions.
+
+ \image imagegestures-example.png Screenshot of the Image Gestures example.
+
+ We use two classes to create the user interface for the application: \c MainWidget
+ and \c ImageWidget. The \c MainWidget class is simply used as a container for the
+ \c ImageWidget class, which we will configure to accept gesture input. Since we
+ are interested in the way gestures are used, we will concentrate on the
+ implementation of the \c ImageWidget class.
+
+ \section1 ImageWidget Class Definition
+
+ The \c ImageWidget class is a simple QWidget subclass that reimplements the general
+ QWidget::event() handler function in addition to several more specific event handlers:
+
+ \snippet examples/gestures/imagegestures/imagewidget.h class definition begin
+ \dots
+ \snippet examples/gestures/imagegestures/imagewidget.h class definition end
+
+ We also implement a private helper function, \c gestureEvent(), to help manage
+ gesture events delivered to the widget, and three functions to perform actions
+ based on gestures: \c panTriggered(), \c pinchTriggered() and \c swipeTriggered().
+
+ \section1 ImageWidget Class Implementation
+
+ In the widget's constructor, we begin by setting up various parameters that will
+ be used to control the way images are displayed.
+
+ \snippet examples/gestures/imagegestures/imagewidget.cpp constructor
+
+ We enable three of the standard gestures for the widget by calling QWidget::grabGesture()
+ with the types of gesture we need. These will be recognized by the application's
+ default gesture recognizer, and events will be delivered to our widget.
+
+ Since QWidget does not define a specific event handler for gestures, the widget
+ needs to reimplement the general QWidget::event() to receive gesture events.
+
+ \snippet examples/gestures/imagegestures/imagewidget.cpp event handler
+
+ We implement the event handler to delegate gesture events to a private function
+ specifically written for the task, and pass all other events to QWidget's
+ implementation.
+
+ The \c gestureHandler() function examines the gestures supplied by the
+ newly-delivered QGestureEvent. Since only one gesture of a given type can be
+ used on a widget at any particular time, we can check for each gesture type
+ using the QGestureEvent::gesture() function:
+
+ \snippet examples/gestures/imagegestures/imagewidget.cpp gesture event handler
+
+ If a QGesture object is supplied for a certain type of gesture, we call a special
+ purpose function to deal with it, casting the gesture object to the appropriate
+ QGesture subclass.
+
+ To illustrate how a standard gesture can be interpreted by an application, we
+ show the implementation of the \c swipeTriggered() function, which handles the
+ gesture associated with a brushing or swiping motion on the user's display or
+ input device:
+
+ \snippet examples/gestures/imagegestures/imagewidget.cpp swipe function
+
+ The QSwipeGesture class provides specialized functions and defines a enum
+ to make it more convenient for developers to discover which direction, if
+ any, the user swiped the display. Here, we simply navigate to the previous
+ image in the collection if the user swiped upwards or to the left; otherwise
+ we navigate to the next image in the collection.
+
+ The other gestures are also handled by special purpose functions, but use
+ the values of properties held by the QGesture object passed to them.
+*/
diff --git a/doc/src/examples/imageviewer.qdoc b/doc/src/examples/imageviewer.qdoc
index c093b7a4c..a0815aeb0 100644
--- a/doc/src/examples/imageviewer.qdoc
+++ b/doc/src/examples/imageviewer.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/inputpanel.qdoc b/doc/src/examples/inputpanel.qdoc
new file mode 100644
index 000000000..1814d8ceb
--- /dev/null
+++ b/doc/src/examples/inputpanel.qdoc
@@ -0,0 +1,238 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example tools/inputpanel
+ \title Input Panel Example
+
+ The Input Panel example shows how to create an input panel that
+ can be used to input text into widgets using only the pointer and
+ no keyboard.
+
+ \image inputpanel-example.png
+
+ The input fields in the main window have no function other than
+ to accept input. The main focus is on how the extra input panel
+ can be used to input text without the need for a real keyboard or
+ keypad.
+
+ \section1 Main Form Class Definition
+
+ Because the main window has no other function than to accept
+ input, it has no class definition. Instead, its whole layout is
+ made in Qt Designer. This emphasizes the point that no widget
+ specific code is needed to use input panels with Qt.
+
+ \section1 MyInputPanelContext Class Definition
+
+ \snippet examples/tools/inputpanel/myinputpanelcontext.h 0
+
+ The \c MyInputPanelContext class inherits QInputContext, which is
+ Qt's base class for handling input methods.
+ \c MyInputPanelContext is responsible for managing the state of
+ the input panel and sending input method events to the receiving
+ widgets.
+
+ The \c inputPanel member is a pointer to the input panel widget
+ itself; in other words, the window that will display the buttons
+ used for input.
+
+ The \c identifierName(), \c language(), \c isComposing() and
+ \c reset() functions are there mainly to fill in the pure virtual
+ functions in the base class, QInputContext, but they can be
+ useful in other scenarios. The important functions and slots are
+ the following:
+
+ \list
+ \o \c filterEvent() is where we receive events telling us to open
+ or close the input panel.
+ \o \c sendCharacter() is a slot which is called when we want to
+ send a character to the focused widget.
+ \o \c updatePosition() is used to position the input panel
+ relative to the focused widget, and will be used when opening
+ the input panel.
+ \endlist
+
+ \section1 MyInputPanelContext Class Implementation
+
+ In the constructor we connect to the \c characterGenerated()
+ signal of the input panel, in order to receive key presses. We'll
+ see how it works in detail later on.
+
+ \snippet examples/tools/inputpanel/myinputpanelcontext.cpp 0
+
+ In the \c filterEvent() function, we must look for the two event
+ types: \c RequestSoftwareInputPanel and \c CloseSoftwareInputPanel.
+
+ \snippet examples/tools/inputpanel/myinputpanelcontext.cpp 1
+
+ The first type will be sent whenever
+ an input capable widget wants to ask for an input panel. Qt's
+ input widgets do this automatically. If we receive that type of
+ event, we call \c updatePosition() \mdash we'll see later on what it
+ does \mdash then show the actual input panel widget. If we receive
+ the \c CloseSoftwareInputPanel event, we do the opposite, and
+ hide the input panel.
+
+ \snippet examples/tools/inputpanel/myinputpanelcontext.cpp 2
+
+ We implement the \c sendCharacter() function so that it sends the
+ supplied character to the focused widget. All QInputContext based
+ classes are always supposed to send events to the widget returned
+ by QInputContext::focusWidget(). Note the QPointer guards to make
+ sure that the widget does not get destroyed in between events.
+
+ Also note that we chose to use key press events in this example.
+ For more complex use cases with composed text it might be more
+ appropriate to send QInputMethodEvent events.
+
+ The \c updatePosition() function is implemented to position the
+ actual input panel window directly below the focused widget.
+
+ \snippet examples/tools/inputpanel/myinputpanelcontext.cpp 3
+
+ It performs the positioning by obtaining the coordinates of the
+ focused widget and translating them to global coordinates.
+
+ \section1 MyInputPanel Class Definition
+
+ The \c MyInputPanel class inherits QWidget and is used to display
+ the input panel widget and its buttons.
+
+ \snippet examples/tools/inputpanel/myinputpanel.h 0
+
+ If we look at the member variables first, we see that there is
+ \c form, which is made with Qt Designer, that contains the layout
+ of buttons to click. Note that all the buttons in the layout have
+ been declared with the \c NoFocus focus policy so that we can
+ maintain focus on the window receiving input instead of the
+ window containing buttons.
+
+ The \c lastFocusedWidget is a helper variable, which also aids in
+ maintaining focus.
+
+ \c signalMapper is an instance of the QSignalMapper class and is
+ there to help us tell which button was clicked. Since they are
+ all very similar this is a better solution than creating a separate
+ slot for each one.
+
+ The functions that we implement in \c MyInputPanel are the
+ following:
+
+ \list
+ \o \c event() is used to intercept and manipulate focus events,
+ so we can maintain focus in the main window.
+ \o \c saveFocusWidget() is a slot which will be called whenever
+ focus changes, and allows us to store the newly focused widget
+ in \c lastFocusedWidget, so that its focus can be restored
+ if it loses it to the input panel.
+ \o \c buttonClicked() is a slot which will be called by the
+ \c signalMapper whenever it receives a \c clicked() signal
+ from any of the buttons.
+ \endlist
+
+ \section1 MyInputPanel Class Implementation
+
+ If we look at the constructor first, we have a lot of signals to
+ connect to!
+
+ We connect the QApplication::focusChanged() signal
+ to the \c saveFocusWidget() signal in order to get focus updates.
+ Then comes the interesting part with the signal mapper: the
+ series of \c setMapping() calls sets the mapper up so that each
+ signal from one of the buttons will result in a
+ QSignalMapper::mapped() signal, with the given widget as a
+ parameter. This allows us to do general processing of clicks.
+
+ \snippet examples/tools/inputpanel/myinputpanel.cpp 0
+
+ The next series of connections then connect each button's
+ \c clicked() signal to the signal mapper. Finally, we create
+ a connection from the \c mapped() signal to the
+ \c buttonClicked() slot, where we will handle it.
+
+ \snippet examples/tools/inputpanel/myinputpanel.cpp 3
+
+ In the \c buttonClicked() slot, we extract the value of the
+ "buttonValue" property. This is a custom property which was
+ created in Qt Designer and set to the character that we wish the
+ button to produce. Then we emit the \c characterGenerated()
+ signal, which \c MyInputPanelContext is connected to. This will
+ in turn cause it to send the input to the focused widget.
+
+ In the \c saveFocusWidget() slot, we test whether the newly
+ focused widget is a child of the input panel or not, using the
+ QWidget::isAncestorOf() call.
+
+ \snippet examples/tools/inputpanel/myinputpanel.cpp 2
+
+ If it isn't, it means that the widget is outside the input panel,
+ and we store a pointer to that widget for later.
+
+ In the \c event() function we handle QEvent::WindowActivate
+ event, which occurs if the focus switches to the input panel.
+
+ \snippet examples/tools/inputpanel/myinputpanel.cpp 1
+
+ Since we want avoid focus on the input panel, we immediately call
+ QWidget::activateWindow() on the widget that last had focus, so
+ that input into that widget can continue. We ignore any other events
+ that we receive.
+
+ \section1 Setting the Input Context
+
+ The main function for the example is very similar to those for other
+ examples. The only real difference is that it creates a
+ \c MyInputPanelContext and sets it as the application-wide input
+ context.
+
+ \snippet examples/tools/inputpanel/main.cpp main
+
+ With the input context in place, we set up and show the user interface
+ made in Qt Designer before running the event loop.
+
+ \section1 Further Reading
+
+ This example shows a specific kind of input context that uses interaction
+ with a widget to provide input for another. Qt's input context system can
+ also be used to create other kinds of input methods. We recommend starting
+ with the QInputContext documentation if you want to explore further.
+*/
diff --git a/doc/src/examples/itemviewspuzzle.qdoc b/doc/src/examples/itemviewspuzzle.qdoc
index 35cad6d8d..da3489ec4 100644
--- a/doc/src/examples/itemviewspuzzle.qdoc
+++ b/doc/src/examples/itemviewspuzzle.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/licensewizard.qdoc b/doc/src/examples/licensewizard.qdoc
index 631db04af..172f12306 100644
--- a/doc/src/examples/licensewizard.qdoc
+++ b/doc/src/examples/licensewizard.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/lighting.qdoc b/doc/src/examples/lighting.qdoc
new file mode 100644
index 000000000..8e9d1c227
--- /dev/null
+++ b/doc/src/examples/lighting.qdoc
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example effects/lighting
+ \title Lighting Effect Example
+
+ \image lightingeffect-example.png
+*/
diff --git a/doc/src/examples/lineedits.qdoc b/doc/src/examples/lineedits.qdoc
index 49014e537..afef403a6 100644
--- a/doc/src/examples/lineedits.qdoc
+++ b/doc/src/examples/lineedits.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/localfortuneclient.qdoc b/doc/src/examples/localfortuneclient.qdoc
index 311bd7e3d..727e615e0 100644
--- a/doc/src/examples/localfortuneclient.qdoc
+++ b/doc/src/examples/localfortuneclient.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/localfortuneserver.qdoc b/doc/src/examples/localfortuneserver.qdoc
index 9c6018051..c2ef95360 100644
--- a/doc/src/examples/localfortuneserver.qdoc
+++ b/doc/src/examples/localfortuneserver.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/loopback.qdoc b/doc/src/examples/loopback.qdoc
index dbb480cfa..e505e0bb0 100644
--- a/doc/src/examples/loopback.qdoc
+++ b/doc/src/examples/loopback.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/mandelbrot.qdoc b/doc/src/examples/mandelbrot.qdoc
index 4d798a129..dce91ff23 100644
--- a/doc/src/examples/mandelbrot.qdoc
+++ b/doc/src/examples/mandelbrot.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/masterdetail.qdoc b/doc/src/examples/masterdetail.qdoc
index 2b81d4d30..ef929e7a8 100644
--- a/doc/src/examples/masterdetail.qdoc
+++ b/doc/src/examples/masterdetail.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/mdi.qdoc b/doc/src/examples/mdi.qdoc
index 68ecfc02f..8ea1f90cb 100644
--- a/doc/src/examples/mdi.qdoc
+++ b/doc/src/examples/mdi.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/menus.qdoc b/doc/src/examples/menus.qdoc
index c5d1e61e3..88ea482c7 100644
--- a/doc/src/examples/menus.qdoc
+++ b/doc/src/examples/menus.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/mousecalibration.qdoc b/doc/src/examples/mousecalibration.qdoc
index cc39a7869..260833226 100644
--- a/doc/src/examples/mousecalibration.qdoc
+++ b/doc/src/examples/mousecalibration.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/moveblocks.qdoc b/doc/src/examples/moveblocks.qdoc
index 97fbe7710..2dce477ab 100644
--- a/doc/src/examples/moveblocks.qdoc
+++ b/doc/src/examples/moveblocks.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/movie.qdoc b/doc/src/examples/movie.qdoc
index be890d22e..a881b58af 100644
--- a/doc/src/examples/movie.qdoc
+++ b/doc/src/examples/movie.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/multipleinheritance.qdoc b/doc/src/examples/multipleinheritance.qdoc
index 9ddc7622e..4da6c1294 100644
--- a/doc/src/examples/multipleinheritance.qdoc
+++ b/doc/src/examples/multipleinheritance.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/multitouch-dials.qdoc b/doc/src/examples/multitouch-dials.qdoc
new file mode 100644
index 000000000..52e964cc9
--- /dev/null
+++ b/doc/src/examples/multitouch-dials.qdoc
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example multitouch/dials
+ \title Multi-Touch Dials Example
+
+ The Multi-Touch Dials example shows how to apply multi-touch to a set of
+ standard Qt widgets.
+
+ \image multitouch-dials-example.png
+*/
diff --git a/doc/src/examples/multitouch-knobs.qdoc b/doc/src/examples/multitouch-knobs.qdoc
new file mode 100644
index 000000000..d0c537c54
--- /dev/null
+++ b/doc/src/examples/multitouch-knobs.qdoc
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example multitouch/knobs
+ \title Multi-Touch Knobs Example
+
+ The Multi-Touch Knobs example shows how to create custom controls that
+ accept multi-touch input.
+
+ \image multitouch-knobs-example.png
+*/
diff --git a/doc/src/examples/musicplayerexample.qdoc b/doc/src/examples/musicplayerexample.qdoc
index 26da02228..714558314 100644
--- a/doc/src/examples/musicplayerexample.qdoc
+++ b/doc/src/examples/musicplayerexample.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,27 +21,26 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
/*!
- \example phonon/musicplayer
+ \example phonon/qmusicplayer
\title Music Player Example
The Music Player Example shows how to use Phonon - the multimedia
@@ -90,7 +90,7 @@
look at them when we walk through the \c MainWindow
implementation.
- \snippet examples/phonon/musicplayer/mainwindow.h 2
+ \snippet examples/phonon/qmusicplayer/mainwindow.h 2
We use the \l{Phonon::}{SeekSlider} to move the current playback
position in the media stream, and the \l{Phonon::}{VolumeSlider}
@@ -99,7 +99,7 @@
metaInformationProvider, to get the meta information from the
music files. More on this later.
- \snippet examples/phonon/musicplayer/mainwindow.h 1
+ \snippet examples/phonon/qmusicplayer/mainwindow.h 1
The \l{Phonon::}{MediaObject} informs us of the state of the playback and
properties of the media it is playing back through a series of
@@ -116,7 +116,7 @@
We start with the constructor:
- \snippet examples/phonon/musicplayer/mainwindow.cpp 0
+ \snippet examples/phonon/qmusicplayer/mainwindow.cpp 0
We start by instantiating our media and audio output objects.
As mentioned, the media object knows how to playback
@@ -130,20 +130,20 @@
paths. Objects are connected using the \c createPath() function,
which is part of the Phonon namespace.
- \snippet examples/phonon/musicplayer/mainwindow.cpp 1
+ \snippet examples/phonon/qmusicplayer/mainwindow.cpp 1
We also connect signals of the media object to slots in our \c
MainWindow. We will examine them shortly.
- \snippet examples/phonon/musicplayer/mainwindow.cpp 2
+ \snippet examples/phonon/qmusicplayer/mainwindow.cpp 2
Finally, we call private helper functions to set up the GUI.
The \c setupUi() function contains code for setting up the seek
, and volume slider. We move on to \c setupUi():
- \snippet examples/phonon/musicplayer/mainwindow.cpp 3
+ \snippet examples/phonon/qmusicplayer/mainwindow.cpp 3
\dots
- \snippet examples/phonon/musicplayer/mainwindow.cpp 4
+ \snippet examples/phonon/qmusicplayer/mainwindow.cpp 4
After creating the widgets, they must be supplied with the
\l{Phonon::}{MediaObject} and \l{Phonon::}{AudioOutput} objects
@@ -152,12 +152,12 @@
In the \c setupActions(), we connect the actions for the play,
pause, and stop tool buttons, to slots of the media object.
- \snippet examples/phonon/musicplayer/mainwindow.cpp 5
+ \snippet examples/phonon/qmusicplayer/mainwindow.cpp 5
We move on to the slots of \c MainWindow, starting with \c
addFiles():
- \snippet examples/phonon/musicplayer/mainwindow.cpp 6
+ \snippet examples/phonon/qmusicplayer/mainwindow.cpp 6
In the \c addFiles() slot, we add files selected by the user to
the \c sources list. We then set the first source selected on the
@@ -169,7 +169,7 @@
stateChanged() signal. The \c stateChanged() slot is connected
to this signal.
- \snippet examples/phonon/musicplayer/mainwindow.cpp 9
+ \snippet examples/phonon/qmusicplayer/mainwindow.cpp 9
The \l{Phonon::MediaObject::}{errorString()} function gives a
description of the error that is suitable for users of a Phonon
@@ -177,7 +177,7 @@
helps us determine whether it is possible to try to play the same
file again.
- \snippet examples/phonon/musicplayer/mainwindow.cpp 10
+ \snippet examples/phonon/qmusicplayer/mainwindow.cpp 10
We update the GUI when the playback state changes, i.e., when it
starts, pauses, stops, or resumes.
@@ -188,26 +188,26 @@
The \c tick() slot is connected to a \l{Phonon::}{MediaObject} signal which is
emitted when the playback position changes:
- \snippet examples/phonon/musicplayer/mainwindow.cpp 11
+ \snippet examples/phonon/qmusicplayer/mainwindow.cpp 11
The \c time is given in milliseconds.
When the table is clicked on with the mouse, \c tableClick()
is invoked:
- \snippet examples/phonon/musicplayer/mainwindow.cpp 12
+ \snippet examples/phonon/qmusicplayer/mainwindow.cpp 12
Since we stop the media object, we first check whether it is
currently playing. \c row contains the row in the table that was
clicked upon; the indices of \c sources follows the table, so we
can simply use \c row to find the new source.
- \snippet examples/phonon/musicplayer/mainwindow.cpp 13
+ \snippet examples/phonon/qmusicplayer/mainwindow.cpp 13
When the media source changes, we simply need to select the
corresponding row in the table.
- \snippet examples/phonon/musicplayer/mainwindow.cpp 14
+ \snippet examples/phonon/qmusicplayer/mainwindow.cpp 14
When \c metaStateChanged() is invoked, \c
metaInformationProvider has resolved the meta data for its current
@@ -220,7 +220,7 @@
music table. A file might not contain the meta data requested,
in which case an empty string is returned.
- \snippet examples/phonon/musicplayer/mainwindow.cpp 15
+ \snippet examples/phonon/qmusicplayer/mainwindow.cpp 15
If we have media sources in \c sources of which meta information
is not resolved, we set a new source on the \c
@@ -229,7 +229,7 @@
We move on to the \c aboutToFinish() slot:
- \snippet examples/phonon/musicplayer/mainwindow.cpp 16
+ \snippet examples/phonon/qmusicplayer/mainwindow.cpp 16
When a file is finished playing, the Music Player will move on and
play the next file in the table. This slot is connected to the
@@ -244,5 +244,5 @@
\l{QCoreApplication::}{setApplicationName()}. This is because
D-Bus, which is used by Phonon on Linux systems, demands this.
- \snippet examples/phonon/musicplayer/main.cpp 1
+ \snippet examples/phonon/qmusicplayer/main.cpp 1
*/
diff --git a/doc/src/examples/network-chat.qdoc b/doc/src/examples/network-chat.qdoc
index b30d3f6d7..88f31ddc5 100644
--- a/doc/src/examples/network-chat.qdoc
+++ b/doc/src/examples/network-chat.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/openvg-star.qdoc b/doc/src/examples/openvg-star.qdoc
new file mode 100644
index 000000000..7c78e1286
--- /dev/null
+++ b/doc/src/examples/openvg-star.qdoc
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example openvg/star
+ \title OpenVG Star Example
+
+ The OpenVG Star example demonstrates the use of Qt's OpenVG integration.
+*/
diff --git a/doc/src/examples/orderform.qdoc b/doc/src/examples/orderform.qdoc
index e52b5936e..c4dad201d 100644
--- a/doc/src/examples/orderform.qdoc
+++ b/doc/src/examples/orderform.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/overpainting.qdoc b/doc/src/examples/overpainting.qdoc
index 91100c040..e00ec9146 100644
--- a/doc/src/examples/overpainting.qdoc
+++ b/doc/src/examples/overpainting.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,7 @@
yet also behaves like any other standard Qt widget with support for
signals and slots, properties, and Qt's action system.
- Usually, QGLWidget is subclassed to display a pure 3D scene; the
+ Usually, QGLWidget is subclassed to display a pure 3D scene. The
developer reimplements \l{QGLWidget::initializeGL()}{initializeGL()}
to initialize any required resources, \l{QGLWidget::resizeGL()}{resizeGL()}
to set up the projection and viewport, and
@@ -83,7 +83,7 @@
\snippet examples/opengl/overpainting/glwidget.h 4
As usual, the widget uses \l{QGLWidget::initializeGL()}{initializeGL()}
- to set up objects for our scene and perform other OpenGL initialization tasks.
+ to set up geometry for our scene and perform OpenGL initialization tasks.
The \l{QGLWidget::resizeGL()}{resizeGL()} function is used to ensure that
the 3D graphics in the scene are transformed correctly to the 2D viewport
displayed in the widget.
@@ -100,7 +100,7 @@
\c animationTimer to update the widget; the \c createBubbles() function
initializes the \c bubbles list with instances of a helper class used to
draw the animation; the \c drawInstructions() function is responsible for
- a semi-transparent messages that is also overpainted onto the OpenGL scene.
+ a semi-transparent message that is also overpainted onto the OpenGL scene.
\section1 GLWidget Class Implementation
@@ -119,8 +119,9 @@
\snippet examples/opengl/overpainting/glwidget.cpp 1
- The \c initializeGL() function is fairly minimal, only setting up the display
- list used in the scene.
+ The \c initializeGL() function is fairly minimal, only setting up the QtLogo
+ object used in the scene. See the \l{Hello GL Example}{Hello GL} example
+ for details of the QtLogo class.
\snippet examples/opengl/overpainting/glwidget.cpp 2
@@ -159,9 +160,10 @@
\snippet examples/opengl/overpainting/glwidget.cpp 7
- Once the list containing the object has been executed, the matrix stack
- needs to be restored to its original state at the start of this function
- before we can begin overpainting:
+ Once the QtLogo object's draw method has been executed, the GL
+ states we changed and the matrix stack needs to be restored to its
+ original state at the start of this function before we can begin
+ overpainting:
\snippet examples/opengl/overpainting/glwidget.cpp 8
@@ -175,6 +177,12 @@
When QPainter::end() is called, suitable OpenGL-specific calls are made to
write the scene, and its additional contents, onto the widget.
+ With \l{QGLWidget::paintGL()}{paintGL()} the
+ \l{QGLWidget::swapBuffers()}{swapBuffers()} call is done for us. But an explicit
+ call to swapBuffers() is still not required because in the
+ \l{QWidget::paintEvent()}{paintEvent()} method the QPainter on the OpenGL
+ widget takes care of this for us.
+
The implementation of the \l{QGLWidget::resizeGL()}{resizeGL()} function
sets up the dimensions of the viewport and defines a projection
transformation:
diff --git a/doc/src/examples/padnavigator.qdoc b/doc/src/examples/padnavigator.qdoc
index cec77914b..0a892ae76 100644
--- a/doc/src/examples/padnavigator.qdoc
+++ b/doc/src/examples/padnavigator.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/painterpaths.qdoc b/doc/src/examples/painterpaths.qdoc
index 95d3d92fa..56b15075c 100644
--- a/doc/src/examples/painterpaths.qdoc
+++ b/doc/src/examples/painterpaths.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/pbuffers.qdoc b/doc/src/examples/pbuffers.qdoc
index 7ffe3bbdc..bb9d046e1 100644
--- a/doc/src/examples/pbuffers.qdoc
+++ b/doc/src/examples/pbuffers.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/pbuffers2.qdoc b/doc/src/examples/pbuffers2.qdoc
index 401eb2af4..323201d87 100644
--- a/doc/src/examples/pbuffers2.qdoc
+++ b/doc/src/examples/pbuffers2.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/pinchzoom.qdoc b/doc/src/examples/pinchzoom.qdoc
new file mode 100644
index 000000000..ff8c811f8
--- /dev/null
+++ b/doc/src/examples/pinchzoom.qdoc
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example multitouch/pinchzoom
+ \title Pinch Zoom Example
+
+ The Pinch Zoom example shows how to use low-level multi-touch information
+ to recognize a gesture.
+
+ \image multitouch-pinchzoom.png
+*/
diff --git a/doc/src/examples/pingpong.qdoc b/doc/src/examples/pingpong.qdoc
index d3a3f1872..1f3b3264b 100644
--- a/doc/src/examples/pingpong.qdoc
+++ b/doc/src/examples/pingpong.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/pixelator.qdoc b/doc/src/examples/pixelator.qdoc
index 17cecd8c3..6e0cecda1 100644
--- a/doc/src/examples/pixelator.qdoc
+++ b/doc/src/examples/pixelator.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/plugandpaint.qdoc b/doc/src/examples/plugandpaint.qdoc
index a9ac3bb68..add6c3caa 100644
--- a/doc/src/examples/plugandpaint.qdoc
+++ b/doc/src/examples/plugandpaint.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/portedasteroids.qdoc b/doc/src/examples/portedasteroids.qdoc
index d999c7241..c2a8b62c3 100644
--- a/doc/src/examples/portedasteroids.qdoc
+++ b/doc/src/examples/portedasteroids.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/portedcanvas.qdoc b/doc/src/examples/portedcanvas.qdoc
index b4ff1c9e3..89e7d10af 100644
--- a/doc/src/examples/portedcanvas.qdoc
+++ b/doc/src/examples/portedcanvas.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/previewer.qdoc b/doc/src/examples/previewer.qdoc
index 6f190886f..17d425722 100644
--- a/doc/src/examples/previewer.qdoc
+++ b/doc/src/examples/previewer.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/qobjectxmlmodel.qdoc b/doc/src/examples/qobjectxmlmodel.qdoc
index a5bab285e..91165c181 100644
--- a/doc/src/examples/qobjectxmlmodel.qdoc
+++ b/doc/src/examples/qobjectxmlmodel.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/qtconcurrent-imagescaling.qdoc b/doc/src/examples/qtconcurrent-imagescaling.qdoc
index 45192c99c..f4f11f4c1 100644
--- a/doc/src/examples/qtconcurrent-imagescaling.qdoc
+++ b/doc/src/examples/qtconcurrent-imagescaling.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/qtconcurrent-map.qdoc b/doc/src/examples/qtconcurrent-map.qdoc
index f89c906ed..9320fc581 100644
--- a/doc/src/examples/qtconcurrent-map.qdoc
+++ b/doc/src/examples/qtconcurrent-map.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/qtconcurrent-progressdialog.qdoc b/doc/src/examples/qtconcurrent-progressdialog.qdoc
index 736aed725..7be2cf3aa 100644
--- a/doc/src/examples/qtconcurrent-progressdialog.qdoc
+++ b/doc/src/examples/qtconcurrent-progressdialog.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/qtconcurrent-runfunction.qdoc b/doc/src/examples/qtconcurrent-runfunction.qdoc
index 54ba56518..fa6342fdb 100644
--- a/doc/src/examples/qtconcurrent-runfunction.qdoc
+++ b/doc/src/examples/qtconcurrent-runfunction.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/qtconcurrent-wordcount.qdoc b/doc/src/examples/qtconcurrent-wordcount.qdoc
index 16c8f955d..8f20397f5 100644
--- a/doc/src/examples/qtconcurrent-wordcount.qdoc
+++ b/doc/src/examples/qtconcurrent-wordcount.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/qtscriptcalculator.qdoc b/doc/src/examples/qtscriptcalculator.qdoc
index e9156b3f3..ce3e913b1 100644
--- a/doc/src/examples/qtscriptcalculator.qdoc
+++ b/doc/src/examples/qtscriptcalculator.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,7 +42,6 @@
/*!
\example script/calculator
\title QtScript Calculator Example
- \ingroup scripting
In this simple QtScript example, we show how to implement the
functionality of a calculator widget.
@@ -90,10 +89,8 @@
\snippet examples/script/calculator/calculator.js 1
- The digitClicked() function uses the special local variable
- __qt_sender__ to access the object that triggered the signal;
- this gives us a simple way to retrieve the value of the digit
- that was clicked.
+ The digitClicked() function is called when a digit button is
+ clicked, with the input digit as argument.
\snippet examples/script/calculator/calculator.js 2
diff --git a/doc/src/examples/qtscriptcustomclass.qdoc b/doc/src/examples/qtscriptcustomclass.qdoc
index 578b6e63e..2d7547618 100644
--- a/doc/src/examples/qtscriptcustomclass.qdoc
+++ b/doc/src/examples/qtscriptcustomclass.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/qtscripttetrix.qdoc b/doc/src/examples/qtscripttetrix.qdoc
index c646980be..c21886202 100644
--- a/doc/src/examples/qtscripttetrix.qdoc
+++ b/doc/src/examples/qtscripttetrix.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/querymodel.qdoc b/doc/src/examples/querymodel.qdoc
index 17f2ef305..ce2707c65 100644
--- a/doc/src/examples/querymodel.qdoc
+++ b/doc/src/examples/querymodel.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/queuedcustomtype.qdoc b/doc/src/examples/queuedcustomtype.qdoc
index 0659154b1..e22ecdd33 100644
--- a/doc/src/examples/queuedcustomtype.qdoc
+++ b/doc/src/examples/queuedcustomtype.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/qxmlstreambookmarks.qdoc b/doc/src/examples/qxmlstreambookmarks.qdoc
index def4c47ee..76c53eab9 100644
--- a/doc/src/examples/qxmlstreambookmarks.qdoc
+++ b/doc/src/examples/qxmlstreambookmarks.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,10 +51,10 @@
\section1 XbelWriter Class Definition
- The \c XbelWriter class is a subclass of QXmlStreamReader, which provides
- an XML parser with a streaming API. \c XbelWriter also contains a private
- instance of QTreeWidget in order to display the bookmarks according to
- hierarchies.
+ The \c XbelWriter class contains a private instance of QXmlStreamWriter,
+ which provides an XML writer with a streaming API. \c XbelWriter also
+ has a reference to the QTreeWidget instance where the bookmark hierarchy
+ is stored.
\snippet examples/xml/streambookmarks/xbelwriter.h 0
@@ -75,7 +75,7 @@
\snippet examples/xml/streambookmarks/xbelwriter.cpp 1
- The \c writeItem() function accepts a QTreeWidget object and writes it
+ The \c writeItem() function accepts a QTreeWidgetItem object and writes it
to the stream, depending on its \c tagName, which can either be a "folder",
"bookmark", or "separator".
@@ -83,9 +83,10 @@
\section1 XbelReader Class Definition
- The \c XbelReader class is a subclass of QXmlStreamReader, the pendent
- class for QXmlStreamWriter. \c XbelReader contains a private instance
- of QTreeWidget to group bookmarks according to their hierarchies.
+ The \c XbelReader contains a private instance of QXmlStreamReader, the
+ companion class to QXmlStreamWriter. \c XbelReader also contains a
+ reference to the QTreeWidget that is used to group the bookmarks according
+ to their hierarchy.
\snippet examples/xml/streambookmarks/xbelreader.h 0
@@ -102,23 +103,27 @@
\snippet examples/xml/streambookmarks/xbelreader.cpp 0
The \c read() function accepts a QIODevice and sets it using
- \l{QXmlStreamReader::setDevice()}{setDevice()}. The actual process
- of reading only takes place if the file is a valid XBEL 1.0 file.
- Note that the XML input needs to be well-formed to be accepted by
- QXmlStreamReader. Otherwise, the \l{QXmlStreamReader::raiseError()}
- {raiseError()} function is used to display an error message.
+ \l{QXmlStreamReader::}{setDevice()}. The actual process of reading only
+ takes place if the file is a valid XBEL 1.0 file. Note that the XML input
+ needs to be well-formed to be accepted by QXmlStreamReader. Otherwise, the
+ \l{QXmlStreamReader::}{raiseError()} function is used to display an error
+ message. Since the XBEL reader is only concerned with reading XML elements,
+ it makes extensive use of the \l{QXmlStreamReader::}{readNextStartElement()}
+ convenience function.
\snippet examples/xml/streambookmarks/xbelreader.cpp 1
- The \c readUnknownElement() function reads an unknown element. The
- Q_ASSERT() macro is used to provide a pre-condition for the function.
+ The \c errorString() function is used if an error occurred, in order to
+ obtain a description of the error complete with line and column number
+ information.
\snippet examples/xml/streambookmarks/xbelreader.cpp 2
The \c readXBEL() function reads the name of a startElement and calls
the appropriate function to read it, depending on whether if its a
"folder", "bookmark" or "separator". Otherwise, it calls
- \c readUnknownElement().
+ \l{QXmlStreamReader::}{skipCurrentElement()}. The Q_ASSERT() macro is used
+ to provide a pre-condition for the function.
\snippet examples/xml/streambookmarks/xbelreader.cpp 3
@@ -127,8 +132,8 @@
\snippet examples/xml/streambookmarks/xbelreader.cpp 4
The \c readSeparator() function creates a separator and sets its flags.
- The text is set to 30 "0xB7", the HEX equivalent for period, and then
- read using \c readElementText().
+ The text is set to 30 "0xB7", the HEX equivalent for period. The element
+ is then skipped using \l{QXmlStreamReader::}{skipCurrentElement()}.
\snippet examples/xml/streambookmarks/xbelreader.cpp 5
diff --git a/doc/src/examples/recentfiles.qdoc b/doc/src/examples/recentfiles.qdoc
index b474197f1..4dafb879e 100644
--- a/doc/src/examples/recentfiles.qdoc
+++ b/doc/src/examples/recentfiles.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/recipes.qdoc b/doc/src/examples/recipes.qdoc
index 06aa0be65..0363b05c7 100644
--- a/doc/src/examples/recipes.qdoc
+++ b/doc/src/examples/recipes.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/regexp.qdoc b/doc/src/examples/regexp.qdoc
index a568bd3c9..b554756ef 100644
--- a/doc/src/examples/regexp.qdoc
+++ b/doc/src/examples/regexp.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/relationaltablemodel.qdoc b/doc/src/examples/relationaltablemodel.qdoc
index 0cdf5c424..decea4f7f 100644
--- a/doc/src/examples/relationaltablemodel.qdoc
+++ b/doc/src/examples/relationaltablemodel.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/remotecontrol.qdoc b/doc/src/examples/remotecontrol.qdoc
index c32827134..7aeb1aa43 100644
--- a/doc/src/examples/remotecontrol.qdoc
+++ b/doc/src/examples/remotecontrol.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/rogue.qdoc b/doc/src/examples/rogue.qdoc
index dfd78042e..4f9dc3f89 100644
--- a/doc/src/examples/rogue.qdoc
+++ b/doc/src/examples/rogue.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,8 +52,8 @@
\c{@} in the screenshot? That's you, the rogue. The \c{#}
characters are walls, and the dots represent floor. In a real
game, other ASCII characters would represent all kinds of objects
- and creatures. For instance, ancient dragons (\c{D}'s) or food
- rations (\c{%}'s). But let's not get carried away. In this game,
+ and creatures, for instance, ancient dragons (\c{D}s) or food
+ rations (\c{%}s). But let's not get carried away. In this game,
the rogue is simply running around in an empty room.
The rogue is moved with the keypad (2, 4, 8, 6). That aside, we
@@ -61,12 +61,12 @@
types \c {q}. The player is then asked if he/she really wants to
quit.
- Most games have commands that need more than one key press and
- that may require a different sequence of keys based on questions
- asked the user. In this game, only the \c quit command falls under
- this category, but for the sake of argument, let's imagine a
- fully-fledged game with a rich set of commands. If we were to
- implement these by catching key events in
+ Most games have commands that need more than one key press (we
+ think of consecutive presses, i.e., not of several keys being
+ pressed at the same time). In this game, only the \c quit command
+ falls under this category, but for the sake of argument, let's
+ imagine a fully-fledged game with a rich set of commands. If we
+ were to implement these by catching key events in
\l{QWidget::}{keyPressEvent()}, we would have to keep a lot of
class member variables to track the sequence of keys already typed
(or find some other way of deducing the current state of a
@@ -194,7 +194,7 @@
\snippet examples/statemachine/rogue/movementtransition.h 1
- The KeyPress events come wrapped in \l{QWrappedEvent}s. \c event
+ The KeyPress events come wrapped in \l{QStateMachine::WrappedEvent}s. \c event
must be confirmed to be a wrapped event because Qt uses other
events internally. After that, it is simply a matter of checking
which key has been pressed.
diff --git a/doc/src/examples/rsslisting.qdoc b/doc/src/examples/rsslisting.qdoc
index 65da56f7b..ac1b8a458 100644
--- a/doc/src/examples/rsslisting.qdoc
+++ b/doc/src/examples/rsslisting.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/samplebuffers.qdoc b/doc/src/examples/samplebuffers.qdoc
index ce68d9819..da74a4968 100644
--- a/doc/src/examples/samplebuffers.qdoc
+++ b/doc/src/examples/samplebuffers.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/saxbookmarks.qdoc b/doc/src/examples/saxbookmarks.qdoc
index fb9d626a2..b2bb91aec 100644
--- a/doc/src/examples/saxbookmarks.qdoc
+++ b/doc/src/examples/saxbookmarks.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/schema.qdoc b/doc/src/examples/schema.qdoc
index 4cd80c28a..e96051300 100644
--- a/doc/src/examples/schema.qdoc
+++ b/doc/src/examples/schema.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/screenshot.qdoc b/doc/src/examples/screenshot.qdoc
index aeec849bb..64cafaeb7 100644
--- a/doc/src/examples/screenshot.qdoc
+++ b/doc/src/examples/screenshot.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/scribble.qdoc b/doc/src/examples/scribble.qdoc
index eef0367e9..7f9031c5a 100644
--- a/doc/src/examples/scribble.qdoc
+++ b/doc/src/examples/scribble.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/sdi.qdoc b/doc/src/examples/sdi.qdoc
index 908f8babf..66fe14f36 100644
--- a/doc/src/examples/sdi.qdoc
+++ b/doc/src/examples/sdi.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/securesocketclient.qdoc b/doc/src/examples/securesocketclient.qdoc
index f6f1d4398..a446ae11f 100644
--- a/doc/src/examples/securesocketclient.qdoc
+++ b/doc/src/examples/securesocketclient.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/semaphores.qdoc b/doc/src/examples/semaphores.qdoc
index 8a0084ddf..e28df9d99 100644
--- a/doc/src/examples/semaphores.qdoc
+++ b/doc/src/examples/semaphores.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/settingseditor.qdoc b/doc/src/examples/settingseditor.qdoc
index 6f2ad63b7..0f1564f06 100644
--- a/doc/src/examples/settingseditor.qdoc
+++ b/doc/src/examples/settingseditor.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/shapedclock.qdoc b/doc/src/examples/shapedclock.qdoc
index 0b976f760..6580cefb3 100644
--- a/doc/src/examples/shapedclock.qdoc
+++ b/doc/src/examples/shapedclock.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/sharedmemory.qdoc b/doc/src/examples/sharedmemory.qdoc
index 6ed8b4210..840912862 100644
--- a/doc/src/examples/sharedmemory.qdoc
+++ b/doc/src/examples/sharedmemory.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/simpledecoration.qdoc b/doc/src/examples/simpledecoration.qdoc
index d16016523..1acf6aef2 100644
--- a/doc/src/examples/simpledecoration.qdoc
+++ b/doc/src/examples/simpledecoration.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/simpledommodel.qdoc b/doc/src/examples/simpledommodel.qdoc
index 243460bc2..de88cda08 100644
--- a/doc/src/examples/simpledommodel.qdoc
+++ b/doc/src/examples/simpledommodel.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/simpleselector.qdoc b/doc/src/examples/simpleselector.qdoc
new file mode 100644
index 000000000..7db6576ca
--- /dev/null
+++ b/doc/src/examples/simpleselector.qdoc
@@ -0,0 +1,128 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example webkit/simpleselector
+ \title Simple Selector Example
+
+ The Simple Selector example shows how to use QWebElement to access the
+ Document Object Model (DOM) in a Web page.
+
+ \image webkit-simpleselector.png
+
+ The QWebElement class enables access to the document structure and content in a Web page,
+ as represented by a QWebFrame instance. It can be used for basic traversal of the document
+ structure (see the \l{DOM Traversal Example}), to search for particular elements, and to
+ modify any elements found.
+
+ This example uses a QWebView widget to display a Web page. A QLineEdit widget and QPushButton
+ allow the user to enter a query and highlight the results in the page. These widgets are
+ contained in an instance of the \c Window class, which we described below.
+
+ \section1 Window Class Definition
+
+ The \c Window class describes the example's user interface and this is partially described
+ by the \c window.ui file, created using \l{Qt Designer}:
+
+ \snippet examples/webkit/simpleselector/window.h Window class definition
+
+ We use \l{Using a Designer UI File in Your Application#The Multiple Inheritance Approach}
+ {multiple inheritance} to include the user interface description. We define slots that
+ will automatically respond to signals emitted by certain user interface controls.
+
+ \section1 Window Class Implementation
+
+ Since the layout of the user interface is provided by the \c{window.ui} user interface file,
+ we only need to call the \l{QWidget::}{setupUi()} in the constructor:
+
+ \snippet examples/webkit/simpleselector/window.cpp Window class constructor
+
+ This adds all the controls to the window and sets up connections between their signals
+ and suitably-named slots in the \c Window class. The QLineEdit instance was given a name of
+ \c elementLineEdit in Qt Designer, so the \c{on_elementLineEdit_returnPressed()} slot is
+ automatically connected to its \l{QLineEdit::}{returnPressed()} signal.
+
+ This slot performs the main work of this example. We begin by obtaining a QWebFrame
+ instance for the current page shown in the QWebView widget. Each QWebFrame contains
+ a QWebElement instance that represents the document, and we obtain this in order to
+ examine its contents:
+
+ \snippet examples/webkit/simpleselector/window.cpp return pressed
+
+ Taking the contents of the QLineEdit as the query text, we call the element's
+ \l{QWebElement::}{findAll()} function to obtain a list of elements that match the
+ query.
+
+ For each element obtained, we modify its style by setting its \c style attribute
+ to give it a yellow background color.
+
+ Since we also want the query to be performed when the user clicks the \gui Highlight
+ button, we also implement the \c{on_highlightButton_clicked()} slot to simply call
+ the \c{on_elementLineEdit_returnPressed()} slot when it is invoked:
+
+ \snippet examples/webkit/simpleselector/window.cpp button clicked
+
+ For completeness, we also implement a \c setUrl() function which simply passes on
+ a QUrl instance to the equivalent function in the QWebView widget:
+
+ \snippet examples/webkit/simpleselector/window.cpp set URL
+
+ \section1 Starting the Example
+
+ The main function implementation is simple. We set up the application, create
+ a \c Window instance, set its URL, and show it:
+
+ \snippet examples/webkit/simpleselector/main.cpp main program
+
+ When the application's event loop is run, the WebKit home page will load, and the
+ user can then begin to start running queries against the contents of the page.
+ The highlighting can only be removed by reloading the page. To do this, open a
+ context menu over the page and select the \gui Reload menu item.
+
+ \section1 Further Reading
+
+ The QWebElement documentation contains more information about DOM access for the
+ QtWebKit classes.
+
+ In this example, we take advantage of Qt's
+ \l{Using a Designer UI File in Your Application#Automatic Connections}{auto-connection}
+ feature to avoid explicitly connecting signals to slots.
+*/
diff --git a/doc/src/examples/simpletextviewer.qdoc b/doc/src/examples/simpletextviewer.qdoc
index 4b14b07bd..879ac960e 100644
--- a/doc/src/examples/simpletextviewer.qdoc
+++ b/doc/src/examples/simpletextviewer.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/simpletreemodel.qdoc b/doc/src/examples/simpletreemodel.qdoc
index 0e7e86311..a8ace9430 100644
--- a/doc/src/examples/simpletreemodel.qdoc
+++ b/doc/src/examples/simpletreemodel.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/simplewidgetmapper.qdoc b/doc/src/examples/simplewidgetmapper.qdoc
index 033979e76..c83009e4c 100644
--- a/doc/src/examples/simplewidgetmapper.qdoc
+++ b/doc/src/examples/simplewidgetmapper.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/sipdialog.qdoc b/doc/src/examples/sipdialog.qdoc
index ac1a63619..edd1d2a11 100644
--- a/doc/src/examples/sipdialog.qdoc
+++ b/doc/src/examples/sipdialog.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/sliders.qdoc b/doc/src/examples/sliders.qdoc
index 99aa5eddb..12a336b93 100644
--- a/doc/src/examples/sliders.qdoc
+++ b/doc/src/examples/sliders.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/spinboxdelegate.qdoc b/doc/src/examples/spinboxdelegate.qdoc
index 7560e8358..a60895f6e 100644
--- a/doc/src/examples/spinboxdelegate.qdoc
+++ b/doc/src/examples/spinboxdelegate.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/spinboxes.qdoc b/doc/src/examples/spinboxes.qdoc
index 25b06a888..b6758348f 100644
--- a/doc/src/examples/spinboxes.qdoc
+++ b/doc/src/examples/spinboxes.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/sqlwidgetmapper.qdoc b/doc/src/examples/sqlwidgetmapper.qdoc
index bf9b64bde..3ef85088c 100644
--- a/doc/src/examples/sqlwidgetmapper.qdoc
+++ b/doc/src/examples/sqlwidgetmapper.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/standarddialogs.qdoc b/doc/src/examples/standarddialogs.qdoc
index 3a87103e6..7f76620ce 100644
--- a/doc/src/examples/standarddialogs.qdoc
+++ b/doc/src/examples/standarddialogs.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/stardelegate.qdoc b/doc/src/examples/stardelegate.qdoc
index 3ea181632..2f8bda94e 100644
--- a/doc/src/examples/stardelegate.qdoc
+++ b/doc/src/examples/stardelegate.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/states.qdoc b/doc/src/examples/states.qdoc
new file mode 100644
index 000000000..e239b0b16
--- /dev/null
+++ b/doc/src/examples/states.qdoc
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example animation/states
+ \title States Example
+
+ The States example shows how to use the Qt state machine to play
+ animations.
+
+ \image states-example.png
+*/
diff --git a/doc/src/examples/stickman.qdoc b/doc/src/examples/stickman.qdoc
index 496996ea6..c9e98d095 100644
--- a/doc/src/examples/stickman.qdoc
+++ b/doc/src/examples/stickman.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,9 +55,9 @@
Animations are implemented as composite states. Each child state of the animation state
represents a frame in the animation by setting the position of each joint in the stickman's
skeleton to the positions defined for the particular frame. The frames are then bound together
- with animated transitions that trigger on the source state's polished() signal. Thus, the
- machine will enter the state representing the next frame in the animation immediately after it
- has finished animating into the previous frame.
+ with animated transitions that trigger on the source state's propertiesAssigned() signal. Thus,
+ the machine will enter the state representing the next frame in the animation immediately after
+ it has finished animating into the previous frame.
\image stickman-example1.png
@@ -67,7 +67,8 @@
\snippet examples/animation/stickman/lifecycle.cpp 1
- The states are then bound together with signal transitions that listen to the polished() signal.
+ The states are then bound together with signal transitions that listen to the
+ propertiesAssigned() signal.
\snippet examples/animation/stickman/lifecycle.cpp 2
diff --git a/doc/src/examples/styleplugin.qdoc b/doc/src/examples/styleplugin.qdoc
index ed239cee5..fdb4cab53 100644
--- a/doc/src/examples/styleplugin.qdoc
+++ b/doc/src/examples/styleplugin.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/styles.qdoc b/doc/src/examples/styles.qdoc
index b40ff21fa..43f9da5e3 100644
--- a/doc/src/examples/styles.qdoc
+++ b/doc/src/examples/styles.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/stylesheet.qdoc b/doc/src/examples/stylesheet.qdoc
index 522ea105b..4e223b878 100644
--- a/doc/src/examples/stylesheet.qdoc
+++ b/doc/src/examples/stylesheet.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/svgalib.qdoc b/doc/src/examples/svgalib.qdoc
index d4fb869ba..6d5a986fc 100644
--- a/doc/src/examples/svgalib.qdoc
+++ b/doc/src/examples/svgalib.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/svggenerator.qdoc b/doc/src/examples/svggenerator.qdoc
index 1ce6b2890..6bb479caa 100644
--- a/doc/src/examples/svggenerator.qdoc
+++ b/doc/src/examples/svggenerator.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/svgviewer.qdoc b/doc/src/examples/svgviewer.qdoc
index b079a9826..cef2137a5 100644
--- a/doc/src/examples/svgviewer.qdoc
+++ b/doc/src/examples/svgviewer.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/syntaxhighlighter.qdoc b/doc/src/examples/syntaxhighlighter.qdoc
index bcc19e398..7116dffaa 100644
--- a/doc/src/examples/syntaxhighlighter.qdoc
+++ b/doc/src/examples/syntaxhighlighter.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/systray.qdoc b/doc/src/examples/systray.qdoc
index 49a4a4006..cac33f4a6 100644
--- a/doc/src/examples/systray.qdoc
+++ b/doc/src/examples/systray.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/tabdialog.qdoc b/doc/src/examples/tabdialog.qdoc
index 1d770a382..ae6bb5dc4 100644
--- a/doc/src/examples/tabdialog.qdoc
+++ b/doc/src/examples/tabdialog.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/tablemodel.qdoc b/doc/src/examples/tablemodel.qdoc
index b300bc557..d8eed7db4 100644
--- a/doc/src/examples/tablemodel.qdoc
+++ b/doc/src/examples/tablemodel.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/tablet.qdoc b/doc/src/examples/tablet.qdoc
index 3b2caf37e..b0548d40e 100644
--- a/doc/src/examples/tablet.qdoc
+++ b/doc/src/examples/tablet.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,7 @@
\image tabletexample.png
When you use a tablet with Qt applications, \l{QTabletEvent}s are
- genarated. You need to reimplement the
+ generated. You need to reimplement the
\l{QWidget::}{tabletEvent()} event handler if you want to handle
tablet events. Events are generated when the device used for
drawing enters and leaves the proximity of the tablet (i.e., when
@@ -79,7 +79,7 @@
the examples menus and connect their slots and signals.
\o The \c TabletCanvas class inherits QWidget and
receives tablet events. It uses the events to paint on a
- QImage, which it draws onto itself.
+ offscreen pixmap, which it draws onto itself.
\o The \c TabletApplication class inherits QApplication. This
class handles tablet events that are not sent to \c tabletEvent().
We will look at this later.
@@ -214,16 +214,16 @@
alphaChannelType, \c colorSturationType, and \c penWidthType,
which we provide access functions for.
- We draw on a QImage with \c myPen and \c myBrush using \c
+ We draw on a QPixmap with \c myPen and \c myBrush using \c
myColor. The \c saveImage() and \c loadImage() saves and loads
- the QImage to disk. The image is drawn on the widget in \c
+ the QPixmap to disk. The pixmap is drawn on the widget in \c
paintEvent(). The \c pointerType and \c deviceType keeps the type
of pointer, which is either a pen or an eraser, and device
currently used on the tablet, which is either a stylus or an
airbrush.
The interpretation of events from the tablet is done in \c
- tabletEvent(); \c paintImage(), \c updateBrush(), and \c
+ tabletEvent(); \c paintPixmap(), \c updateBrush(), and \c
brushPattern() are helper functions used by \c tabletEvent().
@@ -234,20 +234,20 @@
\snippet examples/widgets/tablet/tabletcanvas.cpp 0
In the constructor we initialize our class variables. We need
- to draw the background of our image, as the default is gray.
+ to draw the background of our pixmap, as the default is gray.
Here is the implementation of \c saveImage():
\snippet examples/widgets/tablet/tabletcanvas.cpp 1
- QImage implements functionality to save itself to disk, so we
- simply call \l{QImage::}{save()}.
+ QPixmap implements functionality to save itself to disk, so we
+ simply call \l{QPixmap::}{save()}.
Here is the implementation of \c loadImage():
\snippet examples/widgets/tablet/tabletcanvas.cpp 2
- We simply call \l{QImage::}{load()}, which loads the image in \a
+ We simply call \l{QPixmap::}{load()}, which loads the image in \a
file.
Here is the implementation of \c tabletEvent():
@@ -259,7 +259,7 @@
is pressed down on, leaves, or moves on the tablet. We set the \c
deviceDown to true when a device is pressed down on the tablet;
we then know when we should draw when we receive move events. We
- have implemented the \c updateBrush() and \c paintImage() helper
+ have implemented the \c updateBrush() and \c paintPixmap() helper
functions to update \c myBrush and \c myPen after the state of \c
alphaChannelType, \c colorSaturationType, and \c lineWidthType.
@@ -267,13 +267,13 @@
\snippet examples/widgets/tablet/tabletcanvas.cpp 4
- We simply draw the image to the top left of the widget.
+ We simply draw the pixmap to the top left of the widget.
- Here is the implementation of \c paintImage():
+ Here is the implementation of \c paintPixmap():
\snippet examples/widgets/tablet/tabletcanvas.cpp 5
- In this function we draw on the image based on the movement of the
+ In this function we draw on the pixmap based on the movement of the
device. If the device used on the tablet is a stylus we want to draw a
line between the positions of the stylus recorded in \c polyLine. We
also assume that this is a reasonable handling of any unknown device,
@@ -334,7 +334,7 @@
We finally check wether the pointer is the stylus or the eraser.
If it is the eraser, we set the color to the background color of
- the image an let the pressure decide the pen width, else we set
+ the pixmap an let the pressure decide the pen width, else we set
the colors we have set up previously in the function.
diff --git a/doc/src/examples/taskmenuextension.qdoc b/doc/src/examples/taskmenuextension.qdoc
index f119bde55..071775579 100644
--- a/doc/src/examples/taskmenuextension.qdoc
+++ b/doc/src/examples/taskmenuextension.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/tetrix.qdoc b/doc/src/examples/tetrix.qdoc
index 1a5556966..46fc5f234 100644
--- a/doc/src/examples/tetrix.qdoc
+++ b/doc/src/examples/tetrix.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/textfinder.qdoc b/doc/src/examples/textfinder.qdoc
index 8cdefe572..6ff5a9efa 100644
--- a/doc/src/examples/textfinder.qdoc
+++ b/doc/src/examples/textfinder.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/textobject.qdoc b/doc/src/examples/textobject.qdoc
index 77ec571fb..919b49d5c 100644
--- a/doc/src/examples/textobject.qdoc
+++ b/doc/src/examples/textobject.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/textures.qdoc b/doc/src/examples/textures.qdoc
index b87b2e2a9..986c37fc1 100644
--- a/doc/src/examples/textures.qdoc
+++ b/doc/src/examples/textures.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/threadedfortuneserver.qdoc b/doc/src/examples/threadedfortuneserver.qdoc
index 749ca2a9d..4b35e786f 100644
--- a/doc/src/examples/threadedfortuneserver.qdoc
+++ b/doc/src/examples/threadedfortuneserver.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/tooltips.qdoc b/doc/src/examples/tooltips.qdoc
index c2c7acb0e..94d558ae1 100644
--- a/doc/src/examples/tooltips.qdoc
+++ b/doc/src/examples/tooltips.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/torrent.qdoc b/doc/src/examples/torrent.qdoc
index 5a2d1b434..9a7e89162 100644
--- a/doc/src/examples/torrent.qdoc
+++ b/doc/src/examples/torrent.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/trafficinfo.qdoc b/doc/src/examples/trafficinfo.qdoc
index 76d081048..f23e79005 100644
--- a/doc/src/examples/trafficinfo.qdoc
+++ b/doc/src/examples/trafficinfo.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -159,5 +159,5 @@
The rest of the code in this example is just for representing the time and
station information to the user, and uses techniques described in the
- \l{Qt Examples#Widgets}{Widgets examples}.
+ \l{Widgets Examples}.
*/
diff --git a/doc/src/examples/trafficlight.qdoc b/doc/src/examples/trafficlight.qdoc
index e0f16b559..97c812b95 100644
--- a/doc/src/examples/trafficlight.qdoc
+++ b/doc/src/examples/trafficlight.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/transformations.qdoc b/doc/src/examples/transformations.qdoc
index 84e37e7a3..ac7220dfe 100644
--- a/doc/src/examples/transformations.qdoc
+++ b/doc/src/examples/transformations.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/treemodelcompleter.qdoc b/doc/src/examples/treemodelcompleter.qdoc
index fadf0df6b..ca7e30133 100644
--- a/doc/src/examples/treemodelcompleter.qdoc
+++ b/doc/src/examples/treemodelcompleter.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/trivialwizard.qdoc b/doc/src/examples/trivialwizard.qdoc
index 14d7b4008..ee780325a 100644
--- a/doc/src/examples/trivialwizard.qdoc
+++ b/doc/src/examples/trivialwizard.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/trollprint.qdoc b/doc/src/examples/trollprint.qdoc
index d089a81c0..20940eefd 100644
--- a/doc/src/examples/trollprint.qdoc
+++ b/doc/src/examples/trollprint.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/twowaybutton.qdoc b/doc/src/examples/twowaybutton.qdoc
index 8e6aa44bc..567fc800c 100644
--- a/doc/src/examples/twowaybutton.qdoc
+++ b/doc/src/examples/twowaybutton.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/undoframework.qdoc b/doc/src/examples/undoframework.qdoc
index d3a60f89f..4ed0f2b1b 100644
--- a/doc/src/examples/undoframework.qdoc
+++ b/doc/src/examples/undoframework.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/videographicsitem.qdoc b/doc/src/examples/videographicsitem.qdoc
new file mode 100644
index 000000000..e1cb6edac
--- /dev/null
+++ b/doc/src/examples/videographicsitem.qdoc
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example multimedia/videographicsitem
+ \title Video Graphics Item Example
+
+ The Video Graphics Item example shows how to implement a QGraphicsItem that displays video on a
+ graphics scene using QtMultimedia's QAbstractVideoSurface.
+
+ \image video-videographicsitem.png
+
+ \sa {Video Widget Example}
+*/
diff --git a/doc/src/examples/videowidget.qdoc b/doc/src/examples/videowidget.qdoc
new file mode 100644
index 000000000..4223c1fb9
--- /dev/null
+++ b/doc/src/examples/videowidget.qdoc
@@ -0,0 +1,187 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \example multimedia/videowidget
+ \title Video Widget Example
+
+ The Video Widget example shows how to implement a video widget using
+ QtMultimedia's QAbstractVideoSurface
+
+ \image video-videowidget.png
+
+ \section1 VideoWidgetSurface Class Definition
+
+ \snippet examples/multimedia/videowidget/videowidgetsurface.h 0
+
+ The VideoWidgetSurface class inherits QAbstractVideoSurface and paints
+ video frames on a QWidget. This is a separate class to VideoWidget as both
+ QAbstractVideoSurface and QWidget inherit QObject.
+
+ In addition to the functions from QAbstractVideoSurface, VideoWidgetSurface
+ has functions for determining the video display rectangle, and painting
+ the video.
+
+ \section1 VideoWidgetSurface Class Implementation
+
+ \snippet examples/multimedia/videowidget/videowidgetsurface.cpp 0
+
+ From the supportedPixelFormats() function we return a list of pixel formats
+ the surface can paint. The order of the list hints at which formats are
+ preferred by the surface. Assuming a 32-bit RGB backbuffer, we'd expect
+ that a 32-bit RGB type with no alpha to be fastest to paint so
+ QVideoFrame::Image_RGB32 is first in the list.
+
+ Since we don't support rendering using any special frame handles we don't
+ return any pixel formats if handleType is not
+ QAbstractVideoBuffer::NoHandle.
+
+ \snippet examples/multimedia/videowidget/videowidgetsurface.cpp 1
+
+ In isFormatSupported() we test if the frame type of a surface format maps
+ to a valid QImage format, that the frame size is not empty, and the handle
+ type is QAbstractVideoBuffer::NoHandle. Note that the
+ QAbstractVideoSurface implementation of isFormatSupported() will verify
+ that the list of supported pixel formats returned by
+ \c supportedPixelFormats(format.handleType()) contains the pixel format and
+ that the size is not empty so a reimplementation wasn't strictly necessary
+ in this case.
+
+ \snippet examples/multimedia/videowidget/videowidgetsurface.cpp 2
+
+ To start our surface we'll extract the image format and size from the
+ selected video format and save it for use in the paint() function. If the
+ image format, or size are invalid then we'll set an error and return false.
+ Otherwise we'll save the format and confirm the surface has been started,
+ by calling QAbstractVideoSurface::start(). Finally since the video size may
+ have changed we'll trigger an update of the widget, and video geometry.
+
+ \snippet examples/multimedia/videowidget/videowidgetsurface.cpp 5
+
+ The updateVideoRect() function calculates the region within the widget the
+ video occupies. The \l {QVideoSurfaceFormat::sizeHint()}{size hint} of the
+ video format gives a suggested size for the video calculated from the
+ \l {QVideoSurfaceFormat::viewport()}{viewport} and
+ \l {QVideoSurfaceFormat::pixelAspectRatio()}{pixel aspect ratio}. If the
+ suggested size fits within the widget then we create a new rect of that
+ size in the center of the widget. Otherwise we shrink the size maintaining
+ the aspect ratio so that it does fit.
+
+ \snippet examples/multimedia/videowidget/videowidgetsurface.cpp 4
+
+ We can't paint from outside a paint event, so when a new frame is received
+ in present() we save a reference to it and force an immediate repaint of
+ the video region. We retain the saved reference to the frame after the
+ repaint so that the widget can be repainted between frame changes if
+ necessary.
+
+ If the format of the frame doesn't match the surface format we can't paint
+ it or very likely any future frames. So we set an
+ \l {QAbstractVideoSurface::UnsupportedFormatError}{UnsupportedFormatError}
+ on our surface and stop it immediately.
+
+ \snippet examples/multimedia/videowidget/videowidgetsurface.cpp 6
+
+ The paint() function is called by the video widget to paint the current
+ video frame. Before we draw the frame first we'll check the format for
+ the scan line direction and if the scan lines are arranged from bottom to
+ top we'll flip the painter so the frame isn't drawn upside down. Then
+ using the image format information saved in the start() function we'll
+ construct a new QImage from the current video frame, and draw it to the
+ the widget.
+
+ \snippet examples/multimedia/videowidget/videowidgetsurface.cpp 3
+
+ When the surface is stopped we need to release the current frame and
+ invalidate the video region. Then we confirm the surface has been
+ stopped by calling QAbstractVideoSurface::stop() which sets the started
+ state to false and finally we update so the video widget so paints over
+ the last frame.
+
+ \section1 VideoWidget Class Definition
+
+ The VideoWidget class uses the VideoWidgetSurface class to implement a
+ video widget.
+
+ \snippet examples/multimedia/videowidget/videowidget.h 0
+
+ The VideoWidget QWidget implementation is minimal with just the sizeHint(),
+ paintEvent(), and resizeEvent() functions in addition to the constructor,
+ destructor and an instance of VideoWidgetSurface.
+
+ \section1 VideoWidget Class Implementation
+
+ \snippet examples/multimedia/videowidget/videowidget.cpp 0
+
+ In the VideoWidget constructor we set some flags to speed up re-paints a
+ little. Setting the Qt::WA_NoSystemBackground flag and disabling automatic
+ background fills will stop Qt from a painting a background that'll be
+ completely obscured by the video. The Qt::WA_PaintOnScreen flag will
+ allow us to paint to the screen instead of the back buffer where supported.
+
+ Next we set the background color to black, so that any borders around the
+ video are filled in black rather the default background color.
+
+ Finally we construct an instance of the VideoWidgetSurface class.
+
+ \snippet examples/multimedia/videowidget/videowidget.cpp 1
+
+ In the destructor we simply delete the VideoWidgetSurface instance.
+
+ \snippet examples/multimedia/videowidget/videowidget.cpp 2
+
+ We get the size hint for the widget from the video format of the surface
+ which is calculated from viewport and pixel aspect ratio of the video
+ format.
+
+ \snippet examples/multimedia/videowidget/videowidget.cpp 3
+
+ When the video widget receives a paint event we first check if the surface
+ is started, if not then we simply fill the widget with the background
+ color. If it is then we draw a border around the video region clipped
+ by the paint region, before calling paint on the video surface to draw the
+ current frame.
+
+ \snippet examples/multimedia/videowidget/videowidget.cpp 4
+
+ The resizeEvent() function is reimplemented to trigger an update of the
+ video region when the widget is resized.
+*/
diff --git a/doc/src/examples/waitconditions.qdoc b/doc/src/examples/waitconditions.qdoc
index 51ccb2ea9..cb0b1f3a0 100644
--- a/doc/src/examples/waitconditions.qdoc
+++ b/doc/src/examples/waitconditions.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/wiggly.qdoc b/doc/src/examples/wiggly.qdoc
index eeac828fb..5ab7bc8e2 100644
--- a/doc/src/examples/wiggly.qdoc
+++ b/doc/src/examples/wiggly.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/windowflags.qdoc b/doc/src/examples/windowflags.qdoc
index 35610b462..e35a95361 100644
--- a/doc/src/examples/windowflags.qdoc
+++ b/doc/src/examples/windowflags.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/worldtimeclockbuilder.qdoc b/doc/src/examples/worldtimeclockbuilder.qdoc
index d8d625d39..ab265a2fe 100644
--- a/doc/src/examples/worldtimeclockbuilder.qdoc
+++ b/doc/src/examples/worldtimeclockbuilder.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/worldtimeclockplugin.qdoc b/doc/src/examples/worldtimeclockplugin.qdoc
index d0652999b..030cce3a9 100644
--- a/doc/src/examples/worldtimeclockplugin.qdoc
+++ b/doc/src/examples/worldtimeclockplugin.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/xmlstreamlint.qdoc b/doc/src/examples/xmlstreamlint.qdoc
index 54417098d..e8c639186 100644
--- a/doc/src/examples/xmlstreamlint.qdoc
+++ b/doc/src/examples/xmlstreamlint.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/exportedfunctions.qdoc b/doc/src/exportedfunctions.qdoc
deleted file mode 100644
index c51ace4a0..000000000
--- a/doc/src/exportedfunctions.qdoc
+++ /dev/null
@@ -1,139 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page exportedfunctions.html
- \title Special-Purpose Global Functions Exported by Qt
- \ingroup classlists
-
- Qt provides a few low-level global functions for fine-tuning
- applications. Most of these perform very specific tasks and are
- platform-specific. In general, we recommend that you try using
- Qt's public API before resorting to using any functions mentioned
- here.
-
- These functions are exported by \l QtCore and \l QtGui, but most
- of them aren't declared in Qt's header files. To use them in your
- application, you must declare them before calling them. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_exportedfunctions.qdoc 0
-
- These functions will remain as part of Qt for the lifetime of Qt
- 4.
-
- Functions:
-
- \tableofcontents
-
- \section1 void qt_set_library_config_file(const QString &\e{fileName})
-
- Specifies the location of the Qt configuration file. You must
- call this function before constructing a QApplication or
- QCoreApplication object. If no location is specified, Qt
- automatically finds an appropriate location.
-
- \section1 void qt_set_sequence_auto_mnemonic(bool \e{enable})
-
- Specifies whether mnemonics for menu items, labels, etc., should
- be honored or not. On Windows and X11, this feature is
- on by default; on Mac OS X, it is off. When this feature is off,
- the QKeySequence::mnemonic() function always returns an empty
- string. This feature is also enabled on embedded Linux.
-
- \section1 void qt_x11_wait_for_window_manager(QWidget *\e{widget})
-
- Blocks until the X11 window manager has shown the widget after a
- call to QWidget::show().
-
- \section1 void qt_mac_secure_keyboard(bool \e{enable})
-
- Turns the Mac OS X secure keyboard feature on or off. QLineEdit
- uses this when the echo mode is QLineEdit::Password or
- QLineEdit::NoEcho to guard the editor against keyboard sniffing.
- If you implement your own password editor, you might want to turn
- on this feature in your editor's
- \l{QWidget::focusInEvent()}{focusInEvent()} and turn it off in
- \l{QWidget::focusOutEvent()}{focusOutEvent()}.
-
- \section1 void qt_mac_set_dock_menu(QMenu *\e{menu})
-
- Sets the menu to display in the Mac OS X Dock for the
- application. This menu is shown when the user attempts a
- press-and-hold operation on the application's dock icon or
- \key{Ctrl}-clicks on it while the application is running.
-
- The menu will be turned into a Mac menu and the items added to the default
- Dock menu. There is no merging of the Qt menu items with the items that are
- in the Dock menu (i.e., it is not recommended to include actions that
- duplicate functionality of items already in the Dock menu).
-
- \section1 void qt_mac_set_menubar_icons(bool \e{enable})
-
- Specifies whether icons associated to menu items for the
- application's menu bar should be shown on Mac OS X. By default,
- icons are shown on Mac OS X just like on the other platforms.
-
- In Qt 4.4, this is equivalent to
- \c { QApplication::instance()->setAttribute(Qt::AA_DontShowIconsInMenus); }.
-
- \section1 void qt_mac_set_menubar_merge(bool \e{enable})
-
- Specifies whether Qt should attempt to relocate standard menu
- items (such as \gui Quit, \gui Preferences, and \gui About) to
- the application menu on Mac OS X. This feature is on by default.
- See \l{Qt for Mac OS X - Specific Issues} for the list of menu items for
- which this applies.
-
- \section1 void qt_mac_set_native_menubar(bool \e{enable})
-
- Specifies whether the application should use the native menu bar
- on Mac OS X or be part of the main window. This feature is on by
- default.
-
- In Qt 4.6, this is equivalent to
- \c { QApplication::instance()->setAttribute(Qt::AA_DontUseNativeMenuBar); }.
-
- \section1 void qt_mac_set_press_and_hold_context(bool \e{enable})
-
- Turns emulation of the right mouse button by clicking and holding
- the left mouse button on or off. This feature is off by default.
-*/
diff --git a/doc/src/external-resources.qdoc b/doc/src/external-resources.qdoc
index 45a770a84..cd9950536 100644
--- a/doc/src/external-resources.qdoc
+++ b/doc/src/external-resources.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -357,3 +357,68 @@
\externalpage http://developers.sun.com/sunstudio/downloads/patches/index.jsp
\title Sun Studio Patches
*/
+
+/*!
+ \externalpage http://www.qtcentre.org
+ \title Qt Centre
+*/
+
+/*!
+ \externalpage http://www.kde.org
+ \title KDE
+*/
+
+/*!
+ \externalpage http://www.directfb.org/index.php?path=Main%2FDownloads&amp;page=1
+ \title DirectFB - df_window example
+*/
+
+/*!
+ \externalpage http://www.directfb.org/docs/DirectFB_Reference_1_4/IDirectFBPalette.html
+ \title DirectFB - IDirectFBPalette
+*/
+
+/*!
+ \externalpage http://www.cplusplus.com/reference/clibrary/cstring/memcpy/
+ \title C++ Reference - memcpy
+*/
+
+/*!
+ \externalpage http://www.directfb.org/docs/DirectFB_Reference_1_4/IDirectFB_CreateInputEventBuffer.html
+ \title DirectFB - CreateInputEventBuffer
+*/
+
+/*!
+ \externalpage http://www.directfb.org/docs/DirectFB_Reference_1_4/types.html#DFBSurfaceBlittingFlags
+ \title DirectFB - DFBSurfaceBlittingFlags
+*/
+
+/*!
+ \externalpage http://directfb.org/docs/DirectFB_Reference_1_4/IDirectFBImageProvider.html
+ \title DirectFB - IDirectFBImageProvider
+*/
+
+/*!
+ \externalpage http://www.directfb.org/docs/DirectFB_Reference_1_4/IDirectFBSurface.html
+ \title DirectFB - IDirectFBSurface
+*/
+
+/*!
+ \externalpage http://www.directfb.org/docs/DirectFB_Reference_1_4/IDirectFBWindow
+ \title DirectFB - IDirectFBWindow
+*/
+
+/*!
+ \externalpage http://www.directfb.org/docs/DirectFB_Reference_1_4/types.html#DFBSurfaceDescription
+ \title DirectFB - DFBSurfaceDescription
+*/
+
+/*!
+ \externalpage http://www.w3.org/TR/REC-CSS2/selector.html#q1
+ \title Standard CSS2 selector
+*/
+
+/*!
+ \externalpage http://www.w3.org/XML/Schema
+ \title XML Schema
+*/
diff --git a/doc/src/files-and-resources/datastreamformat.qdoc b/doc/src/files-and-resources/datastreamformat.qdoc
new file mode 100644
index 000000000..9e5aba295
--- /dev/null
+++ b/doc/src/files-and-resources/datastreamformat.qdoc
@@ -0,0 +1,363 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 datastreamformat.html
+ \title Format of the QDataStream Operators
+ \brief Representations of data types that can be serialized by QDataStream.
+
+ The \l QDataStream allows you to serialize some of the Qt data types.
+ The table below lists the data types that QDataStream can serialize
+ and how they are represented. The format described below is
+ \l{QDataStream::setVersion()}{version 8}.
+
+ It is always best to cast integers to a Qt integer type, such as
+ qint16 or quint32, when reading and writing. This ensures that
+ you always know exactly what size integers you are reading and
+ writing, no matter what the underlying platform and architecture
+ the application happens to be running on.
+
+ \table
+ \row \o bool
+ \o \list
+ \o boolean
+ \endlist
+ \row \o qint8
+ \o \list
+ \o signed byte
+ \endlist
+ \row \o qint16
+ \o \list
+ \o signed 16-bit integer
+ \endlist
+ \row \o qint32
+ \o \list
+ \o signed 32-bit integer
+ \endlist
+ \row \o qint64
+ \o \list
+ \o signed 64-bit integer
+ \endlist
+ \row \o quint8
+ \o \list
+ \o unsigned byte
+ \endlist
+ \row \o quint16
+ \o \list
+ \o unsigned 16-bit integer
+ \endlist
+ \row \o quint32
+ \o \list
+ \o unsigned 32-bit integer
+ \endlist
+ \row \o quint64
+ \o \list
+ \o unsigned 64-bit integer
+ \endlist
+ \row \o \c float
+ \o \list
+ \o 32-bit floating point number using the standard IEEE 754 format
+ \endlist
+ \row \o \c double
+ \o \list
+ \o 64-bit floating point number using the standard IEEE 754 format
+ \endlist
+ \row \o \c {const char *}
+ \o \list
+ \o The string length (quint32)
+ \o The string bytes, excluding the terminating 0
+ \endlist
+ \row \o QBitArray
+ \o \list
+ \o The array size (quint32)
+ \o The array bits, i.e. (size + 7)/8 bytes
+ \endlist
+ \row \o QBrush
+ \o \list
+ \o The brush style (quint8)
+ \o The brush color (QColor)
+ \o If style is CustomPattern, the brush pixmap (QPixmap)
+ \endlist
+ \row \o QByteArray
+ \o \list
+ \o If the byte array is null: 0xFFFFFFFF (quint32)
+ \o Otherwise: the array size (quint32) followed by the array bytes, i.e. size bytes
+ \endlist
+ \row \o \l QColor
+ \o \list
+ \o Color spec (qint8)
+ \o Alpha value (quint16)
+ \o Red value (quint16)
+ \o Green value (quint16)
+ \o Blue value (quint16)
+ \o Pad value (quint16)
+ \endlist
+ \row \o QCursor
+ \o \list
+ \o Shape ID (qint16)
+ \o If shape is BitmapCursor: The bitmap (QPixmap), mask (QPixmap), and hot spot (QPoint)
+ \endlist
+ \row \o QDate
+ \o \list
+ \o Julian day (quint32)
+ \endlist
+ \row \o QDateTime
+ \o \list
+ \o Date (QDate)
+ \o Time (QTime)
+ \o 0 for Qt::LocalTime, 1 for Qt::UTC (quint8)
+ \endlist
+ \row \o QFont
+ \o \list
+ \o The family (QString)
+ \o The point size (qint16)
+ \o The style hint (quint8)
+ \o The char set (quint8)
+ \o The weight (quint8)
+ \o The font bits (quint8)
+ \endlist
+ \row \o QHash<Key, T>
+ \o \list
+ \o The number of items (quint32)
+ \o For all items, the key (Key) and value (T)
+ \endlist
+ \row \o QIcon
+ \o \list
+ \o The number of pixmap entries (quint32)
+ \o For all pixmap entries:
+ \list
+ \o The pixmap (QPixmap)
+ \o The file name (QString)
+ \o The pixmap size (QSize)
+ \o The \l{QIcon::Mode}{mode} (quint32)
+ \o The \l{QIcon::State}{state} (quint32)
+ \endlist
+ \endlist
+ \row \o QImage
+ \o \list
+ \o If the image is null a "null image" marker is saved;
+ otherwise the image is saved in PNG or BMP format (depending
+ on the stream version). If you want control of the format,
+ stream the image into a QBuffer (using QImageIO) and stream
+ that.
+ \endlist
+ \row \o QKeySequence
+ \o \list
+ \o A QList<int>, where each integer is a key in the key sequence
+ \endlist
+ \row \o QLinkedList<T>
+ \o \list
+ \o The number of items (quint32)
+ \o The items (T)
+ \endlist
+ \row \o QList<T>
+ \o \list
+ \o The number of items (quint32)
+ \o The items (T)
+ \endlist
+ \row \o QMap<Key, T>
+ \o \list
+ \o The number of items (quint32)
+ \o For all items, the key (Key) and value (T)
+ \endlist
+ \row \o QMatrix
+ \o \list
+ \o m11 (double)
+ \o m12 (double)
+ \o m21 (double)
+ \o m22 (double)
+ \o dx (double)
+ \o dy (double)
+ \endlist
+ \row \o QMatrix4x4
+ \o \list
+ \o m11 (double)
+ \o m12 (double)
+ \o m13 (double)
+ \o m14 (double)
+ \o m21 (double)
+ \o m22 (double)
+ \o m23 (double)
+ \o m24 (double)
+ \o m31 (double)
+ \o m32 (double)
+ \o m33 (double)
+ \o m34 (double)
+ \o m41 (double)
+ \o m42 (double)
+ \o m43 (double)
+ \o m44 (double)
+ \endlist
+ \row \o QPair<T1, T2>
+ \o \list
+ \o first (T1)
+ \o second (T2)
+ \endlist
+ \row \o QPalette
+ \o The disabled, active, and inactive color groups, each of which consists
+ of the following:
+ \list
+ \o foreground (QBrush)
+ \o button (QBrush)
+ \o light (QBrush)
+ \o midlight (QBrush)
+ \o dark (QBrush)
+ \o mid (QBrush)
+ \o text (QBrush)
+ \o brightText (QBrush)
+ \o buttonText (QBrush)
+ \o base (QBrush)
+ \o background (QBrush)
+ \o shadow (QBrush)
+ \o highlight (QBrush)
+ \o highlightedText (QBrush)
+ \o link (QBrush)
+ \o linkVisited (QBrush)
+ \endlist
+ \row \o QPen
+ \o \list
+ \o The pen styles (quint8)
+ \o The pen width (quint16)
+ \o The pen color (QColor)
+ \endlist
+ \row \o QPicture
+ \o \list
+ \o The size of the picture data (quint32)
+ \o The raw bytes of picture data (char)
+ \endlist
+ \row \o QPixmap
+ \o \list
+ \o Save it as a PNG image.
+ \endlist
+ \row \o QPoint
+ \o \list
+ \o The x coordinate (qint32)
+ \o The y coordinate (qint32)
+ \endlist
+ \row \o QQuaternion
+ \o \list
+ \o The scalar component (double)
+ \o The x coordinate (double)
+ \o The y coordinate (double)
+ \o The z coordinate (double)
+ \endlist
+ \row \o QRect
+ \o \list
+ \o left (qint32)
+ \o top (qint32)
+ \o right (qint32)
+ \o bottom (qint32)
+ \endlist
+ \row \o QRegExp
+ \o \list
+ \o The regexp pattern (QString)
+ \o Case sensitivity (quint8)
+ \o Regular expression syntax (quint8)
+ \o Minimal matching (quint8)
+ \endlist
+ \row \o QRegion
+ \o \list
+ \o The size of the data, i.e. 8 + 16 * (number of rectangles) (quint32)
+ \o 10 (qint32)
+ \o The number of rectangles (quint32)
+ \o The rectangles in sequential order (QRect)
+ \endlist
+ \row \o QSize
+ \o \list
+ \o width (qint32)
+ \o height (qint32)
+ \endlist
+ \row \o QString
+ \o \list
+ \o If the string is null: 0xFFFFFFFF (quint32)
+ \o Otherwise: The string length in bytes (quint32) followed by the data in UTF-16
+ \endlist
+ \row \o QTime
+ \o \list
+ \o Milliseconds since midnight (quint32)
+ \endlist
+ \row \o QTransform
+ \o \list
+ \o m11 (double)
+ \o m12 (double)
+ \o m13 (double)
+ \o m21 (double)
+ \o m22 (double)
+ \o m23 (double)
+ \o m31 (double)
+ \o m32 (double)
+ \o m33 (double)
+ \endlist
+ \row \o QUrl
+ \o \list
+ \o Holds an URL (QString)
+ \endlist
+ \row \o QVariant
+ \o \list
+ \o The type of the data (quint32)
+ \o The null flag (qint8)
+ \o The data of the specified type
+ \endlist
+ \row \o QVector2D
+ \o \list
+ \o the x coordinate (double)
+ \o the y coordinate (double)
+ \endlist
+ \row \o QVector3D
+ \o \list
+ \o the x coordinate (double)
+ \o the y coordinate (double)
+ \o the z coordinate (double)
+ \endlist
+ \row \o QVector4D
+ \o \list
+ \o the x coordinate (double)
+ \o the y coordinate (double)
+ \o the z coordinate (double)
+ \o the w coordinate (double)
+ \endlist
+ \row \o QVector<T>
+ \o \list
+ \o The number of items (quint32)
+ \o The items (T)
+ \endlist
+ \endtable
+*/
diff --git a/doc/src/files-and-resources/resources.qdoc b/doc/src/files-and-resources/resources.qdoc
new file mode 100644
index 000000000..5a1de1360
--- /dev/null
+++ b/doc/src/files-and-resources/resources.qdoc
@@ -0,0 +1,203 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group io
+ \title Input/Output and Networking
+ \ingroup groups
+
+ \brief Classes providing file input and output along with directory and
+ network handling.
+
+ These classes are used to handle input and output to and from external
+ devices, processes, files etc. as well as manipulating files and directories.
+*/
+
+/*!
+ \page resources.html
+ \title The Qt Resource System
+
+ \keyword resource system
+
+ The Qt resource system is a platform-independent mechanism for
+ storing binary files in the application's executable. This is
+ useful if your application always needs a certain set of files
+ (icons, translation files, etc.) and you don't want to run the
+ risk of losing the files.
+
+ The resource system is based on tight cooperation between \l qmake,
+ \l rcc (Qt's resource compiler), and QFile. It obsoletes Qt 3's
+ \c qembed tool and the
+ \l{http://qt.nokia.com/doc/qq/qq05-iconography.html#imagestorage}{image
+ collection} mechanism.
+
+ \section1 Resource Collection Files (\c{.qrc})
+
+ The resources associated with an application are specified in a
+ \c .qrc file, an XML-based file format that lists files on the
+ disk and optionally assigns them a resource name that the
+ application must use to access the resource.
+
+ Here's an example \c .qrc file:
+
+ \quotefile mainwindows/application/application.qrc
+
+ The resource files listed in the \c .qrc file are files that are
+ part of the application's source tree. The specified paths are
+ relative to the directory containing the \c .qrc file. Note that
+ the listed resource files must be located in the same directory as
+ the \c .qrc file, or one of its subdirectories.
+
+ Resource data can either be compiled into the binary and thus accessed
+ immediately in application code, or a binary resource can be created
+ and at a later point in application code registered with the resource
+ system.
+
+ By default, resources are accessible in the application under the
+ same name as they have in the source tree, with a \c :/ prefix.
+ For example, the path \c :/images/cut.png would give access to the
+ \c cut.png file, whose location in the application's source tree
+ is \c images/cut.png. This can be changed using the \c file tag's
+ \c alias attribute:
+
+ \snippet doc/src/snippets/code/doc_src_resources.qdoc 0
+
+ The file is then accessible as \c :/cut-img.png from the
+ application. It is also possible to specify a path prefix for all
+ files in the \c .qrc file using the \c qresource tag's \c prefix
+ attribute:
+
+ \snippet doc/src/snippets/code/doc_src_resources.qdoc 1
+
+ In this case, the file is accessible as \c
+ :/myresources/cut-img.png.
+
+ Some resources, such as translation files and icons, many need to
+ change based on the user's locale. This is done by adding a \c lang
+ attribute to the \c qresource tag, specifying a suitable locale
+ string. For example:
+
+ \snippet doc/src/snippets/code/doc_src_resources.qdoc 2
+
+ If the user's locale is French (i.e., QLocale::system().name() returns
+ "fr_FR"), \c :/cut.jpg becomes a reference to the \c cut_fr.jpg
+ image. For other locales, \c cut.jpg is used.
+
+ See the QLocale documentation for a description of the format to use
+ for locale strings.
+
+
+ \section2 External Binary Resources
+
+ For an external binary resource to be created you must create the resource
+ data (commonly given the \c .rcc extension) by passing the -binary switch to
+ \l rcc. Once the binary resource is created you can register the resource
+ with the QResource API.
+
+ For example, a set of resource data specified in a \c .qrc file can be
+ compiled in the following way:
+
+ \snippet doc/src/snippets/code/doc_src_resources.qdoc 3
+
+ In the application, this resource would be registered with code like this:
+
+ \snippet doc/src/snippets/code/doc_src_resources.qdoc 4
+
+ \section2 Compiled-In Resources
+
+ For a resource to be compiled into the binary the \c .qrc file must be
+ mentioned in the application's \c .pro file so that \c qmake knows
+ about it. For example:
+
+ \snippet examples/mainwindows/application/application.pro 0
+
+ \c qmake will produce make rules to generate a file called \c
+ qrc_application.cpp that is linked into the application. This
+ file contains all the data for the images and other resources as
+ static C++ arrays of compressed binary data. The \c
+ qrc_application.cpp file is automatically regenerated whenever
+ the \c .qrc file changes or one of the files that it refers to
+ changes. If you don't use \c .pro files, you can either invoke
+ \c rcc manually or add build rules to your build system.
+
+ \image resources.png Building resources into an application
+
+ Currently, Qt always stores the data directly in the executable,
+ even on Windows and Mac OS X, where the operating system provides
+ native support for resources. This might change in a future Qt
+ release.
+
+ \section1 Using Resources in the Application
+
+ In the application, resource paths can be used in most places
+ instead of ordinary file system paths. In particular, you can
+ pass a resource path instead of a file name to the QIcon, QImage,
+ or QPixmap constructor:
+
+ \snippet examples/mainwindows/application/mainwindow.cpp 21
+
+ See the \l{mainwindows/application}{Application} example for an
+ actual application that uses Qt's resource system to store its
+ icons.
+
+ In memory, resources are represented by a tree of resource
+ objects. The tree is automatically built at startup and used by
+ QFile for resolving paths to resources. You can use a QDir initialized
+ with ":/" to navigate through the resource tree from the root.
+
+ Qt's resources support the concept of a search path list. If you then
+ refer to a resource with \c : instead of \c :/ as the prefix, the
+ resource will be looked up using the search path list. The search
+ path list is empty at startup; call QDir::addSearchPath() to
+ add paths to it.
+
+ If you have resources in a static library, you might need to
+ force initialization of your resources by calling \l
+ Q_INIT_RESOURCE() with the base name of the \c .qrc file. For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_resources.qdoc 5
+
+ Similarly, if you must unload a set of resources explicitly
+ (because a plugin is being unloaded or the resources are not valid
+ any longer), you can force removal of your resources by calling
+ Q_CLEANUP_RESOURCE() with the same base name as above.
+*/
diff --git a/doc/src/focus.qdoc b/doc/src/focus.qdoc
deleted file mode 100644
index 459a9d850..000000000
--- a/doc/src/focus.qdoc
+++ /dev/null
@@ -1,213 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Documentation of focus handling in Qt.
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
-/*!
- \page focus.html
- \title Keyboard Focus
- \ingroup architecture
- \ingroup gui-programming
- \brief An overview of the keyboard focus management and handling.
-
- \keyword keyboard focus
-
- Qt's widgets handle keyboard focus in the ways that have become
- customary in GUIs.
-
- The basic issue is that the user's key strokes can be directed at any
- of several windows on the screen, and any of several widgets inside
- the intended window. When the user presses a key, they expect it to go
- to the right place, and the software must try to meet this
- expectation. The system must determine which application the key stroke
- is directed at, which window within that application, and which widget
- within that window.
-
- \section1 Focus Motion
-
- The customs which have evolved for directing keyboard focus to a
- particular widget are these:
-
- \list 1
-
- \o The user presses \key Tab (or \key Shift+Tab).
- \o The user clicks a widget.
- \o The user presses a keyboard shortcut.
- \o The user uses the mouse wheel.
- \o The user moves the focus to a window, and the application must
- determine which widget within the window should get the focus.
- \endlist
-
- Each of these motion mechanisms is different, and different types of
- widgets receive focus in only some of them. We'll cover each of them
- in turn.
-
- \section2 Tab or Shift+Tab
-
- Pressing \key Tab is by far the most common way to move focus
- using the keyboard. (Sometimes in data-entry applications Enter
- does the same as \key{Tab}; this can easily be achieved in Qt by
- implementing an \l{Events and Event Filters}{event filter}.)
-
- Pressing \key Tab, in all window systems in common use today,
- moves the keyboard focus to the next widget in a circular
- per-window list. \key Tab moves focus along the circular list in
- one direction, \key Shift+Tab in the other. The order in which
- \key Tab presses move from widget to widget is called the tab order.
-
- You can customize the tab order using QWidget::setTabOrder(). (If
- you don't, \key Tab generally moves focus in the order of widget
- construction.) \l{Qt Designer} provides a means of visually
- changing the tab order.
-
- Since pressing \key Tab is so common, most widgets that can have focus
- should support tab focus. The major exception is widgets that are
- rarely used, and where there is some keyboard accelerator or error
- handler that moves the focus.
-
- For example, in a data entry dialog, there might be a field that
- is only necessary in one per cent of all cases. In such a dialog,
- \key Tab could skip this field, and the dialog could use one of
- these mechanisms:
-
- \list 1
-
- \o If the program can determine whether the field is needed, it can
- move focus there when the user finishes entry and presses \gui OK, or when
- the user presses Enter after finishing the other fields. Alternately,
- include the field in the tab order but disable it. Enable it if it
- becomes appropriate in view of what the user has set in the other
- fields.
-
- \o The label for the field can include a keyboard shortcut that moves
- focus to this field.
-
- \endlist
-
- Another exception to \key Tab support is text-entry widgets that
- must support the insertion of tabs; almost all text editors fall
- into this class. Qt treats \key Ctrl+Tab as \key Tab and \key
- Ctrl+Shift+Tab as \key Shift+Tab, and such widgets can
- reimplement QWidget::event() and handle Tab before calling
- QWidget::event() to get normal processing of all other keys.
- However, since some systems use \key Ctrl+Tab for other purposes,
- and many users aren't aware of \key Ctrl+Tab anyway, this isn't a
- complete solution.
-
- \section2 The User Clicks a Widget
-
- This is perhaps even more common than pressing \key Tab on
- computers with a mouse or other pointing device.
-
- Clicking to move the focus is slightly more powerful than \key
- Tab. While it moves the focus \e to a widget, for editor widgets
- it also moves the text cursor (the widget's internal focus) to
- the spot where the mouse is clicked.
-
- Since it is so common and people are used to it, it's a good idea to
- support it for most widgets. However, there is also an important
- reason to avoid it: you may not want to remove focus from the widget
- where it was.
-
- For example, in a word processor, when the user clicks the 'B' (bold)
- tool button, what should happen to the keyboard focus? Should it
- remain where it was, almost certainly in the editing widget, or should
- it move to the 'B' button?
-
- We advise supporting click-to-focus for widgets that support text
- entry, and to avoid it for most widgets where a mouse click has a
- different effect. (For buttons, we also recommend adding a keyboard
- shortcut: QAbstractButton and its subclasses make this very easy.)
-
- In Qt, only the QWidget::setFocusPolicy() function affects
- click-to-focus.
-
- \section2 The User Presses a Keyboard Shortcut
-
- It's not unusual for keyboard shortcuts to move the focus. This
- can happen implicitly by opening modal dialogs, but also
- explicitly using focus accelerators such as those provided by
- QLabel::setBuddy(), QGroupBox, and QTabBar.
-
- We advise supporting shortcut focus for all widgets that the user
- may want to jump to. For example, a tab dialog can have keyboard
- shortcuts for each of its pages, so the user can press e.g. \key
- Alt+P to step to the \underline{P}rinting page. It is easy to
- overdo this: there are only a few keys, and it's also important
- to provide keyboard shortcuts for commands. \key Alt+P is also
- used for Paste, Play, Print, and Print Here in the \l{Standard
- Accelerator Keys} list, for example.
-
- \section2 The User Rotates the Mouse Wheel
-
- On Microsoft Windows, mouse wheel usage is always handled by the
- widget that has keyboard focus. On Mac OS X and X11, it's handled by
- the widget that gets other mouse events.
-
- The way Qt handles this platform difference is by letting widgets move
- the keyboard focus when the wheel is used. With the right focus policy
- on each widget, applications can work idiomatically correctly on
- Windows, Mac OS X, and X11.
-
- \section2 The User Moves the Focus to This Window
-
- In this situation the application must determine which widget within
- the window should receive the focus.
-
- This can be simple: If the focus has been in this window before,
- then the last widget to have focus should regain it. Qt does this
- automatically.
-
- If focus has never been in this window before and you know where
- focus should start out, call QWidget::setFocus() on the widget
- which should receive focus before you call QWidget::show() it. If
- you don't, Qt will pick a suitable widget.
-*/
diff --git a/doc/src/frameworks-technologies/accessible.qdoc b/doc/src/frameworks-technologies/accessible.qdoc
new file mode 100644
index 000000000..1822a5f00
--- /dev/null
+++ b/doc/src/frameworks-technologies/accessible.qdoc
@@ -0,0 +1,624 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group accessibility
+ \title Accessibility Classes
+*/
+
+/*!
+ \page accessible.html
+ \title Accessibility
+
+ \ingroup frameworks-technologies
+
+ \tableofcontents
+
+ \section1 Introduction
+
+ Accessibility in computer software is making applications usable
+ for people with disabilities. This could be achieved by providing
+ keyboard shortcuts, a high-contrast user interface that uses
+ specially selected colors and fonts, or support for assistive tools
+ such as screen readers and braille displays.
+
+ An application does not usually communicate directly with
+ assistive tools but through an assistive technology, which is a
+ bridge for exchange of information between the applications and
+ the tools. Information about user interface elements, such
+ as buttons and scroll bars, is exposed to the assistive technologies.
+ Qt supports Microsoft Active Accessibility (MSAA) on Windows and
+ Mac OS X Accessibility on Mac OS X.
+ On Unix/X11, support is preliminary. The individual technologies
+ are abstracted from Qt, and there is only a single interface to
+ consider. We will use MSAA throughout this document when we need
+ to address technology related issues.
+
+ In this overview document, we will examine the overall Qt
+ accessibility architecture, and how to implement accessibility for
+ custom widgets and elements.
+
+ \section1 Architecture
+
+ Providing accessibility is a collaboration between accessibility
+ compliant applications, the assistive technology, and the
+ assistive tools.
+
+ \image accessibilityarchitecture.png
+
+ Accessibility compliant applications are called AT-Servers while
+ assistive tools are called AT-Clients. A Qt application will
+ typically be an AT-Server, but specialized programs might also
+ function like AT-Clients. We will refer to clients and servers
+ when talking about AT-Clients and AT-Servers in the rest of this
+ document.
+
+ We will from now on focus on the Qt accessibility interface and
+ how it is implemented to create Qt applications that support
+ accessibility.
+
+ \section2 Accessibility in Qt
+
+ These classes provide support for accessible applications.
+
+ \annotatedlist accessibility
+
+ When we communicate with the assistive technologies, we need to
+ describe Qt's user interface in a way that they can understand. Qt
+ applications use QAccessibleInterface to expose information about the
+ individual UI elements. Currently, Qt provides support for its widgets
+ and widget parts, e.g., slider handles, but the interface could
+ also be implemented for any QObject if necessary. QAccessible
+ contains enums that describe the UI. The description is mainly
+ based on MSAA and is independent of Qt. We will examine the enums
+ in the course of this document.
+
+ The structure of the UI is represented as a tree of
+ QAccessibleInterface subclasses. You can think of this as a
+ representation of a UI like the QObject tree built by Qt. Objects
+ can be widgets or widget parts (such as scroll bar handles). We
+ examine the tree in detail in the next section.
+
+ Servers notify clients through \l{QAccessible::}{updateAccessibility()}
+ about changes in objects by sending events, and the clients
+ register to receive the events. The available events are defined
+ by the QAccessible::Event enum. The clients may then query for
+ the object that generated the event through
+ QAccessible::queryAccessibleInterface().
+
+ Three of the enums in QAccessible help clients query and alter
+ accessible objects:
+
+ \list
+ \o \l{QAccessible::}{Role}: Describes the role the object
+ fills in the user interface, e.g., if it is a main
+ window, a text caret, or a cell in an item view.
+ \o \l{QAccessible::}{Action}: The actions that the
+ clients can perform on the objects, e.g., pushing a
+ button.
+ \o \l{QAccessible::}{Relation}: Describes the relationship
+ between objects in the object tree.
+ This is used for navigation.
+ \endlist
+
+ The clients also have some possibilities to get the content of
+ objects, e.g., a button's text; the object provides strings
+ defined by the QAccessible::Text enum, that give information
+ about content.
+
+ The objects can be in a number of different states as defined by
+ the \l{QAccessible::}{State} enum. Examples of states are whether
+ the object is disabled, if it has focus, or if it provides a pop-up
+ menu.
+
+ \section2 The Accessible Object Tree
+
+ As mentioned, a tree structure is built from the accessible
+ objects of an application. By navigating through the tree, the
+ clients can access all elements in the UI. Object relations give
+ clients information about the UI. For instance, a slider handle is
+ a child of the slider to which it belongs. QAccessible::Relation
+ describes the various relationships the clients can ask objects
+ for.
+
+ Note that there are no direct mapping between the Qt QObject tree
+ and the accessible object tree. For instance, scroll bar handles
+ are accessible objects but are not widgets or objects in Qt.
+
+ AT-Clients have access to the accessibility object tree through
+ the root object in the tree, which is the QApplication. They can
+ query other objects through QAccessible::navigate(), which fetches
+ objects based on \l{QAccessible::}{Relation}s. The children of any
+ node is 1-based numbered. The child numbered 0 is the object
+ itself. The children of all interfaces are numbered this way,
+ i.e., it is not a fixed numbering from the root node in the entire
+ tree.
+
+ Qt provides accessible interfaces for its widgets. Interfaces for
+ any QObject subclass can be requested through
+ QAccessible::queryInterface(). A default implementation is
+ provided if a more specialized interface is not defined. An
+ AT-Client cannot acquire an interface for accessible objects that
+ do not have an equivalent QObject, e.g., scroll bar handles, but
+ they appear as normal objects through interfaces of parent
+ accessible objects, e.g., you can query their relationships with
+ QAccessible::relationTo().
+
+ To illustrate, we present an image of an accessible object tree.
+ Beneath the tree is a table with examples of object relationships.
+
+ \image accessibleobjecttree.png
+
+ The labels in top-down order are: the QAccessibleInterface class
+ name, the widget for which an interface is provided, and the
+ \l{QAccessible::}{Role} of the object. The Position, PageLeft and
+ PageRight correspond to the slider handle, the slider groove left
+ and the slider groove right, respectively. These accessible objects
+ do not have an equivalent QObject.
+
+ \table 40%
+ \header
+ \o Source Object
+ \o Target Object
+ \o Relation
+ \row
+ \o Slider
+ \o Indicator
+ \o Controller
+ \row
+ \o Indicator
+ \o Slider
+ \o Controlled
+ \row
+ \o Slider
+ \o Application
+ \o Ancestor
+ \row
+ \o Application
+ \o Slider
+ \o Child
+ \row
+ \o PushButton
+ \o Indicator
+ \o Sibling
+ \endtable
+
+ \section2 The Static QAccessible Functions
+
+ The accessibility is managed by QAccessible's static functions,
+ which we will examine shortly. They produce QAccessible
+ interfaces, build the object tree, and initiate the connection
+ with MSAA or the other platform specific technologies. If you are
+ only interested in learning how to make your application
+ accessible, you can safely skip over this section to
+ \l{Implementing Accessibility}.
+
+ The communication between clients and the server is initiated when
+ \l{QAccessible::}{setRootObject()} is called. This is done when
+ the QApplication instance is instantiated and you should not have
+ to do this yourself.
+
+ When a QObject calls \l{QAccessible::}{updateAccessibility()},
+ clients that are listening to events are notified of the
+ change. The function is used to post events to the assistive
+ technology, and accessible \l{QAccessible::Event}{events} are
+ posted by \l{QAccessible::}{updateAccessibility()}.
+
+ \l{QAccessible::}{queryAccessibleInterface()} returns accessible
+ interfaces for \l{QObject}s. All widgets in Qt provide interfaces;
+ if you need interfaces to control the behavior of other \l{QObject}
+ subclasses, you must implement the interfaces yourself, although
+ the QAccessibleObject convenience class implements parts of the
+ functionality for you.
+
+ The factory that produces accessibility interfaces for QObjects is
+ a function of type QAccessible::InterfaceFactory. It is possible
+ to have several factories installed. The last factory installed
+ will be the first to be asked for interfaces.
+ \l{QAccessible::}{queryAccessibleInterface()} uses the factories
+ to create interfaces for \l{QObject}s. Normally, you need not be
+ concerned about factories because you can implement plugins that
+ produce interfaces. We will give examples of both approaches
+ later.
+
+ \section2 Enabling Accessibility Support
+
+ By default, Qt applications are run with accessibility support
+ enabled on Windows and Mac OS X. On Unix/X11 platforms, applications
+ must be launched in an environment with the \c QT_ACCESSIBILITY
+ variable set to 1. For example, this is set in the following way with
+ the bash shell:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-accessibility.qdoc environment
+
+ Accessibility features are built into Qt by default when the libraries
+ are configured and built.
+
+ \section1 Implementing Accessibility
+
+ To provide accessibility support for a widget or other user
+ interface element, you need to implement the QAccessibleInterface
+ and distribute it in a QAccessiblePlugin. It is also possible to
+ compile the interface into the application and provide a
+ QAccessible::InterfaceFactory for it. The factory can be used if
+ you link statically or do not want the added complexity of
+ plugins. This can be an advantage if you, for instance, are
+ delivering a 3-rd party library.
+
+ All widgets and other user interface elements should have
+ interfaces and plugins. If you want your application to support
+ accessibility, you will need to consider the following:
+
+ \list
+ \o Qt already implements accessibility for its own widgets.
+ We therefore recommend that you use Qt widgets where possible.
+ \o A QAccessibleInterface needs to be implemented for each element
+ that you want to make available to accessibility clients.
+ \o You need to send accessibility events from the custom
+ user interface elements that you implement.
+ \endlist
+
+ In general, it is recommended that you are somewhat familiar with
+ MSAA, which Qt's accessibility support originally was built for.
+ You should also study the enum values of QAccessible, which
+ describe the roles, actions, relationships, and events that you
+ need to consider.
+
+ Note that you can examine how Qt's widgets implement their
+ accessibility. One major problem with the MSAA standard is that
+ interfaces are often implemented in an inconsistent way. This
+ makes life difficult for clients and often leads to guesswork on
+ object functionality.
+
+ It is possible to implement interfaces by inheriting
+ QAccessibleInterface and implementing its pure virtual functions.
+ In practice, however, it is usually preferable to inherit
+ QAccessibleObject or QAccessibleWidget, which implement part of
+ the functionality for you. In the next section, we will see an
+ example of implementing accessibility for a widget by inheriting
+ the QAccessibleWidget class.
+
+ \section2 The QAccessibleObject and QAccessibleWidget Convenience Classes
+
+ When implementing an accessibility interface for widgets, one would
+ as a rule inherit QAccessibleWidget, which is a convenience class
+ for widgets. Another available convenience class, which is
+ inherited by QAccessibleWidget, is the QAccessibleObject, which
+ implements part of the interface for QObjects.
+
+ The QAccessibleWidget provides the following functionality:
+
+ \list
+ \o It handles the navigation of the tree and
+ hit testing of the objects.
+ \o It handles events, roles, and actions that are common for all
+ \l{QWidget}s.
+ \o It handles action and methods that can be performed on
+ all widgets.
+ \o It calculates bounding rectangles with
+ \l{QAccessibleInterface::}{rect()}.
+ \o It gives \l{QAccessibleInterface::}{text()} strings that are
+ appropriate for a generic widget.
+ \o It sets the \l{QAccessible::State}{states} that
+ are common for all widgets.
+ \endlist
+
+ \section2 QAccessibleWidget Example
+
+ Instead of creating a custom widget and implementing an interface
+ for it, we will show how accessibility can be implemented for one of
+ Qt's standard widgets: QSlider. Making this widget accessible
+ demonstrates many of the issues that need to be faced when making
+ a custom widget accessible.
+
+ The slider is a complex control that functions as a
+ \l{QAccessible::}{Controller} for its accessible children.
+ This relationship must be known by the interface (for
+ \l{QAccessibleInterface::}{relationTo()} and
+ \l{QAccessibleInterface::}{navigate()}). This can be done
+ using a controlling signal, which is a mechanism provided by
+ QAccessibleWidget. We do this in the constructor:
+
+ \snippet doc/src/snippets/accessibilityslidersnippet.cpp 0
+
+ The choice of signal shown is not important; the same principles
+ apply to all signals that are declared in this way. Note that we
+ use QLatin1String to ensure that the signal name is correctly
+ specified.
+
+ When an accessible object is changed in a way that users need
+ to know about, it notifies clients of the change by sending them
+ an event via the accessible interface. This is how QSlider calls
+ \l{QAccessibleInterface::}{updateAccessibility()} to indicate that
+ its value has changed:
+
+ \snippet doc/src/snippets/qabstractsliderisnippet.cpp 0
+ \dots
+ \snippet doc/src/snippets/qabstractsliderisnippet.cpp 1
+ \dots
+ \snippet doc/src/snippets/qabstractsliderisnippet.cpp 2
+
+ Note that the call is made after the value of the slider has
+ changed because clients may query the new value immediately after
+ receiving the event.
+
+ The interface must be able to calculate bounding rectangles of
+ itself and any children that do not provide an interface of their
+ own. The \c QAccessibleSlider has three such children identified by
+ the private enum, \c SliderElements, which has the following values:
+ \c PageLeft (the rectangle on the left hand side of the slider
+ handle), \c PageRight (the rectangle on the right hand side of the
+ handle), and \c Position (the slider handle). Here is the
+ implementation of \l{QAccessibleInterface::}{rect()}:
+
+ \snippet doc/src/snippets/accessibilityslidersnippet.cpp 1
+ \dots
+ \snippet doc/src/snippets/accessibilityslidersnippet.cpp 2
+ \dots
+
+ The first part of the function, which we have omitted, uses the
+ current \l{QStyle}{style} to calculate the slider handle's
+ bounding rectangle; it is stored in \c srect. Notice that child 0,
+ covered in the default case in the above code, is the slider itself,
+ so we can simply return the QSlider bounding rectangle obtained
+ from the superclass, which is effectively the value obtained from
+ QAccessibleWidget::rect().
+
+ \snippet doc/src/snippets/accessibilityslidersnippet.cpp 3
+
+ Before the rectangle is returned it must be mapped to screen
+ coordinates.
+
+ The QAccessibleSlider must reimplement
+ QAccessibleInterface::childCount() since it manages children
+ without interfaces.
+
+ The \l{QAccessibleInterface::}{text()} function returns the
+ QAccessible::Text strings for the slider:
+
+ \snippet doc/src/snippets/accessibilityslidersnippet.cpp 4
+
+ The \c slider() function returns a pointer to the interface's
+ QSlider. Some values are left for the superclass's implementation.
+ Not all values are appropriate for all accessible objects, as you
+ can see for QAccessible::Value case. You should just return an
+ empty string for those values where no relevant text can be
+ provided.
+
+ The implementation of the \l{QAccessibleInterface::}{role()}
+ function is straightforward:
+
+ \snippet doc/src/snippets/accessibilityslidersnippet.cpp 5
+
+ The role function should be reimplemented by all objects and
+ describes the role of themselves and the children that do not
+ provide accessible interfaces of their own.
+
+ Next, the accessible interface needs to return the
+ \l{QAccessible::State}{states} that the slider can be in. We look
+ at parts of the \c state() implementation to show how just a few
+ of the states are handled:
+
+ \snippet doc/src/snippets/accessibilityslidersnippet.cpp 6
+ \dots
+ \snippet doc/src/snippets/accessibilityslidersnippet.cpp 7
+
+ The superclass implementation of
+ \l{QAccessibleInterface::}{state()}, uses the
+ QAccessibleInterface::state() implementation. We simply need to
+ disable the buttons if the slider is at its minimum or maximum.
+
+ We have now exposed the information we have about the slider to
+ the clients. For the clients to be able to alter the slider - for
+ example, to change its value - we must provide information about
+ the actions that can be performed and perform them upon request.
+ We discuss this in the next section.
+
+ \section2 Handling Action Requests from Clients
+
+ QAccessible provides a number of \l{QAccessible::}{Action}s
+ that can be performed on request from clients. If an
+ accessible object supports actions, it should reimplement the
+ following functions from QAccessibleInterface:
+
+ \list
+ \o \l{QAccessibleInterface::}{actionText()} returns
+ strings that describe each action. The descriptions
+ to be made available are one for each
+ \l{QAccessible::}{Text} enum value.
+ \o \l{QAccessibleInterface::}{doAction()} executes requests
+ from clients to perform actions.
+ \endlist
+
+ Note that a client can request any action from an object. If
+ the object does not support the action, it returns false from
+ \l{QAccessibleInterface::}{doAction()}.
+
+ None of the standard actions take any parameters. It is possible
+ to provide user-defined actions that can take parameters.
+ The interface must then also reimplement
+ \l{QAccessibleInterface::}{userActionCount()}. Since this is not
+ defined in the MSAA specification, it is probably only useful to
+ use this if you know which specific AT-Clients will use the
+ application.
+
+ QAccessibleInterface gives another technique for clients to handle
+ accessible objects. It works basically the same way, but uses the
+ concept of methods in place of actions. The available methods are
+ defined by the QAccessible::Method enum. The following functions
+ need to be reimplemented from QAccessibleInterface if the
+ accessible object is to support methods:
+
+ \list
+ \o \l{QAccessibleInterface::}{supportedMethods()} returns
+ a QSet of \l{QAccessible::}{Method} values that are
+ supported by the object.
+ \o \l{QAccessibleInterface::}{invokeMethod()} executes
+ methods requested by clients.
+ \endlist
+
+ The action mechanism will probably be substituted by providing
+ methods in place of the standard actions.
+
+ To see examples on how to implement actions and methods, you
+ could examine the QAccessibleObject and QAccessibleWidget
+ implementations. You might also want to take a look at the
+ MSAA documentation.
+
+ \section2 Implementing Accessible Plugins
+
+ In this section we will explain the procedure of implementing
+ accessible plugins for your interfaces. A plugin is a class stored
+ in a shared library that can be loaded at run-time. It is
+ convenient to distribute interfaces as plugins since they will only
+ be loaded when required.
+
+ Creating an accessible plugin is achieved by inheriting
+ QAccessiblePlugin, reimplementing \l{QAccessiblePlugin::}{keys()}
+ and \l{QAccessiblePlugin::}{create()} from that class, and adding
+ one or two macros. The \c .pro file must be altered to use the
+ plugin template, and the library containing the plugin must be
+ placed on a path where Qt searches for accessible plugins.
+
+ We will go through the implementation of \c SliderPlugin, which is an
+ accessible plugin that produces interfaces for the
+ QAccessibleSlider we implemented in the \l{QAccessibleWidget Example}.
+ We start with the \c key() function:
+
+ \snippet doc/src/snippets/accessibilitypluginsnippet.cpp 0
+
+ We simply need to return the class name of the single interface
+ our plugin can create an accessible interface for. A plugin
+ can support any number of classes; just add more class names
+ to the string list. We move on to the \c create() function:
+
+ \snippet doc/src/snippets/accessibilitypluginsnippet.cpp 1
+
+ We check whether the interface requested is for the QSlider; if it
+ is, we create and return an interface for it. Note that \c object
+ will always be an instance of \c classname. You must return 0 if
+ you do not support the class.
+ \l{QAccessible::}{updateAccessibility()} checks with the
+ available accessibility plugins until it finds one that does not
+ return 0.
+
+ Finally, you need to include macros in the cpp file:
+
+ \snippet doc/src/snippets/accessibilitypluginsnippet.cpp 2
+
+ The Q_EXPORT_PLUGIN2 macro exports the plugin in the \c
+ SliderPlugin class into the \c acc_sliderplugin library. The first
+ argument is the name of the plugin library file, excluding the
+ file suffix, and the second is the class name. For more information
+ on plugins, consult the plugins \l{How to Create Qt
+ Plugins}{overview document}.
+
+ You can omit the first macro unless you want the plugin
+ to be statically linked with the application.
+
+ \section2 Implementing Interface Factories
+
+ If you do not want to provide plugins for your accessibility
+ interfaces, you can use an interface factory
+ (QAccessible::InterfaceFactory), which is the recommended way to
+ provide accessible interfaces in a statically-linked application.
+
+ A factory is a function pointer for a function that takes the same
+ parameters as \l{QAccessiblePlugin}'s
+ \l{QAccessiblePlugin::}{create()} - a QString and a QObject. It
+ also works the same way. You install the factory with the
+ \l{QAccessible::}{installFactory()} function. We give an example
+ of how to create a factory for the \c SliderPlugin class:
+
+ \snippet doc/src/snippets/accessibilityfactorysnippet.cpp 0
+ \dots
+ \snippet doc/src/snippets/accessibilityfactorysnippet.cpp 1
+
+ \omit
+
+ \section1 Implementing Bridges for Other Assistive Technologies
+
+ An accessibility bridge provides the means for an assistive
+ technology to talk to Qt. On Windows and Mac, the built-in bridges
+ will be used. On UNIX, however, there are no built-in standard
+ assistive technology, and it might therefore be necessary to
+ implement an accessible bridge.
+
+ A bridge is implemented by inheriting QAccessibleBridge for the
+ technology to support. The class defines the interface that Qt
+ needs an assistive technology to support:
+
+ \list
+ \o A root object. This is the root in the accessible
+ object tree and is of type QAccessibleInterface.
+ \o Receive events from from accessible objects.
+ \endlist
+
+ The root object is set with the
+ \l{QAccessibleBridge::}{setRootObject()}. In the case of Qt, this
+ will always be an interface for the QApplication instance of the
+ application.
+
+ Event notification is sent through
+ \l{QAccessibleBridge::}{notifyAccessibilityUpdate()}. This
+ function is called by \l{QAccessible::}{updateAccessibility()}. Even
+ though the bridge needs only to implement these two functions, it
+ must be able to communicate the entire QAccessibleInterface to the
+ underlying technology. How this is achieved is, naturally, up to
+ the individual bridge and none of Qt's concern.
+
+ As with accessible interfaces, you distribute accessible bridges
+ in plugins. Accessible bridge plugins are subclasses of the
+ QAccessibleBridgePlugin class; the class defines the functions
+ \l{QAccessibleBridgePlugin::}{create()} and
+ \l{QAccessibleBridgePlugin::}{keys()}, which must me
+ reimplemented. If Qt finds a built-in bridge to use, it will
+ ignore any available plugins.
+
+ \endomit
+
+ \section1 Further Reading
+
+ The \l{Cross-Platform Accessibility Support in Qt 4} document contains a more
+ general overview of Qt's accessibility features and discusses how it is
+ used on each platform.
+ issues
+*/
diff --git a/doc/src/frameworks-technologies/activeqt-container.qdoc b/doc/src/frameworks-technologies/activeqt-container.qdoc
new file mode 100644
index 000000000..79515bfa1
--- /dev/null
+++ b/doc/src/frameworks-technologies/activeqt-container.qdoc
@@ -0,0 +1,218 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 activeqt-container.html
+ \title Using ActiveX controls and COM objects in Qt
+
+ \brief The QAxContainer module is a Windows-only extension for
+ accessing ActiveX controls and COM objects.
+
+ The QAxContainer module is part of the \l ActiveQt framework. It
+ provides a library implementing a QWidget subclass, QAxWidget,
+ that acts as a container for ActiveX controls, and a QObject
+ subclass, QAxObject, that can be used to easily access non-visual
+ COM objects. Scripting COM objects embedded using these classes
+ is possible through the QAxScript, QAxScriptManager and
+ QAxScriptEngine classes, and a set of \l{Tools for ActiveQt}{tools}
+ makes it easy to access COM objects programmatically.
+
+ The module consists of six classes
+ \list 1
+ \o QAxBase is an abstract class that provides an API to initialize
+ and access a COM object or ActiveX control.
+ \o QAxObject provides a QObject that wraps a COM object.
+ \o QAxWidget is a QWidget that wraps an ActiveX control.
+ \o QAxScriptManager, QAxScript and QAxScriptEngine provide an
+ interface to the Windows Script Host.
+ \endlist
+
+ Some \l{ActiveQt Examples}{example applications} that use
+ standard ActiveX controls to provide high-level user interface
+ functionality are provided.
+
+ \sa {ActiveQt Framework}
+
+ Topics:
+
+ \tableofcontents
+
+ \section1 Using the Library
+
+ To build Qt applications that can host COM objects and ActiveX controls
+ link the application against the QAxContainer module by adding
+
+ \snippet doc/src/snippets/code/doc_src_qaxcontainer.qdoc 0
+
+ to your application's \c .pro file.
+
+ \section2 Distributing QAxContainer Applications
+
+ The QAxContainer library is static, so there is no need to redistribute
+ any additional files when using this module. Note however that the
+ ActiveX server binaries you are using might not be installed on the
+ target system, so you have to ship them with your package and register
+ them during the installation process of your application.
+
+ \section1 Instantiating COM Objects
+
+ To instantiate a COM object use the QAxBase::setControl() API, or pass
+ the name of the object directly into the constructor of the QAxBase
+ subclass you are using.
+
+ The control can be specified in a variety of formats, but the fastest
+ and most powerful format is to use the class ID (CLSID) of the object
+ directly. The class ID can be prepended with information about a remote
+ machine that the object should run on, and can include a license key
+ for licensed controls.
+
+ \section2 Typical Error Messages
+
+ ActiveQt prints error messages to the debug output when it
+ encounters error situations at runtime. Usually you must run
+ your program in the debugger to see these messages (e.g. in Visual
+ Studio's Debug output).
+
+ \section3 Requested control could not be instantiated
+
+ The control requested in QAxBase::setControl() is not installed
+ on this system, or is not accessible for the current user.
+
+ The control might require administrator rights, or a license key.
+ If the control is licensed, pass the license key to QAxBase::setControl
+ as documented.
+
+ \section1 Accessing the Object API
+
+ ActiveQt provides a Qt API to the COM object, and replaces COM
+ datatypes with Qt equivalents.
+
+ There are four ways to call APIs on the COM object:
+
+ \list
+ \o Generating a C++ namespace
+ \o Call-by-name
+ \o Through a script engine
+ \o Using the native COM interfaces
+ \endlist
+
+ \section2 Generating a C++ Namespace
+
+ To generate a C++ namespace for the type library you want to access,
+ use the \l dumpcpp tool. Run this tool manually on the type library you
+ want to use, or integrate it into the build system by adding the type
+ libraries to the \c TYPELIBS variable in your application's \c .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qaxcontainer.qdoc 1
+
+ Note that \l dumpcpp might not be able to expose all APIs in the type
+ library.
+
+ Include the resulting header file in your code to access the
+ object APIs through the generated C++ classes. See the
+ \l{activeqt/qutlook}{Qutlook} example for more information.
+
+ \section2 Call-by-Name
+
+ Use QAxBase::dynamicCall() and QAxBase::querySubObject() as well as
+ the QObject::setProperty() and QObject::property() APIs to call the
+ methods and properties of the COM object through their name. Use the
+ \l dumpdoc tool to get the documentation of the Qt API for any COM
+ object and its subobjects; note that not all of the COM object's APIs
+ might be available.
+
+ See the \l{activeqt/webbrowser}{Webbrowser} example for more information.
+
+ \section2 Calling Function Through a Script Engine
+
+ A Qt application can host any ActiveScript engine installed on the system.
+ The script engine can then run script code that accesses the COM objects.
+
+ To instantiate a script engine, use QAxScriptManager::addObject() to
+ register the COM objects you want to access from script, and
+ QAxScriptManager::load() to load the script code into the engine. Then
+ call the script functions using QAxScriptManager::call() or
+ QAxScript::call().
+
+ Which APIs of the COM object are available through scripting depends on
+ the script language used.
+
+ The \l{testcon - An ActiveX Test Container (ActiveQt)}{ActiveX Test Container}
+ demonstrates loading of script files.
+
+ \section2 Calling a Function Using the Native COM Interfaces
+
+ To call functions of the COM object that can not be accessed via any
+ of the above methods it is possible to request the COM interface directly
+ using QAxBase::queryInterface(). To get a C++ definition of the respective
+ interface classes use the \c #import directive with the type library
+ provided with the control; see your compiler manual for details.
+
+ \section2 Typical Error Messages
+
+ ActiveQt prints error messages to the debug output when it
+ encounters error situations at runtime. Usually you must run
+ your program in the debugger to see these messages (e.g. in Visual
+ Studio's Debug output).
+
+ \section3 QAxBase::internalInvoke: No such method
+
+ A QAxBase::dynamicCall() failed - the function prototype did not
+ match any function available in the object's API.
+
+ \section3 Error calling IDispatch member: Non-optional parameter missing
+
+ A QAxBase::dynamicCall() failed - the function prototype was correct,
+ but too few parameters were provided.
+
+ \section3 Error calling IDispatch member: Type mismatch in parameter n
+
+ A QAxBase::dynamicCall() failed - the function prototype was correct,
+ but the paramter at index \c n was of the wrong type and could
+ not be coerced to the correct type.
+
+ \section3 QAxScriptManager::call(): No script provides this function
+
+ You try to call a function that is provided through an engine
+ that doesn't provide introspection (ie. ActivePython or
+ ActivePerl). You need to call the function directly on the
+ respective QAxScript object.
+*/
diff --git a/doc/src/frameworks-technologies/activeqt-server.qdoc b/doc/src/frameworks-technologies/activeqt-server.qdoc
new file mode 100644
index 000000000..89456bf03
--- /dev/null
+++ b/doc/src/frameworks-technologies/activeqt-server.qdoc
@@ -0,0 +1,856 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 activeqt-server.html
+ \title Building ActiveX servers and controls with Qt
+
+ \brief The QAxServer module is a Windows-only static library that
+ you can use to turn a standard Qt binary into a COM server.
+
+ The QAxServer module is part of the \l ActiveQt framework. It
+ consists of three classes:
+
+ \list
+ \o QAxFactory defines a factory for the creation of COM objects.
+ \o QAxBindable provides an interface between the Qt widget and the
+ COM object.
+ \o QAxAggregated can be subclassed to implement additional COM interfaces.
+ \endlist
+
+ Some \l{ActiveQt Examples}{example implementations} of ActiveX
+ controls and COM objects are provided.
+
+ \sa {ActiveQt Framework}
+
+ Topics:
+
+ \tableofcontents
+
+ \section1 Using the Library
+
+ To turn a standard Qt application into a COM server using the
+ QAxServer library you must add \c qaxserver as a CONFIG setting
+ in your \c .pro file.
+
+ An out-of-process executable server is generated from a \c .pro
+ file like this:
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 0
+
+ To build an in-process server, use a \c .pro file like this:
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 1
+
+ The files \c qaxserver.rc and \c qaxserver.def are part of the
+ framework and can be used from their usual location (specify a
+ path in the \c .pro file), or copied into the project directory.
+ You can modify these files as long as it includes any file as the
+ type library entry, ie. you can add version information or specify
+ a different toolbox icon.
+
+ The \c qaxserver configuration will cause the \c qmake tool to add the
+ required build steps to the build system:
+
+ \list
+ \o Link the binary against \c qaxserver.lib instead of \c qtmain.lib
+ \o Call the \l idc tool to generate an IDL file for the COM server
+ \o Compile the IDL into a type library using the MIDL tool (part of the
+ compiler installation)
+ \o Attach the resulting type library as a binary resource to the server
+ binary (again using the \l idc tool)
+ \o Register the server
+ \endlist
+
+ Note that the QAxServer build system is not supported on Windows 98/ME
+ (attaching of resources to a binary is not possible there), but a server
+ built on Windows NT/2000/XP will work on previous Windows versions as well.
+
+ To skip the post-processing step, also set the \c qaxserver_no_postlink
+ configuration.
+
+ Additionally you can specify a version number using the \c VERSION
+ variable, e.g.
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 2
+
+ The version number specified will be used as the version of the type
+ library and of the server when registering.
+
+ \section2 Out-of-Process vs. In-Process
+
+ Whether your COM server should run as a stand-alone executable
+ or as a shared library in the client process depends mainly on the
+ type of COM objects you want to provide in the server.
+
+ An executable server has the advantage of being able to run as a
+ stand-alone application, but adds considerable overhead to the
+ communication between the COM client and the COM object. If the
+ control has a programming error only the server process running
+ the control will crash, and the client application will probably
+ continue to run. Not all COM clients support executable servers.
+
+ An in-process server is usually smaller and has faster startup
+ time. The communication between client and server is done directly
+ through virtual function calls and does not introduce the overhead
+ required for remote procedure calls. However, if the server crashes the
+ client application is likely to crash as well, and not every
+ functionality is available for in-process servers (i.e. register in
+ the COM's running-object-table).
+
+ Both server types can use Qt either as a shared library, or statically
+ linked into the server binary.
+
+ \section2 Typical Errors During the Post-Build Steps
+
+ For the ActiveQt specific post-processing steps to work the
+ server has to meet some requirements:
+
+ \list
+ \o All controls exposed can be created with nothing but a QApplication
+ instance being present
+ \o The initial linking of the server includes a temporary type
+ library resource
+ \o All dependencies required to run the server are in the system path
+ (or in the path used by the calling environment; note that Visual
+ Studio has its own set of environment variables listed in the
+ Tools|Options|Directories dialog).
+ \endlist
+
+ If those requirements are not met one ore more of the following
+ errors are likely to occur:
+
+ \section3 The Server Executable Crashes
+
+ To generate the IDL the widgets exposed as ActiveX controls need to
+ be instantiated (the constructor is called). At this point, nothing
+ else but a QApplication object exists. Your widget constructor must
+ not rely on any other objects to be created, e.g. it should check for
+ null-pointers.
+
+ To debug your server run it with -dumpidl outputfile and check where
+ it crashes.
+
+ Note that no functions of the control are called.
+
+ \section3 The Server Executable Is Not a Valid Win32 Application
+
+ Attaching the type library corrupted the server binary. This is a
+ bug in Windows and happens only with release builds.
+
+ The first linking step has to link a dummy type library into the
+ executable that can later be replaced by idc. Add a resource file
+ with a type library to your project as demonstrated in the examples.
+
+ \section3 "Unable to locate DLL"
+
+ The build system needs to run the server executable to generate
+ the interface definition, and to register the server. If a dynamic
+ link library the server links against is not in the path this
+ might fail (e.g. Visual Studio calls the server using the
+ enivronment settings specified in the "Directories" option). Make
+ sure that all DLLs required by your server are located in a
+ directory that is listed in the path as printed in the error
+ message box.
+
+ \section3 "Cannot open file ..."
+
+ The ActiveX server could not shut down properly when the last
+ client stopped using it. It usually takes about two seconds for
+ the application to terminate, but you might have to use the task
+ manager to kill the process (e.g. when a client doesn't release
+ the controls properly).
+
+ \section1 Implementing Controls
+
+ To implement a COM object with Qt, create a subclass of QObject
+ or any existing QObject subclass. If the class is a subclass of QWidget,
+ the COM object will be an ActiveX control.
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 3
+
+ The Q_OBJECT macro is required to provide the meta object information
+ about the widget to the ActiveQt framework.
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 4
+
+ Use the Q_CLASSINFO() macro to specify the COM identifiers for the COM
+ object. \c ClassID and \c InterfaceID are required, while \c EventsID is
+ only necessary when your object has signals. To generate these identifiers,
+ use system tools like \c uuidgen or \c guidgen.
+
+ You can specify additional attributes for each of your classes; see
+ \l{Class Information and Tuning} for details.
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 5
+
+ Use the Q_PROPERTY() macro to declare properties for the ActiveX control.
+
+ Declare a standard constructor taking a parent object, and functions,
+ signals and slots like for any QObject subclass.
+ \footnote
+ If a standard constructor is not present the compiler will issue
+ an error "no overloaded function takes 2 parameters" when using
+ the default factory through the QAXFACTORY_DEFAULT() macro. If you
+ cannot provide a standard constructor you must implement a
+ QAxFactory custom factory and call the constructor you have in
+ your implementation of QAxFactory::create.
+ \endfootnote
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 6
+
+ The ActiveQt framework will expose properties and public slots as ActiveX
+ properties and methods, and signals as ActiveX events, and convert between
+ the Qt data types and the equivalent COM data types.
+
+ \section2 Data Types
+
+ The Qt data types that are supported for properties are:
+
+ \table
+ \header
+ \o Qt data type
+ \o COM property
+ \row
+ \o bool
+ \o VARIANT_BOOL
+ \row
+ \o QString
+ \o BSTR
+ \row
+ \o int
+ \o int
+ \row
+ \o uint
+ \o unsigned int
+ \row
+ \o double
+ \o double
+ \row
+ \o \l qlonglong
+ \o CY
+ \row
+ \o \l qulonglong
+ \o CY
+ \row
+ \o QColor
+ \o OLE_COLOR
+ \row
+ \o QDate
+ \o DATE
+ \row
+ \o QDateTime
+ \o DATE
+ \row
+ \o QTime
+ \o DATE
+ \row
+ \o QFont
+ \o IFontDisp*
+ \row
+ \o QPixmap
+ \o IPictureDisp*
+ \footnote
+ COM cannot marshal IPictureDisp accross process boundaries,
+ so QPixmap properties cannot be called for out-of-process servers. You
+ can however marshal the image data via e.g. temporary files. See the
+ Microsoft
+ \link http://support.microsoft.com/default.aspx?scid=kb;[LN];Q150034 KB article
+ Q150034 \endlink for more information.
+ \endfootnote
+ \row
+ \o QVariant
+ \o VARIANT
+ \row
+ \o QVariantList (same as QList\<QVariant\>)
+ \o SAFEARRAY(VARIANT)
+ \row
+ \o QStringList
+ \o SAFEARRAY(BSTR)
+ \row
+ \o QByteArray
+ \o SAFEARRAY(BYTE)
+ \row
+ \o QRect
+ \o User defined type
+ \row
+ \o QSize
+ \o User defined type
+ \row
+ \o QPoint
+ \o User defined type
+ \endtable
+
+ The Qt data types that are supported for parameters in signals and
+ slots are:
+ \table
+ \header
+ \o Qt data type
+ \o COM parameter
+ \row
+ \o bool
+ \o [in] VARIANT_BOOL
+ \row
+ \o bool&
+ \o [in, out] VARIANT_BOOL*
+ \row
+ \o QString, const QString&
+ \o [in] BSTR
+ \row
+ \o QString&
+ \o [in, out] BSTR*
+ \row
+ \o QString&
+ \o [in, out] BSTR*
+ \row
+ \o int
+ \o [in] int
+ \row
+ \o int&
+ \o [in,out] int
+ \row
+ \o uint
+ \o [in] unsigned int
+ \row
+ \o uint&
+ \o [in, out] unsigned int*
+ \row
+ \o double
+ \o [in] double
+ \row
+ \o double&
+ \o [in, out] double*
+ \row
+ \o QColor, const QColor&
+ \o [in] OLE_COLOR
+ \row
+ \o QColor&
+ \o [in, out] OLE_COLOR*
+ \row
+ \o QDate, const QDate&
+ \o [in] DATE
+ \row
+ \o QDate&
+ \o [in, out] DATE*
+ \row
+ \o QDateTime, const QDateTime&
+ \o [in] DATE
+ \row
+ \o QDateTime&
+ \o [in, out] DATE*
+ \row
+ \o QFont, const QFont&
+ \o [in] IFontDisp*
+ \row
+ \o QFont&
+ \o [in, out] IFontDisp**
+ \row
+ \o QPixmap, const QPixmap&
+ \o [in] IPictureDisp*
+ \row
+ \o QPixmap&
+ \o [in, out] IPictureDisp**
+ \row
+ \o QList\<QVariant\>, const QList\<QVariant\>&
+ \o [in] SAFEARRAY(VARIANT)
+ \row
+ \o QList\<QVariant\>&
+ \o [in, out] SAFEARRAY(VARIANT)*
+ \row
+ \o QStringList, const QStringList&
+ \o [in] SAFEARRAY(BSTR)
+ \row
+ \o QStringList&
+ \o [in, out] SAFEARRAY(BSTR)*
+ \row
+ \o QByteArray, const QByteArray&
+ \o [in] SAFEARRAY(BYTE)
+ \row
+ \o QByteArray&
+ \o [in, out] SAFEARRAY(BYTE)*
+ \row
+ \o QObject*
+ \o [in] IDispatch*
+ \row
+ \o QRect&
+ \footnote
+ OLE needs to marshal user defined types by reference (ByRef), and cannot
+ marshal them by value (ByVal). This is why const-references and object
+ parameters are not supported for QRect, QSize and QPoint. Also note that
+ servers with this datatype require Windows 98 or DCOM 1.2 to be installed.
+ \endfootnote
+ \o [in, out] struct QRect (user defined)
+ \row
+ \o QSize&
+ \o [in, out] struct QSize (user defined)
+ \row
+ \o QPoint&
+ \o [in, out] struct QPoint (user defined)
+ \endtable
+
+ Also supported are exported enums and flags (see Q_ENUMS() and
+ Q_FLAGS()). The in-parameter types are also supported as
+ return values.
+
+ Properties and signals/slots that have parameters using any other
+ data types are ignored by the ActiveQt framework.
+
+ \section2 Sub-Objects
+
+ COM objects can have multiple sub-objects that can represent a sub element
+ of the COM object. A COM object representing a multi-document spread sheet
+ application can for example provide one sub-object for each spread sheet.
+
+ Any QObject subclass can be used as the type for a sub object in ActiveX, as
+ long as it is known to the QAxFactory. Then the type can be used in properties,
+ or as the return type or paramter of a slot.
+
+ \section2 Property Notification
+
+ To make the properties bindable for the ActiveX client, use multiple
+ inheritance from the QAxBindable class:
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 7
+
+ When implementing the property write functions, use the
+ QAxBindable class's requestPropertyChange() and propertyChanged()
+ functions to allow ActiveX clients to bind to the control
+ properties.
+ \footnote
+ This is not required, but gives the client more control over
+ the ActiveX control.
+ \endfootnote
+
+ \section1 Serving Controls
+
+ To make a COM server available to the COM system it must be registered
+ in the system registry using five unique identifiers.
+ These identifiers are provided by tools like \c guidgen or \c uuidgen.
+ The registration information allows COM to localize the binary providing
+ a requested ActiveX control, marshall remote procedure calls to the
+ control and read type information about the methods and properties exposed
+ by the control.
+
+ To create the COM object when the client asks for it the server must export
+ an implementation of a QAxFactory. The easist way to do this is to use a set
+ of macros:
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 8
+
+ This will export \c MyWidget and \c MyWidget2 as COM objects that can be
+ created by COM clients, and will register \c MySubType as a type that can
+ be used in properties and parameters of \c MyWidget and \c MyWidget2.
+
+ The \link QAxFactory QAxFactory class documentation \endlink explains
+ how to use this macro, and how to implement and use custom factories.
+
+ For out-of-process executable servers you can implement a main()
+ function to instantiate a QApplication object and enter the event
+ loop just like any normal Qt application. By default the
+ application will start as a standard Qt application, but if you
+ pass \c -activex on the command line it will start as an ActiveX
+ server. Use QAxFactory::isServer() to create and run a standard
+ application interface, or to prevent a stand-alone execution:
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 9
+
+ This is however not necessary as ActiveQt provides a default implementation
+ of a main function. The default implemenation calls QAxFactory::startServer(),
+ creates a QApplication instance and calls exec().
+
+ To build the ActiveX server executable run \c qmake
+ to generate the makefile, and use your compiler's
+ make tool as for any other Qt application. The make process will
+ also register the controls in the system registry by calling the
+ resulting executable with the \c -regserver command line option.
+
+ If the ActiveX server is an executable, the following command line
+ options are supported:
+ \table
+ \header \o Option \o Result
+ \row \o \c -regserver \o Registers the server in the system registry
+ \row \o \c -unregserver \o Unregisters the server from the system registry
+ \row \o \c -activex \o Starts the application as an ActiveX server
+ \row \o \c{-dumpidl <file> -version x.y} \o Writes the server's IDL to the
+ specified file. The type library will have version x.y
+ \endtable
+
+ In-process servers can be registered using the \c regsvr32 tool available
+ on all Windows systems.
+
+ \section2 Typical Compile-Time Problems
+
+ The compiler/linker errors listed are based on those issued by the
+ Microsoft Visual C++ 6.0 compiler.
+
+ \section3 "No overloaded function takes 2 parameters"
+
+ When the error occurs in code that uses the QAXFACTORY_DEFAULT()
+ macro, the widget class had no constructor that can be used by the
+ default factory. Either add a standard widget constructor or
+ implement a custom factory that doesn't require one.
+
+ When the error occurs in code that uses the QAXFACTORY_EXPORT()
+ macro, the QAxFactory subclass had no appropriate constructor.
+ Provide a public class constructor like
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 10
+
+ for your factory class.
+
+ \section3 "Syntax error: bad suffix on number"
+
+ The unique identifiers have not been passed as strings into the
+ QAXFACTORY_EXPORT() or QAXFACTORY_DEFAULT() macro.
+
+ \section3 "Unresolved external symbol _ucm_instantiate"
+
+ The server does not export an implementation of a QAxFactory. Use
+ the QAXFACTORY_EXPORT() macro in one of the project's
+ implementation files to instantiate and export a factory, or use
+ the QAXFACTORY_DEFAULT() macro to use the default factory.
+
+ \section3 "_ucm_initialize already defined in ..."
+
+ The server exports more than one implementation of a QAxFactory,
+ or exports the same implementation twice. If you use the default
+ factory, the QAXFACTORY_DEFAULT() macro must only be used once in
+ the project. Use a custom QAxFactory implementation and the
+ QAXFACTORY_EXPORT() macro if the server provides multiple ActiveX
+ controls.
+
+ \section2 Distributing QAxServer Binaries
+
+ ActiveX servers written with Qt can use Qt either as a shared
+ library, or have Qt linked statically into the binary. Both ways
+ will produce rather large packages (either the server binary
+ itself becomes large, or you have to ship the Qt DLL).
+
+ \section3 Installing Stand-Alone Servers
+
+ When your ActiveX server can also run as a stand-alone application,
+ run the server executable with the \c -regserver command line
+ parameter after installing the executable on the target system.
+ After that the controls provided by the server will be available to
+ ActiveX clients.
+
+ \section3 Installing In-Process Servers
+
+ When your ActiveX server is part of an installation package, use the
+ \c regsvr32 tool provided by Microsoft to register the controls on
+ the target system. If this tool is not present, load the DLL into
+ your installer process, resolve the \c DllRegisterServer symbol and
+ call the function:
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 11
+
+ \section3 Distributing Servers over the Internet
+
+ If you want to use controls in your server in web-pages you need to
+ make the server available to the browser used to view your page, and
+ you need to specify the location of the server package in your page.
+
+ To specify the location of a server, use the CODEBASE attribute in
+ the OBJECT tag of your web-site. The value can point to the server
+ file itself, to an INF file listing other files the server requires
+ (e.g. the Qt DLL), or a compressed CAB archive.
+
+ INF and CAB files are documented in almost every book available about
+ ActiveX and COM programming as well as in the MSDN library and various
+ other Online resources. The examples include INF files that can be used
+ to build CAB archives:
+
+ \snippet examples/activeqt/simple/simple.inf 0
+
+ The CABARC tool from Microsoft can easily generate CAB archives:
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 12
+
+ The INF files assume a static build of Qt, so no dependencies to other DLLs
+ are listed in the INF files. To distribute an ActiveX server depending on
+ DLLs you must add the dependencies, and provide the library files
+ with the archive.
+
+ \section1 Using the Controls
+
+ To use the ActiveX controls, e.g. to embed them in a web page, use
+ the \c <object> HTML tag.
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 13
+
+ To initialize the control's properties, use
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 14
+
+ If the web browser supports scripting use JavaScript, VBScript
+ and forms to script the control. The
+ \l{ActiveQt Examples} include demonstration HTML pages for the example
+ controls.
+
+ \section2 Supported and Unsupported ActiveX Clients
+
+ The following is largly based on our own experiements with ActiveX
+ controls and client applications, and is by no means complete.
+
+ \section3 Supported Clients
+
+ These standard applications work with ActiveX controls developed with
+ ActiveQt. Note that some clients support only in-process controls.
+
+ \list
+ \o Internet Explorer
+ \o Microsoft ActiveX Control Test Container
+ \o Microsoft Visual Studio 6.0
+ \o Microsoft Visual Studio.NET/2003
+ \o Microsoft Visual Basic 6.0
+ \o MFC- and ATL-based containers
+ \o Sybase PowerBuilder
+ \o ActiveQt based containers
+ \endlist
+
+ Microsoft Office applications are supported, but you need to register
+ the controls as "Insertable" objects. Reimplement QAxFactory::registerClass
+ to add this attribute to the COM class, or set the "Insertable" class info
+ for your class to "yes" using the Q_CLASSINFO macro.
+
+ \section3 Unsupported Clients
+
+ We have not managed to make ActiveQt based COM objects work with the
+ following client applications.
+
+ \list
+ \o Borland C++ Builder (Versions 5 and 6)
+ \o Borland Delphi
+ \endlist
+
+ \section2 Typical Runtime Errors
+
+ \section3 The Server Does Not Respond
+
+ If the system is unable to start the server (check with the task
+ manager whether the server runs a process), make sure that no DLL
+ the server depends on is missing from the system path (e.g. the Qt
+ DLL!). Use a dependency walker to view all dependencies of the server
+ binary.
+
+ If the server runs (e.g. the task manager lists a process), see
+ the following section for information on debugging your server.
+
+ \section3 The Object Cannot Be Created
+
+ If the server could be built and registered correctly during the build
+ process, but the object cannot be initiliazed e.g. by the OLE/COM Object
+ Viewer application, make sure that no DLL the server depends on is
+ missing from the system path (e.g. the Qt DLL). Use a dependency walker
+ to view all dependencies of the server binary.
+
+ If the server runs, see the following section for information on
+ debugging your server.
+
+ \section2 Debugging Runtime Errors
+
+ To debug an in-process server in Visual Studio, set the server project
+ as the active project, and specify a client "executable for debug
+ session" in the project settings (e.g. use the ActiveX Test Container).
+ You can set breakpoints in your code, and also step into ActiveQt and
+ Qt code if you installed the debug version.
+
+ To debug an executable server, run the application in a debugger
+ and start with the command line parameter \c -activex. Then start
+ your client and create an instance of your ActiveX control. COM
+ will use the existing process for the next client trying to create
+ an ActiveX control.
+
+ \section1 Class Information and Tuning
+
+ To provide attributes for each COM class, use the Q_CLASSINFO macro, which is part of
+ Qt's meta object system.
+
+ \table
+ \header
+ \o Key
+ \o Meaning of value
+ \row
+ \o Version
+ \o The version of the class (1.0 is default)
+ \row
+ \o Description
+ \o A string describing the class.
+ \row
+ \o ClassID
+ \o The class ID.
+ You must reimplement QAxFactory::classID if not specified.
+ \row
+ \o InterfaceID
+ \o The interface ID.
+ You must reimplement QAxFactory::interfaceID if not specified.
+ \row
+ \o EventsID
+ \o The event interface ID.
+ No signals are exposed as COM events if not specified.
+ \row
+ \o DefaultProperty
+ \o The property specified represents the default property of this class.
+ Ie. the default property of a push button would be "text".
+ \row
+ \o DefaultSignal
+ \o The signal specified respresents the default signal of this class.
+ Ie. the default signal of a push button would be "clicked".
+ \row
+ \o LicenseKey
+ \o Object creation requires the specified license key. The key can be
+ empty to require a licensed machine. By default classes are not
+ licensed. Also see the following section.
+ \row
+ \o StockEvents
+ \o Objects expose stock events if value is "yes".
+ See \l QAxFactory::hasStockEvents()
+ \row
+ \o ToSuperClass
+ \o Objects expose functionality of all super-classes up to and
+ including the class name in value.
+ See \l QAxFactory::exposeToSuperClass()
+ \row
+ \o Insertable
+ \o If the value is "yes" the class is registered to be "Insertable"
+ and will be listed in OLE 2 containers (ie. Microsoft Office). This
+ attribute is not be set by default.
+ \row
+ \o Aggregatable
+ \o If the value is "no" the class does not support aggregation. By
+ default aggregation is supported.
+ \row
+ \o Creatable
+ \o If the value is "no" the class cannot be created by the client,
+ and is only available through the API of another class (ie. the
+ class is a sub-type).
+ \row
+ \o RegisterObject
+ \o If the value is "yes" objects of this class are registered with
+ OLE and accessible from the running object table (ie. clients
+ can connect to an already running instance of this class). This
+ attribute is only supported in out-of-process servers.
+ \row
+ \o MIME
+ \o The object can handle data and files of the format specified in the
+ value. The value has the format mime:extension:description. Multiple
+ formats are separated by a semicolon.
+ \row
+ \o CoClassAlias
+ \o The classname used in the generated IDL and in the registry. This is
+ esp. useful for C++ classes that live in a namespace - by default,
+ ActiveQt just removes the "::" to make the IDL compile.
+ \endtable
+
+ Note that both keys and values are case sensitive.
+
+ The following declares version 2.0 of a class that exposes only its
+ own API, and is available in the "Insert Objects" dialog of Microsoft
+ Office applications.
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 15
+
+ \section2 Developing Licensed Components
+
+ If you develop components you might want to control who is able to instantiate
+ those components. Since the server binary can be shipped to and registered on
+ any client machine it is possible for anybody to use those components in his
+ own software.
+
+ Licensing components can be done using a variety of techniques, e.g. the code
+ creating the control can provide a license key, or the machine on which the
+ control is supposed to run needs to be licensed.
+
+ To mark a Qt class as licensed specify a "LicenseKey" using the
+ Q_CLASSINFO() macro.
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 16
+
+ The key is required to be able to create an instance of \c MyLicensedControl
+ on a machine that is not licensed itself. The licensed developer can now
+ redistributes the server binary with his application, which creates the control
+ using the value of "LicenseKey", while users of the application cannot create
+ the control without the license key.
+
+ If a single license key for the control is not sufficient (ie. you want
+ differnet developers to receive different license keys) you can specify an
+ empty key to indicate that the control requires a license, and reimplement
+ \l QAxFactory::validateLicenseKey() to verify that a license exists on the
+ system (ie. through a license file).
+
+ \section2 More Interfaces
+
+ ActiveX controls provided by ActiveQt servers support a minimal set of COM
+ interfaces to implement the OLE specifications. When the ActiveX class inherits
+ from the QAxBindable class it can also implement additional COM interfaces.
+
+ Create a new subclass of QAxAggregated and use multiple inheritance
+ to subclass additional COM interface classes.
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 17
+
+ Reimplement the QAxAggregated::queryInterface() function to
+ support the additional COM interfaces.
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 18
+
+ Since \c ISomeCOMInterface is a subclass of \c IUnknown you will
+ have to implement the \c QueryInterface(), \c AddRef(), and \c
+ Release() functions. Use the QAXAGG_IUNKNOWN macro in your
+ class definition to do that. If you implement the \c IUnknown
+ functions manually, delegate the calls to the interface pointer
+ returned by the QAxAggregated::controllingUnknown() function,
+ e.g.
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 19
+
+ Do not support the \c IUnknown interface itself in your
+ \l{QAxAggregated::queryInterface()}{queryInterface()}
+ implementation.
+
+ Implement the methods of the COM interfaces, and use QAxAggregated::object()
+ if you need to make calls to the QObject subclass implementing the control.
+
+ In your QAxBindable subclass, implement
+ QAxBindable::createAggregate() to return a new object of the
+ QAxAggregated subclass.
+
+ \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 20
+*/
diff --git a/doc/src/frameworks-technologies/activeqt.qdoc b/doc/src/frameworks-technologies/activeqt.qdoc
new file mode 100644
index 000000000..a0c009f6c
--- /dev/null
+++ b/doc/src/frameworks-technologies/activeqt.qdoc
@@ -0,0 +1,100 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group activeqt-tools
+ \title Tools for ActiveQt
+ \brief Tools to help integrate Qt applications with ActiveX components.
+
+ These tools provide support for integrating Qt with ActiveX components.
+
+ \generatelist{related}
+
+ \sa {ActiveQt Framework}
+*/
+
+/*!
+ \page activeqt.html
+ \title ActiveQt Framework
+ \brief An overview of Qt's ActiveX and COM integration on Windows.
+
+ \ingroup platform-specific
+ \keyword ActiveQt
+
+ Qt's ActiveX and COM support allows Qt for Windows developers to:
+
+ \list 1
+ \o Access and use ActiveX controls and COM objects provided by any
+ ActiveX server in their Qt applications.
+ \o Make their Qt applications available as COM servers, with
+ any number of Qt objects and widgets as COM objects and ActiveX
+ controls.
+ \endlist
+
+ The ActiveQt framework consists of two modules:
+
+ \list
+ \o The \l QAxContainer module is a static
+ library implementing QObject and QWidget subclasses, QAxObject and
+ QAxWidget, that act as containers for COM objects and ActiveX
+ controls.
+ \o The \l QAxServer module is a static library that implements
+ functionality for in-process and executable COM servers. This
+ module provides the QAxAggregated, QAxBindable and QAxFactory
+ classes.
+ \endlist
+
+ To build the static libraries, change into the \c activeqt directory
+ (usually \c QTDIR/src/activeqt), and run \c qmake and your make
+ tool in both the \c container and the \c control subdirectory.
+ The libraries \c qaxcontainer.lib and \c qaxserver.lib will be linked
+ into \c QTDIR/lib.
+
+ If you are using a shared configuration of Qt enter the \c plugin
+ subdirectory and run \c qmake and your make tool to build a
+ plugin that integrates the QAxContainer module into \l{Qt
+ Designer}.
+
+ The ActiveQt modules are part of the \l{Qt Full Framework Edition} and
+ the \l{Open Source Versions of Qt}.
+
+ \sa {QAxContainer Module}, {QAxServer Module}
+*/
diff --git a/doc/src/frameworks-technologies/animation.qdoc b/doc/src/frameworks-technologies/animation.qdoc
new file mode 100644
index 000000000..cd6e3046c
--- /dev/null
+++ b/doc/src/frameworks-technologies/animation.qdoc
@@ -0,0 +1,377 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group animation
+ \title Animation Framework
+*/
+
+/*!
+ \page animation-overview.html
+ \title The Animation Framework
+
+ \brief An overview of the Animation Framework
+
+ \ingroup frameworks-technologies
+
+ \keyword Animation
+
+ The animation framework is part of the Kinetic project, and aims
+ to provide an easy way for creating animated and smooth GUI's. By
+ animating Qt properties, the framework provides great freedom for
+ animating widgets and other \l{QObject}s. The framework can also
+ be used with the Graphics View framework.
+
+ In this overview, we explain the basics of its architecture. We
+ also show examples of the most common techniques that the
+ framework allows for animating QObjects and graphics items.
+
+ \tableofcontents
+
+ \section1 The Animation Architecture
+
+ We will in this section take a high-level look at the animation
+ framework's architecture and how it is used to animate Qt
+ properties. The following diagram shows the most important classes
+ in the animation framework.
+
+ \image animations-architecture.png
+
+ The animation framework foundation consists of the base class
+ QAbstractAnimation, and its two subclasses QVariantAnimation and
+ QAnimationGroup. QAbstractAnimation is the ancestor of all
+ animations. It represents basic properties that are common for all
+ animations in the framework; notably, the ability to start, stop,
+ and pause an animation. It is also receives the time change
+ notifications.
+
+ The animation framework further provides the QPropertyAnimation
+ class, which inherits QVariantAnimation and performs animation of
+ a Qt property, which is part of Qt's \l{Meta-Object
+ System}{meta-object system}. The class performs an interpolation
+ over the property using an easing curve. So when you want to
+ animate a value, you can declare it as a property and make your
+ class a QObject. Note that this gives us great freedom in
+ animating already existing widgets and other \l{QObject}s.
+
+ Complex animations can be constructed by building a tree structure
+ of \l{QAbstractAnimation}s. The tree is built by using
+ \l{QAnimationGroup}s, which function as containers for other
+ animations. Note also that the groups are subclasses of
+ QAbstractAnimation, so groups can themselves contain other groups.
+
+ The animation framework can be used on its own, but is also
+ designed to be part of the state machine framework (See the
+ \l{The State Machine Framework}{state machine framework} for an
+ introduction to the Qt state machine). The state machine provides
+ a special state that can play an animation. A QState can also set
+ properties when the state is entered or exited, and this special
+ animation state will interpolate between these values when given a
+ QPropertyAnimation. We will look more closely at this later.
+
+ Behind the scenes, the animations are controlled by a global
+ timer, which sends \l{QAbstractAnimation::updateCurrentTime()}{updates} to
+ all animations that are playing.
+
+ For detailed descriptions of the classes' function and roles in
+ the framework, please look up their class descriptions.
+
+ \section1 Classes in the Animation Framework
+
+ These classes provide a framework for creating both simple and complex
+ animations.
+
+ \annotatedlist animation
+
+ \section1 Animating Qt Properties
+
+ As mentioned in the previous section, the QPropertyAnimation class
+ can interpolate over Qt properties. It is this class that should
+ be used for animation of values; in fact, its superclass,
+ QVariantAnimation, is an abstract class, and cannot be used
+ directly.
+
+ A major reason we chose to animate Qt properties is that it
+ presents us with freedom to animate already existing classes in
+ the Qt API. Notably, the QWidget class (which we can also embed in
+ a QGraphicsView) has properties for its bounds, colors, etc.
+ Let's look at a small example:
+
+ \code
+ QPushButton button("Animated Button");
+ button.show();
+
+ QPropertyAnimation animation(&button, "geometry");
+ animation.setDuration(10000);
+ animation.setStartValue(QRect(0, 0, 100, 30));
+ animation.setEndValue(QRect(250, 250, 100, 30));
+
+ animation.start();
+ \endcode
+
+ This code will move \c button from the top left corner of the
+ screen to the position (250, 250) in 10 seconds (10000 milliseconds).
+
+ The example above will do a linear interpolation between the
+ start and end value. It is also possible to set values
+ situated between the start and end value. The interpolation
+ will then go by these points.
+
+ \code
+ QPushButton button("Animated Button");
+ button.show();
+
+ QPropertyAnimation animation(&button, "geometry");
+ animation.setDuration(10000);
+
+ animation.setKeyValueAt(0, QRect(0, 0, 100, 30));
+ animation.setKeyValueAt(0.8, QRect(250, 250, 100, 30));
+ animation.setKeyValueAt(1, QRect(0, 0, 100, 30));
+
+ animation.start();
+ \endcode
+
+ In this example, the animation will take the button to (250, 250)
+ in 8 seconds, and then move it back to its original position in
+ the remaining 2 seconds. The movement will be linearly
+ interpolated between these points.
+
+ You also have the possibility to animate values of a QObject
+ that is not declared as a Qt property. The only requirement is
+ that this value has a setter. You can then subclass the class
+ containing the value and declare a property that uses this setter.
+ Note that each Qt property requires a getter, so you will need to
+ provide a getter yourself if this is not defined.
+
+ \code
+ class MyGraphicsRectItem : public QObject, public QGraphicsRectItem
+ {
+ Q_OBJECT
+ Q_PROPERTY(QRectF geometry READ geometry WRITE setGeometry)
+ };
+ \endcode
+
+ In the above code example, we subclass QGraphicsRectItem and
+ define a geometry property. We can now animate the widgets
+ geometry even if QGraphicsRectItem does not provide the geometry
+ property.
+
+ For a general introduction to the Qt property system, see its
+ \l{Qt's Property System}{overview}.
+
+ \section1 Animations and the Graphics View Framework
+
+ When you want to animate \l{QGraphicsItem}s, you also use
+ QPropertyAnimation. However, QGraphicsItem does not inherit QObject.
+ A good solution is to subclass the graphics item you wish to animate.
+ This class will then also inherit QObject.
+ This way, QPropertyAnimation can be used for \l{QGraphicsItem}s.
+ The example below shows how this is done. Another possibility is
+ to inherit QGraphicsWidget, which already is a QObject.
+
+ \code
+ class Pixmap : public QObject, public QGraphicsPixmapItem
+ {
+ Q_OBJECT
+ Q_PROPERTY(QPointF pos READ pos WRITE setPos)
+ ...
+ \endcode
+
+ As described in the previous section, we need to define
+ properties that we wish to animate.
+
+ Note that QObject must be the first class inherited as the
+ meta-object system demands this.
+
+ \section1 Easing Curves
+
+ As mentioned, QPropertyAnimation performs an interpolation between
+ the start and end property value. In addition to adding more key
+ values to the animation, you can also use an easing curve. Easing
+ curves describe a function that controls how the speed of the
+ interpolation between 0 and 1 should be, and are useful if you
+ want to control the speed of an animation without changing the
+ path of the interpolation.
+
+ \code
+ QPushButton button("Animated Button");
+ button.show();
+
+ QPropertyAnimation animation(&button, "geometry");
+ animation.setDuration(3000);
+ animation.setStartValue(QRect(0, 0, 100, 30));
+ animation.setEndValue(QRect(250, 250, 100, 30));
+
+ animation.setEasingCurve(QEasingCurve::OutBounce);
+
+ animation.start();
+ \endcode
+
+ Here the animation will follow a curve that makes it bounce like a
+ ball as if it was dropped from the start to the end position.
+ QEasingCurve has a large collection of curves for you to choose
+ from. These are defined by the QEasingCurve::Type enum. If you are
+ in need of another curve, you can also implement one yourself, and
+ register it with QEasingCurve.
+
+ \omit Drop this for the first Lab release
+ (Example of custom easing curve (without the actual impl of
+ the function I expect)
+ \endomit
+
+ \section1 Putting Animations Together
+
+ An application will often contain more than one animation. For
+ instance, you might want to move more than one graphics item
+ simultaneously or move them in sequence after each other.
+
+ The subclasses of QAnimationGroup (QSequentialAnimationGroup and
+ QParallelAnimationGroup) are containers for other animations so
+ that these animations can be animated either in sequence or
+ parallel. The QAnimationGroup is an example of an animation that
+ does not animate properties, but it gets notified of time changes
+ periodically. This enables it to forward those time changes to its
+ contained animations, and thereby controlling when its animations
+ are played.
+
+ Let's look at code examples that use both
+ QSequentialAnimationGroup and QParallelAnimationGroup, starting
+ off with the latter.
+
+ \code
+ QPushButton *bonnie = new QPushButton("Bonnie");
+ bonnie->show();
+
+ QPushButton *clyde = new QPushButton("Clyde");
+ clyde->show();
+
+ QPropertyAnimation *anim1 = new QPropertyAnimation(bonnie, "geometry");
+ // Set up anim1
+
+ QPropertyAnimation *anim2 = new QPropertyAnimation(clyde, "geometry");
+ // Set up anim2
+
+ QParallelAnimationGroup *group = new QParallelAnimationGroup;
+ group->addAnimation(anim1);
+ group->addAnimation(anim2);
+
+ group->start();
+ \endcode
+
+ A parallel group plays more than one animation at the same time.
+ Calling its \l{QAbstractAnimation::}{start()} function will start
+ all animations it governs.
+
+ \code
+ QPushButton button("Animated Button");
+ button.show();
+
+ QPropertyAnimation anim1(&button, "geometry");
+ anim1.setDuration(3000);
+ anim1.setStartValue(QRect(0, 0, 100, 30));
+ anim1.setEndValue(QRect(500, 500, 100, 30));
+
+ QPropertyAnimation anim2(&button, "geometry");
+ anim2.setDuration(3000);
+ anim2.setStartValue(QRect(500, 500, 100, 30));
+ anim2.setEndValue(QRect(1000, 500, 100, 30));
+
+ QSequentialAnimationGroup group;
+
+ group.addAnimation(&anim1);
+ group.addAnimation(&anim2);
+
+ group.start();
+ \endcode
+
+ As you no doubt have guessed, QSequentialAnimationGroup plays
+ its animations in sequence. It starts the next animation in
+ the list after the previous is finished.
+
+ Since an animation group is an animation itself, you can add
+ it to another group. This way, you can build a tree structure
+ of animations which specifies when the animations are played
+ in relation to each other.
+
+ \section1 Animations and States
+
+ When using a \l{The State Machine Framework}{state machine}, we
+ can associate one or more animations to a transition between states
+ using a QSignalTransition or QEventTransition class. These classes
+ are both derived from QAbstractTransition, which defines the
+ convenience function \l{QAbstractTransition::}{addAnimation()} that
+ enables the appending of one or more animations triggered when the
+ transition occurs.
+
+ We also have the possibility to associate properties with the
+ states rather than setting the start and end values ourselves.
+ Below is a complete code example that animates the geometry of a
+ QPushButton.
+
+ \code
+ QPushButton *button = new QPushButton("Animated Button");
+ button->show();
+
+ QStateMachine *machine = new QStateMachine;
+
+ QState *state1 = new QState(machine->rootState());
+ state1->assignProperty(button, "geometry", QRect(0, 0, 100, 30));
+ machine->setInitialState(state1);
+
+ QState *state2 = new QState(machine->rootState());
+ state2->assignProperty(button, "geometry", QRect(250, 250, 100, 30));
+
+ QSignalTransition *transition1 = state1->addTransition(button,
+ SIGNAL(clicked()), state2);
+ transition1->addAnimation(new QPropertyAnimation(button, "geometry"));
+
+ QSignalTransition *transition2 = state2->addTransition(button,
+ SIGNAL(clicked()), state1);
+ transition2->addAnimation(new QPropertyAnimation(button, "geometry"));
+
+ machine->start();
+ \endcode
+
+ For a more comprehensive example of how to use the state machine
+ framework for animations, see the states example (it lives in the
+ \c{examples/animation/states} directory).
+*/
+
diff --git a/doc/src/frameworks-technologies/containers.qdoc b/doc/src/frameworks-technologies/containers.qdoc
new file mode 100644
index 000000000..0ac973208
--- /dev/null
+++ b/doc/src/frameworks-technologies/containers.qdoc
@@ -0,0 +1,813 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group tools
+ \title Non-GUI Classes
+ \ingroup groups
+
+ \brief Collection classes such as list, queue, stack and string, along
+ with other classes that can be used without needing QApplication.
+
+ The non-GUI classes are general-purpose collection and string classes
+ that may be used independently of the GUI classes.
+
+ In particular, these classes do not depend on QApplication at all,
+ and so can be used in non-GUI programs.
+
+*/
+
+/*!
+ \page containers.html
+ \title Generic Containers
+ \ingroup frameworks-technologies
+ \ingroup groups
+ \keyword container class
+ \keyword container classes
+
+ \brief Qt's template-based container classes.
+
+ \tableofcontents
+
+ \section1 Introduction
+
+ The Qt library provides a set of general purpose template-based
+ container classes. These classes can be used to store items of a
+ specified type. For example, if you need a resizable array of
+ \l{QString}s, use QVector<QString>.
+
+ These container classes are designed to be lighter, safer, and
+ easier to use than the STL containers. If you are unfamiliar with
+ the STL, or prefer to do things the "Qt way", you can use these
+ classes instead of the STL classes.
+
+ The container classes are \l{implicitly shared}, they are
+ \l{reentrant}, and they are optimized for speed, low memory
+ consumption, and minimal inline code expansion, resulting in
+ smaller executables. In addition, they are \l{thread-safe}
+ in situations where they are used as read-only containers
+ by all threads used to access them.
+
+ For traversing the items stored in a container, you can use one
+ of two types of iterators: \l{Java-style iterators} and
+ \l{STL-style iterators}. The Java-style iterators are easier to
+ use and provide high-level functionality, whereas the STL-style
+ iterators are slightly more efficient and can be used together
+ with Qt's and STL's \l{generic algorithms}.
+
+ Qt also offers a \l{foreach} keyword that make it very
+ easy to iterate over all the items stored in a container.
+
+ \section1 The Container Classes
+
+ Qt provides the following sequential containers: QList,
+ QLinkedList, QVector, QStack, and QQueue. For most
+ applications, QList is the best type to use. Although it is
+ implemented as an array-list, it provides very fast prepends and
+ appends. If you really need a linked-list, use QLinkedList; if you
+ want your items to occupy consecutive memory locations, use QVector.
+ QStack and QQueue are convenience classes that provide LIFO and
+ FIFO semantics.
+
+ Qt also provides these associative containers: QMap,
+ QMultiMap, QHash, QMultiHash, and QSet. The "Multi" containers
+ conveniently support multiple values associated with a single
+ key. The "Hash" containers provide faster lookup by using a hash
+ function instead of a binary search on a sorted set.
+
+ As special cases, the QCache and QContiguousCache classes provide
+ efficient hash-lookup of objects in a limited cache storage.
+
+ \table
+ \header \o Class \o Summary
+
+ \row \o \l{QList}<T>
+ \o This is by far the most commonly used container class. It
+ stores a list of values of a given type (T) that can be accessed
+ by index. Internally, the QList is implemented using an array,
+ ensuring that index-based access is very fast.
+
+ Items can be added at either end of the list using
+ QList::append() and QList::prepend(), or they can be inserted in
+ the middle using QList::insert(). More than any other container
+ class, QList is highly optimized to expand to as little code as
+ possible in the executable. QStringList inherits from
+ QList<QString>.
+
+ \row \o \l{QLinkedList}<T>
+ \o This is similar to QList, except that it uses
+ iterators rather than integer indexes to access items. It also
+ provides better performance than QList when inserting in the
+ middle of a huge list, and it has nicer iterator semantics.
+ (Iterators pointing to an item in a QLinkedList remain valid as
+ long as the item exists, whereas iterators to a QList can become
+ invalid after any insertion or removal.)
+
+ \row \o \l{QVector}<T>
+ \o This stores an array of values of a given type at adjacent
+ positions in memory. Inserting at the front or in the middle of
+ a vector can be quite slow, because it can lead to large numbers
+ of items having to be moved by one position in memory.
+
+ \row \o \l{QStack}<T>
+ \o This is a convenience subclass of QVector that provides
+ "last in, first out" (LIFO) semantics. It adds the following
+ functions to those already present in QVector:
+ \l{QStack::push()}{push()}, \l{QStack::pop()}{pop()},
+ and \l{QStack::top()}{top()}.
+
+ \row \o \l{QQueue}<T>
+ \o This is a convenience subclass of QList that provides
+ "first in, first out" (FIFO) semantics. It adds the following
+ functions to those already present in QList:
+ \l{QQueue::enqueue()}{enqueue()},
+ \l{QQueue::dequeue()}{dequeue()}, and \l{QQueue::head()}{head()}.
+
+ \row \o \l{QSet}<T>
+ \o This provides a single-valued mathematical set with fast
+ lookups.
+
+ \row \o \l{QMap}<Key, T>
+ \o This provides a dictionary (associative array) that maps keys
+ of type Key to values of type T. Normally each key is associated
+ with a single value. QMap stores its data in Key order; if order
+ doesn't matter QHash is a faster alternative.
+
+ \row \o \l{QMultiMap}<Key, T>
+ \o This is a convenience subclass of QMap that provides a nice
+ interface for multi-valued maps, i.e. maps where one key can be
+ associated with multiple values.
+
+ \row \o \l{QHash}<Key, T>
+ \o This has almost the same API as QMap, but provides
+ significantly faster lookups. QHash stores its data in an
+ arbitrary order.
+
+ \row \o \l{QMultiHash}<Key, T>
+ \o This is a convenience subclass of QHash that
+ provides a nice interface for multi-valued hashes.
+
+ \endtable
+
+ Containers can be nested. For example, it is perfectly possible
+ to use a QMap<QString, QList<int> >, where the key type is
+ QString and the value type QList<int>. The only pitfall is that
+ you must insert a space between the closing angle brackets (>);
+ otherwise the C++ compiler will misinterpret the two >'s as a
+ right-shift operator (>>) and report a syntax error.
+
+ The containers are defined in individual header files with the
+ same name as the container (e.g., \c <QLinkedList>). For
+ convenience, the containers are forward declared in \c
+ <QtContainerFwd>.
+
+ \keyword assignable data type
+ \keyword assignable data types
+
+ The values stored in the various containers can be of any
+ \e{assignable data type}. To qualify, a type must provide a
+ default constructor, a copy constructor, and an assignment
+ operator. This covers most data types you are likely to want to
+ store in a container, including basic types such as \c int and \c
+ double, pointer types, and Qt data types such as QString, QDate,
+ and QTime, but it doesn't cover QObject or any QObject subclass
+ (QWidget, QDialog, QTimer, etc.). If you attempt to instantiate a
+ QList<QWidget>, the compiler will complain that QWidget's copy
+ constructor and assignment operators are disabled. If you want to
+ store these kinds of objects in a container, store them as
+ pointers, for example as QList<QWidget *>.
+
+ Here's an example custom data type that meets the requirement of
+ an assignable data type:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 0
+
+ If we don't provide a copy constructor or an assignment operator,
+ C++ provides a default implementation that performs a
+ member-by-member copy. In the example above, that would have been
+ sufficient. Also, if you don't provide any constructors, C++
+ provides a default constructor that initializes its member using
+ default constructors. Although it doesn't provide any
+ explicit constructors or assignment operator, the following data
+ type can be stored in a container:
+
+ \snippet doc/src/snippets/streaming/main.cpp 0
+
+ Some containers have additional requirements for the data types
+ they can store. For example, the Key type of a QMap<Key, T> must
+ provide \c operator<(). Such special requirements are documented
+ in a class's detailed description. In some cases, specific
+ functions have special requirements; these are described on a
+ per-function basis. The compiler will always emit an error if a
+ requirement isn't met.
+
+ Qt's containers provide operator<<() and operator>>() so that they
+ can easily be read and written using a QDataStream. This means
+ that the data types stored in the container must also support
+ operator<<() and operator>>(). Providing such support is
+ straightforward; here's how we could do it for the Movie struct
+ above:
+
+ \snippet doc/src/snippets/streaming/main.cpp 1
+ \codeline
+ \snippet doc/src/snippets/streaming/main.cpp 2
+
+ \keyword default-constructed values
+
+ The documentation of certain container class functions refer to
+ \e{default-constructed values}; for example, QVector
+ automatically initializes its items with default-constructed
+ values, and QMap::value() returns a default-constructed value if
+ the specified key isn't in the map. For most value types, this
+ simply means that a value is created using the default
+ constructor (e.g. an empty string for QString). But for primitive
+ types like \c{int} and \c{double}, as well as for pointer types,
+ the C++ language doesn't specify any initialization; in those
+ cases, Qt's containers automatically initialize the value to 0.
+
+ \section1 The Iterator Classes
+
+ Iterators provide a uniform means to access items in a container.
+ Qt's container classes provide two types of iterators: Java-style
+ iterators and STL-style iterators. Iterators of both types are
+ invalidated when the data in the container is modified or detached
+ from \l{Implicit Sharing}{implicitly shared copies} due to a call
+ to a non-const member function.
+
+ \section2 Java-Style Iterators
+
+ The Java-style iterators are new in Qt 4 and are the standard
+ ones used in Qt applications. They are more convenient to use than
+ the STL-style iterators, at the price of being slightly less
+ efficient. Their API is modelled on Java's iterator classes.
+
+ For each container class, there are two Java-style iterator data
+ types: one that provides read-only access and one that provides
+ read-write access.
+
+ \table
+ \header \o Containers \o Read-only iterator
+ \o Read-write iterator
+ \row \o QList<T>, QQueue<T> \o QListIterator<T>
+ \o QMutableListIterator<T>
+ \row \o QLinkedList<T> \o QLinkedListIterator<T>
+ \o QMutableLinkedListIterator<T>
+ \row \o QVector<T>, QStack<T> \o QVectorIterator<T>
+ \o QMutableVectorIterator<T>
+ \row \o QSet<T> \o QSetIterator<T>
+ \o QMutableSetIterator<T>
+ \row \o QMap<Key, T>, QMultiMap<Key, T> \o QMapIterator<Key, T>
+ \o QMutableMapIterator<Key, T>
+ \row \o QHash<Key, T>, QMultiHash<Key, T> \o QHashIterator<Key, T>
+ \o QMutableHashIterator<Key, T>
+ \endtable
+
+ In this discussion, we will concentrate on QList and QMap. The
+ iterator types for QLinkedList, QVector, and QSet have exactly
+ the same interface as QList's iterators; similarly, the iterator
+ types for QHash have the same interface as QMap's iterators.
+
+ Unlike STL-style iterators (covered \l{STL-style
+ iterators}{below}), Java-style iterators point \e between items
+ rather than directly \e at items. For this reason, they are
+ either pointing to the very beginning of the container (before
+ the first item), at the very end of the container (after the last
+ item), or between two items. The diagram below shows the valid
+ iterator positions as red arrows for a list containing four
+ items:
+
+ \img javaiterators1.png
+
+ Here's a typical loop for iterating through all the elements of a
+ QList<QString> in order and printing them to the console:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 1
+
+ It works as follows: The QList to iterate over is passed to the
+ QListIterator constructor. At that point, the iterator is located
+ just in front of the first item in the list (before item "A").
+ Then we call \l{QListIterator::hasNext()}{hasNext()} to
+ check whether there is an item after the iterator. If there is, we
+ call \l{QListIterator::next()}{next()} to jump over that
+ item. The next() function returns the item that it jumps over. For
+ a QList<QString>, that item is of type QString.
+
+ Here's how to iterate backward in a QList:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 2
+
+ The code is symmetric with iterating forward, except that we
+ start by calling \l{QListIterator::toBack()}{toBack()}
+ to move the iterator after the last item in the list.
+
+ The diagram below illustrates the effect of calling
+ \l{QListIterator::next()}{next()} and
+ \l{QListIterator::previous()}{previous()} on an iterator:
+
+ \img javaiterators2.png
+
+ The following table summarizes the QListIterator API:
+
+ \table
+ \header \o Function \o Behavior
+ \row \o \l{QListIterator::toFront()}{toFront()}
+ \o Moves the iterator to the front of the list (before the first item)
+ \row \o \l{QListIterator::toBack()}{toBack()}
+ \o Moves the iterator to the back of the list (after the last item)
+ \row \o \l{QListIterator::hasNext()}{hasNext()}
+ \o Returns true if the iterator isn't at the back of the list
+ \row \o \l{QListIterator::next()}{next()}
+ \o Returns the next item and advances the iterator by one position
+ \row \o \l{QListIterator::peekNext()}{peekNext()}
+ \o Returns the next item without moving the iterator
+ \row \o \l{QListIterator::hasPrevious()}{hasPrevious()}
+ \o Returns true if the iterator isn't at the front of the list
+ \row \o \l{QListIterator::previous()}{previous()}
+ \o Returns the previous item and moves the iterator back by one position
+ \row \o \l{QListIterator::peekPrevious()}{peekPrevious()}
+ \o Returns the previous item without moving the iterator
+ \endtable
+
+ QListIterator provides no functions to insert or remove items
+ from the list as we iterate. To accomplish this, you must use
+ QMutableListIterator. Here's an example where we remove all
+ odd numbers from a QList<int> using QMutableListIterator:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 3
+
+ The next() call in the loop is made every time. It jumps over the
+ next item in the list. The
+ \l{QMutableListIterator::remove()}{remove()} function removes the
+ last item that we jumped over from the list. The call to
+ \l{QMutableListIterator::remove()}{remove()} does not invalidate
+ the iterator, so it is safe to continue using it. This works just
+ as well when iterating backward:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 4
+
+ If we just want to modify the value of an existing item, we can
+ use \l{QMutableListIterator::setValue()}{setValue()}. In the code
+ below, we replace any value larger than 128 with 128:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 5
+
+ Just like \l{QMutableListIterator::remove()}{remove()},
+ \l{QMutableListIterator::setValue()}{setValue()} operates on the
+ last item that we jumped over. If we iterate forward, this is the
+ item just before the iterator; if we iterate backward, this is
+ the item just after the iterator.
+
+ The \l{QMutableListIterator::next()}{next()} function returns a
+ non-const reference to the item in the list. For simple
+ operations, we don't even need
+ \l{QMutableListIterator::setValue()}{setValue()}:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 6
+
+ As mentioned above, QLinkedList's, QVector's, and QSet's iterator
+ classes have exactly the same API as QList's. We will now turn to
+ QMapIterator, which is somewhat different because it iterates on
+ (key, value) pairs.
+
+ Like QListIterator, QMapIterator provides
+ \l{QMapIterator::toFront()}{toFront()},
+ \l{QMapIterator::toBack()}{toBack()},
+ \l{QMapIterator::hasNext()}{hasNext()},
+ \l{QMapIterator::next()}{next()},
+ \l{QMapIterator::peekNext()}{peekNext()},
+ \l{QMapIterator::hasPrevious()}{hasPrevious()},
+ \l{QMapIterator::previous()}{previous()}, and
+ \l{QMapIterator::peekPrevious()}{peekPrevious()}. The key and
+ value components are extracted by calling key() and value() on
+ the object returned by next(), peekNext(), previous(), or
+ peekPrevious().
+
+ The following example removes all (capital, country) pairs where
+ the capital's name ends with "City":
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 7
+
+ QMapIterator also provides a key() and a value() function that
+ operate directly on the iterator and that return the key and
+ value of the last item that the iterator jumped above. For
+ example, the following code copies the contents of a QMap into a
+ QHash:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 8
+
+ If we want to iterate through all the items with the same
+ value, we can use \l{QMapIterator::findNext()}{findNext()}
+ or \l{QMapIterator::findPrevious()}{findPrevious()}.
+ Here's an example where we remove all the items with a particular
+ value:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 9
+
+ \section2 STL-Style Iterators
+
+ STL-style iterators have been available since the release of Qt
+ 2.0. They are compatible with Qt's and STL's \l{generic
+ algorithms} and are optimized for speed.
+
+ For each container class, there are two STL-style iterator types:
+ one that provides read-only access and one that provides
+ read-write access. Read-only iterators should be used wherever
+ possible because they are faster than read-write iterators.
+
+ \table
+ \header \o Containers \o Read-only iterator
+ \o Read-write iterator
+ \row \o QList<T>, QQueue<T> \o QList<T>::const_iterator
+ \o QList<T>::iterator
+ \row \o QLinkedList<T> \o QLinkedList<T>::const_iterator
+ \o QLinkedList<T>::iterator
+ \row \o QVector<T>, QStack<T> \o QVector<T>::const_iterator
+ \o QVector<T>::iterator
+ \row \o QSet<T> \o QSet<T>::const_iterator
+ \o QSet<T>::iterator
+ \row \o QMap<Key, T>, QMultiMap<Key, T> \o QMap<Key, T>::const_iterator
+ \o QMap<Key, T>::iterator
+ \row \o QHash<Key, T>, QMultiHash<Key, T> \o QHash<Key, T>::const_iterator
+ \o QHash<Key, T>::iterator
+ \endtable
+
+ The API of the STL iterators is modelled on pointers in an array.
+ For example, the \c ++ operator advances the iterator to the next
+ item, and the \c * operator returns the item that the iterator
+ points to. In fact, for QVector and QStack, which store their
+ items at adjacent memory positions, the
+ \l{QVector::iterator}{iterator} type is just a typedef for \c{T *},
+ and the \l{QVector::iterator}{const_iterator} type is
+ just a typedef for \c{const T *}.
+
+ In this discussion, we will concentrate on QList and QMap. The
+ iterator types for QLinkedList, QVector, and QSet have exactly
+ the same interface as QList's iterators; similarly, the iterator
+ types for QHash have the same interface as QMap's iterators.
+
+ Here's a typical loop for iterating through all the elements of a
+ QList<QString> in order and converting them to lowercase:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 10
+
+ Unlike \l{Java-style iterators}, STL-style iterators point
+ directly at items. The begin() function of a container returns an
+ iterator that points to the first item in the container. The
+ end() function of a container returns an iterator to the
+ imaginary item one position past the last item in the container.
+ end() marks an invalid position; it must never be dereferenced.
+ It is typically used in a loop's break condition. If the list is
+ empty, begin() equals end(), so we never execute the loop.
+
+ The diagram below shows the valid iterator positions as red
+ arrows for a vector containing four items:
+
+ \img stliterators1.png
+
+ Iterating backward with an STL-style iterator requires us to
+ decrement the iterator \e before we access the item. This
+ requires a \c while loop:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 11
+
+ In the code snippets so far, we used the unary \c * operator to
+ retrieve the item (of type QString) stored at a certain iterator
+ position, and we then called QString::toLower() on it. Most C++
+ compilers also allow us to write \c{i->toLower()}, but some
+ don't.
+
+ For read-only access, you can use const_iterator, constBegin(),
+ and constEnd(). For example:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 12
+
+ The following table summarizes the STL-style iterators' API:
+
+ \table
+ \header \o Expression \o Behavior
+ \row \o \c{*i} \o Returns the current item
+ \row \o \c{++i} \o Advances the iterator to the next item
+ \row \o \c{i += n} \o Advances the iterator by \c n items
+ \row \o \c{--i} \o Moves the iterator back by one item
+ \row \o \c{i -= n} \o Moves the iterator back by \c n items
+ \row \o \c{i - j} \o Returns the number of items between iterators \c i and \c j
+ \endtable
+
+ The \c{++} and \c{--} operators are available both as prefix
+ (\c{++i}, \c{--i}) and postfix (\c{i++}, \c{i--}) operators. The
+ prefix versions modify the iterators and return a reference to
+ the modified iterator; the postfix versions take a copy of the
+ iterator before they modify it, and return that copy. In
+ expressions where the return value is ignored, we recommend that
+ you use the prefix operators (\c{++i}, \c{--i}), as these are
+ slightly faster.
+
+ For non-const iterator types, the return value of the unary \c{*}
+ operator can be used on the left side of the assignment operator.
+
+ For QMap and QHash, the \c{*} operator returns the value
+ component of an item. If you want to retrieve the key, call key()
+ on the iterator. For symmetry, the iterator types also provide a
+ value() function to retrieve the value. For example, here's how
+ we would print all items in a QMap to the console:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 13
+
+ Thanks to \l{implicit sharing}, it is very inexpensive for a
+ function to return a container per value. The Qt API contains
+ dozens of functions that return a QList or QStringList per value
+ (e.g., QSplitter::sizes()). If you want to iterate over these
+ using an STL iterator, you should always take a copy of the
+ container and iterate over the copy. For example:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 14
+
+ This problem doesn't occur with functions that return a const or
+ non-const reference to a container.
+
+ \l{Implicit sharing} has another consequence on STL-style
+ iterators: You must not take a copy of a container while
+ non-const iterators are active on that container. Java-style
+ iterators don't suffer from that limitation.
+
+ \keyword foreach
+ \section1 The foreach Keyword
+
+ If you just want to iterate over all the items in a container
+ in order, you can use Qt's \c foreach keyword. The keyword is a
+ Qt-specific addition to the C++ language, and is implemented
+ using the preprocessor.
+
+ Its syntax is: \c foreach (\e variable, \e container) \e
+ statement. For example, here's how to use \c foreach to iterate
+ over a QLinkedList<QString>:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 15
+
+ The \c foreach code is significantly shorter than the equivalent
+ code that uses iterators:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 16
+
+ Unless the data type contains a comma (e.g., \c{QPair<int,
+ int>}), the variable used for iteration can be defined within the
+ \c foreach statement:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 17
+
+ And like any other C++ loop construct, you can use braces around
+ the body of a \c foreach loop, and you can use \c break to leave
+ the loop:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 18
+
+ With QMap and QHash, \c foreach accesses the value component of
+ the (key, value) pairs. If you want to iterate over both the keys
+ and the values, you can use iterators (which are fastest), or you
+ can write code like this:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 19
+
+ For a multi-valued map:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 20
+
+ Qt automatically takes a copy of the container when it enters a
+ \c foreach loop. If you modify the container as you are
+ iterating, that won't affect the loop. (If you don't modify the
+ container, the copy still takes place, but thanks to \l{implicit
+ sharing} copying a container is very fast.) Similarly, declaring
+ the variable to be a non-const reference, in order to modify the
+ current item in the list will not work either.
+
+ In addition to \c foreach, Qt also provides a \c forever
+ pseudo-keyword for infinite loops:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 21
+
+ If you're worried about namespace pollution, you can disable
+ these macros by adding the following line to your \c .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 22
+
+ \section1 Other Container-Like Classes
+
+ Qt includes three template classes that resemble containers in
+ some respects. These classes don't provide iterators and cannot
+ be used with the \c foreach keyword.
+
+ \list
+ \o QVarLengthArray<T, Prealloc> provides a low-level
+ variable-length array. It can be used instead of QVector in
+ places where speed is particularly important.
+
+ \o QCache<Key, T> provides a cache to store objects of a certain
+ type T associated with keys of type Key.
+
+ \o QContiguousCache<T> provides an efficient way of caching data
+ that is typically accessed in a contiguous way.
+
+ \o QPair<T1, T2> stores a pair of elements.
+ \endlist
+
+ Additional non-template types that compete with Qt's template
+ containers are QBitArray, QByteArray, QString, and QStringList.
+
+ \section1 Algorithmic Complexity
+
+ Algorithmic complexity is concerned about how fast (or slow) each
+ function is as the number of items in the container grow. For
+ example, inserting an item in the middle of a QLinkedList is an
+ extremely fast operation, irrespective of the number of items
+ stored in the QLinkedList. On the other hand, inserting an item
+ in the middle of a QVector is potentially very expensive if the
+ QVector contains many items, since half of the items must be
+ moved one position in memory.
+
+ To describe algorithmic complexity, we use the following
+ terminology, based on the "big Oh" notation:
+
+ \keyword constant time
+ \keyword logarithmic time
+ \keyword linear time
+ \keyword linear-logarithmic time
+ \keyword quadratic time
+
+ \list
+ \o \bold{Constant time:} O(1). A function is said to run in constant
+ time if it requires the same amount of time no matter how many
+ items are present in the container. One example is
+ QLinkedList::insert().
+
+ \o \bold{Logarithmic time:} O(log \e n). A function that runs in
+ logarithmic time is a function whose running time is
+ proportional to the logarithm of the number of items in the
+ container. One example is qBinaryFind().
+
+ \o \bold{Linear time:} O(\e n). A function that runs in linear time
+ will execute in a time directly proportional to the number of
+ items stored in the container. One example is
+ QVector::insert().
+
+ \o \bold{Linear-logarithmic time:} O(\e{n} log \e n). A function
+ that runs in linear-logarithmic time is asymptotically slower
+ than a linear-time function, but faster than a quadratic-time
+ function.
+
+ \o \bold{Quadratic time:} O(\e{n}\unicode{178}). A quadratic-time function
+ executes in a time that is proportional to the square of the
+ number of items stored in the container.
+ \endlist
+
+ The following table summarizes the algorithmic complexity of Qt's
+ sequential container classes:
+
+ \table
+ \header \o \o Index lookup \o Insertion \o Prepending \o Appending
+ \row \o QLinkedList<T> \o O(\e n) \o O(1) \o O(1) \o O(1)
+ \row \o QList<T> \o O(1) \o O(n) \o Amort. O(1) \o Amort. O(1)
+ \row \o QVector<T> \o O(1) \o O(n) \o O(n) \o Amort. O(1)
+ \endtable
+
+ In the table, "Amort." stands for "amortized behavior". For
+ example, "Amort. O(1)" means that if you call the function
+ only once, you might get O(\e n) behavior, but if you call it
+ multiple times (e.g., \e n times), the average behavior will be
+ O(1).
+
+ The following table summarizes the algorithmic complexity of Qt's
+ associative containers and sets:
+
+ \table
+ \header \o{1,2} \o{2,1} Key lookup \o{2,1} Insertion
+ \header \o Average \o Worst case \o Average \o Worst case
+ \row \o QMap<Key, T> \o O(log \e n) \o O(log \e n) \o O(log \e n) \o O(log \e n)
+ \row \o QMultiMap<Key, T> \o O(log \e n) \o O(log \e n) \o O(log \e n) \o O(log \e n)
+ \row \o QHash<Key, T> \o Amort. O(1) \o O(\e n) \o Amort. O(1) \o O(\e n)
+ \row \o QSet<Key> \o Amort. O(1) \o O(\e n) \o Amort. O(1) \o O(\e n)
+ \endtable
+
+ With QVector, QHash, and QSet, the performance of appending items
+ is amortized O(log \e n). It can be brought down to O(1) by
+ calling QVector::reserve(), QHash::reserve(), or QSet::reserve()
+ with the expected number of items before you insert the items.
+ The next section discusses this topic in more depth.
+
+ \section1 Growth Strategies
+
+ QVector<T>, QString, and QByteArray store their items
+ contiguously in memory; QList<T> maintains an array of pointers
+ to the items it stores to provide fast index-based access (unless
+ T is a pointer type or a basic type of the size of a pointer, in
+ which case the value itself is stored in the array); QHash<Key,
+ T> keeps a hash table whose size is proportional to the number
+ of items in the hash. To avoid reallocating the data every single
+ time an item is added at the end of the container, these classes
+ typically allocate more memory than necessary.
+
+ Consider the following code, which builds a QString from another
+ QString:
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 23
+
+ We build the string \c out dynamically by appending one character
+ to it at a time. Let's assume that we append 15000 characters to
+ the QString string. Then the following 18 reallocations (out of a
+ possible 15000) occur when QString runs out of space: 4, 8, 12,
+ 16, 20, 52, 116, 244, 500, 1012, 2036, 4084, 6132, 8180, 10228,
+ 12276, 14324, 16372. At the end, the QString has 16372 Unicode
+ characters allocated, 15000 of which are occupied.
+
+ The values above may seem a bit strange, but here are the guiding
+ principles:
+ \list
+ \o QString allocates 4 characters at a time until it reaches size 20.
+ \o From 20 to 4084, it advances by doubling the size each time.
+ More precisely, it advances to the next power of two, minus
+ 12. (Some memory allocators perform worst when requested exact
+ powers of two, because they use a few bytes per block for
+ book-keeping.)
+ \o From 4084 on, it advances by blocks of 2048 characters (4096
+ bytes). This makes sense because modern operating systems
+ don't copy the entire data when reallocating a buffer; the
+ physical memory pages are simply reordered, and only the data
+ on the first and last pages actually needs to be copied.
+ \endlist
+
+ QByteArray and QList<T> use more or less the same algorithm as
+ QString.
+
+ QVector<T> also uses that algorithm for data types that can be
+ moved around in memory using memcpy() (including the basic C++
+ types, the pointer types, and Qt's \l{shared classes}) but uses a
+ different algorithm for data types that can only be moved by
+ calling the copy constructor and a destructor. Since the cost of
+ reallocating is higher in that case, QVector<T> reduces the
+ number of reallocations by always doubling the memory when
+ running out of space.
+
+ QHash<Key, T> is a totally different case. QHash's internal hash
+ table grows by powers of two, and each time it grows, the items
+ are relocated in a new bucket, computed as qHash(\e key) %
+ QHash::capacity() (the number of buckets). This remark applies to
+ QSet<T> and QCache<Key, T> as well.
+
+ For most applications, the default growing algorithm provided by
+ Qt does the trick. If you need more control, QVector<T>,
+ QHash<Key, T>, QSet<T>, QString, and QByteArray provide a trio of
+ functions that allow you to check and specify how much memory to
+ use to store the items:
+
+ \list
+ \o \l{QString::capacity()}{capacity()} returns the
+ number of items for which memory is allocated (for QHash and
+ QSet, the number of buckets in the hash table).
+ \o \l{QString::reserve()}{reserve}(\e size) explicitly
+ preallocates memory for \e size items.
+ \o \l{QString::squeeze()}{squeeze()} frees any memory
+ not required to store the items.
+ \endlist
+
+ If you know approximately how many items you will store in a
+ container, you can start by calling reserve(), and when you are
+ done populating the container, you can call squeeze() to release
+ the extra preallocated memory.
+*/
diff --git a/doc/src/frameworks-technologies/dbus-adaptors.qdoc b/doc/src/frameworks-technologies/dbus-adaptors.qdoc
new file mode 100644
index 000000000..4c9d90976
--- /dev/null
+++ b/doc/src/frameworks-technologies/dbus-adaptors.qdoc
@@ -0,0 +1,494 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 usingadaptors.html
+ \title Using QtDBus Adaptors
+
+ \ingroup best-practices
+
+ Adaptors are special classes that are attached to any QObject-derived class
+ and provide the interface to the external world using D-Bus. Adaptors are
+ intended to be lightweight classes whose main purpose is to relay calls to
+ and from the real object, possibly validating or converting the input from
+ the external world and, thus, protecting the real object.
+
+ Unlike multiple inheritance, adaptors can be added at any time to any object
+ (but not removed), which allows for greater flexibility when exporting
+ existing classes. Another advantage of adaptors is to provide similar but not
+ identical functionality in methods of the same name in different interfaces,
+ a case which can be quite common when adding a new version of a standard
+ interface to an object.
+
+ In order to use an adaptor, one must create a class which inherits
+ QDBusAbstractAdaptor. Since that is a standard QObject-derived class, the
+ Q_OBJECT macro must appear in the declaration and the source file must be
+ processed with the \l {moc} tool. The class must also contain one
+ Q_CLASSINFO entry with the \c {"D-Bus Interface"} name, declaring which
+ interface it is exporting. Only one entry per class is supported.
+
+ Any public slot in the class will be accessible through the bus over messages
+ of the MethodCall type. (See \l {Declaring Slots in D-Bus Adaptors} for more
+ information). Signals in the class will be automatically relayed over D-Bus.
+ However, not all types are allowed signals or slots' parameter lists: see
+ \l {The QtDBus Type System} for more information.
+
+ Also, any property declared with Q_PROPERTY will be automatically exposed
+ over the Properties interface on D-Bus. Since the QObject property system
+ does not allow for non-readable properties, it is not possible to declare
+ write-only properties using adaptors.
+
+ More information:
+ \list
+ \o \l{Declaring Slots in D-Bus Adaptors}
+ \o \l{Declaring Signals in D-Bus Adaptors}
+ \o \l{The QtDBus Type System}
+ \o \l{D-Bus Adaptor Example}
+ \endlist
+
+ \sa QDBusAbstractAdaptor
+*/
+
+/*!
+ \page qdbusadaptorexample.html
+ \title D-Bus Adaptor Example
+
+ \previouspage The QtDBus Type System
+ \contentspage Using QtDBus Adaptors
+
+ The following example code shows how a D-Bus interface can be implemented
+ using an adaptor.
+
+ A sample usage of QDBusAbstractAdaptor is as follows:
+ \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 0
+
+ The code above would create an interface that could be represented more or less in the following
+ canonical representation:
+ \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 1
+
+ This adaptor could be used in the application's main function as follows
+ \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 2
+
+ Break-down analysis:
+ \tableofcontents
+
+ \section1 The header
+
+ The header of the example is:
+ \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 3
+
+ The code does the following:
+ \list
+ \o it declares the adaptor MainApplicationAdaptor, which descends from QDBusAbstractAdaptor
+ \o it declares the Qt meta-object data using the Q_OBJECT macro
+ \o it declares the name of the D-Bus interface it implements.
+ \endlist
+
+ \section1 The properties
+
+ The properties are declared as follows:
+ \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 4
+
+ And are implemented as follows:
+ \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 5
+
+ The code declares three properties: one of them is a read-write property called "caption" of
+ string type. The other two are read-only, also of the string type.
+
+ The properties organizationName and organizationDomain are simple relays of the app object's
+ organizationName and organizationDomain properties. However, the caption property requires
+ verifying if the application has a main window associated with it: if there isn't any, the
+ caption property is empty. Note how it is possible to access data defined in other objects
+ through the getter/setter functions.
+
+ \section1 The constructor
+
+ The constructor:
+ \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 6
+
+ The constructor does the following:
+ \list
+ \o it initialises its base class (QDBusAbstractAdaptor) with the parent object it is related to.
+ \o it stores the app pointer in a member variable. Note that it would be possible to access the
+ same object using the QDBusAbstractAdaptor::object() function, but it would be necessary to
+ use \a static_cast<> to properly access the methods in QApplication that are not part of
+ QObject.
+ \o it connects the application's signal \a aboutToQuit to its own signal \a aboutToQuit.
+ \o it connects the application's signal \a focusChanged to a private slot to do some further
+ processing before emitting a D-Bus signal.
+ \endlist
+
+ Note that there is no destructor in the example. An eventual destructor could be used to emit
+ one last signal before the object is destroyed, for instance.
+
+ \section1 Slots/methods
+
+ The public slots in the example (which will be exported as D-Bus methods) are the following:
+ \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 7
+
+ This snippet of code defines 4 methods with different properties each:
+ \list 1
+ \o \c quit: this method takes no parameters and is defined to be asynchronous. That is, callers
+ are expected to use "fire-and-forget" mechanism when calling this method, since it provides no
+ useful reply. This is represented in D-Bus by the use of the
+ org.freedesktop.DBus.Method.NoReply annotation. See \l Q_NOREPLY for more information on
+ asynchronous methods
+
+ \o \c reparseConfiguration: this simple method, with no input or output arguments simply relays
+ the call to the application's reparseConfiguration member function.
+
+ \o \c mainWindowObject: this method takes no input parameter, but returns one string output
+ argument, containing the path to the main window object (if the application has a main
+ window), or an empty string if it has no main window. Note that this method could have also
+ been written: void mainWindowObject(QString &path).
+
+ \o \c setSessionManagement: this method takes one input argument (a boolean) and, depending on
+ its value, it calls one function or another in the application.
+ \endlist
+
+ See also: \l Q_NOREPLY.
+
+ \section1 Signals
+
+ The signals in this example are defined as follows:
+ \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 8
+
+ However, signal definition isn't enough: signals have to be emitted. One simple way of emitting
+ signals is to connect another signal to them, so that Qt's signal handling system chains them
+ automatically. This is what is done for the \a aboutToQuit signal.
+
+ When this is the case, one can use the QDBusAbstractAdaptor::setAutoRelaySignals to
+ automatically connect every signal from the real object to the adaptor.
+
+ When simple signal-to-signal connection isn't enough, one can use a private slot do do some
+ work. This is what was done for the mainWindowHasFocus signal:
+ \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 9
+
+ This private slot (which will not be exported as a method via D-Bus) was connected to the
+ \c focusChanged signal in the adaptor's constructor. It is therefore able to shape the
+ application's signal into what the interface expects it to be.
+*/
+
+/*!
+ \page qdbusdeclaringslots.html
+ \title Declaring Slots in D-Bus Adaptors
+
+ \contentspage Using QtDBus Adaptors
+ \nextpage Declaring Signals in D-Bus Adaptors
+
+ Slots in D-Bus adaptors are declared just like normal, public slots, but their
+ parameters must follow certain rules (see \l{The QtDBus Type System} for more
+ information). Slots whose parameters do not follow those rules or that are not
+ public will not be accessible via D-Bus.
+
+ Slots can have one parameter of type \c{const QDBusMessage &}, which must
+ appear at the end of the input parameter list, before any output parameters.
+ This parameter, if present, will be initialized with a copy of the
+ current message being processed, which allows the callee to obtain
+ information about the caller, such as its connection name.
+
+ Slots can be of three kinds:
+ \list 1
+ \o Asynchronous
+ \o Input-only
+ \o Input-and-output
+ \endlist
+
+ \section1 Asynchronous Slots
+ Asynchronous slots are those that do not normally return any reply to the
+ caller. For that reason, they cannot take any output parameters. In most
+ cases, by the time the first line of the slot is run, the caller function
+ has already resumed working.
+
+ However, slots must not rely on that behavior. Scheduling and message-dispatching
+ issues could change the order in which the slot is run. Code intending to
+ synchronize with the caller should provide its own method of synchronization.
+
+ Asynchronous slots are marked by the keyword \l Q_NOREPLY in the method
+ signature, before the \c void return type and the slot name. (See the
+ \c quit() slot in the \l{D-Bus Adaptor Example}).
+
+ \section1 Input-Only Slots
+
+ Input-only slots are normal slots that take parameters passed by value or
+ by constant reference. However, unlike asynchronous slots, the caller is
+ usually waiting for completion of the callee before resuming operation.
+ Therefore, non-asynchronous slots should not block or should state it its
+ documentation that they may do so.
+
+ Input-only slots have no special marking in their signature, except that
+ they take only parameters passed by value or by constant reference.
+ Optionally, slots can take a QDBusMessage parameter as a last parameter,
+ which can be used to perform additional analysis of the method call message.
+
+ \section1 Input and Output Slots
+
+ Like input-only slots, input-and-output slots are those that the caller is
+ waiting for a reply. Unlike input-only ones, though, this reply will contain
+ data. Slots that output data may contain non-constant references and may
+ return a value as well. However, the output parameters must all appear at
+ the end of the argument list and may not have input arguments interleaved.
+ Optionally, a QDBusMessage argument may appear between the input and the
+ output arguments.
+
+ \section1 Automatic Replies
+
+ Method replies are generated automatically with the contents of the output
+ parameters (if there were any) by the QtDBus implementation. Slots need not
+ worry about constructing proper QDBusMessage objects and sending them over
+ the connection.
+
+ However, the possibility of doing so remains there. Should the slot find out
+ it needs to send a special reply or even an error, it can do so by using
+ QDBusMessage::createReply() or QDBusMessage::createErrorReply() on the
+ QDBusMessage parameter and send it with QDBusConnection::send(). The
+ QtDBus implementation will not generate any reply if the slot did so.
+
+ \warning When a caller places a method call and waits for a reply, it will
+ only wait for a limited amount of time. Slots intending to take a long time
+ to complete should make that fact clear in documentation so that callers
+ properly set higher timeouts.
+
+ \section1 Delayed Replies
+
+ In some circumstances, the called slot may not be able to process
+ the request immediately. This is frequently the case when the
+ request involves an I/O or networking operation which may block.
+
+ If this is the case, the slot should return control to the
+ application's main loop to avoid freezing the user interface, and
+ resume the process later. To accomplish this, it should make use
+ of the extra \c QDBusMessage parameter at the end of the input
+ parameter list and request a delayed reply.
+
+ We do this by writing a slot that stores the request data in a
+ persistent structure, indicating to the caller using
+ \l{QDBusMessage::setDelayedReply()}{QDBusMessage::setDelayedReply(true)}
+ that the response will be sent later.
+
+ \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 10
+
+ The use of
+ \l{QDBusConnection::send()}{QDBusConnection::sessionBus().send(data->reply)}
+ is needed to explicitly inform the caller that the response will be delayed.
+ In this case, the return value is unimportant; we return an arbitrary value
+ to satisfy the compiler.
+
+ When the request is processed and a reply is available, it should be sent
+ using the \c QDBusMessage object that was obtained. In our example, the
+ reply code could be something as follows:
+
+ \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 11
+
+ As can be seen in the example, when a delayed reply is in place,
+ the return value(s) from the slot will be ignored by QtDBus. They
+ are used only to determine the slot's signature when communicating
+ the adaptor's description to remote applications, or in case the
+ code in the slot decides not to use a delayed reply.
+
+ The delayed reply itself is requested from QtDBus by calling
+ QDBusMessage::reply() on the original message. It then becomes the
+ resposibility of the called code to eventually send a reply to the
+ caller.
+
+ \warning When a caller places a method call and waits for a reply, it will
+ only wait for a limited amount of time. Slots intending to take a long time
+ to complete should make that fact clear in documentation so that callers
+ properly set higher timeouts.
+
+ \sa {Using QtDBus Adaptors}, {Declaring Signals in D-Bus Adaptors},
+ {The QtDBus Type System}, QDBusConnection, QDBusMessage
+*/
+
+/*!
+ \page qdbusdeclaringsignals.html
+ \title Declaring Signals in D-Bus Adaptors
+
+ \previouspage Declaring Slots in D-Bus Adaptors
+ \contentspage Using QtDBus Adaptors
+ \nextpage The QtDBus Type System
+
+ Any signal in a class derived from QDBusAbstractAdaptor will be automatically
+ relayed into D-Bus, provided that the signal's parameters conform to certain
+ rules (see \l{The QtDBus Type System} for more information). No special code
+ is necessary to make this relay.
+
+ However, signals must still be emitted. The easiest way to emit an adaptor
+ signal is to connect another signal to it, so that Qt's signals and slots
+ mechanism automatically emits the adaptor signal, too. This can be done in
+ the adaptor's constructor, as has been done in the
+ \l{D-Bus Adaptor Example}{D-Bus Adaptor example}.
+
+ The QDBusAbstractAdaptor::setAutoRelaySignals() convenience function can also
+ be used to make and break connections between signals in the real object and
+ the corresponding signals in the adaptor. It will inspect the list of signals
+ in both classes and connect those whose parameters match exactly.
+
+ \sa {Using QtDBus Adaptors},
+ {Declaring Slots in D-Bus Adaptors},
+ {The QtDBus Type System}, QDBusAbstractAdaptor
+*/
+
+/*!
+ \page qdbustypesystem.html
+ \title The QtDBus Type System
+
+ \previouspage Declaring Signals in D-Bus Adaptors
+ \contentspage Using QtDBus Adaptors
+ \nextpage D-Bus Adaptor Example
+
+ D-Bus has an extensible type system based on a few primitives and
+ composition of the primitives in arrays and structures. QtDBus
+ implements the interface to that type system through the
+ QDBusArgument class, allowing user programs to send and receive
+ practically every C++ type over the bus.
+
+ \section1 Primitive Types
+
+ The primitive types are supported natively by QDBusArgument and
+ need no special customization to be sent or received. They are
+ listed below, along with the C++ class they relate to:
+
+ \table
+ \header
+ \o Qt type
+ \o D-Bus equivalent type
+ \row
+ \o uchar
+ \o BYTE
+ \row
+ \o bool
+ \o BOOLEAN
+ \row
+ \o short
+ \o INT16
+ \row
+ \o ushort
+ \o UINT16
+ \row
+ \o int
+ \o INT32
+ \row
+ \o uint
+ \o UINT32
+ \row
+ \o qlonglong
+ \o INT64
+ \row
+ \o qulonglong
+ \o UINT64
+ \row
+ \o double
+ \o DOUBLE
+ \row
+ \o QString
+ \o STRING
+ \row
+ \o QDBusVariant
+ \o VARIANT
+ \row
+ \o QDBusObjectPath
+ \o OBJECT_PATH
+ \row
+ \o QDBusSignature
+ \o SIGNATURE
+ \endtable
+
+ Aside from the primitive types, QDBusArgument also supports two
+ non-primitive types natively, due to their widespread use in Qt
+ applications: QStringList and QByteArray.
+
+ \section1 Compound Types
+
+ D-Bus specifies three types of aggregations of primitive types
+ that allow one to create compound types. They are \c ARRAY, \c
+ STRUCT and maps/dictionaries.
+
+ Arrays are sets of zero or more elements of the same type, while
+ structures are a set of a fixed number of elements, each of any
+ type. Maps or dictionaries are implemented as arrays of a pair of
+ elements, so there can be zero or more elements in one map.
+
+ \section1 Extending the Type System
+
+ In order to use one's own type with QtDBus, the type has to be
+ declared as a Qt meta-type with the Q_DECLARE_METATYPE() macro and
+ registered with the qDBusRegisterMetaType() function. The
+ streaming operators \c{operator>>} and \c{operator<<} will be
+ automatically found by the registration system.
+
+ QtDBus provides template specializations for arrays and maps for
+ use with Qt's \l{Container classes}{container classes}, such as
+ QMap and QList, so it is not necessary to write the streaming
+ operator functions for those. For other types, and specially for
+ types implementing structures, the operators have to be explicitly
+ implemented.
+
+ See the documentation for QDBusArgument for examples for
+ structures, arrays and maps.
+
+ \section1 The Type System in Use
+
+ All of the QtDBus types (primitives and user-defined alike) can be
+ used to send and receive messages of all types over the bus.
+
+ \warning You may not use any type that is not on the list above,
+ including \a typedefs to the types listed. This also includes
+ QList<QVariant> and QMap<QString,QVariant>.
+*/
+
+/*!
+ \macro Q_NOREPLY
+ \relates QDBusAbstractAdaptor
+ \since 4.2
+
+ The Q_NOREPLY macro can be used to mark a method to be called and not wait for it to finish
+ processing before returning from QDBusInterface::call(). The called method cannot return any
+ output arguments and, if it does, any such arguments will be discarded.
+
+ You can use this macro in your own adaptors by placing it before your method's return value
+ (which must be "void") in the class declaration, as shown in the example:
+ \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 12
+
+ Its presence in the method implementation (outside the class declaration) is optional.
+
+ \sa {Using QtDBus Adaptors}
+*/
diff --git a/doc/src/frameworks-technologies/dbus-intro.qdoc b/doc/src/frameworks-technologies/dbus-intro.qdoc
new file mode 100644
index 000000000..cc32a65d5
--- /dev/null
+++ b/doc/src/frameworks-technologies/dbus-intro.qdoc
@@ -0,0 +1,229 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 intro-to-dbus.html
+ \title Introduction to D-Bus
+ \brief An introduction to Inter-Process Communication and Remote Procedure Calling with D-Bus.
+
+ \keyword QtDBus
+ \ingroup frameworks-technologies
+
+ \section1 Introduction
+
+ D-Bus is an Inter-Process Communication (IPC) and Remote Procedure
+ Calling (RPC) mechanism originally developed for Linux to replace
+ existing and competing IPC solutions with one unified protocol. It
+ has also been designed to allow communication between system-level
+ processes (such as printer and hardware driver services) and
+ normal user processes.
+
+ It uses a fast, binary message-passing protocol, which is suitable
+ for same-machine communication due to its low latency and low
+ overhead. Its specification is currently defined by the
+ \tt{freedesktop.org} project, and is available to all parties.
+
+ Communication in general happens through a central server
+ application, called the "bus" (hence the name), but direct
+ application-to-application communication is also possible. When
+ communicating on a bus, applications can query which other
+ applications and services are available, as well as activate one
+ on demand.
+
+ \section1 The Buses
+
+ D-Bus buses are used to when many-to-many communication is
+ desired. In order to achieve that, a central server is launched
+ before any applications can connect to the bus: this server is
+ responsible for keeping track of the applications that are
+ connected and for properly routing messages from their source to
+ their destination.
+
+ In addition, D-Bus defines two well-known buses, called the
+ system bus and the session bus. These buses are special in the
+ sense that they have well-defined semantics: some services are
+ defined to be found in one or both of these buses.
+
+ For example, an application wishing to query the list of hardware
+ devices attached to the computer will probably communicate to a
+ service available on the system bus, while the service providing
+ opening of the user's web browser will be probably found on the
+ session bus.
+
+ On the system bus, one can also expect to find restrictions on
+ what services each application is allowed to offer. Therefore, one
+ can be reasonably certain that, if a certain service is present,
+ it is being offered by a trusted application.
+
+ \section1 Concepts
+
+ \section2 Messages
+
+ On the low level, applications communicate over D-Bus by sending
+ messages to one another. Messages are used to relay the remote
+ procedure calls as well as the replies and errors associated
+ with them. When used over a bus, messages have a destination,
+ which means they are routed only to the interested parties,
+ avoiding congestion due to "swarming" or broadcasting.
+
+ A special kind of message called a "signal message"
+ (a concept based on Qt's \l {Signals and Slots} mechanism),
+ however, does not have a pre-defined destination. Since its
+ purpose is to be used in a one-to-many context, signal messages
+ are designed to work over an "opt-in" mechanism.
+
+ The QtDBus module fully encapsulates the low-level concept of
+ messages into a simpler, object-oriented approach familiar to Qt
+ developers. In most cases, the developer need not worry about
+ sending or receiving messages.
+
+ \section2 Service Names
+
+ When communicating over a bus, applications obtain what is
+ called a "service name": it is how that application chooses to be
+ known by other applications on the same bus. The service names
+ are brokered by the D-Bus bus daemon and are used to
+ route messages from one application to another. An analogous
+ concept to service names are IP addresses and hostnames: a
+ computer normally has one IP address and may have one or more
+ hostnames associated with it, according to the services that it
+ provides to the network.
+
+ On the other hand, if a bus is not used, service names are also
+ not used. If we compare this to a computer network again, this
+ would equate to a point-to-point network: since the peer is
+ known, there is no need to use hostnames to find it or its IP
+ address.
+
+ The format of a D-Bus service name is in fact very similar to a
+ host name: it is a dot-separated sequence of letters and
+ digits. The common practice is even to name one's service name
+ according to the domain name of the organization that defined
+ that service.
+
+ For example, the D-Bus service is defined by
+ \tt{freedesktop.org} and can be found on the bus under the
+ service name:
+
+ \snippet doc/src/snippets/code/doc_src_introtodbus.qdoc 0
+
+ \section2 Object Paths
+
+ Like network hosts, applications provide specific services to
+ other applications by exporting objects. Those objects are
+ hierarchically organised, much like the parent-child
+ relationship that classes derived from QObject possess. One
+ difference, however, is that there is the concept of "root
+ object", that all objects have as ultimate parent.
+
+ If we continue our analogy with Web services, object paths
+ equate to the path part of a URL:
+
+ \img qurl-ftppath.png
+
+ Like them, object paths in D-Bus are formed resembling path
+ names on the filesystem: they are slash-separated labels, each
+ consisting of letters, digits and the underscore character
+ ("_"). They must always start with a slash and must not end with
+ one.
+
+ \section2 Interfaces
+
+ Interfaces are similar to C++ abstract classes and Java's
+ \c interface keyword and declare the "contract" that is
+ established between caller and callee. That is, they establish
+ the names of the methods, signals and properties that are
+ available as well as the behavior that is expected from either
+ side when communication is established.
+
+ Qt uses a very similar mechanism in its \l {How to Create Qt
+ Plugins}{Plugin system}: Base classes in C++ are associated
+ with a unique identifier by way of the Q_DECLARE_INTERFACE()
+ macro.
+
+ D-Bus interface names are, in fact, named in a manner similar to
+ what is suggested by the Qt Plugin System: an identifier usually
+ constructed from the domain name of the entity that defined that
+ interface.
+
+ \section2 Cheat Sheet
+
+ To facilitate remembering of the naming formats and their
+ purposes, the following table can be used:
+
+ \table 90%
+ \header \o D-Bus Concept \o Analogy \o Name format
+ \row \o Service name \o Network hostnames \o Dot-separated
+ ("looks like a hostname")
+ \row \o Object path \o URL path component \o Slash-separated
+ ("looks like a path")
+ \row \o Interface \o Plugin identifier \o Dot-separated
+ \endtable
+
+ \section1 Debugging
+
+ When developing applications that use D-Bus, it is sometimes useful to be able
+ to see information about the messages that are sent and received across the
+ bus by each application.
+
+ This feature can be enabled on a per-application basis by setting the
+ \c QDBUS_DEBUG environment variable before running each application.
+ For example, we can enable debugging only for the car in the
+ \l{D-Bus Remote Controlled Car Example} by running the controller and the
+ car in the following way:
+
+ \snippet doc/src/snippets/code/doc_src_introtodbus.qdoc QDBUS_DEBUG
+
+ Information about the messages will be written to the console the application
+ was launched from.
+
+ \section1 Further Reading
+
+ The following documents contain information about Qt's D-Bus integration
+ features, and provide details about the mechanisms used to send and receive
+ type information over the bus:
+
+ \list
+ \o \l{Using QtDBus Adaptors}
+ \o \l{The QtDBus Type System}
+ \o \l{QtDBus XML compiler (qdbusxml2cpp)}
+ \endlist
+*/
diff --git a/doc/src/frameworks-technologies/desktop-integration.qdoc b/doc/src/frameworks-technologies/desktop-integration.qdoc
new file mode 100644
index 000000000..9faf1a51c
--- /dev/null
+++ b/doc/src/frameworks-technologies/desktop-integration.qdoc
@@ -0,0 +1,111 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group desktop
+ \title Desktop Integration Classes
+*/
+
+/*!
+ \page desktop-integration.html
+ \title Desktop Integration
+ \brief Integrating with the user's desktop environment.
+
+ \ingroup best-practices
+
+ Qt applications behave well in the user's desktop environment, but certain
+ integrations require additional, and sometimes platform specific, techniques.
+
+ \tableofcontents
+
+ \section1 Useful Classes
+
+ Various classes in Qt are designed to help developers integrate applications into
+ users' desktop environments. These classes enable developers to take advantage
+ of native services while still using a cross-platform API.
+
+ \annotatedlist desktop
+
+ \section1 Setting the Application Icon
+
+ In order to change the icon of the executable application file
+ itself, as it is presented on the desktop (i.e., prior to
+ application execution), it is necessary to employ another,
+ platform-dependent technique.
+
+ \tableofcontents {1 Setting the Application Icon}
+
+ \section1 Opening External Resources
+
+ Although Qt provides facilities to handle and display resources, such as
+ \l{QImageIOHandler}{common image formats} and \l{QTextDocument}{HTML},
+ it is sometimes necessary to open files and external resources using external
+ applications.
+
+ QDesktopServices provides an interface to services offered by the user's desktop
+ environment. In particular, the \l{QDesktopServices::}{openUrl()} function is
+ used to open resources using the appropriate application, which may have been
+ specifically configured by the user.
+
+ \section1 System Tray Icons
+
+ Many modern desktop environments feature docks or panels with \e{system trays}
+ in which applications can install icons. Applications often use system tray icons
+ to display status information, either by updating the icon itself or by showing
+ information in "balloon messages". Additionally, many applications provide
+ pop-up menus that can be accessed via their system tray icons.
+
+ The QSystemTrayIcon class exposes all of the above features via an intuitive
+ Qt-style API that can be used on all desktop platforms.
+
+ \section1 Desktop Widgets
+
+ On systems where the user's desktop is displayed using more than one screen,
+ certain types of applications may need to obtain information about the
+ configuration of the user's workspace to ensure that new windows and dialogs
+ are opened in appropriate locations.
+
+ The QDesktopWidget class can be used to monitor the positions of widgets and
+ notify applications about changes to the way the desktop is split over the
+ available screens. This enables applications to implement policies for
+ positioning new windows so that, for example, they do not distract a user
+ who is working on a specific task.
+*/
diff --git a/doc/src/frameworks-technologies/dnd.qdoc b/doc/src/frameworks-technologies/dnd.qdoc
new file mode 100644
index 000000000..a7b1622bc
--- /dev/null
+++ b/doc/src/frameworks-technologies/dnd.qdoc
@@ -0,0 +1,449 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group draganddrop
+ \title Drag And Drop Classes
+
+ \brief Classes dealing with drag and drop and mime type encoding and decoding.
+*/
+
+/*!
+ \page dnd.html
+ \title Drag and Drop
+ \brief An overview of the drag and drop system provided by Qt.
+
+ \ingroup frameworks-technologies
+
+ Drag and drop provides a simple visual mechanism which users can use
+ to transfer information between and within applications. (In the
+ literature this is referred to as a "direct manipulation model".) Drag
+ and drop is similar in function to the clipboard's cut and paste
+ mechanism.
+
+ \tableofcontents
+
+ This document describes the basic drag and drop mechanism and
+ outlines the approach used to enable it in custom widgets. Drag
+ and drop operations are also supported by Qt's item views and by
+ the graphics view framework; more information is available in the
+ \l{Using Drag and Drop with Item Views} and \l{The Graphics View
+ Framework} documents.
+
+ \section1 Drag and Drop Classes
+
+ These classes deal with drag and drop and the necessary mime type
+ encoding and decoding.
+
+ \annotatedlist draganddrop
+
+ \section1 Configuration
+
+ The QApplication object provides some properties that are related
+ to drag and drop operations:
+
+ \list
+ \i \l{QApplication::startDragTime} describes the amount of time in
+ milliseconds that the user must hold down a mouse button over an
+ object before a drag will begin.
+ \i \l{QApplication::startDragDistance} indicates how far the user has to
+ move the mouse while holding down a mouse button before the movement
+ will be interpreted as dragging. Use of high values for this quantity
+ prevents accidental dragging when the user only meant to click on an
+ object.
+ \endlist
+
+ These quantities provide sensible default values for you to use if you
+ provide drag and drop support in your widgets.
+
+ \section1 Dragging
+
+ To start a drag, create a QDrag object, and call its
+ exec() function. In most applications, it is a good idea to begin a drag
+ and drop operation only after a mouse button has been pressed and the
+ cursor has been moved a certain distance. However, the simplest way to
+ enable dragging from a widget is to reimplement the widget's
+ \l{QWidget::mousePressEvent()}{mousePressEvent()} and start a drag
+ and drop operation:
+
+ \snippet doc/src/snippets/dragging/mainwindow.cpp 0
+ \dots 8
+ \snippet doc/src/snippets/dragging/mainwindow.cpp 2
+
+ Although the user may take some time to complete the dragging operation,
+ as far as the application is concerned the exec() function is a blocking
+ function that returns with \l{Qt::DropActions}{one of several values}.
+ These indicate how the operation ended, and are described in more detail
+ below.
+
+ Note that the exec() function does not block the main event loop.
+
+ For widgets that need to distinguish between mouse clicks and drags, it
+ is useful to reimplement the widget's
+ \l{QWidget::mousePressEvent()}{mousePressEvent()} function to record to
+ start position of the drag:
+
+ \snippet doc/src/snippets/draganddrop/dragwidget.cpp 6
+
+ Later, in \l{QWidget::mouseMoveEvent()}{mouseMoveEvent()}, we can determine
+ whether a drag should begin, and construct a drag object to handle the
+ operation:
+
+ \snippet doc/src/snippets/draganddrop/dragwidget.cpp 7
+ \dots
+ \snippet doc/src/snippets/draganddrop/dragwidget.cpp 8
+
+ This particular approach uses the \l QPoint::manhattanLength() function
+ to get a rough estimate of the distance between where the mouse click
+ occurred and the current cursor position. This function trades accuracy
+ for speed, and is usually suitable for this purpose.
+
+ \section1 Dropping
+
+ To be able to receive media dropped on a widget, call
+ \l{QWidget::setAcceptDrops()}{setAcceptDrops(true)} for the widget,
+ and reimplement the \l{QWidget::dragEnterEvent()}{dragEnterEvent()} and
+ \l{QWidget::dropEvent()}{dropEvent()} event handler functions.
+
+ For example, the following code enables drop events in the constructor of
+ a QWidget subclass, making it possible to usefully implement drop event
+ handlers:
+
+ \snippet doc/src/snippets/dropevents/window.cpp 0
+ \dots
+ \snippet doc/src/snippets/dropevents/window.cpp 1
+ \snippet doc/src/snippets/dropevents/window.cpp 2
+
+ The dragEnterEvent() function is typically used to inform Qt about the
+ types of data that the widget accepts.
+ You must reimplement this function if you want to receive either
+ QDragMoveEvent or QDropEvent in your reimplementations of
+ \l{QWidget::dragMoveEvent()}{dragMoveEvent()} and
+ \l{QWidget::dropEvent()}{dropEvent()}.
+
+ The following code shows how \l{QWidget::dragEnterEvent()}{dragEnterEvent()}
+ can be reimplemented to
+ tell the drag and drop system that we can only handle plain text:
+
+ \snippet doc/src/snippets/dropevents/window.cpp 3
+
+ The \l{QWidget::dropEvent()}{dropEvent()} is used to unpack dropped data
+ and handle it in way that is suitable for your application.
+
+ In the following code, the text supplied in the event is passed to a
+ QTextBrowser and a QComboBox is filled with the list of MIME types that
+ are used to describe the data:
+
+ \snippet doc/src/snippets/dropevents/window.cpp 4
+
+ In this case, we accept the proposed action without checking what it is.
+ In a real world application, it may be necessary to return from the
+ \l{QWidget::dropEvent()}{dropEvent()} function without accepting the
+ proposed action or handling
+ the data if the action is not relevant. For example, we may choose to
+ ignore Qt::LinkAction actions if we do not support
+ links to external sources in our application.
+
+ \section2 Overriding Proposed Actions
+
+ We may also ignore the proposed action, and perform some other action on
+ the data. To do this, we would call the event object's
+ \l{QDropEvent::setDropAction()}{setDropAction()} with the preferred
+ action from Qt::DropAction before calling \l{QEvent::}{accept()}.
+ This ensures that the replacement drop action is used instead of the
+ proposed action.
+
+ For more sophisticated applications, reimplementing
+ \l{QWidget::dragMoveEvent()}{dragMoveEvent()} and
+ \l{QWidget::dragLeaveEvent()}{dragLeaveEvent()} will let you make
+ certain parts of your widgets sensitive to drop events, and give you more
+ control over drag and drop in your application.
+
+ \section2 Subclassing Complex Widgets
+
+ Certain standard Qt widgets provide their own support for drag and drop.
+ When subclassing these widgets, it may be necessary to reimplement
+ \l{QWidget::dragMoveEvent()}{dragMoveEvent()} in addition to
+ \l{QWidget::dragEnterEvent()}{dragEnterEvent()} and
+ \l{QWidget::dropEvent()}{dropEvent()} to prevent the base class from
+ providing default drag and drop handling, and to handle any special
+ cases you are interested in.
+
+ \section1 Drag and Drop Actions
+
+ In the simplest case, the target of a drag and drop action receives a
+ copy of the data being dragged, and the source decides whether to
+ delete the original. This is described by the \c CopyAction action.
+ The target may also choose to handle other actions, specifically the
+ \c MoveAction and \c LinkAction actions. If the source calls
+ QDrag::exec(), and it returns \c MoveAction, the source is responsible
+ for deleting any original data if it chooses to do so. The QMimeData
+ and QDrag objects created by the source widget \e{should not be deleted}
+ - they will be destroyed by Qt. The target is responsible for taking
+ ownership of the data sent in the drag and drop operation; this is
+ usually done by keeping references to the data.
+
+ If the target understands the \c LinkAction action, it should
+ store its own reference to the original information; the source
+ does not need to perform any further processing on the data. The
+ most common use of drag and drop actions is when performing a
+ Move within the same widget; see the section on \l{Drop Actions}
+ for more information about this feature.
+
+ The other major use of drag actions is when using a reference type
+ such as text/uri-list, where the dragged data are actually references
+ to files or objects.
+
+ \section1 Adding New Drag and Drop Types
+
+ Drag and drop is not limited to text and images. Any type of information
+ can be transferred in a drag and drop operation. To drag information
+ between applications, the applications must be able to indicate to each
+ other which data formats they can accept and which they can produce.
+ This is achieved using
+ \l{http://www.rfc-editor.org/rfc/rfc1341.txt}{MIME types}. The QDrag
+ object constructed by the source contains a list of MIME types that it
+ uses to represent the data (ordered from most appropriate to least
+ appropriate), and the drop target uses one of these to access the data.
+ For common data types, the convenience functions handle the MIME types
+ used transparently but, for custom data types, it is necessary to
+ state them explicitly.
+
+ To implement drag and drop actions for a type of information that is
+ not covered by the QDrag convenience functions, the first and most
+ important step is to look for existing formats that are appropriate:
+ The Internet Assigned Numbers Authority (\l{http://www.iana.org}{IANA})
+ provides a
+ \l{http://www.iana.org/assignments/media-types/}{hierarchical
+ list of MIME media types} at the Information Sciences Institute
+ (\l{http://www.isi.edu}{ISI}).
+ Using standard MIME types maximizes the interoperability of
+ your application with other software now and in the future.
+
+ To support an additional media type, simply set the data in the QMimeData
+ object with the \l{QMimeData::setData()}{setData()} function, supplying
+ the full MIME type and a QByteArray containing the data in the appropriate
+ format. The following code takes a pixmap from a label and stores it
+ as a Portable Network Graphics (PNG) file in a QMimeData object:
+
+ \snippet doc/src/snippets/separations/finalwidget.cpp 0
+
+ Of course, for this case we could have simply used
+ \l{QMimeData::setImageData()}{setImageData()} instead to supply image data
+ in a variety of formats:
+
+ \snippet doc/src/snippets/separations/finalwidget.cpp 1
+
+ The QByteArray approach is still useful in this case because it provides
+ greater control over the amount of data stored in the QMimeData object.
+
+ Note that custom datatypes used in item views must be declared as
+ \l{QMetaObject}{meta objects} and that stream operators for them
+ must be implemented.
+
+ \section1 Drop Actions
+
+ In the clipboard model, the user can \e cut or \e copy the source
+ information, then later paste it. Similarly in the drag and drop
+ model, the user can drag a \e copy of the information or they can drag
+ the information itself to a new place (\e moving it). The
+ drag and drop model has an additional complication for the programmer:
+ The program doesn't know whether the user wants to cut or copy the
+ information until the operation is complete. This often makes no
+ difference when dragging information between applications, but within
+ an application it is important to check which drop action was used.
+
+ We can reimplement the mouseMoveEvent() for a widget, and start a drag
+ and drop operation with a combination of possible drop actions. For
+ example, we may want to ensure that dragging always moves objects in
+ the widget:
+
+ \snippet doc/src/snippets/draganddrop/dragwidget.cpp 7
+ \dots
+ \snippet doc/src/snippets/draganddrop/dragwidget.cpp 8
+
+ The action returned by the exec() function may default to a
+ \c CopyAction if the information is dropped into another application
+ but, if it is dropped in another widget in the same application, we
+ may obtain a different drop action.
+
+ The proposed drop actions can be filtered in a widget's dragMoveEvent()
+ function. However, it is possible to accept all proposed actions in
+ the dragEnterEvent() and let the user decide which they want to accept
+ later:
+
+ \snippet doc/src/snippets/draganddrop/dragwidget.cpp 0
+
+ When a drop occurs in the widget, the dropEvent() handler function is
+ called, and we can deal with each possible action in turn. First, we
+ deal with drag and drop operations within the same widget:
+
+ \snippet doc/src/snippets/draganddrop/dragwidget.cpp 1
+
+ In this case, we refuse to deal with move operations. Each type of drop
+ action that we accept is checked and dealt with accordingly:
+
+ \snippet doc/src/snippets/draganddrop/dragwidget.cpp 2
+ \snippet doc/src/snippets/draganddrop/dragwidget.cpp 3
+ \snippet doc/src/snippets/draganddrop/dragwidget.cpp 4
+ \dots
+ \snippet doc/src/snippets/draganddrop/dragwidget.cpp 5
+
+ Note that we checked for individual drop actions in the above code.
+ As mentioned above in the section on
+ \l{#Overriding Proposed Actions}{Overriding Proposed Actions}, it is
+ sometimes necessary to override the proposed drop action and choose a
+ different one from the selection of possible drop actions.
+ To do this, you need to check for the presence of each action in the value
+ supplied by the event's \l{QDropEvent::}{possibleActions()}, set the drop
+ action with \l{QDropEvent::}{setDropAction()}, and call
+ \l{QEvent::}{accept()}.
+
+ \section1 Drop Rectangles
+
+ The widget's dragMoveEvent() can be used to restrict drops to certain parts
+ of the widget by only accepting the proposed drop actions when the cursor
+ is within those areas. For example, the following code accepts any proposed
+ drop actions when the cursor is over a child widget (\c dropFrame):
+
+ \snippet doc/src/snippets/droprectangle/window.cpp 0
+
+ The dragMoveEvent() can also be used if you need to give visual
+ feedback during a drag and drop operation, to scroll the window, or
+ whatever is appropriate.
+
+ \section1 The Clipboard
+
+ Applications can also communicate with each other by putting data on
+ the clipboard. To access this, you need to obtain a QClipboard object
+ from the QApplication object:
+
+ \snippet examples/widgets/charactermap/mainwindow.cpp 3
+
+ The QMimeData class is used to represent data that is transferred to and
+ from the clipboard. To put data on the clipboard, you can use the
+ setText(), setImage(), and setPixmap() convenience functions for common
+ data types. These functions are similar to those found in the QMimeData
+ class, except that they also take an additional argument that controls
+ where the data is stored: If \l{QClipboard::Mode}{Clipboard} is
+ specified, the data is placed on the clipboard; if
+ \l{QClipboard::Mode}{Selection} is specified, the data is placed in the
+ mouse selection (on X11 only). By default, data is put on the clipboard.
+
+ For example, we can copy the contents of a QLineEdit to the clipboard
+ with the following code:
+
+ \snippet examples/widgets/charactermap/mainwindow.cpp 11
+
+ Data with different MIME types can also be put on the clipboard.
+ Construct a QMimeData object and set data with setData() function in
+ the way described in the previous section; this object can then be
+ put on the clipboard with the
+ \l{QClipboard::setMimeData()}{setMimeData()} function.
+
+ The QClipboard class can notify the application about changes to the
+ data it contains via its \l{QClipboard::dataChanged()}{dataChanged()}
+ signal. For example, we can monitor the clipboard by connecting this
+ signal to a slot in a widget:
+
+ \snippet doc/src/snippets/clipboard/clipwindow.cpp 0
+
+ The slot connected to this signal can read the data on the clipboard
+ using one of the MIME types that can be used to represent it:
+
+ \snippet doc/src/snippets/clipboard/clipwindow.cpp 1
+ \dots
+ \snippet doc/src/snippets/clipboard/clipwindow.cpp 2
+
+ The \l{QClipboard::selectionChanged()}{selectionChanged()} signal can
+ be used on X11 to monitor the mouse selection.
+
+ \section1 Examples
+
+ \list
+ \o \l{draganddrop/draggableicons}{Draggable Icons}
+ \o \l{draganddrop/draggabletext}{Draggable Text}
+ \o \l{draganddrop/dropsite}{Drop Site}
+ \o \l{draganddrop/fridgemagnets}{Fridge Magnets}
+ \o \l{draganddrop/puzzle}{Drag and Drop Puzzle}
+ \endlist
+
+ \section1 Interoperating with Other Applications
+
+ On X11, the public \l{http://www.newplanetsoftware.com/xdnd/}{XDND
+ protocol} is used, while on Windows Qt uses the OLE standard, and
+ Qt for Mac OS X uses the Carbon Drag Manager. On X11, XDND uses MIME,
+ so no translation is necessary. The Qt API is the same regardless of
+ the platform. On Windows, MIME-aware applications can communicate by
+ using clipboard format names that are MIME types. Already some
+ Windows applications use MIME naming conventions for their
+ clipboard formats. Internally, Qt uses QWindowsMime and
+ QMacPasteboardMime for translating proprietary clipboard formats
+ to and from MIME types.
+
+ On X11, Qt also supports drops via the Motif Drag & Drop Protocol. The
+ implementation incorporates some code that was originally written by
+ Daniel Dardailler, and adapted for Qt by Matt Koss <koss@napri.sk>
+ and Nokia. Here is the original copyright notice:
+
+ \legalese
+ Copyright 1996 Daniel Dardailler.
+
+ Permission to use, copy, modify, distribute, and sell this software
+ for any purpose is hereby granted without fee, provided that the above
+ copyright notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting documentation,
+ and that the name of Daniel Dardailler not be used in advertising or
+ publicity pertaining to distribution of the software without specific,
+ written prior permission. Daniel Dardailler makes no representations
+ about the suitability of this software for any purpose. It is
+ provided "as is" without express or implied warranty.
+
+ Modifications Copyright 1999 Matt Koss, under the same license as
+ above.
+ \endlegalese
+ \omit NOTE: The copyright notice is from qmotifdnd_x11.cpp. \endomit
+
+ Note: The Motif Drag \& Drop Protocol only allows receivers to
+ request data in response to a QDropEvent. If you attempt to
+ request data in response to e.g. a QDragMoveEvent, an empty
+ QByteArray is returned.
+*/
diff --git a/doc/src/frameworks-technologies/eventsandfilters.qdoc b/doc/src/frameworks-technologies/eventsandfilters.qdoc
new file mode 100644
index 000000000..52d596a16
--- /dev/null
+++ b/doc/src/frameworks-technologies/eventsandfilters.qdoc
@@ -0,0 +1,235 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group events
+ \title Event Classes
+ \ingroup groups
+
+ \brief Classes used to create and handle events.
+
+ These classes are used to create and handle events.
+
+ For more information see the \link object.html Object model\endlink
+ and \link signalsandslots.html Signals and Slots\endlink.
+*/
+
+/*!
+ \page eventsandfilters.html
+ \title Events and Event Filters
+ \brief A guide to event handling in Qt.
+
+ \ingroup frameworks-technologies
+
+ In Qt, events are objects, derived from the abstract QEvent class,
+ that represent things that have happened either within an application
+ or as a result of outside activity that the application needs to know
+ about. Events can be received and handled by any instance of a
+ QObject subclass, but they are especially relevant to widgets. This
+ document describes how events are delivered and handled in a typical
+ application.
+
+ \tableofcontents
+
+ \section1 How Events are Delivered
+
+ When an event occurs, Qt creates an event object to represent it by
+ constructing an instance of the appropriate QEvent subclass, and
+ delivers it to a particular instance of QObject (or one of its
+ subclasses) by calling its \l{QObject::}{event()} function.
+
+ This function does not handle the event itself; based on the type
+ of event delivered, it calls an event handler for that specific
+ type of event, and sends a response based on whether the event
+ was accepted or ignored.
+
+ \omit
+ Event delivery means that an
+ event has occurred, the QEvent indicates precisely what, and the
+ QObject needs to respond. Most events are specific to QWidget and its
+ subclasses, but there are important events that aren't related to
+ graphics (e.g., \l{QTimer}{timer events}).
+ \endomit
+
+ Some events, such as QMouseEvent and QKeyEvent, come from the
+ window system; some, such as QTimerEvent, come from other sources;
+ some come from the application itself.
+
+ \section1 Event Types
+
+ Most events types have special classes, notably QResizeEvent,
+ QPaintEvent, QMouseEvent, QKeyEvent, and QCloseEvent. Each class
+ subclasses QEvent and adds event-specific functions. For example,
+ QResizeEvent adds \l{QResizeEvent::}{size()} and
+ \l{QResizeEvent::}{oldSize()} to enable widgets to discover how
+ their dimensions have been changed.
+
+ Some classes support more than one actual event type. QMouseEvent
+ supports mouse button presses, double-clicks, moves, and other
+ related operations.
+
+ Each event has an associated type, defined in QEvent::Type, and this
+ can be used as a convenient source of run-time type information to
+ quickly determine which subclass a given event object was constructed
+ from.
+
+ Since programs need to react in varied and complex ways, Qt's
+ event delivery mechanisms are flexible. The documentation for
+ QCoreApplication::notify() concisely tells the whole story; the
+ \e{Qt Quarterly} article
+ \l{http://qt.nokia.com/doc/qq/qq11-events.html}{Another Look at Events}
+ rehashes it less concisely. Here we will explain enough for 95%
+ of applications.
+
+ \section1 Event Handlers
+
+ The normal way for an event to be delivered is by calling a virtual
+ function. For example, QPaintEvent is delivered by calling
+ QWidget::paintEvent(). This virtual function is responsible for
+ reacting appropriately, normally by repainting the widget. If you
+ do not perform all the necessary work in your implementation of the
+ virtual function, you may need to call the base class's implementation.
+
+ For example, the following code handles left mouse button clicks on
+ a custom checkbox widget while passing all other button clicks to the
+ base QCheckBox class:
+
+ \snippet doc/src/snippets/events/events.cpp 0
+
+ If you want to replace the base class's function, you must
+ implement everything yourself. However, if you only want to extend
+ the base class's functionality, then you implement what you want and
+ call the base class to obtain the default behavior for any cases you
+ do not want to handle.
+
+ Occasionally, there isn't such an event-specific function, or the
+ event-specific function isn't sufficient. The most common example
+ involves \key Tab key presses. Normally, QWidget intercepts these to
+ move the keyboard focus, but a few widgets need the \key{Tab} key for
+ themselves.
+
+ These objects can reimplement QObject::event(), the general event
+ handler, and either do their event handling before or after the usual
+ handling, or they can replace the function completely. A very unusual
+ widget that both interprets \key Tab and has an application-specific
+ custom event might contain the following \l{QObject::event()}{event()}
+ function:
+
+ \snippet doc/src/snippets/events/events.cpp 1
+
+ Note that QWidget::event() is still called for all of the cases not
+ handled, and that the return value indicates whether an event was
+ dealt with; a \c true value prevents the event from being sent on
+ to other objects.
+
+ \section1 Event Filters
+
+ Sometimes an object needs to look at, and possibly intercept, the
+ events that are delivered to another object. For example, dialogs
+ commonly want to filter key presses for some widgets; for example,
+ to modify \key{Return}-key handling.
+
+ The QObject::installEventFilter() function enables this by setting
+ up an \e{event filter}, causing a nominated filter object to receive
+ the events for a target object in its QObject::eventFilter()
+ function. An event filter gets to process events before the target
+ object does, allowing it to inspect and discard the events as
+ required. An existing event filter can be removed using the
+ QObject::removeEventFilter() function.
+
+ When the filter object's \l{QObject::}{eventFilter()} implementation
+ is called, it can accept or reject the event, and allow or deny
+ further processing of the event. If all the event filters allow
+ further processing of an event (by each returning \c false), the event
+ is sent to the target object itself. If one of them stops processing
+ (by returning \c true), the target and any later event filters do not
+ get to see the event at all.
+
+ \snippet doc/src/snippets/eventfilters/filterobject.cpp 0
+
+ The above code shows another way to intercept \key{Tab} key press
+ events sent to a particular target widget. In this case, the filter
+ handles the relevant events and returns \c true to stop them from
+ being processed any further. All other events are ignored, and the
+ filter returns \c false to allow them to be sent on to the target
+ widget, via any other event filters that are installed on it.
+
+ It is also possible to filter \e all events for the entire application,
+ by installing an event filter on the QApplication or QCoreApplication
+ object. Such global event filters are called before the object-specific
+ filters. This is very powerful, but it also slows down event delivery
+ of every single event in the entire application; the other techniques
+ discussed should generally be used instead.
+
+ \section1 Sending Events
+
+ Many applications want to create and send their own events. You can
+ send events in exactly the same ways as Qt's own event loop by
+ constructing suitable event objects and sending them with
+ QCoreApplication::sendEvent() and QCoreApplication::postEvent().
+
+ \l{QCoreApplication::}{sendEvent()} processes the event immediately.
+ When it returns, the event filters and/or the object itself have
+ already processed the event. For many event classes there is a function
+ called isAccepted() that tells you whether the event was accepted
+ or rejected by the last handler that was called.
+
+ \l{QCoreApplication::}{postEvent()} posts the event on a queue for
+ later dispatch. The next time Qt's main event loop runs, it dispatches
+ all posted events, with some optimization. For example, if there are
+ several resize events, they are compressed into one. The same
+ applies to paint events: QWidget::update() calls
+ \l{QCoreApplication::}{postEvent()}, which eliminates flickering and
+ increases speed by avoiding multiple repaints.
+
+ \l{QCoreApplication::}{postEvent()} is also used during object
+ initialization, since the posted event will typically be dispatched
+ very soon after the initialization of the object is complete.
+ When implementing a widget, it is important to realise that events
+ can be delivered very early in its lifetime so, in its constructor,
+ be sure to initialize member variables early on, before there's any
+ chance that it might receive an event.
+
+ To create events of a custom type, you need to define an event
+ number, which must be greater than QEvent::User, and you may need to
+ subclass QEvent in order to pass specific information about your
+ custom event. See the QEvent documentation for further details.
+*/
diff --git a/doc/src/frameworks-technologies/gestures.qdoc b/doc/src/frameworks-technologies/gestures.qdoc
new file mode 100644
index 000000000..2fa8dabe9
--- /dev/null
+++ b/doc/src/frameworks-technologies/gestures.qdoc
@@ -0,0 +1,173 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 gestures-overview.html
+ \title Gestures Programming
+ \ingroup frameworks-technologies
+ \startpage index.html Qt Reference Documentation
+
+ \brief An overview of the Qt support for Gesture programming.
+
+ Qt includes a framework for gesture programming that gives has the ability
+ to form gestures from a series of events, independently of the input methods
+ used. A gesture could be a particular movement of a mouse, a touch screen
+ action, or a series of events from some other source. The nature of the input,
+ the interpretation of the gesture and the action taken are the choice of the
+ developer.
+
+ \tableofcontents
+
+ \section1 Overview
+
+ QGesture is the central class in Qt's gesture framework, providing a container
+ for information about gestures performed by the user. QGesture exposes
+ properties that give general information that is common to all gestures, and
+ these can be extended to provide additional gesture-specific information.
+ Common panning, pinching and swiping gestures are represented by specialized
+ classes: QPanGesture, QPinchGesture and QSwipeGesture.
+
+ Developers can also implement new gestures by subclassing and extending the
+ QGestureRecognizer class. Adding support for a new gesture involves implementing
+ code to recognize the gesture from input events. This is described in the
+ \l{Creating Your Own Gesture Recognizer} section.
+
+ \section1 Using Standard Gestures with Widgets
+
+ Gestures can be enabled for instances of QWidget and QGraphicsObject subclasses.
+ An object that accepts gesture input is referred to as a \e{target object}.
+
+ To enable a gesture for a target object, call its QWidget::grabGesture() or
+ QGraphicsObject::grabGesture() function with an argument describing the
+ required gesture type. The standard types are defined by the Qt::GestureType
+ enum and include many commonly used gestures.
+
+ \snippet examples/gestures/imagegestures/imagewidget.cpp enable gestures
+
+ In the above code, the gesture is set up in the constructor of the target object
+ itself.
+
+ When the user performs a gesture, QGestureEvent events will be delivered to the
+ target object, and these can be handled by reimplementing the QWidget::event()
+ handler function for widgets or QGraphicsItem::sceneEvent() for graphics objects.
+
+ For convenience, the \l{Image Gestures Example} reimplements the general
+ \l{QWidget::}{event()} handler function and delegates gesture events to a
+ specialized gestureEvent() function:
+
+ \snippet examples/gestures/imagegestures/imagewidget.cpp event handler
+
+ The gesture events delivered to the target object can be examined individually
+ and dealt with appropriately:
+
+ \snippet examples/gestures/imagegestures/imagewidget.cpp gesture event handler
+
+ Responding to a gesture is simply a matter of obtaining the QGesture object
+ delivered in the QGestureEvent sent to the target object and examining the
+ information it contains.
+
+ \snippet examples/gestures/imagegestures/imagewidget.cpp swipe function
+
+ Here, we examine the direction in which the user swiped the widget and modify
+ its contents accordingly.
+
+
+ \section1 Creating Your Own Gesture Recognizer
+
+ Adding support for a new gesture involves creating and registering a new gesture
+ recognizer. Depending on the recognition process for the gesture, it may also
+ involve creating a new gesture object.
+
+ To create a new recognizer, you need to subclass QGestureRecognizer to create a
+ custom recognizer class. There is one virtual function that you must reimplement
+ and two others that can be reimplemented as required.
+
+ \section2 Filtering Input Events
+
+ The \l{QGestureRecognizer::}{recognize()} function must be reimplemented.
+ This function handles and filters the incoming input events for the target objects
+ and determines whether or not they correspond to the gesture the recognizer is
+ looking for.
+
+ Although the logic for gesture recognition is implemented in this function,
+ possibly using a state machine based on the Qt::GestureState enums, you can store
+ persistent information about the state of the recognition process in the QGesture
+ object supplied.
+
+ Your \l{QGestureRecognizer::}{recognize()} function must return a value of
+ QGestureRecognizer::Result that indicates the state of recognition for a given gesture and
+ target object. This determines whether or not a gesture event will be delivered
+ to a target object.
+
+ \section2 Custom Gestures
+
+ If you choose to represent a gesture by a custom QGesture subclass, you will need to
+ reimplement the \l{QGestureRecognizer::}{create()} function to construct
+ instances of your gesture class instead of standard QGesture instances. Alternatively,
+ you may want to use standard QGesture instances, but add additional dynamic properties
+ to them to express specific details of the gesture you want to handle.
+
+ \section2 Resetting Gestures
+
+ If you use custom gesture objects that need to be reset or otherwise specially
+ handled when a gesture is canceled, you need to reimplement the
+ \l{QGestureRecognizer::}{reset()} function to perform these special tasks.
+
+ Note that QGesture objects are only created once for each combination of target object
+ and gesture type, and they might be reused every time the user attempts to perform the
+ same gesture type on the target object. As a result, it can be useful to reimplement
+ the \l{QGestureRecognizer::}{reset()} function to clean up after each previous attempt
+ at recognizing a gesture.
+
+
+ \section1 Using a New Gesture Recognizer
+
+ To use a gesture recognizer, construct an instance of your QGestureRecognizer
+ subclass, and register it with the application with
+ QGestureRecognizer::registerRecognizer(). A recognizer for a given type of
+ gesture can be removed with QGestureRecognizer::unregisterRecognizer().
+
+
+ \section1 Further Reading
+
+ The \l{gestures/imagegestures}{Image Gestures Example} shows how to enable
+ gestures for a widget in a simple image viewer application.
+*/
diff --git a/doc/src/frameworks-technologies/graphicsview.qdoc b/doc/src/frameworks-technologies/graphicsview.qdoc
new file mode 100644
index 000000000..ba89c7d80
--- /dev/null
+++ b/doc/src/frameworks-technologies/graphicsview.qdoc
@@ -0,0 +1,568 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group graphicsview-api
+ \title Graphics View Classes
+*/
+
+/*!
+ \page graphicsview.html
+ \title The Graphics View Framework
+ \brief An overview of the Graphics View framework for interactive 2D
+ graphics.
+
+ \ingroup frameworks-technologies
+
+ \keyword Graphics View
+ \keyword GraphicsView
+ \keyword Graphics
+ \keyword Canvas
+ \since 4.2
+
+ Graphics View provides a surface for managing and interacting with a large
+ number of custom-made 2D graphical items, and a view widget for
+ visualizing the items, with support for zooming and rotation.
+
+ The framework includes an event propagation architecture that allows
+ precise double-precision interaction capabilities for the items on the
+ scene. Items can handle key events, mouse press, move, release and
+ double click events, and they can also track mouse movement.
+
+ Graphics View uses a BSP (Binary Space Partitioning) tree to provide very
+ fast item discovery, and as a result of this, it can visualize large
+ scenes in real-time, even with millions of items.
+
+ Graphics View was introduced in Qt 4.2, replacing its predecessor,
+ QCanvas. If you are porting from QCanvas, see \l{Porting to Graphics
+ View}.
+
+ Topics:
+
+ \tableofcontents
+
+ \section1 The Graphics View Architecture
+
+ Graphics View provides an item-based approach to model-view programming,
+ much like InterView's convenience classes QTableView, QTreeView and
+ QListView. Several views can observe a single scene, and the scene
+ contains items of varying geometric shapes.
+
+ \section2 The Scene
+
+ QGraphicsScene provides the Graphics View scene. The scene has the
+ following responsibilities:
+
+ \list
+ \o Providing a fast interface for managing a large number of items
+ \o Propagating events to each item
+ \o Managing item state, such as selection and focus handling
+ \o Providing untransformed rendering functionality; mainly for printing
+ \endlist
+
+ The scene serves as a container for QGraphicsItem objects. Items are
+ added to the scene by calling QGraphicsScene::addItem(), and then
+ retrieved by calling one of the many item discovery functions.
+ QGraphicsScene::items() and its overloads return all items contained
+ by or intersecting with a point, a rectangle, a polygon or a general
+ vector path. QGraphicsScene::itemAt() returns the topmost item at a
+ particular point. All item discovery functions return the items in
+ descending stacking order (i.e., the first returned item is topmost,
+ and the last item is bottom-most).
+
+ \snippet doc/src/snippets/code/doc_src_graphicsview.qdoc 0
+
+ QGraphicsScene's event propagation architecture schedules scene events
+ for delivery to items, and also manages propagation between items. If
+ the scene receives a mouse press event at a certain position, the
+ scene passes the event on to whichever item is at that position.
+
+ QGraphicsScene also manages certain item states, such as item
+ selection and focus. You can select items on the scene by calling
+ QGraphicsScene::setSelectionArea(), passing an arbitrary shape. This
+ functionality is also used as a basis for rubberband selection in
+ QGraphicsView. To get the list of all currently selected items, call
+ QGraphicsScene::selectedItems(). Another state handled by
+ QGraphicsScene is whether or not an item has keyboard input focus. You
+ can set focus on an item by calling QGraphicsScene::setFocusItem() or
+ QGraphicsItem::setFocus(), or get the current focus item by calling
+ QGraphicsScene::focusItem().
+
+ Finally, QGraphicsScene allows you to render parts of the scene into a
+ paint device through the QGraphicsScene::render() function. You can
+ read more about this in the Printing section later in this document.
+
+ \section2 The View
+
+ QGraphicsView provides the view widget, which visualizes the contents
+ of a scene. You can attach several views to the same scene, to provide
+ several viewports into the same data set. The view widget is a scroll
+ area, and provides scroll bars for navigating through large scenes. To
+ enable OpenGL support, you can set a QGLWidget as the viewport by
+ calling QGraphicsView::setViewport().
+
+ \snippet doc/src/snippets/code/doc_src_graphicsview.qdoc 1
+
+ The view receives input events from the keyboard and mouse, and
+ translates these to scene events (converting the coordinates used
+ to scene coordinates where appropriate), before sending the events
+ to the visualized scene.
+
+ Using its transformation matrix, QGraphicsView::transform(), the view can
+ \e transform the scene's coordinate system. This allows advanced
+ navigation features such as zooming and rotation. For convenience,
+ QGraphicsView also provides functions for translating between view and
+ scene coordinates: QGraphicsView::mapToScene() and
+ QGraphicsView::mapFromScene().
+
+ \img graphicsview-view.png
+
+ \section2 The Item
+
+ QGraphicsItem is the base class for graphical items in a
+ scene. Graphics View provides several standard items for typical
+ shapes, such as rectangles (QGraphicsRectItem), ellipses
+ (QGraphicsEllipseItem) and text items (QGraphicsTextItem), but the
+ most powerful QGraphicsItem features are available when you write a
+ custom item. Among other things, QGraphicsItem supports the following
+ features:
+
+ \list
+ \o Mouse press, move, release and double click events, as well as mouse
+ hover events, wheel events, and context menu events.
+ \o Keyboard input focus, and key events
+ \o Drag and drop
+ \o Grouping, both through parent-child relationships, and with
+ QGraphicsItemGroup
+ \o Collision detection
+ \endlist
+
+ Items live in a local coordinate system, and like QGraphicsView, it
+ also provides many functions for mapping coordinates between the item
+ and the scene, and from item to item. Also, like QGraphicsView, it can
+ transform its coordinate system using a matrix:
+ QGraphicsItem::transform(). This is useful for rotating and scaling
+ individual items.
+
+ Items can contain other items (children). Parent items'
+ transformations are inherited by all its children. Regardless of an
+ item's accumulated transformation, though, all its functions (e.g.,
+ QGraphicsItem::contains(), QGraphicsItem::boundingRect(),
+ QGraphicsItem::collidesWith()) still operate in local coordinates.
+
+ QGraphicsItem supports collision detection through the
+ QGraphicsItem::shape() function, and QGraphicsItem::collidesWith(),
+ which are both virtual functions. By returning your item's shape as a
+ local coordinate QPainterPath from QGraphicsItem::shape(),
+ QGraphicsItem will handle all collision detection for you. If you want
+ to provide your own collision detection, however, you can reimplement
+ QGraphicsItem::collidesWith().
+
+ \img graphicsview-items.png
+
+ \section1 Classes in the Graphics View Framework
+
+ These classes provide a framework for creating interactive applications.
+
+ \annotatedlist graphicsview-api
+
+ \section1 The Graphics View Coordinate System
+
+ Graphics View is based on the Cartesian coordinate system; items'
+ position and geometry on the scene are represented by sets of two
+ numbers: the x-coordinate, and the y-coordinate. When observing a scene
+ using an untransformed view, one unit on the scene is represented by
+ one pixel on the screen.
+
+ \note The inverted Y-axis coordinate system (where \c y grows upwards)
+ is unsupported as Graphics Views uses Qt's coordinate system.
+
+ There are three effective coordinate systems in play in Graphics View:
+ Item coordinates, scene coordinates, and view coordinates. To simplify
+ your implementation, Graphics View provides convenience functions that
+ allow you to map between the three coordinate systems.
+
+ When rendering, Graphics View's scene coordinates correspond to
+ QPainter's \e logical coordinates, and view coordinates are the same as
+ \e device coordinates. In \l{The Coordinate System}, you can read about
+ the relationship between logical coordinates and device coordinates.
+
+ \img graphicsview-parentchild.png
+
+ \section2 Item Coordinates
+
+ Items live in their own local coordinate system. Their coordinates
+ are usually centered around its center point (0, 0), and this is
+ also the center for all transformations. Geometric primitives in the
+ item coordinate system are often referred to as item points, item
+ lines, or item rectangles.
+
+ When creating a custom item, item coordinates are all you need to
+ worry about; QGraphicsScene and QGraphicsView will perform all
+ transformations for you. This makes it very easy to implement custom
+ items. For example, if you receive a mouse press or a drag enter
+ event, the event position is given in item coordinates. The
+ QGraphicsItem::contains() virtual function, which returns true if a
+ certain point is inside your item, and false otherwise, takes a
+ point argument in item coordinates. Similarly, an item's bounding
+ rect and shape are in item coordinates.
+
+ At item's \e position is the coordinate of the item's center point
+ in its parent's coordinate system; sometimes referred to as \e
+ parent coordinates. The scene is in this sense regarded as all
+ parent-less items' "parent". Top level items' position are in scene
+ coordinates.
+
+ Child coordinates are relative to the parent's coordinates. If the
+ child is untransformed, the difference between a child coordinate
+ and a parent coordinate is the same as the distance between the
+ items in parent coordinates. For example: If an untransformed child
+ item is positioned precisely in its parent's center point, then the
+ two items' coordinate systems will be identical. If the child's
+ position is (10, 0), however, the child's (0, 10) point will
+ correspond to its parent's (10, 10) point.
+
+ Because items' position and transformation are relative to the
+ parent, child items' coordinates are unaffected by the parent's
+ transformation, although the parent's transformation implicitly
+ transforms the child. In the above example, even if the parent is
+ rotated and scaled, the child's (0, 10) point will still correspond
+ to the parent's (10, 10) point. Relative to the scene, however, the
+ child will follow the parent's transformation and position. If the
+ parent is scaled (2x, 2x), the child's position will be at scene
+ coordinate (20, 0), and its (10, 0) point will correspond to the
+ point (40, 0) on the scene.
+
+ With QGraphicsItem::pos() being one of the few exceptions,
+ QGraphicsItem's functions operate in item coordinates, regardless of
+ the item, or any of its parents' transformation. For example, an
+ item's bounding rect (i.e. QGraphicsItem::boundingRect()) is always
+ given in item coordinates.
+
+ \section2 Scene Coordinates
+
+ The scene represents the base coordinate system for all its items.
+ The scene coordinate system describes the position of each top-level
+ item, and also forms the basis for all scene events delivered to the
+ scene from the view. Each item on the scene has a scene position
+ and bounding rectangle (QGraphicsItem::scenePos(),
+ QGraphicsItem::sceneBoundingRect()), in addition to its local item
+ pos and bounding rectangle. The scene position describes the item's
+ position in scene coordinates, and its scene bounding rect forms the
+ basis for how QGraphicsScene determines what areas of the scene have
+ changed. Changes in the scene are communicated through the
+ QGraphicsScene::changed() signal, and the argument is a list of
+ scene rectangles.
+
+ \section2 View Coordinates
+
+ View coordinates are the coordinates of the widget. Each unit in
+ view coordinates corresponds to one pixel. What's special about this
+ coordinate system is that it is relative to the widget, or viewport,
+ and unaffected by the observed scene. The top left corner of
+ QGraphicsView's viewport is always (0, 0), and the bottom right
+ corner is always (viewport width, viewport height). All mouse events
+ and drag and drop events are originally received as view
+ coordinates, and you need to map these coordinates to the scene in
+ order to interact with items.
+
+ \section2 Coordinate Mapping
+
+ Often when dealing with items in a scene, it can be useful to map
+ coordinates and arbitrary shapes from the scene to an item, from
+ item to item, or from the view to the scene. For example, when you
+ click your mouse in QGraphicsView's viewport, you can ask the scene
+ what item is under the cursor by calling
+ QGraphicsView::mapToScene(), followed by
+ QGraphicsScene::itemAt(). If you want to know where in the viewport
+ an item is located, you can call QGraphicsItem::mapToScene() on the
+ item, then QGraphicsView::mapFromScene() on the view. Finally, if
+ you use want to find what items are inside a view ellipse, you can
+ pass a QPainterPath to mapToScene(), and then pass the mapped path
+ to QGraphicsScene::items().
+
+ You can map coordinates and shapes to and from and item's scene by
+ calling QGraphicsItem::mapToScene() and
+ QGraphicsItem::mapFromScene(). You can also map to an item's parent
+ item by calling QGraphicsItem::mapToParent() and
+ QGraphicsItem::mapFromParent(), or between items by calling
+ QGraphicsItem::mapToItem() and QGraphicsItem::mapFromItem(). All
+ mapping functions can map both points, rectangles, polygons and
+ paths.
+
+ The same mapping functions are available in the view, for mapping to
+ and from the scene. QGraphicsView::mapFromScene() and
+ QGraphicsView::mapToScene(). To map from a view to an item, you
+ first map to the scene, and then map from the scene to the item.
+
+ \section1 Key Features
+
+ \section2 Zooming and rotating
+
+ QGraphicsView supports the same affine transformations as QPainter
+ does through QGraphicsView::setMatrix(). By applying a transformation
+ to the view, you can easily add support for common navigation features
+ such as zooming and rotating.
+
+ Here is an example of how to implement zoom and rotate slots in a
+ subclass of QGraphicsView:
+
+ \snippet doc/src/snippets/code/doc_src_graphicsview.qdoc 2
+
+ The slots could be connected to \l{QToolButton}{QToolButtons} with
+ \l{QAbstractButton::autoRepeat}{autoRepeat} enabled.
+
+ QGraphicsView keeps the center of the view aligned when you transform
+ the view.
+
+ See also the \l{Elastic Nodes Example}{Elastic Nodes} example for
+ code that shows how to implement basic zooming features.
+
+ \section2 Printing
+
+ Graphics View provides single-line printing through its rendering
+ functions, QGraphicsScene::render() and QGraphicsView::render(). The
+ functions provide the same API: You can have the scene or the view
+ render all or parts of their contents into any paint device by passing
+ a QPainter to either of the rendering functions. This example shows
+ how to print the whole scene into a full page, using QPrinter.
+
+ \snippet doc/src/snippets/code/doc_src_graphicsview.qdoc 3
+
+ The difference between the scene and view rendering functions is that
+ one operates in scene coordinates, and the other in view coordinates.
+ QGraphicsScene::render() is often preferred for printing whole
+ segments of a scene untransformed, such as for plotting geometrical
+ data, or for printing a text document. QGraphicsView::render(), on the
+ other hand, is suitable for taking screenshots; its default behavior
+ is to render the exact contents of the viewport using the provided
+ painter.
+
+ \snippet doc/src/snippets/code/doc_src_graphicsview.qdoc 4
+
+ When the source and target areas' sizes do not match, the source
+ contents are stretched to fit into the target area. By passing a
+ Qt::AspectRatioMode to the rendering function you are using, you can
+ choose to maintain or ignore the aspect ratio of the scene when the
+ contents are stretched.
+
+ \section2 Drag and Drop
+
+ Because QGraphicsView inherits QWidget indirectly, it already provides
+ the same drag and drop functionality that QWidget provides. In
+ addition, as a convenience, the Graphics View framework provides drag
+ and drop support for the scene, and for each and every item. As the
+ view receives a drag, it translates the drag and drop events into a
+ QGraphicsSceneDragDropEvent, which is then forwarded to the scene. The
+ scene takes over scheduling of this event, and sends it to the first
+ item under the mouse cursor that accepts drops.
+
+ To start a drag from an item, create a QDrag object, passing a pointer
+ to the widget that starts the drag. Items can be observed by many
+ views at the same time, but only one view can start the drag. Drags
+ are in most cases started as a result of pressing or moving the mouse,
+ so in mousePressEvent() or mouseMoveEvent(), you can get the
+ originating widget pointer from the event. For example:
+
+ \snippet doc/src/snippets/code/doc_src_graphicsview.qdoc 5
+
+ To intercept drag and drop events for the scene, you reimplement
+ QGraphicsScene::dragEnterEvent() and whichever event handlers your
+ particular scene needs, in a QGraphicsItem subclass. You can read more
+ about drag and drop in Graphics View in the documentation for each of
+ QGraphicsScene's event handlers.
+
+ Items can enable drag and drop support by calling
+ QGraphicsItem::setAcceptDrops(). To handle the incoming drag,
+ reimplement QGraphicsItem::dragEnterEvent(),
+ QGraphicsItem::dragMoveEvent(), QGraphicsItem::dragLeaveEvent(), and
+ QGraphicsItem::dropEvent().
+
+ See also the \l{Drag and Drop Robot Example}{Drag and Drop Robot} example
+ for a demonstration of Graphics View's support for drag and drop
+ operations.
+
+ \section2 Cursors and Tooltips
+
+ Like QWidget, QGraphicsItem also supports cursors
+ (QGraphicsItem::setCursor()), and tooltips
+ (QGraphicsItem::setToolTip()). The cursors and tooltips are activated
+ by QGraphicsView as the mouse cursor enters the item's area (detected
+ by calling QGraphicsItem::contains()).
+
+ You can also set a default cursor directly on the view by calling
+ QGraphicsView::setCursor().
+
+ See also the \l{Drag and Drop Robot Example}{Drag and Drop Robot}
+ example for code that implements tooltips and cursor shape handling.
+
+ \section2 Animation
+
+ Graphics View supports animation at several levels. You can easily
+ assemble animation by using the Animation Framework. For that you'll
+ need your items to inherit from QGraphicsObject and associate
+ QPropertyAnimation with them. QPropertyAnimation allows to animate any
+ QObject property.
+
+ Another option is to create a custom item that inherits from QObject
+ and QGraphicsItem. The item can the set up its own timers, and control
+ animations with incremental steps in QObject::timerEvent().
+
+ A third option, which is mostly available for compatibility with
+ QCanvas in Qt 3, is to \e advance the scene by calling
+ QGraphicsScene::advance(), which in turn calls
+ QGraphicsItem::advance().
+
+ \section2 OpenGL Rendering
+
+ To enable OpenGL rendering, you simply set a new QGLWidget as the
+ viewport of QGraphicsView by calling QGraphicsView::setViewport(). If
+ you want OpenGL with antialiasing, you need OpenGL sample buffer
+ support (see QGLFormat::sampleBuffers()).
+
+ Example:
+
+ \snippet doc/src/snippets/code/doc_src_graphicsview.qdoc 6
+
+ \section2 Item Groups
+
+ By making an item a child of another, you can achieve the most
+ essential feature of item grouping: the items will move together, and
+ all transformations are propagated from parent to child.
+
+ In addition, QGraphicsItemGroup is a special item that combines child
+ event handling with a useful interface for adding and removing items
+ to and from a group. Adding an item to a QGraphicsItemGroup will keep
+ the item's original position and transformation, whereas reparenting
+ items in general will cause the child to reposition itself relative to
+ its new parent. For convenience, you can create
+ \l{QGraphicsItemGroup}s through the scene by calling
+ QGraphicsScene::createItemGroup().
+
+ \section2 Widgets and Layouts
+
+ Qt 4.4 introduced support for geometry and layout-aware items through
+ QGraphicsWidget. This special base item is similar to QWidget, but
+ unlike QWidget, it doesn't inherit from QPaintDevice; rather from
+ QGraphicsItem instead. This allows you to write complete widgets with
+ events, signals & slots, size hints and policies, and you can also
+ manage your widgets geometries in layouts through
+ QGraphicsLinearLayout and QGraphicsGridLayout.
+
+ \section3 QGraphicsWidget
+
+ Building on top of QGraphicsItem's capabilities and lean footprint,
+ QGraphicsWidget provides the best of both worlds: extra
+ functionality from QWidget, such as the style, font, palette, layout
+ direction, and its geometry, and resolution independence and
+ transformation support from QGraphicsItem. Because Graphics View
+ uses real coordinates instead of integers, QGraphicsWidget's
+ geometry functions also operate on QRectF and QPointF. This also
+ applies to frame rects, margins and spacing. With QGraphicsWidget
+ it's not uncommon to specify contents margins of (0.5, 0.5, 0.5,
+ 0.5), for example. You can create both subwidgets and "top-level"
+ windows; in some cases you can now use Graphics View for advanced
+ MDI applications.
+
+ Some of QWidget's properties are supported, including window flags
+ and attributes, but not all. You should refer to QGraphicsWidget's
+ class documentation for a complete overview of what is and what is
+ not supported. For example, you can create decorated windows by
+ passing the Qt::Window window flag to QGraphicsWidget's constructor,
+ but Graphics View currently doesn't support the Qt::Sheet and
+ Qt::Drawer flags that are common on Mac OS X.
+
+ The capabilities of QGraphicsWidget are expected to grow depending
+ on community feedback.
+
+ \section3 QGraphicsLayout
+
+ QGraphicsLayout is part of a second-generation layout framework
+ designed specifically for QGraphicsWidget. Its API is very similar
+ to that of QLayout. You can manage widgets and sublayouts inside
+ either QGraphicsLinearLayout and QGraphicsGridLayout. You can also
+ easily write your own layout by subclassing QGraphicsLayout
+ yourself, or add your own QGraphicsItem items to the layout by
+ writing an adaptor subclass of QGraphicsLayoutItem.
+
+ \section2 Embedded Widget Support
+
+ Graphics View provides seamless support for embedding any widget
+ into the scene. You can embed simple widgets, such as QLineEdit or
+ QPushButton, complex widgets such as QTabWidget, and even complete
+ main windows. To embed your widget to the scene, simply call
+ QGraphicsScene::addWidget(), or create an instance of
+ QGraphicsProxyWidget to embed your widget manually.
+
+ Through QGraphicsProxyWidget, Graphics View is able to deeply
+ integrate the client widget features including its cursors,
+ tooltips, mouse, tablet and keyboard events, child widgets,
+ animations, pop-ups (e.g., QComboBox or QCompleter), and the widget's
+ input focus and activation. QGraphicsProxyWidget even integrates the
+ embedded widget's tab order so that you can tab in and out of
+ embedded widgets. You can even embed a new QGraphicsView into your
+ scene to provide complex nested scenes.
+
+ When transforming an embedded widget, Graphics View makes sure that
+ the widget is transformed resolution independently, allowing the
+ fonts and style to stay crisp when zoomed in. (Note that the effect
+ of resolution independence depends on the style.)
+
+ \section1 Performance
+
+ \section2 Floating Point Instructions
+
+ In order to accurately and quickly apply transformations and effects to
+ items, Graphics View is built with the assumption that the user's hardware
+ is able to provide reasonable performance for floating point instructions.
+
+ Many workstations and desktop computers are equipped with suitable hardware
+ to accelerate this kind of computation, but some embedded devices may only
+ provide libraries to handle mathematical operations or emulate floating
+ point instructions in software.
+
+ As a result, certain kinds of effects may be slower than expected on certain
+ devices. It may be possible to compensate for this performance hit by making
+ optimizations in other areas; for example, by using \l{#OpenGL Rendering}{OpenGL}
+ to render a scene. However, any such optimizations may themselves cause a
+ reduction in performance if they also rely on the presence of floating point
+ hardware.
+*/
diff --git a/doc/src/frameworks-technologies/implicit-sharing.qdoc b/doc/src/frameworks-technologies/implicit-sharing.qdoc
new file mode 100644
index 000000000..a87595fa3
--- /dev/null
+++ b/doc/src/frameworks-technologies/implicit-sharing.qdoc
@@ -0,0 +1,152 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/* TODO: Move some of the documentation from QSharedDataPointer into this
+ document. */
+
+/*!
+ \group shared
+ \title Implicitly Shared Classes
+*/
+
+/*!
+ \page implicit-sharing.html
+ \title Implicit Sharing
+ \ingroup frameworks-technologies
+
+ \brief Reference counting for fast copying.
+
+ \keyword implicit data sharing
+ \keyword implicit sharing
+ \keyword implicitly shared
+ \keyword reference counting
+ \keyword shared implicitly
+ \keyword shared classes
+
+ Many C++ classes in Qt use implicit data sharing to maximize
+ resource usage and minimize copying. Implicitly shared classes are
+ both safe and efficient when passed as arguments, because only a
+ pointer to the data is passed around, and the data is copied only
+ if and when a function writes to it, i.e., \e {copy-on-write}.
+
+ \tableofcontents
+
+ \section1 Overview
+
+ A shared class consists of a pointer to a shared data block that
+ contains a reference count and the data.
+
+ When a shared object is created, it sets the reference count to 1. The
+ reference count is incremented whenever a new object references the
+ shared data, and decremented when the object dereferences the shared
+ data. The shared data is deleted when the reference count becomes
+ zero.
+
+ \keyword deep copy
+ \keyword shallow copy
+
+ When dealing with shared objects, there are two ways of copying an
+ object. We usually speak about \e deep and \e shallow copies. A deep
+ copy implies duplicating an object. A shallow copy is a reference
+ copy, i.e. just a pointer to a shared data block. Making a deep copy
+ can be expensive in terms of memory and CPU. Making a shallow copy is
+ very fast, because it only involves setting a pointer and incrementing
+ the reference count.
+
+ Object assignment (with operator=()) for implicitly shared objects is
+ implemented using shallow copies.
+
+ The benefit of sharing is that a program does not need to duplicate
+ data unnecessarily, which results in lower memory use and less copying
+ of data. Objects can easily be assigned, sent as function arguments,
+ and returned from functions.
+
+ Implicit sharing takes place behind the scenes; the programmer
+ does not need to worry about it. Even in multithreaded
+ applications, implicit sharing takes place, as explained in
+ \l{Thread-Support in Qt Modules#Threads and Implicitly Shared Classes}
+ {Threads and Implicitly Shared Classes}.
+
+ When implementing your own implicitly shared classes, use the
+ QSharedData and QSharedDataPointer classes.
+
+ \section1 Implicit Sharing in Detail
+
+ Implicit sharing automatically detaches the object from a shared
+ block if the object is about to change and the reference count is
+ greater than one. (This is often called \e {copy-on-write} or
+ \e {value semantics}.)
+
+ An implicitly shared class has total control of its internal data. In
+ any member functions that modify its data, it automatically detaches
+ before modifying the data.
+
+ The QPen class, which uses implicit sharing, detaches from the shared
+ data in all member functions that change the internal data.
+
+ Code fragment:
+ \snippet doc/src/snippets/code/doc_src_groups.qdoc 0
+
+
+ \section1 List of Classes
+
+ The classes listed below automatically detach from common data if
+ an object is about to be changed. The programmer will not even
+ notice that the objects are shared. Thus you should treat
+ separate instances of them as separate objects. They will always
+ behave as separate objects but with the added benefit of sharing
+ data whenever possible. For this reason, you can pass instances
+ of these classes as arguments to functions by value without
+ concern for the copying overhead.
+
+ Example:
+ \snippet doc/src/snippets/code/doc_src_groups.qdoc 1
+
+ In this example, \c p1 and \c p2 share data until QPainter::begin()
+ is called for \c p2, because painting a pixmap will modify it.
+
+ \warning Do not copy an implicitly shared container (QMap,
+ QVector, etc.) while you are iterating over it using an non-const
+ \l{STL-style iterator}.
+
+ \keyword implicitly shared classes
+ \annotatedlist shared
+*/
diff --git a/doc/src/frameworks-technologies/ipc.qdoc b/doc/src/frameworks-technologies/ipc.qdoc
new file mode 100644
index 000000000..0402237fc
--- /dev/null
+++ b/doc/src/frameworks-technologies/ipc.qdoc
@@ -0,0 +1,89 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 ipc.html
+ \title Inter-Process Communication in Qt
+ \brief Inter-Process communication in Qt applications.
+
+ \ingroup frameworks-technologies
+
+ Qt provides several ways to implement Inter-Process Communication
+ (IPC) in Qt applications.
+
+ \section1 TCP/IP
+
+ The cross-platform \l{QtNetwork} module provides classes that make
+ network programming portable and easy. It offers high-level
+ classes (e.g., QNetworkAccessManager, QFtp) that communicate using
+ specific application-level protocols, and lower-level classes
+ (e.g., QTcpSocket, QTcpServer, QSslSocket) for implementing
+ protocols.
+
+ \section1 Shared Memory
+
+ The cross-platform shared memory class, QSharedMemory, provides
+ access to the operating system's shared memory implementation.
+ It allows safe access to shared memory segments by multiple threads
+ and processes. Additionally, QSystemSemaphore can be used to control
+ access to resources shared by the system, as well as to communicate
+ between processes.
+
+ \section1 D-Bus
+
+ The \l{QtDBus} module is a Unix-only library
+ you can use to implement IPC using the D-Bus protocol. It extends
+ Qt's \l{signalsandslots.html} {Signals and Slots} mechanism to the
+ IPC level, allowing a signal emitted by one process to be
+ connected to a slot in another process. This \l {Introduction to
+ D-Bus} page has detailed information on how to use the \l{QtDBus}
+ module.
+
+ \section1 Qt COmmunications Protocol (QCOP)
+
+ The QCopChannel class implements a protocol for transferring messages
+ between client processes across named channels. QCopChannel is
+ only available in \l{Qt for Embedded Linux}. Like the \l{QtDBus}
+ module, QCOP extends Qt's \l{Signals and Slots} mechanism to the
+ IPC level, allowing a signal emitted by one process to be
+ connected to a slot in another process, but unlike QtDBus, QCOP
+ does not depend on a third party library.
+*/
diff --git a/doc/src/frameworks-technologies/model-view-programming.qdoc b/doc/src/frameworks-technologies/model-view-programming.qdoc
new file mode 100644
index 000000000..f0f20b48d
--- /dev/null
+++ b/doc/src/frameworks-technologies/model-view-programming.qdoc
@@ -0,0 +1,2501 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group model-view
+ \title Model/View Classes
+*/
+
+/*!
+ \page model-view-programming.html
+ \nextpage An Introduction to Model/View Programming
+ \startpage index.html Qt Reference Documentation
+
+ \title Model/View Programming
+ \brief A guide to the extensible model/view architecture used by Qt's
+ item view classes.
+
+ \ingroup frameworks-technologies
+
+ \list
+ \o \l{An Introduction to Model/View Programming}
+ \tableofcontents{1 An Introduction to Model/View Programming}
+ \o \l{Using Models and Views}
+ \tableofcontents{1 Using Models and Views}
+ \o \l{Model Classes}
+ \tableofcontents{1 Model Classes}
+ \o \l{Creating New Models}
+ \tableofcontents{1 Creating New Models}
+ \o \l{View Classes}
+ \tableofcontents{1 View Classes}
+ \o \l{Handling Selections in Item Views}
+ \tableofcontents{1 Handling Selections in Item Views}
+ \o \l{Delegate Classes}
+ \tableofcontents{1 Delegate Classes}
+ \o \l{Item View Convenience Classes}
+ \tableofcontents{1 Item View Convenience Classes}
+ \o \l{Using Drag and Drop with Item Views}
+ \tableofcontents{1 Using Drag and Drop with Item Views}
+ \o \l{Proxy Models}
+ \tableofcontents{1 Proxy Models}
+ \o \l{Model Subclassing Reference}
+ \tableofcontents{1 Model Subclassing Reference}
+ \endlist
+
+ \keyword Model/View Classes
+ \section1 All Model/View Classes
+
+ These classes use the model/view design pattern in which the
+ underlying data (in the model) is kept separate from the way the data
+ is presented and manipulated by the user (in the view).
+
+ \annotatedlist model-view
+
+ \section1 Related Examples
+
+ \list
+ \o \l{itemviews/dirview}{Dir View}
+ \o \l{itemviews/spinboxdelegate}{Spin Box Delegate}
+ \o \l{itemviews/pixelator}{Pixelator}
+ \o \l{itemviews/simpletreemodel}{Simple Tree Model}
+ \o \l{itemviews/chart}{Chart}
+ \endlist
+*/
+
+/*!
+ \page model-view-introduction.html
+ \previouspage Model/View Programming
+ \nextpage Using Models and Views
+ \startpage index.html Qt Reference Documentation
+
+ \title An Introduction to Model/View Programming
+
+ \tableofcontents
+
+ Qt 4 introduces a new set of item view classes that use a model/view
+ architecture to manage the relationship between data and the way it
+ is presented to the user. The separation of functionality introduced by
+ this architecture gives developers greater flexibility to customize the
+ presentation of items, and provides a standard model interface to allow
+ a wide range of data sources to be used with existing item views.
+ In this document, we give a brief introduction to the model/view paradigm,
+ outline the concepts involved, and describe the architecture of the item
+ view system. Each of the components in the architecture is explained,
+ and examples are given that show how to use the classes provided.
+
+ \section1 The Model/View Architecture
+
+ Model-View-Controller (MVC) is a design pattern originating from
+ Smalltalk that is often used when building user interfaces.
+ In \l{Design Patterns}, Gamma et al. write:
+
+ \quotation
+ MVC consists of three kinds of objects. The Model is the application
+ object, the View is its screen presentation, and the Controller defines
+ the way the user interface reacts to user input. Before MVC, user
+ interface designs tended to lump these objects together. MVC decouples
+ them to increase flexibility and reuse.
+ \endquotation
+
+ If the view and the controller objects are combined, the result is
+ the model/view architecture. This still separates the way that data
+ is stored from the way that it is presented to the user, but provides
+ a simpler framework based on the same principles. This separation
+ makes it possible to display the same data in several different views,
+ and to implement new types of views, without changing the underlying
+ data structures.
+ To allow flexible handling of user input, we introduce the concept of
+ the \e delegate. The advantage of having a delegate in this framework
+ is that it allows the way items of data are rendered and edited to be
+ customized.
+
+ \table
+ \row \i \inlineimage modelview-overview.png
+ \i \bold{The model/view architecture}
+
+ The model communicates with a source of data, providing an \e interface
+ for the other components in the architecture. The nature of the
+ communication depends on the type of data source, and the way the model
+ is implemented.
+
+ The view obtains \e{model indexes} from the model; these are references
+ to items of data. By supplying model indexes to the model, the view can
+ retrieve items of data from the data source.
+
+ In standard views, a \e delegate renders the items of data. When an item
+ is edited, the delegate communicates with the model directly using
+ model indexes.
+ \endtable
+
+ Generally, the model/view classes can be separated into the three groups
+ described above: models, views, and delegates. Each of these components
+ is defined by \e abstract classes that provide common interfaces and,
+ in some cases, default implementations of features.
+ Abstract classes are meant to be subclassed in order to provide the full
+ set of functionality expected by other components; this also allows
+ specialized components to be written.
+
+ Models, views, and delegates communicate with each other using \e{signals
+ and slots}:
+
+ \list
+ \o Signals from the model inform the view about changes to the data
+ held by the data source.
+ \o Signals from the view provide information about the user's interaction
+ with the items being displayed.
+ \o Signals from the delegate are used during editing to tell the
+ model and view about the state of the editor.
+ \endlist
+
+ \section2 Models
+
+ All item models are based on the QAbstractItemModel class. This class
+ defines an interface that is used by views and delegates to access data.
+ The data itself does not have to be stored in the model; it can be held
+ in a data structure or repository provided by a separate class, a file,
+ a database, or some other application component.
+
+ The basic concepts surrounding models are presented in the section
+ on \l{Model Classes}.
+
+ QAbstractItemModel
+ provides an interface to data that is flexible enough to handle views
+ that represent data in the form of tables, lists, and trees. However,
+ when implementing new models for list and table-like data structures,
+ the QAbstractListModel and QAbstractTableModel classes are better
+ starting points because they provide appropriate default implementations
+ of common functions. Each of these classes can be subclassed to provide
+ models that support specialized kinds of lists and tables.
+
+ The process of subclassing models is discussed in the section on
+ \l{Creating New Models}.
+
+ Qt provides some ready-made models that can be used to handle items of
+ data:
+
+ \list
+ \o QStringListModel is used to store a simple list of QString items.
+ \o QStandardItemModel manages more complex tree structures of items, each
+ of which can contain arbitrary data.
+ \o QFileSystemModel provides information about files and directories in the
+ local filing system.
+ \o QSqlQueryModel, QSqlTableModel, and QSqlRelationalTableModel are used
+ to access databases using model/view conventions.
+ \endlist
+
+ If these standard models do not meet your requirements, you can subclass
+ QAbstractItemModel, QAbstractListModel, or QAbstractTableModel to create
+ your own custom models.
+
+ \section2 Views
+
+ Complete implementations are provided for different kinds of
+ views: QListView displays a list of items, QTableView displays data
+ from a model in a table, and QTreeView shows model items of data in a
+ hierarchical list. Each of these classes is based on the
+ QAbstractItemView abstract base class. Although these classes are
+ ready-to-use implementations, they can also be subclassed to provide
+ customized views.
+
+ The available views are examined in the section on \l{View Classes}.
+
+ \section2 Delegates
+
+ QAbstractItemDelegate is the abstract base class for delegates in the
+ model/view framework. Since Qt 4.4, the default delegate implementation is
+ provided by QStyledItemDelegate, and this is used as the default delegate
+ by Qt's standard views. However, QStyledItemDelegate and QItemDelegate are
+ independent alternatives to painting and providing editors for items in
+ views. The difference between them is that QStyledItemDelegate uses the
+ current style to paint its items. We therefore recommend using
+ QStyledItemDelegate as the base class when implementing custom delegates or
+ when working with Qt style sheets.
+
+ Delegates are described in the section on \l{Delegate Classes}.
+
+ \section2 Sorting
+
+ There are two ways of approaching sorting in the model/view
+ architecture; which approach to choose depends on your underlying
+ model.
+
+ If your model is sortable, i.e, if it reimplements the
+ QAbstractItemModel::sort() function, both QTableView and QTreeView
+ provide an API that allows you to sort your model data
+ programmatically. In addition, you can enable interactive sorting
+ (i.e. allowing the users to sort the data by clicking the view's
+ headers), by connecting the QHeaderView::sortIndicatorChanged() signal
+ to the QTableView::sortByColumn() slot or the
+ QTreeView::sortByColumn() slot, respectively.
+
+ The alternative approach, if your model do not have the required
+ interface or if you want to use a list view to present your data,
+ is to use a proxy model to transform the structure of your model
+ before presenting the data in the view. This is covered in detail
+ in the section on \l {Proxy Models}.
+
+ \section2 Convenience Classes
+
+ A number of \e convenience classes are derived from the standard view
+ classes for the benefit of applications that rely on Qt's item-based
+ item view and table classes. They are not intended to be subclassed,
+ but simply exist to provide a familiar interface to the equivalent classes
+ in Qt 3.
+ Examples of such classes include \l QListWidget, \l QTreeWidget, and
+ \l QTableWidget; these provide similar behavior to the \c QListBox,
+ \c QListView, and \c QTable classes in Qt 3.
+
+ These classes are less flexible than the view classes, and cannot be
+ used with arbitrary models. We recommend that you use a model/view
+ approach to handling data in item views unless you strongly need an
+ item-based set of classes.
+
+ If you wish to take advantage of the features provided by the model/view
+ approach while still using an item-based interface, consider using view
+ classes, such as QListView, QTableView, and QTreeView with
+ QStandardItemModel.
+
+ \section1 The Model/View Components
+
+ The following sections describe the way in which the model/view pattern
+ is used in Qt. Each section provides an example of use, and is followed
+ by a section showing how you can create new components.
+*/
+
+/*!
+ \page model-view-using.html
+ \contentspage model-view-programming.html Contents
+ \previouspage An Introduction to Model/View Programming
+ \nextpage Model Classes
+
+ \title Using Models and Views
+
+ \tableofcontents
+
+ \section1 Introduction
+
+ Two of the standard models provided by Qt are QStandardItemModel and
+ QFileSystemModel. QStandardItemModel is a multi-purpose model that can be
+ used to represent various different data structures needed by list, table,
+ and tree views. This model also holds the items of data.
+ QFileSystemModel is a model that maintains information about the contents
+ of a directory. As a result, it does not hold any items of data itself, but
+ simply represents files and directories on the local filing system.
+
+ QFileSystemModel provides a ready-to-use model to experiment with, and can be
+ easily configured to use existing data. Using this model, we can show how
+ to set up a model for use with ready-made views, and explore how to
+ manipulate data using model indexes.
+
+ \section1 Using Views with an Existing Model
+
+ The QListView and QTreeView classes are the most suitable views
+ to use with QFileSystemModel. The example presented below displays the
+ contents of a directory in a tree view next to the same information in
+ a list view. The views share the user's selection so that the selected
+ items are highlighted in both views.
+
+ \img shareddirmodel.png
+
+ We set up a QFileSystemModel so that it is ready for use, and create some
+ views to display the contents of a directory. This shows the simplest
+ way to use a model. The construction and use of the model is
+ performed from within a single \c main() function:
+
+ \snippet doc/src/snippets/shareddirmodel/main.cpp 0
+
+ The model is set up to use data from a certain file system. The call to
+ \l{QFileSystemModel::}{setRootPath()} tell the model which drive on the
+ file system to expose to the views.
+
+ We create two views so that we can examine the items held in the model in two
+ different ways:
+
+ \snippet doc/src/snippets/shareddirmodel/main.cpp 5
+
+ The views are constructed in the same way as other widgets. Setting up
+ a view to display the items in the model is simply a matter of calling its
+ \l{QAbstractItemView::setModel()}{setModel()} function with the directory
+ model as the argument. We filter the data supplied by the model by calling
+ the \l{QAbstractItemView::}{setRootIndex()} function on each view, passing
+ a suitable \e{model index} from the file system model for the current
+ directory.
+
+ The \c index() function used in this case is unique to QFileSystemModel; we
+ supply it with a directory and it returns a model index. Model indexes are
+ discussed in the \l{Model Classes} chapter.
+
+ The rest of the function just displays the views within a splitter
+ widget, and runs the application's event loop:
+
+ \snippet doc/src/snippets/shareddirmodel/main.cpp 8
+
+ In the above example, we neglected to mention how to handle selections
+ of items. This subject is covered in more detail in the chapter on
+ \l{Handling Selections in Item Views}. Before examining how selections
+ are handled, you may find it useful to read the \l{Model Classes} chapter
+ which describes the concepts used in the model/view framework.
+*/
+
+/*!
+ \page model-view-model.html
+ \contentspage model-view-programming.html Contents
+ \previouspage Using Models and Views
+ \nextpage Creating New Models
+
+ \title Model Classes
+
+ \tableofcontents
+
+ \section1 Basic Concepts
+
+ In the model/view architecture, the model provides a standard interface
+ that views and delegates use to access data. In Qt, the standard
+ interface is defined by the QAbstractItemModel class. No matter how the
+ items of data are stored in any underlying data structure, all subclasses
+ of QAbstractItemModel represent the data as a hierarchical structure
+ containing tables of items. Views use this \e convention to access items
+ of data in the model, but they are not restricted in the way that they
+ present this information to the user.
+
+ \image modelview-models.png
+
+ Models also notify any attached views about changes to data through the
+ signals and slots mechanism.
+
+ This chapter describes some basic concepts that are central to the way
+ item of data are accessed by other components via a model class. More
+ advanced concepts are discussed in later chapters.
+
+ \section2 Model Indexes
+
+ To ensure that the representation of the data is kept separate from the
+ way it is accessed, the concept of a \e{model index} is introduced. Each
+ piece of information that can be obtained via a model is represented by
+ a model index. Views and delegates use these indexes to request items of
+ data to display.
+
+ As a result, only the model needs to know how to obtain data, and the type
+ of data managed by the model can be defined fairly generally. Model indexes
+ contain a pointer to the model that created them, and this prevents
+ confusion when working with more than one model.
+
+ \snippet doc/src/snippets/code/doc_src_model-view-programming.qdoc 0
+
+ Model indexes provide \e temporary references to pieces of information, and
+ can be used to retrieve or modify data via the model. Since models may
+ reorganize their internal structures from time to time, model indexes may
+ become invalid, and \e{should not be stored}. If a long-term reference to a
+ piece of information is required, a \e{persistent model index} must be
+ created. This provides a reference to the information that the model keeps
+ up-to-date. Temporary model indexes are provided by the QModelIndex class,
+ and persistent model indexes are provided by the QPersistentModelIndex
+ class.
+
+ To obtain a model index that corresponds to an item of data, three
+ properties must be specified to the model: a row number, a column number,
+ and the model index of a parent item. The following sections describe
+ and explain these properties in detail.
+
+ \section2 Rows and Columns
+
+ In its most basic form, a model can be accessed as a simple table in which
+ items are located by their row and column numbers. \e{This does not mean
+ that the underlying pieces of data are stored in an array structure}; the
+ use of row and column numbers is only a convention to allow components to
+ communicate with each other. We can retrieve information about any given
+ item by specifying its row and column numbers to the model, and we receive
+ an index that represents the item:
+
+ \snippet doc/src/snippets/code/doc_src_model-view-programming.qdoc 1
+
+ Models that provide interfaces to simple, single level data structures like
+ lists and tables do not need any other information to be provided but, as
+ the above code indicates, we need to supply more information when obtaining
+ a model index.
+
+ \table
+ \row \i \inlineimage modelview-tablemodel.png
+ \i \bold{Rows and columns}
+
+ The diagram shows a representation of a basic table model in which each
+ item is located by a pair of row and column numbers. We obtain a model
+ index that refers to an item of data by passing the relevant row and
+ column numbers to the model.
+
+ \snippet doc/src/snippets/code/doc_src_model-view-programming.qdoc 2
+
+ Top level items in a model are always referenced by specifying
+ \c QModelIndex() as their parent item. This is discussed in the next
+ section.
+ \endtable
+
+ \section2 Parents of Items
+
+ The table-like interface to item data provided by models is ideal when
+ using data in a table or list view; the row and column number system maps
+ exactly to the way the views display items. However, structures such as
+ tree views require the model to expose a more flexible interface to the
+ items within. As a result, each item can also be the parent of another
+ table of items, in much the same way that a top-level item in a tree view
+ can contain another list of items.
+
+ When requesting an index for a model item, we must provide some information
+ about the item's parent. Outside the model, the only way to refer to an
+ item is through a model index, so a parent model index must also be given:
+
+ \snippet doc/src/snippets/code/doc_src_model-view-programming.qdoc 3
+
+ \table
+ \row \i \inlineimage modelview-treemodel.png
+ \i \bold{Parents, rows, and columns}
+
+ The diagram shows a representation of a tree model in which each item is
+ referred to by a parent, a row number, and a column number.
+
+ Items "A" and "C" are represented as top-level siblings in the model:
+
+ \snippet doc/src/snippets/code/doc_src_model-view-programming.qdoc 4
+
+ Item "A" has a number of children. A model index for item "B" is
+ obtained with the following code:
+
+ \snippet doc/src/snippets/code/doc_src_model-view-programming.qdoc 5
+ \endtable
+
+ \section2 Item Roles
+
+ Items in a model can perform various \e roles for other components,
+ allowing different kinds of data to be supplied for different situations.
+ For example, Qt::DisplayRole is used to access a string that can be
+ displayed as text in a view. Typically, items contain data for a number of
+ different roles, and the standard roles are defined by Qt::ItemDataRole.
+
+ We can ask the model for the item's data by passing it the model index
+ corresponding to the item, and by specifying a role to obtain the type
+ of data we want:
+
+ \snippet doc/src/snippets/code/doc_src_model-view-programming.qdoc 6
+
+ \table
+ \row \i \inlineimage modelview-roles.png
+ \i \bold{Item roles}
+
+ The role indicates to the model which type of data is being referred to.
+ Views can display the roles in different ways, so it is important to
+ supply appropriate information for each role.
+
+ The \l{Creating New Models} section covers some specific uses of roles in
+ more detail.
+ \endtable
+
+ Most common uses for item data are covered by the standard roles defined in
+ Qt::ItemDataRole. By supplying appropriate item data for each role, models
+ can provide hints to views and delegates about how items should be
+ presented to the user. Different kinds of views have the freedom to
+ interpret or ignore this information as required. It is also possible to
+ define additional roles for application-specific purposes.
+
+ \section2 Summary of Concepts
+
+ \list
+ \o Model indexes give views and delegates information about the location
+ of items provided by models in a way that is independent of any
+ underlying data structures.
+ \o Items are referred to by their row and column numbers, and by the model
+ index of their parent items.
+ \o Model indexes are constructed by models at the request of other
+ components, such as views and delegates.
+ \o If a valid model index is specified for the parent item when an index is
+ requested using \l{QAbstractItemModel::index()}{index()}, the index
+ returned will refer to an item beneath that parent item in the
+ model.
+ The index obtained refers to a child of that item.
+ \o If an invalid model index is specified for the parent item when an index
+ is requested using \l{QAbstractItemModel::index()}{index()}, the index
+ returned will refer to a top-level item in the model.
+ \o The \l{Qt::ItemDataRole}{role} distinguishes between the
+ different kinds of data associated with an item.
+ \endlist
+
+ \section2 Using Model Indexes
+
+ To demonstrate how data can be retrieved from a model, using model
+ indexes, we set up a QFileSystemModel without a view and display the
+ names of files and directories in a widget.
+ Although this does not show a normal way of using a model, it demonstrates
+ the conventions used by models when dealing with model indexes.
+
+ We construct a file system model in the following way:
+
+ \snippet doc/src/snippets/simplemodel-use/main.cpp 0
+
+ In this case, we set up a default QFileSystemModel, obtain a parent index
+ using a specific implementation of \l{QFileSystemModel::}{index()}
+ provided by that model, and we count the number of rows in the model using
+ the \l{QFileSystemModel::}{rowCount()} function.
+
+ For simplicity, we are only interested in the items in the first column
+ of the model. We examine each row in turn, obtaining a model index for
+ the first item in each row, and read the data stored for that item
+ in the model.
+
+ \snippet doc/src/snippets/simplemodel-use/main.cpp 1
+
+ To obtain a model index, we specify the row number, column number (zero
+ for the first column), and the appropriate model index for the parent
+ of all the items that we want.
+ The text stored in each item is retrieved using the model's
+ \l{QFileSystemModel::}{data()} function. We specify the model index and
+ the \l{Qt::ItemDataRole}{DisplayRole} to obtain data for the
+ item in the form of a string.
+
+ \snippet doc/src/snippets/simplemodel-use/main.cpp 2
+ \codeline
+ \snippet doc/src/snippets/simplemodel-use/main.cpp 3
+
+ The above example demonstrates the basic principles used to retrieve
+ data from a model:
+
+ \list
+ \i The dimensions of a model can be found using
+ \l{QAbstractItemModel::rowCount()}{rowCount()} and
+ \l{QAbstractItemModel::columnCount()}{columnCount()}.
+ These functions generally require a parent model index to be
+ specified.
+ \i Model indexes are used to access items in the model. The row, column,
+ and parent model index are needed to specify the item.
+ \i To access top-level items in a model, specify a null model index
+ as the parent index with \c QModelIndex().
+ \i Items contain data for different roles. To obtain the data for a
+ particular role, both the model index and the role must be supplied
+ to the model.
+ \endlist
+
+
+ \section1 Further Reading
+
+ New models can be created by implementing the standard interface provided
+ by QAbstractItemModel. In the \l{Creating New Models} chapter, we will
+ demonstrate this by creating a convenient ready-to-use model for holding
+ lists of strings.
+*/
+
+/*!
+ \page model-view-view.html
+ \contentspage model-view-programming.html Contents
+ \previouspage Creating New Models
+ \nextpage Handling Selections in Item Views
+
+ \title View Classes
+
+ \tableofcontents
+
+ \section1 Concepts
+
+ In the model/view architecture, the view obtains items of data from the
+ model and presents them to the user. The way that the data is
+ presented need not resemble the representation of the data provided by
+ the model, and may be \e{completely different} from the underlying data
+ structure used to store items of data.
+
+ The separation of content and presentation is achieved by the use of a
+ standard model interface provided by QAbstractItemModel, a standard view
+ interface provided by QAbstractItemView, and the use of model indexes
+ that represent items of data in a general way.
+ Views typically manage the overall layout of the data obtained from
+ models. They may render individual items of data themselves, or use
+ \l{Delegate Classes}{delegates} to handle both rendering and editing
+ features.
+
+ As well as presenting data, views handle navigation between items,
+ and some aspects of item selection. The views also implement basic
+ user interface features, such as context menus and drag and drop.
+ A view can provide default editing facilities for items, or it may
+ work with a \l{Delegate Classes}{delegate} to provide a custom
+ editor.
+
+ A view can be constructed without a model, but a model must be
+ provided before it can display useful information. Views keep track of
+ the items that the user has selected through the use of
+ \l{Handling Selections in Item Views}{selections} which can be maintained
+ separately for each view, or shared between multiple views.
+
+ Some views, such as QTableView and QTreeView, display headers as well
+ as items. These are also implemented by a view class, QHeaderView.
+ Headers usually access the same model as the view that contains them.
+ They retrieve data from the model using the
+ \l{QAbstractItemModel::headerData()} function, and usually display
+ header information in the form of a label. New headers can be
+ subclassed from the QHeaderView class to provide more specialized
+ labels for views.
+
+ \section1 Using an Existing View
+
+ Qt provides three ready-to-use view classes that present data from
+ models in ways that are familiar to most users.
+ QListView can display items from a model as a simple list, or in the
+ form of a classic icon view. QTreeView displays items from a
+ model as a hierarchy of lists, allowing deeply nested structures to be
+ represented in a compact way. QTableView presents items from a model
+ in the form of a table, much like the layout of a spreadsheet
+ application.
+
+ \img standard-views.png
+
+ The default behavior of the standard views shown above should be
+ sufficient for most applications. They provide basic editing
+ facilities, and can be customized to suit the needs of more specialized
+ user interfaces.
+
+ \section2 Using a Model
+
+ We take the string list model that \l{Creating New Models}{we created as
+ an example model}, set it up with some data, and construct a view to
+ display the contents of the model. This can all be performed within a
+ single function:
+
+ \snippet doc/src/snippets/stringlistmodel/main.cpp 0
+
+ Note that the \c StringListModel is declared as a \l QAbstractItemModel.
+ This allows us to use the abstract interface to the model, and
+ ensures that the code will still work even if we replace the string list
+ model with a different model in the future.
+
+ The list view provided by \l QListView is sufficient for presenting
+ the items in the string list model. We construct the view, and set up
+ the model using the following lines of code:
+
+ \snippet doc/src/snippets/stringlistmodel/main.cpp 2
+ \snippet doc/src/snippets/stringlistmodel/main.cpp 4
+
+ The view is shown in the normal way:
+
+ \snippet doc/src/snippets/stringlistmodel/main.cpp 5
+
+ The view renders the contents of a model, accessing data via the model's
+ interface. When the user tries to edit an item, the view uses a default
+ delegate to provide an editor widget.
+
+ \img stringlistmodel.png
+
+ The above image shows how a QListView represents the data in the string
+ list model. Since the model is editable, the view automatically allows
+ each item in the list to be edited using the default delegate.
+
+ \section2 Using Multiple Views onto the Same Model
+
+ Providing multiple views onto the same model is simply a matter of
+ setting the same model for each view. In the following code we create
+ two table views, each using the same simple table model which we have
+ created for this example:
+
+ \snippet doc/src/snippets/sharedtablemodel/main.cpp 0
+ \codeline
+ \snippet doc/src/snippets/sharedtablemodel/main.cpp 1
+
+ The use of signals and slots in the model/view architecture means that
+ changes to the model can be propagated to all the attached views,
+ ensuring that we can always access the same data regardless of the
+ view being used.
+
+ \img sharedmodel-tableviews.png
+
+ The above image shows two different views onto the same model, each
+ containing a number of selected items. Although the data from the model
+ is shown consistently across view, each view maintains its own internal
+ selection model. This can be useful in certain situations but, for
+ many applications, a shared selection model is desirable.
+
+ \section1 Handling Selections of Items
+
+ The mechanism for handling selections of items within views is provided
+ by the \l QItemSelectionModel class. All of the standard views construct
+ their own selection models by default, and interact with them in the
+ normal way. The selection model being used by a view can be obtained
+ through the \l{QAbstractItemView::selectionModel()}{selectionModel()}
+ function, and a replacement selection model can be specified with
+ \l{QAbstractItemView::setSelectionModel()}{setSelectionModel()}.
+ The ability to control the selection model used by a view is useful
+ when we want to provide multiple consistent views onto the same model
+ data.
+
+ Generally, unless you are subclassing a model or view, you will not
+ need to manipulate the contents of selections directly. However, the
+ interface to the selection model can be accessed, if required, and
+ this is explored in the chapter on
+ \l{Handling Selections in Item Views}.
+
+ \section2 Sharing Selections Between Views
+
+ Although it is convenient that the view classes provide their own
+ selection models by default, when we use more than one view onto the
+ same model it is often desirable that both the model's data and the
+ user's selection are shown consistently in all views.
+ Since the view classes allow their internal selection models to be
+ replaced, we can achieve a unified selection between views with the
+ following line:
+
+ \snippet doc/src/snippets/sharedtablemodel/main.cpp 2
+
+ The second view is given the selection model for the first view.
+ Both views now operate on the same selection model, keeping both
+ the data and the selected items synchronized.
+
+ \img sharedselection-tableviews.png
+
+ In the example shown above, two views of the same type were used to
+ display the same model's data. However, if two different types of view
+ were used, the selected items may be represented very differently in
+ each view; for example, a contiguous selection in a table view can be
+ represented as a fragmented set of highlighted items in a tree view.
+
+*/
+
+/*!
+ \page model-view-delegate.html
+ \contentspage model-view-programming.html Contents
+ \previouspage Handling Selections in Item Views
+ \nextpage Item View Convenience Classes
+
+ \title Delegate Classes
+
+ \tableofcontents
+
+ \section1 Concepts
+
+ Unlike the Model-View-Controller pattern, the model/view design does not
+ include a completely separate component for managing interaction with
+ the user. Generally, the view is responsible for the presentation of
+ model data to the user, and for processing user input. To allow some
+ flexibility in the way this input is obtained, the interaction is
+ performed by delegates. These components provide input capabilities
+ and are also responsible for rendering individual items in some views.
+ The standard interface for controlling delegates is defined in the
+ \l QAbstractItemDelegate class.
+
+ Delegates are expected to be able to render their contents themselves
+ by implementing the \l{QItemDelegate::paint()}{paint()}
+ and \l{QItemDelegate::sizeHint()}{sizeHint()} functions.
+ However, simple widget-based delegates can subclass \l QItemDelegate
+ instead of \l QAbstractItemDelegate, and take advantage of the default
+ implementations of these functions.
+
+ Editors for delegates can be implemented either by using widgets to manage
+ the editing process or by handling events directly.
+ The first approach is covered later in this chapter, and it is also
+ shown in the \l{Spin Box Delegate Example}{Spin Box Delegate} example.
+
+ The \l{Pixelator Example}{Pixelator} example shows how to create a
+ custom delegate that performs specialized rendering for a table view.
+
+ \section1 Using an Existing Delegate
+
+ The standard views provided with Qt use instances of \l QItemDelegate
+ to provide editing facilities. This default implementation of the
+ delegate interface renders items in the usual style for each of the
+ standard views: \l QListView, \l QTableView, and \l QTreeView.
+
+ All the standard roles are handled by the default delegate used by
+ the standard views. The way these are interpreted is described in the
+ QItemDelegate documentation.
+
+ The delegate used by a view is returned by the
+ \l{QAbstractItemView::itemDelegate()}{itemDelegate()} function.
+ The \l{QAbstractItemView::setItemDelegate()}{setItemDelegate()} function
+ allows you to install a custom delegate for a standard view, and it is
+ necessary to use this function when setting the delegate for a custom
+ view.
+
+ \section1 A Simple Delegate
+
+ The delegate implemented here uses a \l QSpinBox to provide editing
+ facilities, and is mainly intended for use with models that display
+ integers. Although we set up a custom integer-based table model for
+ this purpose, we could easily have used \l QStandardItemModel instead
+ since the custom delegate will control data entry. We construct a
+ table view to display the contents of the model, and this will use
+ the custom delegate for editing.
+
+ \img spinboxdelegate-example.png
+
+ We subclass the delegate from \l QItemDelegate because we do not want
+ to write custom display functions. However, we must still provide
+ functions to manage the editor widget:
+
+ \snippet examples/itemviews/spinboxdelegate/delegate.h 0
+
+ Note that no editor widgets are set up when the delegate is
+ constructed. We only construct an editor widget when it is needed.
+
+ \section2 Providing an Editor
+
+ In this example, when the table view needs to provide an editor, it
+ asks the delegate to provide an editor widget that is appropriate
+ for the item being modified. The
+ \l{QAbstractItemDelegate::createEditor()}{createEditor()} function is
+ supplied with everything that the delegate needs to be able to set up
+ a suitable widget:
+
+ \snippet examples/itemviews/spinboxdelegate/delegate.cpp 1
+
+ Note that we do not need to keep a pointer to the editor widget because
+ the view takes responsibility for destroying it when it is no longer
+ needed.
+
+ We install the delegate's default event filter on the editor to ensure
+ that it provides the standard editing shortcuts that users expect.
+ Additional shortcuts can be added to the editor to allow more
+ sophisticated behavior; these are discussed in the section on
+ \l{#EditingHints}{Editing Hints}.
+
+ The view ensures that the editor's data and geometry are set
+ correctly by calling functions that we define later for these purposes.
+ We can create different editors depending on the model index supplied
+ by the view. For example, if we have a column of integers and a column
+ of strings we could return either a \c QSpinBox or a \c QLineEdit,
+ depending on which column is being edited.
+
+ The delegate must provide a function to copy model data into the
+ editor. In this example, we read the data stored in the
+ \l{Qt::ItemDataRole}{display role}, and set the value in the
+ spin box accordingly.
+
+ \snippet examples/itemviews/spinboxdelegate/delegate.cpp 2
+
+ In this example, we know that the editor widget is a spin box, but we
+ could have provided different editors for different types of data in
+ the model, in which case we would need to cast the widget to the
+ appropriate type before accessing its member functions.
+
+ \section2 Submitting Data to the Model
+
+ When the user has finished editing the value in the spin box, the view
+ asks the delegate to store the edited value in the model by calling the
+ \l{QAbstractItemDelegate::setModelData()}{setModelData()} function.
+
+ \snippet examples/itemviews/spinboxdelegate/delegate.cpp 3
+
+ Since the view manages the editor widgets for the delegate, we only
+ need to update the model with the contents of the editor supplied.
+ In this case, we ensure that the spin box is up-to-date, and update
+ the model with the value it contains using the index specified.
+
+ The standard \l QItemDelegate class informs the view when it has
+ finished editing by emitting the
+ \l{QAbstractItemDelegate::closeEditor()}{closeEditor()} signal.
+ The view ensures that the editor widget is closed and destroyed. In
+ this example, we only provide simple editing facilities, so we need
+ never emit this signal.
+
+ All the operations on data are performed through the interface
+ provided by \l QAbstractItemModel. This makes the delegate mostly
+ independent from the type of data it manipulates, but some
+ assumptions must be made in order to use certain types of
+ editor widgets. In this example, we have assumed that the model
+ always contains integer values, but we can still use this
+ delegate with different kinds of models because \l{QVariant}
+ provides sensible default values for unexpected data.
+
+ \section2 Updating the Editor's Geometry
+
+ It is the responsibility of the delegate to manage the editor's
+ geometry. The geometry must be set when the editor is created, and
+ when the item's size or position in the view is changed. Fortunately,
+ the view provides all the necessary geometry information inside a
+ \l{QStyleOptionViewItem}{view option} object.
+
+ \snippet examples/itemviews/spinboxdelegate/delegate.cpp 4
+
+ In this case, we just use the geometry information provided by the
+ view option in the item rectangle. A delegate that renders items with
+ several elements would not use the item rectangle directly. It would
+ position the editor in relation to the other elements in the item.
+
+ \target EditingHints
+ \section2 Editing Hints
+
+ After editing, delegates should provide hints to the other components
+ about the result of the editing process, and provide hints that will
+ assist any subsequent editing operations. This is achieved by
+ emitting the \l{QAbstractItemDelegate::closeEditor()}{closeEditor()}
+ signal with a suitable hint. This is taken care of by the default
+ QItemDelegate event filter which we installed on the spin box when
+ it was constructed.
+
+ The behavior of the spin box could be adjusted to make it more user
+ friendly. In the default event filter supplied by QItemDelegate, if
+ the user hits \key Return to confirm their choice in the spin box,
+ the delegate commits the value to the model and closes the spin box.
+ We can change this behavior by installing our own event filter on the
+ spin box, and provide editing hints that suit our needs; for example,
+ we might emit \l{QAbstractItemDelegate::closeEditor()}{closeEditor()}
+ with the \l{QAbstractItemDelegate::EndEditHint}{EditNextItem} hint to
+ automatically start editing the next item in the view.
+
+ Another approach that does not require the use of an event
+ filter is to provide our own editor widget, perhaps subclassing
+ QSpinBox for convenience. This alternative approach would give us
+ more control over how the editor widget behaves at the cost of
+ writing additional code. It is usually easier to install an event
+ filter in the delegate if you need to customize the behavior of
+ a standard Qt editor widget.
+
+ Delegates do not have to emit these hints, but those that do not will
+ be less integrated into applications, and will be less usable than
+ those that emit hints to support common editing actions.
+*/
+
+/*!
+ \page model-view-selection.html
+ \contentspage model-view-programming.html Contents
+ \previouspage View Classes
+ \nextpage Delegate Classes
+
+ \title Handling Selections in Item Views
+
+ \tableofcontents
+
+ \section1 Concepts
+
+ The selection model used in the item view classes offers many improvements
+ over the selection model used in Qt 3. It provides a more general
+ description of selections based on the facilities of the model/view
+ architecture. Although the standard classes for manipulating selections are
+ sufficient for the item views provided, the selection model allows you to
+ create specialized selection models to suit the requirements for your own
+ item models and views.
+
+ Information about the items selected in a view is stored in an instance of
+ the \l QItemSelectionModel class. This maintains model indexes for items in
+ a single model, and is independent of any views. Since there can be many
+ views onto a model, it is possible to share selections between views,
+ allowing applications to show multiple views in a consistent way.
+
+ Selections are made up of \e{selection ranges}. These efficiently maintain
+ information about large selections of items by recording only the starting
+ and ending model indexes for each range of selected items. Non-contiguous
+ selections of items are constructed by using more than one selection range
+ to describe the selection.
+
+ Selections are applied to a collection of model indexes held by a selection
+ model. The most recent selection of items applied is known as the
+ \e{current selection}. The effects of this selection can be modified even
+ after its application through the use of certain types of selection
+ commands. These are discussed later in this section.
+
+
+ \section2 Current Item and Selected Items
+
+ In a view, there is always a current item and a selected item - two
+ independent states. An item can be the current item and selected at the
+ same time. The view is responsible for ensuring that there is always a
+ current item as keyboard navigation, for example, requires a current item.
+
+ The table below highlights the differences between current item and
+ selected items.
+
+ \table
+ \header
+ \o Current Item
+ \o Selected Items
+
+ \row
+ \o There can only be one current item.
+ \o There can be multiple selected items.
+ \row
+ \o The current item will be changed with key navigation or mouse
+ button clicks.
+ \o The selected state of items is set or unset, depending on several
+ pre-defined modes - e.g., single selection, multiple selection,
+ etc. - when the user interacts with the items.
+ \row
+ \o The current item will be edited if the edit key, \gui F2, is
+ pressed or the item is double-clicked (provided that editing is
+ enabled).
+ \o The current item can be used together with an anchor to specify a
+ range that should be selected or deselected (or a combination of
+ the two).
+ \row
+ \o The current item is indicated by the focus rectangle.
+ \o The selected items are indicated with the selection rectangle.
+ \endtable
+
+ When manipulating selections, it is often helpful to think of
+ \l QItemSelectionModel as a record of the selection state of all the items
+ in an item model. Once a selection model is set up, collections of items
+ can be selected, deselected, or their selection states can be toggled
+ without the need to know which items are already selected. The indexes of
+ all selected items can be retrieved at any time, and other components can
+ be informed of changes to the selection model via the signals and slots
+ mechanism.
+
+
+ \section1 Using a Selection Model
+
+ The standard view classes provide default selection models that can
+ be used in most applications. A selection model belonging to one view
+ can be obtained using the view's
+ \l{QAbstractItemView::selectionModel()}{selectionModel()} function,
+ and shared between many views with
+ \l{QAbstractItemView::setSelectionModel()}{setSelectionModel()},
+ so the construction of new selection models is generally not required.
+
+ A selection is created by specifying a model, and a pair of model
+ indexes to a \l QItemSelection. This uses the indexes to refer to items
+ in the given model, and interprets them as the top-left and bottom-right
+ items in a block of selected items.
+ To apply the selection to items in a model requires the selection to be
+ submitted to a selection model; this can be achieved in a number of ways,
+ each having a different effect on the selections already present in the
+ selection model.
+
+
+ \section2 Selecting Items
+
+ To demonstrate some of the principal features of selections, we construct
+ an instance of a custom table model with 32 items in total, and open a
+ table view onto its data:
+
+ \snippet doc/src/snippets/itemselection/main.cpp 0
+
+ The table view's default selection model is retrieved for later use.
+ We do not modify any items in the model, but instead select a few
+ items that the view will display at the top-left of the table. To do
+ this, we need to retrieve the model indexes corresponding to the
+ top-left and bottom-right items in the region to be selected:
+
+ \snippet doc/src/snippets/itemselection/main.cpp 1
+
+ To select these items in the model, and see the corresponding change
+ in the table view, we need to construct a selection object then apply
+ it to the selection model:
+
+ \snippet doc/src/snippets/itemselection/main.cpp 2
+
+ The selection is applied to the selection model using a command
+ defined by a combination of
+ \l{QItemSelectionModel::SelectionFlag}{selection flags}.
+ In this case, the flags used cause the items recorded in the
+ selection object to be included in the selection model, regardless
+ of their previous state. The resulting selection is shown by the view.
+
+ \img selected-items1.png
+
+ The selection of items can be modified using various operations that
+ are defined by the selection flags. The selection that results from
+ these operations may have a complex structure, but will be represented
+ efficiently by the selection model. The use of different selection
+ flags to manipulate the selected items is described when we examine
+ how to update a selection.
+
+ \section2 Reading the Selection State
+
+ The model indexes stored in the selection model can be read using
+ the \l{QItemSelectionModel::selectedIndexes()}{selectedIndexes()}
+ function. This returns an unsorted list of model indexes that we can
+ iterate over as long as we know which model they are for:
+
+ \snippet doc/src/snippets/reading-selections/window.cpp 0
+
+ The above code uses Qt's convenient \l{Generic Containers}{foreach
+ keyword} to iterate over, and modify, the items corresponding to the
+ indexes returned by the selection model.
+
+ The selection model emits signals to indicate changes in the
+ selection. These notify other components about changes to both the
+ selection as a whole and the currently focused item in the item
+ model. We can connect the
+ \l{QItemSelectionModel::selectionChanged()}{selectionChanged()}
+ signal to a slot, and examine the items in the model that are selected or
+ deselected when the selection changes. The slot is called with two
+ \l{QItemSelection} objects: one contains a list of indexes that
+ correspond to newly selected items; the other contains indexes that
+ correspond to newly deselected items.
+
+ In the following code, we provide a slot that receives the
+ \l{QItemSelectionModel::selectionChanged()}{selectionChanged()}
+ signal, fills in the selected items with
+ a string, and clears the contents of the deselected items.
+
+ \snippet doc/src/snippets/updating-selections/window.cpp 0
+ \snippet doc/src/snippets/updating-selections/window.cpp 1
+ \codeline
+ \snippet doc/src/snippets/updating-selections/window.cpp 2
+
+ We can keep track of the currently focused item by connecting the
+ \l{QItemSelectionModel::currentChanged()}{currentChanged()} signal
+ to a slot that is called with two model indexes. These correspond to
+ the previously focused item, and the currently focused item.
+
+ In the following code, we provide a slot that receives the
+ \l{QItemSelectionModel::currentChanged()}{currentChanged()} signal,
+ and uses the information provided to update the status bar of a
+ \l QMainWindow:
+
+ \snippet doc/src/snippets/updating-selections/window.cpp 3
+
+ Monitoring selections made by the user is straightforward with these
+ signals, but we can also update the selection model directly.
+
+ \section2 Updating a Selection
+
+ Selection commands are provided by a combination of selection flags,
+ defined by \l{QItemSelectionModel::SelectionFlag}.
+ Each selection flag tells the selection model how to update its
+ internal record of selected items when either of the
+ \l{QItemSelection::select()}{select()} functions are called.
+ The most commonly used flag is the
+ \l{QItemSelectionModel::SelectionFlag}{Select} flag
+ which instructs the selection model to record the specified items as
+ being selected. The
+ \l{QItemSelectionModel::SelectionFlag}{Toggle} flag causes the
+ selection model to invert the state of the specified items,
+ selecting any deselected items given, and deselecting any currently
+ selected items. The \l{QItemSelectionModel::SelectionFlag}{Deselect}
+ flag deselects all the specified items.
+
+ Individual items in the selection model are updated by creating a
+ selection of items, and applying them to the selection model. In the
+ following code, we apply a second selection of items to the table
+ model shown above, using the
+ \l{QItemSelectionModel::SelectionFlag}{Toggle} command to invert the
+ selection state of the items given.
+
+ \snippet doc/src/snippets/itemselection/main.cpp 3
+
+ The results of this operation are displayed in the table view,
+ providing a convenient way of visualizing what we have achieved:
+
+ \img selected-items2.png
+
+ By default, the selection commands only operate on the individual
+ items specified by the model indexes. However, the flag used to
+ describe the selection command can be combined with additional flags
+ to change entire rows and columns. For example if you call
+ \l{QItemSelectionModel::select()}{select()} with only one index, but
+ with a command that is a combination of
+ \l{QItemSelectionModel::SelectionFlag}{Select} and
+ \l{QItemSelectionModel::SelectionFlag}{Rows}, the
+ entire row containing the item referred to will be selected.
+ The following code demonstrates the use of the
+ \l{QItemSelectionModel::SelectionFlag}{Rows} and
+ \l{QItemSelectionModel::SelectionFlag}{Columns} flags:
+
+ \snippet doc/src/snippets/itemselection/main.cpp 4
+
+ Although only four indexes are supplied to the selection model, the
+ use of the
+ \l{QItemSelectionModel::SelectionFlag}{Columns} and
+ \l{QItemSelectionModel::SelectionFlag}{Rows} selection flags means
+ that two columns and two rows are selected. The following image shows
+ the result of these two selections:
+
+ \img selected-items3.png
+
+ The commands performed on the example model have all involved
+ accumulating a selection of items in the model. It is also possible
+ to clear the selection, or to replace the current selection with
+ a new one.
+
+ To replace the current selection with a new selection, combine
+ the other selection flags with the
+ \l{QItemSelectionModel::SelectionFlag}{Current} flag. A command using
+ this flag instructs the selection model to replace its current collection
+ of model indexes with those specified in a call to
+ \l{QItemSelectionModel::select()}{select()}.
+ To clear all selections before you start adding new ones,
+ combine the other selection flags with the
+ \l{QItemSelectionModel::SelectionFlag}{Clear} flag. This
+ has the effect of resetting the selection model's collection of model
+ indexes.
+
+ \section2 Selecting All Items in a Model
+
+ To select all items in a model, it is necessary to create a
+ selection for each level of the model that covers all items in that
+ level. We do this by retrieving the indexes corresponding to the
+ top-left and bottom-right items with a given parent index:
+
+ \snippet doc/src/snippets/reading-selections/window.cpp 2
+
+ A selection is constructed with these indexes and the model. The
+ corresponding items are then selected in the selection model:
+
+ \snippet doc/src/snippets/reading-selections/window.cpp 3
+
+ This needs to be performed for all levels in the model.
+ For top-level items, we would define the parent index in the usual way:
+
+ \snippet doc/src/snippets/reading-selections/window.cpp 1
+
+ For hierarchical models, the
+ \l{QAbstractItemModel::hasChildren()}{hasChildren()} function is used to
+ determine whether any given item is the parent of another level of
+ items.
+*/
+
+/*!
+ \page model-view-creating-models.html
+ \contentspage model-view-programming.html Contents
+ \previouspage Model Classes
+ \nextpage View Classes
+
+ \title Creating New Models
+
+ \tableofcontents
+
+ \section1 Introduction
+
+ The separation of functionality between the model/view components allows
+ models to be created that can take advantage of existing views. This
+ approach lets us present data from a variety of sources using standard
+ graphical user interface components, such as QListView, QTableView, and
+ QTreeView.
+
+ The QAbstractItemModel class provides an interface that is flexible
+ enough to support data sources that arrange information in hierarchical
+ structures, allowing for the possibility that data will be inserted,
+ removed, modified, or sorted in some way. It also provides support for
+ drag and drop operations.
+
+ The QAbstractListModel and QAbstractTableModel classes provide support
+ for interfaces to simpler non-hierarchical data structures, and are
+ easier to use as a starting point for simple list and table models.
+
+ In this chapter, we create a simple read-only model to explore
+ the basic principles of the model/view architecture. Later in this
+ chapter, we will adapt this simple model so that items can be modified
+ by the user.
+
+ For an example of a more complex model, see the
+ \l{itemviews/simpletreemodel}{Simple Tree Model} example.
+
+ The requirements of QAbstractItemModel subclasses is described in more
+ detail in the \l{Model Subclassing Reference} document.
+
+ \section1 Designing a Model
+
+ When creating a new model for an existing data structure, it is important
+ to consider which type of model should be used to provide an interface
+ onto the data. If the data structure can be represented as a
+ list or table of items, you can subclass QAbstractListModel or
+ QAbstractTableModel since these classes provide suitable default
+ implementations for many functions.
+
+ However, if the underlying data structure can only be represented by a
+ hierarchical tree structure, it is necessary to subclass
+ QAbstractItemModel. This approach is taken in the
+ \l{itemviews/simpletreemodel}{Simple Tree Model} example.
+
+ In this chapter, we will implement a simple model based on a list of
+ strings, so the QAbstractListModel provides an ideal base class on
+ which to build.
+
+ Whatever form the underlying data structure takes, it is
+ usually a good idea to supplement the standard QAbstractItemModel API
+ in specialized models with one that allows more natural access to the
+ underlying data structure. This makes it easier to populate the model
+ with data, yet still enables other general model/view components to
+ interact with it using the standard API. The model described below
+ provides a custom constructor for just this purpose.
+
+ \section1 A Read-Only Example Model
+
+ The model implemented here is a simple, non-hierarchical, read-only data
+ model based on the standard QStringListModel class. It has a \l QStringList
+ as its internal data source, and implements only what is needed to make a
+ functioning model. To make the implementation easier, we subclass
+ \l QAbstractListModel because it defines sensible default behavior for list
+ models, and it exposes a simpler interface than the \l QAbstractItemModel
+ class.
+
+ When implementing a model it is important to remember that
+ \l QAbstractItemModel does not store any data itself, it merely
+ presents an interface that the views use to access the data.
+ For a minimal read-only model it is only necessary to implement a few
+ functions as there are default implementations for most of the
+ interface. The class declaration is as follows:
+
+
+ \snippet doc/src/snippets/stringlistmodel/model.h 0
+ \snippet doc/src/snippets/stringlistmodel/model.h 1
+ \codeline
+ \snippet doc/src/snippets/stringlistmodel/model.h 5
+
+ Apart from the model's constructor, we only need to implement two
+ functions: \l{QAbstractItemModel::rowCount()}{rowCount()} returns the
+ number of rows in the model and \l{QAbstractItemModel::data()}{data()}
+ returns an item of data corresponding to a specified model index.
+
+ Well behaved models also implement
+ \l{QAbstractItemModel::headerData()}{headerData()} to give tree and
+ table views something to display in their headers.
+
+ Note that this is a non-hierarchical model, so we don't have to worry
+ about the parent-child relationships. If our model was hierarchical, we
+ would also have to implement the
+ \l{QAbstractItemModel::index()}{index()} and
+ \l{QAbstractItemModel::parent()}{parent()} functions.
+
+ The list of strings is stored internally in the \c stringList private
+ member variable.
+
+ \section2 Dimensions of The Model
+
+ We want the number of rows in the model to be the same as the number of
+ strings in the string list. We implement the
+ \l{QAbstractItemModel::rowCount()}{rowCount()} function with this in
+ mind:
+
+ \snippet doc/src/snippets/stringlistmodel/model.cpp 0
+
+ Since the model is non-hierarchical, we can safely ignore the model index
+ corresponding to the parent item. By default, models derived from
+ QAbstractListModel only contain one column, so we do not need to
+ reimplement the \l{QAbstractItemModel::columnCount()}{columnCount()}
+ function.
+
+ \section2 Model Headers and Data
+
+ For items in the view, we want to return the strings in the string list.
+ The \l{QAbstractItemModel::data()}{data()} function is responsible for
+ returning the item of data that corresponds to the index argument:
+
+ \snippet doc/src/snippets/stringlistmodel/model.cpp 1-data-read-only
+
+ We only return a valid QVariant if the model index supplied is valid,
+ the row number is within the range of items in the string list, and the
+ requested role is one that we support.
+
+ Some views, such as QTreeView and QTableView, are able to display headers
+ along with the item data. If our model is displayed in a view with headers,
+ we want the headers to show the row and column numbers. We can provide
+ information about the headers by subclassing the
+ \l{QAbstractItemModel::headerData()}{headerData()} function:
+
+ \snippet doc/src/snippets/stringlistmodel/model.cpp 2
+
+ Again, we return a valid QVariant only if the role is one that we support.
+ The orientation of the header is also taken into account when deciding the
+ exact data to return.
+
+ Not all views display headers with the item data, and those that do may
+ be configured to hide them. Nonetheless, it is recommended that you
+ implement the \l{QAbstractItemModel::headerData()}{headerData()} function
+ to provide relevant information about the data provided by the model.
+
+ An item can have several roles, giving out different data depending on the
+ role specified. The items in our model only have one role,
+ \l{Qt::ItemDataRole}{DisplayRole}, so we return the data
+ for items irrespective of the role specified.
+ However, we could reuse the data we provide for the
+ \l{Qt::ItemDataRole}{DisplayRole} in
+ other roles, such as the
+ \l{Qt::ItemDataRole}{ToolTipRole} that views can use to
+ display information about items in a tooltip.
+
+ \section1 An Editable Model
+
+ The read-only model shows how simple choices could be presented to the
+ user but, for many applications, an editable list model is much more
+ useful. We can modify the read-only model to make the items editable
+ by changing the data() function we implemented for read-only, and
+ by implementing two extra functions:
+ \l{QAbstractItemModel::flags()}{flags()} and
+ \l{QAbstractItemModel::setData()}{setData()}.
+ The following function declarations are added to the class definition:
+
+ \snippet doc/src/snippets/stringlistmodel/model.h 2
+ \snippet doc/src/snippets/stringlistmodel/model.h 3
+
+ \section2 Making the Model Editable
+
+ A delegate checks whether an item is editable before creating an
+ editor. The model must let the delegate know that its items are
+ editable. We do this by returning the correct flags for each item in
+ the model; in this case, we enable all items and make them both
+ selectable and editable:
+
+ \snippet doc/src/snippets/stringlistmodel/model.cpp 3
+
+ Note that we do not have to know how the delegate performs the actual
+ editing process. We only have to provide a way for the delegate to set the
+ data in the model. This is achieved through the
+ \l{QAbstractItemModel::setData()}{setData()} function:
+
+ \snippet doc/src/snippets/stringlistmodel/model.cpp 4
+ \snippet doc/src/snippets/stringlistmodel/model.cpp 5
+
+ In this model, the item in the string list that corresponds to the
+ model index is replaced by the value provided. However, before we
+ can modify the string list, we must make sure that the index is
+ valid, the item is of the correct type, and that the role is
+ supported. By convention, we insist that the role is the
+ \l{Qt::ItemDataRole}{EditRole} since this is the role used by the
+ standard item delegate. For boolean values, however, you can use
+ Qt::CheckStateRole and set the Qt::ItemIsUserCheckable flag; a
+ checkbox will then be used for editing the value. The underlying
+ data in this model is the same for all roles, so this detail just
+ makes it easier to integrate the model with standard components.
+
+ When the data has been set, the model must let the views know that some
+ data has changed. This is done by emitting the
+ \l{QAbstractItemModel::dataChanged()}{dataChanged()} signal. Since only
+ one item of data has changed, the range of items specified in the signal
+ is limited to just one model index.
+
+ Also the data() function needs to be changed to add the Qt::EditRole test:
+
+ \snippet doc/src/snippets/stringlistmodel/model.cpp 1
+
+ \section2 Inserting and Removing Rows
+
+ It is possible to change the number of rows and columns in a model. In the
+ string list model it only makes sense to change the number of rows, so we
+ only reimplement the functions for inserting and removing rows. These are
+ declared in the class definition:
+
+ \snippet doc/src/snippets/stringlistmodel/model.h 4
+
+ Since rows in this model correspond to strings in a list, the
+ \c insertRows() function inserts a number of empty strings into the string
+ list before the specified position. The number of strings inserted is
+ equivalent to the number of rows specified.
+
+ The parent index is normally used to determine where in the model the
+ rows should be added. In this case, we only have a single top-level list
+ of strings, so we just insert empty strings into that list.
+
+ \snippet doc/src/snippets/stringlistmodel/model.cpp 6
+ \snippet doc/src/snippets/stringlistmodel/model.cpp 7
+
+ The model first calls the
+ \l{QAbstractItemModel::beginInsertRows()}{beginInsertRows()} function to
+ inform other components that the number of rows is about to change. The
+ function specifies the row numbers of the first and last new rows to be
+ inserted, and the model index for their parent item. After changing the
+ string list, it calls
+ \l{QAbstractItemModel::endInsertRows()}{endInsertRows()} to complete the
+ operation and inform other components that the dimensions of the model
+ have changed, returning true to indicate success.
+
+ The function to remove rows from the model is also simple to write.
+ The rows to be removed from the model are specified by the position and
+ the number of rows given.
+ We ignore the parent index to simplify our implementation, and just
+ remove the corresponding items from the string list.
+
+ \snippet doc/src/snippets/stringlistmodel/model.cpp 8
+ \snippet doc/src/snippets/stringlistmodel/model.cpp 9
+
+ The \l{QAbstractItemModel::beginRemoveRows()}{beginRemoveRows()} function
+ is always called before any underlying data is removed, and specifies the
+ first and last rows to be removed. This allows other components to access
+ the data before it becomes unavailable.
+ After the rows have been removed, the model emits
+ \l{QAbstractItemModel::endRemoveRows()}{endRemoveRows()} to finish the
+ operation and let other components know that the dimensions of the model
+ have changed.
+
+ \section1 Next Steps
+
+ We can display the data provided by this model, or any other model, using
+ the \l QListView class to present the model's items in the form of a vertical
+ list.
+ For the string list model, this view also provides a default editor so that
+ the items can be manipulated. We examine the possibilities made available by
+ the standard view classes in the chapter on \l{View Classes}.
+
+ The \l{Model Subclassing Reference} document discusses the requirements of
+ QAbstractItemModel subclasses in more detail, and provides a guide to the
+ virtual functions that must be implemented to enable various features in
+ different types of models.
+*/
+
+/*!
+ \page model-view-convenience.html
+ \contentspage model-view-programming.html Contents
+ \previouspage Delegate Classes
+ \nextpage Using Drag and Drop with Item Views
+
+ \title Item View Convenience Classes
+
+ \tableofcontents
+
+ \section1 Overview
+
+ Alongside the model/view classes, Qt 4 also includes standard widgets to
+ provide classic item-based container widgets. These behave in a similar
+ way to the item view classes in Qt 3, but have been rewritten to use the
+ underlying model/view framework for performance and maintainability. The
+ old item view classes are still available in the compatibility library
+ (see the \l{porting4.html}{Porting Guide} for more information).
+
+ The item-based widgets have been given names which reflect their uses:
+ \c QListWidget provides a list of items, \c QTreeWidget displays a
+ multi-level tree structure, and \c QTableWidget provides a table of cell
+ items. Each class inherits the behavior of the \c QAbstractItemView
+ class which implements common behavior for item selection and header
+ management.
+
+ \section1 List Widgets
+
+ Single level lists of items are typically displayed using a \c QListWidget
+ and a number of \c{QListWidgetItem}s. A list widget is constructed in the
+ same way as any other widget:
+
+ \snippet doc/src/snippets/qlistwidget-using/mainwindow.cpp 0
+
+ List items can be added directly to the list widget when they are
+ constructed:
+
+ \snippet doc/src/snippets/qlistwidget-using/mainwindow.cpp 3
+
+ They can also be constructed without a parent list widget and added to
+ a list at some later time:
+
+ \snippet doc/src/snippets/qlistwidget-using/mainwindow.cpp 6
+ \snippet doc/src/snippets/qlistwidget-using/mainwindow.cpp 7
+
+ Each item in a list can display a text label and an icon. The colors
+ and font used to render the text can be changed to provide a customized
+ appearance for items. Tooltips, status tips, and "What's
+ This?" help are all easily configured to ensure that the list is properly
+ integrated into the application.
+
+ \snippet doc/src/snippets/qlistwidget-using/mainwindow.cpp 8
+
+ By default, items in a list are presented in the order of their creation.
+ Lists of items can be sorted according to the criteria given in
+ \l{Qt::SortOrder} to produce a list of items that is sorted in forward or
+ reverse alphabetical order:
+
+ \snippet doc/src/snippets/qlistwidget-using/mainwindow.cpp 4
+ \snippet doc/src/snippets/qlistwidget-using/mainwindow.cpp 5
+
+
+ \section1 Tree Widgets
+
+ Trees or hierarchical lists of items are provided by the \c QTreeWidget
+ and \c QTreeWidgetItem classes. Each item in the tree widget can have
+ child items of its own, and can display a number of columns of
+ information. Tree widgets are created just like any other widget:
+
+ \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 0
+
+ Before items can be added to the tree widget, the number of columns must
+ be set. For example, we could define two columns, and create a header
+ to provide labels at the top of each column:
+
+ \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 1
+ \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 2
+
+ The easiest way to set up the labels for each section is to supply a string
+ list. For more sophisticated headers, you can construct a tree item,
+ decorate it as you wish, and use that as the tree widget's header.
+
+ Top-level items in the tree widget are constructed with the tree widget as
+ their parent widget. They can be inserted in an arbitrary order, or you
+ can ensure that they are listed in a particular order by specifying the
+ previous item when constructing each item:
+
+ \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 3
+ \codeline
+ \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 4
+
+ Tree widgets deal with top-level items slightly differently to other
+ items from deeper within the tree. Items can be removed from the top
+ level of the tree by calling the tree widget's
+ \l{QTreeWidget::takeTopLevelItem()}{takeTopLevelItem()} function, but
+ items from lower levels are removed by calling their parent item's
+ \l{QTreeWidgetItem::takeChild()}{takeChild()} function.
+ Items are inserted in the top level of the tree with the
+ \l{QTreeWidget::insertTopLevelItem()}{insertTopLevelItem()} function.
+ At lower levels in the tree, the parent item's
+ \l{QTreeWidgetItem::insertChild()}{insertChild()} function is used.
+
+ It is easy to move items around between the top level and lower levels
+ in the tree. We just need to check whether the items are top-level items
+ or not, and this information is supplied by each item's \c parent()
+ function. For example, we can remove the current item in the tree widget
+ regardless of its location:
+
+ \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 10
+ \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 11
+
+ Inserting the item somewhere else in the tree widget follows the same
+ pattern:
+
+ \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 8
+ \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 9
+
+
+ \section1 Table Widgets
+
+ Tables of items similar to those found in spreadsheet applications
+ are constructed with the \c QTableWidget and \c QTableWidgetItem. These
+ provide a scrolling table widget with headers and items to use within it.
+
+ Tables can be created with a set number of rows and columns, or these
+ can be added to an unsized table as they are needed.
+
+ \snippet doc/src/snippets/qtablewidget-using/mainwindow.h 0
+ \snippet doc/src/snippets/qtablewidget-using/mainwindow.cpp 0
+
+ Items are constructed outside the table before being added to the table
+ at the required location:
+
+ \snippet doc/src/snippets/qtablewidget-using/mainwindow.cpp 3
+
+ Horizontal and vertical headers can be added to the table by constructing
+ items outside the table and using them as headers:
+
+ \snippet doc/src/snippets/qtablewidget-using/mainwindow.cpp 1
+
+ Note that the rows and columns in the table begin at zero.
+
+ \section1 Common Features
+
+ There are a number of item-based features common to each of the
+ convenience classes that are available through the same interfaces
+ in each class. We present these in the following sections with some
+ examples for different widgets.
+ Look at the list of \l{Model/View Classes} for each of the widgets
+ for more details about the use of each function used.
+
+ \section2 Hidden Items
+
+ It is sometimes useful to be able to hide items in an item view widget
+ rather than remove them. Items for all of the above widgets can be
+ hidden and later shown again. You can determine whether an item is hidden
+ by calling the isItemHidden() function, and items can be hidden with
+ \c setItemHidden().
+
+ Since this operation is item-based, the same function is available for
+ all three convenience classes.
+
+ \section2 Selections
+
+ The way items are selected is controlled by the widget's selection mode
+ (\l{QAbstractItemView::SelectionMode}).
+ This property controls whether the user can select one or many items and,
+ in many-item selections, whether the selection must be a continuous range
+ of items. The selection mode works in the same way for all of the
+ above widgets.
+
+ \table
+ \row
+ \i \img selection-single.png
+ \i \bold{Single item selections:}
+ Where the user needs to choose a single item from a widget, the
+ default \c SingleSelection mode is most suitable. In this mode, the
+ current item and the selected item are the same.
+
+ \row
+ \i \img selection-multi.png
+ \i \bold{Multi-item selections:}
+ In this mode, the user can toggle the selection state of any item in the
+ widget without changing the existing selection, much like the way
+ non-exclusive checkboxes can be toggled independently.
+
+ \row
+ \i \img selection-extended.png
+ \i \bold{Extended selections:}
+ Widgets that often require many adjacent items to be selected, such
+ as those found in spreadsheets, require the \c ExtendedSelection mode.
+ In this mode, continuous ranges of items in the widget can be selected
+ with both the mouse and the keyboard.
+ Complex selections, involving many items that are not adjacent to other
+ selected items in the widget, can also be created if modifier keys are
+ used.
+
+ If the user selects an item without using a modifier key, the existing
+ selection is cleared.
+ \endtable
+
+ The selected items in a widget are read using the \c selectedItems()
+ function, providing a list of relevant items that can be iterated over.
+ For example, we can find the sum of all the numeric values within a
+ list of selected items with the following code:
+
+ \snippet doc/src/snippets/qtablewidget-using/mainwindow.cpp 4
+
+ Note that for the single selection mode, the current item will be in
+ the selection. In the multi-selection and extended selection modes, the
+ current item may not lie within the selection, depending on the way the
+ user formed the selection.
+
+ \section2 Searching
+
+ It is often useful to be able to find items within an item view widget,
+ either as a developer or as a service to present to users. All three
+ item view convenience classes provide a common \c findItems() function
+ to make this as consistent and simple as possible.
+
+ Items are searched for by the text that they contain according to
+ criteria specified by a selection of values from Qt::MatchFlags.
+ We can obtain a list of matching items with the \c findItems()
+ function:
+
+ \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 6
+ \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 7
+
+ The above code causes items in a tree widget to be selected if they
+ contain the text given in the search string. This pattern can also be
+ used in the list and table widgets.
+*/
+
+/*!
+ \page model-view-dnd.html
+ \contentspage model-view-programming.html Contents
+ \previouspage Item View Convenience Classes
+ \nextpage Proxy Models
+
+ \title Using Drag and Drop with Item Views
+
+ \tableofcontents
+
+ \section1 Overview
+
+ Qt's drag and drop infrastructure is fully supported by the model/view framework.
+ Items in lists, tables, and trees can be dragged within the views, and data can be
+ imported and exported as MIME-encoded data.
+
+ The standard views automatically support internal drag and drop, where items are
+ moved around to change the order in which they are displayed. By default, drag and
+ drop is not enabled for these views because they are configured for the simplest,
+ most common uses. To allow items to be dragged around, certain properties of the
+ view need to be enabled, and the items themselves must also allow dragging to occur.
+
+ The requirements for a model that only allows items to be exported from a
+ view, and which does not allow data to be dropped into it, are fewer than
+ those for a fully-enabled drag and drop model.
+
+ See also the \l{Model Subclassing Reference} for more information about
+ enabling drag and drop support in new models.
+
+ \section1 Using Convenience Views
+
+ Each of the types of item used with QListWidget, QTableWidget, and QTreeWidget
+ is configured to use a different set of flags by default. For example, each
+ QListWidgetItem or QTreeWidgetItem is initially enabled, checkable, selectable,
+ and can be used as the source of a drag and drop operation; each QTableWidgetItem
+ can also be edited and used as the target of a drag and drop operation.
+
+ Although all of the standard items have one or both flags set for drag and drop,
+ you generally need to set various properties in the view itself to take advantage
+ of the built-in support for drag and drop:
+
+ \list
+ \o To enable item dragging, set the view's
+ \l{QAbstractItemView::dragEnabled}{dragEnabled} property to \c true.
+ \o To allow the user to drop either internal or external items within the view,
+ set the view's \l{QAbstractScrollArea::}{viewport()}'s
+ \l{QWidget::acceptDrops}{acceptDrops} property to \c true.
+ \o To show the user where the item currently being dragged will be placed if
+ dropped, set the view's \l{QAbstractItemView::showDropIndicator}{showDropIndicator}
+ property. This provides the user with continuously updating information about
+ item placement within the view.
+ \endlist
+
+ For example, we can enable drag and drop in a list widget with the following lines
+ of code:
+
+ \snippet doc/src/snippets/qlistwidget-dnd/mainwindow.cpp 0
+
+ The result is a list widget which allows the items to be copied
+ around within the view, and even lets the user drag items between
+ views containing the same type of data. In both situations, the
+ items are copied rather than moved.
+
+ To enable the user to move the items around within the view, we
+ must set the list widget's \l {QAbstractItemView::}{dragDropMode}:
+
+ \snippet doc/src/snippets/qlistwidget-dnd/mainwindow.cpp 1
+
+ \section1 Using Model/View Classes
+
+ Setting up a view for drag and drop follows the same pattern used with the
+ convenience views. For example, a QListView can be set up in the same way as a
+ QListWidget:
+
+ \snippet doc/src/snippets/qlistview-dnd/mainwindow.cpp 0
+
+ Since access to the data displayed by the view is controlled by a model, the
+ model used also has to provide support for drag and drop operations. The
+ actions supported by a model can be specified by reimplementing the
+ QAbstractItemModel::supportedDropActions() function. For example, copy and
+ move operations are enabled with the following code:
+
+ \snippet doc/src/snippets/qlistview-dnd/model.cpp 10
+
+ Although any combination of values from Qt::DropActions can be given, the
+ model needs to be written to support them. For example, to allow Qt::MoveAction
+ to be used properly with a list model, the model must provide an implementation
+ of QAbstractItemModel::removeRows(), either directly or by inheriting the
+ implementation from its base class.
+
+ \section2 Enabling Drag and Drop for Items
+
+ Models indicate to views which items can be dragged, and which will accept drops,
+ by reimplementing the QAbstractItemModel::flags() function to provide suitable
+ flags.
+
+ For example, a model which provides a simple list based on QAbstractListModel
+ can enable drag and drop for each of the items by ensuring that the flags
+ returned contain the \l Qt::ItemIsDragEnabled and \l Qt::ItemIsDropEnabled
+ values:
+
+ \snippet doc/src/snippets/qlistview-dnd/model.cpp 7
+
+ Note that items can be dropped into the top level of the model, but dragging is
+ only enabled for valid items.
+
+ In the above code, since the model is derived from QStringListModel, we
+ obtain a default set of flags by calling its implementation of the flags()
+ function.
+
+ \section2 Encoding Exported Data
+
+ When items of data are exported from a model in a drag and drop operation, they
+ are encoded into an appropriate format corresponding to one or more MIME types.
+ Models declare the MIME types that they can use to supply items by reimplementing
+ the QAbstractItemModel::mimeTypes() function, returning a list of standard MIME
+ types.
+
+ For example, a model that only provides plain text would provide the following
+ implementation:
+
+ \snippet doc/src/snippets/qlistview-dnd/model.cpp 9
+
+ The model must also provide code to encode data in the advertised format. This
+ is achieved by reimplementing the QAbstractItemModel::mimeData() function to
+ provide a QMimeData object, just as in any other drag and drop operation.
+
+ The following code shows how each item of data, corresponding to a given list of
+ indexes, is encoded as plain text and stored in a QMimeData object.
+
+ \snippet doc/src/snippets/qlistview-dnd/model.cpp 8
+
+ Since a list of model indexes is supplied to the function, this approach is general
+ enough to be used in both hierarchical and non-heirarchical models.
+
+ Note that custom datatypes must be declared as \l{QMetaObject}{meta objects}
+ and that stream operators must be implemented for them. See the QMetaObject
+ class description for details.
+
+ \section2 Inserting Dropped Data into a Model
+
+ The way that any given model handles dropped data depends on both its type
+ (list, table, or tree) and the way its contents is likely to be presented to
+ the user. Generally, the approach taken to accommodate dropped data should
+ be the one that most suits the model's underlying data store.
+
+ Different types of model tend to handle dropped data in different ways. List
+ and table models only provide a flat structure in which items of data are
+ stored. As a result, they may insert new rows (and columns) when data is
+ dropped on an existing item in a view, or they may overwrite the item's
+ contents in the model using some of the data supplied. Tree models are
+ often able to add child items containing new data to their underlying data
+ stores, and will therefore behave more predictably as far as the user
+ is concerned.
+
+ Dropped data is handled by a model's reimplementation of
+ QAbstractItemModel::dropMimeData(). For example, a model that handles a
+ simple list of strings can provide an implementation that handles data
+ dropped onto existing items separately to data dropped into the top level
+ of the model (i.e., onto an invalid item).
+
+ The model first has to make sure that the operation should be acted on,
+ the data supplied is in a format that can be used, and that its destination
+ within the model is valid:
+
+ \snippet doc/src/snippets/qlistview-dnd/model.cpp 0
+ \snippet doc/src/snippets/qlistview-dnd/model.cpp 1
+
+ A simple one column string list model can indicate failure if the data
+ supplied is not plain text, or if the column number given for the drop
+ is invalid.
+
+ The data to be inserted into the model is treated differently depending on
+ whether it is dropped onto an existing item or not. In this simple example,
+ we want to allow drops between existing items, before the first item in the
+ list, and after the last item.
+
+ When a drop occurs, the model index corresponding to the parent item will
+ either be valid, indicating that the drop occurred on an item, or it will
+ be invalid, indicating that the drop occurred somewhere in the view that
+ corresponds to top level of the model.
+
+ \snippet doc/src/snippets/qlistview-dnd/model.cpp 2
+
+ We initially examine the row number supplied to see if we can use it
+ to insert items into the model, regardless of whether the parent index is
+ valid or not.
+
+ \snippet doc/src/snippets/qlistview-dnd/model.cpp 3
+
+ If the parent model index is valid, the drop occurred on an item. In this
+ simple list model, we find out the row number of the item and use that
+ value to insert dropped items into the top level of the model.
+
+ \snippet doc/src/snippets/qlistview-dnd/model.cpp 4
+
+ When a drop occurs elsewhere in the view, and the row number is unusable,
+ we append items to the top level of the model.
+
+ In hierarchical models, when a drop occurs on an item, it would be better to
+ insert new items into the model as children of that item. In the simple
+ example shown here, the model only has one level, so this approach is not
+ appropriate.
+
+ \section2 Decoding Imported Data
+
+ Each implementation of \l{QAbstractItemModel::dropMimeData()}{dropMimeData()} must
+ also decode the data and insert it into the model's underlying data structure.
+
+ For a simple string list model, the encoded items can be decoded and streamed
+ into a QStringList:
+
+ \snippet doc/src/snippets/qlistview-dnd/model.cpp 5
+
+ The strings can then be inserted into the underlying data store. For consistency,
+ this can be done through the model's own interface:
+
+ \snippet doc/src/snippets/qlistview-dnd/model.cpp 6
+
+ Note that the model will typically need to provide implementations of the
+ QAbstractItemModel::insertRows() and QAbstractItemModel::setData() functions.
+
+ \sa {Item Views Puzzle Example}
+*/
+
+/*!
+ \page model-view-proxy-models.html
+ \contentspage model-view-programming.html Contents
+ \previouspage Using Drag and Drop with Item Views
+ \nextpage Model Subclassing Reference
+
+ \title Proxy Models
+
+ \tableofcontents
+
+ \section1 Overview
+
+ In the model/view framework, items of data supplied by a single model can be shared
+ by any number of views, and each of these can possibly represent the same information
+ in completely different ways.
+ Custom views and delegates are effective ways to provide radically different
+ representations of the same data. However, applications often need to provide
+ conventional views onto processed versions of the same data, such as differently-sorted
+ views onto a list of items.
+
+ Although it seems appropriate to perform sorting and filtering operations as internal
+ functions of views, this approach does not allow multiple views to share the results
+ of such potentially costly operations. The alternative approach, involving sorting
+ within the model itself, leads to the similar problem where each view has to display
+ items of data that are organized according to the most recent processing operation.
+
+ To solve this problem, the model/view framework uses proxy models to manage the
+ information supplied between individual models and views. Proxy models are components
+ that behave like ordinary models from the perspective of a view, and access data from
+ source models on behalf of that view. The signals and slots used by the model/view
+ framework ensure that each view is updated appropriately no matter how many proxy models
+ are placed between itself and the source model.
+
+ \section1 Using Proxy Models
+
+ Proxy models can be inserted between an existing model and any number of views.
+ Qt is supplied with a standard proxy model, QSortFilterProxyModel, that is usually
+ instantiated and used directly, but can also be subclassed to provide custom filtering
+ and sorting behavior. The QSortFilterProxyModel class can be used in the following way:
+
+ \snippet doc/src/snippets/qsortfilterproxymodel/main.cpp 0
+ \codeline
+ \snippet doc/src/snippets/qsortfilterproxymodel/main.cpp 1
+
+ Since proxy models are inherit from QAbstractItemModel, they can be connected to
+ any kind of view, and can be shared between views. They can also be used to
+ process the information obtained from other proxy models in a pipeline arrangement.
+
+ The QSortFilterProxyModel class is designed to be instantiated and used directly
+ in applications. More specialized proxy models can be created by subclassing this
+ classes and implementing the required comparison operations.
+
+ \section1 Customizing Proxy Models
+
+ Generally, the type of processing used in a proxy model involves mapping each item of
+ data from its original location in the source model to either a different location in
+ the proxy model. In some models, some items may have no corresponding location in the
+ proxy model; these models are \e filtering proxy models. Views access items using
+ model indexes provided by the proxy model, and these contain no information about the
+ source model or the locations of the original items in that model.
+
+ QSortFilterProxyModel enables data from a source model to be filtered before
+ being supplied to views, and also allows the contents of a source model to
+ be supplied to views as pre-sorted data.
+
+ \section2 Custom Filtering Models
+
+ The QSortFilterProxyModel class provides a filtering model that is fairly versatile,
+ and which can be used in a variety of common situations. For advanced users,
+ QSortFilterProxyModel can be subclassed, providing a mechanism that enables custom
+ filters to be implemented.
+
+ Subclasses of QSortFilterProxyModel can reimplement two virtual functions that are
+ called whenever a model index from the proxy model is requested or used:
+
+ \list
+ \o \l{QSortFilterProxyModel::filterAcceptsColumn()}{filterAcceptsColumn()} is used to
+ filter specific columns from part of the source model.
+ \o \l{QSortFilterProxyModel::filterAcceptsRow()}{filterAcceptsRow()} is used to filter
+ specific rows from part of the source model.
+ \endlist
+
+ The default implementations of the above functions in QSortFilterProxyModel
+ return true to ensure that all items are passed through to views; reimplementations
+ of these functions should return false to filter out individual rows and columns.
+
+ \section2 Custom Sorting Models
+
+ QSortFilterProxyModel instances use Qt's built-in qStableSort() function to set up
+ mappings between items in the source model and those in the proxy model, allowing a
+ sorted hierarchy of items to be exposed to views without modifying the structure of the
+ source model. To provide custom sorting behavior, reimplement the
+ \l{QSortFilterProxyModel::lessThan()}{lessThan()} function to perform custom
+ comparisons.
+*/
+
+/*!
+ \page model-view-model-subclassing.html
+ \contentspage model-view-programming.html Contents
+ \previouspage Proxy Models
+
+ \title Model Subclassing Reference
+
+ \tableofcontents
+
+ \section1 Introduction
+
+ Model subclasses need to provide implementations of many of the virtual functions
+ defined in the QAbstractItemModel base class. The number of these functions that need
+ to be implemented depends on the type of model - whether it supplies views with
+ a simple list, a table, or a complex hierarchy of items. Models that inherit from
+ QAbstractListModel and QAbstractTableModel can take advantage of the default
+ implementations of functions provided by those classes. Models that expose items
+ of data in tree-like structures must provide implementations for many of the
+ virtual functions in QAbstractItemModel.
+
+ The functions that need to be implemented in a model subclass can be divided into three
+ groups:
+
+ \list
+ \o \bold{Item data handling:} All models need to implement functions to enable views and
+ delegates to query the dimensions of the model, examine items, and retrieve data.
+ \o \bold{Navigation and index creation:} Hierarchical models need to provide functions
+ that views can call to navigate the tree-like structures they expose, and obtain
+ model indexes for items.
+ \o \bold{Drag and drop support and MIME type handling:} Models inherit functions that
+ control the way that internal and external drag and drop operations are performed.
+ These functions allow items of data to be described in terms of MIME types that
+ other components and applications can understand.
+ \endlist
+
+ For more information, see the \l
+ {"Item View Classes" Chapter of C++ GUI Programming with Qt 4}.
+
+ \section1 Item Data Handling
+
+ Models can provide varying levels of access to the data they provide: They can be
+ simple read-only components, some models may support resizing operations, and
+ others may allow items to be edited.
+
+ \section2 Read-Only Access
+
+ To provide read-only access to data provided by a model, the following functions
+ \e{must} be implemented in the model's subclass:
+
+ \table 90%
+ \row \o \l{QAbstractItemModel::flags()}{flags()}
+ \o Used by other components to obtain information about each item provided by
+ the model. In many models, the combination of flags should include
+ Qt::ItemIsEnabled and Qt::ItemIsSelectable.
+ \row \o \l{QAbstractItemModel::data()}{data()}
+ \o Used to supply item data to views and delegates. Generally, models only
+ need to supply data for Qt::DisplayRole and any application-specific user
+ roles, but it is also good practice to provide data for Qt::ToolTipRole,
+ Qt::AccessibleTextRole, and Qt::AccessibleDescriptionRole.
+ See the Qt::ItemDataRole enum documentation for information about the types
+ associated with each role.
+ \row \o \l{QAbstractItemModel::headerData()}{headerData()}
+ \o Provides views with information to show in their headers. The information is
+ only retrieved by views that can display header information.
+ \row \o \l{QAbstractItemModel::rowCount()}{rowCount()}
+ \o Provides the number of rows of data exposed by the model.
+ \endtable
+
+ These four functions must be implemented in all types of model, including list models
+ (QAbstractListModel subclasses) and table models (QAbstractTableModel subclasses).
+
+ Additionally, the following functions \e{must} be implemented in direct subclasses
+ of QAbstractTableModel and QAbstractItemModel:
+
+ \table 90%
+ \row \o \l{QAbstractItemModel::columnCount()}{columnCount()}
+ \o Provides the number of columns of data exposed by the model. List models do not
+ provide this function because it is already implemented in QAbstractListModel.
+ \endtable
+
+ \section2 Editable Items
+
+ Editable models allow items of data to be modified, and may also provide
+ functions to allow rows and columns to be inserted and removed. To enable
+ editing, the following functions must be implemented correctly:
+
+ \table 90%
+ \row \o \l{QAbstractItemModel::flags()}{flags()}
+ \o Must return an appropriate combination of flags for each item. In particular,
+ the value returned by this function must include \l{Qt::ItemIsEditable} in
+ addition to the values applied to items in a read-only model.
+ \row \o \l{QAbstractItemModel::setData()}{setData()}
+ \o Used to modify the item of data associated with a specified model index.
+ To be able to accept user input, provided by user interface elements, this
+ function must handle data associated with Qt::EditRole.
+ The implementation may also accept data associated with many different kinds
+ of roles specified by Qt::ItemDataRole. After changing the item of data,
+ models must emit the \l{QAbstractItemModel::dataChanged()}{dataChanged()}
+ signal to inform other components of the change.
+ \row \o \l{QAbstractItemModel::setHeaderData()}{setHeaderData()}
+ \o Used to modify horizontal and vertical header information. After changing
+ the item of data, models must emit the
+ \l{QAbstractItemModel::headerDataChanged()}{headerDataChanged()}
+ signal to inform other components of the change.
+ \endtable
+
+ \section2 Resizable Models
+
+ All types of model can support the insertion and removal of rows. Table models
+ and hierarchical models can also support the insertion and removal of columns.
+ It is important to notify other components about changes to the model's dimensions
+ both \e before and \e after they occur. As a result, the following functions
+ can be implemented to allow the model to be resized, but implementations must
+ ensure that the appropriate functions are called to notify attached views and
+ delegates:
+
+ \table 90%
+ \row \o \l{QAbstractItemModel::insertRows()}{insertRows()}
+ \o Used to add new rows and items of data to all types of model.
+ Implementations must call
+ \l{QAbstractItemModel::beginInsertRows()}{beginInsertRows()} \e before
+ inserting new rows into any underlying data structures, and call
+ \l{QAbstractItemModel::endInsertRows()}{endInsertRows()}
+ \e{immediately afterwards}.
+ \row \o \l{QAbstractItemModel::removeRows()}{removeRows()}
+ \o Used to remove rows and the items of data they contain from all types of model.
+ Implementations must call
+ \l{QAbstractItemModel::beginRemoveRows()}{beginRemoveRows()}
+ \e before inserting new columns into any underlying data structures, and call
+ \l{QAbstractItemModel::endRemoveRows()}{endRemoveRows()}
+ \e{immediately afterwards}.
+ \row \o \l{QAbstractItemModel::insertColumns()}{insertColumns()}
+ \o Used to add new columns and items of data to table models and hierarchical models.
+ Implementations must call
+ \l{QAbstractItemModel::beginInsertColumns()}{beginInsertColumns()} \e before
+ rows are removed from any underlying data structures, and call
+ \l{QAbstractItemModel::endInsertColumns()}{endInsertColumns()}
+ \e{immediately afterwards}.
+ \row \o \l{QAbstractItemModel::removeColumns()}{removeColumns()}
+ \o Used to remove columns and the items of data they contain from table models and
+ hierarchical models.
+ Implementations must call
+ \l{QAbstractItemModel::beginRemoveColumns()}{beginRemoveColumns()}
+ \e before columns are removed from any underlying data structures, and call
+ \l{QAbstractItemModel::endRemoveColumns()}{endRemoveColumns()}
+ \e{immediately afterwards}.
+ \endtable
+
+ Generally, these functions should return true if the operation was successful.
+ However, there may be cases where the operation only partly succeeded; for example,
+ if less than the specified number of rows could be inserted. In such cases, the
+ model should return false to indicate failure to enable any attached components to
+ handle the situation.
+
+ The signals emitted by the functions called in implementations of the resizing
+ API give attached components the chance to take action before any data becomes
+ unavailable. The encapsulation of insert and remove operations with begin and end
+ functions also enable the model to manage
+ \l{QPersistentModelIndex}{persistent model indexes} correctly.
+
+ Normally, the begin and end functions are capable of informing other components
+ about changes to the model's underlying structure. For more complex changes to the
+ model's structure, perhaps involving internal reorganization or sorting of data,
+ it is necessary to emit the \l{QAbstractItemModel::layoutChanged()}{layoutChanged()}
+ signal to cause any attached views to be updated.
+
+ \section2 Lazy Population of Model Data
+
+ Lazy population of model data effectively allows requests for information
+ about the model to be deferred until it is actually needed by views.
+
+ Some models need to obtain data from remote sources, or must perform
+ time-consuming operations to obtain information about the way the
+ data is organized. Since views generally request as much information
+ as possible in order to accurately display model data, it can be useful
+ to restrict the amount of information returned to them to reduce
+ unnecessary follow-up requests for data.
+
+ In hierarchical models where finding the number of children of a given
+ item is an expensive operation, it is useful to ensure that the model's
+ \l{QAbstractItemModel::}{rowCount()} implementation is only called when
+ necessary. In such cases, the \l{QAbstractItemModel::}{hasChildren()}
+ function can be reimplemented to provide an inexpensive way for views to
+ check for the presence of children and, in the case of QTreeView, draw
+ the appropriate decoration for their parent item.
+
+ Whether the reimplementation of \l{QAbstractItemModel::}{hasChildren()}
+ returns \c true or \c false, it may not be necessary for the view to call
+ \l{QAbstractItemModel::}{rowCount()} to find out how many children are
+ present. For example, QTreeView does not need to know how many children
+ there are if the parent item has not been expanded to show them.
+
+ If it is known that many items will have children, reimplementing
+ \l{QAbstractItemModel::}{hasChildren()} to unconditionally return \c true
+ is sometimes a useful approach to take. This ensures that each item can
+ be later examined for children while making initial population of model
+ data as fast as possible. The only disadvantage is that items without
+ children may be displayed incorrectly in some views until the user
+ attempts to view the non-existent child items.
+
+
+ \section1 Navigation and Model Index Creation
+
+ Hierarchical models need to provide functions that views can call to navigate the
+ tree-like structures they expose, and obtain model indexes for items.
+
+ \section2 Parents and Children
+
+ Since the structure exposed to views is determined by the underlying data
+ structure, it is up to each model subclass to create its own model indexes
+ by providing implementations of the following functions:
+
+ \table 90%
+ \row \o \l{QAbstractItemModel::index()}{index()}
+ \o Given a model index for a parent item, this function allows views and delegates
+ to access children of that item. If no valid child item - corresponding to the
+ specified row, column, and parent model index, can be found, the function
+ must return QModelIndex(), which is an invalid model index.
+ \row \o \l{QAbstractItemModel::parent()}{parent()}
+ \o Provides a model index corresponding to the parent of any given child item.
+ If the model index specified corresponds to a top-level item in the model, or if
+ there is no valid parent item in the model, the function must return
+ an invalid model index, created with the empty QModelIndex() constructor.
+ \endtable
+
+ Both functions above use the \l{QAbstractItemModel::createIndex()}{createIndex()}
+ factory function to generate indexes for other components to use. It is normal for
+ models to supply some unique identifier to this function to ensure that
+ the model index can be re-associated with its corresponding item later on.
+
+ \section1 Drag and Drop Support and MIME Type Handling
+
+ The model/view classes support drag and drop operations, providing default behavior
+ that is sufficient for many applications. However, it is also possible to customize
+ the way items are encoded during drag and drop operations, whether they are copied
+ or moved by default, and how they are inserted into existing models.
+
+ Additionally, the convenience view classes implement specialized behavior that
+ should closely follow that expected by existing developers.
+ The \l{#Convenience Views}{Convenience Views} section provides an overview of this
+ behavior.
+
+ \section2 MIME Data
+
+ By default, the built-in models and views use an internal MIME type
+ (\c{application/x-qabstractitemmodeldatalist}) to pass around information about
+ model indexes. This specifies data for a list of items, containing the row and
+ column numbers of each item, and information about the roles that each item
+ supports.
+
+ Data encoded using this MIME type can be obtained by calling
+ QAbstractItemModel::mimeData() with a QModelIndexList containing the items to
+ be serialized.
+ \omit
+ The following types are used to store information about
+ each item as it is streamed into a QByteArray and stored in a QMimeData object:
+
+ \table 90%
+ \header \o Description \o Type
+ \row \o Row \o int
+ \row \o Column \o int
+ \row \o Data for each role \o QMap<int, QVariant>
+ \endtable
+
+ This information can be retrieved for use in non-model classes by calling
+ QMimeData::data() with the \c{application/x-qabstractitemmodeldatalist} MIME
+ type and streaming out the items one by one.
+ \endomit
+
+ When implementing drag and drop support in a custom model, it is possible to
+ export items of data in specialized formats by reimplementing the following
+ function:
+
+ \table 90%
+ \row \o \l{QAbstractItemModel::mimeData()}{mimeData()}
+ \o This function can be reimplemented to return data in formats other
+ than the default \c{application/x-qabstractitemmodeldatalist} internal
+ MIME type.
+
+ Subclasses can obtain the default QMimeData object from the base class
+ and add data to it in additional formats.
+ \endtable
+
+ For many models, it is useful to provide the contents of items in common format
+ represented by MIME types such as \c{text/plain} and \c{image/png}. Note that
+ images, colors and HTML documents can easily be added to a QMimeData object with
+ the QMimeData::setImageData(), QMimeData::setColorData(), and
+ QMimeData::setHtml() functions.
+
+ \section2 Accepting Dropped Data
+
+ When a drag and drop operation is performed over a view, the underlying model is
+ queried to determine which types of operation it supports and the MIME types
+ it can accept. This information is provided by the
+ QAbstractItemModel::supportedDropActions() and QAbstractItemModel::mimeTypes()
+ functions. Models that do not override the implementations provided by
+ QAbstractItemModel support copy operations and the default internal MIME type
+ for items.
+
+ When serialized item data is dropped onto a view, the data is inserted into
+ the current model using its implementation of QAbstractItemModel::dropMimeData().
+ The default implementation of this function will never overwrite any data in the
+ model; instead, it tries to insert the items of data either as siblings of an
+ item, or as children of that item.
+
+ To take advantage of QAbstractItemModel's default implementation for the built-in
+ MIME type, new models must provide reimplementations of the following functions:
+
+ \table 90%
+ \row \o \l{QAbstractItemModel::insertRows()}{insertRows()}
+ \o {1, 2} These functions enable the model to automatically insert new data using
+ the existing implementation provided by QAbstractItemModel::dropMimeData().
+ \row \o \l{QAbstractItemModel::insertColumns()}{insertColumns()}
+ \row \o \l{QAbstractItemModel::setData()}{setData()}
+ \o Allows the new rows and columns to be populated with items.
+ \row \o \l{QAbstractItemModel::setItemData()}{setItemData()}
+ \o This function provides more efficient support for populating new items.
+ \endtable
+
+ To accept other forms of data, these functions must be reimplemented:
+
+ \table 90%
+ \row \o \l{QAbstractItemModel::supportedDropActions()}{supportedDropActions()}
+ \o Used to return a combination of \l{Qt::DropActions}{drop actions},
+ indicating the types of drag and drop operations that the model accepts.
+ \row \o \l{QAbstractItemModel::mimeTypes()}{mimeTypes()}
+ \o Used to return a list of MIME types that can be decoded and handled by
+ the model. Generally, the MIME types that are supported for input into
+ the model are the same as those that it can use when encoding data for
+ use by external components.
+ \row \o \l{QAbstractItemModel::dropMimeData()}{dropMimeData()}
+ \o Performs the actual decoding of the data transferred by drag and drop
+ operations, determines where in the model it will be set, and inserts
+ new rows and columns where necessary. How this function is implemented
+ in subclasses depends on the requirements of the data exposed by each
+ model.
+ \endtable
+
+ If the implementation of the \l{QAbstractItemModel::dropMimeData()}{dropMimeData()}
+ function changes the dimensions of a model by inserting or removing rows or
+ columns, or if items of data are modified, care must be taken to ensure that
+ all relevant signals are emitted. It can be useful to simply call
+ reimplementations of other functions in the subclass, such as
+ \l{QAbstractItemModel::setData()}{setData()},
+ \l{QAbstractItemModel::insertRows()}{insertRows()}, and
+ \l{QAbstractItemModel::insertColumns()}{insertColumns()}, to ensure that the
+ model behaves consistently.
+
+ In order to ensure drag operations work properly, it is important to
+ reimplement the following functions that remove data from the model:
+
+ \list
+ \o \l{QAbstractItemModel::}{removeRows()}
+ \o \l{QAbstractItemModel::}{removeRow()}
+ \o \l{QAbstractItemModel::}{removeColumns()}
+ \o \l{QAbstractItemModel::}{removeColumn()}
+ \endlist
+
+ For more information about drag and drop with item views, refer to
+ \l{Using Drag and Drop with Item Views}.
+
+ \section2 Convenience Views
+
+ The convenience views (QListWidget, QTableWidget, and QTreeWidget) override
+ the default drag and drop functionality to provide less flexible, but more
+ natural behavior that is appropriate for many applications. For example,
+ since it is more common to drop data into cells in a QTableWidget, replacing
+ the existing contents with the data being transferred, the underlying model
+ will set the data of the target items rather than insert new rows and columns
+ into the model. For more information on drag and drop in convenience views,
+ you can see \l{Using Drag and Drop with Item Views}.
+
+ \section1 Performance Optimization for Large Amounts of Data
+
+ The \l{QAbstractItemModel::}{canFetchMore()} function checks if the parent
+ has more data available and returns true or false accordingly. The
+ \l{QAbstractItemModel::}{fetchMore()} function fetches data based on the
+ parent specified. Both these functions can be combined, for example, in a
+ database query involving incremental data to populate a QAbstractItemModel.
+ We reimplement \l{QAbstractItemModel::}{canFetchMore()} to indicate if there
+ is more data to be fetched and \l{QAbstractItemModel::}{fetchMore()} to
+ populate the model as required.
+
+ Another example would be dynamically populated tree models, where we
+ reimplement \l{QAbstractItemModel::}{fetchMore()} when a branch in the tree
+ model is expanded.
+
+ If your reimplementation of \l{QAbstractItemModel::}{fetchMore()} adds rows
+ to the model, you need to call \l{QAbstractItemModel::}{beginInsertRows()}
+ and \l{QAbstractItemModel::}{endInsertRows()}. Also, both
+ \l{QAbstractItemModel::}{canFetchMore()} and \l{QAbstractItemModel::}
+ {fetchMore()} must be reimplemented as their default implementation returns
+ false and does nothing.
+*/
diff --git a/doc/src/frameworks-technologies/phonon.qdoc b/doc/src/frameworks-technologies/phonon.qdoc
new file mode 100644
index 000000000..be203f3ec
--- /dev/null
+++ b/doc/src/frameworks-technologies/phonon.qdoc
@@ -0,0 +1,558 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 phonon-overview.html
+ \title Phonon Overview
+ \ingroup frameworks-technologies
+
+ \tableofcontents
+
+ \section1 Introduction
+
+ Qt uses the Phonon multimedia framework to provide functionality
+ for playback of the most common multimedia formats. The media can
+ be read from files or streamed over a network, using a QURL to a
+ file.
+
+ In this overview, we take a look at the main concepts of Phonon.
+ We also explain the architecture, examine the
+ core API classes, and show examples on how to use the classes
+ provided.
+
+ \section1 Architecture
+
+ Phonon has three basic concepts: media objects, sinks, and paths.
+ A media object manages a media source, for instance, a music file;
+ it provides simple playback control, such as starting, stopping,
+ and pausing the playback. A sink outputs the media from Phonon,
+ e.g., by rendering video on a widget, or by sending audio to a
+ sound card. Paths are used to connect Phonon objects, i.e., a
+ media object and a sink, in a graph - called a media graph in
+ Phonon.
+
+ As an example, we show a media graph for an audio stream:
+
+ \image conceptaudio.png
+
+ The playback is started and managed by the media object, which
+ send the media stream to any sinks connected to it by a path. The
+ sink then plays the stream back, usually though a sound card.
+
+ \omit Not sure if this goes here, or anywhere...
+ All nodes in the graph are synchronized by the framework,
+ meaning that if more than one sink is connected to the same
+ media object, the framework will handle the synchronization
+ between the sinks; this happens for instance when a media
+ source containing video with sound is played back. More on
+ this later.
+ \endomit
+
+ \section2 Media Objects
+
+ The media object, an instance of the \l{Phonon::}{MediaObject}
+ class, lets you start, pause, and stop the playback of a media
+ stream, i.e., it provided basic control over the playback. You may
+ think of the object as a simple media player.
+
+ The media data is provided by a media source, which is
+ kept by the media object. The media source is a separate
+ object - an instance of \l{Phonon::}{MediaSource} - in Phonon, and
+ not part of the graph itself. The source will supply the media
+ object with raw data. The data can be read from files and streamed
+ over a network. The contents of the source will be interpreted by
+ the media object.
+
+ A media object is always instantiated with the default constructor
+ and then supplied with a media source. Concrete code examples are
+ given later in this overview.
+
+ As a complement to the media object, Phonon also provides
+ \l{Phonon::}{MediaController}, which provides control over
+ features that are optional for a given media. For instance, for
+ chapters, menus, and titles of a VOB (DVD) file will be features
+ managed by a \l{Phonon::}{MediaController}.
+
+ \section2 Sinks
+
+ A sink is a node that can output media from the graph, i.e., it
+ does not send its output to other nodes. A sink is usually a
+ rendering device.
+
+ The input of sinks in a Phonon media graph comes from a
+ \l{Phonon::}{MediaObject}, though it might have been processed
+ through other nodes on the way.
+
+ While the \l{Phonon::}{MediaObject} controls the playback, the
+ sink has basic controls for manipulation of the media. With an
+ audio sink, for instance, you can control the volume and mute the
+ sound, i.e., it represents a virtual audio device. Another example
+ is the \l{Phonon::}{VideoWidget}, which can render video on a
+ QWidget and alter the brightness, hue, and scaling of the video.
+
+ As an example we give an image of a graph used for playing back a
+ video file with sound.
+
+ \image conceptvideo.png
+
+ \section2 Processors
+
+ Phonon does not allow manipulation of media streams directly,
+ i.e., one cannot alter a media stream's bytes programmatically
+ after they have been given to a media object. We have other nodes
+ to help with this: processors, which are placed in the graph on
+ the path somewhere between the media object and its sinks. In
+ Phonon, processors are of the \l{Phonon::}{Effect} class.
+
+ When inserted into the rendering process, the processor will
+ alter the media stream, and will be active as long as it is part
+ of the graph. To stop, it needs to be removed.
+
+ \omit \image conceptprocessor.png \endomit
+
+ The \c {Effect}s may also have controls that affect how the media
+ stream is manipulated. A processor applying a depth effect to
+ audio, for instance, can have a value controlling the amount of
+ depth. An \c Effect can be configured at any point in time.
+
+ \section1 Playback
+
+ In some common cases, it is not necessary to build a graph
+ yourself.
+
+ Phonon has convenience functions for building common graphs. For
+ playing an audio file, you can use the
+ \l{Phonon::}{createPlayer()} function. This will set up the
+ necessary graph and return the media object node; the sound can
+ then be started by calling its \l{Phonon::MediaObject::}{play()}
+ function.
+
+ \snippet snippets/phonon.cpp 0
+
+ We have a similar solution for playing video files, the
+ \l{Phonon::}{VideoPlayer}.
+
+ \snippet snippets/phonon.cpp 1
+
+ The VideoPlayer is a widget onto which the video will be drawn.
+
+ The \c .pro file for a project needs the following line to be added:
+
+ \snippet doc/src/snippets/code/doc_src_phonon.qdoc 0
+
+ Phonon comes with several widgets that provide functionality
+ commonly associated with multimedia players - notably SeekSlider
+ for controlling the position of the stream, VolumeSlider for
+ controlling sound volume, and EffectWidget for controlling the
+ parameters of an effect. You can learn about them in the API
+ documentation.
+
+ \section1 Building Graphs
+
+ If you need more freedom than the convenience functions described
+ in the previous section offers you, you can build the graphs
+ yourself. We will now take a look at how some common graphs are
+ built. Starting a graph up is a matter of calling the
+ \l{Phonon::MediaObject::}{play()} function of the media object.
+
+ If the media source contains several types of media, for instance, a
+ stream with both video and audio, the graph will contain two
+ output nodes: one for the video and one for the audio.
+
+ We will now look at the code required to build the graphs discussed
+ previously in the \l{Architecture} section.
+
+ \section2 Audio
+
+ When playing back audio, you create the media object and connect
+ it to an audio output node - a node that inherits from
+ AbstractAudioOutput. Currently, AudioOutput, which outputs audio
+ to the sound card, is provided.
+
+ The code to create the graph is straight forward:
+
+ \snippet snippets/phonon.cpp 2
+
+ Notice that the type of media an input source has is resolved by
+ Phonon, so you need not be concerned with this. If a source
+ contains multiple media formats, this is also handled
+ automatically.
+
+ The media object is always created using the default constructor
+ since it handles all multimedia formats.
+
+ The setting of a Category, Phonon::MusicCategory in this case,
+ does not affect the actual playback; the category can be used by
+ KDE to control the playback through, for instance, the control
+ panel.
+
+ \omit Not sure about this
+ Users of KDE can often also choose to send sound with the
+ CommunicationCategory, e.g., given to VoIP, to their headset,
+ while sound with MusicCategory is sent to the sound card.
+ \endomit
+
+ The AudioOutput class outputs the audio media to a sound card,
+ that is, one of the audio devices of the operating system. An
+ audio device can be a sound card or a intermediate technology,
+ such as \c DirectShow on windows. A default device will be chosen
+ if one is not set with \l{Phonon::AudioOutput::}{setOutputDevice()}.
+
+ The AudioOutput node will work with all audio formats supported by
+ the back end, so you don't need to know what format a specific
+ media source has.
+
+ For a an extensive example of audio playback, see the \l{Music
+ Player Example}{Phonon Music Player}.
+
+ \section3 Audio Effects
+
+ Since a media stream cannot be manipulated directly, the backend
+ can produce nodes that can process the media streams. These nodes
+ are inserted into the graph between a media object and an output
+ node.
+
+ Nodes that process media streams inherit from the Effect class.
+ The effects available depends on the underlying system. Most of
+ these effects will be supported by Phonon. See the \l{Querying
+ Backends for Support} section for information on how to resolve
+ the available effects on a particular system.
+
+ We will now continue the example from above using the Path
+ variable \c path to add an effect. The code is again trivial:
+
+ \snippet snippets/phonon.cpp 3
+
+ Here we simply take the first available effect on the system.
+
+ The effect will start immediately after being inserted into the
+ graph if the media object is playing. To stop it, you have to
+ detach it again using \l{Phonon::Path::}{removeEffect()} of the Path.
+
+ \section2 Video
+
+ For playing video, VideoWidget is provided. This class functions
+ both as a node in the graph and as a widget upon which it draws
+ the video stream. The widget will automatically choose an available
+ device for playing the video, which is usually a technology
+ between the Qt application and the graphics card, such as \c
+ DirectShow on Windows.
+
+ The video widget does not play the audio (if any) in the media
+ stream. If you want to play the audio as well, you will need
+ an AudioOutput node. You create and connect it to the graph as
+ shown in the previous section.
+
+ The code for creating this graph is given below, after which
+ one can play the video with \l{Phonon::MediaObject::}{play()}.
+
+ \snippet snippets/phonon.cpp 4
+
+ The VideoWidget does not need to be set to a Category, it is
+ automatically classified to \l{Phonon::}{VideoCategory}, we only
+ need to assure that the audio is also classified in the same
+ category.
+
+ The media object will split files with different media content
+ into separate streams before sending them off to other nodes in
+ the graph. It is the media object that determines the type of
+ content appropriate for nodes that connect to it.
+
+ \omit This section is from the future
+
+ \section2 Multiple Audio Sources and Graph Outputs
+
+ In this section, we take a look at a graph that contains multiple
+ audio sources in addition to video. We have a video camera with
+ some embarrassing home footage from last weekend's party, a
+ microphone with which we intend to add commentary, and an audio
+ music file to set the correct mood. It would be an advantage to
+ write the graph output to a file for later viewing, but since this
+ is not yet supported by Qt backends, we will play it back
+ directly.
+
+ <image of party graph>
+
+ <code>
+
+ <code walkthrough>
+
+ \endomit
+
+ \section1 Backends
+
+ The multimedia functionality is not implemented by Phonon itself,
+ but by a back end - often also referred to as an engine. This
+ includes connecting to, managing, and driving the underlying
+ hardware or intermediate technology. For the programmer, this
+ implies that the media nodes, e.g., media objects, processors, and
+ sinks, are produced by the back end. Also, it is responsible for
+ building the graph, i.e., connecting the nodes.
+
+ The backends of Qt use the media systems DirectShow (which
+ requires DirectX) on Windows, QuickTime on Mac, and GStreamer on
+ Linux. The functionality provided on the different platforms are
+ dependent on these underlying systems and may vary somewhat, e.g.,
+ in the media formats supported.
+
+ Backends expose information about the underlying system. It can
+ tell which media formats are supported, e.g., \c AVI, \c mp3, or
+ \c OGG.
+
+ A user can often add support for new formats and filters to the
+ underlying system, by, for instance, installing the DivX codex. We
+ can therefore not give an exact overview of which formats are
+ available with the Qt backends.
+
+ \omit Not sure I want a separate section for this
+ \section2 Communication with the Backends
+
+ We cooperate with backends through static functions in the
+ Phonon namespace. We have already seen some of these functions
+ in code examples. Their two main responsibilities are creating
+ graph nodes and supplying information about the capabilities
+ of the various nodes. The nodes uses the backend internally
+ when created, so it is only connecting them in the graph that
+ you need to use the backend directly.
+
+ The main functions for graph building are:
+
+ \list
+ \o createPath(): This function creates a path between to
+ nodes, which it takes as arguments.
+ \o
+ \endlist
+
+ For more detailed information, please consult the API
+ documentation.
+
+ \endomit
+
+ \section2 Querying Backends for Support
+
+ As mentioned, Phonon depends on the backend to provide its
+ functionality. Depending on the individual backend, full support
+ of the API may not be in place. Applications therefore need to
+ check with the backend if functionality they require is
+ implemented. In this section, we take look at how this is done.
+
+ The backend provides the
+ \l{Phonon::BackendCapabilities::}{availableMimeTypes()} and
+ \l{Phonon::BackendCapabilities::}{isMimeTypeAvailable()} functions
+ to query which MIME types the backend can produce nodes for. The
+ types are listed as strings, which for any type is equal for any
+ backend or platform.
+
+ The backend will emit a signal -
+ \l{Phonon::BackendCapabilities::}{Notifier::capabilitiesChanged()}
+ - if its abilities have changed. If the available audio devices
+ have changed, the
+ \l{Phonon::BackendCapabilities::}{Notifier::availableAudioOutputDevicesChanged()}
+ signal is emitted instead.
+
+ To query the actual audio devices possible, we have the
+ \l{Phonon::BackendCapabilities::}{availableAudioOutputDevices()} as
+ mentioned in the \l{#Sinks}{Sinks} section. To query information
+ about the individual devices, you can examine its \c name(); this
+ string is dependent on the operating system, and the Qt backends
+ does not analyze the devices further.
+
+ The sink for playback of video does not have a selection of
+ devices. For convenience, the \l{Phonon::}{VideoWidget} is both a
+ node in the graph and a widget on which the video output is
+ rendered. To query the various video formats available, use
+ \l{Phonon::BackendCapabilities::}{isMimeTypeAvailable()}. To add
+ it to a path, you can use the Phonon::createPath() as usual. After
+ creating a media object, it is also possible to call its
+ \l{Phonon::MediaObject::}{hasVideo()} function.
+
+ See also the \l{Capabilities Example}.
+
+ \section1 Installing Phonon
+
+ When running the Qt configure script, you will be notified whether
+ Phonon support is available on your system. As mentioned
+ previously, to use develop and run Phonon applications, you also
+ need to link to a backend, which provides the multimedia
+ functionality.
+
+ Note that Phonon applications will compile and run without a
+ working backend, but will, of course, not work as expected.
+
+ The following sections explains requirements for each backend.
+
+ \section2 Windows
+
+ On Windows, building Phonon requires DirectX and DirectShow
+ version 9 or higher. You'll need additional SDKs you can download
+ from Microsoft.
+
+ \section3 Windows XP and later Windows versions
+
+ If you develop for Windows XP and up, you should download the Windows SDK
+ \l{http://www.microsoft.com/downloads/details.aspx?FamilyID=e6e1c3df-a74f-4207-8586-711ebe331cdc&amp;DisplayLang=en}{here}.
+ Before building Qt, just call the script: \c {C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin\setenv.cmd}
+
+ \note Visual C++ 2008 already contains the Windows SDK and doesn't
+ need that package and has already the environment set up for a
+ smooth compilation of phonon.
+
+ \section3 Earlier Windows versions than Windows XP
+
+ If you want to support previous Windows versions, you should download and install the Platform SDK. You find it
+ \l{http://www.microsoft.com/downloads/details.aspx?FamilyId=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB&amp;displaylang=en}{here}.
+
+ \note The platform SDK provided with Visual C++ is not
+ complete and
+ you'll need this one to have DirectShow 9.0 support. You can download the DirectX SDK
+ \l{http://www.microsoft.com/downloads/details.aspx?familyid=09F7578C-24AA-4E0A-BF91-5FEC24C8C7BF&amp;displaylang=en}{here}.
+
+ \section3 Setting up the environment
+
+ Once the SDKs are installed, please make sure to set your
+ environment variables LIB and INCLUDE correctly. The paths to the
+ include and lib directory of the SDKs should appear first.
+ Typically, to setup your environment, you would execute the
+ following script:
+
+ \code
+ Set DXSDK_DIR=C:\Program Files\Microsoft DirectX SDK (February 2007)
+ %DXSDK_DIR%\utilities\bin\dx_setenv.cmd
+ C:\program files\Microsoft Platform SDK\setenv.cmd
+ \endcode
+
+ If your environment is setup correctly, executing configure.exe on
+ your Qt installation should automatically activate Phonon.
+
+ \warning The MinGW version of Qt does not support building the
+ Qt backend.
+
+ \section2 Linux
+
+ The Qt backend on Linux uses GStreamer (minimum version is 0.10),
+ which must be installed on the system. At a minimum, you need the
+ GStreamer library and base plugins, which provides support for \c
+ .ogg files. The package names may vary between Linux
+ distributions; on Mandriva, they have the following names:
+
+ \table
+ \header
+ \o Package
+ \o Description
+ \row
+ \o libgstreamer0.10_0.10
+ \o The GStreamer base library.
+ \row
+ \o libgstreamer0.10_0.10-devel
+ \o Contains files for developing applications with
+ GStreamer.
+ \row
+ \o libgstreamer-plugins-base0.10
+ \o Contains the basic plugins for audio and video
+ playback, and will enable support for \c ogg files.
+ \row
+ \o libgstreamer-plugins-base0.10-devel
+ \o Makes it possible to develop applications using the
+ base plugins.
+ \endtable
+
+ \omit Should go in troubleshooting (in for example README)
+ alsasink backend for GStreamer
+ \table
+ \header
+ \o Variable
+ \o Description
+ \row
+ \o PHONON_GST_AUDIOSINK
+ \o Sets the audio sink to be used. Possible values are
+ ... alsasink.
+ \row
+ \o PHONON_GSTREAMER_DRIVER
+ \o Sets the driver for GStreamer. This driver will
+ usually be configured automatically when
+ installing.
+ \row
+ \o PHONON_GST_VIDEOWIDGET
+ \o This variable can be set to the name of a widget to
+ use as the video widget??
+ \row
+ \o PHONON_GST_DEBUG
+ \o Phonon will give debug information while running if
+ this variable is set to a number between 1 and 3.
+ \row
+ \o PHONON_TESTURL
+ \o ...
+ \endtable
+ \endomit
+
+ \section2 Mac OS X
+
+ On Mac OS X, Qt uses QuickTime for its backend. The minimum
+ supported version is 7.0.
+
+ \section1 Deploying Phonon Applications on Windows and Mac OS X
+
+ On Windows and Mac OS X, the Qt backend makes use of the
+ \l{QtOpenGL Module}{QtOpenGL} module. You therefore need to deploy
+ the QtOpenGL shared library. If this is not what you want, it is
+ possible to configure Qt without OpenGL support. In that case, you
+ need to run \c configure with the \c -no-opengl option.
+
+ \section1 Work in Progress
+
+ Phonon and its Qt backends, though fully functional for
+ multimedia playback, are still under development. Functionality to
+ come is the possibility to capture media and more processors for
+ both music and video files.
+
+ Another important consideration is to implement support for
+ storing media to files; i.e., not playing back media directly.
+
+ We also hope in the future to be able to support direct
+ manipulation of media streams. This will give the programmer more
+ freedom to manipulate streams than just through processors.
+
+ Currently, the multimedia framework supports one input source. It will be
+ possible to include several sources. This is useful in, for example, audio
+ mixer applications where several audio sources can be sent, processed and
+ output as a single audio stream.
+*/
+
diff --git a/doc/src/frameworks-technologies/plugins-howto.qdoc b/doc/src/frameworks-technologies/plugins-howto.qdoc
new file mode 100644
index 000000000..1321dda14
--- /dev/null
+++ b/doc/src/frameworks-technologies/plugins-howto.qdoc
@@ -0,0 +1,325 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group plugins
+ \title Plugin Classes
+ \ingroup groups
+
+ \brief Plugin related classes.
+
+ These classes deal with shared libraries, (e.g. .so and DLL files),
+ and with Qt plugins.
+
+ See the \link plugins-howto.html plugins documentation\endlink.
+
+ See also the \l{ActiveQt framework} for Windows.
+*/
+
+/*!
+ \page plugins-howto.html
+ \title How to Create Qt Plugins
+ \brief A guide to creating plugins to extend Qt applications and
+ functionality provided by Qt.
+
+ \ingroup frameworks-technologies
+
+ \keyword QT_DEBUG_PLUGINS
+ \keyword QT_NO_PLUGIN_CHECK
+
+ Qt provides two APIs for creating plugins:
+
+ \list
+ \o A higher-level API for writing extensions to Qt itself: custom database
+ drivers, image formats, text codecs, custom styles, etc.
+ \o A lower-level API for extending Qt applications.
+ \endlist
+
+ For example, if you want to write a custom QStyle subclass and
+ have Qt applications load it dynamically, you would use the
+ higher-level API.
+
+ Since the higher-level API is built on top of the lower-level API,
+ some issues are common to both.
+
+ If you want to provide plugins for use with \QD, see the QtDesigner
+ module documentation.
+
+ Topics:
+
+ \tableofcontents
+
+ \section1 The Higher-Level API: Writing Qt Extensions
+
+ Writing a plugin that extends Qt itself is achieved by
+ subclassing the appropriate plugin base class, implementing a few
+ functions, and adding a macro.
+
+ There are several plugin base classes. Derived plugins are stored
+ by default in sub-directories of the standard plugin directory. Qt
+ will not find plugins if they are not stored in the right
+ directory.
+
+ \table
+ \header \o Base Class \o Directory Name \o Key Case Sensitivity
+ \row \o QAccessibleBridgePlugin \o \c accessiblebridge \o Case Sensitive
+ \row \o QAccessiblePlugin \o \c accessible \o Case Sensitive
+ \row \o QDecorationPlugin \o \c decorations \o Case Insensitive
+ \row \o QFontEnginePlugin \o \c fontengines \o Case Insensitive
+ \row \o QIconEnginePlugin \o \c iconengines \o Case Insensitive
+ \row \o QImageIOPlugin \o \c imageformats \o Case Sensitive
+ \row \o QInputContextPlugin \o \c inputmethods \o Case Sensitive
+ \row \o QKbdDriverPlugin \o \c kbddrivers \o Case Insensitive
+ \row \o QMouseDriverPlugin \o \c mousedrivers \o Case Insensitive
+ \row \o QScreenDriverPlugin \o \c gfxdrivers \o Case Insensitive
+ \row \o QScriptExtensionPlugin \o \c script \o Case Sensitive
+ \row \o QSqlDriverPlugin \o \c sqldrivers \o Case Sensitive
+ \row \o QStylePlugin \o \c styles \o Case Insensitive
+ \row \o QTextCodecPlugin \o \c codecs \o Case Sensitive
+ \endtable
+
+ Suppose that you have a new style class called \c MyStyle that you
+ want to make available as a plugin. The required code is
+ straightforward, here is the class definition (\c
+ mystyleplugin.h):
+
+ \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 0
+
+ Ensure that the class implementation is located in a \c .cpp file
+ (including the class definition):
+
+ \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 1
+
+ (Note that QStylePlugin is case insensitive, and the lower-case
+ version of the key is used in our
+ \l{QStylePlugin::create()}{create()} implementation; most other
+ plugins are case sensitive.)
+
+ For database drivers, image formats, text codecs, and most other
+ plugin types, no explicit object creation is required. Qt will
+ find and create them as required. Styles are an exception, since
+ you might want to set a style explicitly in code. To apply a
+ style, use code like this:
+
+ \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 2
+
+ Some plugin classes require additional functions to be
+ implemented. See the class documentation for details of the
+ virtual functions that must be reimplemented for each type of
+ plugin.
+
+ The \l{Style Plugin Example} shows how to implement a plugin
+ that extends the QStylePlugin base class.
+
+ \section1 The Lower-Level API: Extending Qt Applications
+
+ Not only Qt itself but also Qt application can be extended
+ through plugins. This requires the application to detect and load
+ plugins using QPluginLoader. In that context, plugins may provide
+ arbitrary functionality and are not limited to database drivers,
+ image formats, text codecs, styles, and the other types of plugin
+ that extend Qt's functionality.
+
+ Making an application extensible through plugins involves the
+ following steps:
+
+ \list 1
+ \o Define a set of interfaces (classes with only pure virtual
+ functions) used to talk to the plugins.
+ \o Use the Q_DECLARE_INTERFACE() macro to tell Qt's
+ \l{meta-object system} about the interface.
+ \o Use QPluginLoader in the application to load the plugins.
+ \o Use qobject_cast() to test whether a plugin implements a given
+ interface.
+ \endlist
+
+ Writing a plugin involves these steps:
+
+ \list 1
+ \o Declare a plugin class that inherits from QObject and from the
+ interfaces that the plugin wants to provide.
+ \o Use the Q_INTERFACES() macro to tell Qt's \l{meta-object
+ system} about the interfaces.
+ \o Export the plugin using the Q_EXPORT_PLUGIN2() macro.
+ \o Build the plugin using a suitable \c .pro file.
+ \endlist
+
+ For example, here's the definition of an interface class:
+
+ \snippet examples/tools/plugandpaint/interfaces.h 2
+
+ Here's the definition of a plugin class that implements that
+ interface:
+
+ \snippet examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.h 0
+
+ The \l{tools/plugandpaint}{Plug & Paint} example documentation
+ explains this process in detail. See also \l{Creating Custom
+ Widgets for Qt Designer} for information about issues that are
+ specific to \QD. You can also take a look at the \l{Echo Plugin
+ Example} is a more trivial example on how to implement a plugin
+ that extends Qt applications. Please note that a QCoreApplication
+ must have been initialized before plugins can be loaded.
+
+ \section1 Locating Plugins
+
+ Qt applications automatically know which plugins are available,
+ because plugins are stored in the standard plugin subdirectories.
+ Because of this applications don't require any code to find and load
+ plugins, since Qt handles them automatically.
+
+ During development, the directory for plugins is \c{QTDIR/plugins}
+ (where \c QTDIR is the directory where Qt is installed), with each
+ type of plugin in a subdirectory for that type, e.g. \c styles. If
+ you want your applications to use plugins and you don't want to use
+ the standard plugins path, have your installation process
+ determine the path you want to use for the plugins, and save the
+ path, e.g. using QSettings, for the application to read when it
+ runs. The application can then call
+ QCoreApplication::addLibraryPath() with this path and your
+ plugins will be available to the application. Note that the final
+ part of the path (e.g., \c styles) cannot be changed.
+
+ If you want the plugin to be loadable then one approach is to
+ create a subdirectory under the application and place the plugin
+ in that directory. If you distribute any of the plugins that come
+ with Qt (the ones located in the \c plugins directory), you must
+ copy the sub-directory under \c plugins where the plugin is
+ located to your applications root folder (i.e., do not include the
+ \c plugins directory).
+
+ \note In Symbian all binaries must be located in the directory \\sys\\bin,
+ so each Qt plugin has a stub with the same basename as the plugin dll
+ and suffix ".qtplugin" to make Qt extension plugins work similarly to
+ other platforms.
+ When trying to locate the plugin, Qt actually looks for the stub
+ instead of the plugin binary. While plugin stub files have the
+ suffix ".qtplugin", they can still be loaded also by specifying a filename
+ with the normal library suffix ".dll" for QPluginLoader, so normally application
+ developer doesn't need to care about the different suffix of the stub.
+ Because of the way applications can be installed
+ on ROM or various other drives in Symbian, Qt looks for the stub from
+ the same directory on all available drives if it is not located in the given
+ directory when loading a plugin.
+
+ For more information about deployment,
+ see the \l {Deploying Qt Applications} and \l {Deploying Plugins}
+ documentation.
+
+ \section1 Static Plugins
+
+ The normal and most flexible way to include a plugin with an
+ application is to compile it into a dynamic library that is shipped
+ separately, and detected and loaded at runtime.
+
+ Plugins can be linked statically against your application. If you
+ build the static version of Qt, this is the only option for
+ including Qt's predefined plugins. Using static plugins makes the
+ deployment less error-prone, but has the disadvantage that no
+ functionality from plugins can be added without a complete rebuild
+ and redistribution of the application.
+
+ When compiled as a static library, Qt provides the following
+ static plugins:
+
+ \table
+ \header \o Plugin name \o Type \o Description
+ \row \o \c qtaccessiblecompatwidgets \o Accessibility \o Accessibility for Qt 3 support widgets
+ \row \o \c qtaccessiblewidgets \o Accessibility \o Accessibility for Qt widgets
+ \row \o \c qdecorationdefault \o Decorations (Qt Extended) \o Default style
+ \row \o \c qdecorationwindows \o Decorations (Qt Extended) \o Windows style
+ \row \o \c qgif \o Image formats \o GIF
+ \row \o \c qjpeg \o Image formats \o JPEG
+ \row \o \c qmng \o Image formats \o MNG
+ \row \o \c qico \o Image formats \o ICO
+ \row \o \c qsvg \o Image formats \o SVG
+ \row \o \c qtiff \o Image formats \o TIFF
+ \row \o \c qimsw_multi \o Input methods (Qt Extended) \o Input Method Switcher
+ \row \o \c qwstslibmousehandler \o Mouse drivers (Qt Extended) \o \c tslib mouse
+ \row \o \c qgfxtransformed \o Graphic drivers (Qt Extended) \o Transformed screen
+ \row \o \c qgfxvnc \o Graphic drivers (Qt Extended) \o VNC
+ \row \o \c qscreenvfb \o Graphic drivers (Qt Extended) \o Virtual frame buffer
+ \row \o \c qsqldb2 \o SQL driver \o IBM DB2 \row \o \c qsqlibase \o SQL driver \o Borland InterBase
+ \row \o \c qsqlite \o SQL driver \o SQLite version 3
+ \row \o \c qsqlite2 \o SQL driver \o SQLite version 2
+ \row \o \c qsqlmysql \o SQL driver \o MySQL
+ \row \o \c qsqloci \o SQL driver \o Oracle (OCI)
+ \row \o \c qsqlodbc \o SQL driver \o Open Database Connectivity (ODBC)
+ \row \o \c qsqlpsql \o SQL driver \o PostgreSQL
+ \row \o \c qsqltds \o SQL driver \o Sybase Adaptive Server (TDS)
+ \row \o \c qcncodecs \o Text codecs \o Simplified Chinese (People's Republic of China)
+ \row \o \c qjpcodecs \o Text codecs \o Japanese
+ \row \o \c qkrcodecs \o Text codecs \o Korean
+ \row \o \c qtwcodecs \o Text codecs \o Traditional Chinese (Taiwan)
+ \endtable
+
+ To link statically against those plugins, you need to use the
+ Q_IMPORT_PLUGIN() macro in your application and you need to add
+ the required plugins to your build using \c QTPLUGIN.
+ For example, in your \c main.cpp:
+
+ \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 4
+
+ In the \c .pro file for your application, you need the following
+ entry:
+
+ \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 5
+
+ It is also possible to create your own static plugins, by
+ following these steps:
+
+ \list 1
+ \o Add \c{CONFIG += static} to your plugin's \c .pro file.
+ \o Use the Q_IMPORT_PLUGIN() macro in your application.
+ \o Link your application with your plugin library using \c LIBS
+ in the \c .pro file.
+ \endlist
+
+ See the \l{tools/plugandpaint}{Plug & Paint} example and the
+ associated \l{tools/plugandpaintplugins/basictools}{Basic Tools}
+ plugin for details on how to do this.
+
+ \note If you are not using qmake to build your application you need
+ to make sure that the \c{QT_STATICPLUGIN} preprocessor macro is
+ defined.
+
+ \sa QPluginLoader, QLibrary, {Plug & Paint Example}
+*/
diff --git a/doc/src/frameworks-technologies/qthelp.qdoc b/doc/src/frameworks-technologies/qthelp.qdoc
new file mode 100644
index 000000000..87a909415
--- /dev/null
+++ b/doc/src/frameworks-technologies/qthelp.qdoc
@@ -0,0 +1,382 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group helpsystem
+ \title Help System
+ \ingroup groups
+
+ \brief Classes used to provide online-help for applications.
+
+ \keyword help system
+
+ These classes provide for all forms of online-help in your application,
+ with three levels of detail:
+
+ \list 1
+ \o Tool Tips and Status Bar message - flyweight help, extremely brief,
+ entirely integrated in the user interface, requiring little
+ or no user interaction to invoke.
+ \o What's This? - lightweight, but can be
+ a three-paragraph explanation.
+ \o Online Help - can encompass any amount of information,
+ but is typically slower to call up, somewhat separated
+ from the user's work, and often users feel that using online
+ help is a digression from their real task.
+ \endlist
+
+*/
+
+/*!
+ \page qthelp-framework.html
+ \title The Qt Help Framework
+ \brief Integrating Documentation in Applications
+ \ingroup frameworks-technologies
+
+ \section1 Topics
+
+ \tableofcontents
+
+ \section1 Overview
+ The Qt help system includes tools for generating and viewing
+ Qt help files. In addition it provides classes for accessing
+ help contents programatically to be able to integrate online
+ help into Qt applications.
+
+ The actual help data, meaning the table of contents, index
+ keywords or html documents, is contained in Qt compressed help
+ files. So, one such a help file represents usually one manual
+ or documentation set. Since most products are more comprehensive
+ and consist of a number of tools, one manual is rarely enough.
+ Instead, more manuals which should be accessible at the same
+ time, exist. Ideally, it should also be possible to reference
+ certain points of interest of one manual to another.
+ Therefore, the Qt help system operates on help collection files
+ which include any number of compressed help files.
+
+ However, having collection files to merge many documentation
+ sets may lead to some problems. For example, one index keyword
+ may be defined in different documentations. So, when only seeing
+ it in the index and activating it, you cannot be sure that
+ the expected documentation will be shown. Therefore, the Qt
+ help system offers the possibiltiy to filter the help contents
+ after certain attributes. This requires however, that the
+ attributes have been assigned to the help contents before the
+ generation of the compressed help file.
+
+ As already mentioned, the Qt compressed help file contains all
+ data, so there is no need any longer to ship all single html
+ files. Instead, only the compressed help file and optionally the
+ collection file has to be distributed. The collection file is
+ optional since any existing collection file, e.g. from an older
+ release could be used.
+
+ So, in general, there are four files interacting with the help
+ system, two used for generating Qt help and two meant for
+ distribution:
+
+ \table
+ \header
+ \o Name
+ \o Extension
+ \o Brief Description
+ \row
+ \o \l {Qt Help Project}
+ \o .qhp
+ \o The input file for the help generator consisting of the table
+ of contents, indices and references to the actual documentation
+ files (*.html); it also defines a unique namespace for the
+ documentation.
+
+ \row
+ \o Qt Compressed Help
+ \o .qch
+ \o The output file of the help generator. This binary file contains
+ all information specified in the help project file along with all
+ compressed documentation files.
+
+ \row
+ \o \l {Qt Help Collection Project}
+ \o .qhcp
+ \o The input file for the help collection generator. It contains
+ references to compressed help files which should be included in
+ the collection; it also may contain other information for
+ customizing Qt Assistant.
+
+ \row
+ \o Qt Help Collection
+ \o .qhc
+ \o The output of the help collection generator. This is the file
+ QHelpEngine operates on. It contains references to any number of
+ compressed help files as well as additional information, such as
+ custom filters.
+ \endtable
+
+ \section1 Generating Qt Help
+
+ Building help files for the Qt help system assumes that the html
+ documentation files already exist, i.e. the Qt help system does
+ not offer the possibility to create html files like e.g. Doxygen.
+
+ Once the html documentents are in place, a \l {Qt Help Project} file
+ has to be created. After specifying all relevant information in
+ this file, it needs to be compiled by calling:
+
+ \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 2
+
+ The file 'doc.qch' contains then all html files in compressed
+ form along with the table of contents and index keywords. To
+ test if the generated file is correct, open Qt Assistant and
+ install the file via the Settings|Documentation page.
+
+ \target Qt Help Collection Project
+ \section2 Creating a Qt Help Collection
+
+ The first step is to create a Qt Help Collection Project file.
+ Since a Qt help collection stores primarily references to
+ compressed help files, the project 'mycollection.qhcp' file
+ looks unsurprisingly simple:
+
+ \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 3
+
+ For actually creating the collection file call:
+
+ \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 4
+
+ Instead of running two tools, one for generating the compressed
+ help and one for generating the collection file, it is also
+ possible to just run the qcollectiongenerator tool with a
+ slightly modified project file instructing the generator to
+ create the compressed help first.
+
+ \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 5
+
+ Of course, it is possible to specify more than one file in the
+ 'generate' or 'register' section, so any number of compressed
+ help files can be generated and registered in one go.
+
+ \section1 Using Qt Help
+
+ Accessing the help contents can be done in two ways: Using Qt
+ Assistant as documentation browser or using the QHelpEngine
+ API for embedding the help contents directly in an application.
+
+ \section2 Using Qt Assistant
+
+ \QA operates on a collection file which can be specified
+ before start up. If no collection file is given, a default one
+ will be created and used. In either case, it is possible to
+ register any Qt compressed help file and access the help contents.
+
+ When using Assistant as the help browser for an application, it
+ would be desirable that it can be customized to fit better to the
+ application and doesn't look like an independent, standalone
+ help browser. To achieve this, several additional properties can
+ be set in an Qt help collection file, to change e.g. the title
+ or application icon of Qt Assistant. For more information on
+ this topic have a look at the \l{assistant-manual.html}
+ {Qt Assistant manual}.
+
+ \section2 Using QHelpEngine API
+
+ Instead of showing the help in an external application like the
+ Qt Assistant, it is also possible to embed the online help in
+ the application. The contents can then be retrieved via the
+ QHelpEngine class and can be displayed in nearly any form.
+ Showing it in a QTextBrowser is probably the most common way, but
+ embedding it in What's This help is also perfectly possible.
+
+ Retrieving help data from the file engine does not involve a
+ lot of code. The first step is to create an instance of the
+ help engine. Then we ask the engine for the links assigned to
+ the identifier, in this case "MyDialog::ChangeButton". If a link
+ was found, meaning at least one help document exists to this topic,
+ we get the actual help contents by calling fileData() and display
+ the document to the user.
+
+ \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 6
+
+ For further information on how to use the API, have a look at
+ the QHelpEngine class reference.
+*/
+
+/*!
+ \page qthelpproject.html
+ \title Qt Help Project
+
+ A Qt help project collects all data necessary to generate a
+ compressed help file. Along with the actual help data, like
+ the table of contents, index keywords and help documents, it
+ contains some extra information like a namespace to identify
+ the help file. One help project stands for one documentation,
+ e.g. the Qt Assistant manual.
+
+ \section1 Qt Help Project File Format
+
+ The file format is XML-based. For a better understanding of
+ the format we'll discuss the following example:
+
+ \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 7
+
+ \section2 Namespace
+
+ To enable the QHelpEngine to retrieve the proper documentation to
+ a given link, every documentation set has to have a unique
+ identifier. A unique identifier makes is also possible for the
+ help collection to keep track of a documentation set without relying
+ on its file name. The Qt help system uses a namespace as identifier
+ which is defined by the mandatory namespace tags. In the example
+ above, the namespace is "mycompany.com.myapplication.1_0".
+
+ \target Virtual Folders
+ \section2 Virtual Folders
+
+ Having a namespace for every documentation naturally means that
+ the documentation sets are quite separated. From the help engines
+ point of view this is beneficial, but from the documentors view
+ it is often desirable to cross reference certain topic from one
+ manual to another without having to specify absolute links. To
+ solve this problem, the help system introduced the concept of
+ virtual folders.
+
+ A virtual folder will become the root directory of all files
+ referenced in a compressed help file. When two documentations
+ share the same virtual folder, they can use relative paths when
+ defining hyperlinks pointing to the other documentation. If a
+ file is contained in both documentations or manuals, the one
+ from the current manual has precedence over the other.
+
+ \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 8
+
+ The above example specifies 'doc' as virtual folder. If another
+ manual, e.g. for a small helper tool for 'My Application'
+ specifies the same folder, it is sufficient to write
+ 'doc.html#section1' to reference the first section in the
+ 'My Application' manual.
+
+ The virtual folder tag is mandatory and the folder must not
+ contain any '/'.
+
+ \target Custom Filters
+ \section2 Custom Filters
+
+ Next in the Qt help project file are the optional definitions of
+ custom filters. A custom filter contains a list of filter
+ attributes which will be used later to display only the documentation
+ which has all those attributes assigned to. So, when setting the
+ current filter in the QHelpEngine to "My Application 1.0" only
+ the documentation which has "myapp" and "1.0" set as filter
+ attributes will be shown.
+
+ \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 9
+
+ It is possible to define any number of custom filters in a help
+ project file. Important to know is, that the filter attributes have
+ not to be specified in the same project file; they can be defined
+ in any other help file. The definition of a filter attributes
+ takes place by specifying them in a filter section.
+
+ \target Filter Section
+ \section2 Filter Section
+
+ A filter section contains the actual documentation. One Qt help project
+ file may contain more than one filter sections. Every filter section
+ consists of four parts, the filter attributes section, the table of
+ contents, the keywords and the files list. In theory all parts are
+ optional but not specifying anything there will result in an empty
+ documentation.
+
+ \section3 Filter Attributes
+
+ Every filter section should have filter attributes assigned to it, to
+ enable documentation filtering. If no filter attribute is defined, the
+ documentation will only be shown if no filtering occurs, meaning the
+ current custom filter in the QHelpEngine does not contain any filter
+ attributes.
+
+ \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 10
+
+ In this case, the filter attributes 'myapp' and '1.0' are assigned
+ to the filter section, i.e. all contents specified in this section
+ will only be shown if the current custom filter has 'myapp' or '1.0'
+ or both as filter attributes.
+
+ \section3 Table of contents
+
+ \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 11
+
+ One section tag represents one item in the table of contents. The
+ sections can be nested to any degree, but from a users perspective
+ it should not be more than four or five levels. A section is defined
+ by its title and reference. The reference, like all file references in a Qt
+ help project, are relative to the help project file itself.
+ \note The referenced files must be inside the same directory (or within a
+ subdirectory) as the help project file. An absolute file path is not supported
+ either.
+
+ \section3 Keywords
+
+ \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 12
+
+ The keyword section lists all keywords of this filter section. A
+ keyword consists basically of a name and a file reference. If the
+ attribute 'name' is used then the keyword specified there will appear in
+ the visible index, i.e. it will be accessible through the QHelpIndexModel.
+ If 'id' is used, the keyword does not appear in the index and is
+ only accessible via the linksForIdentifier() function of the
+ QHelpEngineCore. 'name' and 'id' can be specified at the same time.
+
+ \section3 Files
+
+ \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 13
+
+ Finally, the actual documentation files have to be listed. Make sure
+ that all files neccessary to display the help are mentioned, i.e.
+ stylesheets or similar files need to be there as well. The files, like all
+ file references in a Qt help project, are relative to the help project file
+ itself. As the example shows, files (but not directories) can also be
+ specified as patterns using wildcards. All listed files will be compressed
+ and written to the Qt compressed help file. So, in the end, one single Qt
+ help file contains all documentation files along with the contents and
+ indices. \note The referenced files must be inside the same directory
+ (or within a subdirectory) as the help project file. An absolute file path
+ is not supported either.
+*/
diff --git a/doc/src/frameworks-technologies/qundo.qdoc b/doc/src/frameworks-technologies/qundo.qdoc
new file mode 100644
index 000000000..0c83e84ce
--- /dev/null
+++ b/doc/src/frameworks-technologies/qundo.qdoc
@@ -0,0 +1,113 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qundo.html
+ \title Overview of Qt's Undo Framework
+ \keyword Undo framework
+ \ingroup frameworks-technologies
+
+ \section1 Introduction
+
+ Qt's Undo Framework is an implementation of the Command pattern, for
+ implementing undo/redo functionality in applications.
+
+ The Command pattern is based on the idea that all editing in
+ an application is done by creating instances of command objects.
+ Command objects apply changes to the document and are stored
+ on a command stack. Furthermore, each command knows how to undo its
+ changes to bring the document back to its previous state. As long
+ as the application only uses command objects to change the state of
+ the document, it is possible to undo a sequence of commands by
+ traversing the stack downwards and calling undo
+ on each command in turn. It is also possible to redo a sequence of
+ commands by traversing the stack upwards and calling
+ redo on each command.
+
+ \section1 Classes
+
+ The framework consists of four classes:
+
+ \list
+ \i \l QUndoCommand is the base class of all commands stored on an
+ undo stack. It can apply (redo) or undo a single change in the document.
+ \i \l QUndoStack is a list of QUndoCommand objects. It contains all the
+ commands executed on the document and can roll the document's state
+ backwards or forwards by undoing or redoing them.
+ \i \l QUndoGroup is a group of undo stacks. It is useful when an application
+ contains more than one undo stack, typically one for each opened
+ document. QUndoGroup provides a single pair of undo/redo slots for all
+ the stacks in the group. It forwards undo and redo requests to
+ the active stack, which is the stack associated with the document that
+ is currently being edited by the user.
+ \i \l QUndoView is a widget which shows the contents of an undo stack. Clicking
+ on a command in the view rolls the document's state backwards or
+ forwards to that command.
+ \endlist
+
+ \section1 Concepts
+
+ The following concepts are supported by the framework:
+
+ \list
+ \i \bold{Clean state:} Used to signal when the document enters and leaves a
+ state that has been saved to disk. This is typically used to disable or
+ enable the save actions, and to update the document's title bar.
+ \i \bold{Command compression:} Used to compress sequences of commands into a
+ single command.
+ For example: In a text editor, the commands that insert individual
+ characters into the document can be compressed into a single command that
+ inserts whole sections of text. These bigger changes are more convenient
+ for the user to undo and redo.
+ \i \bold{Command macros:} A sequence of commands, all of which are undone or
+ redone in one step.
+ These simplify the task of writing an application, since a set of simpler
+ commands can be composed into more complex commands. For example, a command
+ that moves a set of selected objects in a document can be created by
+ combining a set of commands, each of which moves a single object.
+ \endlist
+
+ QUndoStack provides convenient undo and redo QAction objects that
+ can be inserted into a menu or a toolbar. The text properties of these
+ actions always reflect what command will be undone or redone when
+ they are triggered. Similarly, QUndoGroup provides undo and redo actions
+ that always behave like the undo and redo actions of the active stack.
+*/
diff --git a/doc/src/frameworks-technologies/richtext.qdoc b/doc/src/frameworks-technologies/richtext.qdoc
new file mode 100644
index 000000000..aeaf819a2
--- /dev/null
+++ b/doc/src/frameworks-technologies/richtext.qdoc
@@ -0,0 +1,1226 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group richtext-processing
+ \title Rich Text Processing APIs
+*/
+
+/*!
+ \page richtext.html
+ \title Rich Text Processing
+ \brief An overview of Qt's rich text processing, editing and display features.
+
+ \ingroup frameworks-technologies
+
+ \nextpage Rich Text Document Structure
+
+ The Scribe framework provides a set of classes for reading and manipulating
+ structured rich text documents. Unlike previous rich text support in Qt, the
+ new classes are centered around the QTextDocument class rather than raw
+ textual information. This enables the developer to create and modify
+ structured rich text documents without having to prepare content in an
+ intermediate markup format.
+
+ The information within a document can be accessed via two complementary
+ interfaces: A cursor-based interface is used for editing, and a read-only
+ hierarchical interface provides a high level overview of the document
+ structure. The main advantage of the cursor-based interface is that the
+ text can be edited using operations that mimic a user's interaction with
+ an editor, without losing the underlying structure of the document. The
+ read-only hierarchical interface is most useful when performing operations
+ such as searching and document export.
+
+ This document is divided up into chapters for convenient reference:
+
+ \list
+ \i \l{Rich Text Document Structure} outlines
+ the different kinds of elements in a QTextDocument, and describes how
+ they are arranged in a document structure.
+ \i \l{The QTextCursor Interface} explains how rich
+ text documents can be edited using the cursor-based interface.
+ \i \l{Document Layouts} briefly explains the role of document layouts.
+ \i \l{Common Rich Text Editing Tasks} examines some
+ common tasks that involve reading or manipulating rich text documents.
+ \i \l{Advanced Rich Text Processing} examines advanced rich text editing tasks.
+ \i \l{Supported HTML Subset} lists the HTML tags supported by QTextDocument.
+ \endlist
+
+ \section1 Rich Text Processing APIs
+
+ Qt provides an extensive collection of classes for parsing, rendering
+ manipulating and editing rich text.
+
+ \annotatedlist richtext-processing
+*/
+
+/*!
+ \page richtext-structure.html
+ \contentspage richtext.html Contents
+ \previouspage Rich Text Processing
+ \nextpage The QTextCursor Interface
+
+ \title Rich Text Document Structure
+
+ \tableofcontents
+
+ Text documents are represented by the QTextDocument class, which
+ contains information about the document's internal representation, its
+ structure, and keeps track of modifications to provide undo/redo
+ facilities.
+
+ The structured representation of a text document presents its contents as
+ a hierarchy of text blocks, frames, tables, and other objects. These provide
+ a logical structure to the document and describe how their contents will be
+ displayed. Generally, frames and tables are used to group other
+ structures while text blocks contain the actual textual information.
+
+ New elements are created and inserted into the document programmatically
+ \l{richtext-cursor.html}{with a QTextCursor} or by using an editor
+ widget, such as QTextEdit. Elements can be given a particular format when
+ they are created; otherwise they take the cursor's current format for the
+ element.
+
+ \table
+ \row
+ \i \inlineimage richtext-document.png
+ \i \bold{Basic structure}
+
+ The "top level" of a document might be populated in the way shown.
+ Each document always contains a root frame, and this always contains
+ at least one text block.
+
+ For documents with some textual content, the root
+ frame usually contains a sequence of blocks and other elements.
+
+ Sequences of frames and tables are always separated by text blocks in a
+ document, even if the text blocks contain no information. This ensures that
+ new elements can always be inserted between existing structures.
+ \endtable
+
+ In this chapter, we look at each of the structural elements
+ used in a rich text document, outline their features and uses, and show
+ how to examine their contents. Document editing is described in
+ \l{richtext-cursor.html}{The QTextCursor Interface}.
+
+ \section1 Rich Text Documents
+
+ QTextDocument objects contain all the information required to construct
+ rich text documents.
+ Text documents can be accessed in two complementary ways: as a linear
+ buffer for editors to use, and as an object hierarchy that is useful to
+ layout engines.
+ In the hierarchical document model, objects generally correspond to
+ visual elements such as frames, tables, and lists. At a lower level,
+ these elements describe properties such as the text style and alignment.
+ The linear representation of the document is used for editing and
+ manipulation of the document's contents.
+
+ Although QTextEdit makes it easy to display and edit rich text, documents
+ can also be used independently of any editor widget, for example:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 0
+
+ Alternatively, they can be extracted from an existing editor:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 1
+
+ This flexibility enables applications to handle multiple rich text
+ documents without the overhead of multiple editor widgets, or requiring
+ documents to be stored in some intermediate format.
+
+ An empty document contains a root frame which itself contains a single
+ empty text block. Frames provide logical separation between parts of the document, but
+ also have properties that determine how they will appear when rendered.
+ A table is a specialized type of frame that consists of a number of
+ cells, arranged into rows and columns, each of which can contain
+ further structure and text. Tables provide management and layout
+ features that allow flexible configurations of cells to be created.
+
+ Text blocks contain text fragments, each of which specifies text and
+ character format information. Textual properties are defined both at
+ the character level and at the block level. At the character level,
+ properties such as font family, text color, and font weight can be
+ specified. The block level properties control the higher level
+ appearance and behavior of the text, such as the direction of text
+ flow, alignment, and background color.
+
+ The document structure is not manipulated directly. Editing is
+ performed through a cursor-based interface.
+ The \l{richtext-cursor.html}{text cursor interface}
+ automatically inserts new document elements into the root frame, and
+ ensures that it is padded with empty blocks where necessary.
+
+ We obtain the root frame in the following manner:
+
+ \snippet doc/src/snippets/textdocument-frames/xmlwriter.h 0
+ \snippet doc/src/snippets/textdocument-frames/xmlwriter.cpp 0
+
+ When navigating the document structure, it is useful to begin at the
+ root frame because it provides access to the entire document structure.
+
+
+ \section1 Document Elements
+
+ Rich text documents usually consist of common elements such as paragraphs,
+ frames, tables, and lists. These are represented in a QTextDocument
+ by the QTextBlock, QTextFrame, QTextTable, and QTextList classes.
+ Unlike the other elements in a document, images are represented by
+ specially formatted text fragments. This enables them to be placed
+ formatted inline with the surrounding text.
+
+ The basic structural building blocks in documents are QTextBlock and
+ QTextFrame. Blocks themselves contain fragments of rich text
+ (QTextFragment), but these do not directly influence the high level
+ structure of a document.
+
+ Elements which can group together other document elements are typically
+ subclasses of QTextObject, and fall into two categories: Elements that
+ group together text blocks are subclasses of QTextBlockGroup, and those
+ that group together frames and other elements are subclasses of QTextFrame.
+
+ \section2 Text Blocks
+
+ Text blocks are provided by the QTextBlock class.
+
+ Text blocks group together fragments of text with different character formats,
+ and are used to represent paragraphs in the document. Each block
+ typically contains a number of text fragments with different styles.
+ Fragments are created when text is inserted into the document, and more
+ of them are added when the document is edited. The document splits, merges,
+ and removes fragments to efficiently represent the different styles
+ of text in the block.
+
+ The fragments within a given block can be examined by using a
+ QTextBlock::iterator to traverse the block's internal structure:
+
+ \snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 3
+ \snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 5
+ \snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 6
+
+ Blocks are also used to represent list items. As a result, blocks can
+ define their own character formats which contain information about
+ block-level decoration, such as the type of bullet points used for
+ list items. The formatting for the block itself is described by the
+ QTextBlockFormat class, and describes properties such as text alignment,
+ indentation, and background color.
+
+ Although a given document may contain complex structures, once we have a
+ reference to a valid block in the document, we can navigate between each
+ of the text blocks in the order in which they were written:
+
+ \snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 0
+ \snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 1
+ \snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 2
+
+ This method is useful for when you want to extract just the rich text from a
+ document because it ignores frames, tables, and other types of structure.
+
+ QTextBlock provides comparison operators that make it easier to manipulate
+ blocks: \l{QTextBlock::operator==()}{operator==()} and
+ \l{QTextBlock::operator!=()}{operator!=()} are used to test whether two
+ blocks are the same, and \l{QTextBlock::operator<()}{operator<()} is used
+ to determine which one occurs first in a document.
+
+ \section2 Frames
+
+ Frames are provided by the QTextFrame class.
+
+ Text frames group together blocks of text and child frames, creating
+ document structures that are larger than paragraphs. The format of a frame
+ specifies how it is rendered and positioned on the page. Frames are
+ either inserted into the text flow, or they float on the left or right
+ hand side of the page.
+ Each document contains a root frame that contains all the other document
+ elements. As a result, all frames except the root frame have a parent
+ frame.
+
+ Since text blocks are used to separate other document elements, each
+ frame will always contain at least one text block, and zero or more
+ child frames. We can inspect the contents of a frame by using a
+ QTextFrame::iterator to traverse the frame's child elements:
+
+ \snippet doc/src/snippets/textdocument-frames/xmlwriter.cpp 1
+ \snippet doc/src/snippets/textdocument-frames/xmlwriter.cpp 2
+
+ Note that the iterator selects both frames and blocks, so it is necessary
+ to check which it is referring to. This allows us to navigate the document
+ structure on a frame-by-frame basis yet still access text blocks if
+ required. Both the QTextBlock::iterator and QTextFrame::iterator classes
+ can be used in complementary ways to extract the required structure from
+ a document.
+
+ \section2 Tables
+
+ Tables are provided by the QTextTable class.
+
+ Tables are collections of cells that are arranged in rows and columns.
+ Each table cell is a document element with its own character format, but it
+ can also contain other elements, such as frames and text blocks. Table cells
+ are automatically created when the table is constructed, or when extra rows
+ or columns are added. They can also be moved between tables.
+
+ QTextTable is a subclass of QTextFrame, so tables are treated like frames
+ in the document structure. For each frame that we encounter in the
+ document, we can test whether it represents a table, and deal with it in a
+ different way:
+
+ \snippet doc/src/snippets/textdocument-tables/xmlwriter.cpp 0
+ \snippet doc/src/snippets/textdocument-tables/xmlwriter.cpp 1
+
+ The cells within an existing table can be examined by iterating through
+ the rows and columns.
+
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 9
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 10
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 11
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 12
+
+
+ \section2 Lists
+
+ Lists are provided by the QTextList class.
+
+ Lists are sequences of text blocks that are formatted in the usual way, but
+ which also provide the standard list decorations such as bullet points and
+ enumerated items. Lists can be nested, and will be indented if the list's
+ format specifies a non-zero indentation.
+
+ We can refer to each list item by its index in the list:
+
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 0
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 1
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 2
+
+ Since QTextList is a subclass of QTextBlockGroup, it does not group the
+ list items as child elements, but instead provides various functions for
+ managing them. This means that any text block we find when traversing a
+ document may actually be a list item. We can ensure that list items are
+ correctly identified by using the following code:
+
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 3
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 4
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 5
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 6
+ \snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 7
+
+
+ \section2 Images
+
+ Images in QTextDocument are represented by text fragments that reference
+ external images via the resource mechanism. Images are created using the
+ cursor interface, and can be modified later by changing the character
+ format of the image's text fragment:
+
+ \snippet doc/src/snippets/textdocument-imageformat/main.cpp 0
+ \snippet doc/src/snippets/textdocument-imageformat/main.cpp 1
+ \snippet doc/src/snippets/textdocument-imageformat/main.cpp 2
+
+ The fragment that represents the image can be found by iterating over
+ the fragments in the text block that contains the image.
+*/
+
+/*!
+ \page richtext-cursor.html
+ \contentspage richtext.html Contents
+ \previouspage Rich Text Document Structure
+ \nextpage Document Layouts
+
+ \title The QTextCursor Interface
+
+ \tableofcontents
+
+ Documents can be edited via the interface provided by the QTextCursor
+ class; cursors are either created using a constructor or obtained from
+ an editor widget. The cursor is used to perform editing operations that
+ correspond exactly to those the user is able to make themselves in an
+ editor. As a result, information about the document structure is also
+ available through the cursor, and this allows the structure to be
+ modified. The use of a cursor-oriented interface for editing makes the
+ process of writing a custom editor simpler for developers, since the
+ editing operations can be easily visualized.
+
+ The QTextCursor class also maintains information about any text it
+ has selected in the document, again following a model that is
+ conceptually similar to the actions made by the user to select text
+ in an editor.
+
+ Rich text documents can have multiple cursors
+ associated with them, and each of these contains information about their
+ position in the document and any selections that they may hold. This
+ cursor-based paradigm makes common operations, such as cutting and pasting
+ text, simple to implement programmatically, yet it also allows more complex
+ editing operations to be performed on the document.
+
+ This chapter describes most of the common editing operations that you
+ will need to perform using a cursor, from basic insertion of text and
+ document elements to more complex manipulation of document structures.
+
+ \section1 Cursor-Based Editing
+
+ At the simplest level, text documents are made up of a string of characters,
+ marked up in some way to represent the block structure of the text within the
+ document. QTextCursor provides a cursor-based interface that allows the
+ contents of a QTextDocument to be manipulated at the character level. Since
+ the elements (blocks, frames, tables, etc.) are also encoded in the character
+ stream, the document structure can itself be changed by the cursor.
+
+ The cursor keeps track of its location within its parent document, and can
+ report information about the surrounding structure, such as the enclosing
+ text block, frame, table, or list. The formats of the enclosing structures
+ can also be directly obtained through the cursor.
+
+ \section2 Using a Cursor
+
+ The main use of a cursor is to insert or modify text within a block.
+ We can use a text editor's cursor to do this:
+
+ \snippet doc/src/snippets/textblock-formats/main.cpp 0
+
+ Alternatively, we can obtain a cursor directly from a document:
+
+ \snippet doc/src/snippets/textdocument-images/main.cpp 0
+
+ The cursor is positioned at the start of the document so that we can write
+ into the first (empty) block in the document.
+
+ \section2 Grouping Cursor Operations
+
+ A series of editing operations can be packaged together so that they can
+ be replayed, or undone together in a single action. This is achieved by
+ using the \c beginEditBlock() and \c endEditBlock() functions in the
+ following way, as in the following example where we select the word that
+ contains the cursor:
+
+ \snippet doc/src/snippets/textdocument-selections/mainwindow.cpp 0
+
+ If editing operations are not grouped, the document automatically records
+ the individual operations so that they can be undone later. Grouping
+ operations into larger packages can make editing more efficient both for
+ the user and for the application, but care has to be taken not to group too
+ many operations together as the user may want find-grained control over the
+ undo process.
+
+ \section2 Multiple Cursors
+
+ Multiple cursors can be used to simultaneously edit the same document,
+ although only one will be visible to the user in a QTextEdit widget.
+ The QTextDocument ensures that each cursor writes text correctly and
+ does not interfere with any of the others.
+
+ \omit
+ \snippet doc/src/snippets/textdocument-cursors/main.cpp 0
+ \snippet doc/src/snippets/textdocument-cursors/main.cpp 1
+ \endomit
+
+ \section1 Inserting Document Elements
+
+ QTextCursor provides several functions that can be used to change the
+ structure of a rich text document. Generally, these functions allow
+ document elements to be created with relevant formatting information,
+ and they are inserted into the document at the cursor's position.
+
+ The first group of functions insert block-level elements, and update the
+ cursor position, but they do not return the element that was inserted:
+
+ \list
+ \i \l{QTextCursor::insertBlock()}{insertBlock()} inserts a new text block
+ (paragraph) into a document at the cursor's position, and moves the
+ cursor to the start of the new block.
+ \i \l{QTextCursor::insertFragment()}{insertFragment()} inserts an existing
+ text fragment into a document at the cursor's position.
+ \i \l{QTextCursor::insertImage()}{insertImage()} inserts an image into a
+ document at the cursor's position.
+ \i \l{QTextCursor::insertText()}{insertText()} inserts text into the
+ document at the cursor's position.
+ \endlist
+
+ You can examine the contents of the element that was inserted through the
+ cursor interface.
+
+ The second group of functions insert elements that provide structure to
+ the document, and return the structure that was inserted:
+
+ \list
+ \i \l{QTextCursor::insertFrame()}{insertFrame()} inserts a frame into the
+ document \e after the cursor's current block, and moves the cursor to
+ the start of the empty block in the new frame.
+ \i \l{QTextCursor::insertList()}{insertList()} inserts a list into the
+ document at the cursor's position, and moves the cursor to the start
+ of the first item in the list.
+ \i \l{QTextCursor::insertTable()}{insertTable()} inserts a table into
+ the document \e after the cursor's current block, and moves the cursor
+ to the start of the block following the table.
+ \endlist
+
+ These elements either contain or group together other elements in the
+ document.
+
+ \section2 Text and Text Fragments
+
+ Text can be inserted into the current block in the current character
+ format, or in a custom format that is specified with the text:
+
+ \snippet doc/src/snippets/textdocument-charformats/main.cpp 0
+
+ Once the character format has been used with a cursor, that format becomes
+ the default format for any text inserted with that cursor until another
+ character format is specified.
+
+ If a cursor is used to insert text without specifying a character format,
+ the text will be given the character format used at that position in the
+ document.
+
+ \section2 Blocks
+
+ Text blocks are inserted into the document with the
+ \l{QTextCursor::insertBlock()}{insertBlock()} function.
+
+ \snippet doc/src/snippets/textblock-formats/main.cpp 1
+
+ The cursor is positioned at the start of the new block.
+
+ \section2 Frames
+
+ Frames are inserted into a document using the cursor, and will be placed
+ within the cursor's current frame \e after the current block.
+ The following code shows how a frame can be inserted between two text
+ blocks in a document's root frame. We begin by finding the cursor's
+ current frame:
+
+ \snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 0
+
+ We insert some text in this frame then set up a frame format for the
+ child frame:
+
+ \snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 1
+
+ The frame format will give the frame an external margin of 32 pixels,
+ internal padding of 8 pixels, and a border that is 4 pixels wide.
+ See the QTextFrameFormat documentation for more information about
+ frame formats.
+
+ The frame is inserted into the document after the preceding text:
+
+ \snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 2
+
+ We add some text to the document immediately after we insert the frame.
+ Since the text cursor is positioned \e{inside the frame} when it is inserted
+ into the document, this text will also be inserted inside the frame.
+
+ Finally, we position the cursor outside the frame by taking the last
+ available cursor position inside the frame we recorded earlier:
+
+ \snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 3
+
+ The text that we add last is inserted after the child frame in the
+ document. Since each frame is padded with text blocks, this ensures that
+ more elements can always be inserted with a cursor.
+
+ \section2 Tables
+
+ Tables are inserted into the document using the cursor, and will be
+ placed within the cursor's current frame \e after the current block:
+
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 0
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 3
+
+ Tables can be created with a specific format that defines the overall
+ properties of the table, such as its alignment, background color, and
+ the cell spacing used. It can also determine the constraints on each
+ column, allowing each of them to have a fixed width, or resize according
+ to the available space.
+
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 2
+
+ The columns in the table created above will each take up a certain
+ percentage of the available width. Note that the table format is
+ optional; if you insert a table without a format, some sensible
+ default values will be used for the table's properties.
+
+ Since cells can contain other document elements, they too can be
+ formatted and styled as necessary.
+
+ Text can be added to the table by navigating to each cell with the cursor
+ and inserting text.
+
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 4
+
+ We can create a simple timetable by following this approach:
+
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 5
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 6
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 7
+ \snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 8
+
+ \section2 Lists
+
+ Lists of block elements can be automatically created and inserted into the
+ document at the current cursor position. Each list that is created in this
+ way requires a list format to be specified:
+
+ \snippet doc/src/snippets/textdocument-lists/mainwindow.cpp 0
+
+ The above code first checks whether the cursor is within an existing list
+ and, if so, gives the list format for the new list a suitable level of
+ indentation. This allows nested lists to be created with increasing
+ levels of indentation. A more sophisticated implementation would also use
+ different kinds of symbol for the bullet points in each level of the list.
+
+ \section2 Images
+
+ Inline images are added to documents through the cursor in the usual manner.
+ Unlike many other elements, all of the image properties are specified by the
+ image's format. This means that a QTextImageFormat object has to be
+ created before an image can be inserted:
+
+ \snippet doc/src/snippets/textdocument-images/main.cpp 1
+
+ The image name refers to an entry in the application's resource file.
+ The method used to derive this name is described in
+ \l{resources.html}{The Qt Resource System}.
+
+ \section1 Examples
+
+ Rich text is stored in text documents that can either be created by
+ importing HTML from an external source, or generated using a QTextCursor.
+
+ \section2 Manipulating Rich Text
+
+ The easiest way to use a rich text document is through
+ the QTextEdit class, providing an editable view onto a document. The code
+ below imports HTML into a document, and displays the document using a
+ text edit widget.
+
+ \snippet doc/src/snippets/scribe-overview/main.cpp 1
+
+ You can retrieve the document from the text edit using the
+ document() function. The document can then be edited programmatically
+ using the QTextCursor class. This class is modeled after a screen
+ cursor, and editing operations follow the same semantics. The following
+ code changes the first line of the document to a bold font, leaving all
+ other font properties untouched. The editor will be automatically
+ updated to reflect the changes made to the underlying document data.
+
+ \snippet doc/src/snippets/scribe-overview/main.cpp 0
+
+ Note that the cursor was moved from the start of the first line to the
+ end, but that it retained an anchor at the start of the line. This
+ demonstrates the cursor-based selection facilities of the
+ QTextCursor class.
+
+ \section2 Generating a Calendar
+
+ Rich text can be generated very quickly using the cursor-based
+ approach. The following example shows a simple calendar in a
+ QTextEdit widget with bold headers for the days of the week:
+
+ \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 0
+ \codeline
+ \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 1
+ \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 2
+ \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 3
+
+ The above example demonstrates how simple it is to quickly generate new
+ rich text documents using a minimum amount of code. Although we have
+ generated a crude fixed-pitch calendar to avoid quoting too much code,
+ Scribe provides much more sophisticated layout and formatting features.
+*/
+
+/*!
+ \page richtext-layouts.html
+ \contentspage richtext.html Contents
+ \previouspage The QTextCursor Interface
+ \nextpage Common Rich Text Editing Tasks
+
+ \title Document Layouts
+
+ \tableofcontents
+
+ The layout of a document is only relevant when it is to be displayed on
+ a device, or when some information is requested that requires a visual
+ representation of the document. Until this occurs, the document does
+ not need to be formatted and prepared for a device.
+
+ \section1 Overview
+
+ Each document's layout is managed by a subclass of the
+ QAbstractTextDocumentLayout class. This class provides a common
+ interface for layout and rendering engines. The default rendering
+ behavior is currently implemented in a private class. This approach
+ makes it possible to create custom layouts, and provides the
+ mechanism used when preparing pages for printing or exporting to
+ Portable Document Format (PDF) files.
+
+ \section1 Example - Shaped Text Layout
+
+ Sometimes it is important to be able to format plain text within an
+ irregularly-shaped region, perhaps when rendering a custom widget, for
+ example. Scribe provides generic features, such as those provided by
+ the QTextLayout class, to help developers perform word-wrapping and
+ layout tasks without the need to create a document first.
+
+ \img plaintext-layout.png
+
+ Formatting and drawing a paragraph of plain text is straightforward.
+ The example below will lay out a paragraph of text, using a single
+ font, around the right hand edge of a circle.
+
+ \snippet doc/src/snippets/plaintextlayout/window.cpp 0
+
+ We create a text layout, specifying the text string we want to display
+ and the font to use. We ensure that the text we supplied is formatted
+ correctly by obtaining text lines from the text format, and wrapping
+ the remaining text using the available space. The lines are positioned
+ as we move down the page.
+
+ The formatted text can be drawn onto a paint device; in the above code,
+ the text is drawn directly onto a widget.
+ */
+
+ /*!
+ \page richtext-common-tasks.html
+ \contentspage richtext.html Contents
+ \previouspage Document Layouts
+ \nextpage Advanced Rich Text Processing
+
+ \title Common Rich Text Editing Tasks
+
+ \tableofcontents
+
+ There are a number of tasks that are often performed by developers
+ when editing and processing text documents using Qt. These include the use
+ of display widgets such as QTextBrowser and QTextEdit, creation of
+ documents with QTextDocument, editing using a QTextCursor, and
+ exporting the document structure.
+ This document outlines some of the more common ways of using the rich
+ text classes to perform these tasks, showing convenient patterns that can
+ be reused in your own applications.
+
+ \section1 Using QTextEdit
+
+ A text editor widget can be constructed and used to display HTML in the
+ following way:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 2
+
+ By default, the text editor contains a document with a root frame, inside
+ which is an empty text block. This document can be obtained so that it can
+ be modified directly by the application:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 3
+
+ The text editor's cursor may also be used to edit a document:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 4
+
+ Although a document can be edited using many cursors at once, a QTextEdit
+ only displays a single cursor at a time. Therefore, if we want to update the
+ editor to display a particular cursor or its selection, we need to set the
+ editor's cursor after we have modified the document:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 5
+
+ \section1 Selecting Text
+
+ Text is selected by moving the cursor using operations that are similar to
+ those performed by a user in a text editor. To select text between two
+ points in the document, we need to position the cursor at the first point
+ then move it using a special mode (\l{QTextCursor::MoveMode}) with a
+ move operation (\l{QTextCursor::MoveOperation}).
+ When we select the text, we leave the selection anchor at the old cursor
+ position just as the user might do by holding down the Shift key when
+ selecting text:
+
+ \snippet doc/src/snippets/textdocument-selections/mainwindow.cpp 1
+
+ In the above code, a whole word is selected using this method. QTextCursor
+ provides a number of common move operations for selecting individual
+ characters, words, lines, and whole blocks.
+
+ \section1 Finding Text
+
+ QTextDocument provides a cursor-based interface for searching, making
+ it easy to find and modify text in the style of a text editor. The following
+ code finds all the instances of a particular word in a document, and changes
+ the color of each:
+
+ \snippet doc/src/snippets/textdocument-find/main.cpp 0
+ \snippet doc/src/snippets/textdocument-find/main.cpp 1
+
+ Note that the cursor does not have to be moved after each search and replace
+ operation; it is always positioned at the end of the word that was just
+ replaced.
+
+ \section1 Printing Documents
+
+ QTextEdit is designed for the display of large rich text documents that are
+ read on screen, rendering them in the same way as a web browser. As a result,
+ it does not automatically break the contents of the document into page-sized
+ pieces that are suitable for printing.
+
+ QTextDocument provides a \l{QTextDocument::print()}{print()} function to
+ allow documents to be printed using the QPrinter class. The following code
+ shows how to prepare a document in a QTextEdit for printing with a QPrinter:
+
+ \snippet doc/src/snippets/textdocument-printing/mainwindow.cpp 0
+
+ The document is obtained from the text editor, and a QPrinter is constructed
+ then configured using a QPrintDialog. If the user accepts the printer's
+ configuration then the document is formatted and printed using the
+ \l{QTextDocument::print()}{print()} function.
+*/
+
+/*!
+ \page richtext-advanced-processing.html
+ \contentspage richtext.html Contents
+ \previouspage Common Rich Text Editing Tasks
+ \nextpage Supported HTML Subset
+
+ \title Advanced Rich Text Processing
+
+ \section1 Handling Large Files
+
+ Qt does not limit the size of files that are used for text
+ processing. In most cases, this will not present a problem. For
+ especially large files, however, you might experience that your
+ application will become unresponsive or that you will run out of
+ memory. The size of the files you can load depends on your
+ hardware and on Qt's and your own application's implementation.
+
+ If you are faced with this problem, we recommend that you address the
+ following issues:
+
+ \list
+ \o You should consider breaking up large paragraphs into smaller
+ ones as Qt handles small paragraphs better. You could also
+ insert line breaks at regular intervals, which will look the
+ same as one large paragraph in a QTextEdit.
+ \o You can reduce the amount of blocks in a QTextDocument with
+ \l{QTextDocument::}{maximumBlockCount()}. The document is only
+ as large as the number of blocks as far as QTextEdit is concerned.
+ \o When adding text to a text edit, it is an advantage to add it
+ in an edit block (see example below). The result is that the
+ text edit does not need to build the entire document structure at once.
+ \endlist
+
+ We give an example of the latter technique from the list. We assume that
+ the text edit is visible.
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 6
+
+ \omit
+ Ideas for other sections:
+
+ * Hiding QTextBlock elements.
+ * Changing the word wrapping mode in QTextEdit. Custom word wrapping?
+ \endomit
+*/
+
+/*!
+ \page richtext-html-subset.html
+ \title Supported HTML Subset
+ \brief Describes the support for HTML markup in text widgets.
+
+ \contentspage richtext.html Contents
+ \previouspage Common Rich Text Editing Tasks
+
+ Qt's text widgets are able to display rich text, specified using a subset of \l{HTML 4}
+ markup. Widgets that use QTextDocument, such as QLabel and QTextEdit, are able to display
+ rich text specified in this way.
+
+ \tableofcontents
+
+ \section1 Using HTML Markup in Text Widgets
+
+ Widgets automatically detect HTML markup and display rich text accordingly. For example,
+ setting a label's \l{QLabel::}{text} property with the string \c{"<b>Hello</b> <i>Qt!</i>"}
+ will result in the label displaying text like this: \bold{Hello} \e{Qt!}
+
+ When HTML markup is used for text, Qt follows the rules defined by the \l{HTML 4}
+ specification. This includes default properties for text layout, such as the
+ direction of the text flow (left-to-right) which can be changed by applying the
+ \l{#Block Attributes}{\c dir} attribute to blocks of text.
+
+ \section1 Supported Tags
+
+ The following table lists the HTML tags supported by Qt's
+ \l{Rich Text Processing}{rich text} engine:
+
+ \table
+ \header \o Tag
+ \o Description
+ \o Comment
+ \row \o \c a
+ \o Anchor or link
+ \o Supports the \c href and \c name attributes.
+ \row \o \c address
+ \o Address
+ \o
+ \row \o \c b
+ \o Bold
+ \o
+ \row \o \c big
+ \o Larger font
+ \o
+ \row \o \c blockquote
+ \o Indented paragraph
+ \o
+ \row \o \c body
+ \o Document body
+ \o Supports the \c bgcolor attribute, which
+ can be a Qt \l{QColor::setNamedColor()}{color name}
+ or a \c #RRGGBB color specification.
+ \row \o \c br
+ \o Line break
+ \o
+ \row \o \c center
+ \o Centered paragraph
+ \o
+ \row \o \c cite
+ \o Inline citation
+ \o Same as \c i.
+ \row \o \c code
+ \o Code
+ \o Same as \c tt.
+ \row \o \c dd
+ \o Definition data
+ \o
+ \row \o \c dfn
+ \o Definition
+ \o Same as \c i.
+ \row \o \c div
+ \o Document division
+ \o Supports the standard \l{block attributes}.
+ \row \o \c dl
+ \o Definition list
+ \o Supports the standard \l{block attributes}.
+ \row \o \c dt
+ \o Definition term
+ \o Supports the standard \l{block attributes}.
+ \row \o \c em
+ \o Emphasized
+ \o Same as \c i.
+ \row \o \c font
+ \o Font size, family, and/or color
+ \o Supports the following attributes:
+ \c size, \c face, and \c color (Qt
+ \l{QColor::setNamedColor()}{color names} or
+ \c #RRGGBB).
+ \row \o \c h1
+ \o Level 1 heading
+ \o Supports the standard \l{block attributes}.
+ \row \o \c h2
+ \o Level 2 heading
+ \o Supports the standard \l{block attributes}.
+ \row \o \c h3
+ \o Level 3 heading
+ \o Supports the standard \l{block attributes}.
+ \row \o \c h4
+ \o Level 4 heading
+ \o Supports the standard \l{block attributes}.
+ \row \o \c h5
+ \o Level 5 heading
+ \o Supports the standard \l{block attributes}.
+ \row \o \c h6
+ \o Level 6 heading
+ \o Supports the standard \l{block attributes}.
+ \row \o \c head
+ \o Document header
+ \o
+ \row \o \c hr
+ \o Horizontal line
+ \o Supports the \c width attribute, which can
+ be specified as an absolute or relative (\c %) value.
+ \row \o \c html
+ \o HTML document
+ \o
+ \row \o \c i
+ \o Italic
+ \o
+ \row \o \c img
+ \o Image
+ \o Supports the \c src, \c source
+ (for Qt 3 compatibility), \c width, and \c height
+ attributes.
+ \row \o \c kbd
+ \o User-entered text
+ \o
+ \row \o \c meta
+ \o Meta-information
+ \o If a text encoding is specified using the \c{meta} tag,
+ it is picked up by Qt::codecForHtml().
+ Likewise, if an encoding is specified to
+ QTextDocument::toHtml(), the encoding is stored using
+ a \c meta tag, for example:
+
+ \snippet doc/src/snippets/code/doc_src_richtext.qdoc 7
+
+ \row \o \c li
+ \o List item
+ \o
+ \row \o \c nobr
+ \o Non-breakable text
+ \o
+ \row \o \c ol
+ \o Ordered list
+ \o Supports the standard \l{list attributes}.
+ \row \o \c p
+ \o Paragraph
+ \o Left-aligned by default. Supports the standard
+ \l{block attributes}.
+ \row \o \c pre
+ \o Preformated text
+ \o
+ \row \o \c qt
+ \o Qt rich-text document
+ \o Synonym for \c html. Provided for compatibility with
+ earlier versions of Qt.
+ \row \o \c s
+ \o Strikethrough
+ \o
+ \row \o \c samp
+ \o Sample code
+ \o Same as \c tt.
+ \row \o \c small
+ \o Small font
+ \o
+ \row \o \c span
+ \o Grouped elements
+ \o
+ \row \o \c strong
+ \o Strong
+ \o Same as \c b.
+ \row \o \c sub
+ \o Subscript
+ \o
+ \row \o \c sup
+ \o Superscript
+ \o
+ \row \o \c table
+ \o Table
+ \o Supports the following attributes: \c border,
+ \c bgcolor (Qt \l{QColor::setNamedColor()}{color names}
+ or \c #RRGGBB), \c cellspacing, \c cellpadding,
+ \c width (absolute or relative), and \c height.
+ \row \o \c tbody
+ \o Table body
+ \o Does nothing.
+ \row \o \c td
+ \o Table data cell
+ \o Supports the standard \l{table cell attributes}.
+ \row \o \c tfoot
+ \o Table footer
+ \o Does nothing.
+ \row \o \c th
+ \o Table header cell
+ \o Supports the standard \l{table cell attributes}.
+ \row \o \c thead
+ \o Table header
+ \o If the \c thead tag is specified, it is used when printing tables
+ that span multiple pages.
+ \row \o \c title
+ \o Document title
+ \o The value specified using the \c
+ title tag is available through
+ QTextDocument::metaInformation().
+ \row \o \c tr
+ \o Table row
+ \o Supports the \c bgcolor attribute, which
+ can be a Qt \l{QColor::setNamedColor()}{color name}
+ or a \c #RRGGBB color specification.
+ \row \o \c tt
+ \o Typewrite font
+ \o
+ \row \o \c u
+ \o Underlined
+ \o
+ \row \o \c ul
+ \o Unordered list
+ \o Supports the standard \l{list attributes}.
+ \row \o \c var
+ \o Variable
+ \o Same as \c i.
+ \endtable
+
+ \section1 Block Attributes
+
+ The following attributes are supported by the \c div, \c dl, \c
+ dt, \c h1, \c h2, \c h3, \c h4, \c h5, \c h6, \c p tags:
+
+ \list
+ \o \c align (\c left, \c right, \c center, \c justify)
+ \o \c dir (\c ltr, \c rtl)
+ \endlist
+
+ \section1 List Attributes
+
+ The following attribute is supported by the \c ol and \c ul tags:
+
+ \list
+ \o \c type (\c 1, \c a, \c A, \c square, \c disc, \c circle)
+ \endlist
+
+ \section1 Table Cell Attributes
+
+ The following attributes are supported by the \c td and \c th
+ tags:
+
+ \list
+ \o \c width (absolute, relative, or no-value)
+ \o \c bgcolor (Qt \l{QColor::setNamedColor()}{color names} or \c #RRGGBB)
+ \o \c colspan
+ \o \c rowspan
+ \o \c align (\c left, \c right, \c center, \c justify)
+ \o \c valign (\c top, \c middle, \c bottom)
+ \endlist
+
+ \section1 CSS Properties
+ The following table lists the CSS properties supported by Qt's
+ \l{Rich Text Processing}{rich text} engine:
+
+ \table
+ \header \o Property
+ \o Values
+ \o Description
+ \row
+ \o \c background-color
+ \o <color>
+ \o Background color for elements
+ \row
+ \o \c background-image
+ \o <uri>
+ \o Background image for elements
+ \row \o \c color
+ \o <color>
+ \o Text foreground color
+ \row \o \c font-family
+ \o <family name>
+ \o Font family name
+ \row \o \c font-size
+ \o [ small | medium | large | x-large | xx-large ] | <size>pt | <size>px
+ \o Font size relative to the document font, or specified in points or pixels
+ \row \o \c font-style
+ \o [ normal | italic | oblique ]
+ \o
+ \row \o \c font-weight
+ \o [ normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 ]
+ \o Specifies the font weight used for text, where \c normal and \c bold
+ are mapped to the corresponding QFont weights. Numeric values are
+ 8 times the equivalent QFont weight values.
+ \row \o \c text-decoration
+ \o none | [ underline || overline || line-through ]
+ \o Additional text effects
+ \row \o \c font
+ \o [ [ <'font-style'> || <'font-weight'> ]? <'font-size'> <'font-family'> ]
+ \o Font shorthand property
+ \row \o \c text-indent
+ \o <length>px
+ \o First line text indentation in pixels
+ \row \o \c white-space
+ \o normal | pre | nowrap | pre-wrap
+ \o Declares how whitespace in HTML is handled.
+ \row \o \c margin-top
+ \o <length>px
+ \o Top paragraph margin in pixels
+ \row \o \c margin-bottom
+ \o <length>px
+ \o Bottom paragraph margin in pixels
+ \row \o \c margin-left
+ \o <length>px
+ \o Left paragraph margin in pixels
+ \row \o \c margin-right
+ \o <length>px
+ \o Right paragraph margin in pixels
+ \row \o \c padding-top
+ \o <length>px
+ \o Top table cell padding in pixels
+ \row \o \c padding-bottom
+ \o <length>px
+ \o Bottom table cell padding in pixels
+ \row \o \c padding-left
+ \o <length>px
+ \o Left table cell padding in pixels
+ \row \o \c padding-right
+ \o <length>px
+ \o Right table cell padding in pixels
+ \row \o \c padding
+ \o <length>px
+ \o Shorthand for setting all the padding properties at once.
+ \row \o \c vertical-align
+ \o baseline | sub | super | middle | top | bottom
+ \o Vertical text alignment. For vertical alignment in text table cells only middle, top, and bottom apply.
+ \row \o \c border-color
+ \o <color>
+ \o Border color for text tables.
+ \row \o \c border-style
+ \o none | dotted | dashed | dot-dash | dot-dot-dash | solid | double | groove | ridge | inset | outset
+ \o Border style for text tables.
+ \row \o \c background
+ \o [ <'background-color'> || <'background-image'> ]
+ \o Background shorthand property
+ \row \o \c page-break-before
+ \o [ auto | always ]
+ \o Make it possible to enforce a page break before the paragraph/table
+ \row \o \c page-break-after
+ \o [ auto | always ]
+ \o Make it possible to enforce a page break after the paragraph/table
+ \row \o float
+ \o [ left | right | none ]
+ \o Specifies where an image or a text will be placed in another element. Note that the \c float property is
+ only supported for tables and images.
+ \row \o \c text-transform
+ \o [ uppercase | lowercase ]
+ \o Select the transformation that will be performed on the text prior to displaying it.
+ \row \o \c font-variant
+ \o small-caps
+ \o Perform the smallcaps transformation on the text prior to displaying it.
+ \row \o \c word-spacing
+ \o <width>px
+ \o Specifies an alternate spacing between each word.
+ \endtable
+
+ \section1 Supported CSS Selectors
+
+ All CSS 2.1 selector classes are supported except pseudo-class selectors such
+ as \c{:first-child}, \c{:visited} and \c{:hover}.
+
+*/
diff --git a/doc/src/frameworks-technologies/statemachine.qdoc b/doc/src/frameworks-technologies/statemachine.qdoc
new file mode 100644
index 000000000..b0b13a7fd
--- /dev/null
+++ b/doc/src/frameworks-technologies/statemachine.qdoc
@@ -0,0 +1,566 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group statemachine
+ \title State Machine Classes
+*/
+
+/*!
+ \page statemachine-api.html
+ \title The State Machine Framework
+ \brief An overview of the State Machine framework for constructing and executing state graphs.
+
+ \ingroup frameworks-technologies
+
+ \tableofcontents
+
+ The State Machine framework provides classes for creating and executing
+ state graphs. The concepts and notation are based on those from Harel's
+ \l{Statecharts: A visual formalism for complex systems}{Statecharts}, which
+ is also the basis of UML state diagrams. The semantics of state machine
+ execution are based on \l{State Chart XML: State Machine Notation for
+ Control Abstraction}{State Chart XML (SCXML)}.
+
+ Statecharts provide a graphical way of modeling how a system reacts to
+ stimuli. This is done by defining the possible \e states that the system can
+ be in, and how the system can move from one state to another (\e transitions
+ between states). A key characteristic of event-driven systems (such as Qt
+ applications) is that behavior often depends not only on the last or current
+ event, but also the events that preceded it. With statecharts, this
+ information is easy to express.
+
+ The State Machine framework provides an API and execution model that can be
+ used to effectively embed the elements and semantics of statecharts in Qt
+ applications. The framework integrates tightly with Qt's meta-object system;
+ for example, transitions between states can be triggered by signals, and
+ states can be configured to set properties and invoke methods on QObjects.
+ Qt's event system is used to drive the state machines.
+
+ The state graph in the State Machine framework is hierarchical. States can be nested inside of
+ other states, and the current configuration of the state machine consists of the set of states
+ which are currently active. All the states in a valid configuration of the state machine will
+ have a common ancestor.
+
+ \section1 Classes in the State Machine Framework
+
+ These classes are provided by qt for creating event-driven state machines.
+
+ \annotatedlist statemachine
+
+ \section1 A Simple State Machine
+
+ To demonstrate the core functionality of the State Machine API, let's look
+ at a small example: A state machine with three states, \c s1, \c s2 and \c
+ s3. The state machine is controlled by a single QPushButton; when the button
+ is clicked, the machine transitions to another state. Initially, the state
+ machine is in state \c s1. The statechart for this machine is as follows:
+
+ \img statemachine-button.png
+ \omit
+ \caption This is a caption
+ \endomit
+
+ The following snippet shows the code needed to create such a state machine.
+ First, we create the state machine and states:
+
+ \snippet doc/src/snippets/statemachine/main.cpp 0
+
+ Then, we create the transitions by using the QState::addTransition()
+ function:
+
+ \snippet doc/src/snippets/statemachine/main.cpp 1
+
+ Next, we add the states to the machine and set the machine's initial state:
+
+ \snippet doc/src/snippets/statemachine/main.cpp 2
+
+ Finally, we start the state machine:
+
+ \snippet doc/src/snippets/statemachine/main.cpp 3
+
+ The state machine executes asynchronously, i.e. it becomes part of your
+ application's event loop.
+
+ \section1 Doing Useful Work on State Entry and Exit
+
+ The above state machine merely transitions from one state to another, it
+ doesn't perform any operations. The QState::assignProperty() function can be
+ used to have a state set a property of a QObject when the state is
+ entered. In the following snippet, the value that should be assigned to a
+ QLabel's text property is specified for each state:
+
+ \snippet doc/src/snippets/statemachine/main.cpp 4
+
+ When any of the states is entered, the label's text will be changed
+ accordingly.
+
+ The QState::entered() signal is emitted when the state is entered, and the
+ QState::exited() signal is emitted when the state is exited. In the
+ following snippet, the button's showMaximized() slot will be called when
+ state \c s3 is entered, and the button's showMinimized() slot will be called
+ when \c s3 is exited:
+
+ \snippet doc/src/snippets/statemachine/main.cpp 5
+
+ Custom states can reimplement QAbstractState::onEntry() and
+ QAbstractState::onExit().
+
+ \section1 State Machines That Finish
+
+ The state machine defined in the previous section never finishes. In order
+ for a state machine to be able to finish, it needs to have a top-level \e
+ final state (QFinalState object). When the state machine enters a top-level
+ final state, the machine will emit the QStateMachine::finished() signal and
+ halt.
+
+ All you need to do to introduce a final state in the graph is create a
+ QFinalState object and use it as the target of one or more transitions.
+
+ \section1 Sharing Transitions By Grouping States
+
+ Assume we wanted the user to be able to quit the application at any time by
+ clicking a Quit button. In order to achieve this, we need to create a final
+ state and make it the target of a transition associated with the Quit
+ button's clicked() signal. We could add a transition from each of \c s1, \c
+ s2 and \c s3; however, this seems redundant, and one would also have to
+ remember to add such a transition from every new state that is added in the
+ future.
+
+ We can achieve the same behavior (namely that clicking the Quit button quits
+ the state machine, regardless of which state the state machine is in) by
+ grouping states \c s1, \c s2 and \c s3. This is done by creating a new
+ top-level state and making the three original states children of the new
+ state. The following diagram shows the new state machine.
+
+ \img statemachine-button-nested.png
+ \omit
+ \caption This is a caption
+ \endomit
+
+ The three original states have been renamed \c s11, \c s12 and \c s13 to
+ reflect that they are now children of the new top-level state, \c s1. Child
+ states implicitly inherit the transitions of their parent state. This means
+ it is now sufficient to add a single transition from \c s1 to the final
+ state \c s2. New states added to \c s1 will also automatically inherit this
+ transition.
+
+ All that's needed to group states is to specify the proper parent when the
+ state is created. You also need to specify which of the child states is the
+ initial one (i.e. which child state the state machine should enter when the
+ parent state is the target of a transition).
+
+ \snippet doc/src/snippets/statemachine/main2.cpp 0
+
+ \snippet doc/src/snippets/statemachine/main2.cpp 1
+
+ In this case we want the application to quit when the state machine is
+ finished, so the machine's finished() signal is connected to the
+ application's quit() slot.
+
+ A child state can override an inherited transition. For example, the
+ following code adds a transition that effectively causes the Quit button to
+ be ignored when the state machine is in state \c s12.
+
+ \snippet doc/src/snippets/statemachine/main2.cpp 2
+
+ A transition can have any state as its target, i.e. the target state does
+ not have to be on the same level in the state hierarchy as the source state.
+
+ \section1 Using History States to Save and Restore the Current State
+
+ Imagine that we wanted to add an "interrupt" mechanism to the example
+ discussed in the previous section; the user should be able to click a button
+ to have the state machine perform some non-related task, after which the
+ state machine should resume whatever it was doing before (i.e. return to the
+ old state, which is one of \c s11, \c s12 and \c s13 in this case).
+
+ Such behavior can easily be modeled using \e{history states}. A history
+ state (QHistoryState object) is a pseudo-state that represents the child
+ state that the parent state was in the last time the parent state was
+ exited.
+
+ A history state is created as a child of the state for which we wish to
+ record the current child state; when the state machine detects the presence
+ of such a state at runtime, it automatically records the current (real)
+ child state when the parent state is exited. A transition to the history
+ state is in fact a transition to the child state that the state machine had
+ previously saved; the state machine automatically "forwards" the transition
+ to the real child state.
+
+ The following diagram shows the state machine after the interrupt mechanism
+ has been added.
+
+ \img statemachine-button-history.png
+ \omit
+ \caption This is a caption
+ \endomit
+
+ The following code shows how it can be implemented; in this example we
+ simply display a message box when \c s3 is entered, then immediately return
+ to the previous child state of \c s1 via the history state.
+
+ \snippet doc/src/snippets/statemachine/main2.cpp 3
+
+ \section1 Using Parallel States to Avoid a Combinatorial Explosion of States
+
+ Assume that you wanted to model a set of mutually exclusive properties of a
+ car in a single state machine. Let's say the properties we are interested in
+ are Clean vs Dirty, and Moving vs Not moving. It would take four mutually
+ exclusive states and eight transitions to be able to represent and freely
+ move between all possible combinations.
+
+ \img statemachine-nonparallel.png
+ \omit
+ \caption This is a caption
+ \endomit
+
+ If we added a third property (say, Red vs Blue), the total number of states
+ would double, to eight; and if we added a fourth property (say, Enclosed vs
+ Convertible), the total number of states would double again, to 16.
+
+ Using parallel states, the total number of states and transitions grows
+ linearly as we add more properties, instead of exponentially. Furthermore,
+ states can be added to or removed from the parallel state without affecting
+ any of their sibling states.
+
+ \img statemachine-parallel.png
+ \omit
+ \caption This is a caption
+ \endomit
+
+ To create a parallel state group, pass QState::ParallelStates to the QState
+ constructor.
+
+ \snippet doc/src/snippets/statemachine/main3.cpp 0
+
+ When a parallel state group is entered, all its child states will be
+ simultaneously entered. Transitions within the individual child states
+ operate normally. However, any of the child states may take a transition which exits the parent
+ state. When this happens, the parent state and all of its child states are exited.
+
+ The parallelism in the State Machine framework follows an interleaved semantics. All parallel
+ operations will be executed in a single, atomic step of the event processing, so no event can
+ interrupt the parallel operations. However, events will still be processed sequentially, since
+ the machine itself is single threaded. As an example: Consider the situation where there are two
+ transitions that exit the same parallel state group, and their conditions become true
+ simultaneously. In this case, the event that is processed last of the two will not have any
+ effect, since the first event will already have caused the machine to exit from the parallel
+ state.
+
+ \section1 Detecting that a Composite State has Finished
+
+ A child state can be final (a QFinalState object); when a final child state
+ is entered, the parent state emits the QState::finished() signal. The
+ following diagram shows a composite state \c s1 which does some processing
+ before entering a final state:
+
+ \img statemachine-finished.png
+ \omit
+ \caption This is a caption
+ \endomit
+
+ When \c s1 's final state is entered, \c s1 will automatically emit
+ finished(). We use a signal transition to cause this event to trigger a
+ state change:
+
+ \snippet doc/src/snippets/statemachine/main3.cpp 1
+
+ Using final states in composite states is useful when you want to hide the
+ internal details of a composite state; i.e. the only thing the outside world
+ should be able to do is enter the state, and get a notification when the
+ state has completed its work. This is a very powerful abstraction and
+ encapsulation mechanism when building complex (deeply nested) state
+ machines. (In the above example, you could of course create a transition
+ directly from \c s1 's \c done state rather than relying on \c s1 's
+ finished() signal, but with the consequence that implementation details of
+ \c s1 are exposed and depended on).
+
+ For parallel state groups, the QState::finished() signal is emitted when \e
+ all the child states have entered final states.
+
+ \section1 Targetless Transitions
+
+ A transition need not have a target state. A transition without a target can
+ be triggered the same way as any other transition; the difference is that
+ when a targetless transition is triggered, it doesn't cause any state
+ changes. This allows you to react to a signal or event when your machine is
+ in a certain state, without having to leave that state. Example:
+
+ \code
+ QStateMachine machine;
+ QState *s1 = new QState(&machine);
+
+ QPushButton button;
+ QSignalTransition *trans = new QSignalTransition(&button, SIGNAL(clicked()));
+ s1->addTransition(trans);
+
+ QMessageBox msgBox;
+ msgBox.setText("The button was clicked; carry on.");
+ QObject::connect(trans, SIGNAL(triggered()), &msgBox, SLOT(exec()));
+
+ machine.setInitialState(s1);
+ \endcode
+
+ The message box will be displayed each time the button is clicked, but the
+ state machine will remain in its current state (s1). If the target state
+ were explicitly set to s1, however, s1 would be exited and re-entered each
+ time (e.g. the QAbstractState::entered() and QAbstractState::exited()
+ signals would be emitted).
+
+ \section1 Events, Transitions and Guards
+
+ A QStateMachine runs its own event loop. For signal transitions
+ (QSignalTransition objects), QStateMachine automatically posts a
+ QStateMachine::SignalEvent to itself when it intercepts the corresponding
+ signal; similarly, for QObject event transitions (QEventTransition objects)
+ a QStateMachine::WrappedEvent is posted.
+
+ You can post your own events to the state machine using
+ QStateMachine::postEvent().
+
+ When posting a custom event to the state machine, you typically also have
+ one or more custom transitions that can be triggered from events of that
+ type. To create such a transition, you subclass QAbstractTransition and
+ reimplement QAbstractTransition::eventTest(), where you check if an event
+ matches your event type (and optionally other criteria, e.g. attributes of
+ the event object).
+
+ Here we define our own custom event type, \c StringEvent, for posting
+ strings to the state machine:
+
+ \snippet doc/src/snippets/statemachine/main4.cpp 0
+
+ Next, we define a transition that only triggers when the event's string
+ matches a particular string (a \e guarded transition):
+
+ \snippet doc/src/snippets/statemachine/main4.cpp 1
+
+ In the eventTest() reimplementation, we first check if the event type is the
+ desired one; if so, we cast the event to a StringEvent and perform the
+ string comparison.
+
+ The following is a statechart that uses the custom event and transition:
+
+ \img statemachine-customevents.png
+ \omit
+ \caption This is a caption
+ \endomit
+
+ Here's what the implementation of the statechart looks like:
+
+ \snippet doc/src/snippets/statemachine/main4.cpp 2
+
+ Once the machine is started, we can post events to it.
+
+ \snippet doc/src/snippets/statemachine/main4.cpp 3
+
+ An event that is not handled by any relevant transition will be silently
+ consumed by the state machine. It can be useful to group states and provide
+ a default handling of such events; for example, as illustrated in the
+ following statechart:
+
+ \img statemachine-customevents2.png
+ \omit
+ \caption This is a caption
+ \endomit
+
+ For deeply nested statecharts, you can add such "fallback" transitions at
+ the level of granularity that's most appropriate.
+
+ \section1 Using Restore Policy To Automatically Restore Properties
+
+ In some state machines it can be useful to focus the attention on assigning properties in states,
+ not on restoring them when the state is no longer active. If you know that a property should
+ always be restored to its initial value when the machine enters a state that does not explicitly
+ give the property a value, you can set the global restore policy to
+ QStateMachine::RestoreProperties.
+
+ \code
+ QStateMachine machine;
+ machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
+ \endcode
+
+ When this restore policy is set, the machine will automatically restore all properties. If it
+ enters a state where a given property is not set, it will first search the hierarchy of ancestors
+ to see if the property is defined there. If it is, the property will be restored to the value
+ defined by the closest ancestor. If not, it will be restored to its initial value (i.e. the
+ value of the property before any property assignments in states were executed.)
+
+ Take the following code:
+
+ \snippet doc/src/snippets/statemachine/main5.cpp 0
+
+ Lets say the property \c fooBar is 0.0 when the machine starts. When the machine is in state
+ \c s1, the property will be 1.0, since the state explicitly assigns this value to it. When the
+ machine is in state \c s2, no value is explicitly defined for the property, so it will implicitly
+ be restored to 0.0.
+
+ If we are using nested states, the parent defines a value for the property which is inherited by
+ all descendants that do not explicitly assign a value to the property.
+
+ \snippet doc/src/snippets/statemachine/main5.cpp 2
+
+ Here \c s1 has two children: \c s2 and \c s3. When \c s2 is entered, the property \c fooBar
+ will have the value 2.0, since this is explicitly defined for the state. When the machine is in
+ state \c s3, no value is defined for the state, but \c s1 defines the property to be 1.0, so this
+ is the value that will be assigned to \c fooBar.
+
+ \section1 Animating Property Assignments
+
+ The State Machine API connects with the Animation API in Qt to allow automatically animating
+ properties as they are assigned in states.
+
+ Say we have the following code:
+
+ \snippet doc/src/snippets/statemachine/main5.cpp 3
+
+ Here we define two states of a user interface. In \c s1 the \c button is small, and in \c s2
+ it is bigger. If we click the button to transition from \c s1 to \c s2, the geometry of the button
+ will be set immediately when a given state has been entered. If we want the transition to be
+ smooth, however, all we need to do is make a QPropertyAnimation and add this to the transition
+ object.
+
+ \snippet doc/src/snippets/statemachine/main5.cpp 4
+
+ Adding an animation for the property in question means that the property assignment will no
+ longer take immediate effect when the state has been entered. Instead, the animation will start
+ playing when the state has been entered and smoothly animate the property assignment. Since we
+ do not set the start value or end value of the animation, these will be set implicitly. The
+ start value of the animation will be the property's current value when the animation starts, and
+ the end value will be set based on the property assignments defined for the state.
+
+ If the global restore policy of the state machine is set to QStateMachine::RestoreProperties,
+ it is possible to also add animations for the property restorations.
+
+ \section1 Detecting That All Properties Have Been Set In A State
+
+ When animations are used to assign properties, a state no longer defines the exact values that a
+ property will have when the machine is in the given state. While the animation is running, the
+ property can potentially have any value, depending on the animation.
+
+ In some cases, it can be useful to be able to detect when the property has actually been assigned
+ the value defined by a state.
+
+ Say we have the following code:
+
+ \snippet doc/src/snippets/statemachine/main5.cpp 5
+
+ When \c button is clicked, the machine will transition into state \c s2, which will set the
+ geometry of the button, and then pop up a message box to alert the user that the geometry has
+ been changed.
+
+ In the normal case, where animations are not used, this will operate as expected. However, if
+ an animation for the \c geometry of \c button is set on the transition between \c s1 and \c s2,
+ the animation will be started when \c s2 is entered, but the \c geometry property will not
+ actually reach its defined value before the animation is finished running. In this case, the
+ message box will pop up before the geometry of the button has actually been set.
+
+ To ensure that the message box does not pop up until the geometry actually reaches its final
+ value, we can use the state's propertiesAssigned() signal. The propertiesAssigned() signal will be
+ emitted when the property is assigned its final value, whether this is done immediately or
+ after the animation has finished playing.
+
+ \snippet doc/src/snippets/statemachine/main5.cpp 6
+
+ In this example, when \c button is clicked, the machine will enter \c s2. It will remain in state
+ \c s2 until the \c geometry property has been set to \c QRect(0, 0, 50, 50). Then it will
+ transition into \c s3. When \c s3 is entered, the message box will pop up. If the transition into
+ \c s2 has an animation for the \c geometry property, then the machine will stay in \c s2 until the
+ animation has finished playing. If there is no such animation, it will simply set the property and
+ immediately enter state \c s3.
+
+ Either way, when the machine is in state \c s3, you are guaranteed that the property \c geometry
+ has been assigned the defined value.
+
+ If the global restore policy is set to QStateMachine::RestoreProperties, the state will not emit
+ the propertiesAssigned() signal until these have been executed as well.
+
+ \section1 What Happens If A State Is Exited Before The Animation Has Finished
+
+ If a state has property assignments, and the transition into the state has animations for the
+ properties, the state can potentially be exited before the properties have been assigned to the
+ values defines by the state. This is true in particular when there are transitions out from the
+ state that do not depend on the propertiesAssigned signal, as described in the previous section.
+
+ The State Machine API guarantees that a property assigned by the state machine either:
+ \list
+ \o Has a value explicitly assigned to the property.
+ \o Is currently being animated into a value explicitly assigned to the property.
+ \endlist
+
+ When a state is exited prior to the animation finishing, the behavior of the state machine depends
+ on the target state of the transition. If the target state explicitly assigns a value to the
+ property, no additional action will be taken. The property will be assigned the value defined by
+ the target state.
+
+ If the target state does not assign any value to the property, there are two
+ options: By default, the property will be assigned the value defined by the state it is leaving
+ (the value it would have been assigned if the animation had been permitted to finish playing). If
+ a global restore policy is set, however, this will take precedence, and the property will be
+ restored as usual.
+
+ \section1 Default Animations
+
+ As described earlier, you can add animations to transitions to make sure property assignments
+ in the target state are animated. If you want a specific animation to be used for a given property
+ regardless of which transition is taken, you can add it as a default animation to the state
+ machine. This is in particular useful when the properties assigned (or restored) by specific
+ states is not known when the machine is constructed.
+
+ \code
+ QState *s1 = new QState();
+ QState *s2 = new QState();
+
+ s2->assignProperty(object, "fooBar", 2.0);
+ s1->addTransition(s2);
+
+ QStateMachine machine;
+ machine.setInitialState(s1);
+ machine.addDefaultAnimation(new QPropertyAnimation(object, "fooBar"));
+ \endcode
+
+ When the machine is in state \c s2, the machine will play the default animation for the
+ property \c fooBar since this property is assigned by \c s2.
+
+ Note that animations explicitly set on transitions will take precedence over any default
+ animation for the given property.
+*/
diff --git a/doc/src/frameworks-technologies/templates.qdoc b/doc/src/frameworks-technologies/templates.qdoc
new file mode 100644
index 000000000..760e1a8ce
--- /dev/null
+++ b/doc/src/frameworks-technologies/templates.qdoc
@@ -0,0 +1,229 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 templates.html
+ \title Why Doesn't Qt Use Templates for Signals and Slots?
+ \brief The reasoning behind Qt's implementation of signals and slots.
+
+ Templates are a builtin mechanism in C++ that allows the compiler to
+ generate code on the fly, depending on the type of the arguments
+ passed. As such, templates are highly interesting to framework
+ creators, and we do use advanced templates in many places
+ in Qt. However, there are limitations: There are things that you can
+ easily express with templates, and there are things that are
+ impossible to express with templates. A generic vector container class
+ is easily expressible, even with partial specialisation for pointer
+ types, while a function that sets up a graphical user interface based
+ on a XML description given as a string is not expressible as
+ template. And then there is gray area in between. Things that you can
+ hack with templates at the cost of code size, readability,
+ portability, usability, extensability, robustness and ultimately
+ design beauty. Both templates and the C preprocessor can be stretched
+ to do incredibility smart and mind boggling things. But just because
+ those things can be done, does not necessarily mean doing them is the
+ right design choice.
+
+ There is an important practical challenge we have to mention: due to
+ the inadequacies of various compilers it is still not possible to
+ fully exploit the template mechanism in cross-platform
+ applications. Code unfortunately is not meant to be published in
+ books, but compiled with real-world compilers on real-world operating
+ system. Even today, many widely used C++ compilers have problems with
+ advanced templates. For example, you cannot safely rely on partial
+ template specialisation, which is essential for some non-trivial
+ problem domains. Some compilers also have limitations with regards to
+ template member functions, which make it hard to combine generic
+ programming with object orientated programming. However, we do not
+ perceive these problems as a serious limitation in our work. Even if
+ all our users had access to a fully standards compliant modern C++
+ compiler with excellent template support, we would not abandon the
+ string-based approach used by our meta object compiler for a template
+ based signals and slots system. Here are five reasons why:
+
+ \section1 Syntax matters
+
+ Syntax isn't just sugar: the syntax we use to express our algorithms can
+ significantly affect the readability and maintainability of our code.
+ The syntax used for Qt's signals and slots has proved very successful in
+ practice. The syntax is intuitive, simple to use and easy to read.
+ People learning Qt find the syntax helps them understand and utilize the
+ signals and slots concept -- despite its highly abstract and generic
+ nature. Furthermore, declaring signals in class definitions ensures that
+ the signals are protected in the sense of protected C++ member
+ functions. This helps programmers get their design right from the very
+ beginning, without even having to think about design patterns.
+
+ \section1 Code Generators are Good
+
+ Qt's \c{moc} (Meta Object Compiler) provides a clean way to go
+ beyond the compiled language's facilities. It does so by generating
+ additional C++ code which can be compiled by any standard C++ compiler.
+ The \c{moc} reads C++ source files. If it finds one or more class
+ declarations that contain the Q_OBJECT macro, it produces another C++
+ source file which contains the meta object code for those classes. The
+ C++ source file generated by the \c{moc} must be compiled and
+ linked with the implementation of the class (or it can be
+ \c{#included} into the class's source file). Typically \c{moc}
+ is not called manually, but automatically by the build system, so it
+ requires no additional effort by the programmer.
+
+ The \c{moc} is not the only code generator Qt is using. Another
+ prominent example is the \c{uic} (User Interface Compiler). It
+ takes a user interface description in XML and creates C++ code that
+ sets up the form. Outside Qt, code generators are common as well. Take
+ for example \c{rpc} and \c{idl}, that enable programs or
+ objects to communicate over process or machine boundaries. Or the vast
+ variety of scanner and parser generators, with \c{lex} and
+ \c{yacc} being the most well-known ones. They take a grammar
+ specification as input and generate code that implements a state
+ machine. The alternatives to code generators are hacked compilers,
+ proprietary languages or graphical programming tools with one-way
+ dialogs or wizards that generate obscure code during design time
+ rather than compile time. Rather than locking our customers into a
+ proprietary C++ compiler or into a particular Integrated Development
+ Environment, we enable them to use whatever tools they prefer. Instead
+ of forcing programmers to add generated code into source repositories,
+ we encourage them to add our tools to their build system: cleaner,
+ safer and more in the spirit of UNIX.
+
+
+ \section1 GUIs are Dynamic
+
+ C++ is a standarized, powerful and elaborate general-purpose language.
+ It's the only language that is exploited on such a wide range of
+ software projects, spanning every kind of application from entire
+ operating systems, database servers and high end graphics
+ applications to common desktop applications. One of the keys to C++'s
+ success is its scalable language design that focuses on maximum
+ performance and minimal memory consumption whilst still maintaining
+ ANSI C compatibility.
+
+ For all these advantages, there are some downsides. For C++, the static
+ object model is a clear disadvantage over the dynamic messaging approach
+ of Objective C when it comes to component-based graphical user interface
+ programming. What's good for a high end database server or an operating
+ system isn't necessarily the right design choice for a GUI frontend.
+ With \c{moc}, we have turned this disadvantage into an advantage,
+ and added the flexibility required to meet the challenge of safe and
+ efficient graphical user interface programming.
+
+ Our approach goes far beyond anything you can do with templates. For
+ example, we can have object properties. And we can have overloaded
+ signals and slots, which feels natural when programming in a language
+ where overloads are a key concept. Our signals add zero bytes to the
+ size of a class instance, which means we can add new signals without
+ breaking binary compatibility. Because we do not rely on excessive
+ inlining as done with templates, we can keep the code size smaller.
+ Adding new connections just expands to a simple function call rather
+ than a complex template function.
+
+ Another benefit is that we can explore an object's signals and slots at
+ runtime. We can establish connections using type-safe call-by-name,
+ without having to know the exact types of the objects we are connecting.
+ This is impossible with a template based solution. This kind of runtime
+ introspection opens up new possibilities, for example GUIs that are
+ generated and connected from Qt Designer's XML UI files.
+
+ \section1 Calling Performance is Not Everything
+
+ Qt's signals and slots implementation is not as fast as a
+ template-based solution. While emitting a signal is approximately the
+ cost of four ordinary function calls with common template
+ implementations, Qt requires effort comparable to about ten function
+ calls. This is not surprising since the Qt mechanism includes a
+ generic marshaller, introspection, queued calls between different
+ threads, and ultimately scriptability. It does not rely on excessive
+ inlining and code expansion and it provides unmatched runtime
+ safety. Qt's iterators are safe while those of faster template-based
+ systems are not. Even during the process of emitting a signal to
+ several receivers, those receivers can be deleted safely without your
+ program crashing. Without this safety, your application would
+ eventually crash with a difficult to debug free'd memory read or write
+ error.
+
+ Nonetheless, couldn't a template-based solution improve the performance
+ of an application using signals and slots? While it is true that Qt adds
+ a small overhead to the cost of calling a slot through a signal, the
+ cost of the call is only a small proportion of the entire cost of a
+ slot. Benchmarking against Qt's signals and slots system is typically
+ done with empty slots. As soon as you do anything useful in your slots,
+ for example a few simple string operations, the calling overhead becomes
+ negligible. Qt's system is so optimized that anything that requires
+ operator new or delete (for example, string operations or
+ inserting/removing something from a template container) is significantly
+ more expensive than emitting a signal.
+
+ Aside: If you have a signals and slots connection in a tight inner loop
+ of a performance critical task and you identify this connection as the
+ bottleneck, think about using the standard listener-interface pattern
+ rather than signals and slots. In cases where this occurs, you probably
+ only require a 1:1 connection anyway. For example, if you have an object
+ that downloads data from the network, it's a perfectly sensible design
+ to use a signal to indicate that the requested data arrived. But if you
+ need to send out every single byte one by one to a consumer, use a
+ listener interface rather than signals and slots.
+
+ \section1 No Limits
+
+ Because we had the \c{moc} for signals and slots, we could add
+ other useful things to it that could not be done with templates.
+ Among these are scoped translations via a generated \c{tr()}
+ function, and an advanced property system with introspection and
+ extended runtime type information. The property system alone is a
+ great advantage: a powerful and generic user interface design tool
+ like Qt Designer would be a lot harder to write - if not impossible -
+ without a powerful and introspective property system. But it does not
+ end here. We also provide a dynamic qobject_cast<T>() mechanism
+ that does not rely on the system's RTTI and thus does not share its
+ limitations. We use it to safely query interfaces from dynamically
+ loaded components. Another application domain are dynamic meta
+ objects. We can e.g. take ActiveX components and at runtime create a
+ meta object around it. Or we can export Qt components as ActiveX
+ components by exporting its meta object. You cannot do either of these
+ things with templates.
+
+ C++ with the \c{moc} essentially gives us the flexibility of
+ Objective-C or of a Java Runtime Environment, while maintaining C++'s
+ unique performance and scalability advantages. It is what makes Qt the
+ flexible and comfortable tool we have today.
+
+*/
diff --git a/doc/src/frameworks-technologies/threads.qdoc b/doc/src/frameworks-technologies/threads.qdoc
new file mode 100644
index 000000000..f15678448
--- /dev/null
+++ b/doc/src/frameworks-technologies/threads.qdoc
@@ -0,0 +1,700 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group thread
+ \title Threading Classes
+*/
+
+/*!
+ \page threads.html
+ \title Thread Support in Qt
+ \brief A detailed discussion of thread handling in Qt.
+
+ \ingroup frameworks-technologies
+
+ \nextpage Starting Threads with QThread
+
+ Qt provides thread support in the form of platform-independent
+ threading classes, a thread-safe way of posting events, and
+ signal-slot connections across threads. This makes it easy to
+ develop portable multithreaded Qt applications and take advantage
+ of multiprocessor machines. Multithreaded programming is also a
+ useful paradigm for performing time-consuming operations without
+ freezing the user interface of an application.
+
+ Earlier versions of Qt offered an option to build the library
+ without thread support. Since Qt 4.0, threads are always enabled.
+
+ \section1 Topics:
+
+ \list
+ \o \l{Recommended Reading}
+ \o \l{The Threading Classes}
+ \o \l{Starting Threads with QThread}
+ \o \l{Synchronizing Threads}
+ \o \l{Reentrancy and Thread-Safety}
+ \o \l{Threads and QObjects}
+ \o \l{Concurrent Programming}
+ \o \l{Thread-Support in Qt Modules}
+ \endlist
+
+ \section1 Recommended Reading
+
+ This document is intended for an audience that has knowledge of,
+ and experience with, multithreaded applications. If you are new
+ to threading see our Recommended Reading list:
+
+ \list
+ \o \l{Threads Primer: A Guide to Multithreaded Programming}
+ \o \l{Thread Time: The Multithreaded Programming Guide}
+ \o \l{Pthreads Programming: A POSIX Standard for Better Multiprocessing}
+ \o \l{Win32 Multithreaded Programming}
+ \endlist
+
+ \section1 The Threading Classes
+
+ These classes are relevant to threaded applications.
+
+ \annotatedlist thread
+
+\omit
+ \list
+ \o QThread provides the means to start a new thread.
+ \o QThreadStorage provides per-thread data storage.
+ \o QThreadPool manages a pool of threads that run QRunnable objects.
+ \o QRunnable is an abstract class representing a runnable object.
+ \o QMutex provides a mutual exclusion lock, or mutex.
+ \o QMutexLocker is a convenience class that automatically locks
+ and unlocks a QMutex.
+ \o QReadWriteLock provides a lock that allows simultaneous read access.
+ \o QReadLocker and QWriteLocker are convenience classes that automatically
+ lock and unlock a QReadWriteLock.
+ \o QSemaphore provides an integer semaphore (a generalization of a mutex).
+ \o QWaitCondition provides a way for threads to go to sleep until
+ woken up by another thread.
+ \o QAtomicInt provides atomic operations on integers.
+ \o QAtomicPointer provides atomic operations on pointers.
+ \endlist
+\endomit
+
+ \note Qt's threading classes are implemented with native threading APIs;
+ e.g., Win32 and pthreads. Therefore, they can be used with threads of the
+ same native API.
+*/
+
+/*!
+ \page threads-starting.html
+ \title Starting Threads with QThread
+
+ \contentspage Thread Support in Qt
+ \nextpage Synchronizing Threads
+
+ A QThread instance represents a thread and provides the means to
+ \l{QThread::start()}{start()} a thread, which will then execute the
+ reimplementation of QThread::run(). The \c run() implementation is for a
+ thread what the \c main() entry point is for the application. All code
+ executed in a call stack that starts in the \c run() function is executed
+ by the new thread, and the thread finishes when the function returns.
+ QThread emits signals to indicate that the thread started or finished
+ executing.
+
+ \section1 Creating a Thread
+
+ To create a thread, subclass QThread and reimplement its
+ \l{QThread::run()}{run()} function. For example:
+
+ \snippet doc/src/snippets/threads/threads.h 0
+ \codeline
+ \snippet doc/src/snippets/threads/threads.cpp 0
+ \snippet doc/src/snippets/threads/threads.cpp 1
+ \dots
+ \snippet doc/src/snippets/threads/threads.cpp 2
+
+ \section1 Starting a Thread
+
+ Then, create an instance of the thread object and call
+ QThread::start(). Note that you must create the QApplication (or
+ QCoreApplication) object before you can create a QThread.
+
+ The function will return immediately and the
+ main thread will continue. The code that appears in the
+ \l{QThread::run()}{run()} reimplementation will then be executed
+ in a separate thread.
+
+ Creating threads is explained in more detail in the QThread
+ documentation.
+
+ Note that QCoreApplication::exec() must always be called from the
+ main thread (the thread that executes \c{main()}), not from a
+ QThread. In GUI applications, the main thread is also called the
+ GUI thread because it's the only thread that is allowed to
+ perform GUI-related operations.
+*/
+
+/*!
+ \page threads-synchronizing.html
+ \title Synchronizing Threads
+
+ \previouspage Starting Threads with QThread
+ \contentspage Thread Support in Qt
+ \nextpage Reentrancy and Thread-Safety
+
+ The QMutex, QReadWriteLock, QSemaphore, and QWaitCondition
+ classes provide means to synchronize threads. While the main idea
+ with threads is that they should be as concurrent as possible,
+ there are points where threads must stop and wait for other
+ threads. For example, if two threads try to access the same
+ global variable simultaneously, the results are usually
+ undefined.
+
+ QMutex provides a mutually exclusive lock, or mutex. At most one
+ thread can hold the mutex at any time. If a thread tries to
+ acquire the mutex while the mutex is already locked, the thread will
+ be put to sleep until the thread that currently holds the mutex
+ unlocks it. Mutexes are often used to protect accesses to shared
+ data (i.e., data that can be accessed from multiple threads
+ simultaneously). In the \l{Reentrancy and Thread-Safety} section
+ below, we will use it to make a class thread-safe.
+
+ QReadWriteLock is similar to QMutex, except that it distinguishes
+ between "read" and "write" access to shared data and allows
+ multiple readers to access the data simultaneously. Using
+ QReadWriteLock instead of QMutex when it is possible can make
+ multithreaded programs more concurrent.
+
+ QSemaphore is a generalization of QMutex that protects a certain
+ number of identical resources. In contrast, a mutex protects
+ exactly one resource. The \l{threads/semaphores}{Semaphores}
+ example shows a typical application of semaphores: synchronizing
+ access to a circular buffer between a producer and a consumer.
+
+ QWaitCondition allows a thread to wake up other threads when some
+ condition has been met. One or many threads can block waiting for
+ a QWaitCondition to set a condition with
+ \l{QWaitCondition::wakeOne()}{wakeOne()} or
+ \l{QWaitCondition::wakeAll()}{wakeAll()}. Use
+ \l{QWaitCondition::wakeOne()}{wakeOne()} to wake one randomly
+ selected event or \l{QWaitCondition::wakeAll()}{wakeAll()} to
+ wake them all. The \l{threads/waitconditions}{Wait Conditions}
+ example shows how to solve the producer-consumer problem using
+ QWaitCondition instead of QSemaphore.
+
+ Note that Qt's synchronization classes rely on the use of properly
+ aligned pointers. For instance, you cannot use packed classes with
+ MSVC.
+*/
+
+/*!
+ \page threads-reentrancy.html
+ \title Reentrancy and Thread-Safety
+
+ \keyword reentrant
+ \keyword thread-safe
+
+ \previouspage Synchronizing Threads
+ \contentspage Thread Support in Qt
+ \nextpage Threads and QObjects
+
+ Throughout the documentation, the terms \e{reentrant} and
+ \e{thread-safe} are used to mark classes and functions to indicate
+ how they can be used in multithread applications:
+
+ \list
+ \o A \e thread-safe function can be called simultaneously from
+ multiple threads, even when the invocations use shared data,
+ because all references to the shared data are serialized.
+ \o A \e reentrant function can also be called simultaneously from
+ multiple threads, but only if each invocation uses its own data.
+ \endlist
+
+ Hence, a \e{thread-safe} function is always \e{reentrant}, but a
+ \e{reentrant} function is not always \e{thread-safe}.
+
+ By extension, a class is said to be \e{reentrant} if its member
+ functions can be called safely from multiple threads, as long as
+ each thread uses a \e{different} instance of the class. The class
+ is \e{thread-safe} if its member functions can be called safely
+ from multiple threads, even if all the threads use the \e{same}
+ instance of the class.
+
+ C++ classes are often reentrant, simply because they only access
+ their own member data. Any thread can call a member function on an
+ instance of a reentrant class, as long as no other thread can call
+ a member function on the \e{same} instance of the class at the
+ same time. For example, the \c Counter class below is reentrant:
+
+ \snippet doc/src/snippets/threads/threads.cpp 3
+ \snippet doc/src/snippets/threads/threads.cpp 4
+
+ The class isn't thread-safe, because if multiple threads try to
+ modify the data member \c n, the result is undefined. This is
+ because the \c ++ and \c -- operators aren't always atomic.
+ Indeed, they usually expand to three machine instructions:
+
+ \list 1
+ \o Load the variable's value in a register.
+ \o Increment or decrement the register's value.
+ \o Store the register's value back into main memory.
+ \endlist
+
+ If thread A and thread B load the variable's old value
+ simultaneously, increment their register, and store it back, they
+ end up overwriting each other, and the variable is incremented
+ only once!
+
+ Clearly, the access must be serialized: Thread A must perform
+ steps 1, 2, 3 without interruption (atomically) before thread B
+ can perform the same steps; or vice versa. An easy way to make
+ the class thread-safe is to protect all access to the data
+ members with a QMutex:
+
+ \snippet doc/src/snippets/threads/threads.cpp 5
+ \snippet doc/src/snippets/threads/threads.cpp 6
+
+ The QMutexLocker class automatically locks the mutex in its
+ constructor and unlocks it when the destructor is invoked, at the
+ end of the function. Locking the mutex ensures that access from
+ different threads will be serialized. The \c mutex data member is
+ declared with the \c mutable qualifier because we need to lock
+ and unlock the mutex in \c value(), which is a const function.
+
+ Many Qt classes are \e{reentrant}, but they are not made
+ \e{thread-safe}, because making them thread-safe would incur the
+ extra overhead of repeatedly locking and unlocking a QMutex. For
+ example, QString is reentrant but not thread-safe. You can safely
+ access \e{different} instances of QString from multiple threads
+ simultaneously, but you can't safely access the \e{same} instance
+ of QString from multiple threads simultaneously (unless you
+ protect the accesses yourself with a QMutex).
+
+ Some Qt classes and functions are thread-safe. These are mainly
+ the thread-related classes (e.g. QMutex) and fundamental functions
+ (e.g. QCoreApplication::postEvent()).
+
+ \note Qt Classes are only documented as \e{thread-safe} if they
+ are intended to be used by multiple threads.
+
+ \note Terminology in the multithreading domain isn't entirely
+ standardized. POSIX uses definitions of reentrant and thread-safe
+ that are somewhat different for its C APIs. When using other
+ object-oriented C++ class libraries with Qt, be sure the
+ definitions are understood.
+*/
+
+/*!
+ \page threads-qobject.html
+ \title Threads and QObjects
+
+ \previouspage Reentrancy and Thread Safety
+ \contentspage Thread Support in Qt
+ \nextpage Concurrent Programming
+
+ QThread inherits QObject. It emits signals to indicate that the
+ thread started or finished executing, and provides a few slots as
+ well.
+
+ More interesting is that \l{QObject}s can be used in multiple
+ threads, emit signals that invoke slots in other threads, and
+ post events to objects that "live" in other threads. This is
+ possible because each thread is allowed to have its own event
+ loop.
+
+ Topics:
+
+ \tableofcontents
+
+ \section1 QObject Reentrancy
+
+ QObject is reentrant. Most of its non-GUI subclasses, such as
+ QTimer, QTcpSocket, QUdpSocket, QFtp, and QProcess, are also
+ reentrant, making it possible to use these classes from multiple
+ threads simultaneously. Note that these classes are designed to be
+ created and used from within a single thread; creating an object
+ in one thread and calling its functions from another thread is not
+ guaranteed to work. There are three constraints to be aware of:
+
+ \list
+ \o \e{The child of a QObject must always be created in the thread
+ where the parent was created.} This implies, among other
+ things, that you should never pass the QThread object (\c
+ this) as the parent of an object created in the thread (since
+ the QThread object itself was created in another thread).
+
+ \o \e{Event driven objects may only be used in a single thread.}
+ Specifically, this applies to the \l{timers.html}{timer
+ mechanism} and the \l{QtNetwork}{network module}. For example,
+ you cannot start a timer or connect a socket in a thread that
+ is not the \l{QObject::thread()}{object's thread}.
+
+ \o \e{You must ensure that all objects created in a thread are
+ deleted before you delete the QThread.} This can be done
+ easily by creating the objects on the stack in your
+ \l{QThread::run()}{run()} implementation.
+ \endlist
+
+ Although QObject is reentrant, the GUI classes, notably QWidget
+ and all its subclasses, are not reentrant. They can only be used
+ from the main thread. As noted earlier, QCoreApplication::exec()
+ must also be called from that thread.
+
+ In practice, the impossibility of using GUI classes in other
+ threads than the main thread can easily be worked around by
+ putting time-consuming operations in a separate worker thread and
+ displaying the results on screen in the main thread when the
+ worker thread is finished. This is the approach used for
+ implementing the \l{threads/mandelbrot}{Mandelbrot} and
+ the \l{network/blockingfortuneclient}{Blocking Fortune Client}
+ example.
+
+ \section1 Per-Thread Event Loop
+
+ Each thread can have its own event loop. The initial thread
+ starts its event loops using QCoreApplication::exec(); other
+ threads can start an event loop using QThread::exec(). Like
+ QCoreApplication, QThread provides an
+ \l{QThread::exit()}{exit(int)} function and a
+ \l{QThread::quit()}{quit()} slot.
+
+ An event loop in a thread makes it possible for the thread to use
+ certain non-GUI Qt classes that require the presence of an event
+ loop (such as QTimer, QTcpSocket, and QProcess). It also makes it
+ possible to connect signals from any threads to slots of a
+ specific thread. This is explained in more detail in the
+ \l{Signals and Slots Across Threads} section below.
+
+ \image threadsandobjects.png Threads, objects, and event loops
+
+ A QObject instance is said to \e live in the thread in which it
+ is created. Events to that object are dispatched by that thread's
+ event loop. The thread in which a QObject lives is available using
+ QObject::thread().
+
+ Note that for QObjects that are created before QApplication,
+ QObject::thread() returns zero. This means that the main thread
+ will only handle posted events for these objects; other event
+ processing is not done at all for objects with no thread. Use the
+ QObject::moveToThread() function to change the thread affinity for
+ an object and its children (the object cannot be moved if it has a
+ parent).
+
+ Calling \c delete on a QObject from a thread other than the one
+ that \e owns the object (or accessing the object in other ways) is
+ unsafe, unless you guarantee that the object isn't processing
+ events at that moment. Use QObject::deleteLater() instead, and a
+ \l{QEvent::DeferredDelete}{DeferredDelete} event will be posted,
+ which the event loop of the object's thread will eventually pick
+ up. By default, the thread that \e owns a QObject is the thread
+ that \e creates the QObject, but not after QObject::moveToThread()
+ has been called.
+
+ If no event loop is running, events won't be delivered to the
+ object. For example, if you create a QTimer object in a thread but
+ never call \l{QThread::exec()}{exec()}, the QTimer will never emit
+ its \l{QTimer::timeout()}{timeout()} signal. Calling
+ \l{QObject::deleteLater()}{deleteLater()} won't work
+ either. (These restrictions apply to the main thread as well.)
+
+ You can manually post events to any object in any thread at any
+ time using the thread-safe function
+ QCoreApplication::postEvent(). The events will automatically be
+ dispatched by the event loop of the thread where the object was
+ created.
+
+ Event filters are supported in all threads, with the restriction
+ that the monitoring object must live in the same thread as the
+ monitored object. Similarly, QCoreApplication::sendEvent()
+ (unlike \l{QCoreApplication::postEvent()}{postEvent()}) can only
+ be used to dispatch events to objects living in the thread from
+ which the function is called.
+
+ \section1 Accessing QObject Subclasses from Other Threads
+
+ QObject and all of its subclasses are not thread-safe. This
+ includes the entire event delivery system. It is important to keep
+ in mind that the event loop may be delivering events to your
+ QObject subclass while you are accessing the object from another
+ thread.
+
+ If you are calling a function on an QObject subclass that doesn't
+ live in the current thread and the object might receive events,
+ you must protect all access to your QObject subclass's internal
+ data with a mutex; otherwise, you may experience crashes or other
+ undesired behavior.
+
+ Like other objects, QThread objects live in the thread where the
+ object was created -- \e not in the thread that is created when
+ QThread::run() is called. It is generally unsafe to provide slots
+ in your QThread subclass, unless you protect the member variables
+ with a mutex.
+
+ On the other hand, you can safely emit signals from your
+ QThread::run() implementation, because signal emission is
+ thread-safe.
+
+ \section1 Signals and Slots Across Threads
+
+ Qt supports three types of signal-slot connections:
+
+ \list
+ \o With \l{Qt::DirectConnection}{direct connections}, the
+ slot gets called immediately when the signal is emitted. The
+ slot is executed in the thread that emitted the signal (which
+ is not necessarily the thread where the receiver object
+ lives).
+
+ \o With \l{Qt::QueuedConnection}{queued connections}, the
+ slot is invoked when control returns to the event loop of the
+ thread to which the object belongs. The slot is executed in
+ the thread where the receiver object lives.
+
+ \o With \l{Qt::AutoConnection}{auto connections} (the default),
+ the behavior is the same as with direct connections if
+ the signal is emitted in the thread where the receiver lives;
+ otherwise, the behavior is that of a queued connection.
+ \endlist
+
+ The connection type can be specified by passing an additional
+ argument to \l{QObject::connect()}{connect()}. Be aware that
+ using direct connections when the sender and receiver live in
+ different threads is unsafe if an event loop is running in the
+ receiver's thread, for the same reason that calling any function
+ on an object living in another thread is unsafe.
+
+ QObject::connect() itself is thread-safe.
+
+ The \l{threads/mandelbrot}{Mandelbrot} example uses a queued
+ connection to communicate between a worker thread and the main
+ thread. To avoid freezing the main thread's event loop (and, as a
+ consequence, the application's user interface), all the
+ Mandelbrot fractal computation is done in a separate worker
+ thread. The thread emits a signal when it is done rendering the
+ fractal.
+
+ Similarly, the \l{network/blockingfortuneclient}{Blocking Fortune
+ Client} example uses a separate thread for communicating with
+ a TCP server asynchronously.
+*/
+
+/*!
+ \page threads-qtconcurrent.html
+ \title Concurrent Programming
+
+ \previouspage Threads and QObjects
+ \contentspage Thread Support in Qt
+ \nextpage Thread-Support in Qt Modules
+
+ \target qtconcurrent intro
+
+ The QtConcurrent namespace provides high-level APIs that make it
+ possible to write multi-threaded programs without using low-level
+ threading primitives such as mutexes, read-write locks, wait
+ conditions, or semaphores. Programs written with QtConcurrent
+ automatically adjust the number of threads used according to the
+ number of processor cores available. This means that applications
+ written today will continue to scale when deployed on multi-core
+ systems in the future.
+
+ QtConcurrent includes functional programming style APIs for
+ parallel list processing, including a MapReduce and FilterReduce
+ implementation for shared-memory (non-distributed) systems, and
+ classes for managing asynchronous computations in GUI
+ applications:
+
+ \list
+
+ \o QtConcurrent::map() applies a function to every item in a container,
+ modifying the items in-place.
+
+ \o QtConcurrent::mapped() is like map(), except that it returns a new
+ container with the modifications.
+
+ \o QtConcurrent::mappedReduced() is like mapped(), except that the
+ modified results are reduced or folded into a single result.
+
+ \o QtConcurrent::filter() removes all items from a container based on the
+ result of a filter function.
+
+ \o QtConcurrent::filtered() is like filter(), except that it returns a new
+ container with the filtered results.
+
+ \o QtConcurrent::filteredReduced() is like filtered(), except that the
+ filtered results are reduced or folded into a single result.
+
+ \o QtConcurrent::run() runs a function in another thread.
+
+ \o QFuture represents the result of an asynchronous computation.
+
+ \o QFutureIterator allows iterating through results available via QFuture.
+
+ \o QFutureWatcher allows monitoring a QFuture using signals-and-slots.
+
+ \o QFutureSynchronizer is a convenience class that automatically
+ synchronizes several QFutures.
+
+ \endlist
+
+ Qt Concurrent supports several STL-compatible container and iterator types,
+ but works best with Qt containers that have random-access iterators, such as
+ QList or QVector. The map and filter functions accept both containers and begin/end iterators.
+
+ STL Iterator support overview:
+
+ \table
+ \header
+ \o Iterator Type
+ \o Example classes
+ \o Support status
+ \row
+ \o Input Iterator
+ \o
+ \o Not Supported
+ \row
+ \o Output Iterator
+ \o
+ \o Not Supported
+ \row
+ \o Forward Iterator
+ \o std::slist
+ \o Supported
+ \row
+ \o Bidirectional Iterator
+ \o QLinkedList, std::list
+ \o Supported
+ \row
+ \o Random Access Iterator
+ \o QList, QVector, std::vector
+ \o Supported and Recommended
+ \endtable
+
+ Random access iterators can be faster in cases where Qt Concurrent is iterating
+ over a large number of lightweight items, since they allow skipping to any point
+ in the container. In addition, using random access iterators allows Qt Concurrent
+ to provide progress information trough QFuture::progressValue() and QFutureWatcher::
+ progressValueChanged().
+
+ The non in-place modifying functions such as mapped() and filtered() makes a
+ copy of the container when called. If you are using STL containers this copy operation
+ might take some time, in this case we recommend specifying the begin and end iterators
+ for the container instead.
+*/
+
+/*!
+ \page threads-modules.html
+ \title Thread-Support in Qt Modules
+
+ \previouspage Concurrent Programming
+ \contentspage Thread Support in Qt
+
+ \section1 Threads and the SQL Module
+
+ A connection can only be used from within the thread that created it.
+ Moving connections between threads or creating queries from a different
+ thread is not supported.
+
+ In addition, the third party libraries used by the QSqlDrivers can impose
+ further restrictions on using the SQL Module in a multithreaded program.
+ Consult the manual of your database client for more information
+
+ \section1 Painting in Threads
+
+ QPainter can be used in a thread to paint onto QImage, QPrinter, and
+ QPicture paint devices. Painting onto QPixmaps and QWidgets is \e not
+ supported. On Mac OS X the automatic progress dialog will not be
+ displayed if you are printing from outside the GUI thread.
+
+ Any number of threads can paint at any given time, however only
+ one thread at a time can paint on a given paint device. In other
+ words, two threads can paint at the same time if each paints onto
+ separate QImages, but the two threads cannot paint onto the same
+ QImage at the same time.
+
+ Note that on X11 systems without FontConfig support, Qt cannot
+ render text outside of the GUI thread. You can use the
+ QFontDatabase::supportsThreadedFontRendering() function to detect
+ whether or not font rendering can be used outside the GUI thread.
+
+ \section1 Threads and Rich Text Processing
+
+ The QTextDocument, QTextCursor, and \link richtext.html all
+ related classes\endlink are reentrant.
+
+ Note that a QTextDocument instance created in the GUI thread may
+ contain QPixmap image resources. Use QTextDocument::clone() to
+ create a copy of the document, and pass the copy to another thread for
+ further processing (such as printing).
+
+ \section1 Threads and the SVG module
+
+ The QSvgGenerator and QSvgRenderer classes in the QtSvg module
+ are reentrant.
+
+ \section1 Threads and Implicitly Shared Classes
+
+ Qt uses an optimization called \l{implicit sharing} for many of
+ its value class, notably QImage and QString. Beginning with Qt 4,
+ implicit shared classes can safely be copied across threads, like
+ any other value classes. They are fully
+ \l{Reentrancy and Thread-Safety}{reentrant}. The implicit sharing
+ is really \e implicit.
+
+ In many people's minds, implicit sharing and multithreading are
+ incompatible concepts, because of the way the reference counting
+ is typically done. Qt, however, uses atomic reference counting to
+ ensure the integrity of the shared data, avoiding potential
+ corruption of the reference counter.
+
+ Note that atomic reference counting does not guarantee
+ \l{Reentrancy and Thread-Safety}{thread-safety}. Proper locking should be used
+ when sharing an instance of an implicitly shared class between
+ threads. This is the same requirement placed on all
+ \l{Reentrancy and Thread-Safety}{reentrant} classes, shared or not. Atomic reference
+ counting does, however, guarantee that a thread working on its
+ own, local instance of an implicitly shared class is safe. We
+ recommend using \l{Signals and Slots Across Threads}{signals and
+ slots} to pass data between threads, as this can be done without
+ the need for any explicit locking.
+
+ To sum it up, implicitly shared classes in Qt 4 are really \e
+ implicitly shared. Even in multithreaded applications, you can
+ safely use them as if they were plain, non-shared, reentrant
+ value-based classes.
+*/
diff --git a/doc/src/frameworks-technologies/unicode.qdoc b/doc/src/frameworks-technologies/unicode.qdoc
new file mode 100644
index 000000000..fc0a61e9c
--- /dev/null
+++ b/doc/src/frameworks-technologies/unicode.qdoc
@@ -0,0 +1,182 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group string-processing
+ \title Classes for String Data
+
+ \brief Classes for working with string data.
+
+ These classes are relevant when working with string data. See the
+ \l{Unicode in Qt}{information about support for Unicode in Qt} for
+ more information.
+*/
+
+
+/*!
+ \page unicode.html
+ \title Unicode in Qt
+ \brief Information about support for Unicode in Qt.
+
+ \keyword Unicode
+
+ \ingroup frameworks-technologies
+
+ Unicode is a multi-byte character set, portable across all major
+ computing platforms and with decent coverage over most of the world.
+ It is also single-locale; it includes no code pages or other
+ complexities that make software harder to write and test. There is no
+ competing character set that's reasonably cross-platform. For these
+ reasons, Unicode 4.0 is used as the native character set for Qt.
+
+ \section1 Qt's Classes for Working with Strings
+
+ These classes are relevant when working with string data. For information
+ about rendering text, see the \l{Rich Text Processing} overview, and if
+ your string data is in XML, see the \l{XML Processing} overview.
+
+ \annotatedlist string-processing
+
+ \section1 Information about Unicode on the Web
+
+ The \l{http://www.unicode.org/}{Unicode Consortium} has a number
+ of documents available, including
+
+ \list
+
+ \i \l{http://www.unicode.org/unicode/standard/principles.html}{A
+ technical introduction to Unicode}
+ \i \l{http://www.unicode.org/unicode/standard/standard.html}{The
+ home page for the standard}
+
+ \endlist
+
+
+ \section1 The Standard
+
+ The current version of the standard is \l{http://www.unicode.org/versions/Unicode5.1.0/}{Unicode 5.1.0}.
+
+ Previous printed versions of the specification:
+
+ \list
+ \o \l{http://www.amazon.com/Unicode-Standard-Version-5-0-5th/dp/0321480910/trolltech/t}{The Unicode Standard, Version 5.0}
+ \o \l{http://www.amazon.com/exec/obidos/ASIN/0321185781/trolltech/t}{The Unicode Standard, version 4.0}
+ \o \l{http://www.amazon.com/exec/obidos/ASIN/0201616335/trolltech/t}{The Unicode Standard, version 3.2}
+ \o \l{http://www.amazon.com/exec/obidos/ASIN/0201473459/trolltech/t}{The Unicode Standard, version 2.0} \mdash
+ see also the \l{http://www.unicode.org/unicode/reports/tr8.html}{2.1 update} and
+ \l{http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode 2.1.9}{the 2.1.9 data files} at
+ \l{http://www.unicode.org}.
+ \endlist
+
+ \section1 Unicode in Qt
+
+ In Qt, and in most applications that use Qt, most or all user-visible
+ strings are stored using Unicode. Qt provides:
+
+ \list
+
+ \i Translation to/from legacy encodings for file I/O: see
+ QTextCodec and QTextStream.
+ \i Translation from Input Methods and 8-bit keyboard input.
+ \i Translation to legacy character sets for on-screen display.
+ \i A string class, QString, that stores Unicode characters, with
+ support for migrating from C strings including fast (cached)
+ translation to and from US-ASCII, and all the usual string
+ operations.
+ \i Unicode-aware widgets where appropriate.
+ \i Unicode support detection on Windows, so that Qt provides Unicode
+ even on Windows platforms that do not support it natively.
+
+ \endlist
+
+ To fully benefit from Unicode, we recommend using QString for storing
+ all user-visible strings, and performing all text file I/O using
+ QTextStream. Use QKeyEvent::text() for keyboard input in any custom
+ widgets you write; it does not make much difference for slow typists
+ in Western Europe or North America, but for fast typists or people
+ using special input methods using text() is beneficial.
+
+ All the function arguments in Qt that may be user-visible strings,
+ QLabel::setText() and a many others, take \c{const QString &}s.
+ QString provides implicit casting from \c{const char *}
+ so that things like
+
+ \snippet doc/src/snippets/code/doc_src_unicode.qdoc 0
+
+ will work. There is also a function, QObject::tr(), that provides
+ translation support, like this:
+
+ \snippet doc/src/snippets/code/doc_src_unicode.qdoc 1
+
+ QObject::tr() maps from \c{const char *} to a Unicode string, and
+ uses installable QTranslator objects to do the mapping.
+
+ Qt provides a number of built-in QTextCodec classes, that is,
+ classes that know how to translate between Unicode and legacy
+ encodings to support programs that must talk to other programs or
+ read/write files in legacy file formats.
+
+ By default, conversion to/from \c{const char *} uses a
+ locale-dependent codec. However, applications can easily find codecs
+ for other locales, and set any open file or network connection to use
+ a special codec. It is also possible to install new codecs, for
+ encodings that the built-in ones do not support. (At the time of
+ writing, Vietnamese/VISCII is one such example.)
+
+ Since US-ASCII and ISO-8859-1 are so common, there are also especially
+ fast functions for mapping to and from them. For example, to open an
+ application's icon one might do this:
+
+ \snippet doc/src/snippets/code/doc_src_unicode.qdoc 2
+
+ or
+
+ \snippet doc/src/snippets/code/doc_src_unicode.qdoc 3
+
+ Regarding output, Qt will do a best-effort conversion from
+ Unicode to whatever encoding the system and fonts provide.
+ Depending on operating system, locale, font availability, and Qt's
+ support for the characters used, this conversion may be good or bad.
+ We will extend this in upcoming versions, with emphasis on the most
+ common locales first.
+
+ \sa {Internationalization with Qt}
+*/
diff --git a/doc/src/gallery-cde.qdoc b/doc/src/gallery-cde.qdoc
deleted file mode 100644
index 02dabb1db..000000000
--- a/doc/src/gallery-cde.qdoc
+++ /dev/null
@@ -1,392 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page gallery-cde.html
-
- \title CDE Style Widget Gallery
- \ingroup gallery
-
- This page shows some of the widgets available in Qt
- when configured to use the "cde" style.
-
-\raw HTML
-<h2 align="center">Buttons</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cde-pushbutton.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cde-toolbutton.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QPushButton widget provides a command button.
-\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cde-checkbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cde-radiobutton.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QCheckBox widget provides a checkbox with a text label.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QRadioButton widget provides a radio button with a text or pixmap label.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Containers</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cde-groupbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cde-tabwidget.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QGroupBox widget provides a group box frame with a title.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTabWidget class provides a stack of tabbed widgets.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cde-frame.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cde-toolbox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QFrame widget provides a simple decorated container for other widgets.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QToolBox class provides a column of tabbed widget items.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Item Views</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cde-listview.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cde-treeview.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QListView class provides a default model/view implementation of a list/icon view. The QListWidget class provides a classic item-based list/icon view.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTreeView class provides a default model/view implementation of a tree view. The QTreeWidget class provides a classic item-based tree view.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cde-tableview.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Display Widgets</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cde-progressbar.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cde-lcdnumber.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QProgressBar widget provides a horizontal progress bar.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QLCDNumber widget displays a number with LCD-like digits.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cde-label.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QLabel widget provides a text or image display.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Input Widgets</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cde-slider.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cde-lineedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QSlider widget provides a vertical or horizontal slider.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QLineEdit widget is a one-line text editor.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cde-combobox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cde-doublespinbox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QComboBox widget is a combined button and pop-up list.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QDoubleSpinBox class provides a spin box widget that allows double precision floating point numbers to be entered.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cde-spinbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cde-timeedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QSpinBox class provides a spin box widget.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTimeEdit class provides a widget for editing times.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cde-dateedit.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cde-datetimeedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QDateEdit class provides a widget for editing dates.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QDateTimeEdit class provides a widget for editing dates and times.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cde-textedit.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cde-horizontalscrollbar.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QTextEdit class provides a widget that is used to edit and
- display both plain and rich text.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QScrollBar widget provides a vertical or horizontal scroll bar. Here, we show a scroll bar with horizontal orientation.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cde-dial.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cde-calendarwidget.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QDial class provides a rounded range control (like a
- speedometer or potentiometer).\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QCalendarWidget class provides a monthly calendar widget that can be used to select dates.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cde-fontcombobox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QFontComboBox widget is a specialized combobox that enables fonts to be selected from a pop-up list containing previews of available fonts.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-*/
diff --git a/doc/src/gallery-cleanlooks.qdoc b/doc/src/gallery-cleanlooks.qdoc
deleted file mode 100644
index 13c0f8fff..000000000
--- a/doc/src/gallery-cleanlooks.qdoc
+++ /dev/null
@@ -1,392 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page gallery-cleanlooks.html
-
- \title Cleanlooks Style Widget Gallery
- \ingroup gallery
-
- This page shows some of the widgets available in Qt
- when configured to use the "cleanlooks" style.
-
-\raw HTML
-<h2 align="center">Buttons</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-pushbutton.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-toolbutton.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QPushButton widget provides a command button.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QToolButton class provides a quick-access button to commands
- or options, usually used inside a QToolBar.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-checkbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-radiobutton.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QCheckBox widget provides a checkbox with a text label.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QRadioButton widget provides a radio button with a text or pixmap label.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Containers</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-groupbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-tabwidget.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QGroupBox widget provides a group box frame with a title.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTabWidget class provides a stack of tabbed widgets.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-frame.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-toolbox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QFrame widget provides a simple decorated container for other widgets.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QToolBox class provides a column of tabbed widget items.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Item Views</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-listview.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-treeview.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QListView class provides a default model/view implementation of a list/icon view. The QListWidget class provides a classic item-based list/icon view.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTreeView class provides a default model/view implementation of a tree view. The QTreeWidget class provides a classic item-based tree view.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-tableview.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Display Widgets</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-progressbar.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-lcdnumber.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QProgressBar widget provides a horizontal progress bar.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QLCDNumber widget displays a number with LCD-like digits.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-label.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QLabel widget provides a text or image display.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Input Widgets</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-slider.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-lineedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QSlider widget provides a vertical or horizontal slider.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QLineEdit widget is a one-line text editor.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-combobox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-doublespinbox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QComboBox widget is a combined button and pop-up list.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QDoubleSpinBox class provides a spin box widget that allows double precision floating point numbers to be entered.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-spinbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-timeedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QSpinBox class provides a spin box widget.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTimeEdit class provides a widget for editing times.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-dateedit.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-datetimeedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QDateEdit class provides a widget for editing dates.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QDateTimeEdit class provides a widget for editing dates and times.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-textedit.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-horizontalscrollbar.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QTextEdit class provides a widget that is used to edit and
- display both plain and rich text.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QScrollBar widget provides a vertical or horizontal scroll bar. Here, we show a scroll bar with horizontal orientation.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-dial.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-calendarwidget.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QDial class provides a rounded range control (like a
- speedometer or potentiometer).\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QCalendarWidget class provides a monthly calendar widget that can be used to select dates.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage cleanlooks-fontcombobox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QFontComboBox widget is a specialized combobox that enables fonts to be selected from a pop-up list containing previews of available fonts.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-*/
diff --git a/doc/src/gallery-gtk.qdoc b/doc/src/gallery-gtk.qdoc
deleted file mode 100644
index 8251f04f9..000000000
--- a/doc/src/gallery-gtk.qdoc
+++ /dev/null
@@ -1,358 +0,0 @@
-/*!
- \page gallery-gtk.html
-
- \title GTK Style Widget Gallery
- \ingroup gallery
-
- This page shows some of the widgets available in Qt
- when configured to use the "gtk" style.
-
- Take a look at the \l{Qt Widget Gallery} to see how Qt
- applications appear in other styles.
-
-\raw HTML
-<h2 align="center">Buttons</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage gtk-pushbutton.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage gtk-toolbutton.png
-\raw HTML
-</td>
-</tr><tr>
-<td align="justify" valign="top">
-\endraw
-The QPushButton widget provides a command button.\raw HTML
-</td>
-<td align="justify" valign="top">
-\endraw
-The QToolButton class provides a quick-access button to commands
- or options, usually used inside a QToolBar.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage gtk-checkbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage gtk-radiobutton.png
-\raw HTML
-</td>
-</tr><tr>
-<td align="justify" valign="top">
-\endraw
-The QCheckBox widget provides a checkbox with a text label.\raw HTML
-</td>
-<td align="justify" valign="top">
-\endraw
-The QRadioButton widget provides a radio button with a text or pixmap label.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Containers</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage gtk-groupbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage gtk-tabwidget.png
-\raw HTML
-</td>
-</tr><tr>
-<td align="justify" valign="top">
-\endraw
-The QGroupBox widget provides a group box frame with a title.\raw HTML
-</td>
-<td align="justify" valign="top">
-\endraw
-The QTabWidget class provides a stack of tabbed widgets.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage gtk-toolbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage gtk-frame.png
-\raw HTML
-</td>
-</tr><tr>
-<td align="justify" valign="top">
-\endraw
-The QToolBox class provides a column of tabbed widget items.\raw HTML
-</td>
-<td align="justify" valign="top">
-\endraw
-The QFrame widget provides a simple decorated container for other widgets.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Item Views</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage gtk-listview.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage gtk-treeview.png
-\raw HTML
-</td>
-</tr><tr>
-<td align="justify" valign="top">
-\endraw
-The QListView class provides a default model/view implementation of a list/icon view. The QListWidget class provides a classic item-based list/icon view.\raw HTML
-</td>
-<td align="justify" valign="top">
-\endraw
-The QTreeView class provides a default model/view implementation of a tree view. The QTreeWidget class provides a classic item-based tree view.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage gtk-tableview.png
-\raw HTML
-</td>
-</tr><tr>
-<td align="justify" valign="top">
-\endraw
-The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\raw HTML
-</td>
-<td align="justify" valign="top">
-\endraw
-\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Display Widgets</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage gtk-progressbar.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage gtk-lcdnumber.png
-\raw HTML
-</td>
-</tr><tr>
-<td align="justify" valign="top">
-\endraw
-The QProgressBar widget provides a horizontal progress bar.\raw HTML
-</td>
-<td align="justify" valign="top">
-\endraw
-The QLCDNumber widget displays a number with LCD-like digits.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage gtk-label.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QLabel widget provides a text or image display.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Input Widgets</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage gtk-slider.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage gtk-lineedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td align="justify" valign="top">
-\endraw
-The QSlider widget provides a vertical or horizontal slider.\raw HTML
-</td>
-<td align="justify" valign="top">
-\endraw
-The QLineEdit widget is a one-line text editor.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage gtk-combobox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage gtk-doublespinbox.png
-\raw HTML
-</td>
-</tr><tr>
-<td align="justify" valign="top">
-\endraw
-The QComboBox widget is a combined button and pop-up list.\raw HTML
-</td>
-<td align="justify" valign="top">
-\endraw
-The QDoubleSpinBox class provides a spin box widget that allows double precision floating point numbers to be entered.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage gtk-spinbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage gtk-timeedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td align="justify" valign="top">
-\endraw
-The QSpinBox class provides a spin box widget.\raw HTML
-</td>
-<td align="justify" valign="top">
-\endraw
-The QTimeEdit class provides a widget for editing times.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage gtk-dateedit.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage gtk-datetimeedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td align="justify" valign="top">
-\endraw
-The QDateEdit class provides a widget for editing dates.\raw HTML
-</td>
-<td align="justify" valign="top">
-\endraw
-The QDateTimeEdit class provides a widget for editing dates and times.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage gtk-textedit.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage gtk-horizontalscrollbar.png
-\raw HTML
-</td>
-</tr><tr>
-<td align="justify" valign="top">
-\endraw
-The QTextEdit class provides a widget that is used to edit and
- display both plain and rich text.\raw HTML
-</td>
-<td align="justify" valign="top">
-\endraw
-The QScrollBar widget provides a vertical or horizontal scroll bar. Here, we show a scroll bar with horizontal orientation.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage gtk-dial.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage gtk-calendarwidget.png
-\raw HTML
-</td>
-</tr><tr>
-<td align="justify" valign="top">
-\endraw
-The QDial class provides a rounded range control (like a
- speedometer or potentiometer).\raw HTML
-</td>
-<td align="justify" valign="top">
-\endraw
-The QCalendarWidget class provides a monthly calendar widget that can be used to select dates.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage gtk-fontcombobox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QFontComboBox widget is a specialized combobox that enables fonts to be selected from a pop-up list containing previews of available fonts.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-*/
diff --git a/doc/src/gallery-macintosh.qdoc b/doc/src/gallery-macintosh.qdoc
deleted file mode 100644
index c7efabe38..000000000
--- a/doc/src/gallery-macintosh.qdoc
+++ /dev/null
@@ -1,392 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page gallery-macintosh.html
-
- \title Macintosh Style Widget Gallery
- \ingroup gallery
-
- This page shows some of the widgets available in Qt
- when configured to use the "macintosh" style.
-
-\raw HTML
-<h2 align="center">Buttons</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage macintosh-pushbutton.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage macintosh-toolbutton.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QPushButton widget provides a command button.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QToolButton class provides a quick-access button to commands
- or options, usually used inside a QToolBar.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage macintosh-checkbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage macintosh-radiobutton.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QCheckBox widget provides a checkbox with a text label.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QRadioButton widget provides a radio button with a text or pixmap label.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Containers</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage macintosh-groupbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage macintosh-tabwidget.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QGroupBox widget provides a group box frame with a title.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTabWidget class provides a stack of tabbed widgets.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage macintosh-frame.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage macintosh-toolbox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QFrame widget provides a simple decorated container for other widgets.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QToolBox class provides a column of tabbed widget items.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Item Views</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage macintosh-listview.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage macintosh-treeview.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QListView class provides a default model/view implementation of a list/icon view. The QListWidget class provides a classic item-based list/icon view.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTreeView class provides a default model/view implementation of a tree view. The QTreeWidget class provides a classic item-based tree view.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage macintosh-tableview.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Display Widgets</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage macintosh-progressbar.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage macintosh-lcdnumber.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QProgressBar widget provides a horizontal progress bar.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QLCDNumber widget displays a number with LCD-like digits.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage macintosh-label.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QLabel widget provides a text or image display.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Input Widgets</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage macintosh-slider.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage macintosh-lineedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QSlider widget provides a vertical or horizontal slider.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QLineEdit widget is a one-line text editor.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage macintosh-combobox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage macintosh-doublespinbox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QComboBox widget is a combined button and pop-up list.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QDoubleSpinBox class provides a spin box widget that allows double precision floating point numbers to be entered.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage macintosh-spinbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage macintosh-timeedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QSpinBox class provides a spin box widget.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTimeEdit class provides a widget for editing times.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage macintosh-dateedit.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage macintosh-datetimeedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QDateEdit class provides a widget for editing dates.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QDateTimeEdit class provides a widget for editing dates and times.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage macintosh-textedit.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage macintosh-horizontalscrollbar.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QTextEdit class provides a widget that is used to edit and
- display both plain and rich text.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QScrollBar widget provides a vertical or horizontal scroll bar. Here, we show a scroll bar with horizontal orientation.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage macintosh-dial.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage macintosh-calendarwidget.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QDial class provides a rounded range control (like a
- speedometer or potentiometer).\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QCalendarWidget class provides a monthly calendar widget that can be used to select dates.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage macintosh-fontcombobox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QFontComboBox widget is a specialized combobox that enables fonts to be selected from a pop-up list containing previews of available fonts.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-*/
diff --git a/doc/src/gallery-motif.qdoc b/doc/src/gallery-motif.qdoc
deleted file mode 100644
index 153975320..000000000
--- a/doc/src/gallery-motif.qdoc
+++ /dev/null
@@ -1,392 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page gallery-motif.html
-
- \title Motif Style Widget Gallery
- \ingroup gallery
-
- This page shows some of the widgets available in Qt
- when configured to use the "motif" style.
-
-\raw HTML
-<h2 align="center">Buttons</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage motif-pushbutton.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage motif-toolbutton.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QPushButton widget provides a command button.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QToolButton class provides a quick-access button to commands
- or options, usually used inside a QToolBar.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage motif-checkbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage motif-radiobutton.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QCheckBox widget provides a checkbox with a text label.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QRadioButton widget provides a radio button with a text or pixmap label.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Containers</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage motif-groupbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage motif-tabwidget.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QGroupBox widget provides a group box frame with a title.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTabWidget class provides a stack of tabbed widgets.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage motif-frame.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage motif-toolbox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QFrame widget provides a simple decorated container for other widgets.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QToolBox class provides a column of tabbed widget items.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Item Views</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage motif-listview.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage motif-treeview.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QListView class provides a default model/view implementation of a list/icon view. The QListWidget class provides a classic item-based list/icon view.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTreeView class provides a default model/view implementation of a tree view. The QTreeWidget class provides a classic item-based tree view.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage motif-tableview.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Display Widgets</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage motif-progressbar.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage motif-lcdnumber.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QProgressBar widget provides a horizontal progress bar.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QLCDNumber widget displays a number with LCD-like digits.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage motif-label.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QLabel widget provides a text or image display.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Input Widgets</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage motif-slider.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage motif-lineedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QSlider widget provides a vertical or horizontal slider.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QLineEdit widget is a one-line text editor.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage motif-combobox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage motif-doublespinbox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QComboBox widget is a combined button and pop-up list.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QDoubleSpinBox class provides a spin box widget that allows double precision floating point numbers to be entered.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage motif-spinbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage motif-timeedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QSpinBox class provides a spin box widget.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTimeEdit class provides a widget for editing times.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage motif-dateedit.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage motif-datetimeedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QDateEdit class provides a widget for editing dates.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QDateTimeEdit class provides a widget for editing dates and times.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage motif-textedit.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage motif-horizontalscrollbar.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QTextEdit class provides a widget that is used to edit and
- display both plain and rich text.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QScrollBar widget provides a vertical or horizontal scroll bar. Here, we show a scroll bar with horizontal orientation.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage motif-dial.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage motif-calendarwidget.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QDial class provides a rounded range control (like a
- speedometer or potentiometer).\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QCalendarWidget class provides a monthly calendar widget that can be used to select dates.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage motif-fontcombobox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QFontComboBox widget is a specialized combobox that enables fonts to be selected from a pop-up list containing previews of available fonts.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-*/
diff --git a/doc/src/gallery-plastique.qdoc b/doc/src/gallery-plastique.qdoc
deleted file mode 100644
index 49bd13e7f..000000000
--- a/doc/src/gallery-plastique.qdoc
+++ /dev/null
@@ -1,392 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page gallery-plastique.html
-
- \title Plastique Style Widget Gallery
- \ingroup gallery
-
- This page shows some of the widgets available in Qt
- when configured to use the "plastique" style.
-
-\raw HTML
-<h2 align="center">Buttons</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage plastique-pushbutton.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage plastique-toolbutton.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QPushButton widget provides a command button.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QToolButton class provides a quick-access button to commands
- or options, usually used inside a QToolBar.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage plastique-checkbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage plastique-radiobutton.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QCheckBox widget provides a checkbox with a text label.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QRadioButton widget provides a radio button with a text or pixmap label.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Containers</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage plastique-groupbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage plastique-tabwidget.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QGroupBox widget provides a group box frame with a title.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTabWidget class provides a stack of tabbed widgets.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage plastique-frame.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage plastique-toolbox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QFrame widget provides a simple decorated container for other widgets.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QToolBox class provides a column of tabbed widget items.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Item Views</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage plastique-listview.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage plastique-treeview.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QListView class provides a default model/view implementation of a list/icon view. The QListWidget class provides a classic item-based list/icon view.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTreeView class provides a default model/view implementation of a tree view. The QTreeWidget class provides a classic item-based tree view.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage plastique-tableview.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Display Widgets</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage plastique-progressbar.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage plastique-lcdnumber.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QProgressBar widget provides a horizontal progress bar.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QLCDNumber widget displays a number with LCD-like digits.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage plastique-label.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QLabel widget provides a text or image display.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Input Widgets</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage plastique-slider.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage plastique-lineedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QSlider widget provides a vertical or horizontal slider.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QLineEdit widget is a one-line text editor.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage plastique-combobox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage plastique-doublespinbox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QComboBox widget is a combined button and pop-up list.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QDoubleSpinBox class provides a spin box widget that allows double precision floating point numbers to be entered.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage plastique-spinbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage plastique-timeedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QSpinBox class provides a spin box widget.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTimeEdit class provides a widget for editing times.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage plastique-dateedit.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage plastique-datetimeedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QDateEdit class provides a widget for editing dates.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QDateTimeEdit class provides a widget for editing dates and times.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage plastique-textedit.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage plastique-horizontalscrollbar.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QTextEdit class provides a widget that is used to edit and
- display both plain and rich text.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QScrollBar widget provides a vertical or horizontal scroll bar. Here, we show a scroll bar with horizontal orientation.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage plastique-dial.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage plastique-calendarwidget.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QDial class provides a rounded range control (like a
- speedometer or potentiometer).\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QCalendarWidget class provides a monthly calendar widget that can be used to select dates.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage plastique-fontcombobox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QFontComboBox widget is a specialized combobox that enables fonts to be selected from a pop-up list containing previews of available fonts.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-*/
diff --git a/doc/src/gallery-windows.qdoc b/doc/src/gallery-windows.qdoc
deleted file mode 100644
index 2fa971c81..000000000
--- a/doc/src/gallery-windows.qdoc
+++ /dev/null
@@ -1,392 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page gallery-windows.html
-
- \title Windows Style Widget Gallery
- \ingroup gallery
-
- This page shows some of the widgets available in Qt
- when configured to use the "windows" style.
-
-\raw HTML
-<h2 align="center">Buttons</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windows-pushbutton.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windows-toolbutton.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QPushButton widget provides a command button.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QToolButton class provides a quick-access button to commands
- or options, usually used inside a QToolBar.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windows-checkbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windows-radiobutton.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QCheckBox widget provides a checkbox with a text label.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QRadioButton widget provides a radio button with a text or pixmap label.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Containers</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windows-groupbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windows-tabwidget.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QGroupBox widget provides a group box frame with a title.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTabWidget class provides a stack of tabbed widgets.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windows-frame.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windows-toolbox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QFrame widget provides a simple decorated container for other widgets.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QToolBox class provides a column of tabbed widget items.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Item Views</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windows-listview.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windows-treeview.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QListView class provides a default model/view implementation of a list/icon view. The QListWidget class provides a classic item-based list/icon view.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTreeView class provides a default model/view implementation of a tree view. The QTreeWidget class provides a classic item-based tree view.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windows-tableview.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Display Widgets</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windows-progressbar.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windows-lcdnumber.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QProgressBar widget provides a horizontal progress bar.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QLCDNumber widget displays a number with LCD-like digits.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windows-label.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QLabel widget provides a text or image display.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Input Widgets</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windows-slider.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windows-lineedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QSlider widget provides a vertical or horizontal slider.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QLineEdit widget is a one-line text editor.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windows-combobox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windows-doublespinbox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QComboBox widget is a combined button and pop-up list.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QDoubleSpinBox class provides a spin box widget that allows double precision floating point numbers to be entered.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windows-spinbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windows-timeedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QSpinBox class provides a spin box widget.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTimeEdit class provides a widget for editing times.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windows-dateedit.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windows-datetimeedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QDateEdit class provides a widget for editing dates.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QDateTimeEdit class provides a widget for editing dates and times.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windows-textedit.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windows-horizontalscrollbar.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QTextEdit class provides a widget that is used to edit and
- display both plain and rich text.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QScrollBar widget provides a vertical or horizontal scroll bar. Here, we show a scroll bar with horizontal orientation.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windows-dial.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windows-calendarwidget.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QDial class provides a rounded range control (like a
- speedometer or potentiometer).\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QCalendarWidget class provides a monthly calendar widget that can be used to select dates.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windows-fontcombobox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QFontComboBox widget is a specialized combobox that enables fonts to be selected from a pop-up list containing previews of available fonts.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-*/
diff --git a/doc/src/gallery-windowsvista.qdoc b/doc/src/gallery-windowsvista.qdoc
deleted file mode 100644
index 9ab3a2f00..000000000
--- a/doc/src/gallery-windowsvista.qdoc
+++ /dev/null
@@ -1,392 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page gallery-windowsvista.html
-
- \title Windows Vista Style Widget Gallery
- \ingroup gallery
-
- This page shows some of the widgets available in Qt
- when configured to use the "windowsvista" style.
-
-\raw HTML
-<h2 align="center">Buttons</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsvista-pushbutton.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsvista-toolbutton.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QPushButton widget provides a command button.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QToolButton class provides a quick-access button to commands
- or options, usually used inside a QToolBar.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsvista-checkbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsvista-radiobutton.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QCheckBox widget provides a checkbox with a text label.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QRadioButton widget provides a radio button with a text or pixmap label.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Containers</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsvista-groupbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsvista-tabwidget.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QGroupBox widget provides a group box frame with a title.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTabWidget class provides a stack of tabbed widgets.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsvista-frame.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsvista-toolbox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QFrame widget provides a simple decorated container for other widgets.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QToolBox class provides a column of tabbed widget items.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Item Views</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsvista-listview.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsvista-treeview.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QListView class provides a default model/view implementation of a list/icon view. The QListWidget class provides a classic item-based list/icon view.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTreeView class provides a default model/view implementation of a tree view. The QTreeWidget class provides a classic item-based tree view.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsvista-tableview.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Display Widgets</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsvista-progressbar.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsvista-lcdnumber.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QProgressBar widget provides a horizontal progress bar.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QLCDNumber widget displays a number with LCD-like digits.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsvista-label.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QLabel widget provides a text or image display.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Input Widgets</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsvista-slider.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsvista-lineedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QSlider widget provides a vertical or horizontal slider.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QLineEdit widget is a one-line text editor.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsvista-combobox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsvista-doublespinbox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QComboBox widget is a combined button and pop-up list.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QDoubleSpinBox class provides a spin box widget that allows double precision floating point numbers to be entered.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsvista-spinbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsvista-timeedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QSpinBox class provides a spin box widget.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTimeEdit class provides a widget for editing times.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsvista-dateedit.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsvista-datetimeedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QDateEdit class provides a widget for editing dates.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QDateTimeEdit class provides a widget for editing dates and times.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsvista-textedit.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsvista-horizontalscrollbar.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QTextEdit class provides a widget that is used to edit and
- display both plain and rich text.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QScrollBar widget provides a vertical or horizontal scroll bar. Here, we show a scroll bar with horizontal orientation.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsvista-dial.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsvista-calendarwidget.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QDial class provides a rounded range control (like a
- speedometer or potentiometer).\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QCalendarWidget class provides a monthly calendar widget that can be used to select dates.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsvista-fontcombobox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QFontComboBox widget is a specialized combobox that enables fonts to be selected from a pop-up list containing previews of available fonts.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-*/
diff --git a/doc/src/gallery-windowsxp.qdoc b/doc/src/gallery-windowsxp.qdoc
deleted file mode 100644
index aefff6526..000000000
--- a/doc/src/gallery-windowsxp.qdoc
+++ /dev/null
@@ -1,392 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page gallery-windowsxp.html
-
- \title Windows XP Style Widget Gallery
- \ingroup gallery
-
- This page shows some of the widgets available in Qt
- when configured to use the "windowsxp" style.
-
-\raw HTML
-<h2 align="center">Buttons</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsxp-pushbutton.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsxp-toolbutton.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QPushButton widget provides a command button.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QToolButton class provides a quick-access button to commands
- or options, usually used inside a QToolBar.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsxp-checkbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsxp-radiobutton.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QCheckBox widget provides a checkbox with a text label.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QRadioButton widget provides a radio button with a text or pixmap label.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Containers</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsxp-groupbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsxp-tabwidget.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QGroupBox widget provides a group box frame with a title.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTabWidget class provides a stack of tabbed widgets.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsxp-frame.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsxp-toolbox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QFrame widget provides a simple decorated container for other widgets.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QToolBox class provides a column of tabbed widget items.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Item Views</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsxp-listview.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsxp-treeview.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QListView class provides a default model/view implementation of a list/icon view. The QListWidget class provides a classic item-based list/icon view.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTreeView class provides a default model/view implementation of a tree view. The QTreeWidget class provides a classic item-based tree view.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsxp-tableview.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QTableView class provides a default model/view implementation of a table view. The QTableWidget class provides a classic item-based table view.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Display Widgets</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsxp-progressbar.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsxp-lcdnumber.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QProgressBar widget provides a horizontal progress bar.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QLCDNumber widget displays a number with LCD-like digits.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsxp-label.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QLabel widget provides a text or image display.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-\raw HTML
-<h2 align="center">Input Widgets</h2>
-
-<table align="center" cellspacing="20%" width="100%">
-<colgroup span="2">
- <col width="40%" />
- <col width="40%" />
-</colgroup>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsxp-slider.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsxp-lineedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QSlider widget provides a vertical or horizontal slider.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QLineEdit widget is a one-line text editor.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsxp-combobox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsxp-doublespinbox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QComboBox widget is a combined button and pop-up list.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QDoubleSpinBox class provides a spin box widget that allows double precision floating point numbers to be entered.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsxp-spinbox.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsxp-timeedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QSpinBox class provides a spin box widget.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QTimeEdit class provides a widget for editing times.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsxp-dateedit.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsxp-datetimeedit.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QDateEdit class provides a widget for editing dates.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QDateTimeEdit class provides a widget for editing dates and times.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsxp-textedit.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsxp-horizontalscrollbar.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QTextEdit class provides a widget that is used to edit and
- display both plain and rich text.\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QScrollBar widget provides a vertical or horizontal scroll bar. Here, we show a scroll bar with horizontal orientation.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsxp-dial.png
-\raw HTML
-</td>
-<td align="center">
-\endraw
-\inlineimage windowsxp-calendarwidget.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QDial class provides a rounded range control (like a
- speedometer or potentiometer).\raw HTML
-</td>
-<td halign="justify" valign="top">
-\endraw
-The QCalendarWidget class provides a monthly calendar widget that can be used to select dates.\raw HTML
-</td>
-</tr>
-<tr>
-<td align="center">
-\endraw
-\inlineimage windowsxp-fontcombobox.png
-\raw HTML
-</td>
-</tr><tr>
-<td halign="justify" valign="top">
-\endraw
-The QFontComboBox widget is a specialized combobox that enables fonts to be selected from a pop-up list containing previews of available fonts.\raw HTML
-</td>
-</tr>
-</table>
-\endraw
-*/
diff --git a/doc/src/gallery.qdoc b/doc/src/gallery.qdoc
deleted file mode 100644
index e96a8efa2..000000000
--- a/doc/src/gallery.qdoc
+++ /dev/null
@@ -1,151 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \group gallery
- \title Qt Widget Gallery
- \ingroup topics
- \brief Qt widgets shown in different styles on various platforms.
-
- Qt's support for widget styles and themes enables your application to fit in
- with the native desktop enviroment. Below, you can find links to the various
- widget styles that are supplied with Qt 4.
-
- \raw HTML
- <table align="center" cellspacing="20%" width="100%">
- <colgroup span="2">
- <col width="40%" />
- <col width="40%" />
- </colgroup>
- <tr>
- <td align="center">
- \endraw
- \image plastique-tabwidget.png Plastique Style Widget Gallery
-
- \bold{\l{Plastique Style Widget Gallery}}
-
- The Plastique style is provided by QPlastiqueStyle.
- \raw HTML
- </td>
- <td align="center">
- \endraw
- \image windowsxp-tabwidget.png Windows XP Style Widget Gallery
-
- \bold{\l{Windows XP Style Widget Gallery}}
-
- The Windows XP style is provided by QWindowsXPStyle.
- \raw HTML
- </td>
- </tr>
- <tr>
- <td align="center">
- \endraw
- \image gtk-tabwidget.png GTK Style Widget Gallery
-
- \bold{\l{GTK Style Widget Gallery}}
-
- The GTK style is provided by QGtkStyle.
- \raw HTML
- </td>
- <td align="center">
- \endraw
- \image macintosh-tabwidget.png Macintosh Style Widget Gallery
-
- \bold{\l{Macintosh Style Widget Gallery}}
-
- The Macintosh style is provided by QMacStyle.
- \raw HTML
- </td>
- </tr>
- <tr>
- <td align="center">
- \endraw
- \image cleanlooks-tabwidget.png Cleanlooks Style Widget Gallery
-
- \bold{\l{Cleanlooks Style Widget Gallery}}
-
- The Cleanlooks style is provided by QCleanlooksStyle.
- \raw HTML
- </td>
- <td align="center">
- \endraw
- \image windowsvista-tabwidget.png Windows Vista Style Widget Gallery
-
- \bold{\l{Windows Vista Style Widget Gallery}}
-
- The Windows Vista style is provided by QWindowsVistaStyle.
- \raw HTML
- </td>
- </tr>
- <tr>
- <td align="center">
- \endraw
- \image motif-tabwidget.png Motif Style Widget Gallery
-
- \bold{\l{Motif Style Widget Gallery}}
-
- The Motif style is provided by QMotifStyle.
- \raw HTML
- </td>
- <td align="center">
- \endraw
- \image windows-tabwidget.png Windows Style Widget Gallery
-
- \bold{\l{Windows Style Widget Gallery}}
-
- The Windows style is provided by QWindowsStyle.
- \raw HTML
- </td>
- </tr>
- <tr>
- <td align="center">
- \endraw
- \image cde-tabwidget.png CDE Style Widget Gallery
-
- \bold{\l{CDE Style Widget Gallery}}
-
- The Common Desktop Environment style is provided by QCDEStyle.
- \raw HTML
- </td>
- </tr>
- </table>
- \endraw
-*/
diff --git a/doc/src/geometry.qdoc b/doc/src/geometry.qdoc
deleted file mode 100644
index 914354822..000000000
--- a/doc/src/geometry.qdoc
+++ /dev/null
@@ -1,150 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page geometry.html
- \title Window Geometry
- \ingroup architecture
- \brief An overview of window geometry handling and management.
-
- QWidget provides several functions that deal with a widget's
- geometry. Some of these functions operate on the pure client area
- (i.e. the window excluding the window frame), others include the
- window frame. The differentiation is done in a way that covers the
- most common usage transparently.
-
- \list
- \o \bold{Including the window frame:}
- \l{QWidget::x()}{x()},
- \l{QWidget::y()}{y()},
- \l{QWidget::frameGeometry()}{frameGeometry()},
- \l{QWidget::pos()}{pos()}, and
- \l{QWidget::move()}{move()}.
- \o \bold{Excluding the window frame:}
- \l{QWidget::geometry()}{geometry()},
- \l{QWidget::width()}{width()},
- \l{QWidget::height()}{height()},
- \l{QWidget::rect()}{rect()}, and
- \l{QWidget::size()}{size()}.
- \endlist
-
- Note that the distinction only matters for decorated top-level
- widgets. For all child widgets, the frame geometry is equal to the
- widget's client geometry.
-
- This diagram shows most of the functions in use:
- \img geometry.png Geometry diagram
-
- Topics:
-
- \tableofcontents
-
- \section1 X11 Peculiarities
-
- On X11, a window does not have a frame until the window manager
- decorates it. This happens asynchronously at some point in time
- after calling QWidget::show() and the first paint event the
- window receives, or it does not happen at all. Bear in mind that
- X11 is policy-free (others call it flexible). Thus you cannot
- make any safe assumption about the decoration frame your window
- will get. Basic rule: There's always one user who uses a window
- manager that breaks your assumption, and who will complain to
- you.
-
- Furthermore, a toolkit cannot simply place windows on the screen. All
- Qt can do is to send certain hints to the window manager. The window
- manager, a separate process, may either obey, ignore or misunderstand
- them. Due to the partially unclear Inter-Client Communication
- Conventions Manual (ICCCM), window placement is handled quite
- differently in existing window managers.
-
- X11 provides no standard or easy way to get the frame geometry
- once the window is decorated. Qt solves this problem with nifty
- heuristics and clever code that works on a wide range of window
- managers that exist today. Don't be surprised if you find one
- where QWidget::frameGeometry() returns wrong results though.
-
- Nor does X11 provide a way to maximize a window.
- QWidget::showMaximized() has to emulate the feature. Its result
- depends on the result of QWidget::frameGeometry() and the
- capability of the window manager to do proper window placement,
- neither of which can be guaranteed.
-
- \section1 Restoring a Window's Geometry
-
- Since version 4.2, Qt provides functions that saves and restores a
- window's geometry and state for you. QWidget::saveGeometry()
- saves the window geometry and maximized/fullscreen state, while
- QWidget::restoreGeometry() restores it. The restore function also
- checks if the restored geometry is outside the available screen
- geometry, and modifies it as appropriate if it is.
-
- The rest of this document describes how to save and restore the
- geometry using the geometry properties. On Windows, this is
- basically storing the result of QWidget::geometry() and calling
- QWidget::setGeometry() in the next session before calling
- \l{QWidget::show()}{show()}. On X11, this won't work because an
- invisible window doesn't have a frame yet. The window manager
- will decorate the window later. When this happens, the window
- shifts towards the bottom/right corner of the screen depending on
- the size of the decoration frame. Although X provides a way to
- avoid this shift, most window managers fail to implement this
- feature.
-
- A workaround is to call \l{QWidget::setGeometry()}{setGeometry()}
- after \l{QWidget::show()}{show()}. This has the two disadvantages
- that the widget appears at a wrong place for a millisecond
- (results in flashing) and that currently only every second window
- manager gets it right. A safer solution is to store both
- \l{QWidget::pos()}{pos()} and \l{QWidget::size()}{size()} and to
- restore the geometry using \l{QWidget::resize()} and
- \l{QWidget::move()}{move()} before calling
- \l{QWidget::show()}{show()}, as demonstrated in the following
- code snippets (from the \l{mainwindows/application}{Application}
- example):
-
- \snippet examples/mainwindows/application/mainwindow.cpp 35
- \codeline
- \snippet examples/mainwindows/application/mainwindow.cpp 38
-
- This method works on Windows, Mac OS X, and most X11 window
- managers.
-*/
diff --git a/doc/src/gestures.qdoc b/doc/src/gestures.qdoc
deleted file mode 100644
index 49a9ae3c2..000000000
--- a/doc/src/gestures.qdoc
+++ /dev/null
@@ -1,170 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://www.qtsoftware.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page gestures-overview.html
- \startpage index.html Qt Reference Documentation
-
- \title Gestures Programming
- \ingroup howto
- \brief An overview of the Qt support for Gesture programming.
-
- The QGesture class provides the ability to form gestures from a series
- of events independent of the input method. A gesture could be a particular
- movement of a mouse, a touch screen action, or a series of events from
- some other source. The nature of the input, the interpretation
- of the gesture and the action taken are the choice of the implementing
- developer.
-
- \tableofcontents
-
-
- \section1 Creating Your Own Gesture Recognizer
-
- QGesture is a base class for a user defined gesture recognizer class. In
- order to implement the recognizer you will need to subclass the
- QGesture class and implement the pure virtual function \l{QGesture::filterEvent()}{filterEvent()}. Once
- you have implemented the \l{QGesture::filterEvent()}{filterEvent()} function to
- make your own recognizer you can process events. A sequence of events may,
- according to your own rules, represent a gesture. The events can be singly
- passed to the recognizer via the \l{QGesture::filterEvent()}{filterEvent()} function or as a stream of
- events by specifying a parent source of events. The events can be from any
- source and could result in any action as defined by the user. The source
- and action need not be graphical though that would be the most likely
- scenario. To find how to connect a source of events to automatically feed into the recognizer see QGesture.
-
- Recognizers based on QGesture can emit any of the following signals:
-
- \snippet doc/src/snippets/gestures/qgesture.h qgesture-signals
-
- These signals are emitted when the state changes with the call to
- \l{QGesture::updateState()}{updateState()}, more than one signal may
- be emitted when a change of state occurs. There are four GestureStates
-
- \table
- \header \o New State \o Description \o QGesture Actions on Entering this State
- \row \o Qt::NoGesture \o Initial value \o emit \l {QGesture::cancelled()}{cancelled()}
- \row \o Qt::GestureStarted \o A continuous gesture has started \o emit \l{QGesture::started()}{started()} and emit \l{QGesture::triggered()}{triggered()}
- \row \o Qt::GestureUpdated \o A gesture continues \o emit \l{QGesture::triggered()}{triggered()}
- \row \o Qt::GestureFinished \o A gesture has finished. \o emit \l{QGesture::finished()}{finished()}
- \endtable
-
- \note \l{QGesture::started()}{started()} can be emitted if entering any
- state greater than NoGesture if NoGesture was the previous state. This
- means that your state machine does not need to explicitly use the
- Qt::GestureStarted state, you can simply proceed from NoGesture to
- Qt::GestureUpdated to emit a \l{QGesture::started()}{started()} signal
- and a \l{QGesture::triggered()}{triggered()} signal.
-
- You may use some or all of these states when implementing the pure
- virtual function \l{QGesture::filterEvent()}{filterEvent()}.
- \l{QGesture::filterEvent()}{filterEvent()} will usually implement a
- state machine using the GestureState enums, but the details of which
- states are used is up to the developer.
-
- You may also need to reimplement the virtual function \l{QGesture::reset()}{reset()}
- if internal data or objects need to be re-initialized. The function must
- conclude with a call to \l{QGesture::updateState()}{updateState()} to
- change the current state to Qt::NoGesture.
-
- \section1 An Example, ImageViewer
-
- To illustrate how to use QGesture we will look at the ImageViewer
- example. This example uses QPanGesture, standard gesture, and an
- implementation of TapAndHoldGesture. Note that TapAndHoldGesture is
- platform dependent.
-
- \snippet doc/src/snippets/gestures/imageviewer/tapandholdgesture.cpp tapandhold-reset
-
- In ImageViewer we see that the ImageWidget class uses two gestures:
- \l QPanGesture and TapAndHoldGesture. The
- QPanGesture is a standard gesture which is part of Qt.
- TapAndHoldGesture is defined and implemented as part of the example.
- The ImageWidget listens for signals from the gestures, but is not
- interested in the \l{QGesture::started()}{started()} signal.
-
- \snippet doc/src/snippets/gestures/imageviewer/imagewidget.h imagewidget-slots
-
- TapAndHoldGesture uses QTouchEvent events and mouse events to detect
- start, update and end events that can be mapped onto the GestureState
- changes. The implementation in this case uses a timer as well. If the
- timeout event occurs a given number of times after the start of the gesture
- then the gesture is considered to have finished whether or not the
- appropriate touch or mouse event has occurred. Also if a large jump in
- the position of the event occurs, as calculated by the \l {QPoint::manhattanLength()}{manhattanLength()}
- call, then the gesture is cancelled by calling \l{QGesture::reset()}{reset()}
- which tidies up and uses \l{QGesture::updateState()}{updateState()} to
- change state to NoGesture which will result in the \l{QGesture::cancelled()}{cancelled()}
- signal being emitted by the recognizer.
-
- ImageWidget handles the signals by connecting the slots to the signals,
- although \c cancelled() is not connected here.
-
- \snippet doc/src/snippets/gestures/imageviewer/imagewidget.cpp imagewidget-connect
-
- These functions in turn will have to be aware of which gesture
- object was the source of the signal since we have more than one source
- per slot. This is easily done by using the QObject::sender() function
- as shown here
-
- \snippet doc/src/snippets/gestures/imageviewer/imagewidget.cpp imagewidget-triggered-1
-
- As \l{QGesture::triggered()}{triggered()} signals are handled by
- gestureTriggered() there may be position updates invoking calls to,
- for example, goNextImage(), this will cause a change in the image
- handling logic of ImageWidget and a call to updateImage() to display
- the changed state.
-
- Following the logic of how the QEvent is processed we can summmarize
- it as follows:
- \list
- \o filterEvent() becomes the event filter of the parent ImageWidget object for a QPanGesture object and a
- TapAndHoldGesture object.
- \o filterEvent() then calls updateState() to change states
- \o updateState() emits the appropriate signal(s) for the state change.
- \o The signals are caught by the defined slots in ImageWidget
- \o The widget logic changes and an update() results in a paint event.
- \endlist
-
-
-
-*/
-
diff --git a/doc/src/getting-started/demos.qdoc b/doc/src/getting-started/demos.qdoc
new file mode 100644
index 000000000..35654d228
--- /dev/null
+++ b/doc/src/getting-started/demos.qdoc
@@ -0,0 +1,193 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 demos.html
+ \title Qt Demonstrations
+ \brief Information about the demonstration programs provided with Qt.
+
+ \previouspage Qt Examples
+ \contentspage How to Learn Qt
+ \nextpage What's New in Qt 4.7
+
+ This is the list of demonstrations in Qt's \c demos directory.
+ These are larger and more complicated programs than the
+ \l{Qt Examples} and are used to highlight certain features of
+ Qt.
+
+ \table 50%
+ \header
+ \o {2,1} Getting an Overview
+ \row
+ \o \inlineimage qtdemo-small.png
+ \o
+ If you run the \l{Examples and Demos Launcher}, you'll see many of Qt's
+ widgets in action.
+
+ The \l{Qt Widget Gallery} also provides overviews of selected Qt
+ widgets in each of the styles used on various supported platforms.
+ \endtable
+
+ If you are new to Qt, and want to start developing applications,
+ you should probably start by going through the \l{Tutorials}.
+
+ \section1 Painting
+
+ \list
+ \o \l{demos/composition}{Composition Modes} demonstrates the range of
+ composition modes available with Qt.
+ \o \l{demos/deform}{Vector Deformation} demonstrates effects that are made
+ possible with a vector-oriented paint engine.
+ \o \l{demos/gradients}{Gradients} shows the different types of gradients
+ that are available in Qt.
+ \o \l{demos/pathstroke}{Path Stroking} shows Qt's built-in dash patterns
+ and shows how custom patterns can be used to extend the range of
+ available patterns.
+ \o \l{demos/affine}{Affine Transformations} demonstrates the different
+ affine transformations that can be used to influence painting operations.
+ \o \l{demos/arthurplugin}{Arthur Plugin} shows the widgets from the
+ other painting demos packaged as a custom widget plugin for \QD.
+ \endlist
+
+ \section1 Item Views
+
+ \list
+ \o \l{demos/interview}{Interview} shows the same model and selection being
+ shared between three different views.
+ \o \l{demos/spreadsheet}{Spreadsheet} demonstrates the use of a table view
+ as a spreadsheet, using custom delegates to render each item according to
+ the type of data it contains.
+ \endlist
+
+ \section1 SQL
+
+ \list
+ \o \l{demos/books}{Books} shows how Qt's SQL support and model/view integration
+ enables the user to modify the contents of a database without requiring
+ knowledge of SQL.
+ \o \l{demos/sqlbrowser}{SQL Browser} demonstrates a console for executing SQL
+ statements on a live database and provides a data browser for interactively
+ visualizing the results.
+ \endlist
+
+ \section1 Rich Text
+
+ \list
+ \o \l{demos/textedit}{Text Edit} shows Qt's rich text editing features and provides
+ an environment for experimenting with them.
+ \endlist
+
+ \section1 Main Window
+
+ \list
+ \o \l{demos/mainwindow}{Main Window} shows Qt's extensive support for main window
+ features, such as tool bars, dock windows, and menus.
+ \o \l{demos/macmainwindow}{Mac Main Window} shows how to create main window applications that has
+ the same appearance as other Mac OS X applications.
+ \endlist
+
+ \section1 Graphics View
+
+ \list
+ \o \l{demos/chip}{40000 Chips} uses the
+ \l{The Graphics View Framework}{Graphics View} framework to efficiently
+ display a large number of individual graphical items on a scrolling canvas,
+ highlighting features such as rotation, zooming, level of detail control,
+ and item selection.
+ \o \l{demos/embeddeddialogs}{Embedded Dialogs} showcases Qt 4.4's \e{Widgets on
+ the Canvas} feature by embedding a multitude of fully-working dialogs into a
+ scene.
+ \o \l{demos/boxes}{Boxes} showcases Qt's OpenGL support and the
+ integration with the Graphics View framework.
+ \endlist
+
+ \section1 Tools
+
+ \list
+ \o \l{demos/undo}{Undo Framework} demonstrates how Qt's
+ \l{Overview of Qt's Undo Framework}{undo framework} is used to
+ provide advanced undo/redo functionality.
+ \endlist
+
+ \section1 QtWebKit
+
+ \list
+ \o \l{Web Browser} demonstrates how Qt's \l{QtWebKit Module}{WebKit module}
+ can be used to implement a small Web browser.
+ \endlist
+
+ \section1 Phonon
+
+ \list
+ \o \l{demos/qmediaplayer}{Media Player} demonstrates how the \l{Phonon Module} can be
+ used to implement a basic media player application.
+ \endlist
+
+ \note The Phonon demos are currently not available for the MinGW platform.
+
+ \section1 Animation
+
+ \list
+ \o \l{demos/sub-attaq}{Sub-Attaq} demonstrates the features of the
+ \l{The Animation Framework}{animation framework} and
+ \l{The State Machine Framework}{state machine framework} in the production of
+ a simple game.
+ \endlist
+
+ \section1 Embedded Platforms
+
+ \list
+ \o \l{demos/embedded/anomaly}{Anomaly} is a small screen browser with kinetic scrolling.
+ \o \l{demos/embedded/desktopservices}{Embedded Desktop Services} shows how to open
+ documents using the applications associated with their file types.
+ \o \l{demos/embedded/digiflip}{Digiflip} is a digital watch with transition effects.
+ \o \l{demos/embedded/embeddedsvgviewer}{Embedded SVG Viewer} shows how to display SVG
+ drawings on embedded devices.
+ \o \l{demos/embedded/flickable}{Flickable List} shows how to display a list with kinetic scrolling.
+ \o \l{demos/embedded/flightinfo}{Flight Info} fetches information about aircraft flights from the Web.
+ \o \l{demos/embedded/fluidlauncher}{Fluid Launcher} demo application launcher for embedded screens
+ \o \l{demos/embedded/lightmaps}{Light Maps} demonstrates OpenStreetMap integration with WebKit.
+ \o \l{demos/embedded/raycasting}{Ray Casting} demonstrates the use of ray casting with the
+ \l{The Graphics View Framework}{Graphics View} framework.
+ \o \l{demos/embedded/styledemo}{Embedded Styles} demonstrates the use of styles.
+ \o \l{demos/embedded/weatherinfo}{Weather Info} fetches weather information from the Web.
+ \endlist
+*/
diff --git a/doc/src/getting-started/examples.qdoc b/doc/src/getting-started/examples.qdoc
new file mode 100644
index 000000000..5d2057ed7
--- /dev/null
+++ b/doc/src/getting-started/examples.qdoc
@@ -0,0 +1,1249 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 examples-overview.html
+ \raw HTML
+ <script>
+ document.location.href = "examples.html";
+ </script>
+ \endraw
+ Click this \l{Qt Examples}{link} if you don't get redirected.
+*/
+
+/*!
+ \page examples.html
+ \title Qt Examples
+ \brief The example programs provided with Qt.
+
+ \previouspage Tutorials
+ \contentspage How to Learn Qt
+ \nextpage Qt Demonstrations
+
+ Qt is supplied with a variety of examples that cover almost every aspect
+ of development. They are not all designed to be impressive when you run
+ them, but their source code is carefully written to show good Qt
+ programming practices. You can launch any of these programs from the
+ \l{Examples and Demos Launcher} application.
+
+ These examples are ordered by functional area, but many examples often
+ use features from many parts of Qt to highlight one area in particular.
+ If you are new to Qt, you should probably start by going through the
+ \l{Tutorials} before you have a look at the
+ \l{mainwindows/application}{Application} example.
+
+ In addition to the examples and the tutorial, Qt includes a
+ \l{Qt Demonstrations}{selection of demos} that deliberately show off
+ Qt's features. You might want to look at these as well.
+
+ \table
+ \row
+ \o{2,1} \l{Widgets Examples}{\bold Widgets}
+ \o{2,1} \l{Dialog Examples}{\bold Dialogs}
+ \row
+ \o \image widget-examples.png
+ \o
+ Qt comes with a large range of standard widgets that users of modern
+ applications have come to expect. You can also develop your own custom
+ widgets and controls, and use them alongside standard widgets.
+
+ It is even possible to provide custom styles and themes for widgets that can
+ be used to change the appearance of standard widgets and appropriately
+ written custom widgets.
+
+ \o \image dialog-examples.png Dialogs
+ \o
+ Qt includes standard dialogs for many common operations, such as file
+ selection, printing, and color selection.
+
+ Custom dialogs can also be created for specialized modal or modeless
+ interactions with users.
+
+ \row
+ \o{2,1} \l{Main Window Examples}{\bold{Main Windows}}
+ \o{2,1} \l{Layout Examples}{\bold Layouts}
+
+ \row
+ \o \image mainwindow-examples.png MainWindows
+ \o All the standard features of application main windows are provided by Qt.
+
+ Main windows can have pull down menus, tool bars, and dock windows. These
+ separate forms of user input are unified in an integrated action system that
+ also supports keyboard shortcuts and accelerator keys in menu items.
+
+ \o \image layout-examples.png Layouts
+ \o
+ Qt uses a layout-based approach to widget management. Widgets are arranged in
+ the optimal positions in windows based on simple layout rules, leading to a
+ consistent look and feel.
+
+ Custom layouts can be used to provide more control over the positions and
+ sizes of child widgets.
+
+ \row
+ \o{2,1} \l{Item Views Examples}{\bold{Item Views}}
+ \o{2,1} \l{Graphics View Examples}{\bold{Graphics View}}
+ \row
+ \o \image itemview-examples.png ItemViews
+ \o
+ Item views are widgets that typically display data sets. Qt 4's model/view
+ framework lets you handle large data sets by separating the underlying data
+ from the way it is represented to the user, and provides support for
+ customized rendering through the use of delegates.
+
+ \o \image graphicsview-examples.png GraphicsView
+ \o
+ Qt is provided with a comprehensive canvas through the GraphicsView
+ classes.
+
+ \row
+ \o{2,1} \l{Painting Examples}{\bold{Painting}}
+ \o{2,1} \l{Rich Text Examples}{\bold{Rich Text}}
+ \row
+ \o \image painting-examples.png Painting
+ \o
+ Qt's painting system is able to render vector graphics, images, and outline
+ font-based text with sub-pixel accuracy accuracy using anti-aliasing to
+ improve rendering quality.
+
+ \o \image richtext-examples.png RichText
+ \o
+ Qt provides powerful document-oriented rich text engine that supports Unicode
+ and right-to-left scripts. Documents can be manipulated using a cursor-based
+ API, and their contents can be imported and exported as both HTML and in a
+ custom XML format.
+
+ \row
+ \o{2,1} \l{Desktop Examples}{\bold Desktop}
+ \o{2,1} \l{Drag and Drop Examples}{\bold{Drag and Drop}}
+ \row
+ \o \image desktop-examples.png
+ \o
+ Qt provides features to enable applications to integrate with the user's
+ preferred desktop environment.
+
+ Features such as system tray icons, access to the desktop widget, and
+ support for desktop services can be used to improve the appearance of
+ applications and take advantage of underlying desktop facilities.
+
+ \o \image draganddrop-examples.png DragAndDrop
+ \o
+ Qt supports native drag and drop on all platforms via an extensible
+ MIME-based system that enables applications to send data to each other in the
+ most appropriate formats.
+
+ Drag and drop can also be implemented for internal use by applications.
+
+ \row
+ \o{2,1} \l{Threading and Concurrent Programming Examples}{\bold{Threading and Concurrent Programming}}
+ \o{2,1} \l{Tools Examples}{\bold{Tools}}
+ \row
+ \o \image thread-examples.png
+ \o
+ Qt 4 makes it easier than ever to write multithreaded applications. More
+ classes have been made usable from non-GUI threads, and the signals and slots
+ mechanism can now be used to communicate between threads.
+
+ The QtConcurrent namespace includes a collection of classes and functions
+ for straightforward concurrent programming.
+
+ \o \image tool-examples.png Tools
+ \o
+ Qt is equipped with a range of capable tool classes, from containers and
+ iterators to classes for string handling and manipulation.
+
+ Other classes provide application infrastructure support, handling plugin
+ loading and managing configuration files.
+
+ \row
+ \o{2,1} \l{Network Examples}{\bold{Network}}
+ \o{2,1} \l{Inter-Process Communication Examples}{\bold{Inter-Process Communication}}
+ \row
+ \o \image network-examples.png Network
+ \o
+ Qt is provided with an extensive set of network classes to support both
+ client-based and server side network programming.
+
+ \o \image ipc-examples.png IPC
+ \o
+
+ \row
+ \o{2,1} \l{OpenGL Examples}{\bold{OpenGL}}\bold{ and }\l{OpenVG Examples}{\bold{OpenVG}}\bold{ Examples}
+ \o{2,1} \l{Multimedia Examples}{\bold{Multimedia Framework}}
+ \row
+ \o \image opengl-examples.png OpenGL
+ \o
+ Qt provides support for integration with OpenGL implementations on all
+ platforms, giving developers the opportunity to display hardware accelerated
+ 3D graphics alongside a more conventional user interface.
+
+ Qt provides support for integration with OpenVG implementations on
+ platforms with suitable drivers.
+
+ \o \image phonon-examples.png
+ \o
+ Qt provides low-level audio support on linux,windows and mac platforms by default and
+ an audio plugin API to allow developers to implement there own audio support for
+ custom devices and platforms.
+
+ The Phonon Multimedia Framework brings multimedia support to Qt applications.
+
+ \row
+ \o{2,1} \l{SQL Examples}{\bold{SQL}}
+ \o{2,1} \l{XML Examples}{\bold{XML}}
+ \row
+ \o \image sql-examples.png SQL
+ \o
+ Qt provides extensive database interoperability, with support for products
+ from both open source and proprietary vendors.
+
+ SQL support is integrated with Qt's model/view architecture, making it easier
+ to provide GUI integration for your database applications.
+
+ \o \image xml-examples.png XML
+ \o
+ XML parsing and handling is supported through SAX and DOM compliant APIs
+ as well as streaming classes.
+
+ The XQuery/XPath and XML Schema engines in the QtXmlPatterns modules
+ provide classes for querying XML files and custom data models.
+
+ \row
+ \o{2,1} \l{Qt Designer Examples}{\bold{Qt Designer}}
+ \o{2,1} \l{UiTools Examples}{\bold UiTools}
+ \row
+ \o \image designer-examples.png Designer
+ \o
+ Qt Designer is a capable graphical user interface designer that lets you
+ create and configure forms without writing code. GUIs created with
+ Qt Designer can be compiled into an application or created at run-time.
+
+ \o \image uitools-examples.png UiTools
+ \o
+
+ \row
+ \o{2,1} \l{Qt Linguist Examples}{\bold{Qt Linguist}}
+ \o{2,1} \l{Qt Script Examples}{\bold{Qt Script}}
+ \row
+ \o \image linguist-examples.png QtLinguist
+ \o
+ Internationalization is a core feature of Qt.
+
+ \o \image qtscript-examples.png
+ \o
+ Qt is provided with a powerful embedded scripting environment through the QtScript
+ classes.
+
+ \row
+ \o{2,1} \l{WebKit Examples}{\bold WebKit}
+ \o{2,1} \l{Help System Examples}{\bold{Help System}}
+ \row
+ \o \image webkit-examples.png
+ \o
+ Qt provides an integrated Web browser component based on WebKit, the popular
+ open source browser engine.
+
+ \o \image assistant-examples.png HelpSystem
+ \o
+ Support for interactive help is provided by the Qt Assistant application.
+ Developers can take advantages of the facilities it offers to display
+ specially-prepared documentation to users of their applications.
+
+ \row
+ \o{2,1} \l{State Machine Examples}{\bold{State Machine}}
+ \o{2,1} \l{Animation Framework Examples}{\bold{Animation Framework}}
+ \row
+ \o \image statemachine-examples.png
+ \o
+ Qt provides a powerful hierarchical finite state machine through the Qt State
+ Machine classes.
+
+ \o \image animation-examples.png
+ \o
+ These examples show to to use the \l{The Animation Framework}{animation framework}
+ to build highly animated, high-performance GUIs.
+
+ \row
+ \o{2,1} \l{Multi-Touch Examples}{\bold{Multi-Touch Framework}}
+ \o{2,1} \l{Gestures Examples}{\bold{Gestures}}
+
+ \row
+ \o \image multitouch-examples.png
+ \o
+ Support for multi-touch input makes it possible for developers to create
+ extensible and intuitive user interfaces.
+
+ \o \image gestures-examples.png
+ \o
+ Applications can be written to respond to gestures as a natural input method.
+ These examples show how to enable support for standard and custom gestures in
+ applications.
+
+ \row
+ \o{2,1} \l{D-Bus Examples}{\bold{D-Bus}}
+ \o{2,1} \l{Qt for Embedded Linux Examples}{\bold{Qt for Embedded Linux}}
+
+ \row
+ \o \image qt-embedded-examples.png
+ \o
+ Systems with limited resources, specialized hardware, and small
+ screens require special attention.
+
+ \o \image dbus-examples.png D-Bus
+ \o
+ D-Bus is an inter-process communication protocol for Unix/Linux systems.
+ These examples demonstrate how to write application that communicate with
+ each other.
+
+ \row
+ \o{2,1} \l{ActiveQt Examples}{\bold ActiveQt}
+ \o{2,1} \l{Qt Quarterly}{\bold{Qt Quarterly}}
+
+ \row
+ \o \image activeqt-examples.png ActiveQt
+ \o
+ These examples demonstrate how to write ActiveX controls and control servers
+ with Qt, and how to use ActiveX controls and COM objects in a Qt application.
+
+ \o \image qq-thumbnail.png QtQuarterly
+ \o
+ One more valuable source for examples and explanations of Qt
+ features is the archive of the \l {Qt Quarterly}.
+
+ \endtable
+*/
+
+/*!
+ \page examples-widgets.html
+ \title Widgets Examples
+
+ \contentspage Qt Examples
+ \nextpage Dialog Examples
+
+ \image widget-examples.png
+
+ Qt comes with a large range of standard widgets that users of modern
+ applications have come to expect.
+
+ You can also develop your own custom widgets and controls, and use them
+ alongside standard widgets.
+
+ It is even possible to provide custom styles and themes for widgets that can
+ be used to change the appearance of standard widgets and appropriately
+ written custom widgets.
+
+ \list
+ \o \l{widgets/analogclock}{Analog Clock}\raisedaster
+ \o \l{widgets/calculator}{Calculator}\raisedaster
+ \o \l{widgets/calendarwidget}{Calendar Widget}\raisedaster
+ \o \l{widgets/charactermap}{Character Map}\raisedaster
+ \o \l{widgets/codeeditor}{Code Editor}\raisedaster
+ \o \l{widgets/digitalclock}{Digital Clock}\raisedaster
+ \o \l{widgets/groupbox}{Group Box}\raisedaster
+ \o \l{widgets/icons}{Icons}\raisedaster
+ \o \l{widgets/imageviewer}{Image Viewer}\raisedaster
+ \o \l{widgets/lineedits}{Line Edits}\raisedaster
+ \o \l{widgets/movie}{Movie}
+ \o \l{widgets/scribble}{Scribble}\raisedaster
+ \o \l{widgets/shapedclock}{Shaped Clock}\raisedaster
+ \o \l{widgets/sliders}{Sliders}\raisedaster
+ \o \l{widgets/spinboxes}{Spin Boxes}\raisedaster
+ \o \l{widgets/styles}{Styles}\raisedaster
+ \o \l{widgets/stylesheet}{Style Sheet}\raisedaster
+ \o \l{widgets/tablet}{Tablet}\raisedaster
+ \o \l{widgets/tetrix}{Tetrix}\raisedaster
+ \o \l{widgets/tooltips}{Tooltips}\raisedaster
+ \o \l{widgets/wiggly}{Wiggly}\raisedaster
+ \o \l{widgets/windowflags}{Window Flags}\raisedaster
+ \endlist
+
+ Examples marked with an asterisk (*) are fully documented.
+*/
+
+/*!
+ \page examples-dialogs.html
+ \title Dialog Examples
+
+ \previouspage Widgets Examples
+ \contentspage Qt Examples
+ \nextpage Main Window Examples
+
+ \image dialog-examples.png
+
+ Qt includes standard dialogs for many common operations, such as file
+ selection, printing, and color selection.
+
+ Custom dialogs can also be created for specialized modal or modeless
+ interactions with users.
+
+ \list
+ \o \l{dialogs/classwizard}{Class Wizard}\raisedaster
+ \o \l{dialogs/configdialog}{Config Dialog}
+ \o \l{dialogs/extension}{Extension}\raisedaster
+ \o \l{dialogs/findfiles}{Find Files}\raisedaster
+ \o \l{dialogs/licensewizard}{License Wizard}\raisedaster
+ \o \l{dialogs/standarddialogs}{Standard Dialogs}
+ \o \l{dialogs/tabdialog}{Tab Dialog}\raisedaster
+ \o \l{dialogs/trivialwizard}{Trivial Wizard}
+ \endlist
+
+ Examples marked with an asterisk (*) are fully documented.
+*/
+
+/*!
+ \page examples-mainwindow.html
+ \title Main Window Examples
+
+ \previouspage Dialog Examples
+ \contentspage Qt Examples
+ \nextpage Layout Examples
+
+ \image mainwindow-examples.png
+
+ All the standard features of application main windows are provided by Qt.
+
+ Main windows can have pull down menus, tool bars, and dock windows. These
+ separate forms of user input are unified in an integrated action system that
+ also supports keyboard shortcuts and accelerator keys in menu items.
+
+ \list
+ \o \l{mainwindows/application}{Application}\raisedaster
+ \o \l{mainwindows/dockwidgets}{Dock Widgets}\raisedaster
+ \o \l{mainwindows/mdi}{MDI}
+ \o \l{mainwindows/menus}{Menus}\raisedaster
+ \o \l{mainwindows/recentfiles}{Recent Files}
+ \o \l{mainwindows/sdi}{SDI}
+ \endlist
+
+ Examples marked with an asterisk (*) are fully documented.
+*/
+
+/*!
+ \page examples-layouts.html
+ \title Layout Examples
+
+ \previouspage Main Window Examples
+ \contentspage Qt Examples
+ \nextpage Item Views Examples
+
+ \image layout-examples.png
+
+ Qt uses a layout-based approach to widget management. Widgets are arranged in
+ the optimal positions in windows based on simple layout rules, leading to a
+ consistent look and feel.
+
+ Custom layouts can be used to provide more control over the positions and
+ sizes of child widgets.
+
+ \list
+ \o \l{layouts/basiclayouts}{Basic Layouts}\raisedaster
+ \o \l{layouts/borderlayout}{Border Layout}
+ \o \l{layouts/dynamiclayouts}{Dynamic Layouts}
+ \o \l{layouts/flowlayout}{Flow Layout}
+ \endlist
+
+ Examples marked with an asterisk (*) are fully documented.
+*/
+
+/*!
+ \page examples-itemviews.html
+ \title Item Views Examples
+
+ \previouspage Layout Examples
+ \contentspage Qt Examples
+ \nextpage Graphics View Examples
+
+ \image itemview-examples.png
+
+ Item views are widgets that typically display data sets. Qt 4's model/view
+ framework lets you handle large data sets by separating the underlying data
+ from the way it is represented to the user, and provides support for
+ customized rendering through the use of delegates.
+
+ \list
+ \o \l{itemviews/addressbook}{Address Book}\raisedaster
+ \o \l{itemviews/basicsortfiltermodel}{Basic Sort/Filter Model}
+ \o \l{itemviews/chart}{Chart}
+ \o \l{itemviews/coloreditorfactory}{Color Editor Factory}\raisedaster
+ \o \l{itemviews/combowidgetmapper}{Combo Widget Mapper}\raisedaster
+ \o \l{itemviews/customsortfiltermodel}{Custom Sort/Filter Model}\raisedaster
+ \o \l{itemviews/dirview}{Dir View}
+ \o \l{itemviews/editabletreemodel}{Editable Tree Model}\raisedaster
+ \o \l{itemviews/fetchmore}{Fetch More}\raisedaster
+ \o \l{itemviews/frozencolumn}{Frozen Column}\raisedaster
+ \o \l{itemviews/pixelator}{Pixelator}\raisedaster
+ \o \l{itemviews/puzzle}{Puzzle}
+ \o \l{itemviews/simpledommodel}{Simple DOM Model}\raisedaster
+ \o \l{itemviews/simpletreemodel}{Simple Tree Model}\raisedaster
+ \o \l{itemviews/simplewidgetmapper}{Simple Widget Mapper}\raisedaster
+ \o \l{itemviews/spinboxdelegate}{Spin Box Delegate}\raisedaster
+ \o \l{itemviews/stardelegate}{Star Delegate}\raisedaster
+ \endlist
+
+ Examples marked with an asterisk (*) are fully documented.
+*/
+
+/*!
+ \page examples-graphicsview.html
+ \title Graphics View Examples
+
+ \previouspage Item Views Examples
+ \contentspage Qt Examples
+ \nextpage Painting Examples
+
+ \image graphicsview-examples.png
+
+ Qt is provided with a comprehensive canvas through the GraphicsView
+ classes.
+
+ These examples demonstrate the fundamental aspects of canvas programming
+ with Qt.
+
+ \list
+ \o \l{graphicsview/collidingmice}{Colliding Mice}\raisedaster
+ \o \l{graphicsview/diagramscene}{Diagram Scene}\raisedaster
+ \o \l{graphicsview/dragdroprobot}{Drag and Drop Robot}
+ \o \l{graphicsview/elasticnodes}{Elastic Nodes}
+ \o \l{graphicsview/portedasteroids}{Ported Asteroids}
+ \o \l{graphicsview/portedcanvas}{Ported Canvas}
+ \endlist
+
+ Examples marked with an asterisk (*) are fully documented.
+*/
+
+/*!
+ \page examples-painting.html
+ \title Painting Examples
+
+ \previouspage Graphics View Examples
+ \contentspage Qt Examples
+ \nextpage Rich Text Examples
+
+ \image painting-examples.png
+
+ Qt's painting system is able to render vector graphics, images, and outline
+ font-based text with sub-pixel accuracy accuracy using anti-aliasing to
+ improve rendering quality.
+
+ These examples show the most common techniques that are used when painting
+ with Qt, from basic concepts such as drawing simple primitives to the use of
+ transformations.
+
+ \list
+ \o \l{painting/basicdrawing}{Basic Drawing}\raisedaster
+ \o \l{painting/concentriccircles}{Concentric Circles}\raisedaster
+ \o \l{painting/fontsampler}{Font Sampler}
+ \o \l{painting/imagecomposition}{Image Composition}\raisedaster
+ \o \l{painting/painterpaths}{Painter Paths}\raisedaster
+ \o \l{painting/svggenerator}{SVG Generator}\raisedaster
+ \o \l{painting/svgviewer}{SVG Viewer}
+ \o \l{painting/transformations}{Transformations}\raisedaster
+ \endlist
+
+ Examples marked with an asterisk (*) are fully documented.
+*/
+
+/*!
+ \page examples-richtext.html
+ \title Rich Text Examples
+
+ \previouspage Painting Examples
+ \contentspage Qt Examples
+ \nextpage Desktop Examples
+
+ \image richtext-examples.png
+
+ Qt provides powerful document-oriented rich text engine that supports Unicode
+ and right-to-left scripts. Documents can be manipulated using a cursor-based
+ API, and their contents can be imported and exported as both HTML and in a
+ custom XML format.
+
+ \list
+ \o \l{richtext/calendar}{Calendar}\raisedaster
+ \o \l{richtext/orderform}{Order Form}\raisedaster
+ \o \l{richtext/syntaxhighlighter}{Syntax Highlighter}\raisedaster
+ \o \l{richtext/textobject}{Text Object}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-desktop.html
+ \title Desktop Examples
+
+ \previouspage Rich Text Examples
+ \contentspage Qt Examples
+ \nextpage Drag and Drop Examples
+
+ \image desktop-examples.png
+
+ Qt provides features to enable applications to integrate with the user's
+ preferred desktop environment.
+
+ Features such as system tray icons, access to the desktop widget, and
+ support for desktop services can be used to improve the appearance of
+ applications and take advantage of underlying desktop facilities.
+
+ \list
+ \o \l{desktop/screenshot}{Screenshot}\raisedaster
+ \o \l{desktop/systray}{System Tray}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-draganddrop.html
+ \title Drag and Drop Examples
+
+ \previouspage Desktop Examples
+ \contentspage Qt Examples
+ \nextpage Threading and Concurrent Programming Examples
+
+ \image draganddrop-examples.png
+
+ Qt supports native drag and drop on all platforms via an extensible
+ MIME-based system that enables applications to send data to each other in the
+ most appropriate formats.
+
+ Drag and drop can also be implemented for internal use by applications.
+
+ \list
+ \o \l{draganddrop/delayedencoding}{Delayed Encoding}\raisedaster
+ \o \l{draganddrop/draggableicons}{Draggable Icons}
+ \o \l{draganddrop/draggabletext}{Draggable Text}
+ \o \l{draganddrop/dropsite}{Drop Site}
+ \o \l{draganddrop/fridgemagnets}{Fridge Magnets}\raisedaster
+ \o \l{draganddrop/puzzle}{Drag and Drop Puzzle}
+ \endlist
+
+ Examples marked with an asterisk (*) are fully documented.
+*/
+
+/*!
+ \page examples-threadandconcurrent.html
+ \title Threading and Concurrent Programming Examples
+
+ \previouspage Drag and Drop Examples
+ \contentspage Qt Examples
+ \nextpage Tools Examples
+
+ \image thread-examples.png
+
+ Qt 4 makes it easier than ever to write multithreaded applications. More
+ classes have been made usable from non-GUI threads, and the signals and slots
+ mechanism can now be used to communicate between threads.
+
+ Additionally, it is now possible to move objects between threads.
+
+ \list
+ \o \l{threads/queuedcustomtype}{Queued Custom Type}\raisedaster
+ \o \l{threads/mandelbrot}{Mandelbrot}\raisedaster
+ \o \l{threads/semaphores}{Semaphores}\raisedaster
+ \o \l{threads/waitconditions}{Wait Conditions}\raisedaster
+ \endlist
+
+ The QtConcurrent namespace includes a collection of classes and functions
+ for straightforward concurrent programming.
+
+ These examples show how to apply the basic techniques of concurrent
+ programming to simple problems.
+
+ \list
+ \o \l{qtconcurrent/imagescaling}{QtConcurrent Asynchronous Image Scaling}
+ \o \l{qtconcurrent/map}{QtConcurrent Map}
+ \o \l{qtconcurrent/progressdialog}{QtConcurrent Progress Dialog}
+ \o \l{qtconcurrent/runfunction}{QtConcurrent Run Function}
+ \o \l{qtconcurrent/wordcount}{QtConcurrent Word Count}
+ \endlist
+
+ Examples marked with an asterisk (*) are fully documented.
+*/
+
+/*!
+ \page examples.tools.html
+ \title Tools Examples
+
+ \previouspage Threading and Concurrent Programming Examples
+ \contentspage Qt Examples
+ \nextpage Network Examples
+
+ \image tool-examples.png
+
+ Qt is equipped with a range of capable tool classes, from containers and
+ iterators to classes for string handling and manipulation.
+
+ Other classes provide application infrastructure support, handling plugin
+ loading and managing configuration files.
+
+ \list
+ \o \l{tools/codecs}{Codecs}
+ \o \l{tools/completer}{Completer}\raisedaster
+ \o \l{tools/customcompleter}{Custom Completer}\raisedaster
+ \o \l{tools/customtype}{Custom Type}\raisedaster
+ \o \l{tools/customtypesending}{Custom Type Sending}\raisedaster
+ \o \l{tools/echoplugin}{Echo Plugin}\raisedaster
+ \o \l{tools/i18n}{I18N}
+ \o \l{tools/inputpanel}{Input Panel}\raisedaster
+ \o \l{tools/plugandpaint}{Plug & Paint}\raisedaster
+ \o Plug & Paint Plugins: \l{tools/plugandpaintplugins/basictools}{Basic Tools}\raisedaster
+ and \l{tools/plugandpaintplugins/extrafilters}{Extra Filters}\raisedaster
+ \o \l{tools/regexp}{RegExp}
+ \o \l{tools/settingseditor}{Settings Editor}
+ \o \l{tools/styleplugin}{Style Plugin}\raisedaster
+ \o \l{tools/treemodelcompleter}{Tree Model Completer}\raisedaster
+ \o \l{tools/undoframework}{Undo Framework}\raisedaster
+ \endlist
+
+ Examples marked with an asterisk (*) are fully documented.
+*/
+
+/*!
+ \page examples-network.html
+ \title Network Examples
+
+ \previouspage Tools Examples
+ \contentspage Qt Examples
+ \nextpage Inter-Process Communication Examples
+
+ \image network-examples.png
+
+ Qt is provided with an extensive set of network classes to support both
+ client-based and server side network programming.
+
+ These examples demonstrate the fundamental aspects of network programming
+ with Qt.
+
+ \list
+ \o \l{network/blockingfortuneclient}{Blocking Fortune Client}\raisedaster
+ \o \l{network/broadcastreceiver}{Broadcast Receiver}
+ \o \l{network/broadcastsender}{Broadcast Sender}
+ \o \l{network/network-chat}{Network Chat}
+ \o \l{network/fortuneclient}{Fortune Client}\raisedaster
+ \o \l{network/fortuneserver}{Fortune Server}\raisedaster
+ \o \l{network/qftp}{FTP}\raisedaster
+ \o \l{network/http}{HTTP}
+ \o \l{network/loopback}{Loopback}
+ \o \l{network/threadedfortuneserver}{Threaded Fortune Server}\raisedaster
+ \o \l{network/torrent}{Torrent}
+ \o \l{network/googlesuggest}{Google Suggest}
+ \endlist
+
+ Examples marked with an asterisk (*) are fully documented.
+*/
+
+/*!
+ \page examples-ipc.html
+ \title Inter-Process Communication Examples
+
+ \previouspage Network Examples
+ \contentspage Qt Examples
+ \nextpage OpenGL Examples
+
+ \image ipc-examples.png
+
+ \list
+ \o \l{ipc/localfortuneclient}{Local Fortune Client}\raisedaster
+ \o \l{ipc/localfortuneserver}{Local Fortune Server}\raisedaster
+ \o \l{ipc/sharedmemory}{Shared Memory}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-opengl.html
+ \title OpenGL Examples
+
+ \previouspage Inter-Process Communication Examples
+ \contentspage Qt Examples
+ \nextpage OpenVG Examples
+
+ \image opengl-examples.png
+
+ Qt provides support for integration with OpenGL implementations on all
+ platforms, giving developers the opportunity to display hardware accelerated
+ 3D graphics alongside a more conventional user interface.
+
+ These examples demonstrate the basic techniques used to take advantage of
+ OpenGL in Qt applications.
+
+ \list
+ \o \l{opengl/2dpainting}{2D Painting}\raisedaster
+ \o \l{opengl/framebufferobject}{Framebuffer Object}
+ \o \l{opengl/framebufferobject2}{Framebuffer Object 2}
+ \o \l{opengl/grabber}{Grabber}
+ \o \l{opengl/hellogl}{Hello GL}\raisedaster
+ \o \l{opengl/hellogl_es}{Hello GL - ported to Windows CE}\raisedaster
+ \o \l{opengl/overpainting}{Overpainting}\raisedaster
+ \o \l{opengl/pbuffers}{Pixel Buffers}
+ \o \l{opengl/pbuffers2}{Pixel Buffers 2}
+ \o \l{opengl/samplebuffers}{Sample Buffers}
+ \o \l{opengl/textures}{Textures}
+ \endlist
+
+ Examples marked with an asterisk (*) are fully documented.
+*/
+
+/*!
+ \page examples-openvg.html
+ \title OpenVG Examples
+
+ \previouspage OpenGL Examples
+ \contentspage Qt Examples
+ \nextpage Multimedia Examples
+
+ \image openvg-examples.png
+
+ Qt provides support for integration with OpenVG implementations on
+ platforms with suitable drivers.
+
+ These examples demonstrate the basic techniques used to take advantage of
+ OpenVG in Qt applications.
+
+ \list
+ \o \l{openvg/star}{OpenVG Star}
+ \endlist
+*/
+
+/*!
+ \page examples-multimedia.html
+ \title Multimedia Examples
+
+ \previouspage OpenGL Examples
+ \contentspage Qt Examples
+ \nextpage SQL Examples
+
+ \image phonon-examples.png
+
+ \section1 Multimedia
+
+ Qt provides low-level audio support on linux,windows and mac platforms by default and
+ an audio plugin API to allow developers to implement there own audio support for
+ custom devices and platforms.
+
+ These examples demonstrate the basic techniques used to take advantage of
+ Audio API in Qt applications.
+
+ \list
+ \o \l{multimedia/audiodevices}{Audio Devices}
+ \o \l{multimedia/audiooutput}{Audio Output}
+ \o \l{multimedia/audioinput}{Audio Input}
+ \endlist
+
+ \section1 Video Output
+
+ \list
+ \o \l{multimedia/videowidget}{Video Widget}\raisedaster
+ \o \l{multimedia/videographicsitem}{Video Graphics Item}
+ \endlist
+
+ \section1 Phonon
+
+ The Phonon Multimedia Framework brings multimedia support to Qt applications.
+
+ The examples and demonstrations provided show how to play music and movies
+ using the Phonon API.
+
+ \list
+ \o \l{phonon/capabilities}{Capabilities}\raisedaster
+ \o \l{phonon/qmusicplayer}{Music Player}\raisedaster
+ \endlist
+
+ Examples marked with an asterisk (*) are fully documented.
+*/
+
+/*!
+ \page examples-sql.html
+ \title SQL Examples
+
+ \previouspage Multimedia Examples
+ \contentspage Qt Examples
+ \nextpage XML Examples
+
+ \image sql-examples.png
+
+ Qt provides extensive database interoperability, with support for products
+ from both open source and proprietary vendors.
+
+ SQL support is integrated with Qt's model/view architecture, making it easier
+ to provide GUI integration for your database applications.
+
+ \list
+ \o \l{sql/cachedtable}{Cached Table}\raisedaster
+ \o \l{sql/drilldown}{Drill Down}\raisedaster
+ \o \l{sql/querymodel}{Query Model}
+ \o \l{sql/relationaltablemodel}{Relational Table Model}
+ \o \l{sql/tablemodel}{Table Model}
+ \o \l{sql/sqlwidgetmapper}{SQL Widget Mapper}\raisedaster
+ \endlist
+
+ Examples marked with an asterisk (*) are fully documented.
+*/
+
+
+/*!
+ \page examples-xml.html
+ \title XML Examples
+
+ \previouspage SQL Examples
+ \contentspage Qt Examples
+ \nextpage Qt Designer Examples
+
+ \image xml-examples.png XML
+
+ XML parsing and handling is supported through SAX and DOM compliant APIs
+ as well as streaming classes.
+
+ \list
+ \o \l{xml/dombookmarks}{DOM Bookmarks}
+ \o \l{xml/saxbookmarks}{SAX Bookmarks}
+ \o \l{xml/streambookmarks}{QXmlStream Bookmarks}\raisedaster
+ \o \l{xml/rsslisting}{RSS-Listing}
+ \o \l{xml/xmlstreamlint}{XML Stream Lint Example}\raisedaster
+ \endlist
+
+ The XQuery/XPath and XML Schema engines in the QtXmlPatterns modules
+ provide classes for querying XML files and custom data models.
+
+ \list
+ \o \l{xmlpatterns/recipes}{Recipes}
+ \o \l{xmlpatterns/filetree}{File System Example}
+ \o \l{xmlpatterns/qobjectxmlmodel}{QObject XML Model Example}
+ \o \l{xmlpatterns/xquery/globalVariables}{C++ Source Code Analyzer Example}
+ \o \l{xmlpatterns/trafficinfo}{Traffic Info}\raisedaster
+ \o \l{xmlpatterns/schema}{XML Schema Validation}\raisedaster
+ \endlist
+
+ Examples marked with an asterisk (*) are fully documented.
+*/
+
+/*!
+ \page examples-designer.html
+ \title Qt Designer Examples
+
+ \previouspage XML Examples
+ \contentspage Qt Examples
+ \nextpage UiTools Examples
+
+ \image designer-examples.png QtDesigner
+
+ Qt Designer is a capable graphical user interface designer that lets you
+ create and configure forms without writing code. GUIs created with
+ Qt Designer can be compiled into an application or created at run-time.
+
+ \list
+ \o \l{designer/calculatorbuilder}{Calculator Builder}\raisedaster
+ \o \l{designer/calculatorform}{Calculator Form}\raisedaster
+ \o \l{designer/customwidgetplugin}{Custom Widget Plugin}\raisedaster
+ \o \l{designer/taskmenuextension}{Task Menu Extension}\raisedaster
+ \o \l{designer/containerextension}{Container Extension}\raisedaster
+ \o \l{designer/worldtimeclockbuilder}{World Time Clock Builder}\raisedaster
+ \o \l{designer/worldtimeclockplugin}{World Time Clock Plugin}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-uitools.html
+ \title UiTools Examples
+
+ \previouspage Qt Designer Examples
+ \contentspage Qt Examples
+ \nextpage Qt Linguist Examples
+
+ \image uitools-examples.png UiTools
+
+ \list
+ \o \l{uitools/multipleinheritance}{Multiple Inheritance}\raisedaster
+ \o \l{uitools/textfinder}{Text Finder}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-linguist.html
+ \title Qt Linguist Examples
+
+ \previouspage UiTools Examples
+ \contentspage Qt Examples
+ \nextpage Qt Script Examples
+
+ \image linguist-examples.png
+
+ Internationalization is a core feature of Qt. These examples show how to
+ access translation and localization facilities at run-time.
+
+ \list
+ \o \l{linguist/hellotr}{Hello tr()}\raisedaster
+ \o \l{linguist/arrowpad}{Arrow Pad}\raisedaster
+ \o \l{linguist/trollprint}{Troll Print}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-script.html
+ \title Qt Script Examples
+
+ \previouspage Qt Linguist Examples
+ \contentspage Qt Examples
+ \nextpage WebKit Examples
+
+ \image qtscript-examples.png QtScript
+
+ Qt is provided with a powerful embedded scripting environment through the QtScript
+ classes.
+
+ These examples demonstrate the fundamental aspects of scripting applications
+ with Qt.
+
+ \list
+ \o \l{script/calculator}{Calculator}\raisedaster
+ \o \l{script/context2d}{Context2D}\raisedaster
+ \o \l{script/defaultprototypes}{Default Prototypes}\raisedaster
+ \o \l{script/helloscript}{Hello Script}\raisedaster
+ \o \l{script/qstetrix}{Qt Script Tetrix}\raisedaster
+ \o \l{script/customclass}{Custom Script Class}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-webkit.html
+ \title WebKit Examples
+
+ \previouspage Qt Script Examples
+ \contentspage Qt Examples
+ \nextpage Help System Examples
+
+ \image webkit-examples.png WebKit
+
+ Qt provides an integrated Web browser component based on WebKit, the popular
+ open source browser engine.
+
+ These examples and demonstrations show a range of different uses for WebKit,
+ from displaying Web pages within a Qt user interface to an implementation of
+ a basic function Web browser.
+
+ \table
+ \header \o Example \o Description
+ \row \o \l{webkit/domtraversal}{DOM Traversal}\raisedaster
+ \o Shows how to use QWebElement to inspect the document structure of a Web page.
+ \row \o \l{webkit/fancybrowser}{Fancy Browser}
+ \o A more advanced browser example, showing the use of jQuery to perform effects.
+ \row \o \l{webkit/formextractor}{Form Extractor}
+ \o How to use JavaScript and C++ together to read page content.
+ \row \o \l{webkit/googlechat}{Google Chat}
+ \o A real-world example that shows how an existing Web-based service can be accessed
+ using QtWebKit.
+ \row \o \l{webkit/previewer}{Previewer}\raisedaster
+ \o Shows how to make a simple Web page previewer by using Qt's text input widgets
+ together with a QWebView widget.
+ \row \o \l{webkit/simpleselector}{Simple Selector}\raisedaster
+ \o A basic demonstration, showing how to use QWebElement to select elements in a
+ Web page.
+ \endtable
+
+ Examples marked with an asterisk (*) are fully documented.
+*/
+
+/*!
+ \page examples-helpsystem.html
+ \title Help System Examples
+
+ \previouspage WebKit Examples
+ \contentspage Qt Examples
+ \nextpage State Machine Examples
+
+ \image assistant-examples.png HelpSystem
+
+ Support for interactive help is provided by the Qt Assistant application.
+ Developers can take advantages of the facilities it offers to display
+ specially-prepared documentation to users of their applications.
+
+ \list
+ \o \l{help/simpletextviewer}{Simple Text Viewer}\raisedaster
+ \o \l{help/remotecontrol}{Remote Control}
+ \o \l{help/contextsensitivehelp}{Context-Sensitive Help}
+ \endlist
+
+ Examples marked with an asterisk (*) are fully documented.
+*/
+
+/*!
+ \page examples-statemachine.html
+ \title State Machine Examples
+
+ \previouspage Help System Examples
+ \contentspage Qt Examples
+ \nextpage Animation Framework Examples
+
+ \image statemachine-examples.png StateMachine
+
+ Qt provides a powerful hierarchical finite state machine through the Qt State
+ Machine classes.
+
+ These examples demonstrate the fundamental aspects of implementing
+ Statecharts with Qt.
+
+ \list
+ \o \l{statemachine/eventtransitions}{Event Transitions}\raisedaster
+ \o \l{statemachine/factorial}{Factorial States}\raisedaster
+ \o \l{statemachine/pingpong}{Ping Pong States}\raisedaster
+ \o \l{statemachine/rogue}{Rogue}\raisedaster
+ \o \l{statemachine/trafficlight}{Traffic Light}\raisedaster
+ \o \l{statemachine/twowaybutton}{Two-way Button}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-animation.html
+ \title Animation Framework Examples
+
+ \previouspage State Machine Examples
+ \contentspage Qt Examples
+ \nextpage Multi-Touch Examples
+
+ \image animation-examples.png Animation
+
+ \list
+ \o \l{animation/animatedtiles}{Animated Tiles}
+ \o \l{animation/appchooser}{Application Chooser}
+ \o \l{animation/easing}{Easing Curves}
+ \o \l{animation/moveblocks}{Move Blocks}\raisedaster
+ \o \l{animation/states}{States}
+ \o \l{animation/stickman}{Stick man}\raisedaster
+ \endlist
+
+ Examples marked with an asterisk (*) are fully documented.
+*/
+
+/*!
+ \page examples-multitouch.html
+ \title Multi-Touch Examples
+
+ \previouspage Animation Framework Examples
+ \contentspage Qt Examples
+ \nextpage Gestures Examples
+
+ Support for multi-touch input makes it possible for developers to create
+ extensible and intuitive user interfaces.
+
+ \list
+ \o \l{multitouch/dials}{Multi-Touch Dials}
+ \o \l{multitouch/fingerpaint}{Finger Paint}
+ \o \l{multitouch/knobs}{Multi-Touch Knobs}
+ \o \l{multitouch/pinchzoom}{Pinch Zoom}
+ \endlist
+*/
+
+/*!
+ \page examples-gestures.html
+ \title Gestures Examples
+
+ \previouspage Multi-Touch Examples
+ \contentspage Qt Examples
+ \nextpage D-Bus Examples
+
+ The API of the gesture framework is not yet finalized and
+ still subject to change.
+
+ \list
+ \o \l{gestures/imagegestures}{Image Gestures}
+ \endlist
+*/
+
+/*!
+ \page examples-dbus.html
+ \title D-Bus Examples
+
+ \previouspage Gestures Examples
+ \contentspage Qt Examples
+ \nextpage Qt for Embedded Linux Examples
+
+ \list
+ \o \l{dbus/dbus-chat}{Chat}
+ \o \l{dbus/complexpingpong}{Complex Ping Pong}
+ \o \l{dbus/listnames}{List Names}
+ \o \l{dbus/pingpong}{Ping Pong}
+ \o \l{dbus/remotecontrolledcar}{Remote Controlled Car}
+ \endlist
+
+ Examples marked with an asterisk (*) are fully documented.
+*/
+
+/*!
+ \page examples-embeddedlinux.html
+ \title Qt for Embedded Linux Examples
+
+ \previouspage D-Bus Examples
+ \contentspage Qt Examples
+ \nextpage ActiveQt Examples
+
+ \image qt-embedded-examples.png QtEmbedded
+
+ These examples show how to take advantage of features specifically designed
+ for use on systems with limited resources, specialized hardware, and small
+ screens.
+
+ \list
+ \o \l{qws/svgalib}{Accelerated Graphics Driver}\raisedaster
+ \o \l{qws/dbscreen}{Double Buffered Graphics Driver}\raisedaster
+ \o \l{qws/mousecalibration}{Mouse Calibration}\raisedaster
+ \o \l{qws/simpledecoration}{Simple Decoration}\raisedaster
+ \endlist
+*/
+
+/*!
+ \page examples-activeqt.html
+ \title ActiveQt Examples
+
+ \previouspage Qt for Embedded Linux Examples
+ \contentspage Qt Examples
+ \nextpage Qt Quarterly
+
+ \image activeqt-examples.png ActiveQt
+
+ \list
+ \o \l{activeqt/comapp}{COM App}\raisedaster
+ \o \l{Dot Net Example (ActiveQt)}{Dot Net}\raisedaster
+ \o \l{activeqt/hierarchy}{Hierarchy}\raisedaster
+ \o \l{activeqt/menus}{Menus}\raisedaster
+ \o \l{activeqt/multiple}{Multiple}\raisedaster
+ \o \l{activeqt/opengl}{OpenGL}\raisedaster
+ \o \l{activeqt/qutlook}{Qutlook}\raisedaster
+ \o \l{activeqt/simple}{Simple}\raisedaster
+ \o \l{activeqt/webbrowser}{Web Browser}\raisedaster
+ \o \l{activeqt/wrapper}{Wrapper}\raisedaster
+ \endlist
+*/
diff --git a/doc/src/getting-started/how-to-learn-qt.qdoc b/doc/src/getting-started/how-to-learn-qt.qdoc
new file mode 100644
index 000000000..9df6f1fe8
--- /dev/null
+++ b/doc/src/getting-started/how-to-learn-qt.qdoc
@@ -0,0 +1,128 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 how-to-learn-qt.html
+ \title How to Learn Qt
+ \brief Links to guides and resources for learning Qt.
+ \nextpage Tutorials
+
+ \section1 Getting Started
+
+ We assume that you already know C++ and will be using it for Qt
+ development. See the \l{Qt website} for more information about
+ using other programming languages with Qt.
+
+ If you want to program purely in C++, designing your interfaces
+ in code without the aid of any design tools, take a look at the
+ \l{Tutorials}. These are designed to get you into Qt programming,
+ with an emphasis on working code rather than being a tour of features.
+
+ If you want to design your user interfaces using a design tool, then
+ read at least the first few chapters of the \l{Qt Designer manual}.
+
+ By now you'll have produced some small working applications and have a
+ broad feel for Qt programming. You could start work on your own
+ projects straight away, but we recommend reading a couple of key
+ overviews to deepen your understanding of Qt: \l{Qt Object Model}
+ and \l{Signals and Slots}.
+
+ \beginfloatleft
+ \inlineimage qtdemo-small.png
+ \endfloat
+
+ \section1 Getting an Overview
+
+ At this point, we recommend looking at the
+ \l{All Overviews and HOWTOs}{overviews} and reading those that are
+ relevant to your projects. You may also find it useful to browse the
+ source code of the \l{Qt Examples}{examples} that have things in
+ common with your projects. You can also read Qt's source code since
+ this is supplied.
+
+ If you run the \l{Examples and Demos Launcher}, you'll see many of Qt's
+ widgets in action.
+
+ The \l{Qt Widget Gallery} also provides overviews of selected Qt
+ widgets in each of the styles used on various supported platforms.
+ \clearfloat
+
+ \section1 Books and Learning Materials
+
+ Qt comes with extensive documentation, with hypertext
+ cross-references throughout, so you can easily click your way to
+ whatever interests you. The part of the documentation that you'll
+ probably use the most is the \link index.html API
+ Reference\endlink. Each link provides a different way of
+ navigating the API Reference; try them all to see which work best
+ for you. You might also like to try \l{Qt Assistant}:
+ this tool is supplied with Qt and provides access to the entire
+ Qt API, and it provides a full text search facility.
+
+ There are also a growing number of books about Qt programming.
+ We recommend the official Qt book,
+ \l{http://www.amazon.com/gp/product/0132354160/ref=ase_trolltech/}{C++
+ GUI Programming with Qt 4, Second Edition} (ISBN 0-13-235416-0). This book
+ provides comprehensive coverage of Qt programming all the way
+ from "Hello Qt" to advanced features such as multithreading, 2D and
+ 3D graphics, networking, item view classes, and XML. (The first edition,
+ which is based on Qt 4.1, is available
+ \l{http://www.qtrac.eu/C++-GUI-Programming-with-Qt-4-1st-ed.zip}{online}.)
+
+ See \l{Books about Qt Programming} for a complete list of Qt books,
+ including translations to various languages.
+
+ Another valuable source of example code and explanations of Qt
+ features is the archive of articles from \l{Qt Quarterly}, a quarterly newsletter for users of Qt.
+
+ For documentation on specific Qt modules and other guides, refer to
+ \l{All Overviews and HOWTOs}.
+
+ \section1 Further Reading
+
+ Qt has an active and helpful user community who communicate using
+ the \l{Qt Mailing Lists}{qt-interest} mailing list, the \l{Qt Centre}
+ Web site, and a number of other community Web sites and Weblogs.
+ In addition, many Qt developers are active members of the
+ \l{KDE}{KDE community}.
+
+ Good luck, and have fun!
+*/
diff --git a/doc/src/getting-started/installation.qdoc b/doc/src/getting-started/installation.qdoc
new file mode 100644
index 000000000..beb4419c2
--- /dev/null
+++ b/doc/src/getting-started/installation.qdoc
@@ -0,0 +1,1028 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+\group installation
+\title Installation
+\brief Installing Qt on supported platforms.
+
+The installation procedure is different on each Qt platform.
+Please follow the instructions for your platform from the following list.
+
+\generatelist{related}
+*/
+
+/*! \page install-x11.html
+\title Installing Qt on X11 Platforms
+\ingroup installation
+\brief How to install Qt on platforms with X11.
+\previouspage Installation
+
+\note Qt for X11 has some requirements that are given in more detail
+in the \l{Qt for X11 Requirements} document.
+
+\list 1
+\o If you have the commercial edition of Qt, install your license
+ file as \c{$HOME/.qt-license}.
+
+ For the open source version you do not need a license file.
+
+\o Unpack the archive if you have not done so already. For example,
+ if you have the \c{qt-x11-opensource-desktop-%VERSION%.tar.gz}
+ package, type the following commands at a command line prompt:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 0
+
+ This creates the directory \c{/tmp/qt-x11-opensource-desktop-%VERSION%}
+ containing the files from the archive. We only support the GNU version of
+ the tar archiving utility. Note that on some systems it is called gtar.
+
+\o Building
+
+ To configure the Qt library for your machine type, run the
+ \c{./configure} script in the package directory.
+
+ By default, Qt is configured for installation in the
+ \c{/usr/local/Trolltech/Qt-%VERSION%} directory, but this can be
+ changed by using the \c{-prefix} option.
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 1
+
+ Type \c{./configure -help} to get a list of all available options.
+
+ To create the library and compile all the demos, examples, tools,
+ and tutorials, type:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 2
+
+ If \c{-prefix} is outside the build directory, you need to install
+ the library, demos, examples, tools, and tutorials in the appropriate
+ place. To do this, type:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 3
+
+ , as root if necessary.
+
+ Note that on some systems the make utility is named differently,
+ e.g. gmake. The configure script tells you which make utility to
+ use.
+
+ \bold{Note:} If you later need to reconfigure and rebuild Qt from the
+ same location, ensure that all traces of the previous configuration are
+ removed by entering the build directory and typing \c{make confclean}
+ before running \c configure again.
+
+\o Environment variables
+
+ In order to use Qt, some environment variables needs to be
+ extended.
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 4
+
+ This is done like this:
+
+ In \c{.profile} (if your shell is bash, ksh, zsh or sh), add the
+ following lines:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 5
+
+ In \c{.login} (in case your shell is csh or tcsh), add the following line:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 6
+
+ If you use a different shell, please modify your environment
+ variables accordingly.
+
+ For compilers that do not support rpath you must also extended the
+ \c LD_LIBRARY_PATH environment variable to include
+ \c{/usr/local/Trolltech/Qt-%VERSION%/lib}. On Linux with GCC this step
+ is not needed.
+
+\o That's all. Qt is now installed.
+
+ If you are new to Qt, we suggest that you take a look at the demos
+ and examples to see Qt in action. Run the Qt Examples and Demos
+ either by typing \c qtdemo on the command line or through the
+ desktop's Main menu.
+
+ You might also want to try the following links:
+
+ \list
+ \o \l{Configuring Qt}
+ \o \l{How to Learn Qt}
+ \o \l{Tutorials}
+ \o \l{Developer Zone}
+ \o \l{Deploying Qt Applications}
+ \endlist
+\endlist
+
+ We hope you will enjoy using Qt. Good luck!
+
+*/
+
+/*!
+\page install-win.html
+\title Installing Qt on Windows
+\ingroup installation
+\brief How to install Qt on Windows.
+\previouspage Installation
+
+\note Qt for Windows has some requirements that are given in more detail
+in the \l{Qt for Windows Requirements} document.
+
+\table
+\row \o \bold{Notes:}
+\list
+\o If you have obtained a binary package for this platform,
+consult the installation instructions provided instead of the ones in
+this document.
+\o \l{Open Source Versions of Qt} is not officially supported for use with
+any version of Visual Studio. Integration with Visual Studio is available
+as part of the \l{Qt Commercial Editions}.
+
+\endlist
+\endtable
+
+\list 1
+\o If you have the commercial edition of Qt, copy the license file
+ from your account on dist.trolltech.com into your home directory
+ (this may be known as the \c userprofile environment variable) and
+ rename it to \c{.qt-license}. This renaming process must be done
+ using a \e{command prompt} on Windows, \bold{not} with Windows Explorer.
+ For example on Windows 2000, \c{%USERPROFILE%} should be something
+ like \c{C:\Documents and Settings\username}
+
+ For the open source version you do not need a license file.
+
+\o Uncompress the files into the directory you want Qt installed;
+ e.g. \c{C:\Qt\%VERSION%}.
+
+ \note The install path must not contain any spaces or Windows specific
+ file system characters.
+
+\o Environment variables
+
+ In order to build and use Qt, the \c PATH environment variable needs to be
+ extended:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 7
+
+ This is done by adding \c{c:\Qt\%VERSION%\bin} to the \c PATH variable.
+
+ For newer versions of Windows, \c PATH can be extended through
+ the \menu{Control Panel|System|Advanced|Environment variables} menu.
+
+ You may also need to ensure that the locations of your compiler and
+ other build tools are listed in the \c PATH variable. This will depend
+ on your choice of software development environment.
+
+ \bold{Note}: If you don't use the configured shells, which is
+ available in the application menu, in the \l{Open Source Versions of Qt},
+ \c configure requires that \c sh.exe is not in the path
+ or that it is run from \c msys. This also goes for mingw32-make.
+
+\o Building
+
+ To configure the Qt library for your machine, type the following command
+ in a \bold{Visual Studio} command prompt:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 8
+
+ Type \c{configure -help} to get a list of all available options.
+
+ If you have multiple compilers installed, and want to build the Qt library
+ using a specific compiler, you must specify a \c qmake specification.
+ This is done by pasing \c{-platform <spec>} to configure; for example:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 9
+
+ In some cases you need to set up the compilation environment before running
+ configure in order to use the right compiler. For instance, you need to do this
+ if you have Visual Studio 2005 installed and want to compile Qt using the x64
+ compiler because the 32-bit and 64-bit compiler both use the same
+ \c qmake specification file.
+ This is usually done by selecting
+ \menu{Microsoft Visual Studio 2005|Visual Studio Tools|<Command Prompt>}
+ from the \gui Start menu.
+
+ The actual commands needed to build Qt depends on your development
+ system. For Microsoft Visual Studio to create the library and
+ compile all the demos, examples, tools and tutorials type:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 10
+
+ \note If you later need to reconfigure and rebuild Qt from the
+ same location, ensure that all traces of the previous configuration are
+ removed by entering the build directory and typing \c{nmake distclean}
+ before running \c configure again.
+
+\o That's all. Qt is now installed.
+
+ If you are new to Qt, we suggest that you take a look at the demos
+ and examples to see Qt in action. Run the Qt Examples and Demos
+ either by typing \c qtdemo on the command line or through the
+ desktop's Start menu.
+
+ You might also want to try the following links:
+
+ \list
+ \o \l{How to Learn Qt}
+ \o \l{Tutorials}
+ \o \l{Developer Zone}
+ \o \l{Deploying Qt Applications}
+ \endlist
+
+\endlist
+
+ We hope you will enjoy using Qt. Good luck!
+
+*/
+
+/*! \page install-mac.html
+\title Installing Qt on Mac OS X
+\ingroup installation
+\brief How to install Qt on Mac OS X.
+\previouspage Installation
+
+\note Qt for Mac OS X has some requirements that are given in more detail
+in the \l{Qt for Mac OS X Requirements} document.
+
+\bold{Note for the binary package}: If you have the binary package, simply double-click on the Qt.mpkg
+and follow the instructions to install Qt. You can later run the \c{uninstall-qt.py}
+script to uninstall the binary package. The script is located in /Developer/Tools and
+must be run as root.
+
+The following instructions describe how to install Qt from the source package.
+
+\list 1
+\o If you have the commercial edition of Qt, install your license
+ file as \c{$HOME/.qt-license}.
+
+ For the open source version you do not need a license file.
+
+\o Unpack the archive if you have not done so already. For example,
+ if you have the \c{qt-mac-opensource-desktop-%VERSION%.tar.gz}
+ package, type the following commands at a command line prompt:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 11
+
+ This creates the directory \c{/tmp/qt-mac-opensource-desktop-%VERSION%}
+ containing the files from the archive.
+
+\o Building
+
+ To configure the Qt library for your machine type, run the
+ \c{./configure} script in the package directory.
+
+ By default, Qt is configured for installation in the
+ \c{/usr/local/Trolltech/Qt-%VERSION%} directory, but this can be
+ changed by using the \c{-prefix} option.
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 12
+
+ Type \c{./configure -help} to get a list of all available options.
+
+ Note that you will need to specify \c{-universal} if you want to
+ build universal binaries, and also supply a path to the \c{-sdk}
+ option if your development machine has a PowerPC CPU. By default,
+ Qt is built as a framework, but you can built it as a set of
+ dynamic libraries (dylibs) by specifying the \c{-no-framework}
+ option.
+
+ Qt can also be configured to be built with debugging symbols. This
+ process is described in detail in the \l{Debugging Techniques}
+ document.
+
+ To create the library and compile all the demos, examples, tools,
+ and tutorials, type:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 13
+
+ If \c{-prefix} is outside the build directory, you need to install
+ the library, demos, examples, tools, and tutorials in the appropriate
+ place. To do this, type:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 14
+
+ as root, if neccessary (note that this requires that you have administrator access
+ to your machine).
+
+ There is a potential race condition when running make install with multiple
+ jobs. It is best to only run one make job (-j1) for the install.
+
+ \bold{Note:} If you later need to reconfigure and rebuild Qt from the
+ same location, ensure that all traces of the previous configuration are
+ removed by entering the build directory and typing \c{make confclean}
+ before running \c configure again.
+
+\o Environment variables
+
+ In order to use Qt, some environment variables need to be
+ extended.
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 15
+
+ This is done like this:
+
+ In \c{.profile} (if your shell is bash), add the following lines:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 16
+
+ In \c{.login} (in case your shell is csh or tcsh), add the following line:
+
+\snippet doc/src/snippets/code/doc_src_installation.qdoc 17
+
+ If you use a different shell, please modify your environment
+ variables accordingly.
+
+\o That's all. Qt is now installed.
+
+ If you are new to Qt, we suggest that you take a look at the demos
+ and examples to see Qt in action. Run the Qt Examples and Demos
+ either by typing \c qtdemo on the command line or through the
+ desktop's Start menu.
+
+ You might also want to try the following links:
+
+ \list
+ \o \l{How to Learn Qt}
+ \o \l{Tutorials}
+ \o \l{Developer Zone}
+ \o \l{Deploying Qt Applications}
+ \endlist
+\endlist
+
+ We hope you will enjoy using Qt. Good luck!
+
+*/
+
+/*! \page install-wince.html
+\title Installing Qt on Windows CE
+\ingroup installation
+\ingroup qtce
+\brief How to install Qt on Windows CE.
+\previouspage Installation
+
+\note Qt for Windows CE has some requirements that are given in more detail
+in the \l{Qt for Windows CE Requirements} document.
+
+\list 1
+ \o Uncompress the files into the directory you want to install Qt into;
+ e.g., \c{C:\Qt\%VERSION%}.
+
+ \note The install path must not contain any spaces.
+
+ \o Environment variables
+
+ In order to build and use Qt, the \c PATH environment variable needs
+ to be extended:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 18
+
+ This is done by adding \c{c:\Qt\%VERSION%\bin} to the \c PATH variable.
+
+ For newer versions of Windows, \c PATH can be extended through
+ "Control Panel->System->Advanced->Environment variables" and for
+ older versions by editing \c{c:\autoexec.bat}.
+
+ Make sure the enviroment variables for your compiler are set.
+ Visual Studio includes \c{vcvars32.bat} for that purpose - or simply
+ use the "Visual Studio Command Prompt" from the Start menu.
+
+ \o Configuring Qt
+
+ To configure Qt for Windows Mobile 5.0 for Pocket PC, type the
+ following:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 19
+
+ If you want to configure Qt for another platform or with other
+ options, type \c{configure -help} to get a list of all available
+ options. See the \c README file for the list of supported platforms.
+
+
+ \o Building Qt
+
+ Now, to build Qt you first have to update your \c PATH, \c INCLUDE
+ and \c LIB paths to point to the correct resources for your target
+ platforms. For a default installation of the Windows Mobile 5.0
+ Pocket PC SDK, this is done with the following commands:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 20
+
+ We provide a convenience script for this purpose, called \c{setcepaths}.
+ Simply type:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 21
+
+ Then to build Qt type:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 22
+
+ \o That's all. Qt is now installed.
+
+ To get started with Qt, you can check out the examples found in the
+ \c{examples} directory of your Qt installation. The documentation can
+ be found in \c{doc\html}.
+
+ \bold{Remember:} If you reconfigure Qt for a different platform,
+ make sure you start with a new clean console to get rid of the
+ platform dependent include directories.
+
+ The links below provide further information for using Qt:
+ \list
+ \o \l{How to Learn Qt}
+ \o \l{Tutorials}
+ \o \l{Developer Zone}
+ \o \l{Deploying Qt Applications}
+ \endlist
+
+ You might also want to try the following Windows CE specific links:
+ \list
+ \o \l{Windows CE - Introduction to using Qt}
+ \o \l{Windows CE - Working with Custom SDKs}
+ \o \l{Windows CE - Using shadow builds}
+ \o \l{Windows CE - Signing}
+ \endlist
+
+ Information on feature and performance tuning for embedded builds can
+ be found on the following pages:
+ \list
+ \o \l{Fine-Tuning Features in Qt}
+ \o \l{Qt Performance Tuning}
+ \endlist
+\endlist
+
+ We hope you will enjoy using Qt. Good luck!
+*/
+
+/*! \page install-Symbian-installer.html
+\title Installing Qt on the Symbian platform from a Binary Package
+\ingroup qtsymbian
+\brief How to install Qt on the Symbian platform from a binary package.
+
+\note Qt for the Symbian platform has some requirements that are given in more detail
+in the \l{Qt for the Symbian platform Requirements} document.
+
+\list 1
+
+ \o Install Qt
+
+ Run \c{qt-symbian-opensource-%VERSION%.exe} and follow the instructions.
+
+ \note Qt must be installed on the same drive as the Symbian SDK you are
+ using, and the install path must not contain any spaces.
+
+ \o Running Qt demos
+
+ We've included a subset of the Qt demos in this package for you
+ to try out. An excellent starting point is the "fluidlauncher"
+ demo. To run the demo on a real device, you first have to install
+ \c{qt.sis} and \c{fluidlauncher.sis} found in the Qt installation
+ directory. Also, check if the device needs additional
+ \l{Qt for the Symbian platform Requirements}{requirements}.
+ Begin by connecting your device via USB cable to a computer that has
+ the \l{http://www.nokia.com/pcsuite}{Nokia PC Suite} installed.
+ On the device, select "PC Suite mode". In Windows Explorer right click
+ on the \c{.sis} files, select "Install with Nokia Application Installer"
+ and follow the instructions.
+
+ To run the demos and examples on the emulator, you need to build them first.
+ Open the "Qt for the Symbian platform Command Prompt" from the Start menu and type:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 25
+
+ To run the demos on the emulator simply navigate to the directory of the demo
+ you want to see and run:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 27
+
+ For more information about building and running Qt programs on the
+Symbian platform,
+ see \l{The Symbian platform - Introduction to Qt}.
+
+ We hope you will enjoy using Qt.
+
+\endlist
+
+*/
+/*! \page install-Symbian.html
+\title Installing Qt on the Symbian platform
+\ingroup installation
+\ingroup qtsymbian
+\brief How to install Qt on the Symbian platform.
+
+\note Qt for the Symbian platform has some requirements that are given in more detail
+in the \l{Qt for the Symbian platform Requirements} document.
+
+\note \bold {This document describes how to install and configure Qt for
+the Symbian platform from scratch.
+If you are using pre-built binaries, follow the instructions given in the
+\l{Installing Qt on the Symbian platform from a Binary Package} document.}
+
+\list 1
+
+ \o Setup the development environment
+
+ Make sure your Symbian development environment is correctly installed and
+ patched as explained in the \l{Qt for the Symbian platform Requirements} document.
+
+ After you have finished the Symbian development environment setup, it is good
+ to verify that environment is functional for example by compiling one
+ of the pure Symbian examples for both emulator and HW. This can be done from
+ command prompt as follows:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 32
+
+ If all steps pass without errors your Symbian development environment is
+ very likely installed correctly.
+
+ \o Install Qt
+
+ Uncompress the \l{http://qt.nokia.com/downloads}{downloaded} source package into the
+ directory you want Qt installed, e.g. \c{C:\Qt\%VERSION%}.
+
+ \note Qt must be installed on the same drive as the Symbian SDK you are
+ using, and the install path must not contain any spaces.
+
+ \o Environment variables
+
+ In order to build and use Qt, the \c PATH environment variable needs
+ to be extended:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 18
+
+ This is done by adding \c{c:\Qt\%VERSION%\bin} to the \c PATH variable.
+
+ On Windows the PATH can be extended by navigating to
+ "Control Panel->System->Advanced->Environment variables".
+
+ In addition, you must configure the environment for use with the Symbian
+ emulator. This is done by locating the Carbide.c++ submenu on the Start
+ menu, and choosing "Configure environment for WINSCW command line".
+
+ If you are planning to use abld (the default build system that comes with the S60 SDK)
+ to build Qt, you will also need to set the following environment variable:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 33
+
+ This is not necessary for other applications, only when building Qt.
+
+ \o Configure Qt
+
+ To configure Qt for the Symbian platform, do:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 23
+ to build the tools using MinGW, and the libraries using abld.
+ or
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 31
+ to build the tools using MinGW, and the libraries using SBSv2.
+
+ SBSv2 (also known as \l{http://developer.symbian.org/wiki/index.php/Introduction_to_RAPTOR} {Raptor})
+ is a next-generation Symbian build system. SBSv2 is not officially
+ supported by any of the S60 SDKs currently available from Forum Nokia.
+
+ \o Build Qt
+
+ To build Qt for the emulator, type:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 24
+
+ To build Qt for the device, type:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 28
+
+ Congratulations, Qt is now ready to use.
+
+ \o Running Qt demos
+
+ We've included a subset of the Qt demos in this package for you
+ to try out. An excellent starting point is the "fluidlauncher"
+ demo. To run the demo on a real device, you first have to install
+ the Qt libraries on the device:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 29
+
+ \note You will need to supply certificate that allows installation
+ of binaries with "All -Tcb" capability to your device.
+
+ Similarly, install fluidlauncher to the device:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 30
+
+ This will create a self-signed \c fluidlauncher_armv5_urel.sis and
+ install it to your device.
+
+ To run the demos on the emulator simply navigate to the directory of the demo
+ you want to see and run:
+
+ \snippet doc/src/snippets/code/doc_src_installation.qdoc 27
+
+ For more information about building and running Qt programs on the
+ Symbian platform, see \l{The Symbian platform - Introduction to Qt}.
+
+ We hope you will enjoy using Qt.
+
+\endlist
+
+*/
+/*!
+ \page requirements.html
+ \title General Qt Requirements
+ \ingroup installation
+ \brief Outlines the general requirements and dependencies needed to install Qt.
+
+ This page describes the specific requirements of libraries and components on which
+ Qt depends. For information about installing Qt, see the \l{Installation} page.
+
+ For information about the platforms that Qt supports, see the \l{Supported Platforms}
+ page.
+
+ \section1 OpenSSL (version 0.9.7 or later)
+
+ Support for \l{SSL}{Secure Sockets Layer (SSL)} communication is provided by the
+ \l{OpenSSL Toolkit}, which must be obtained separately. More information about
+ enabling SSL support can be found in the \l{Secure Sockets Layer (SSL) Classes}
+ document.
+
+ \section1 Platform-Specific Requirements
+
+ Each platform has its own specific set of dependencies. Please see the relevant
+ page for more details about the components that are required to build and install
+ Qt on your platform.
+
+ \list
+ \o \l{Qt for Embedded Linux Requirements}
+ \o \l{Qt for Mac OS X Requirements}
+ \o \l{Qt for the Symbian platform Requirements}
+ \o \l{Qt for Windows CE Requirements}
+ \o \l{Qt for Windows Requirements}
+ \o \l{Qt for X11 Requirements}
+ \endlist
+*/
+
+/*!
+ \page requirements-win.html
+ \title Qt for Windows Requirements
+ \ingroup installation
+ \brief Setting up the Windows environment for Qt.
+ \previouspage General Qt Requirements
+
+ If you are using a binary version of Qt with Visual Studio 2005, you must
+ first install the Visual Studio Service Pack 1 available
+ \l{http://www.microsoft.com/downloads/details.aspx?FamilyId=BB4A75AB-E2D4-4C96-B39D-37BAF6B5B1DC&amp;displaylang=en}{here}
+ to avoid runtime conflicts.
+
+ If you are using a source code package of Qt, you must first install Perl so
+ that the syncqt script invoked by configure can be executed. You can download
+ this \l{http://www.activestate/downloads/}{here}.
+
+ To build Qt with Phonon on Windows, you require:
+
+ \list
+ \o Microsoft's DirectX Software Development Kit which can be
+ downloaded
+ \l{http://msdn2.microsoft.com/en-us/directx/aa937788.aspx}{here}, and
+ \o Microsoft's Windows Server 2003 R2 Platform SDK which is available
+ \l{http://www.microsoft.com/downloads/details.aspx?FamilyID=0baf2b35-c656-4969-ace8-e4c0c0716adb&amp;DisplayLang=en}{here}.
+ \endlist
+
+ \sa {Known Issues in %VERSION%}
+*/
+
+/*!
+ \page requirements-mac.html
+ \title Qt for Mac OS X Requirements
+ \ingroup installation
+ \brief Setting up the Mac OS X environment for Qt.
+ \previouspage General Qt Requirements
+
+ \sa {Known Issues in %VERSION%}
+*/
+
+/*!
+ \page requirements-x11.html
+ \title Qt for X11 Requirements
+ \ingroup installation
+ \brief Setting up the X11 environment for Qt.
+ \previouspage General Qt Requirements
+
+ \tableofcontents
+
+ \section1 QtGui Dependencies
+
+ \image x11_dependencies.png Qt for X11 Dependencies
+
+ \raw HTML
+ <style type="text/css" id="colorstyles">
+ #QtGuiColor { background-color: #98fd00; color: black }
+ #QtCoreColor { background-color: #9c9cff; color: black }
+ #DefaultColor { background-color: #f6f6dc; color: black }
+ #FreetypeColor { background-color: #e6e6fa; color: black }
+ #GLColor { background-color: #ffc0cb; color: black }
+ #PthreadColor { background-color: #bdb76b; color: black }
+ #OptionalColor { background-color: #cae1ff; color: black }
+ #SMColor { background-color: #c2fafa; color: black }
+ #MiscColor { background-color: #f0f9ff; color: black }
+ #GlibColor { background-color: #b3b3b3; color: black }
+ </style>
+ \endraw
+
+ The QtGui module and the QtCore module, which provides the non-GUI features required
+ by QtGui, depend on the libraries described in the following table. To build
+ Qt from its source code, you will also need to install the development
+ packages for these libraries for your system.
+
+ \table 90%
+ \header \o Name \o Library \o Notes \o Configuration options \o Minimum working version
+ \raw HTML
+ <tr id="OptionalColor">
+ <td> XRender </td><td> libXrender </td><td> X Rendering Extension; used for anti-aliasing</td>
+ <td><tt>-xrender</tt> or auto-detected</td><td>0.9.0</td>
+ </tr><tr id="OptionalColor">
+ <td> Xrandr </td><td> libXrandr </td><td> X Resize and Rotate Extension</td>
+ <td><tt>-xrandr</tt> or auto-detected</td><td>1.0.2</td>
+ </tr><tr id="OptionalColor">
+ <td> Xcursor </td><td> libXcursor </td><td> X Cursor Extension</td>
+ <td><tt>-xcursor</tt> or auto-detected</td><td>1.1.4</td>
+ </tr><tr id="OptionalColor">
+ <td> Xfixes </td><td> libXfixes </td><td> X Fixes Extension</td>
+ <td><tt>-xfixes</tt> or auto-detected</td><td>3.0.0</td>
+ </tr><tr id="OptionalColor">
+ <td> Xinerama </td><td> libXinerama </td><td> Multi-head support</td>
+ <td><tt>-xinerama</tt> or auto-detected</td><td>1.1.0</td>
+
+ </tr><tr id="OptionalColor">
+ <td> Fontconfig </td><td> libfontconfig </td><td> Font customization and configuration</td>
+ <td><tt>-fontconfig</tt> or auto-detected</td><td>2.1</td>
+ </tr><tr id="OptionalColor">
+ <td> FreeType </td><td> libfreetype </td><td> Font engine</td>
+ <td></td><td>2.1.3</td>
+
+ </tr><tr id="DefaultColor">
+ <td> Xi </td><td> libXi </td><td> X11 Input Extensions</td>
+ <td><tt>-xinput</tt> or auto-detected</td><td>1.3.0</td>
+ </tr><tr id="DefaultColor">
+ <td> Xt </td><td> libXt </td><td> Xt Intrinsics</td><td></td><td>0.99</td>
+ </tr><tr id="DefaultColor">
+ <td> Xext </td><td> libXext </td><td> X Extensions</td><td></td><td>6.4.3</td>
+ </tr><tr id="DefaultColor">
+ <td> X11 </td><td> libX11 </td><td> X11 Client-Side Library</td><td></td><td>6.2.1</td>
+
+ </tr><tr id="SMColor">
+ <td> SM </td><td> libSM </td><td> X Session Management</td>
+ <td><tt>-sm</tt> or auto-detected</td><td>6.0.4</td>
+ </tr><tr id="SMColor">
+ <td> ICE </td><td> libICE </td><td> Inter-Client Exchange</td>
+ <td><tt>-sm</tt> or auto-detected</td><td>6.3.5</td>
+
+ </tr><tr id="GlibColor">
+ <td> glib </td><td> libglib-2.0 </td><td> Common event loop handling</td>
+ <td><tt>-glib</tt> or auto-detected</td><td>2.8.3</td>
+ </tr><tr id="PthreadColor">
+ <td> pthread </td><td> libpthread </td><td> Multithreading</td>
+ <td></td><td>2.3.5</td>
+ </tr>
+ \endraw
+ \endtable
+
+ \note You must compile with XRender support to get alpha transparency
+ support for pixmaps and images.
+
+ Development packages for these libraries contain header files that are used
+ when building Qt from its source code. On Debian-based GNU/Linux systems,
+ for example, we recommend that you install the following development
+ packages:
+
+ \list
+ \o libfontconfig1-dev
+ \o libfreetype6-dev
+ \o libx11-dev
+ \o libxcursor-dev
+ \o libxext-dev
+ \o libxfixes-dev
+ \o libxft-dev
+ \o libxi-dev
+ \o libxrandr-dev
+ \o libxrender-dev
+ \endlist
+
+ Some of these packages depend on others in this list, so installing one
+ may cause others to be automatically installed. Other distributions may
+ provide system packages with similar names.
+
+ \section1 OpenGL Dependencies
+
+ The configure script will autodetect if OpenGL headers and libraries are
+ installed on your system, and if so, it will include the QtOpenGL module
+ in the Qt library.
+
+ If your OpenGL headers or libraries are placed in a non-standard directory,
+ you may need to change the \c QMAKE_INCDIR_OPENGL and/or
+ \c QMAKE_LIBDIR_OPENGL in the config file for your system.
+
+ The QGL documentation assumes that you are familiar with OpenGL
+ programming. If you're new to the subject a good starting point is
+ \l{http://www.opengl.org/}.
+
+ \section1 Phonon Dependencies
+
+ As described in the \l{Phonon Overview}, Phonon uses the GStreamer multimedia
+ framework as the backend for audio and video playback on X11. The minimum required
+ version of GStreamer is 0.10.
+
+ To build Phonon, you need the GStreamer library, base plugins, and development
+ files for your system. The package names for GStreamer vary between Linux
+ distributions; try searching for \c gstreamer or \c libgstreamer in your
+ distribution's package repository to find suitable packages.
+
+ \sa {Known Issues in %VERSION%}
+*/
+
+/*!
+ \page requirements-wince.html
+ \title Qt for Windows CE Requirements
+ \ingroup installation
+ \brief Setting up the Windows CE environment for Qt.
+ \previouspage General Qt Requirements
+
+ Qt is known to work with Visual Studio 2005/2008 and the following SDKs for
+ Windows CE development on Windows XP and Windows Vista:
+
+ \list
+ \o Windows CE 5.0 Standard SDK for ARM, X86, and MIPS
+ \o Windows CE 6.0 SDKs for ARM generated using the defaults found in
+ Platform Builder
+ \o Windows Mobile 5.0 (\e{Pocket PC}, \e{Smartphone} and
+ \e{Pocket PC with Phone} editions)
+ \o Windows Mobile 6.0 (\e{Standard}, \e{Classic} and
+ \e{Professional} editions)
+ \endlist
+
+ Below is a list of links to download the SDKs:
+
+ \list
+ \o \l{http://www.microsoft.com/downloads/details.aspx?familyid=fa1a3d66-3f61-4ddc-9510-ae450e2318c3&amp;displaylang=en}
+ {Windows CE 5 Standard SDK}
+ \o \l{http://www.microsoft.com/downloads/details.aspx?familyid=83A52AF2-F524-4EC5-9155-717CBE5D25ED&amp;displaylang=en}
+ {Windows Mobile 5 Pocket PC}
+ \o \l{http://www.microsoft.com/downloads/details.aspx?familyid=DC6C00CB-738A-4B97-8910-5CD29AB5F8D9&amp;displaylang=en}
+ {Windows Mobile 5 Smartphone}
+ \o \l{http://www.microsoft.com/downloads/details.aspx?familyid=06111A3A-A651-4745-88EF-3D48091A390B&amp;displaylang=en }
+ {Windows Mobile 6 Professional/Standard}
+ \endlist
+
+ \table
+ \row \bold{Note:}
+ \o
+ \list 1
+ \o Currently, there is only compile support for Windows CE 5.0
+ Standard SDK for SH-4.
+ \o There is currently no "out of the box" support for the
+ Windows CE Automotive or Portable Media SDKs from Microsoft.
+ \endlist
+ \endtable
+
+
+ Device manufacturers may prefer to make their own customized version of
+ Windows CE using Platform Builder. In order for Qt for Windows CE to
+ support a custom SDK, a build specification needs to be created. More
+ information on Windows CE Customization can be found
+ \l{Windows CE - Working with Custom SDKs}{here}.
+
+ \sa {Known Issues in %VERSION%}
+*/
+
+/*!
+ \page requirements-embedded-linux.html
+ \title Qt for Embedded Linux Requirements
+ \ingroup installation
+ \brief Setting up the Embedded Linux environment for Qt.
+ \previouspage General Qt Requirements
+
+ \sa {Known Issues in %VERSION%}
+
+ \section1 Building Qt for Embedded Linux with uclibc
+
+ If you intend to include the QtWebKit module in your Qt build then you should
+ use version \bold{uClibc 0.9.29 or greater} as that is the earliest version
+ with sufficient pthread support.
+
+ \section1 Memory Requirements
+
+ The memory and storage requirements for Qt for Embedded Linux depend on a
+ an variety of different factors, including the target architecture and the
+ features enabled in the Qt build.
+
+ The following table shows typical library sizes for the most common Qt
+ libraries on different architectures, built in release mode with different
+ feature profiles.
+
+ \table
+ \header \o{1,2} Architecture \o{1,2} Compiler \o{2,1} QtCore \o{2,1} QtGui \o{2,1} QtNetwork \o{2,1} QtWebKit
+ \header \o Minimal \o Normal \o Minimal \o Normal \o Minimal \o Normal \o Minimal \o Normal
+ \row \o linux-x86-g++ \o GCC 4.2.4 \o 1.7M \o 2.7M \o 3.3M \o 9.9M \o 653K \o 1.1M \o N/A \o 17M
+ \row \o linux-arm-g++ \o GCC 4.1.1 \o 1.9M \o 3.2M \o 4.1M \o 11M \o 507K \o 1.0M \o N/A \o 17M
+ \row \o linux-mips-g++ (MIPS32)
+ \o GCC 4.2.4 \o 2.0M \o 3.2M \o 4.5M \o 12M \o 505K \o 1003K \o N/A \o 21M
+ \endtable
+
+ Library sizes are given in the following units: K = 1024 bytes; M = 1024K.
+ QtWebKit is excluded from the minimal configuration.
+
+ The \l{Fine-Tuning Features in Qt} document covers the process of configuring
+ Qt builds to avoid the inclusion of unnecessary features.
+
+ \section1 Additional X11 Libraries for QVFb
+
+ The Virtual Framebuffer (QVFb) application requires the \c libxtst library
+ in addition to the libraries used to build Qt for X11. This library
+ enables the use of the Record extension to the X protocol to be used in
+ applications.
+*/
+
+/*!
+ \page requirements-symbian.html
+ \title Qt for the Symbian platform Requirements
+ \ingroup installation
+ \brief Setting up the Symbian platform environment for Qt.
+ \previouspage General Qt Requirements
+
+ Qt for the Symbian platform requires the following software installed on your development PC:
+ \list
+ \o \l{http://www.forum.nokia.com/main/resources/tools_and_sdks/carbide_cpp/}{Carbide.c++ v2.0.0 or higher}
+ \list
+ \o \bold{Note:} It may be necessary to update the Carbide compiler.
+ See \l{http://pepper.troll.no/s60prereleases/patches/}{here} for instructions how to check your
+ compiler version and how to patch it, if needed.
+ \endlist
+ \o \l{http://downloads.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.638-MSWin32-x86.msi}{ActivePerl v5.6.1 build 638}
+ \list
+ \o \bold{Note:} According to Symbian, version 5.6.1 build 638 is mandatory. Using later versions may result in unexplained errors.
+ \endlist
+ \o \l{http://www.forum.nokia.com/main/resources/tools_and_sdks/S60SDK/}{S60 Platform SDK 3rd Edition FP1 or higher}
+ \list
+ \o \bold{Note:} Users of \bold{S60 Platform SDK 3rd Edition FP1} also need special update. The update can be found
+ \l{http://pepper.troll.no/s60prereleases/patches/}{here}.
+ \endlist
+ \o \l{http://www.forum.nokia.com/main/resources/technologies/openc_cpp/}{Open C/C++ v1.6.0 or higher}.
+ Install this to all Symbian SDKs you plan to use Qt with.
+ \o Building Qt tools from scratch requires \l{http://www.mingw.org/}{MinGW 3.4.5 or higher}, or another windows compiler.
+ \list
+ \o \bold{Note:} This is not required if you are using pre-built binary package.
+ \endlist
+ \o Building Qt libraries requires \l{http://www.arm.com/products/DevTools/RVCT.html}{RVCT} 2.2 [build 686] or later,
+ which is not available free of charge.
+ \endlist
+
+ Running Qt on real device requires the following packages to be installed on your device.
+ The packages can be found in the Symbian SDK where you installed Open C/C++:
+ \list
+ \o \c{nokia_plugin\openc\s60opencsis\pips_s60_<version>.sis}
+ \o \c{nokia_plugin\openc\s60opencsis\openc_ssl_s60_<version>.sis}
+ \o \c{nokia_plugin\opencpp\s60opencppsis\stdcpp_s60_<version>.sis}
+ \endlist
+
+ We recommend you to take a look of \l{http://developer.symbian.org/wiki/index.php/Qt_Quick_Start}{Symbian Foundation - Qt Quick Start}
+ to get more information about how to setup the development environment.
+
+ \sa {Known Issues in %VERSION%}
+*/
diff --git a/doc/src/getting-started/known-issues.qdoc b/doc/src/getting-started/known-issues.qdoc
new file mode 100644
index 000000000..7ae6d340b
--- /dev/null
+++ b/doc/src/getting-started/known-issues.qdoc
@@ -0,0 +1,165 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 known-issues.html
+ \title Known Issues in %VERSION%
+ \ingroup platform-specific
+ \brief A summary of known issues in Qt %VERSION% at the time of release.
+
+ An up-to-date list of known issues with Qt %VERSION% can be found via the
+ \l{http://bugreports.qt.nokia.com/}{Qt Bug Tracker}.
+
+ For a list list of known bugs in Qt %VERSION%, see the \l{Task Tracker}
+ on the Qt website.
+
+ An overview of known issues may also be found at:
+ \l{http://qt.gitorious.org/qt/pages/Qt460KnownIssues}
+ {Known Issues Wiki}.
+
+ \section1 Installation Issues
+
+ \section2 Installing the Source Package on Unix systems
+
+ \list
+
+ \o If you download a Zip source package, you will need to convert
+ Windows-style line endings (CR/LF) to Unix-style line-endings (LF) when
+ you uncompress the package. To do this, give the "-a" option when you
+ run the "unzip' command.
+
+ \o If you fail to supply the "-a" option when unzipping the package, you
+ will see the following error message when you attempt to execute the
+ configure command:
+ "bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory"
+
+ \endlist
+
+ \section2 Installing on Mac OS X 10.6 "Snow Leopard"
+
+ \list
+
+ \o Performing a new install of the Qt 4.6 beta on Snow Leopard
+ triggers a bug in the installer that causes the install to fail.
+ Updating an existing Qt installation works fine.
+
+ \o There are two workarounds, either disable spotlight for the target
+ drive during the install, or do a custom install where you deselect
+ documentation and examples. Run the installer again as a full
+ install to get the documentation and examples installed.
+
+ \endlist
+
+ \section1 Issues with Third Party Software
+
+ \section2 X11
+
+ \list
+ \o There is a bug in the 169.xx NVIDIA drivers on certain GeForce 8 series
+ cards that is triggered by the OpenGL paint engine when using QPainter
+ on a QGLWidget to draw paths and polygons. Some other painting
+ operations that end up in the path fallback are affected as well. The
+ bug causes the whole X server to repeatedly hang for several seconds at
+ a time.
+ \o There is an issue with NVIDIA's 9xxx driver series on X11 that causes a
+ crash in cases where there are several \l{QGLContext}s and the extended
+ composition modes are used (the composition modes between and including
+ QPainter::CompositionMode_Multiply and
+ QPainter::CompositionMode_Exclusion). This affects the composition mode
+ demo in Qt 4.5, for example. The crash does not occur in newer versions
+ of the drivers.
+ \endlist
+
+ \section2 Windows
+
+ \list
+
+ \o When using version 6.14.11.6921 of the NVIDIA drivers for the GeForce
+ 6600 GT under Windows XP, Qt applications which use drag and drop will
+ display reduced size drag and drop icons when run alongside
+ applications that use OpenGL. This problem can be worked around by
+ reducing the level of graphics acceleration provided by the driver, or
+ by disabling hardware acceleration completely.
+
+ \o With NVIDIA GeForce 7950 GT (driver version 6.14.11.7824), a fullscreen
+ QGLWidget flickers when child widgets are shown/hidden. The workaround
+ for this is to use \l{QWidget::}{setGeometry()} with a width/height 1
+ pixel bigger than your geometry and call \l{QWidget::}{show()}.
+
+ \o A bug in the Firebird database can cause an application to crash when
+ \c{fbembed.dll} is unloaded. The bug is fixed in version 2.5.
+
+ \o On Windows 7, resizing windows is slower than on Vista/Xp. This is because
+ the gesture initialization process (required for native gesture support)
+ currently calls winId() on widgets, which causes whole widget hierarchies
+ to use native window handles. This slows down resizing.
+
+ \o Compile errors with Intel C++ Compiler.\br
+ There seems to be a bug in the Intel compiler with respect to
+ over-agressive inlining of code.
+ The problem will manifest itself during the link phase of QtGui where
+ it fails with the error that it cannot find QObjectData::~QObjectData().
+ See \l{http://bugreports.qt.nokia.com/browse/QTBUG-5145} for updates on this
+ bug.
+ Also, due to some bugs in WebKit, the QtScript and QtWebKit modules
+ will not compile.
+ See \l{http://bugreports.qt.nokia.com/browse/QTBUG-6297} for a
+ workaround for QtScript.
+
+ \endlist
+
+ \section2 Mac OS X
+
+ \list
+
+ \o If a sheet is opened for a given window, clicking the title bar of that
+ window will cause it to flash. This behavior has been reported to Apple
+ (bug number 5827676).
+
+ \endlist
+
+ \section2 Symbian
+
+ \list
+ \o Check known issues for Symbian at
+ \l{http://qt.gitorious.org/qt/pages/Qt460KnownIssues} {Known Issues Wiki}.
+ \endlist
+*/
diff --git a/doc/src/getting-started/tutorials.qdoc b/doc/src/getting-started/tutorials.qdoc
new file mode 100644
index 000000000..d007df70c
--- /dev/null
+++ b/doc/src/getting-started/tutorials.qdoc
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 tutorials.html
+ \title Tutorials
+
+ \contentspage How to Learn Qt
+ \nextpage Qt Examples
+
+ \brief Tutorials, guides and overviews to help you learn Qt.
+
+ \nextpage Qt Examples
+
+ A collection of tutorials and "walkthrough" guides are provided with Qt to
+ help new users get started with Qt development. These documents cover a
+ range of topics, from basic use of widgets to step-by-step tutorials that
+ show how an application is put together.
+
+ \table
+ \row
+ \o{2,1} \l{Widgets Tutorial}{\bold Widgets}
+ \o{2,1} \l{Address Book Tutorial}{\bold {Address Book}}
+ \row
+ \o \image widget-examples.png Widgets
+ \o
+ A beginner's guide to getting started with widgets and layouts to create
+ GUI applications.
+
+ \o \image addressbook-tutorial.png AddressBook
+ \o
+ A seven part guide to creating a fully-functioning address book
+ application. This tutorial is also available with
+ \l{Tutoriel "Carnet d'adresses"}{French explanation}.
+
+ \row
+ \o{2,1} \l{A Quick Start to Qt Designer}{\bold{Qt Designer}}
+ \o{2,1} \l{Qt Linguist Manual: Programmers#Tutorials}{\bold {Qt Linguist}}
+ \row
+ \o \image designer-examples.png QtDesigner
+ \o
+ A quick guide through \QD showing the basic steps to create a
+ form with this interactive tool.
+
+ \o \image linguist-examples.png QtLinguist
+ \o
+ A guided tour through the translations process, explaining the
+ tools provided for developers, translators and release managers.
+
+ \row
+ \o{2,1} \l{QTestLib Tutorial}{\bold QTestLib}
+ \o{2,1} \l{qmake Tutorial}{\bold qmake}
+ \row
+ \o{2,1}
+ This tutorial gives a short introduction to how to use some of the
+ features of Qt's unit-testing framework, QTestLib. It is divided into
+ four chapters.
+
+ \o{2,1}
+ This tutorial teaches you how to use \c qmake. We recommend that
+ you read the \l{qmake Manual}{qmake user guide} after completing
+ this tutorial.
+
+ \endtable
+*/
diff --git a/doc/src/graphicsview.qdoc b/doc/src/graphicsview.qdoc
deleted file mode 100644
index b1c6b6c82..000000000
--- a/doc/src/graphicsview.qdoc
+++ /dev/null
@@ -1,543 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page graphicsview.html
- \title The Graphics View Framework
- \ingroup architecture
- \ingroup multimedia
- \brief An overview of the Graphics View framework for interactive 2D
- graphics.
-
- \keyword Graphics View
- \keyword GraphicsView
- \keyword Graphics
- \keyword Canvas
- \since 4.2
-
- Graphics View provides a surface for managing and interacting with a large
- number of custom-made 2D graphical items, and a view widget for
- visualizing the items, with support for zooming and rotation.
-
- The framework includes an event propagation architecture that allows
- precise double-precision interaction capabilities for the items on the
- scene. Items can handle key events, mouse press, move, release and
- double click events, and they can also track mouse movement.
-
- Graphics View uses a BSP (Binary Space Partitioning) tree to provide very
- fast item discovery, and as a result of this, it can visualize large
- scenes in real-time, even with millions of items.
-
- Graphics View was introduced in Qt 4.2, replacing its predecessor,
- QCanvas. If you are porting from QCanvas, see \l{Porting to Graphics
- View}.
-
- Topics:
-
- \tableofcontents
-
- \section1 The Graphics View Architecture
-
- Graphics View provides an item-based approach to model-view programming,
- much like InterView's convenience classes QTableView, QTreeView and
- QListView. Several views can observe a single scene, and the scene
- contains items of varying geometric shapes.
-
- \section2 The Scene
-
- QGraphicsScene provides the Graphics View scene. The scene has the
- following responsibilities:
-
- \list
- \o Providing a fast interface for managing a large number of items
- \o Propagating events to each item
- \o Managing item state, such as selection and focus handling
- \o Providing untransformed rendering functionality; mainly for printing
- \endlist
-
- The scene serves as a container for QGraphicsItem objects. Items are
- added to the scene by calling QGraphicsScene::addItem(), and then
- retrieved by calling one of the many item discovery functions.
- QGraphicsScene::items() and its overloads return all items contained
- by or intersecting with a point, a rectangle, a polygon or a general
- vector path. QGraphicsScene::itemAt() returns the topmost item at a
- particular point. All item discovery functions return the items in
- descending stacking order (i.e., the first returned item is topmost,
- and the last item is bottom-most).
-
- \snippet doc/src/snippets/code/doc_src_graphicsview.qdoc 0
-
- QGraphicsScene's event propagation architecture schedules scene events
- for delivery to items, and also manages propagation between items. If
- the scene receives a mouse press event at a certain position, the
- scene passes the event on to whichever item is at that position.
-
- QGraphicsScene also manages certain item states, such as item
- selection and focus. You can select items on the scene by calling
- QGraphicsScene::setSelectionArea(), passing an arbitrary shape. This
- functionality is also used as a basis for rubberband selection in
- QGraphicsView. To get the list of all currently selected items, call
- QGraphicsScene::selectedItems(). Another state handled by
- QGraphicsScene is whether or not an item has keyboard input focus. You
- can set focus on an item by calling QGraphicsScene::setFocusItem() or
- QGraphicsItem::setFocus(), or get the current focus item by calling
- QGraphicsScene::focusItem().
-
- Finally, QGraphicsScene allows you to render parts of the scene into a
- paint device through the QGraphicsScene::render() function. You can
- read more about this in the Printing section later in this document.
-
- \section2 The View
-
- QGraphicsView provides the view widget, which visualizes the contents
- of a scene. You can attach several views to the same scene, to provide
- several viewports into the same data set. The view widget is a scroll
- area, and provides scroll bars for navigating through large scenes. To
- enable OpenGL support, you can set a QGLWidget as the viewport by
- calling QGraphicsView::setViewport().
-
- \snippet doc/src/snippets/code/doc_src_graphicsview.qdoc 1
-
- The view receives input events from the keyboard and mouse, and
- translates these to scene events (converting the coordinates used
- to scene coordinates where appropriate), before sending the events
- to the visualized scene.
-
- Using its transformation matrix, QGraphicsView::transform(), the view can
- \e transform the scene's coordinate system. This allows advanced
- navigation features such as zooming and rotation. For convenience,
- QGraphicsView also provides functions for translating between view and
- scene coordinates: QGraphicsView::mapToScene() and
- QGraphicsView::mapFromScene().
-
- \img graphicsview-view.png
-
- \section2 The Item
-
- QGraphicsItem is the base class for graphical items in a
- scene. Graphics View provides several standard items for typical
- shapes, such as rectangles (QGraphicsRectItem), ellipses
- (QGraphicsEllipseItem) and text items (QGraphicsTextItem), but the
- most powerful QGraphicsItem features are available when you write a
- custom item. Among other things, QGraphicsItem supports the following
- features:
-
- \list
- \o Mouse press, move, release and double click events, as well as mouse
- hover events, wheel events, and context menu events.
- \o Keyboard input focus, and key events
- \o Drag and drop
- \o Grouping, both through parent-child relationships, and with
- QGraphicsItemGroup
- \o Collision detection
- \endlist
-
- Items live in a local coordinate system, and like QGraphicsView, it
- also provides many functions for mapping coordinates between the item
- and the scene, and from item to item. Also, like QGraphicsView, it can
- transform its coordinate system using a matrix:
- QGraphicsItem::transform(). This is useful for rotating and scaling
- individual items.
-
- Items can contain other items (children). Parent items'
- transformations are inherited by all its children. Regardless of an
- item's accumulated transformation, though, all its functions (e.g.,
- QGraphicsItem::contains(), QGraphicsItem::boundingRect(),
- QGraphicsItem::collidesWith()) still operate in local coordinates.
-
- QGraphicsItem supports collision detection through the
- QGraphicsItem::shape() function, and QGraphicsItem::collidesWith(),
- which are both virtual functions. By returning your item's shape as a
- local coordinate QPainterPath from QGraphicsItem::shape(),
- QGraphicsItem will handle all collision detection for you. If you want
- to provide your own collision detection, however, you can reimplement
- QGraphicsItem::collidesWith().
-
- \img graphicsview-items.png
-
- \section1 The Graphics View Coordinate System
-
- Graphics View is based on the Cartesian coordinate system; items'
- position and geometry on the scene are represented by sets of two
- numbers: the x-coordinate, and the y-coordinate. When observing a scene
- using an untransformed view, one unit on the scene is represented by
- one pixel on the screen.
-
- \note The inverted Y-axis coordinate system (where \c y grows upwards)
- is unsupported as Graphics Views uses Qt's coordinate system.
-
- There are three effective coordinate systems in play in Graphics View:
- Item coordinates, scene coordinates, and view coordinates. To simplify
- your implementation, Graphics View provides convenience functions that
- allow you to map between the three coordinate systems.
-
- When rendering, Graphics View's scene coordinates correspond to
- QPainter's \e logical coordinates, and view coordinates are the same as
- \e device coordinates. In \l{The Coordinate System}, you can read about
- the relationship between logical coordinates and device coordinates.
-
- \img graphicsview-parentchild.png
-
- \section2 Item Coordinates
-
- Items live in their own local coordinate system. Their coordinates
- are usually centered around its center point (0, 0), and this is
- also the center for all transformations. Geometric primitives in the
- item coordinate system are often referred to as item points, item
- lines, or item rectangles.
-
- When creating a custom item, item coordinates are all you need to
- worry about; QGraphicsScene and QGraphicsView will perform all
- transformations for you. This makes it very easy to implement custom
- items. For example, if you receive a mouse press or a drag enter
- event, the event position is given in item coordinates. The
- QGraphicsItem::contains() virtual function, which returns true if a
- certain point is inside your item, and false otherwise, takes a
- point argument in item coordinates. Similarly, an item's bounding
- rect and shape are in item coordinates.
-
- At item's \e position is the coordinate of the item's center point
- in its parent's coordinate system; sometimes referred to as \e
- parent coordinates. The scene is in this sense regarded as all
- parent-less items' "parent". Top level items' position are in scene
- coordinates.
-
- Child coordinates are relative to the parent's coordinates. If the
- child is untransformed, the difference between a child coordinate
- and a parent coordinate is the same as the distance between the
- items in parent coordinates. For example: If an untransformed child
- item is positioned precisely in its parent's center point, then the
- two items' coordinate systems will be identical. If the child's
- position is (10, 0), however, the child's (0, 10) point will
- correspond to its parent's (10, 10) point.
-
- Because items' position and transformation are relative to the
- parent, child items' coordinates are unaffected by the parent's
- transformation, although the parent's transformation implicitly
- transforms the child. In the above example, even if the parent is
- rotated and scaled, the child's (0, 10) point will still correspond
- to the parent's (10, 10) point. Relative to the scene, however, the
- child will follow the parent's transformation and position. If the
- parent is scaled (2x, 2x), the child's position will be at scene
- coordinate (20, 0), and its (10, 0) point will correspond to the
- point (40, 0) on the scene.
-
- With QGraphicsItem::pos() being one of the few exceptions,
- QGraphicsItem's functions operate in item coordinates, regardless of
- the item, or any of its parents' transformation. For example, an
- item's bounding rect (i.e. QGraphicsItem::boundingRect()) is always
- given in item coordinates.
-
- \section2 Scene Coordinates
-
- The scene represents the base coordinate system for all its items.
- The scene coordinate system describes the position of each top-level
- item, and also forms the basis for all scene events delivered to the
- scene from the view. Each item on the scene has a scene position
- and bounding rectangle (QGraphicsItem::scenePos(),
- QGraphicsItem::sceneBoundingRect()), in addition to its local item
- pos and bounding rectangle. The scene position describes the item's
- position in scene coordinates, and its scene bounding rect forms the
- basis for how QGraphicsScene determines what areas of the scene have
- changed. Changes in the scene are communicated through the
- QGraphicsScene::changed() signal, and the argument is a list of
- scene rectangles.
-
- \section2 View Coordinates
-
- View coordinates are the coordinates of the widget. Each unit in
- view coordinates corresponds to one pixel. What's special about this
- coordinate system is that it is relative to the widget, or viewport,
- and unaffected by the observed scene. The top left corner of
- QGraphicsView's viewport is always (0, 0), and the bottom right
- corner is always (viewport width, viewport height). All mouse events
- and drag and drop events are originally received as view
- coordinates, and you need to map these coordinates to the scene in
- order to interact with items.
-
- \section2 Coordinate Mapping
-
- Often when dealing with items in a scene, it can be useful to map
- coordinates and arbitrary shapes from the scene to an item, from
- item to item, or from the view to the scene. For example, when you
- click your mouse in QGraphicsView's viewport, you can ask the scene
- what item is under the cursor by calling
- QGraphicsView::mapToScene(), followed by
- QGraphicsScene::itemAt(). If you want to know where in the viewport
- an item is located, you can call QGraphicsItem::mapToScene() on the
- item, then QGraphicsView::mapFromScene() on the view. Finally, if
- you use want to find what items are inside a view ellipse, you can
- pass a QPainterPath to mapToScene(), and then pass the mapped path
- to QGraphicsScene::items().
-
- You can map coordinates and shapes to and from and item's scene by
- calling QGraphicsItem::mapToScene() and
- QGraphicsItem::mapFromScene(). You can also map to an item's parent
- item by calling QGraphicsItem::mapToParent() and
- QGraphicsItem::mapFromParent(), or between items by calling
- QGraphicsItem::mapToItem() and QGraphicsItem::mapFromItem(). All
- mapping functions can map both points, rectangles, polygons and
- paths.
-
- The same mapping functions are available in the view, for mapping to
- and from the scene. QGraphicsView::mapFromScene() and
- QGraphicsView::mapToScene(). To map from a view to an item, you
- first map to the scene, and then map from the scene to the item.
-
- \section1 Key Features
-
- \section2 Zooming and rotating
-
- QGraphicsView supports the same affine transformations as QPainter
- does through QGraphicsView::setMatrix(). By applying a transformation
- to the view, you can easily add support for common navigation features
- such as zooming and rotating.
-
- Here is an example of how to implement zoom and rotate slots in a
- subclass of QGraphicsView:
-
- \snippet doc/src/snippets/code/doc_src_graphicsview.qdoc 2
-
- The slots could be connected to \l{QToolButton}{QToolButtons} with
- \l{QAbstractButton::autoRepeat}{autoRepeat} enabled.
-
- QGraphicsView keeps the center of the view aligned when you transform
- the view.
-
- See also the \l{Elastic Nodes Example}{Elastic Nodes} example for
- code that shows how to implement basic zooming features.
-
- \section2 Printing
-
- Graphics View provides single-line printing through its rendering
- functions, QGraphicsScene::render() and QGraphicsView::render(). The
- functions provide the same API: You can have the scene or the view
- render all or parts of their contents into any paint device by passing
- a QPainter to either of the rendering functions. This example shows
- how to print the whole scene into a full page, using QPrinter.
-
- \snippet doc/src/snippets/code/doc_src_graphicsview.qdoc 3
-
- The difference between the scene and view rendering functions is that
- one operates in scene coordinates, and the other in view coordinates.
- QGraphicsScene::render() is often preferred for printing whole
- segments of a scene untransformed, such as for plotting geometrical
- data, or for printing a text document. QGraphicsView::render(), on the
- other hand, is suitable for taking screenshots; its default behavior
- is to render the exact contents of the viewport using the provided
- painter.
-
- \snippet doc/src/snippets/code/doc_src_graphicsview.qdoc 4
-
- When the source and target areas' sizes do not match, the source
- contents are stretched to fit into the target area. By passing a
- Qt::AspectRatioMode to the rendering function you are using, you can
- choose to maintain or ignore the aspect ratio of the scene when the
- contents are stretched.
-
- \section2 Drag and Drop
-
- Because QGraphicsView inherits QWidget indirectly, it already provides
- the same drag and drop functionality that QWidget provides. In
- addition, as a convenience, the Graphics View framework provides drag
- and drop support for the scene, and for each and every item. As the
- view receives a drag, it translates the drag and drop events into a
- QGraphicsSceneDragDropEvent, which is then forwarded to the scene. The
- scene takes over scheduling of this event, and sends it to the first
- item under the mouse cursor that accepts drops.
-
- To start a drag from an item, create a QDrag object, passing a pointer
- to the widget that starts the drag. Items can be observed by many
- views at the same time, but only one view can start the drag. Drags
- are in most cases started as a result of pressing or moving the mouse,
- so in mousePressEvent() or mouseMoveEvent(), you can get the
- originating widget pointer from the event. For example:
-
- \snippet doc/src/snippets/code/doc_src_graphicsview.qdoc 5
-
- To intercept drag and drop events for the scene, you reimplement
- QGraphicsScene::dragEnterEvent() and whichever event handlers your
- particular scene needs, in a QGraphicsItem subclass. You can read more
- about drag and drop in Graphics View in the documentation for each of
- QGraphicsScene's event handlers.
-
- Items can enable drag and drop support by calling
- QGraphicsItem::setAcceptDrops(). To handle the incoming drag,
- reimplement QGraphicsItem::dragEnterEvent(),
- QGraphicsItem::dragMoveEvent(), QGraphicsItem::dragLeaveEvent(), and
- QGraphicsItem::dropEvent().
-
- See also the \l{Drag and Drop Robot Example}{Drag and Drop Robot} example
- for a demonstration of Graphics View's support for drag and drop
- operations.
-
- \section2 Cursors and Tooltips
-
- Like QWidget, QGraphicsItem also supports cursors
- (QGraphicsItem::setCursor()), and tooltips
- (QGraphicsItem::setToolTip()). The cursors and tooltips are activated
- by QGraphicsView as the mouse cursor enters the item's area (detected
- by calling QGraphicsItem::contains()).
-
- You can also set a default cursor directly on the view by calling
- QGraphicsView::setCursor().
-
- See also the \l{Drag and Drop Robot Example}{Drag and Drop Robot}
- example for code that implements tooltips and cursor shape handling.
-
- \section2 Animation
-
- Graphics View supports animation at several levels. You can easily
- assemble animation paths by associating a QGraphicsItemAnimation with
- your item. This allows timeline controlled animations that operate at
- a steady speed on all platforms (although the frame rate may vary
- depending on the platform's performance). QGraphicsItemAnimation
- allows you to create a path for an item's position, rotation, scale,
- shear and translation. The animation can be controlled by a QSlider,
- or more commonly by QTimeLine.
-
- Another option is to create a custom item that inherits from QObject
- and QGraphicsItem. The item can the set up its own timers, and control
- animations with incremental steps in QObject::timerEvent().
-
- A third option, which is mostly available for compatibility with
- QCanvas in Qt 3, is to \e advance the scene by calling
- QGraphicsScene::advance(), which in turn calls
- QGraphicsItem::advance().
-
- See also the \l{Drag and Drop Robot Example}{Drag and Drop Robot}
- example for an illustration of timeline-based animation techniques.
-
- \section2 OpenGL Rendering
-
- To enable OpenGL rendering, you simply set a new QGLWidget as the
- viewport of QGraphicsView by calling QGraphicsView::setViewport(). If
- you want OpenGL with antialiasing, you need OpenGL sample buffer
- support (see QGLFormat::sampleBuffers()).
-
- Example:
-
- \snippet doc/src/snippets/code/doc_src_graphicsview.qdoc 6
-
- \section2 Item Groups
-
- By making an item a child of another, you can achieve the most
- essential feature of item grouping: the items will move together, and
- all transformations are propagated from parent to child.
-
- In addition, QGraphicsItemGroup is a special item that combines child
- event handling with a useful interface for adding and removing items
- to and from a group. Adding an item to a QGraphicsItemGroup will keep
- the item's original position and transformation, whereas reparenting
- items in general will cause the child to reposition itself relative to
- its new parent. For convenience, you can create
- \l{QGraphicsItemGroup}s through the scene by calling
- QGraphicsScene::createItemGroup().
-
- \section2 Widgets and Layouts
-
- Qt 4.4 introduced support for geometry and layout-aware items through
- QGraphicsWidget. This special base item is similar to QWidget, but
- unlike QWidget, it doesn't inherit from QPaintDevice; rather from
- QGraphicsItem instead. This allows you to write complete widgets with
- events, signals & slots, size hints and policies, and you can also
- manage your widgets geometries in layouts through
- QGraphicsLinearLayout and QGraphicsGridLayout.
-
- \section3 QGraphicsWidget
-
- Building on top of QGraphicsItem's capabilities and lean footprint,
- QGraphicsWidget provides the best of both worlds: extra
- functionality from QWidget, such as the style, font, palette, layout
- direction, and its geometry, and resolution independence and
- transformation support from QGraphicsItem. Because Graphics View
- uses real coordinates instead of integers, QGraphicsWidget's
- geometry functions also operate on QRectF and QPointF. This also
- applies to frame rects, margins and spacing. With QGraphicsWidget
- it's not uncommon to specify contents margins of (0.5, 0.5, 0.5,
- 0.5), for example. You can create both subwidgets and "top-level"
- windows; in some cases you can now use Graphics View for advanced
- MDI applications.
-
- Some of QWidget's properties are supported, including window flags
- and attributes, but not all. You should refer to QGraphicsWidget's
- class documentation for a complete overview of what is and what is
- not supported. For example, you can create decorated windows by
- passing the Qt::Window window flag to QGraphicsWidget's constructor,
- but Graphics View currently doesn't support the Qt::Sheet and
- Qt::Drawer flags that are common on Mac OS X.
-
- The capabilities of QGraphicsWidget are expected to grow depending
- on community feedback.
-
- \section3 QGraphicsLayout
-
- QGraphicsLayout is part of a second-generation layout framework
- designed specifically for QGraphicsWidget. Its API is very similar
- to that of QLayout. You can manage widgets and sublayouts inside
- either QGraphicsLinearLayout and QGraphicsGridLayout. You can also
- easily write your own layout by subclassing QGraphicsLayout
- yourself, or add your own QGraphicsItem items to the layout by
- writing an adaptor subclass of QGraphicsLayoutItem.
-
- \section2 Embedded Widget Support
-
- Graphics View provides seamless support for embedding any widget
- into the scene. You can embed simple widgets, such as QLineEdit or
- QPushButton, complex widgets such as QTabWidget, and even complete
- main windows. To embed your widget to the scene, simply call
- QGraphicsScene::addWidget(), or create an instance of
- QGraphicsProxyWidget to embed your widget manually.
-
- Through QGraphicsProxyWidget, Graphics View is able to deeply
- integrate the client widget features including its cursors,
- tooltips, mouse, tablet and keyboard events, child widgets,
- animations, pop-ups (e.g., QComboBox or QCompleter), and the widget's
- input focus and activation. QGraphicsProxyWidget even integrates the
- embedded widget's tab order so that you can tab in and out of
- embedded widgets. You can even embed a new QGraphicsView into your
- scene to provide complex nested scenes.
-
- When transforming an embedded widget, Graphics View makes sure that
- the widget is transformed resolution independently, allowing the
- fonts and style to stay crisp when zoomed in. (Note that the effect
- of resolution independence depends on the style.)
-*/
diff --git a/doc/src/groups.qdoc b/doc/src/groups.qdoc
deleted file mode 100644
index 673eff56b..000000000
--- a/doc/src/groups.qdoc
+++ /dev/null
@@ -1,487 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \group advanced
- \title Advanced Widgets
- \ingroup groups
-
- \brief Advanced GUI widgets such as tab widgets and progress bars.
-
- These classes provide more complex user interface widgets (controls).
-
-*/
-
-/*!
- \group animation
- \ingroup groups
-
- \title Animation Framework
- \brief Classes for animations, states and transitions.
-
- These classes provide a framework for creating both simple and complex
- animations. \l{The Animation Framework} also provides states and animated
- transitions, making it easy to create animated stateful forms.
-*/
-
-/*!
- \group abstractwidgets
- \title Abstract Widget Classes
- \ingroup groups
-
- \brief Abstract widget classes usable through subclassing.
-
- These classes are abstract widgets; they are generally not usable in
- themselves, but provide functionality that can be used by inheriting
- these classes.
-
-*/
-
-/*!
- \group accessibility
- \title Accessibility Classes
- \ingroup groups
- \ingroup topics
-
- \brief Classes that provide support for accessibility.
-
- Accessible applications are able to be used by users who cannot use
- conventional means of interaction. These classes provide support for
- accessible applications.
-
-*/
-
-/*!
- \group appearance
- \title Widget Appearance and Style
- \ingroup groups
-
- \brief Appearance customization with styles, fonts, colors etc.
-
- These classes are used to customize an application's appearance and
- style.
-
-*/
-
-/*!
- \group application
- \title Main Window and Related Classes
- \ingroup groups
-
- \brief Everything you need for a typical modern main application window,
- including menus, toolbars, workspace, etc.
-
- These classes provide everything you need for a typical modern main
- application window, like the main window itself, menu and tool bars,
- a status bar, etc.
-
-*/
-
-
-/*!
- \group basicwidgets
- \title Basic Widgets
- \ingroup groups
-
- \brief Basic GUI widgets such as buttons, comboboxes and scroll bars.
-
- These basic widgets (controls) are designed for direct use.
- There are also some \l{Abstract Widget Classes} that are designed for
- subclassing, and some more complex \l{Advanced Widgets}.
-
-*/
-
-
-/*!
- \group database
- \title Database Classes
- \ingroup groups
-
- \brief Database related classes, e.g. for SQL databases.
-
- These classes provide access to SQL databases.
-*/
-
-
-/*!
- \group dialogs
- \title Standard Dialog Classes
- \ingroup groups
-
- \brief Ready-made dialogs for file, font, color selection and more.
-
- These classes are complex widgets, composed of simpler widgets; dialog
- boxes, generally.
-*/
-
-/*!
- \group desktop
- \title Desktop Environment Classes
- \ingroup groups
-
- \brief Classes for interacting with the user's desktop environment.
-
- These classes provide ways to interact with the user's desktop environment and
- take advantage of common services.
-*/
-
-/*!
- \group draganddrop
- \title Drag And Drop Classes
- \ingroup groups
-
- \brief Classes dealing with drag and drop and mime type encoding and decoding.
-
- These classes deal with drag and drop and the necessary mime type
- encoding and decoding. See also \link dnd.html Drag and Drop with
- Qt. \endlink
-*/
-
-/*!
- \group environment
- \title Environment Classes
- \ingroup groups
-
- \brief Classes providing various global services such as event handling,
- access to system settings and internationalization.
-
- These classes providing various global services to your application such as
- event handling, access to system settings, internationalization, etc.
-
-*/
-
-/*!
- \group events
- \title Event Classes
- \ingroup groups
-
- \brief Classes used to create and handle events.
-
- These classes are used to create and handle events.
-
- For more information see the \link object.html Object model\endlink
- and \link signalsandslots.html Signals and Slots\endlink.
-*/
-
-/*!
- \group geomanagement
- \title Layout Classes
- \ingroup groups
-
- \brief Classes handling automatic resizing and moving of widgets, for
- composing complex dialogs.
-
- These classes provide automatic geometry (layout) management of widgets.
-
-*/
-
-/*!
- \group graphicsview-api
- \title Graphics View Classes
- \ingroup groups
-
- \brief Classes in the Graphics View framework for interactive applications.
-
- These classes are provided by \l{The Graphics View Framework} for interactive
- applications and are part of a larger collection of classes related to
- \l{Multimedia, Graphics and Printing}.
-
- \note These classes are part of the \l{Open Source Versions of Qt} and
- \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial users.
-*/
-
-/*!
- \group helpsystem
- \title Help System
- \ingroup groups
-
- \brief Classes used to provide online-help for applications.
-
- \keyword help system
-
- These classes provide for all forms of online-help in your application,
- with three levels of detail:
-
- \list 1
- \o Tool Tips and Status Bar message - flyweight help, extremely brief,
- entirely integrated in the user interface, requiring little
- or no user interaction to invoke.
- \o What's This? - lightweight, but can be
- a three-paragraph explanation.
- \o Online Help - can encompass any amount of information,
- but is typically slower to call up, somewhat separated
- from the user's work, and often users feel that using online
- help is a digression from their real task.
- \endlist
-
-*/
-
-
-/*!
- \group io
- \title Input/Output and Networking
- \ingroup groups
-
- \brief Classes providing file input and output along with directory and
- network handling.
-
- These classes are used to handle input and output to and from external
- devices, processes, files etc. as well as manipulating files and directories.
-*/
-
-/*!
- \group misc
- \title Miscellaneous Classes
- \ingroup groups
-
- \brief Various other useful classes.
-
- These classes are useful classes not fitting into any other category.
-
-*/
-
-
-/*!
- \group model-view
- \title Model/View Classes
- \ingroup groups
-
- \brief Classes that use the model/view design pattern.
-
- These classes use the model/view design pattern in which the
- underlying data (in the model) is kept separate from the way the data
- is presented and manipulated by the user (in the view). See also
- \link model-view-programming.html Model/View Programming\endlink.
-
-*/
-
-/*!
- \group multimedia
- \title Multimedia, Graphics and Printing
- \ingroup groups
-
- \brief Classes that provide support for graphics (2D, and with OpenGL, 3D),
- image encoding, decoding, and manipulation, sound, animation,
- printing, etc.
-
- These classes provide support for graphics (2D, and with OpenGL, 3D),
- image encoding, decoding, and manipulation, sound, animation, printing
- etc.
-
- See also this introduction to the \link coordsys.html Qt
- coordinate system. \endlink
-
-*/
-
-/*!
- \group objectmodel
- \title Object Model
- \ingroup groups
-
- \brief The Qt GUI toolkit's underlying object model.
-
- These classes form the basis of the \l{Qt Object Model}.
-
-*/
-
-/*!
- \group organizers
- \title Organizers
- \ingroup groups
-
- \brief User interface organizers such as splitters, tab bars, button groups, etc.
-
- These classes are used to organize and group GUI primitives into more
- complex applications or dialogs.
-
-*/
-
-
-/*!
- \group plugins
- \title Plugin Classes
- \ingroup groups
-
- \brief Plugin related classes.
-
- These classes deal with shared libraries, (e.g. .so and DLL files),
- and with Qt plugins.
-
- See the \link plugins-howto.html plugins documentation\endlink.
-
- See also the \l{ActiveQt framework} for Windows.
-
-*/
-
-/*!
- \group qws
- \title Qt for Embedded Linux Classes
- \ingroup groups
-
- \ingroup qt-embedded-linux
- \brief Classes that are specific to Qt for Embedded Linux.
-
- These classes are relevant to \l{Qt for Embedded Linux} users.
-*/
-
-/*!
- \group ssl
- \title Secure Sockets Layer (SSL) Classes
- \ingroup groups
-
- \brief Classes for secure communication over network sockets.
- \keyword SSL
-
- The classes below provide support for secure network communication using
- the Secure Sockets Layer (SSL) protocol, using the \l{OpenSSL Toolkit} to
- perform encryption and protocol handling.
-
- See the \l{General Qt Requirements} page for information about the
- versions of OpenSSL that are known to work with Qt.
-
- \note Due to import and export restrictions in some parts of the world, we
- are unable to supply the OpenSSL Toolkit with Qt packages. Developers wishing
- to use SSL communication in their deployed applications should either ensure
- that their users have the appropriate libraries installed, or they should
- consult a suitably qualified legal professional to ensure that applications
- using code from the OpenSSL project are correctly certified for import
- and export in relevant regions of the world.
-
- When the QtNetwork module is built with SSL support, the library is linked
- against OpenSSL in a way that requires OpenSSL license compliance.
-*/
-
-/*!
- \group text
- \title Text Processing Classes
- \ingroup groups
- \ingroup text-processing
-
- \brief Classes for text processing. (See also \l{XML Classes}.)
-
- These classes are relevant to text processing. See also the
- \l{Rich Text Processing} overview and the
- \l{XML classes}.
-*/
-
-/*!
- \group thread
- \title Threading Classes
- \ingroup groups
-
- \brief Classes that provide threading support.
-
- These classes are relevant to threaded applications. See
- \l{Thread Support in Qt} for an overview of the features
- Qt provides to help with multithreaded programming.
-*/
-
-
-/*!
- \group time
- \title Date and Time Classes
- \ingroup groups
-
- \brief Classes for handling date and time.
-
- These classes provide system-independent date and time abstractions.
-
-*/
-
-/*!
- \group tools
- \title Non-GUI Classes
- \ingroup groups
-
- \brief Collection classes such as list, queue, stack and string, along
- with other classes that can be used without needing QApplication.
-
- The non-GUI classes are general-purpose collection and string classes
- that may be used independently of the GUI classes.
-
- In particular, these classes do not depend on QApplication at all,
- and so can be used in non-GUI programs.
-
-*/
-
-/*!
- \group xml-tools
- \title XML Classes
- \ingroup groups
-
- \brief Classes that support XML, via, for example DOM and SAX.
-
- These classes are relevant to XML users.
-*/
-
-/*!
- \group script
- \title Scripting Classes
- \ingroup groups
- \ingroup scripting
-
- \brief Qt Script-related classes and overviews.
-
- These classes are relevant to Qt Script users.
-*/
-
-/*!
- \group scripttools
- \title Script Tools
- \ingroup groups
- \ingroup scripting
-
- \brief Classes for managing and debugging scripts.
-
- These classes are relevant to developers who are working with Qt Script's
- debugging features.
-*/
-
-/*!
- \group statemachine
- \ingroup groups
-
- \title State Machine Classes
- \brief Classes for constructing and executing state graphs.
-
- These classes are provided by \l{The State Machine Framework} for creating
- event-driven state machines.
-*/
diff --git a/doc/src/guibooks.qdoc b/doc/src/guibooks.qdoc
deleted file mode 100644
index 3e897382e..000000000
--- a/doc/src/guibooks.qdoc
+++ /dev/null
@@ -1,121 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page guibooks.html
-
- \title Books about GUI Design
- \ingroup gui-programming
-
- This is not a comprehensive list -- there are many other books worth
- buying. Here we mention just a few user interface books that don't
- gather dust on our shelves.
-
- \bold{\l{http://www.amazon.com/gp/product/0132354160/ref=ase_trolltech/}{C++
- GUI Programming with Qt 4, Second Edition}}
- by Jasmin Blanchette and Mark
- Summerfield, ISBN 0-13-235416-0. This is the official Qt book written
- by two veteran Trolls. The first edition, which is based on Qt 4.1, is available
- \l{http://www.qtrac.eu/C++-GUI-Programming-with-Qt-4-1st-ed.zip}{online}.
-
- \bold{\l{http://www.amazon.com/exec/obidos/ASIN/0385267746/trolltech/t}{The Design of Everyday Things}}
- by Donald Norman, ISBN 0-38526774-6, is one of the classics of human
- interface design. Norman shows how badly something as simple as a
- kitchen stove can be designed, and everyone should read it who will
- design a dialog box, write an error message, or design just about
- anything else humans are supposed to use.
-
- \target fowler
- \bold{\l{http://www.amazon.com/exec/obidos/ASIN/0070592748/trolltech/t}{GUI Design Handbook}}
- by Susan Fowler, ISBN 0-07-059274-8, is an
- alphabetical dictionary of widgets and other user interface elements,
- with comprehensive coverage of each. Each chapter covers one widget
- or other element, contains the most important recommendation from the
- Macintosh, Windows and Motif style guides, notes about common
- problems, comparison with other widgets that can serve some of the
- same roles as this one, etc.
-
- \target Design Patterns
- \bold{\l{http://www.amazon.com/exec/obidos/ASIN/0201633612/103-8144203-3273444}
- {Design Patterns - Elements of Reusable Object-Oriented Software}}
- by Gamma, Helm, Johnson, and Vlissides, ISBN 0-201-63361-2, provides
- more information on the Model-View-Controller (MVC) paradigm, explaining
- MVC and its sub-patterns in detail.
-
- \bold{\l{http://www.amazon.com/exec/obidos/ASIN/0201622165/trolltech/t}{Macintosh
- Human Interface Guidelines}}, Second Edition, ISBN
- 0-201-62216-5, is worth buying for the \e {don't}s alone. Even
- if you're not writing Macintosh software, avoiding most of what it
- advises against will produce more easily comprehensible software.
- Doing what it tells you to do may also help. This book is now available
- \link http://developer.apple.com/techpubs/mac/HIGuidelines/HIGuidelines-2.html
- online\endlink and there is a
- \link http://developer.apple.com/techpubs/mac/HIGOS8Guide/thig-2.html Mac
- OS 8 addendum.\endlink
-
- \bold{\l{http://www.amazon.com/exec/obidos/ASIN/047159900X/trolltech/t}{The
- Microsoft Windows User Experience}}, ISBN 1-55615-679-0,
- is Microsoft's look and feel bible. Indispensable for everyone who
- has customers that worship Microsoft, and it's quite good, too.
- It is also available
- \link http://msdn.microsoft.com/library/en-us/dnwue/html/welcome.asp online\endlink.
-
- \bold{\l{http://www.amazon.com/exec/obidos/ASIN/047159900X/trolltech/t}{The Icon Book}}
- by William Horton, ISBN 0-471-59900-X, is perhaps the only thorough
- coverage of icons and icon use in software. In order for icons to be
- successful, people must be able to do four things with them: decode,
- recognize, find and activate them. This book explains these goals
- from scratch and how to reach them, both with single icons and icon
- families. Some 500 examples are scattered throughout the text.
-
-
- \section1 Buying these Books from Amazon.com
-
- These books are made available in association with Amazon.com, our
- favorite online bookstore. Here is more information about
- \link http://www.amazon.com/exec/obidos/subst/help/shipping-policy.html/t
- Amazon.com's shipping options\endlink and its
- \link http://www.amazon.com/exec/obidos/subst/help/desk.html/t
- customer service.\endlink When you buy a book by following one of these
- links, Amazon.com gives about 15% of the purchase price to
- \link http://www.amnesty.org/ Amnesty International.\endlink
-
-*/
diff --git a/doc/src/how-to-learn-qt.qdoc b/doc/src/how-to-learn-qt.qdoc
deleted file mode 100644
index ee235093c..000000000
--- a/doc/src/how-to-learn-qt.qdoc
+++ /dev/null
@@ -1,115 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page how-to-learn-qt.html
- \brief Links to guides and resources for learning Qt.
- \title How to Learn Qt
- \ingroup howto
-
- We assume that you already know C++ and will be using it for Qt
- development. See the \l{Qt website} for more information about
- using other programming languages with Qt.
-
- The best way to learn Qt is to read the official Qt book,
- \l{http://www.amazon.com/gp/product/0132354160/ref=ase_trolltech/}{C++
- GUI Programming with Qt 4, Second Edition} (ISBN 0-13-235416-0). This book
- provides comprehensive coverage of Qt programming all the way
- from "Hello Qt" to advanced features such as multithreading, 2D and
- 3D graphics, networking, item view classes, and XML. (The first edition,
- which is based on Qt 4.1, is available
- \l{http://www.qtrac.eu/C++-GUI-Programming-with-Qt-4-1st-ed.zip}{online}.)
-
- If you want to program purely in C++, designing your interfaces
- in code without the aid of any design tools, take a look at the
- \l{Tutorials}. These are designed to get you into Qt programming,
- with an emphasis on working code rather than being a tour of features.
-
- If you want to design your user interfaces using a design tool, then
- read at least the first few chapters of the \l{Qt Designer manual}.
-
- By now you'll have produced some small working applications and have a
- broad feel for Qt programming. You could start work on your own
- projects straight away, but we recommend reading a couple of key
- overviews to deepen your understanding of Qt: \l{Qt Object Model}
- and \l{Signals and Slots}.
-
- At this point, we recommend looking at the
- \l{All Overviews and HOWTOs}{overviews} and reading those that are
- relevant to your projects. You may also find it useful to browse the
- source code of the \l{Qt Examples}{examples} that have things in
- common with your projects. You can also read Qt's source code since
- this is supplied.
-
- \table
- \row \o \inlineimage qtdemo-small.png
- \o \bold{Getting an Overview}
-
- If you run the \l{Examples and Demos Launcher}, you'll see many of Qt's
- widgets in action.
-
- The \l{Qt Widget Gallery} also provides overviews of selected Qt
- widgets in each of the styles used on various supported platforms.
- \endtable
-
- Qt comes with extensive documentation, with hypertext
- cross-references throughout, so you can easily click your way to
- whatever interests you. The part of the documentation that you'll
- probably use the most is the \link index.html API
- Reference\endlink. Each link provides a different way of
- navigating the API Reference; try them all to see which work best
- for you. You might also like to try \l{Qt Assistant}:
- this tool is supplied with Qt and provides access to the entire
- Qt API, and it provides a full text search facility.
-
- There are also a growing number of books about Qt programming; see
- \l{Books about Qt Programming} for a complete list of Qt books,
- including translations to various languages.
-
- Another valuable source of example code and explanations of Qt
- features is the archive of articles from \l {http://qt.nokia.com/doc/qq}
- {Qt Quarterly}, a quarterly newsletter for users of Qt.
-
- For documentation on specific Qt modules and other guides, refer to
- \l{All Overviews and HOWTOs}.
-
- Good luck, and have fun!
-*/
diff --git a/doc/src/howtos/HWacceleration.qdoc b/doc/src/howtos/HWacceleration.qdoc
new file mode 100644
index 000000000..80db74083
--- /dev/null
+++ b/doc/src/howtos/HWacceleration.qdoc
@@ -0,0 +1,100 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 HWAcc_rendering.html
+ \title Using hardware acceleration on embedded platforms.
+
+ \ingroup best-practices
+
+ \section1 Abstract
+ This document describes how to use hardware acceleration for fast
+ rendering on embedded platforms supported by Qt. In short, it explains
+ how the graphics pipeline works. Since there might be differences to
+ how the APIs are being used on different embedded platforms, a table
+ links to documentation dedicated to platform specific documentation
+ for each supported hardware acceleration API.
+
+ \input platforms/emb-hardwareacceleration.qdocinc
+
+ \section1 Supported platforms
+ Since there might be differences to how the APIs are being used on
+ the different embedded platforms, this table provides you with links to
+ pages dedicated to platform specific documentation for each
+ supported hardware acceleration API. Click the API link for the
+ platform to go the correct documentation.
+
+ \table
+ \header
+ \o Operating System
+ \o {3,1} Hardware Acceleration Platform
+ \row
+ \o \bold {Windows CE}
+ \o \l {Qt for Windows CE and OpenGL ES}{OpenGL ES}
+ \o \l {Qt for Windows CE and OpenVG}{OpenVG}
+ \o
+ \row
+ \o \bold {Embedded Linux}
+ \o \l {Qt for Embedded Linux and OpenGL}{OpenGL ES}
+ \o \l {Qt for Embedded Linux and OpenVG}{OpenVG}
+ \o \l {Qt for Embedded Linux and DirectFB}{DirectFB}
+ \row
+ \o \bold {Symbian Platform}
+ \o {3,1} \e {There are currently no support for hardware
+ acceleration.}
+ \endtable
+\omit
+ \section1 Examples using hardware acceleration on embedded platforms.
+
+ \table
+ \header
+ \o Embedded Platform
+ \o Example
+ \row
+ \o Windows CE
+ \row
+ \o Embedded Linux
+ \endtable
+\endomit
+
+
+
+*/
diff --git a/doc/src/howtos/accelerators.qdoc b/doc/src/howtos/accelerators.qdoc
new file mode 100644
index 000000000..dd61c69a0
--- /dev/null
+++ b/doc/src/howtos/accelerators.qdoc
@@ -0,0 +1,138 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 accelerators.html
+ \title Standard Accelerator Keys
+
+ \ingroup best-practices
+
+ Applications invariably need to define accelerator keys for actions.
+ Qt fully supports accelerators, for example with \l Q3Accel::shortcutKey().
+
+ Here are Microsoft's recommendations for accelerator keys, with
+ comments about the Open Group's recommendations where they exist
+ and differ. For most commands, the Open Group either has no advice or
+ agrees with Microsoft.
+
+ The emboldened letter plus Alt is Microsoft's recommended choice, and
+ we recommend supporting it. For an Apply button, for example, we
+ recommend QAbstractButton::setText(\link QWidget::tr() tr \endlink("&Apply"));
+
+ If you have conflicting commands (e.g. About and Apply buttons in the
+ same dialog), you must decide for yourself.
+
+ \list
+ \i \bold{\underline{A}}bout
+ \i Always on \bold{\underline{T}}op
+ \i \bold{\underline{A}}pply
+ \i \bold{\underline{B}}ack
+ \i \bold{\underline{B}}rowse
+ \i \bold{\underline{C}}lose (CDE: Alt+F4; Alt+F4 is "close window" in Windows)
+ \i \bold{\underline{C}}opy (CDE: Ctrl+C, Ctrl+Insert)
+ \i \bold{\underline{C}}opy Here
+ \i Create \bold{\underline{S}}hortcut
+ \i Create \bold{\underline{S}}hortcut Here
+ \i Cu\bold{\underline{t}}
+ \i \bold{\underline{D}}elete
+ \i \bold{\underline{E}}dit
+ \i \bold{\underline{E}}xit (CDE: E\bold{\underline{x}}it)
+ \i \bold{\underline{E}}xplore
+ \i \bold{\underline{F}}ile
+ \i \bold{\underline{F}}ind
+ \i \bold{\underline{H}}elp
+ \i Help \bold{\underline{T}}opics
+ \i \bold{\underline{H}}ide
+ \i \bold{\underline{I}}nsert
+ \i Insert \bold{\underline{O}}bject
+ \i \bold{\underline{L}}ink Here
+ \i Ma\bold{\underline{x}}imize
+ \i Mi\bold{\underline{n}}imize
+ \i \bold{\underline{M}}ove
+ \i \bold{\underline{M}}ove Here
+ \i \bold{\underline{N}}ew
+ \i \bold{\underline{N}}ext
+ \i \bold{\underline{N}}o
+ \i \bold{\underline{O}}pen
+ \i Open \bold{\underline{W}}ith
+ \i Page Set\bold{\underline{u}}p
+ \i \bold{\underline{P}}aste
+ \i Paste \bold{\underline{L}}ink
+ \i Paste \bold{\underline{S}}hortcut
+ \i Paste \bold{\underline{S}}pecial
+ \i \bold{\underline{P}}ause
+ \i \bold{\underline{P}}lay
+ \i \bold{\underline{P}}rint
+ \i \bold{\underline{P}}rint Here
+ \i P\bold{\underline{r}}operties
+ \i \bold{\underline{Q}}uick View
+ \i \bold{\underline{R}}edo (CDE: Ctrl+Y, Shift+Alt+Backspace)
+ \i \bold{\underline{R}}epeat
+ \i \bold{\underline{R}}estore
+ \i \bold{\underline{R}}esume
+ \i \bold{\underline{R}}etry
+ \i \bold{\underline{R}}un
+ \i \bold{\underline{S}}ave
+ \i Save \bold{\underline{A}}s
+ \i Select \bold{\underline{A}}ll
+ \i Se\bold{\underline{n}}d To
+ \i \bold{\underline{S}}how
+ \i \bold{\underline{S}}ize
+ \i S\bold{\underline{p}}lit
+ \i \bold{\underline{S}}top
+ \i \bold{\underline{U}}ndo (CDE: Ctrl+Z or Alt+Backspace)
+ \i \bold{\underline{V}}iew
+ \i \bold{\underline{W}}hat's This?
+ \i \bold{\underline{W}}indow
+ \i \bold{\underline{Y}}es
+ \endlist
+
+ There are also a lot of other keys and actions (that use other
+ modifier keys than Alt). See the Microsoft and The Open Group
+ documentation for details.
+
+ The
+ \l{http://www.amazon.com/exec/obidos/ASIN/0735605661/trolltech/t}{Microsoft book}
+ has ISBN 0735605661. The corresponding Open Group
+ book is very hard to find, rather expensive and we cannot recommend
+ it. However, if you really want it, ogpubs@opengroup.org might be able
+ to help. Ask them for ISBN 1859121047.
+*/
diff --git a/doc/src/howtos/appicon.qdoc b/doc/src/howtos/appicon.qdoc
new file mode 100644
index 000000000..4108c11cb
--- /dev/null
+++ b/doc/src/howtos/appicon.qdoc
@@ -0,0 +1,231 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 appicon.html
+ \title Setting the Application Icon
+
+ \ingroup best-practices
+
+ The application icon, typically displayed in the top-left corner of an
+ application's top-level windows, is set by calling the
+ QWidget::setWindowIcon() method on top-level widgets.
+
+ In order to change the icon of the executable application file
+ itself, as it is presented on the desktop (i.e., prior to
+ application execution), it is necessary to employ another,
+ platform-dependent technique.
+
+ \tableofcontents
+
+ \section1 Setting the Application Icon on Windows
+
+ First, create an ICO format bitmap file that contains the icon
+ image. This can be done with e.g. Microsoft Visual C++: Select
+ \menu{File|New}, then select the \menu{File} tab in the dialog
+ that appears, and choose \menu{Icon}. (Note that you do not need
+ to load your application into Visual C++; here we are only using
+ the icon editor.)
+
+ Store the ICO file in your application's source code directory,
+ for example, with the name \c myappico.ico. Then, create a text
+ file called, say, \c myapp.rc in which you put a single line of
+ text:
+
+ \snippet doc/src/snippets/code/doc_src_appicon.qdoc 0
+
+ Finally, assuming you are using \c qmake to generate your
+ makefiles, add this line to your \c myapp.pro file:
+
+ \snippet doc/src/snippets/code/doc_src_appicon.qdoc 1
+
+ Regenerate your makefile and your application. The \c .exe file
+ will now be represented with your icon in Explorer.
+
+ If you do not use \c qmake, the necessary steps are: first, run
+ the \c rc program on the \c .rc file, then link your application
+ with the resulting \c .res file.
+
+ \section1 Setting the Application Icon on Mac OS X
+
+ The application icon, typically displayed in the application dock
+ area, is set by calling QWidget::setWindowIcon() on a top-level
+ widget. It is possible that the program could appear in the
+ application dock area before the function call, in which case a
+ default icon will appear during the bouncing animation.
+
+ To ensure that the correct icon appears, both when the application is
+ being launched, and in the Finder, it is necessary to employ a
+ platform-dependent technique.
+
+ Although many programs can create icon files (\c .icns), the
+ recommended approach is to use the \e{Icon Composer} program
+ supplied by Apple (in the \c Developer/Application folder).
+ \e{Icon Composer} allows you to import several different sized
+ icons (for use in different contexts) as well as the masks that
+ go with them. Save the set of icons to a file in your project
+ directory.
+
+ If you are using qmake to generate your makefiles, you only need
+ to add a single line to your \c .pro project file. For example,
+ if the name of your icon file is \c{myapp.icns}, and your project
+ file is \c{myapp.pro}, add this line to \c{myapp.pro}:
+
+ \snippet doc/src/snippets/code/doc_src_appicon.qdoc 2
+
+ This will ensure that \c qmake puts your icons in the proper
+ place and creates an \c{Info.plist} entry for the icon.
+
+ If you do not use \c qmake, you must do the following manually:
+ \list 1
+ \i Create an \c Info.plist file for your application (using the
+ \c PropertyListEditor, found in \c Developer/Applications).
+ \i Associate your \c .icns record with the \c CFBundleIconFile record in the
+ \c Info.plist file (again, using the \c PropertyListEditor).
+ \i Copy the \c Info.plist file into your application bundle's \c Contents
+ directory.
+ \i Copy the \c .icns file into your application bundle's \c Contents/Resources
+ directory.
+ \endlist
+
+ \section1 Setting the Application Icon on Common Linux Desktops
+
+ In this section we briefly describe the issues involved in providing
+ icons for applications for two common Linux desktop environments:
+ \l{http://www.kde.org/}{KDE} and \l{http://www.gnome.org/}{GNOME}.
+ The core technology used to describe application icons
+ is the same for both desktops, and may also apply to others, but there
+ are details which are specific to each. The main source of information
+ on the standards used by these Linux desktops is
+ \l{http://www.freedesktop.org/}{freedesktop.org}. For information
+ on other Linux desktops please refer to the documentation for the
+ desktops you are interested in.
+
+ Often, users do not use executable files directly, but instead launch
+ applications by clicking icons on the desktop. These icons are
+ representations of "desktop entry files" that contain a description of
+ the application that includes information about its icon. Both desktop
+ environments are able to retrieve the information in these files, and
+ they use it to generate shortcuts to applications on the desktop, in
+ the start menu, and on the panel.
+
+ More information about desktop entry files can be found in the
+ \l{http://www.freedesktop.org/Standards/desktop-entry-spec}{Desktop Entry
+ Specification}.
+
+ Although desktop entry files can usefully encapsulate the application's details,
+ we still need to store the icons in the conventional location for each desktop
+ environment. A number of locations for icons are given in the
+ \l{http://www.freedesktop.org/Standards/icon-theme-spec}{Icon Theme
+ Specification}.
+
+ Although the path used to locate icons depends on the desktop in use,
+ and on its configuration, the directory structure beneath each of
+ these should follow the same pattern: subdirectories are arranged by
+ theme, icon size, and application type. Generally, application icons
+ are added to the hicolor theme, so a square application icon 32 pixels
+ in size would be stored in the \c hicolor/32x32/apps directory beneath
+ the icon path.
+
+ \section2 K Desktop Environment (KDE)
+
+ Application icons can be installed for use by all users, or on a per-user basis.
+ A user currently logged into their KDE desktop can discover these locations
+ by using \l{http://developer.kde.org/documentation/other/kde-config.html}{kde-config},
+ for example, by typing the following in a terminal window:
+
+ \snippet doc/src/snippets/code/doc_src_appicon.qdoc 3
+
+ Typically, the list of colon-separated paths printed to stdout includes the
+ user-specific icon path and the system-wide path. Beneath these
+ directories, it should be possible to locate and install icons according
+ to the conventions described in the
+ \l{http://www.freedesktop.org/Standards/icon-theme-spec}{Icon Theme Specification}.
+
+ If you are developing exclusively for KDE, you may wish to take
+ advantage of the \link
+ http://developer.kde.org/documentation/other/makefile_am_howto.html
+ KDE build system\endlink to configure your application. This ensures
+ that your icons are installed in the appropriate locations for KDE.
+
+ The KDE developer website is at \l{http://developer.kde.org/}.
+
+ \section2 GNOME
+
+ Application icons are stored within a standard system-wide
+ directory containing architecture-independent files. This
+ location can be determined by using \c gnome-config, for example
+ by typing the following in a terminal window:
+
+ \snippet doc/src/snippets/code/doc_src_appicon.qdoc 4
+
+ The path printed on stdout refers to a location that should contain a directory
+ called \c{pixmaps}; the directory structure within the \c pixmaps
+ directory is described in the \link
+ http://www.freedesktop.org/Standards/icon-theme-spec Icon Theme
+ Specification \endlink.
+
+ If you are developing exclusively for GNOME, you may wish to use
+ the standard set of \link
+ http://developer.gnome.org/tools/build.html GNU Build Tools\endlink,
+ also described in the relevant section of
+ the \link http://developer.gnome.org/doc/GGAD/ggad.html GTK+/Gnome
+ Application Development book\endlink. This ensures that your icons are
+ installed in the appropriate locations for GNOME.
+
+ The GNOME developer website is at \l{http://developer.gnome.org/}.
+
+ \section1 Setting the Application Icon on the Symbian platform
+
+ In order to set the application icon for Symbian platform applications, you need
+ an SVG-T icon. For information on how to create SVG-T compliant icons,
+ please refer to
+ \l{http://wiki.forum.nokia.com/index.php/How_to_create_application_icon(SVG)_in_S60_3rd_edition/}
+
+ Once the icon is available in the correct format and assuming you are
+ using \c qmake to generate your makefiles, you only need to add a single
+ line to your \c .pro project file. For example, if the name of your
+ icon file is \c{myapp.svg}, and your project file is \c{myapp.pro},
+ add this line to \c{myapp.pro}:
+
+ \snippet doc/src/snippets/code/doc_src_appicon.qdoc 5
+
+*/
diff --git a/doc/src/howtos/custom-types.qdoc b/doc/src/howtos/custom-types.qdoc
new file mode 100644
index 000000000..f6c188334
--- /dev/null
+++ b/doc/src/howtos/custom-types.qdoc
@@ -0,0 +1,179 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 custom-types.html
+ \title Creating Custom Qt Types
+ \brief How to create and register new types with Qt.
+
+ \ingroup best-practices
+
+ \tableofcontents
+
+ \section1 Overview
+
+ When creating user interfaces with Qt, particularly those with specialized controls and
+ features, developers sometimes need to create new data types that can be used alongside
+ or in place of Qt's existing set of value types.
+
+ Standard types such as QSize, QColor and QString can all be stored in QVariant objects,
+ used as the types of properties in QObject-based classes, and emitted in signal-slot
+ communication.
+
+ In this document, we take a custom type and describe how to integrate it into Qt's object
+ model so that it can be stored in the same way as standard Qt types. We then show how to
+ register the custom type to allow it to be used in signals and slots connections.
+
+ \section1 Creating a Custom Type
+
+ Before we begin, we need to ensure that the custom type we are creating meets all the
+ requirements imposed by QMetaType. In other words, it must provide:
+
+ \list
+ \o a public default constructor,
+ \o a public copy constructor, and
+ \o a public destructor.
+ \endlist
+
+ The following \c Message class definition includes these members:
+
+ \snippet examples/tools/customtype/message.h custom type definition
+
+ The class also provides a constructor for normal use and two public member functions
+ that are used to obtain the private data.
+
+ \section1 Declaring the Type with QMetaType
+
+ The \c Message class only needs a suitable implementation in order to be usable.
+ However, Qt's type system will not be able to understand how to store, retrieve
+ and serialize instances of this class without some assistance. For example, we
+ will be unable to store \c Message values in QVariant.
+
+ The class in Qt responsible for custom types is QMetaType. To make the type known
+ to this class, we invoke the Q_DECLARE_METATYPE() macro on the class in the header
+ file where it is defined:
+
+ \snippet examples/tools/customtype/message.h custom type meta-type declaration
+
+ This now makes it possible for \c Message values to be stored in QVariant objects
+ and retrieved later. See the \l{Custom Type Example} for code that demonstrates
+ this.
+
+ The Q_DECLARE_METATYPE() macro also makes it possible for these values to be used as
+ arguments to signals, but \e{only in direct signal-slot connections}.
+ To make the custom type generally usable with the signals and slots mechanism, we
+ need to perform some extra work.
+
+ \section1 Creating and Destroying Custom Objects
+
+ Although the declaration in the previous section makes the type available for use
+ in direct signal-slot connections, it cannot be used for queued signal-slot
+ connections, such as those that are made between objects in different threads.
+ This is because the meta-object system does not know how to handle creation and
+ destruction of objects of the custom type at run-time.
+
+ To enable creation of objects at run-time, call the qRegisterMetaType() template
+ function to register it with the meta-object system. This also makes the type
+ available for queued signal-slot communication as long as you call it before you
+ make the first connection that uses the type.
+
+ The \l{Queued Custom Type Example} declares a \c Block class which is registered
+ in the \c{main.cpp} file:
+
+ \snippet examples/threads/queuedcustomtype/main.cpp main start
+ \dots
+ \snippet examples/threads/queuedcustomtype/main.cpp register meta-type for queued communications
+ \dots
+ \snippet examples/threads/queuedcustomtype/main.cpp main finish
+
+ This type is later used in a signal-slot connection in the \c{window.cpp} file:
+
+ \snippet examples/threads/queuedcustomtype/window.cpp Window constructor start
+ \dots
+ \snippet examples/threads/queuedcustomtype/window.cpp connecting signal with custom type
+ \dots
+ \snippet examples/threads/queuedcustomtype/window.cpp Window constructor finish
+
+ If a type is used in a queued connection without being registered, a warning will be
+ printed at the console; for example:
+
+ \code
+ QObject::connect: Cannot queue arguments of type 'Block'
+ (Make sure 'Block' is registered using qRegisterMetaType().)
+ \endcode
+
+ \section1 Making the Type Printable
+
+ It is often quite useful to make a custom type printable for debugging purposes,
+ as in the following code:
+
+ \snippet examples/tools/customtype/main.cpp printing a custom type
+
+ This is achieved by creating a streaming operator for the type, which is often
+ defined in the header file for that type:
+
+ \snippet examples/tools/customtype/message.h custom type streaming operator
+
+ The implementation for the \c Message type in the \l{Custom Type Example}
+ goes to some effort to make the printable representation as readable as
+ possible:
+
+ \snippet examples/tools/customtype/message.cpp custom type streaming operator
+
+ The output sent to the debug stream can, of course, be made as simple or as
+ complicated as you like. Note that the value returned by this function is
+ the QDebug object itself, though this is often obtained by calling the
+ maybeSpace() member function of QDebug that pads out the stream with space
+ characters to make it more readable.
+
+ \section1 Further Reading
+
+ The Q_DECLARE_METATYPE() macro and qRegisterMetaType() function documentation
+ contain more detailed information about their uses and limitations.
+
+ The \l{Custom Type Example}{Custom Type},
+ \l{Custom Type Sending Example}{Custom Type Sending}
+ and \l{Queued Custom Type Example}{Queued Custom Type} examples show how to
+ implement a custom type with the features outlined in this document.
+
+ The \l{Debugging Techniques} document provides an overview of the debugging
+ mechanisms discussed above.
+*/
diff --git a/doc/src/howtos/exceptionsafety.qdoc b/doc/src/howtos/exceptionsafety.qdoc
new file mode 100644
index 000000000..2f561a056
--- /dev/null
+++ b/doc/src/howtos/exceptionsafety.qdoc
@@ -0,0 +1,156 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 exceptionsafety.html
+ \title Exception Safety
+ \ingroup best-practices
+ \brief A guide to exception safety in Qt.
+
+ \bold {Preliminary warning}: Exception safety is not feature complete!
+ Common cases should work, but classes might still leak or even crash.
+
+ Qt itself will not throw exceptions. Instead, error codes are used.
+ In addition, some classes have user visible error messages, for example
+ \l QIODevice::errorString() or \l QSqlQuery::lastError().
+ This has historical and practical reasons - turning on exceptions
+ can increase the library size by over 20%.
+
+ The following sections describe Qt's behavior if exception support is
+ enabled at compile time.
+
+ \tableofcontents
+
+ \section1 Exception safe modules
+
+ \section2 Containers
+
+ Qt's \l{container classes} are generally exception neutral. They pass any
+ exception that happens within their contained type \c T to the user
+ while keeping their internal state valid.
+
+ Example:
+
+ \code
+ QList<QString> list;
+ ...
+ try {
+ list.append("hello");
+ } catch (...) {
+ }
+ // list is safe to use - the exception did not affect it.
+ \endcode
+
+ Exceptions to that rule are containers for types that can throw during assignment
+ or copy constructions. For those types, functions that modify the container as well as
+ returning a value, are unsafe to use:
+
+ \code
+ MyType s = list.takeAt(2);
+ \endcode
+
+ If an exception occurs during the assignment of \c s, the value at index 2 is already
+ removed from the container, but hasn't been assigned to \c s yet. It is lost
+ without chance of recovery.
+
+ The correct way to write it:
+
+ \code
+ MyType s = list.at(2);
+ list.removeAt(2);
+ \endcode
+
+ If the assignment throws, the container still contains the value, no data loss occured.
+
+ Note that implicitly shared Qt classes will not throw in their assignment
+ operators or copy constructors, so the limitation above does not apply.
+
+ \section1 Out of Memory Handling
+
+ Most desktop operating systems overcommit memory. This means that \c malloc()
+ or \c{operator new} return a valid pointer, even though there is not enough
+ memory available at allocation time. On such systems, no exception of type
+ \c std::bad_alloc is thrown.
+
+ On all other operating systems, Qt will throw an exception of type std::bad_alloc
+ if any allocation fails. Allocations can fail if the system runs out of memory or
+ doesn't have enough continuous memory to allocate the requested size.
+
+ Exceptions to that rule are documented. As an example, \l QImage::create()
+ returns false if not enough memory exists instead of throwing an exception.
+
+ \section1 Recovering from exceptions
+
+ Currently, the only supported use case for recovering from exceptions thrown
+ within Qt (for example due to out of memory) is to exit the event loop and do
+ some cleanup before exiting the application.
+
+ Typical use case:
+
+ \code
+ QApplication app(argc, argv);
+ ...
+ try {
+ app.exec();
+ } catch (const std::bad_alloc &) {
+ // clean up here, e.g. save the session
+ // and close all config files.
+
+ return 0; // exit the application
+ }
+ \endcode
+
+ After an exception is thrown, the connection to the windowing server
+ might already be closed. It is not safe to call a GUI related function
+ after catching an exception.
+
+ \section1 Platform-Specific Exception Handling
+
+ \section2 The Symbian platform
+
+ The Symbian platform implements its own exception system that differs from the standard
+ C++ mechanism. When using Qt for the Symbian platform, and especially when writing code to
+ access Symbian functionality directly, it may be necessary to know about the underlying
+ implementation and how it interacts with Qt.
+
+ The \l{Exception Safety with Symbian} document shows how to use the facilities provided
+ by Qt to use exceptions as safely as possible.
+*/
diff --git a/doc/src/howtos/guibooks.qdoc b/doc/src/howtos/guibooks.qdoc
new file mode 100644
index 000000000..6e64c09aa
--- /dev/null
+++ b/doc/src/howtos/guibooks.qdoc
@@ -0,0 +1,122 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 guibooks.html
+ \title Books about GUI Design
+ \ingroup best-practices
+
+ This is not a comprehensive list -- there are many other books worth
+ buying. Here we mention just a few user interface books that don't
+ gather dust on our shelves.
+
+ \bold{\l{http://www.amazon.com/gp/product/0132354160/ref=ase_trolltech/}{C++
+ GUI Programming with Qt 4, Second Edition}}
+ by Jasmin Blanchette and Mark
+ Summerfield, ISBN 0-13-235416-0. This is the official Qt book written
+ by two veteran Trolls. The first edition, which is based on Qt 4.1, is
+ \l{http://www.qtrac.eu/C++-GUI-Programming-with-Qt-4-1st-ed.zip}{available online}.
+ The second edition, based on Qt 4.3, is
+ \l{http://www.informit.com/store/product.aspx?isbn=0132354160}{also available online}.
+
+ \bold{\l{http://www.amazon.com/exec/obidos/ASIN/0385267746/trolltech/t}{The Design of Everyday Things}}
+ by Donald Norman, ISBN 0-38526774-6, is one of the classics of human
+ interface design. Norman shows how badly something as simple as a
+ kitchen stove can be designed, and everyone should read it who will
+ design a dialog box, write an error message, or design just about
+ anything else humans are supposed to use.
+
+ \target fowler
+ \bold{\l{http://www.amazon.com/exec/obidos/ASIN/0070592748/trolltech/t}{GUI Design Handbook}}
+ by Susan Fowler, ISBN 0-07-059274-8, is an
+ alphabetical dictionary of widgets and other user interface elements,
+ with comprehensive coverage of each. Each chapter covers one widget
+ or other element, contains the most important recommendation from the
+ Macintosh, Windows and Motif style guides, notes about common
+ problems, comparison with other widgets that can serve some of the
+ same roles as this one, etc.
+
+ \target Design Patterns
+ \bold{\l{http://www.amazon.com/exec/obidos/ASIN/0201633612/103-8144203-3273444}
+ {Design Patterns - Elements of Reusable Object-Oriented Software}}
+ by Gamma, Helm, Johnson, and Vlissides, ISBN 0-201-63361-2, provides
+ more information on the Model-View-Controller (MVC) paradigm, explaining
+ MVC and its sub-patterns in detail.
+
+ \bold{\l{http://www.amazon.com/exec/obidos/ASIN/0201622165/trolltech/t}{Macintosh
+ Human Interface Guidelines}}, Second Edition, ISBN
+ 0-201-62216-5, is worth buying for the \e {don't}s alone. Even
+ if you're not writing Macintosh software, avoiding most of what it
+ advises against will produce more easily comprehensible software.
+ Doing what it tells you to do may also help. This book is now available
+ \link http://developer.apple.com/techpubs/mac/HIGuidelines/HIGuidelines-2.html
+ online\endlink and there is a
+ \link http://developer.apple.com/techpubs/mac/HIGOS8Guide/thig-2.html Mac
+ OS 8 addendum.\endlink
+
+ \bold{\l{http://www.amazon.com/exec/obidos/ASIN/047159900X/trolltech/t}{The
+ Microsoft Windows User Experience}}, ISBN 1-55615-679-0,
+ is Microsoft's look and feel bible. Indispensable for everyone who
+ has customers that worship Microsoft, and it's quite good, too.
+ It is also available
+ \link http://msdn.microsoft.com/library/en-us/dnwue/html/welcome.asp online\endlink.
+
+ \bold{\l{http://www.amazon.com/exec/obidos/ASIN/047159900X/trolltech/t}{The Icon Book}}
+ by William Horton, ISBN 0-471-59900-X, is perhaps the only thorough
+ coverage of icons and icon use in software. In order for icons to be
+ successful, people must be able to do four things with them: decode,
+ recognize, find and activate them. This book explains these goals
+ from scratch and how to reach them, both with single icons and icon
+ families. Some 500 examples are scattered throughout the text.
+
+
+ \section1 Buying these Books from Amazon.com
+
+ These books are made available in association with Amazon.com, our
+ favorite online bookstore. Here is more information about
+ \link http://www.amazon.com/exec/obidos/subst/help/shipping-policy.html/t
+ Amazon.com's shipping options\endlink and its
+ \link http://www.amazon.com/exec/obidos/subst/help/desk.html/t
+ customer service.\endlink When you buy a book by following one of these
+ links, Amazon.com gives about 15% of the purchase price to
+ \link http://www.amnesty.org/ Amnesty International.\endlink
+
+*/
diff --git a/doc/src/howtos/openvg.qdoc b/doc/src/howtos/openvg.qdoc
new file mode 100644
index 000000000..5de2e22a1
--- /dev/null
+++ b/doc/src/howtos/openvg.qdoc
@@ -0,0 +1,322 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 openvg.html
+ \title OpenVG Rendering in Qt
+ \since 4.6
+ \ingroup best-practices
+
+ \brief Efficient rendering on embedded devices with OpenVG
+
+ OpenVG is a standard API from the
+ \l{http://www.khronos.org/openvg}{Khronos Group} for accelerated
+ 2D vector graphics that is appearing in an increasing number of
+ embedded devices. The QtOpenVG plugin provides support for OpenVG
+ painting.
+
+ OpenVG is optimized for 2D vector operations, and closely matches
+ the functionality in QPainter. It can therefore be an excellent
+ substitute for the default raster-based QPaintEngine on hardware
+ that supports OpenVG.
+
+ \tableofcontents
+
+ \section1 Building Qt with OpenVG support
+
+ OpenVG support can be enabled by passing the \c{-openvg} option
+ to configure. It is assumed that the following qmake variables
+ are set to appropriate values in the qmake.conf file for your
+ platform:
+
+ \list
+ \o QMAKE_INCDIR_OPENVG
+ \o QMAKE_LIBDIR_OPENVG
+ \o QMAKE_LIBS_OPENVG
+ \endlist
+
+ Most OpenVG implementations are based on EGL, so the following
+ variables may also need to be set:
+
+ \list
+ \o QMAKE_INCDIR_EGL
+ \o QMAKE_LIBDIR_EGL
+ \o QMAKE_LIBS_EGL
+ \endlist
+
+ See \l{qmake Variable Reference} for more information on these variables.
+
+ Two kinds of OpenVG engines are currently supported: EGL based,
+ and engines built on top of OpenGL such as
+ \l{http://sourceforge.net/projects/shivavg}{ShivaVG}.
+ EGL based engines are preferred.
+
+ It is assumed that the EGL implementation has some way to turn a
+ QWidget::winId() into an EGL rendering surface with
+ \c{eglCreateWindowSurface()}. If this is not the case, then
+ modifications may be needed to the code under \c{src/gui/egl} and
+ \c{src/plugins/graphicssystems/openvg} to accomodate the EGL
+ implementation.
+
+ The ShivaVG graphics system under \c{src/plugins/graphicssystems/shivavg}
+ is an example of how to integrate a non-EGL implementation of
+ OpenVG into Qt. It is currently only supported with Qt/X11
+ and being an example only, the resulting screen output may not
+ be as good as with other OpenVG engines.
+
+ \section1 Using the OpenVG graphics system
+
+ Once the graphics system plugin has been built and installed,
+ applications can be run as follows to use the plugin:
+
+ \code
+ app -graphicssystem OpenVG
+ \endcode
+
+ If ShivaVG is being used, then substitute \c ShivaVG instead of
+ \c OpenVG in the line above.
+
+ If the plugin fails to load, try setting the \c QT_DEBUG_PLUGINS
+ environment variable to 1 and try again. Usually the plugin
+ cannot be loaded because Qt cannot locate it in the directory
+ \c{plugins/graphicssystems} within the Qt installation, or the
+ dynamic library path does not include the directory containing
+ the system's \c libOpenVG.so library.
+
+ \section1 Supported features
+
+ \section2 Context modes
+
+ The default configuration is "single-context" mode, where a single
+ EGLContext object is used for all drawing, regardless of the surface.
+ Multiple EGLSurfaces are created, one for each window surface or pixmap.
+ eglMakeCurrent() is called with the same EGLContext every time, but a
+ different EGLSurface.
+
+ Single-context mode is necessary for QPixmapData to be implemented in
+ terms of a VGImage. If single-context mode is not enabled, then QPixmapData
+ will use the fallback QRasterPixmapData implementation, which is less
+ efficient performance-wise.
+
+ Single-context mode can be disabled with the QVG_NO_SINGLE_CONTEXT define
+ if the OpenVG engine does not support one context with multiple surfaces.
+
+ \section2 Transformation matrices
+
+ All affine and projective transformation matrices are supported.
+
+ QVGPaintEngine will use the engine to accelerate affine transformation
+ matrices only. When a projective transformation matrix is used,
+ QVGPaintEngine will transform the coordinates before passing them
+ to the engine. This will probably incur a performance penalty.
+
+ Pixmaps and images are always transformed by the engine, because
+ OpenVG specifies that projective transformations must work for images.
+
+ It is recommended that client applications should avoid using projective
+ transformations for non-image elements in performance critical code.
+
+ \section2 Composition modes
+
+ The following composition modes are supported:
+
+ \list
+ \o QPainter::CompositionMode_SourceOver
+ \o QPainter::CompositionMode_DestinationOver
+ \o QPainter::CompositionMode_Source
+ \o QPainter::CompositionMode_SourceIn
+ \o QPainter::CompositionMode_DestinationIn
+ \o QPainter::CompositionMode_Plus
+ \o QPainter::CompositionMode_Multiply
+ \o QPainter::CompositionMode_Screen
+ \o QPainter::CompositionMode_Darken
+ \o QPainter::CompositionMode_Lighten
+ \endlist
+
+ The other members of QPainter::CompositionMode are not supported
+ because OpenVG 1.1 does not have an equivalent in its \c VGBlendMode
+ enumeration. Any attempt to set an unsupported mode will result in
+ the actual mode being set to QPainter::CompositionMode_SourceOver.
+ Client applications should avoid using unsupported modes.
+
+ \section2 Pens and brushes
+
+ All pen styles are supported, including cosmetic pens.
+
+ All brush styles are supported except for conical gradients, which are
+ not supported by OpenVG 1.1. Conical gradients will be converted into a
+ solid color brush corresponding to the first color in the gradient's
+ color ramp.
+
+ Affine matrices are supported for brush transforms, but not projective
+ matrices.
+
+ \section2 Rectangles, lines, and points
+
+ Rectangles, lines, and rounded rectangles use cached VGPath objects
+ to try to accelerate drawing operations. vgModifyPathCoords() is used
+ to modify the co-ordinates in the cached VGPath object each time
+ fillRect(), drawRects(), drawLines(), or drawRoundedRect() is called.
+
+ If the engine does not implement vgModifyPathCoords() properly, then the
+ QVG_NO_MODIFY_PATH define can be set to disable path caching. This will
+ incur a performance penalty.
+
+ Points are implemented as lines from the point to itself. The cached
+ line drawing VGPath object is used when drawing points.
+
+ \section2 Polygons and Ellipses
+
+ Polygon and ellipse drawing creates a new VGPath object every time
+ drawPolygon() or drawEllipse() is called. If the client application is
+ making heavy use of these functions, the constant creation and destruction
+ of VGPath objects could have an impact on performance.
+
+ If a projective transformation is active, ellipses are converted into
+ cubic curves prior to transformation, which may further impact performance.
+
+ Client applications should avoid polygon and ellipse drawing in performance
+ critical code if possible.
+
+ \section2 Other Objects
+
+ Most other objects (arcs, pies, etc) use drawPath(), which takes a
+ QPainterPath argument. The default implementation in QPainterEngineEx
+ converts the QPainterPath into a QVectorPath and then calls draw(),
+ which in turn converts the QVectorPath into a VGPath for drawing.
+
+ To reduce the overhead, we have overridden drawPath() in QVGPaintEngine
+ to convert QPainterPath's directly into VGPath's. This should help improve
+ performance compared to the default implementation.
+
+ Client applications should try to avoid these types of objects in
+ performance critical code because of the QPainterPath to VGPath
+ conversion cost.
+
+ \section2 Clipping
+
+ Clipping with QRect, QRectF, and QRegion objects is supported on all
+ OpenVG engines with vgMask() if the transformation matrix is the identity
+ or a simple origin translation.
+
+ Clipping with an arbitrary QPainterPath, or setting the clip region when
+ the transformation matrix is simple, is supported only if the OpenVG engine
+ has the vgRenderToMask() function (OpenVG 1.1 and higher).
+
+ 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.
+ The QVG_SCISSOR_CLIP define should only be used if the OpenVG engine
+ does not support vgMask() or vgRenderToMask().
+
+ \section2 Opacity
+
+ Opacity is supported for all drawing operations. Solid color pens,
+ solid color brushes, gradient brushes, and image drawing with drawPixmap()
+ and drawImage() will probably have the best performance compared to
+ other kinds of pens and brushes.
+
+ \section2 Text Drawing
+
+ If OpenVG 1.1 is used, the paint engine will use VG fonts to cache glyphs
+ while drawing. If the engine does not support VG fonts correctly,
+ QVG_NO_DRAW_GLYPHS can be defined to disable this mode. Text drawing
+ performance will suffer if VG fonts are not used.
+
+ By default, image-based glyphs are used. If QVG_NO_IMAGE_GLYPHS is defined,
+ then path-based glyphs will be used instead. QVG_NO_IMAGE_GLYPHS is ignored
+ if QVG_NO_DRAW_GLYPHS is defined.
+
+ If path-based glyphs are used, then the OpenVG engine will need to
+ support hinting to render text with good results. Image-based glyphs
+ avoids the need for hinting and will usually give better results than
+ path-based glyphs.
+
+ \section2 Pixmaps
+
+ In single-context mode, pixmaps will be implemented using VGImage
+ unless QVG_NO_PIXMAP_DATA is defined.
+
+ QVGPixmapData will convert QImage's into VGImage's when the application
+ calls drawPixmap(), and the pixmap will be kept in VGImage form for the
+ lifetime of the QVGPixmapData object. When the application tries to paint
+ into a QPixmap with QPainter, the data will be converted back into a
+ QImage and the raster paint engine will be used to render into the QImage.
+
+ This arrangement optimizes for the case of drawing the same static pixmap
+ over and over (e.g. for icons), but does not optimize the case of drawing
+ into pixmaps.
+
+ Bitmaps must use QRasterPixmapData. They are not accelerated with
+ VGImage at present.
+
+ \section2 Pixmap filters
+
+ Convolution, colorize, drop shadow, and blur filters are accelerated
+ using OpenVG operations.
+
+ \section1 Known issues
+
+ Performance of copying the contents of an OpenVG-rendered window to the
+ screen needs platform-specific work in the QVGWindowSurface class.
+
+ Clipping with arbitrary non-rectangular paths only works on engines
+ that support vgRenderToMask(). Simple rectangular paths are supported
+ on all engines that correctly implement vgMask().
+
+ The paint engine is not yet thread-safe, so it is not recommended for
+ use in threaded Qt applications that draw from multiple threads.
+ Drawing should be limited to the main GUI thread.
+
+ Performance of projective matrices for non-image drawing is not as good
+ as for affine matrices.
+
+ QPixmap's are implemented as VGImage objects so that they can be quickly
+ rendered with drawPixmap(). Rendering into a QPixmap using QPainter
+ will use the default Qt raster paint engine on a QImage copy of the
+ QPixmap, and will not be accelerated. This issue may be addressed in
+ a future version of the engine.
+
+ ShivaVG support is highly experimental and limited to Qt/X11. It is
+ provided as an example of how to integrate a non-EGL engine.
+*/
diff --git a/doc/src/howtos/qtdesigner.qdoc b/doc/src/howtos/qtdesigner.qdoc
new file mode 100644
index 000000000..73783d63d
--- /dev/null
+++ b/doc/src/howtos/qtdesigner.qdoc
@@ -0,0 +1,144 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qtdesigner-components.html
+ \title Creating and Using Components for Qt Designer
+ \ingroup best-practices
+
+ \tableofcontents
+
+ \section1 Creating Custom Widget Plugins
+
+ When implementing a custom widget plugin for \QD, you must
+ subclass QDesignerCustomWidgetInterface to expose your custom
+ widget to \QD. A single custom widget plugin is built as a
+ separate library. If you want to include several custom widget
+ plugins in the same library, you must in addition subclass
+ QDesignerCustomWidgetCollectionInterface.
+
+ To provide your custom widget plugin with the expected behavior
+ and functionality within \QD's workspace you can subclass the
+ associated extension classes:
+
+ The QDesignerContainerExtension class allows you to add pages to a
+ custom multi-page container. The QDesignerTaskMenuExtension class
+ allows you to add custom menu entries to \QD's task menu. The
+ QDesignerMemberSheetExtension class allows you to manipulate a
+ widget's member functions which is displayed when configuring
+ connections using \QD's mode for editing signals and slots. And
+ finally, the QDesignerPropertySheetExtension class allows you to
+ manipulate a widget's properties which is displayed in \QD's
+ property editor.
+
+ \image qtdesignerextensions.png
+
+ In \QD the extensions are not created until they are required. For
+ that reason, when implementing extensions, you must also subclass
+ QExtensionFactory, i.e create a class that is able to make
+ instances of your extensions. In addition, you must make \QD's
+ extension manager register your factory; the extension manager
+ controls the construction of extensions as they are required, and
+ you can access it through QDesignerFormEditorInterface and
+ QExtensionManager.
+
+ For a complete example creating a custom widget plugin with an
+ extension, see the \l {designer/taskmenuextension}{Task Menu
+ Extension} or \l {designer/containerextension}{Container
+ Extension} examples.
+
+ \section1 Retrieving Access to \QD Components
+
+ The purpose of the classes mentioned in this section is to provide
+ access to \QD's components, managers and workspace, and they are
+ not intended to be instantiated directly.
+
+ \QD is composed by several components. It has an action editor, a
+ property editor, widget box and object inspector which you can
+ view in its workspace.
+
+ \image qtdesignerscreenshot.png
+
+ \QD also has an object that works behind the scene; it contains
+ the logic that integrates all of \QD's components into a coherent
+ application. You can access this object, using the
+ QDesignerFormEditorInterface, to retrieve interfaces to \QD's
+ components:
+
+ \list
+ \o QDesignerActionEditorInterface
+ \o QDesignerObjectInspectorInterface
+ \o QDesignerPropertyEditorInterface
+ \o QDesignerWidgetBoxInterface
+ \endlist
+
+ In addition, you can use QDesignerFormEditorInterface to retrieve
+ interfaces to \QD's extension manager (QExtensionManager) and form
+ window manager (QDesignerFormWindowManagerInterface). The
+ extension manager controls the construction of extensions as they
+ are required, while the form window manager controls the form
+ windows appearing in \QD's workspace.
+
+ Once you have an interface to \QD's form window manager
+ (QDesignerFormWindowManagerInterface), you also have access to all
+ the form windows currently appearing in \QD's workspace: The
+ QDesignerFormWindowInterface class allows you to query and
+ manipulate the form windows, and it provides an interface to the
+ form windows' cursors. QDesignerFormWindowCursorInterface is a
+ convenience class allowing you to query and modify a given form
+ window's widget selection, and in addition modify the properties
+ of all the form's widgets.
+
+ \section1 Creating User Interfaces at Run-Time
+
+ The \c QtDesigner module contains the QFormBuilder class that
+ provides a mechanism for dynamically creating user interfaces at
+ run-time, based on UI files created with \QD. This class is
+ typically used by custom components and applications that embed
+ \QD. Standalone applications that need to dynamically generate
+ user interfaces at run-time use the QUiLoader class, found in
+ the QtUiTools module.
+
+ For a complete example using QUiLoader, see
+ the \l {designer/calculatorbuilder}{Calculator Builder example}.
+
+ \sa {Qt Designer Manual}, {QtUiTools Module}
+*/
diff --git a/doc/src/howtos/restoring-geometry.qdoc b/doc/src/howtos/restoring-geometry.qdoc
new file mode 100644
index 000000000..1bcbd41bc
--- /dev/null
+++ b/doc/src/howtos/restoring-geometry.qdoc
@@ -0,0 +1,82 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 restoring-geometry.html
+ \title Restoring a Window's Geometry
+
+ \ingroup best-practices
+
+ This document describes how to save and restore a \l{Window
+ Geometry}{window's geometry} using the geometry properties. On
+ Windows, this is basically storing the result of
+ QWidget::geometry() and calling QWidget::setGeometry() in the next
+ session before calling \l{QWidget::show()}{show()}.
+
+ On X11, this might not work because an invisible window does not
+ have a frame yet. The window manager will decorate the window
+ later. When this happens, the window shifts towards the
+ bottom/right corner of the screen depending on the size of the
+ decoration frame. Although X provides a way to avoid this shift,
+ some window managers fail to implement this feature.
+
+ Since version 4.2, Qt provides functions that saves and restores a
+ window's geometry and state for you. QWidget::saveGeometry()
+ saves the window geometry and maximized/fullscreen state, while
+ QWidget::restoreGeometry() restores it. The restore function also
+ checks if the restored geometry is outside the available screen
+ geometry, and modifies it as appropriate if it is:
+
+ \snippet doc/src/snippets/code/src_gui_widgets_qmainwindow.cpp 0
+ \snippet doc/src/snippets/code/src_gui_widgets_qmainwindow.cpp 1
+
+ If those functions are not available or cannot be used, then a
+ workaround is to call \l{QWidget::setGeometry()}{setGeometry()}
+ after \l{QWidget::show()}{show()}. This has the two disadvantages
+ that the widget appears at a wrong place for a millisecond
+ (results in flashing) and that currently only every second window
+ manager gets it right. A safer solution is to store both
+ \l{QWidget::pos()}{pos()} and \l{QWidget::size()}{size()} and to
+ restore the geometry using \l{QWidget::resize()} and
+ \l{QWidget::move()}{move()} before calling
+ \l{QWidget::show()}{show()}, as demonstrated in the
+ \l{mainwindows/application}{Application} example.
+*/
diff --git a/doc/src/howtos/session.qdoc b/doc/src/howtos/session.qdoc
new file mode 100644
index 000000000..76972abff
--- /dev/null
+++ b/doc/src/howtos/session.qdoc
@@ -0,0 +1,178 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 session.html
+ \title Session Management
+
+ \ingroup best-practices
+
+ A \e session is a group of running applications, each of which has a
+ particular state. The session is controlled by a service called the \e
+ session \e manager. The applications participating in the session are
+ called \e{session clients}.
+
+ The session manager issues commands to its clients on behalf of the
+ user. These commands may cause clients to commit unsaved changes (for
+ example by saving open files), to preserve their state for future
+ sessions, or to terminate gracefully. The set of these operations is
+ called \e session \e management.
+
+ In the common case, a session consists of all applications that a
+ user runs on their desktop at a time. Under Unix/X11, however, a
+ session may include applications running on different computers and
+ may span multiple displays.
+
+ \section1 Shutting a Session Down
+
+ A session is shut down by the session manager, usually on behalf of
+ the user when they want to log out. A system might also perform an
+ automatic shutdown in an emergency situation, for example, if power is
+ about to be lost. Clearly there is a significant difference between
+ these types of shutdown. During the first, the user may want to
+ interact with the application, specifying exactly which files should
+ be saved and which should be discarded. In the latter case, there's no
+ time for interaction. There may not even be a user sitting in front of
+ the machine!
+
+
+ \section1 Protocols and Support on Different Platforms
+
+ On Mac OS X, and Microsoft Windows versions prior to Windows 2000,
+ there is nothing like complete session management for applications
+ yet, i.e. no restoring of previous sessions. (Windows 2000 and XP
+ provide "hibernation" where the entire memory is saved to disk and
+ restored when the machine is restarted.) They do support graceful
+ logouts where applications have the opportunity to cancel the process
+ after getting confirmation from the user. This is the functionality
+ that corresponds to the QApplication::commitData() method.
+
+ X11 has supported complete session management since X11R6.
+
+ \section1 Getting Session Management to Work with Qt
+
+ Start by reimplementing QApplication::commitData() to
+ enable your application to take part in the graceful logout process. If
+ you are only targeting the Microsoft Windows platform, this is all you can
+ and must provide. Ideally, your application should provide a shutdown
+ dialog similar to the following:
+
+ \img session.png A typical dialog on shutdown
+
+ Example code for this dialog can be found in the documentation of
+ QSessionManager::allowsInteraction().
+
+ For complete session management (only supported on X11R6 at present),
+ you must also take care of saving the application's state, and
+ potentially of restoring the state in the next life cycle of the
+ session. This saving is done by reimplementing
+ QApplication::saveState(). All state data you are saving in this
+ function, should be marked with the session identifier
+ QApplication::sessionId(). This application specific identifier is
+ globally unique, so no clashes will occur. (See QSessionManager for
+ information on saving/restoring the state of a particular Qt
+ application.)
+
+ Restoration is usually done in the application's main()
+ function. Check if QApplication::isSessionRestored() is \c true. If
+ that's the case, use the session identifier
+ QApplication::sessionId() again to access your state data and restore
+ the state of the application.
+
+ \bold{Important:} In order to allow the window manager to
+ restore window attributes such as stacking order or geometry
+ information, you must identify your top level widgets with
+ unique application-wide object names (see QObject::setObjectName()). When
+ restoring the application, you must ensure that all restored
+ top level widgets are given the same unique names they had before.
+
+ \section1 Testing and Debugging Session Management
+
+ Session management support on Mac OS X and Windows is fairly limited
+ due to the lack of this functionality in the operating system
+ itself. Simply shut the session down and verify that your application
+ behaves as expected. It may be useful to launch another application,
+ usually the integrated development environment, before starting your
+ application. This other application will get the shutdown message
+ afterwards, thus permitting you to cancel the shutdown. Otherwise you
+ would have to log in again after each test run, which is not a problem
+ per se, but is time consuming.
+
+ On Unix you can either use a desktop environment that supports
+ standard X11R6 session management or, the recommended method, use the
+ session manager reference implementation provided by the X Consortium.
+ This sample manager is called \c xsm and is part of a standard X11R6
+ installation. As always with X11, a useful and informative manual page
+ is provided. Using \c xsm is straightforward (apart from the clumsy
+ Athena-based user interface). Here's a simple approach:
+
+ \list
+ \i Run X11R6.
+ \i Create a dot file \c .xsmstartup in your home directory which
+ contains the single line
+ \snippet doc/src/snippets/code/doc_src_session.qdoc 0
+ This tells \c xsm that the default/failsafe session is just an xterm
+ and nothing else. Otherwise \c xsm would try to invoke lots of
+ clients including the windowmanager \c twm, which isn't very helpful.
+ \i Now launch \c xsm from another terminal window. Both a session
+ manager window and the xterm will appear. The xterm has a nice
+ property that sets it apart from all the other shells you are
+ currently running: within its shell, the \c SESSION_MANAGER
+ environment variable points to the session manager you just started.
+ \i Launch your application from the new xterm window. It will connect
+ itself automatically to the session manager. You can check with the \e
+ ClientList push button whether the connect was successful.
+
+ \bold{Note:} Never keep the \e ClientList open when you
+ start or end session managed clients! Otherwise \c xsm is likely to
+ crash.
+ \i Use the session manager's \e Checkpoint and \e Shutdown buttons
+ with different settings and see how your application behaves. The save
+ type \e local means that the clients should save their state. It
+ corresponds to the QApplication::saveState() function. The \e
+ global save type asks applications to save their unsaved changes in
+ permanent, globally accessible storage. It invokes
+ QApplication::commitData().
+ \i Whenever something crashes, blame \c xsm and not Qt. \c xsm is far
+ from being a usable session manager on a user's desktop. It is,
+ however, stable and useful enough to serve as testing environment.
+ \endlist
+*/
diff --git a/doc/src/howtos/sharedlibrary.qdoc b/doc/src/howtos/sharedlibrary.qdoc
new file mode 100644
index 000000000..c908220de
--- /dev/null
+++ b/doc/src/howtos/sharedlibrary.qdoc
@@ -0,0 +1,176 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 sharedlibrary.html
+ \title Creating Shared Libraries
+
+ \ingroup best-practices
+
+ The following sections list certain things that should be taken into
+ account when creating shared libraries.
+
+ \section1 Using Symbols from Shared Libraries
+
+ Symbols - functions, variables or classes - contained in shared libraries
+ intended to be used by \e{clients}, such as applications or other
+ libraries, must be marked in a special way. These symbols are called
+ \e{public symbols} that are \e{exported} or made publicly visible.
+
+ The remaining symbols should not be visible from the outside. On most
+ platforms, compilers will hide them by default. On some platforms, a
+ special compiler option is required to hide these symbols.
+
+ When compiling a shared library, it must be marked for \e{export}. To use
+ the shared library from a client, some platforms may require a special
+ \e{import} declaration as well.
+
+ Depending on your target platform, Qt provides special macros that contain
+ the necessary definitions:
+ \list
+ \o \c{Q_DECL_EXPORT} must be added to the declarations of symbols used
+ when compiling a shared library.
+ \o \c{Q_DECL_IMPORT} must be added to the declarations of symbols used
+ when compiling a client that uses the shared library.
+ \endlist
+
+ Now, we need to ensure that the right macro is invoked -- whether we
+ compile a share library itself, or just the client using the shared
+ library.
+ Typically, this can be solved by adding a special header.
+
+ Let us assume we want to create a shared library called \e{mysharedlib}.
+ A special header for this library, \c{mysharedlib_global.h}, looks like
+ this:
+
+ \code
+ #include <QtCore/QtGlobal>
+
+ #if defined(MYSHAREDLIB_LIBRARY)
+ # define MYSHAREDLIB_EXPORT Q_DECL_EXPORT
+ #else
+ # define MYSHAREDLIB_EXPORT Q_DECL_IMPORT
+ #endif
+ \endcode
+
+ In the \c{.pro} file of the shared library, we add:
+
+ \code
+ DEFINES += MYSHAREDLIB_LIBRARY
+ \endcode
+
+ In each header of the library, we specify the following:
+
+ \code
+ #include "mysharedlib_global.h"
+
+ MYSHAREDLIB_EXPORT void foo();
+ class MYSHAREDLIB_EXPORT MyClass...
+ \endcode
+ This ensures that the right macro is seen by both library and clients. We
+ also use this technique in Qt's sources.
+
+
+ \section1 Header File Considerations
+
+ Typically, clients will include only the public header files of shared
+ libraries. These libraries might be installed in a different location, when
+ deployed. Therefore, it is important to exclude other internal header files
+ that were used when building the shared library.
+
+ For example, the library might provide a class that wraps a hardware device
+ and contains a handle to that device, provided by some 3rd-party library:
+
+ \code
+ #include <footronics/device.h>
+
+ class MyDevice {
+ private:
+ FOOTRONICS_DEVICE_HANDLE handle;
+ };
+ \endcode
+
+ A similar situation arises with forms created by Qt Designer when using
+ aggregation or multiple inheritance:
+
+ \code
+ #include "ui_widget.h"
+
+ class MyWidget : public QWidget {
+ private:
+ Ui::MyWidget m_ui;
+ };
+ \endcode
+
+ When deploying the library, there should be no dependency to the internal
+ headers \c{footronics/device.h} or \c{ui_widget.h}.
+
+ This can be avoided by making use of the \e{Pointer to implementation}
+ idiom described in various C++ programming books. For classes with
+ \e{value semantics}, consider using QSharedDataPointer.
+
+
+ \section1 Binary compatibility
+
+ For clients loading a shared library, to work correctly, the memory
+ layout of the classes being used must match exactly the memory layout of
+ the library version that was used to compile the client. In other words,
+ the library found by the client at runtime must be \e{binary compatible}
+ with the version used at compile time.
+
+ This is usually not a problem if the client is a self-contained software
+ package that ships all the libraries it needs.
+
+ However, if the client application relies on a shared library that belongs
+ to a different installation package or to the operating system, then we
+ need to think of a versioning scheme for shared libraries and decide at
+ which level \e{Binary compatibility} is to be maintained. For example, Qt
+ libraries of the same \e{major version number} are guaranteed to be binary
+ compatible.
+
+ Maintaining \e{Binary compatibility} places some restrictions on the changes
+ you can make to the classes. A good explanation can be found at
+ \l{http://techbase.kde.org/Policies/Binary_Compatibility_Issues_With_C++}
+ {KDE - Policies/Binary Compatibility Issues With C++}. These issues should
+ be considered right from the start of library design.
+ We recommend that the principle of \e{Information hiding} and the
+ \e{Pointer to implementation} technique be used wherever possible.
+*/
diff --git a/doc/src/howtos/timers.qdoc b/doc/src/howtos/timers.qdoc
new file mode 100644
index 000000000..85902be63
--- /dev/null
+++ b/doc/src/howtos/timers.qdoc
@@ -0,0 +1,137 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 timers.html
+ \title Timers
+ \brief How to use timers in your application.
+
+ \ingroup best-practices
+
+ QObject, the base class of all Qt objects, provides the basic
+ timer support in Qt. With QObject::startTimer(), you start a
+ timer with an interval in milliseconds as argument. The function
+ returns a unique integer timer ID. The timer will now fire at
+ regular intervals until you explicitly call QObject::killTimer()
+ with the timer ID.
+
+ For this mechanism to work, the application must run in an event
+ loop. You start an event loop with QApplication::exec(). When a
+ timer fires, the application sends a QTimerEvent, and the flow of
+ control leaves the event loop until the timer event is processed.
+ This implies that a timer cannot fire while your application is
+ busy doing something else. In other words: the accuracy of timers
+ depends on the granularity of your application.
+
+ In multithreaded applications, you can use the timer mechanism in
+ any thread that has an event loop. To start an event loop from a
+ non-GUI thread, use QThread::exec(). Qt uses the object's
+ \l{QObject::thread()}{thread affinity} to determine which thread
+ will deliver the QTimerEvent. Because of this, you must start and
+ stop all timers in the object's thread; it is not possible to
+ start timers for objects in another thread.
+
+ The upper limit for the interval value is determined by the number
+ of milliseconds that can be specified in a signed integer
+ (in practice, this is a period of just over 24 days). The accuracy
+ depends on the underlying operating system. Windows 98 has 55
+ millisecond accuracy; other systems that we have tested can handle
+ 1 millisecond intervals.
+
+ The main API for the timer functionality is QTimer. That class
+ provides regular timers that emit a signal when the timer fires, and
+ inherits QObject so that it fits well into the ownership structure
+ of most GUI programs. The normal way of using it is like this:
+
+ \snippet doc/src/snippets/timers/timers.cpp 0
+ \snippet doc/src/snippets/timers/timers.cpp 1
+ \snippet doc/src/snippets/timers/timers.cpp 2
+
+ The QTimer object is made into a child of this widget so that,
+ when this widget is deleted, the timer is deleted too.
+ Next, its \l{QTimer::}{timeout()} signal is connected to the slot
+ that will do the work, it is started with a value of 1000
+ milliseconds, indicating that it will time out every second.
+
+ QTimer also provides a static function for single-shot timers.
+ For example:
+
+ \snippet doc/src/snippets/timers/timers.cpp 3
+
+ 200 milliseconds (0.2 seconds) after this line of code is
+ executed, the \c updateCaption() slot will be called.
+
+ For QTimer to work, you must have an event loop in your
+ application; that is, you must call QCoreApplication::exec()
+ somewhere. Timer events will be delivered only while the event
+ loop is running.
+
+ In multithreaded applications, you can use QTimer in any thread
+ that has an event loop. To start an event loop from a non-GUI
+ thread, use QThread::exec(). Qt uses the timer's
+ \l{QObject::thread()}{thread affinity} to determine which thread
+ will emit the \l{QTimer::}{timeout()} signal. Because of this, you
+ must start and stop the timer in its thread; it is not possible to
+ start a timer from another thread.
+
+ The \l{widgets/analogclock}{Analog Clock} example shows how to use
+ QTimer to redraw a widget at regular intervals. From \c{AnalogClock}'s
+ implementation:
+
+ \snippet examples/widgets/analogclock/analogclock.cpp 0
+ \snippet examples/widgets/analogclock/analogclock.cpp 2
+ \snippet examples/widgets/analogclock/analogclock.cpp 3
+ \snippet examples/widgets/analogclock/analogclock.cpp 4
+ \snippet examples/widgets/analogclock/analogclock.cpp 5
+ \snippet examples/widgets/analogclock/analogclock.cpp 6
+ \dots
+ \snippet examples/widgets/analogclock/analogclock.cpp 7
+
+ Every second, QTimer will call the QWidget::update() slot to
+ refresh the clock's display.
+
+ If you already have a QObject subclass and want an easy
+ optimization, you can use QBasicTimer instead of QTimer. With
+ QBasicTimer, you must reimplement
+ \l{QObject::timerEvent()}{timerEvent()} in your QObject subclass
+ and handle the timeout there. The \l{widgets/wiggly}{Wiggly}
+ example shows how to use QBasicTimer.
+*/
diff --git a/doc/src/howtos/unix-signal-handlers.qdoc b/doc/src/howtos/unix-signal-handlers.qdoc
new file mode 100644
index 000000000..e936ea294
--- /dev/null
+++ b/doc/src/howtos/unix-signal-handlers.qdoc
@@ -0,0 +1,105 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 unix-signals.html
+ \title Calling Qt Functions From Unix Signal Handlers
+ \brief You can't. But don't despair, there is a way...
+
+ \ingroup platform-specific
+ \ingroup best-practices
+
+ You \e can't call Qt functions from Unix signal handlers. The
+ standard POSIX rule applies: You can only call async-signal-safe
+ functions from signal handlers. See \l
+ {http://www.opengroup.org/onlinepubs/000095399/functions/xsh_chap02_04.html#tag_02_04_01}
+ {Signal Actions} for the complete list of functions you can call
+ from Unix signal handlers.
+
+ But don't despair, there is a way to use Unix signal handlers with
+ Qt. The strategy is to have your Unix signal handler do something
+ that will eventually cause a Qt signal to be emitted, and then you
+ simply return from your Unix signal handler. Back in your Qt
+ program, that Qt signal gets emitted and then received by your Qt
+ slot function, where you can safely do whatever Qt stuff you
+ weren't allowed to do in the Unix signal handler.
+
+ One simple way to make this happen is to declare a socket pair in
+ your class for each Unix signal you want to handle. The socket
+ pairs are declared as static data members. You also create a
+ QSocketNotifier to monitor the \e read end of each socket pair,
+ declare your Unix signal handlers to be static class methods, and
+ declare a slot function corresponding to each of your Unix signal
+ handlers. In this example, we intend to handle both the SIGHUP and
+ SIGTERM signals. Note: You should read the socketpair(2) and the
+ sigaction(2) man pages before plowing through the following code
+ snippets.
+
+ \snippet doc/src/snippets/code/doc_src_unix-signal-handlers.qdoc 0
+
+ In the MyDaemon constructor, use the socketpair(2) function to
+ initialize each file descriptor pair, and then create the
+ QSocketNotifier to monitor the \e read end of each pair. The
+ activated() signal of each QSocketNotifier is connected to the
+ appropriate slot function, which effectively converts the Unix
+ signal to the QSocketNotifier::activated() signal.
+
+ \snippet doc/src/snippets/code/doc_src_unix-signal-handlers.qdoc 1
+
+ Somewhere else in your startup code, you install your Unix signal
+ handlers with sigaction(2).
+
+ \snippet doc/src/snippets/code/doc_src_unix-signal-handlers.qdoc 2
+
+ In your Unix signal handlers, you write a byte to the \e write end
+ of a socket pair and return. This will cause the corresponding
+ QSocketNotifier to emit its activated() signal, which will in turn
+ cause the appropriate Qt slott function to run.
+
+ \snippet doc/src/snippets/code/doc_src_unix-signal-handlers.qdoc 3
+
+ In the slot functions connected to the
+ QSocketNotifier::activated() signals, you \e read the byte. Now
+ you are safely back in Qt with your signal, and you can do all the
+ Qt stuff you weren'tr allowed to do in the Unix signal handler.
+
+ \snippet doc/src/snippets/code/doc_src_unix-signal-handlers.qdoc 4
+*/
diff --git a/doc/src/i18n.qdoc b/doc/src/i18n.qdoc
deleted file mode 100644
index 22f82be0c..000000000
--- a/doc/src/i18n.qdoc
+++ /dev/null
@@ -1,508 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \group i18n
- \title Internationalization with Qt
- \ingroup topics
-
- \brief Information about Qt's support for internationalization and multiple languages.
-
- \keyword internationalization
- \keyword i18n
-
- The internationalization of an application is the process of making
- the application usable by people in countries other than one's own.
-
- \tableofcontents
-
- In some cases internationalization is simple, for example, making a US
- application accessible to Australian or British users may require
- little more than a few spelling corrections. But to make a US
- application usable by Japanese users, or a Korean application usable
- by German users, will require that the software operate not only in
- different languages, but use different input techniques, character
- encodings and presentation conventions.
-
- Qt tries to make internationalization as painless as possible for
- developers. All input widgets and text drawing methods in Qt offer
- built-in support for all supported languages. The built-in font engine
- is capable of correctly and attractively rendering text that contains
- characters from a variety of different writing systems at the same
- time.
-
- Qt supports most languages in use today, in particular:
- \list
- \o All East Asian languages (Chinese, Japanese and Korean)
- \o All Western languages (using Latin script)
- \o Arabic
- \o Cyrillic languages (Russian, Ukrainian, etc.)
- \o Greek
- \o Hebrew
- \o Thai and Lao
- \o All scripts in Unicode 4.0 that do not require special processing
- \endlist
-
- On Windows, Unix/X11 with FontConfig (client side font support)
- and Qt for Embedded Linux the following languages are also supported:
- \list
- \o Bengali
- \o Devanagari
- \o Dhivehi (Thaana)
- \o Gujarati
- \o Gurmukhi
- \o Kannada
- \o Khmer
- \o Malayalam
- \o Myanmar
- \o Syriac
- \o Tamil
- \o Telugu
- \o Tibetan
- \endlist
-
- Many of these writing systems exhibit special features:
-
- \list
-
- \o \bold{Special line breaking behavior.} Some of the Asian languages are
- written without spaces between words. Line breaking can occur either
- after every character (with exceptions) as in Chinese, Japanese and
- Korean, or after logical word boundaries as in Thai.
-
- \o \bold{Bidirectional writing.} Arabic and Hebrew are written from right to
- left, except for numbers and embedded English text which is written
- left to right. The exact behavior is defined in the
- \l{http://www.unicode.org/unicode/reports/tr9/}{Unicode Technical Annex #9}.
-
- \o \bold{Non-spacing or diacritical marks (accents or umlauts in European
- languages).} Some languages such as Vietnamese make extensive use of
- these marks and some characters can have more than one mark at the
- same time to clarify pronunciation.
-
- \o \bold{Ligatures.} In special contexts, some pairs of characters get
- replaced by a combined glyph forming a ligature. Common examples are
- the fl and fi ligatures used in typesetting US and European books.
-
- \endlist
-
- Qt tries to take care of all the special features listed above. You
- usually don't have to worry about these features so long as you use
- Qt's input widgets (e.g. QLineEdit, QTextEdit, and derived classes)
- and Qt's display widgets (e.g. QLabel).
-
- Support for these writing systems is transparent to the
- programmer and completely encapsulated in \l{rich text
- processing}{Qt's text engine}. This means that you don't need to
- have any knowledge about the writing system used in a particular
- language, except for the following small points:
-
- \list
-
- \o QPainter::drawText(int x, int y, const QString &str) will always
- draw the string with its left edge at the position specified with
- the x, y parameters. This will usually give you left aligned strings.
- Arabic and Hebrew application strings are usually right
- aligned, so for these languages use the version of drawText() that
- takes a QRect since this will align in accordance with the language.
-
- \o When you write your own text input controls, use QTextLayout.
- In some languages (e.g. Arabic or languages from the Indian
- subcontinent), the width and shape of a glyph changes depending on the
- surrounding characters, which QTextLayout takes into account.
- Writing input controls usually requires a certain knowledge of the
- scripts it is going to be used in. Usually the easiest way is to
- subclass QLineEdit or QTextEdit.
-
- \endlist
-
- The following sections give some information on the status of the
- internationalization (i18n) support in Qt. See also the \l{Qt
- Linguist manual}.
-
- \section1 Step by Step
-
- Writing cross-platform international software with Qt is a gentle,
- incremental process. Your software can become internationalized in
- the following stages:
-
- \section2 Use QString for All User-Visible Text
-
- Since QString uses the Unicode 4.0 encoding internally, every
- language in the world can be processed transparently using
- familiar text processing operations. Also, since all Qt functions
- that present text to the user take a QString as a parameter,
- there is no \c{char *} to QString conversion overhead.
-
- Strings that are in "programmer space" (such as QObject names
- and file format texts) need not use QString; the traditional
- \c{char *} or the QByteArray class will suffice.
-
- You're unlikely to notice that you are using Unicode;
- QString, and QChar are just like easier versions of the crude
- \c{const char *} and char from traditional C.
-
- \section2 Use tr() for All Literal Text
-
- Wherever your program uses "quoted text" for text that will
- be presented to the user, ensure that it is processed by the \l
- QCoreApplication::translate() function. Essentially all that is necessary
- to achieve this is to use QObject::tr(). For example, assuming the
- \c LoginWidget is a subclass of QWidget:
-
- \snippet doc/src/snippets/code/doc_src_i18n.qdoc 0
-
- This accounts for 99% of the user-visible strings you're likely to
- write.
-
- If the quoted text is not in a member function of a
- QObject subclass, use either the tr() function of an
- appropriate class, or the QCoreApplication::translate() function
- directly:
-
- \snippet doc/src/snippets/code/doc_src_i18n.qdoc 1
-
- If you need to have translatable text completely
- outside a function, there are two macros to help: QT_TR_NOOP()
- and QT_TRANSLATE_NOOP(). They merely mark the text for
- extraction by the \c lupdate utility described below.
- The macros expand to just the text (without the context).
-
- Example of QT_TR_NOOP():
-
- \snippet doc/src/snippets/code/doc_src_i18n.qdoc 2
-
- Example of QT_TRANSLATE_NOOP():
-
- \snippet doc/src/snippets/code/doc_src_i18n.qdoc 3
-
- If you disable the \c{const char *} to QString automatic
- conversion by compiling your software with the macro \c
- QT_NO_CAST_FROM_ASCII defined, you'll be very likely to catch any
- strings you are missing. See QString::fromLatin1() for more
- information. Disabling the conversion can make programming a bit
- cumbersome.
-
- If your source language uses characters outside Latin1, you
- might find QObject::trUtf8() more convenient than
- QObject::tr(), as tr() depends on the
- QTextCodec::codecForTr(), which makes it more fragile than
- QObject::trUtf8().
-
- \section2 Use QKeySequence() for Accelerator Values
-
- Accelerator values such as Ctrl+Q or Alt+F need to be translated
- too. If you hardcode Qt::CTRL + Qt::Key_Q for "quit" in your
- application, translators won't be able to override it. The
- correct idiom is
-
- \snippet examples/mainwindows/application/mainwindow.cpp 20
-
- \section2 Use QString::arg() for Dynamic Text
-
- The QString::arg() functions offer a simple means for substituting
- arguments:
- \snippet doc/src/snippets/code/doc_src_i18n.qdoc 4
-
- In some languages the order of arguments may need to change, and this
- can easily be achieved by changing the order of the % arguments. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_i18n.qdoc 5
-
- produces the correct output in English and Norwegian:
- \snippet doc/src/snippets/code/doc_src_i18n.qdoc 6
-
- \section2 Produce Translations
-
- Once you are using tr() throughout an application, you can start
- producing translations of the user-visible text in your program.
-
- The \l{Qt Linguist manual} provides further information about
- Qt's translation tools, \e{Qt Linguist}, \c lupdate and \c
- lrelease.
-
- Translation of a Qt application is a three-step process:
-
- \list 1
-
- \o Run \c lupdate to extract translatable text from the C++
- source code of the Qt application, resulting in a message file
- for translators (a TS file). The utility recognizes the tr()
- construct and the \c{QT_TR*_NOOP()} macros described above and
- produces TS files (usually one per language).
-
- \o Provide translations for the source texts in the TS file, using
- \e{Qt Linguist}. Since TS files are in XML format, you can also
- edit them by hand.
-
- \o Run \c lrelease to obtain a light-weight message file (a QM
- file) from the TS file, suitable only for end use. Think of the TS
- files as "source files", and QM files as "object files". The
- translator edits the TS files, but the users of your application
- only need the QM files. Both kinds of files are platform and
- locale independent.
-
- \endlist
-
- Typically, you will repeat these steps for every release of your
- application. The \c lupdate utility does its best to reuse the
- translations from previous releases.
-
- Before you run \c lupdate, you should prepare a project file. Here's
- an example project file (\c .pro file):
-
- \snippet doc/src/snippets/code/doc_src_i18n.qdoc 7
-
- When you run \c lupdate or \c lrelease, you must give the name of the
- project file as a command-line argument.
-
- In this example, four exotic languages are supported: Danish,
- Finnish, Norwegian and Swedish. If you use \l{qmake}, you usually
- don't need an extra project file for \c lupdate; your \c qmake
- project file will work fine once you add the \c TRANSLATIONS
- entry.
-
- In your application, you must \l QTranslator::load() the translation
- files appropriate for the user's language, and install them using \l
- QCoreApplication::installTranslator().
-
- \c linguist, \c lupdate and \c lrelease are installed in the \c bin
- subdirectory of the base directory Qt is installed into. Click Help|Manual
- in \e{Qt Linguist} to access the user's manual; it contains a tutorial
- to get you started.
-
- \target qt-itself
- Qt itself contains over 400 strings that will also need to be
- translated into the languages that you are targeting. You will find
- translation files for French, German and Simplified Chinese in
- \c{$QTDIR/translations}, as well as a template for translating to
- other languages. (This directory also contains some additional
- unsupported translations which may be useful.)
-
- Typically, your application's \c main() function will look like
- this:
-
- \snippet doc/src/snippets/code/doc_src_i18n.qdoc 8
-
- Note the use of QLibraryInfo::location() to locate the Qt translations.
- Developers should request the path to the translations at run-time by
- passing QLibraryInfo::TranslationsPath to this function instead of
- using the \c QTDIR environment variable in their applications.
-
- \section2 Support for Encodings
-
- The QTextCodec class and the facilities in QTextStream make it easy to
- support many input and output encodings for your users' data. When an
- application starts, the locale of the machine will determine the 8-bit
- encoding used when dealing with 8-bit data: such as for font
- selection, text display, 8-bit text I/O, and character input.
-
- The application may occasionally require encodings other than the
- default local 8-bit encoding. For example, an application in a
- Cyrillic KOI8-R locale (the de-facto standard locale in Russia) might
- need to output Cyrillic in the ISO 8859-5 encoding. Code for this
- would be:
-
- \snippet doc/src/snippets/code/doc_src_i18n.qdoc 9
-
- For converting Unicode to local 8-bit encodings, a shortcut is
- available: the QString::toLocal8Bit() function returns such 8-bit
- data. Another useful shortcut is QString::toUtf8(), which returns
- text in the 8-bit UTF-8 encoding: this perfectly preserves
- Unicode information while looking like plain ASCII if the text is
- wholly ASCII.
-
- For converting the other way, there are the QString::fromUtf8() and
- QString::fromLocal8Bit() convenience functions, or the general code,
- demonstrated by this conversion from ISO 8859-5 Cyrillic to Unicode
- conversion:
-
- \snippet doc/src/snippets/code/doc_src_i18n.qdoc 10
-
- Ideally Unicode I/O should be used as this maximizes the portability
- of documents between users around the world, but in reality it is
- useful to support all the appropriate encodings that your users will
- need to process existing documents. In general, Unicode (UTF-16 or
- UTF-8) is best for information transferred between arbitrary people,
- while within a language or national group, a local standard is often
- more appropriate. The most important encoding to support is the one
- returned by QTextCodec::codecForLocale(), as this is the one the user
- is most likely to need for communicating with other people and
- applications (this is the codec used by local8Bit()).
-
- Qt supports most of the more frequently used encodings natively. For a
- complete list of supported encodings see the \l QTextCodec
- documentation.
-
- In some cases and for less frequently used encodings it may be
- necessary to write your own QTextCodec subclass. Depending on the
- urgency, it may be useful to contact Qt's technical support team or
- ask on the \c qt-interest mailing list to see if someone else is
- already working on supporting the encoding.
-
- \keyword localization
-
- \section2 Localize
-
- Localization is the process of adapting to local conventions, for
- example presenting dates and times using the locally preferred
- formats. Such localizations can be accomplished using appropriate tr()
- strings.
-
- \snippet doc/src/snippets/code/doc_src_i18n.qdoc 11
-
- In the example, for the US we would leave the translation of
- "AMPM" as it is and thereby use the 12-hour clock branch; but in
- Europe we would translate it as something else and this will make
- the code use the 24-hour clock branch.
-
- For localized numbers use the QLocale class.
-
- Localizing images is not recommended. Choose clear icons that are
- appropriate for all localities, rather than relying on local puns or
- stretched metaphors. The exception is for images of left and right
- pointing arrows which may need to be reversed for Arabic and Hebrew
- locales.
-
- \section1 Dynamic Translation
-
- Some applications, such as Qt Linguist, must be able to support changes
- to the user's language settings while they are still running. To make
- widgets aware of changes to the installed QTranslators, reimplement the
- widget's \l{QWidget::changeEvent()}{changeEvent()} function to check whether
- the event is a \l{QEvent::LanguageChange}{LanguageChange} event, and update
- the text displayed by widgets using the \l{QObject::tr()}{tr()} function
- in the usual way. For example:
-
- \snippet doc/src/snippets/code/doc_src_i18n.qdoc 12
-
- All other change events should be passed on by calling the default
- implementation of the function.
-
- The list of installed translators might change in reaction to a
- \l{QEvent::LocaleChange}{LocaleChange} event, or the application might
- provide a user interface that allows the user to change the current
- application language.
-
- The default event handler for QWidget subclasses responds to the
- QEvent::LanguageChange event, and will call this function when necessary;
- other application components can also force widgets to update themselves
- by posting the \l{QEvent::LanguageChange}{LanguageChange} event to them.
-
- \section1 Translating Non-Qt Classes
-
- It is sometimes necessary to provide internationalization support for
- strings used in classes that do not inherit QObject or use the Q_OBJECT
- macro to enable translation features. Since Qt translates strings at
- run-time based on the class they are associated with and \c lupdate
- looks for translatable strings in the source code, non-Qt classes must
- use mechanisms that also provide this information.
-
- One way to do this is to add translation support to a non-Qt class
- using the Q_DECLARE_TR_FUNCTIONS() macro; for example:
-
- \snippet doc/src/snippets/i18n-non-qt-class/myclass.h 0
- \dots
- \snippet doc/src/snippets/i18n-non-qt-class/myclass.h 1
-
- This provides the class with \l{QObject::}{tr()} functions that can
- be used to translate strings associated with the class, and makes it
- possible for \c lupdate to find translatable strings in the source
- code.
-
- Alternatively, the QCoreApplication::translate() function can be called
- with a specific context, and this will be recognized by \c lupdate and
- Qt Linguist.
-
- \section1 System Support
-
- Some of the operating systems and windowing systems that Qt runs on
- only have limited support for Unicode. The level of support available
- in the underlying system has some influence on the support that Qt can
- provide on those platforms, although in general Qt applications need
- not be too concerned with platform-specific limitations.
-
- \section2 Unix/X11
-
- \list
- \o Locale-oriented fonts and input methods. Qt hides these and
- provides Unicode input and output.
- \o Filesystem conventions such as
- \l{http://www.ietf.org/rfc/rfc2279.txt}{UTF-8}
- are under development in some Unix variants. All Qt file
- functions allow Unicode, but convert filenames to the local
- 8-bit encoding, as this is the Unix convention (see
- QFile::setEncodingFunction() to explore alternative
- encodings).
- \o File I/O defaults to the local 8-bit encoding,
- with Unicode options in QTextStream.
- \o Many Unix distributions contain only partial support for some locales.
- For example, if you have a \c /usr/share/locale/ja_JP.EUC directory,
- this does not necessarily mean you can display Japanese text; you also
- need JIS encoded fonts (or Unicode fonts), and the
- \c /usr/share/locale/ja_JP.EUC directory needs to be complete. For
- best results, use complete locales from your system vendor.
- \endlist
-
- \section2 Windows
-
- \list
- \o Qt provides full Unicode support, including input methods, fonts,
- clipboard, drag-and-drop and file names.
- \o File I/O defaults to Latin1, with Unicode options in QTextStream.
- Note that some Windows programs do not understand big-endian
- Unicode text files even though that is the order prescribed by
- the Unicode Standard in the absence of higher-level protocols.
- \o Unlike programs written with MFC or plain winlib, Qt programs
- are portable between Windows 98 and Windows NT.
- \e {You do not need different binaries to support Unicode.}
- \endlist
-
- \section2 Mac OS X
-
- For details on Mac-specific translation, refer to the Qt/Mac Specific Issues
- document \l{Qt for Mac OS X - Specific Issues#Translating the Application Menu and Native Dialogs}{here}.
-
- \section1 Relevant Qt Classes
-
- These classes are relevant to internationalizing Qt applications.
-*/
diff --git a/doc/src/images/activeqt-examples.png b/doc/src/images/activeqt-examples.png
new file mode 100644
index 000000000..bda8ebaa7
--- /dev/null
+++ b/doc/src/images/activeqt-examples.png
Binary files differ
diff --git a/doc/src/images/animatedtiles-example.png b/doc/src/images/animatedtiles-example.png
new file mode 100644
index 000000000..082ac57b7
--- /dev/null
+++ b/doc/src/images/animatedtiles-example.png
Binary files differ
diff --git a/doc/src/images/animation-examples.png b/doc/src/images/animation-examples.png
new file mode 100644
index 000000000..bfc599092
--- /dev/null
+++ b/doc/src/images/animation-examples.png
Binary files differ
diff --git a/doc/src/images/anomaly-demo.png b/doc/src/images/anomaly-demo.png
new file mode 100644
index 000000000..a26e7058d
--- /dev/null
+++ b/doc/src/images/anomaly-demo.png
Binary files differ
diff --git a/doc/src/images/appchooser-example.png b/doc/src/images/appchooser-example.png
new file mode 100644
index 000000000..885476e8b
--- /dev/null
+++ b/doc/src/images/appchooser-example.png
Binary files differ
diff --git a/doc/src/images/blurpickereffect-example.png b/doc/src/images/blurpickereffect-example.png
new file mode 100644
index 000000000..88943385e
--- /dev/null
+++ b/doc/src/images/blurpickereffect-example.png
Binary files differ
diff --git a/doc/src/images/browser-demo.png b/doc/src/images/browser-demo.png
index 466f21886..5e0c0becc 100644
--- a/doc/src/images/browser-demo.png
+++ b/doc/src/images/browser-demo.png
Binary files differ
diff --git a/doc/src/images/dbus-examples.png b/doc/src/images/dbus-examples.png
new file mode 100644
index 000000000..676893559
--- /dev/null
+++ b/doc/src/images/dbus-examples.png
Binary files differ
diff --git a/doc/src/images/designer-action-editor.png b/doc/src/images/designer-action-editor.png
index 7d17573b5..1e9970647 100644
--- a/doc/src/images/designer-action-editor.png
+++ b/doc/src/images/designer-action-editor.png
Binary files differ
diff --git a/doc/src/images/designer-adding-menu-action.png b/doc/src/images/designer-adding-menu-action.png
index cf2a9c908..595dd8e36 100644
--- a/doc/src/images/designer-adding-menu-action.png
+++ b/doc/src/images/designer-adding-menu-action.png
Binary files differ
diff --git a/doc/src/images/designer-adding-toolbar-action.png b/doc/src/images/designer-adding-toolbar-action.png
index e2201cb26..404ad0dd0 100644
--- a/doc/src/images/designer-adding-toolbar-action.png
+++ b/doc/src/images/designer-adding-toolbar-action.png
Binary files differ
diff --git a/doc/src/images/designer-creating-toolbar.png b/doc/src/images/designer-creating-toolbar.png
new file mode 100644
index 000000000..32a949ab7
--- /dev/null
+++ b/doc/src/images/designer-creating-toolbar.png
Binary files differ
diff --git a/doc/src/images/designer-removing-toolbar-action.png b/doc/src/images/designer-removing-toolbar-action.png
new file mode 100644
index 000000000..12c68a10e
--- /dev/null
+++ b/doc/src/images/designer-removing-toolbar-action.png
Binary files differ
diff --git a/doc/src/images/designer-removing-toolbar.png b/doc/src/images/designer-removing-toolbar.png
new file mode 100644
index 000000000..a65b17057
--- /dev/null
+++ b/doc/src/images/designer-removing-toolbar.png
Binary files differ
diff --git a/doc/src/images/easing-example.png b/doc/src/images/easing-example.png
new file mode 100644
index 000000000..de486670c
--- /dev/null
+++ b/doc/src/images/easing-example.png
Binary files differ
diff --git a/doc/src/images/embeddeddesktopservices-demo.png b/doc/src/images/embeddeddesktopservices-demo.png
new file mode 100644
index 000000000..c1408c1f8
--- /dev/null
+++ b/doc/src/images/embeddeddesktopservices-demo.png
Binary files differ
diff --git a/doc/src/images/embeddedsvgviewer-demo.png b/doc/src/images/embeddedsvgviewer-demo.png
new file mode 100644
index 000000000..0b806d619
--- /dev/null
+++ b/doc/src/images/embeddedsvgviewer-demo.png
Binary files differ
diff --git a/doc/src/images/fademessageeffect-example-faded.png b/doc/src/images/fademessageeffect-example-faded.png
new file mode 100644
index 000000000..ea66d2c7f
--- /dev/null
+++ b/doc/src/images/fademessageeffect-example-faded.png
Binary files differ
diff --git a/doc/src/images/fademessageeffect-example.png b/doc/src/images/fademessageeffect-example.png
new file mode 100644
index 000000000..823c85101
--- /dev/null
+++ b/doc/src/images/fademessageeffect-example.png
Binary files differ
diff --git a/doc/src/images/flickable-demo.png b/doc/src/images/flickable-demo.png
new file mode 100644
index 000000000..98f3a6940
--- /dev/null
+++ b/doc/src/images/flickable-demo.png
Binary files differ
diff --git a/doc/src/images/flightinfo-demo.png b/doc/src/images/flightinfo-demo.png
new file mode 100644
index 000000000..4e9a4b2ba
--- /dev/null
+++ b/doc/src/images/flightinfo-demo.png
Binary files differ
diff --git a/doc/src/images/fluidlauncher-demo.png b/doc/src/images/fluidlauncher-demo.png
new file mode 100644
index 000000000..1720890cd
--- /dev/null
+++ b/doc/src/images/fluidlauncher-demo.png
Binary files differ
diff --git a/doc/src/images/gestures-examples.png b/doc/src/images/gestures-examples.png
new file mode 100644
index 000000000..d4a006bff
--- /dev/null
+++ b/doc/src/images/gestures-examples.png
Binary files differ
diff --git a/doc/src/images/gestures.png b/doc/src/images/gestures.png
new file mode 100644
index 000000000..6bc5632c1
--- /dev/null
+++ b/doc/src/images/gestures.png
Binary files differ
diff --git a/doc/src/images/googlesuggest-example.png b/doc/src/images/googlesuggest-example.png
index 4ef072afb..477d444cb 100644
--- a/doc/src/images/googlesuggest-example.png
+++ b/doc/src/images/googlesuggest-example.png
Binary files differ
diff --git a/doc/src/images/gradient.png b/doc/src/images/gradient.png
new file mode 100644
index 000000000..2ef36edd0
--- /dev/null
+++ b/doc/src/images/gradient.png
Binary files differ
diff --git a/doc/src/images/graphicseffect-blur.png b/doc/src/images/graphicseffect-blur.png
new file mode 100644
index 000000000..4ea0bbb6e
--- /dev/null
+++ b/doc/src/images/graphicseffect-blur.png
Binary files differ
diff --git a/doc/src/images/graphicseffect-colorize.png b/doc/src/images/graphicseffect-colorize.png
new file mode 100644
index 000000000..160c9978f
--- /dev/null
+++ b/doc/src/images/graphicseffect-colorize.png
Binary files differ
diff --git a/doc/src/images/graphicseffect-drop-shadow.png b/doc/src/images/graphicseffect-drop-shadow.png
new file mode 100644
index 000000000..813c3a88d
--- /dev/null
+++ b/doc/src/images/graphicseffect-drop-shadow.png
Binary files differ
diff --git a/doc/src/images/graphicseffect-opacity.png b/doc/src/images/graphicseffect-opacity.png
new file mode 100644
index 000000000..cce75ab2a
--- /dev/null
+++ b/doc/src/images/graphicseffect-opacity.png
Binary files differ
diff --git a/doc/src/images/graphicseffect-plain.png b/doc/src/images/graphicseffect-plain.png
new file mode 100644
index 000000000..8b4c1c47c
--- /dev/null
+++ b/doc/src/images/graphicseffect-plain.png
Binary files differ
diff --git a/doc/src/images/graphicseffect-widget.png b/doc/src/images/graphicseffect-widget.png
new file mode 100644
index 000000000..27245d18f
--- /dev/null
+++ b/doc/src/images/graphicseffect-widget.png
Binary files differ
diff --git a/doc/src/images/hoverevents.png b/doc/src/images/hoverevents.png
new file mode 100644
index 000000000..ccc079bdf
--- /dev/null
+++ b/doc/src/images/hoverevents.png
Binary files differ
diff --git a/doc/src/images/inputpanel-example.png b/doc/src/images/inputpanel-example.png
new file mode 100644
index 000000000..0dd93251c
--- /dev/null
+++ b/doc/src/images/inputpanel-example.png
Binary files differ
diff --git a/doc/src/images/ipc-examples.png b/doc/src/images/ipc-examples.png
new file mode 100644
index 000000000..815aed319
--- /dev/null
+++ b/doc/src/images/ipc-examples.png
Binary files differ
diff --git a/doc/src/images/lightingeffect-example.png b/doc/src/images/lightingeffect-example.png
new file mode 100644
index 000000000..d9dc99048
--- /dev/null
+++ b/doc/src/images/lightingeffect-example.png
Binary files differ
diff --git a/doc/src/images/lightmaps-demo.png b/doc/src/images/lightmaps-demo.png
new file mode 100644
index 000000000..f066f939d
--- /dev/null
+++ b/doc/src/images/lightmaps-demo.png
Binary files differ
diff --git a/doc/src/images/multitouch-dials-example.png b/doc/src/images/multitouch-dials-example.png
new file mode 100644
index 000000000..60e1776fc
--- /dev/null
+++ b/doc/src/images/multitouch-dials-example.png
Binary files differ
diff --git a/doc/src/images/multitouch-examples.png b/doc/src/images/multitouch-examples.png
new file mode 100644
index 000000000..b053cf371
--- /dev/null
+++ b/doc/src/images/multitouch-examples.png
Binary files differ
diff --git a/doc/src/images/multitouch-knobs-example.png b/doc/src/images/multitouch-knobs-example.png
new file mode 100644
index 000000000..1cbd90d10
--- /dev/null
+++ b/doc/src/images/multitouch-knobs-example.png
Binary files differ
diff --git a/doc/src/images/multitouch-pinchzoom-example.png b/doc/src/images/multitouch-pinchzoom-example.png
new file mode 100644
index 000000000..1079fb252
--- /dev/null
+++ b/doc/src/images/multitouch-pinchzoom-example.png
Binary files differ
diff --git a/doc/src/images/pangesture.png b/doc/src/images/pangesture.png
new file mode 100644
index 000000000..24caf91d3
--- /dev/null
+++ b/doc/src/images/pangesture.png
Binary files differ
diff --git a/doc/src/images/pbuffers-example.png b/doc/src/images/pbuffers-example.png
index bafb05a08..c34a6fd02 100644
--- a/doc/src/images/pbuffers-example.png
+++ b/doc/src/images/pbuffers-example.png
Binary files differ
diff --git a/doc/src/images/pinchgesture.png b/doc/src/images/pinchgesture.png
new file mode 100644
index 000000000..95614c405
--- /dev/null
+++ b/doc/src/images/pinchgesture.png
Binary files differ
diff --git a/doc/src/images/platformHWAcc.png b/doc/src/images/platformHWAcc.png
new file mode 100644
index 000000000..76a5a48de
--- /dev/null
+++ b/doc/src/images/platformHWAcc.png
Binary files differ
diff --git a/doc/src/images/qq-thumbnail.png b/doc/src/images/qq-thumbnail.png
new file mode 100644
index 000000000..295ef13b1
--- /dev/null
+++ b/doc/src/images/qq-thumbnail.png
Binary files differ
diff --git a/doc/src/images/qt-colors.png b/doc/src/images/qt-colors.png
index 524123f70..331c97523 100644
--- a/doc/src/images/qt-colors.png
+++ b/doc/src/images/qt-colors.png
Binary files differ
diff --git a/doc/src/images/qt-embedded-architecture.png b/doc/src/images/qt-embedded-architecture.png
index 97a29d000..20b3e7ffc 100644
--- a/doc/src/images/qt-embedded-architecture.png
+++ b/doc/src/images/qt-embedded-architecture.png
Binary files differ
diff --git a/doc/src/images/qt-embedded-linux-architecture.png b/doc/src/images/qt-embedded-linux-architecture.png
new file mode 100644
index 000000000..b5e3b6c57
--- /dev/null
+++ b/doc/src/images/qt-embedded-linux-architecture.png
Binary files differ
diff --git a/doc/src/images/raycasting-demo.png b/doc/src/images/raycasting-demo.png
new file mode 100644
index 000000000..53c5253f5
--- /dev/null
+++ b/doc/src/images/raycasting-demo.png
Binary files differ
diff --git a/doc/src/images/shareddirmodel.png b/doc/src/images/shareddirmodel.png
index 6daa9d3c9..7b9fdeda0 100644
--- a/doc/src/images/shareddirmodel.png
+++ b/doc/src/images/shareddirmodel.png
Binary files differ
diff --git a/doc/src/images/simpleanchorlayout-example.png b/doc/src/images/simpleanchorlayout-example.png
new file mode 100644
index 000000000..1d5c8ac04
--- /dev/null
+++ b/doc/src/images/simpleanchorlayout-example.png
Binary files differ
diff --git a/doc/src/images/standard-views.png b/doc/src/images/standard-views.png
index 836ae36e1..c80455162 100644
--- a/doc/src/images/standard-views.png
+++ b/doc/src/images/standard-views.png
Binary files differ
diff --git a/doc/src/images/statemachine-examples.png b/doc/src/images/statemachine-examples.png
new file mode 100644
index 000000000..b2ec66e19
--- /dev/null
+++ b/doc/src/images/statemachine-examples.png
Binary files differ
diff --git a/doc/src/images/states-example.png b/doc/src/images/states-example.png
new file mode 100644
index 000000000..f87b99bec
--- /dev/null
+++ b/doc/src/images/states-example.png
Binary files differ
diff --git a/doc/src/images/styledemo-demo.png b/doc/src/images/styledemo-demo.png
new file mode 100644
index 000000000..8e4ec9021
--- /dev/null
+++ b/doc/src/images/styledemo-demo.png
Binary files differ
diff --git a/doc/src/images/swipegesture.png b/doc/src/images/swipegesture.png
new file mode 100644
index 000000000..0b7d35af3
--- /dev/null
+++ b/doc/src/images/swipegesture.png
Binary files differ
diff --git a/doc/src/images/video-videographicsitem.png b/doc/src/images/video-videographicsitem.png
new file mode 100644
index 000000000..e333c54a2
--- /dev/null
+++ b/doc/src/images/video-videographicsitem.png
Binary files differ
diff --git a/doc/src/images/video-videowidget.png b/doc/src/images/video-videowidget.png
new file mode 100644
index 000000000..a3c7bcb44
--- /dev/null
+++ b/doc/src/images/video-videowidget.png
Binary files differ
diff --git a/doc/src/images/weatherinfo-demo.png b/doc/src/images/weatherinfo-demo.png
new file mode 100644
index 000000000..3183aa408
--- /dev/null
+++ b/doc/src/images/weatherinfo-demo.png
Binary files differ
diff --git a/doc/src/images/webkit-domtraversal.png b/doc/src/images/webkit-domtraversal.png
new file mode 100644
index 000000000..8c7b2bcb9
--- /dev/null
+++ b/doc/src/images/webkit-domtraversal.png
Binary files differ
diff --git a/doc/src/images/webkit-examples.png b/doc/src/images/webkit-examples.png
index 55bbd92a9..23ddf1c38 100644
--- a/doc/src/images/webkit-examples.png
+++ b/doc/src/images/webkit-examples.png
Binary files differ
diff --git a/doc/src/images/webkit-simpleselector.png b/doc/src/images/webkit-simpleselector.png
new file mode 100644
index 000000000..2c888ca14
--- /dev/null
+++ b/doc/src/images/webkit-simpleselector.png
Binary files differ
diff --git a/doc/src/images/whatsnewanimatedtiles.png b/doc/src/images/whatsnewanimatedtiles.png
new file mode 100644
index 000000000..7152ee282
--- /dev/null
+++ b/doc/src/images/whatsnewanimatedtiles.png
Binary files differ
diff --git a/doc/src/images/xml-schema.png b/doc/src/images/xml-schema.png
new file mode 100644
index 000000000..b1bceccb1
--- /dev/null
+++ b/doc/src/images/xml-schema.png
Binary files differ
diff --git a/doc/src/implicit-sharing.qdoc b/doc/src/implicit-sharing.qdoc
deleted file mode 100644
index cc0b28b0c..000000000
--- a/doc/src/implicit-sharing.qdoc
+++ /dev/null
@@ -1,144 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/* TODO: Move some of the documentation from QSharedDataPointer into this
- document. */
-
-/*!
- \group shared
- \title Implicitly Shared Classes
- \ingroup architecture
- \ingroup groups
-
- \brief Classes that use reference counting for fast copying.
-
- \keyword implicit data sharing
- \keyword implicit sharing
- \keyword implicitly shared
- \keyword reference counting
- \keyword shared implicitly
- \keyword shared classes
-
- Many C++ classes in Qt use implicit data sharing to maximize
- resource usage and minimize copying. Implicitly shared classes are
- both safe and efficient when passed as arguments, because only a
- pointer to the data is passed around, and the data is copied only
- if and when a function writes to it, i.e., \e {copy-on-write}.
-
- \tableofcontents
-
- \section1 Overview
-
- A shared class consists of a pointer to a shared data block that
- contains a reference count and the data.
-
- When a shared object is created, it sets the reference count to 1. The
- reference count is incremented whenever a new object references the
- shared data, and decremented when the object dereferences the shared
- data. The shared data is deleted when the reference count becomes
- zero.
-
- \keyword deep copy
- \keyword shallow copy
-
- When dealing with shared objects, there are two ways of copying an
- object. We usually speak about \e deep and \e shallow copies. A deep
- copy implies duplicating an object. A shallow copy is a reference
- copy, i.e. just a pointer to a shared data block. Making a deep copy
- can be expensive in terms of memory and CPU. Making a shallow copy is
- very fast, because it only involves setting a pointer and incrementing
- the reference count.
-
- Object assignment (with operator=()) for implicitly shared objects is
- implemented using shallow copies.
-
- The benefit of sharing is that a program does not need to duplicate
- data unnecessarily, which results in lower memory use and less copying
- of data. Objects can easily be assigned, sent as function arguments,
- and returned from functions.
-
- Implicit sharing takes place behind the scenes; the programmer
- does not need to worry about it. Even in multithreaded
- applications, implicit sharing takes place, as explained in
- \l{Threads and Implicit Sharing}.
-
- When implementing your own implicitly shared classes, use the
- QSharedData and QSharedDataPointer classes.
-
- \section1 Implicit Sharing in Detail
-
- Implicit sharing automatically detaches the object from a shared
- block if the object is about to change and the reference count is
- greater than one. (This is often called \e {copy-on-write} or
- \e {value semantics}.)
-
- An implicitly shared class has total control of its internal data. In
- any member functions that modify its data, it automatically detaches
- before modifying the data.
-
- The QPen class, which uses implicit sharing, detaches from the shared
- data in all member functions that change the internal data.
-
- Code fragment:
- \snippet doc/src/snippets/code/doc_src_groups.qdoc 0
-
-
- \section1 List of Classes
-
- The classes listed below automatically detach from common data if
- an object is about to be changed. The programmer will not even
- notice that the objects are shared. Thus you should treat
- separate instances of them as separate objects. They will always
- behave as separate objects but with the added benefit of sharing
- data whenever possible. For this reason, you can pass instances
- of these classes as arguments to functions by value without
- concern for the copying overhead.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_groups.qdoc 1
-
- In this example, \c p1 and \c p2 share data until QPainter::begin()
- is called for \c p2, because painting a pixmap will modify it.
-
- \warning Do not copy an implicitly shared container (QMap,
- QVector, etc.) while you are iterating over it using an non-const
- \l{STL-style iterator}.
-*/
diff --git a/doc/src/index.qdoc b/doc/src/index.qdoc
index 962e63d55..5a1010ec0 100644
--- a/doc/src/index.qdoc
+++ b/doc/src/index.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,216 +21,128 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
/*!
\page index.html
-
\keyword Qt Reference Documentation
- \if defined(qtopiacore)
- \if defined(opensourceedition)
- \title Qt for Embedded Linux Reference Documentation (Open Source Edition)
- \endif
-
- \if defined(desktoplightedition)
- \title Qt for Embedded Linux Reference Documentation (GUI Framework Edition)
- \endif
-
- \if defined(desktopedition)
- \title Qt for Embedded Linux Reference Documentation (Full Framework Edition)
- \endif
-
- \if !defined(opensourceedition) \
- && !defined(desktoplightedition) \
- && !defined(desktopedition)
- \title Qt for Embedded Linux Reference Documentation
- \endif
-
- \subtitle Qt for Embedded Linux
- \endif
- \if !defined(qtopiacore)
- \if defined(opensourceedition)
- \title Qt Reference Documentation (Open Source Edition)
- \endif
-
- \if defined(desktoplightedition)
- \title Qt Reference Documentation (GUI Framework Edition)
- \endif
-
- \if defined(desktopedition)
- \title Qt Reference Documentation (Full Framework Edition)
- \endif
-
- \if !defined(opensourceedition) \
- && !defined(desktoplightedition) \
- && !defined(desktopedition)
- \title Qt Reference Documentation
- \endif
- \endif
+ \title Qt Reference Documentation
\raw HTML
- <table cellpadding="2" cellspacing="1" border="0" width="100%" class="indextable">
+ <table cellpadding="2" cellspacing="1" border="0" width="95%" class="indextable" align="center">
<tr>
<th class="titleheader" width="33%">
- Getting Started
- </th>
+ Getting Started</th>
<th class="titleheader" width="33%">
- General
- </th>
+ API Reference</th>
<th class="titleheader" width="33%">
- Developer Resources
- </th>
+ Working with Qt</th>
</tr>
<tr>
<td valign="top">
<ul>
- <li><strong><a href="qt4-5-intro.html">What's New in Qt 4.5</a></strong></li>
- <li><a href="how-to-learn-qt.html">How to Learn Qt</a></li>
- <li><a href="installation.html">Installation</a></li>
- <li><a href="tutorials.html">Tutorials</a>, <a href="examples.html">Examples</a> and <a href="demos.html">Demonstrations</a></li>
- <li><a href="porting4.html">Porting from Qt 3 to Qt 4</a></li>
+ <li><a href="installation.html">Installation</a> and <a href="how-to-learn-qt.html">First Steps with Qt</a></li>
+ <li><a href="tutorials.html">Tutorials</a> and <a href="examples.html">Examples</a></li>
+ <li><a href="demos.html">Demonstrations</a> and <a href="qt4-7-intro.html"><b>New in Qt 4.7</b></a></li>
</ul>
</td>
<td valign="top">
<ul>
- <li><a href="http://qt.nokia.com/products">About Qt</a></li>
- <li><a href="http://qt.nokia.com/about">About Us</a></li>
- <li><a href="commercialeditions.html">Commercial Edition</a></li>
- <li><a href="opensourceedition.html">Open Source Edition</a></li>
- <li><a href="supported-platforms.html">Supported Platforms</a></li>
+ <li><a href="classlists.html">Class and Function Documentation</a></li>
+ <li><a href="frameworks-technologies.html">Frameworks and Technologies</a></li>
+ <li><a href="best-practices.html">How-To&#39;s and Best Practices</a></li>
</ul>
</td>
<td valign="top">
<ul>
- <li><a href="http://qt.nokia.com/developer/faqs/">Frequently Asked Questions</a></li>
- <li><a href="http://qt.nokia.com/developer/community/">Qt Community Web Sites</a></li>
- <li><a href="http://qt.nokia.com/doc/qq/">Qt Quarterly</a></li>
- <li><a href="bughowto.html">How to Report a Bug</a></li>
- <li><a href="http://qt.nokia.com/developer/">Other Online Resources</a></li>
+ <li><a href="developing-with-qt.html">Cross-Platform Development with Qt</a></li>
+ <li><a href="qtestlib-manual.html">Unit Testing</a> and <a href="debug.html">Debugging</a></li>
+ <li><a href="deployment.html">Deploying Qt Applications</a></li>
</ul>
</td>
</tr>
<tr>
<th class="titleheader">
- API Reference
- </th>
+ Fundamentals</th>
<th class="titleheader">
- Core Features
- </th>
+ User Interface Design</th>
<th class="titleheader">
- Key Technologies
- </th>
+ Technologies</th>
</tr>
<tr>
<td valign="top">
<ul>
- <li><a href="classes.html">All Classes</a></li>
- <li><a href="mainclasses.html">Main Classes</a></li>
- <li><a href="groups.html">Grouped Classes</a></li>
- <li><a href="annotated.html">Annotated Classes</a></li>
- <li><a href="modules.html">Qt Classes by Module</a></li>
- <li><a href="namespaces.html">All Namespaces</a></li>
- <li><a href="hierarchy.html">Inheritance Hierarchy</a></li>
- <li><a href="functions.html">All Functions</a></li>
- <li><a href="qt-embedded.html">Qt for Embedded Platforms</a></li>
- <li><a href="overviews.html">All Overviews and HOWTOs</a></li>
- <li><a href="gallery.html">Qt Widget Gallery</a></li>
- <li><a href="qtglobal.html">Qt Global Declarations</a></li>
+ <li><a href="object.html">The Qt Object Model</a></li>
+ <li><a href="eventsandfilters.html">Event System</a></li>
+ <li><a href="threads.html">Threading</a></li>
+ <li><a href="internationalization.html">Internationalization</a></li>
+ <li><a href="platform-specific.html">Platform Specifics</a></li>
</ul>
</td>
<td valign="top">
<ul>
- <li><a href="signalsandslots.html">Signals and Slots</a></li>
- <li><a href="object.html">Object Model</a></li>
- <li><a href="layout.html">Layout Management</a></li>
- <li><a href="qt4-mainwindow.html">Main Window Architecture</a></li>
- <li><a href="paintsystem.html">Paint System</a></li>
- <li><a href="graphicsview.html">Graphics View</a></li>
- <li><a href="accessible.html">Accessibility</a></li>
- <li><a href="containers.html">Tool and Container Classes</a></li>
- <li><a href="richtext.html">Rich Text Processing</a></li>
- <li><a href="i18n.html">Internationalization</a></li>
- <li><a href="plugins-howto.html">Plugin System</a></li>
- <li><a href="threads.html">Multithreaded Programming</a></li>
- <li><a href="ipc.html">Inter-Process Communication (IPC)</a></li>
- <li><a href="qtestlib-manual.html">Unit Testing Framework</a></li>
+ <li><a href="widgets-and-layouts.html">Widgets and Layouts</a></li>
+ <li><a href="application-windows.html">Application Windows</a></li>
+ <li><a href="paintsystem.html">Painting and Printing</a></li>
+ <li><a href="graphicsview.html">Canvas UI with Graphics View</a></li>
+ <li><a href="webintegration.html">Integrating Web Content</a></li>
</ul>
</td>
<td valign="top">
<ul>
- <li><a href="model-view-programming.html">Model/View Programming</a></li>
- <li><a href="stylesheet.html">Style Sheets</a></li>
- <li><a href="qthelp.html">Help Module</a></li>
- <li><a href="qtnetwork.html">Network Module</a></li>
- <li><a href="qtopengl.html">OpenGL Module</a></li>
- <li><a href="qtopenvg.html">OpenVG Module</a></li>
- <li><a href="qtscript.html">Script Module</a></li>
- <li><a href="qtsql.html">SQL Module</a></li>
- <li><a href="qtsvg.html">SVG Module</a></li>
- <li><a href="qtwebkit.html">WebKit Integration</a></li>
- <li><a href="qtxml.html">XML Module</a></li>
- <li><a href="qtxmlpatterns.html">XML Patterns: XQuery &amp; XPath</a></li>
- <li><a href="phonon-module.html">Phonon Multimedia Framework</a></li>
- <li><a href="qtscripttools.html">Script Tools Module</a></li>
- <li><a href="activeqt.html">ActiveQt Framework</a></li>
+ <li><a href="io.html">Input/Output</a> and <a href="resources.html">Resources</a></li>
+ <li><a href="network-programming.html">Network Programming</a></li>
+ <li><a href="sql-programming.html">SQL Development</a></li>
+ <li><a href="xml-processing.html">XML Processing</a></li>
+ <li><a href="scripting.html">Scripting</a></li>
</ul>
</td>
</tr>
<tr>
<th class="titleheader">
- Add-ons &amp; Services
- </th>
+ Community and Resources</th>
<th class="titleheader">
- Tools
- </th>
+ Contributing</th>
<th class="titleheader">
- Licenses &amp; Credits
- </th>
+ Licenses</th>
</tr>
<tr>
<td valign="top">
<ul>
- <li><a href="http://qt.nokia.com/products/add-on-products">Qt Solutions</a></li>
- <li><a href="http://qt.nokia.com/products/appdev">Partner Add-ons</a></li>
- <li><a href="http://qt-apps.org">Third-Party Qt Components (qt-apps.org)</a></li>
- <li><a href="http://qt.nokia.com/support-services/support-services/">Support</a></li>
- <li><a href="http://qt.nokia.com/support-services/training/">Training</a></li>
+ <li><a href="http://qt.nokia.com/developer">Online Resources</a></li>
+ <li><a href="http://labs.qt.nokia.com/blogs">Developer Blogs</a></li>
+ <li><a href="http://qt.nokia.com/support-services">Support</a>, <a href="http://qt.nokia.com/services-partners">Training and Services</a></li>
</ul>
</td>
<td valign="top">
<ul>
- <li><a href="designer-manual.html">Qt Designer</a></li>
- <li><a href="assistant-manual.html">Qt Assistant</a></li>
- <li><a href="linguist-manual.html">Qt Linguist</a></li>
- <li><a href="qmake-manual.html">qmake</a></li>
- <li><a href="qttools.html">All Tools</a></li>
+ <li><a href="bughowto.html">Report Bugs and Make Suggestions</a></li>
+ <li><a href="http://qt.gitorious.org">Open Repository</a></li>
+ <li><a href="credits.html">Credits</a></li>
</ul>
</td>
<td valign="top">
<ul>
- <li><a href="gpl.html">GNU GPL</a>, <a href="lgpl.html">GNU LGPL</a></li>
- <li><a href="3rdparty.html">Third-Party Licenses Used in Qt</a></li>
- <li><a href="licenses.html">Other Licenses Used in Qt</a></li>
- <li><a href="trademarks.html">Trademark Information</a></li>
- <li><a href="credits.html">Credits</a></li>
+ <li><a href="gpl.html">GNU GPL</a>, <a href="lgpl.html">GNU LGPL</a></li>
+ <li><a href="commercialeditions.html">Commercial Editions</a></li>
+ <li><a href="licensing.html">Licenses Used in Qt</a></li>
</ul>
</td>
</tr>
diff --git a/doc/src/installation.qdoc b/doc/src/installation.qdoc
deleted file mode 100644
index 139a3ce09..000000000
--- a/doc/src/installation.qdoc
+++ /dev/null
@@ -1,794 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-** Please remember to update the corresponding INSTALL files.
-****************************************************************************/
-
-/*!
-\group installation
-\title Installation
-\ingroup buildsystem
-\ingroup topics
-\brief Installing Qt on supported platforms.
-
-The installation procedure is different on each Qt platform.
-Please follow the instructions for your platform from the following list.
-
-\generatelist{related}
-*/
-
-/*! \page install-x11.html
-\title Installing Qt on X11 Platforms
-\ingroup installation
-\brief How to install Qt on platforms with X11.
-\previouspage Installation
-
-\note Qt for X11 has some requirements that are given in more detail
-in the \l{Qt for X11 Requirements} document.
-
-\list 1
-\o If you have the commercial edition of Qt, install your license
- file as \c{$HOME/.qt-license}.
-
- For the open source version you do not need a license file.
-
-\o Unpack the archive if you have not done so already. For example,
- if you have the \c{qt-x11-opensource-desktop-%VERSION%.tar.gz}
- package, type the following commands at a command line prompt:
-
-\snippet doc/src/snippets/code/doc_src_installation.qdoc 0
-
- This creates the directory \c{/tmp/qt-x11-opensource-desktop-%VERSION%}
- containing the files from the archive. We only support the GNU version of
- the tar archiving utility. Note that on some systems it is called gtar.
-
-\o Building
-
- To configure the Qt library for your machine type, run the
- \c{./configure} script in the package directory.
-
- By default, Qt is configured for installation in the
- \c{/usr/local/Trolltech/Qt-%VERSION%} directory, but this can be
- changed by using the \c{-prefix} option.
-
-\snippet doc/src/snippets/code/doc_src_installation.qdoc 1
-
- Type \c{./configure -help} to get a list of all available options.
-
- To create the library and compile all the demos, examples, tools,
- and tutorials, type:
-
-\snippet doc/src/snippets/code/doc_src_installation.qdoc 2
-
- If \c{-prefix} is outside the build directory, you need to install
- the library, demos, examples, tools, and tutorials in the appropriate
- place. To do this, type:
-
-\snippet doc/src/snippets/code/doc_src_installation.qdoc 3
-
- , as root if necessary.
-
- Note that on some systems the make utility is named differently,
- e.g. gmake. The configure script tells you which make utility to
- use.
-
- \bold{Note:} If you later need to reconfigure and rebuild Qt from the
- same location, ensure that all traces of the previous configuration are
- removed by entering the build directory and typing \c{make confclean}
- before running \c configure again.
-
-\o Environment variables
-
- In order to use Qt, some environment variables needs to be
- extended.
-
-\snippet doc/src/snippets/code/doc_src_installation.qdoc 4
-
- This is done like this:
-
- In \c{.profile} (if your shell is bash, ksh, zsh or sh), add the
- following lines:
-
-\snippet doc/src/snippets/code/doc_src_installation.qdoc 5
-
- In \c{.login} (in case your shell is csh or tcsh), add the following line:
-
-\snippet doc/src/snippets/code/doc_src_installation.qdoc 6
-
- If you use a different shell, please modify your environment
- variables accordingly.
-
- For compilers that do not support rpath you must also extended the
- \c LD_LIBRARY_PATH environment variable to include
- \c{/usr/local/Trolltech/Qt-%VERSION%/lib}. On Linux with GCC this step
- is not needed.
-
-\o That's all. Qt is now installed.
-
- If you are new to Qt, we suggest that you take a look at the demos
- and examples to see Qt in action. Run the Qt Examples and Demos
- either by typing \c qtdemo on the command line or through the
- desktop's Main menu.
-
- You might also want to try the following links:
-
- \list
- \o \l{Configuring Qt}
- \o \l{How to Learn Qt}
- \o \l{Tutorials}
- \o \l{Developer Zone}
- \o \l{Deploying Qt Applications}
- \endlist
-\endlist
-
- We hope you will enjoy using Qt. Good luck!
-
-*/
-
-/*!
-\page install-win.html
-\title Installing Qt on Windows
-\ingroup installation
-\brief How to install Qt on Windows.
-\previouspage Installation
-
-\note Qt for Windows has some requirements that are given in more detail
-in the \l{Qt for Windows Requirements} document.
-
-\table
-\row \o \bold{Notes:}
-\list
-\o If you have obtained a binary package for this platform,
-consult the installation instructions provided instead of the ones in
-this document.
-\o \l{Open Source Versions of Qt} is not officially supported for use with
-any version of Visual Studio. Integration with Visual Studio is available
-as part of the \l{Qt Commercial Editions}.
-
-\endlist
-\endtable
-
-\list 1
-\o If you have the commercial edition of Qt, copy the license file
- from your account on dist.trolltech.com into your home directory
- (this may be known as the \c userprofile environment variable) and
- rename it to \c{.qt-license}. This renaming process must be done
- using a \e{command prompt} on Windows, \bold{not} with Windows Explorer.
- For example on Windows 2000, \c{%USERPROFILE%} should be something
- like \c{C:\Documents and Settings\username}
-
- For the open source version you do not need a license file.
-
-\o Uncompress the files into the directory you want Qt installed;
- e.g. \c{C:\Qt\%VERSION%}.
-
- \note The install path must not contain any spaces or Windows specific
- file system characters.
-
-\o Environment variables
-
- In order to build and use Qt, the \c PATH environment variable needs to be
- extended:
-
-\snippet doc/src/snippets/code/doc_src_installation.qdoc 7
-
- This is done by adding \c{c:\Qt\%VERSION%\bin} to the \c PATH variable.
-
- For newer versions of Windows, \c PATH can be extended through
- the \menu{Control Panel|System|Advanced|Environment variables} menu.
-
- You may also need to ensure that the locations of your compiler and
- other build tools are listed in the \c PATH variable. This will depend
- on your choice of software development environment.
-
- \bold{Note}: If you don't use the configured shells, which is
- available in the application menu, in the \l{Open Source Versions of Qt},
- \c configure requires that \c sh.exe is not in the path
- or that it is run from \c msys. This also goes for mingw32-make.
-
-\o Building
-
- To configure the Qt library for your machine, type the following command
- in a \bold{Visual Studio} command prompt:
-
-\snippet doc/src/snippets/code/doc_src_installation.qdoc 8
-
- Type \c{configure -help} to get a list of all available options.
-
- If you have multiple compilers installed, and want to build the Qt library
- using a specific compiler, you must specify a \c qmake specification.
- This is done by pasing \c{-platform <spec>} to configure; for example:
-
-\snippet doc/src/snippets/code/doc_src_installation.qdoc 9
-
- In some cases you need to set up the compilation environment before running
- configure in order to use the right compiler. For instance, you need to do this
- if you have Visual Studio 2005 installed and want to compile Qt using the x64
- compiler because the 32-bit and 64-bit compiler both use the same
- \c qmake specification file.
- This is usually done by selecting
- \menu{Microsoft Visual Studio 2005|Visual Studio Tools|<Command Prompt>}
- from the \gui Start menu.
-
- The actual commands needed to build Qt depends on your development
- system. For Microsoft Visual Studio to create the library and
- compile all the demos, examples, tools and tutorials type:
-
-\snippet doc/src/snippets/code/doc_src_installation.qdoc 10
-
- \note If you later need to reconfigure and rebuild Qt from the
- same location, ensure that all traces of the previous configuration are
- removed by entering the build directory and typing \c{nmake distclean}
- before running \c configure again.
-
-\o That's all. Qt is now installed.
-
- If you are new to Qt, we suggest that you take a look at the demos
- and examples to see Qt in action. Run the Qt Examples and Demos
- either by typing \c qtdemo on the command line or through the
- desktop's Start menu.
-
- You might also want to try the following links:
-
- \list
- \o \l{How to Learn Qt}
- \o \l{Tutorials}
- \o \l{Developer Zone}
- \o \l{Deploying Qt Applications}
- \endlist
-
-\endlist
-
- We hope you will enjoy using Qt. Good luck!
-
-*/
-
-/*! \page install-mac.html
-\title Installing Qt on Mac OS X
-\ingroup installation
-\brief How to install Qt on Mac OS X.
-\previouspage Installation
-
-\note Qt for Mac OS X has some requirements that are given in more detail
-in the \l{Qt for Mac OS X Requirements} document.
-
-\bold{Note for the binary package}: If you have the binary package, simply double-click on the Qt.mpkg
-and follow the instructions to install Qt. You can later run the \c{uninstall-qt.py}
-script to uninstall the binary package. The script is located in /Developer/Tools and
-must be run as root.
-
-The following instructions describe how to install Qt from the source package.
-
-\list 1
-\o If you have the commercial edition of Qt, install your license
- file as \c{$HOME/.qt-license}.
-
- For the open source version you do not need a license file.
-
-\o Unpack the archive if you have not done so already. For example,
- if you have the \c{qt-mac-opensource-desktop-%VERSION%.tar.gz}
- package, type the following commands at a command line prompt:
-
-\snippet doc/src/snippets/code/doc_src_installation.qdoc 11
-
- This creates the directory \c{/tmp/qt-mac-opensource-desktop-%VERSION%}
- containing the files from the archive.
-
-\o Building
-
- To configure the Qt library for your machine type, run the
- \c{./configure} script in the package directory.
-
- By default, Qt is configured for installation in the
- \c{/usr/local/Trolltech/Qt-%VERSION%} directory, but this can be
- changed by using the \c{-prefix} option.
-
-\snippet doc/src/snippets/code/doc_src_installation.qdoc 12
-
- Type \c{./configure -help} to get a list of all available options.
-
- Note that you will need to specify \c{-universal} if you want to
- build universal binaries, and also supply a path to the \c{-sdk}
- option if your development machine has a PowerPC CPU. By default,
- Qt is built as a framework, but you can built it as a set of
- dynamic libraries (dylibs) by specifying the \c{-no-framework}
- option.
-
- Qt can also be configured to be built with debugging symbols. This
- process is described in detail in the \l{Debugging Techniques}
- document.
-
- To create the library and compile all the demos, examples, tools,
- and tutorials, type:
-
-\snippet doc/src/snippets/code/doc_src_installation.qdoc 13
-
- If \c{-prefix} is outside the build directory, you need to install
- the library, demos, examples, tools, and tutorials in the appropriate
- place. To do this, type:
-
-\snippet doc/src/snippets/code/doc_src_installation.qdoc 14
-
- as root, if neccessary (note that this requires that you have administrator access
- to your machine).
-
- There is a potential race condition when running make install with multiple
- jobs. It is best to only run one make job (-j1) for the install.
-
- \bold{Note:} If you later need to reconfigure and rebuild Qt from the
- same location, ensure that all traces of the previous configuration are
- removed by entering the build directory and typing \c{make confclean}
- before running \c configure again.
-
-\o Environment variables
-
- In order to use Qt, some environment variables need to be
- extended.
-
-\snippet doc/src/snippets/code/doc_src_installation.qdoc 15
-
- This is done like this:
-
- In \c{.profile} (if your shell is bash), add the following lines:
-
-\snippet doc/src/snippets/code/doc_src_installation.qdoc 16
-
- In \c{.login} (in case your shell is csh or tcsh), add the following line:
-
-\snippet doc/src/snippets/code/doc_src_installation.qdoc 17
-
- If you use a different shell, please modify your environment
- variables accordingly.
-
-\o That's all. Qt is now installed.
-
- If you are new to Qt, we suggest that you take a look at the demos
- and examples to see Qt in action. Run the Qt Examples and Demos
- either by typing \c qtdemo on the command line or through the
- desktop's Start menu.
-
- You might also want to try the following links:
-
- \list
- \o \l{How to Learn Qt}
- \o \l{Tutorials}
- \o \l{Developer Zone}
- \o \l{Deploying Qt Applications}
- \endlist
-\endlist
-
- We hope you will enjoy using Qt. Good luck!
-
-*/
-
-/*! \page install-wince.html
-\title Installing Qt on Windows CE
-\ingroup installation
-\ingroup qtce
-\brief How to install Qt on Windows CE.
-\previouspage Installation
-
-\note Qt for Windows CE has some requirements that are given in more detail
-in the \l{Qt for Windows CE Requirements} document.
-
-\list 1
- \o Uncompress the files into the directory you want to install Qt into;
- e.g., \c{C:\Qt\%VERSION%}.
-
- \note The install path must not contain any spaces.
-
- \o Environment variables
-
- In order to build and use Qt, the \c PATH environment variable needs
- to be extended:
-
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 18
-
- This is done by adding \c{c:\Qt\%VERSION%\bin} to the \c PATH variable.
-
- For newer versions of Windows, \c PATH can be extended through
- "Control Panel->System->Advanced->Environment variables" and for
- older versions by editing \c{c:\autoexec.bat}.
-
- Make sure the enviroment variables for your compiler are set.
- Visual Studio includes \c{vcvars32.bat} for that purpose - or simply
- use the "Visual Studio Command Prompt" from the Start menu.
-
- \o Configuring Qt
-
- To configure Qt for Windows Mobile 5.0 for Pocket PC, type the
- following:
-
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 19
-
- If you want to configure Qt for another platform or with other
- options, type \c{configure -help} to get a list of all available
- options. See the \c README file for the list of supported platforms.
-
-
- \o Building Qt
-
- Now, to build Qt you first have to update your \c PATH, \c INCLUDE
- and \c LIB paths to point to the correct resources for your target
- platforms. For a default installation of the Windows Mobile 5.0
- Pocket PC SDK, this is done with the following commands:
-
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 20
-
- We provide a convenience script for this purpose, called \c{setcepaths}.
- Simply type:
-
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 21
-
- Then to build Qt type:
-
- \snippet doc/src/snippets/code/doc_src_installation.qdoc 22
-
- \o That's all. Qt is now installed.
-
- To get started with Qt, you can check out the examples found in the
- \c{examples} directory of your Qt installation. The documentation can
- be found in \c{doc\html}.
-
- \bold{Remember:} If you reconfigure Qt for a different platform,
- make sure you start with a new clean console to get rid of the
- platform dependent include directories.
-
- The links below provide further information for using Qt:
- \list
- \o \l{How to Learn Qt}
- \o \l{Tutorials}
- \o \l{Developer Zone}
- \o \l{Deploying Qt Applications}
- \endlist
-
- You might also want to try the following Windows CE specific links:
- \list
- \o \l{Windows CE - Introduction to using Qt}
- \o \l{Windows CE - Working with Custom SDKs}
- \o \l{Windows CE - Using shadow builds}
- \endlist
-
- Information on feature and performance tuning for embedded builds can
- be found on the following pages:
- \list
- \o \l{Fine-Tuning Features in Qt}
- \o \l{Qt Performance Tuning}
- \endlist
-\endlist
-
- We hope you will enjoy using Qt. Good luck!
-*/
-
-/*!
- \page requirements.html
- \title General Qt Requirements
- \ingroup installation
- \brief Outlines the general requirements and dependencies needed to install Qt.
-
- This page describes the specific requirements of libraries and components on which
- Qt depends. For information about installing Qt, see the \l{Installation} page.
-
- For information about the platforms that Qt supports, see the \l{Supported Platforms}
- page.
-
- \section1 OpenSSL (version 0.9.7 or later)
-
- Support for \l{SSL}{Secure Sockets Layer (SSL)} communication is provided by the
- \l{OpenSSL Toolkit}, which must be obtained separately.
-
- \section1 Platform-Specific Requirements
-
- Each platform has its own specific set of dependencies. Please see the relevant
- page for more details about the components that are required to build and install
- Qt on your platform.
-
- \list
- \o \l{Qt for Embedded Linux Requirements}
- \o \l{Qt for Mac OS X Requirements}
- \o \l{Qt for Windows CE Requirements}
- \o \l{Qt for Windows Requirements}
- \o \l{Qt for X11 Requirements}
- \endlist
-*/
-
-/*!
- \page requirements-win.html
- \title Qt for Windows Requirements
- \ingroup installation
- \brief Setting up the Windows environment for Qt.
- \previouspage General Qt Requirements
-
- If you are using a binary version of Qt with Visual Studio 2005, you must
- first install the Visual Studio Service Pack 1 available
- \l{http://www.microsoft.com/downloads/details.aspx?FamilyId=BB4A75AB-E2D4-4C96-B39D-37BAF6B5B1DC&amp;displaylang=en}{here}
- to avoid runtime conflicts.
-
- To build Qt with Phonon on Windows, you require:
-
- \list
- \o Microsoft's DirectX Software Development Kit which can be
- downloaded
- \l{http://msdn2.microsoft.com/en-us/directx/aa937788.aspx}{here}, and
- \o Microsoft's Windows Server 2003 R2 Platform SDK which is available
- \l{http://www.microsoft.com/downloads/details.aspx?FamilyID=0baf2b35-c656-4969-ace8-e4c0c0716adb&amp;DisplayLang=en}{here}.
- \endlist
-
- \sa {Known Issues in %VERSION%}
-*/
-
-/*!
- \page requirements-mac.html
- \title Qt for Mac OS X Requirements
- \ingroup installation
- \brief Setting up the Mac OS X environment for Qt.
- \previouspage General Qt Requirements
-
- \sa {Known Issues in %VERSION%}
-*/
-
-/*!
- \page requirements-x11.html
- \title Qt for X11 Requirements
- \ingroup installation
- \brief Setting up the X11 environment for Qt.
- \previouspage General Qt Requirements
-
- \tableofcontents
-
- \section1 QtGui Dependencies
-
- \image x11_dependencies.png Qt for X11 Dependencies
-
- \raw HTML
- <style type="text/css" id="colorstyles">
- #QtGuiColor { background-color: #98fd00; color: black }
- #QtCoreColor { background-color: #9c9cff; color: black }
- #DefaultColor { background-color: #f6f6dc; color: black }
- #FreetypeColor { background-color: #e6e6fa; color: black }
- #GLColor { background-color: #ffc0cb; color: black }
- #PthreadColor { background-color: #bdb76b; color: black }
- #OptionalColor { background-color: #cae1ff; color: black }
- #SMColor { background-color: #c2fafa; color: black }
- #MiscColor { background-color: #f0f9ff; color: black }
- #GlibColor { background-color: #b3b3b3; color: black }
- </style>
- \endraw
-
- The QtGui module and the QtCore module, which provides the non-GUI features required
- by QtGui, depend on the libraries described in the following table. To build
- Qt from its source code, you will also need to install the development
- packages for these libraries for your system.
-
- \table 90%
- \header \o Name \o Library \o Notes \o Configuration options \o Minimum working version
- \raw HTML
- <tr id="OptionalColor">
- <td> XRender </td><td> libXrender </td><td> X Rendering Extension; used for anti-aliasing</td>
- <td><tt>-xrender</tt> or auto-detected</td><td>0.9.0</td>
- </tr><tr id="OptionalColor">
- <td> Xrandr </td><td> libXrandr </td><td> X Resize and Rotate Extension</td>
- <td><tt>-xrandr</tt> or auto-detected</td><td>1.0.2</td>
- </tr><tr id="OptionalColor">
- <td> Xcursor </td><td> libXcursor </td><td> X Cursor Extension</td>
- <td><tt>-xcursor</tt> or auto-detected</td><td>1.1.4</td>
- </tr><tr id="OptionalColor">
- <td> Xfixes </td><td> libXfixes </td><td> X Fixes Extension</td>
- <td><tt>-xfixes</tt> or auto-detected</td><td>3.0.0</td>
- </tr><tr id="OptionalColor">
- <td> Xinerama </td><td> libXinerama </td><td> Multi-head support</td>
- <td><tt>-xinerama</tt> or auto-detected</td><td>1.1.0</td>
-
- </tr><tr id="OptionalColor">
- <td> Fontconfig </td><td> libfontconfig </td><td> Font customization and configuration</td>
- <td><tt>-fontconfig</tt> or auto-detected</td><td>2.1</td>
- </tr><tr id="OptionalColor">
- <td> FreeType </td><td> libfreetype </td><td> Font engine</td>
- <td></td><td>2.1.3</td>
-
- </tr><tr id="DefaultColor">
- <td> Xi </td><td> libXi </td><td> X11 Input Extensions</td>
- <td><tt>-xinput</tt> or auto-detected</td><td>1.3.0</td>
- </tr><tr id="DefaultColor">
- <td> Xt </td><td> libXt </td><td> Xt Intrinsics</td><td></td><td>0.99</td>
- </tr><tr id="DefaultColor">
- <td> Xext </td><td> libXext </td><td> X Extensions</td><td></td><td>6.4.3</td>
- </tr><tr id="DefaultColor">
- <td> X11 </td><td> libX11 </td><td> X11 Client-Side Library</td><td></td><td>6.2.1</td>
-
- </tr><tr id="SMColor">
- <td> SM </td><td> libSM </td><td> X Session Management</td>
- <td><tt>-sm</tt> or auto-detected</td><td>6.0.4</td>
- </tr><tr id="SMColor">
- <td> ICE </td><td> libICE </td><td> Inter-Client Exchange</td>
- <td><tt>-sm</tt> or auto-detected</td><td>6.3.5</td>
-
- </tr><tr id="GlibColor">
- <td> glib </td><td> libglib-2.0 </td><td> Common event loop handling</td>
- <td><tt>-glib</tt> or auto-detected</td><td>2.8.3</td>
- </tr><tr id="PthreadColor">
- <td> pthread </td><td> libpthread </td><td> Multithreading</td>
- <td></td><td>2.3.5</td>
- </tr>
- \endraw
- \endtable
-
- \note You must compile with XRender support to get alpha transparency
- support for pixmaps and images.
-
- Development packages for these libraries contain header files that are used
- when building Qt from its source code. On Debian-based GNU/Linux systems,
- for example, we recommend that you install the following development
- packages:
-
- \list
- \o libfontconfig1-dev
- \o libfreetype6-dev
- \o libx11-dev
- \o libxcursor-dev
- \o libxext-dev
- \o libxfixes-dev
- \o libxft-dev
- \o libxi-dev
- \o libxrandr-dev
- \o libxrender-dev
- \endlist
-
- Some of these packages depend on others in this list, so installing one
- may cause others to be automatically installed. Other distributions may
- provide system packages with similar names.
-
- \section1 Phonon Dependencies
-
- As described in the \l{Phonon Overview}, Phonon uses the GStreamer multimedia
- framework as the backend for audio and video playback on X11. The minimum required
- version of GStreamer is 0.10.
-
- To build Phonon, you need the GStreamer library, base plugins, and development
- files for your system. The package names for GStreamer vary between Linux
- distributions; try searching for \c gstreamer or \c libgstreamer in your
- distribution's package repository to find suitable packages.
-
- \sa {Known Issues in %VERSION%}
-*/
-
-/*!
- \page requirements-wince.html
- \title Qt for Windows CE Requirements
- \ingroup installation
- \brief Setting up the Windows CE environment for Qt.
- \previouspage General Qt Requirements
-
- Qt is known to work with Visual Studio 2005 and the following SDKs for
- Windows CE development on Windows XP and Windows Vista:
-
- \list
- \o Windows CE 5.0 Standard SDK for ARM, X86, and MIPS
- \o Windows CE 6.0 SDKs for ARM generated using the defaults found in
- Platform Builder
- \o Windows Mobile 5.0 (\e{Pocket PC}, \e{Smartphone} and
- \e{Pocket PC with Phone} editions)
- \o Windows Mobile 6.0 (\e{Standard}, \e{Classic} and
- \e{Professional} editions)
- \endlist
-
- Below is a list of links to download the SDKs:
-
- \list
- \o \l{http://www.microsoft.com/downloads/details.aspx?familyid=fa1a3d66-3f61-4ddc-9510-ae450e2318c3&amp;displaylang=en}
- {Windows CE 5 Standard SDK}
- \o \l{http://www.microsoft.com/downloads/details.aspx?familyid=83A52AF2-F524-4EC5-9155-717CBE5D25ED&amp;displaylang=en}
- {Windows Mobile 5 Pocket PC}
- \o \l{http://www.microsoft.com/downloads/details.aspx?familyid=DC6C00CB-738A-4B97-8910-5CD29AB5F8D9&amp;displaylang=en}
- {Windows Mobile 5 Smartphone}
- \o \l{http://www.microsoft.com/downloads/details.aspx?familyid=06111A3A-A651-4745-88EF-3D48091A390B&amp;displaylang=en }
- {Windows Mobile 6 Professional/Standard}
- \endlist
-
- \table
- \row \bold{Note:}
- \o
- \list 1
- \o Currently, there is only compile support for Windows CE 5.0
- Standard SDK for SH-4.
- \o There is currently no "out of the box" support for the
- Windows CE Automotive or Portable Media SDKs from Microsoft.
- \endlist
- \endtable
-
-
- Device manufacturers may prefer to make their own customized version of
- Windows CE using Platform Builder. In order for Qt for Windows CE to
- support a custom SDK, a build specification needs to be created. More
- information on Windows CE Customization can be found
- \l{Windows CE - Working with Custom SDKs}{here}.
-
- \sa {Known Issues in %VERSION%}
-*/
-
-/*!
- \page requirements-embedded-linux.html
- \title Qt for Embedded Linux Requirements
- \ingroup installation
- \brief Setting up the Embedded Linux environment for Qt.
- \previouspage General Qt Requirements
-
- \sa {Known Issues in %VERSION%}
-
- \section1 Building Qt for Embedded Linux with uclibc
-
- If you intend to include the QtWebKit module in your Qt build then you should
- use version \bold{uClibc 0.9.29 or greater} as that is the earliest version
- with sufficient pthread support.
-
- \section1 Memory Requirements
-
- The memory and storage requirements for Qt for Embedded Linux depend on a
- an variety of different factors, including the target architecture and the
- features enabled in the Qt build.
-
- The following table shows typical library sizes for the most common Qt
- libraries on different architectures, built in release mode with different
- feature profiles.
-
- \table
- \header \o{1,2} Architecture \o{1,2} Compiler \o{2,1} QtCore \o{2,1} QtGui \o{2,1} QtNetwork \o{2,1} QtWebKit
- \header \o Minimal \o Normal \o Minimal \o Normal \o Minimal \o Normal \o Minimal \o Normal
- \row \o linux-x86-g++ \o GCC 4.2.4 \o 1.7M \o 2.7M \o 3.3M \o 9.9M \o 653K \o 1.1M \o N/A \o 17M
- \row \o linux-arm-g++ \o GCC 4.1.1 \o 1.9M \o 3.2M \o 4.1M \o 11M \o 507K \o 1.0M \o N/A \o 17M
- \row \o linux-mips-g++ (MIPS32)
- \o GCC 4.2.4 \o 2.0M \o 3.2M \o 4.5M \o 12M \o 505K \o 1003K \o N/A \o 21M
- \endtable
-
- Library sizes are given in the following units: K = 1024 bytes; M = 1024K.
- QtWebKit is excluded from the minimal configuration.
-
- The \l{Fine-Tuning Features in Qt} document covers the process of configuring
- Qt builds to avoid the inclusion of unnecessary features.
-
- \section1 Additional X11 Libraries for QVFb
-
- The Virtual Framebuffer (QVFb) application requires the \c libxtst library
- in addition to the libraries used to build Qt for X11. This library
- enables the use of the Record extension to the X protocol to be used in
- applications.
-*/
diff --git a/doc/src/internationalization/i18n.qdoc b/doc/src/internationalization/i18n.qdoc
new file mode 100644
index 000000000..ecc25fe0e
--- /dev/null
+++ b/doc/src/internationalization/i18n.qdoc
@@ -0,0 +1,786 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group i18n
+ \title Qt Classes for Internationalization
+
+ See \l{Internationalization with Qt} for information on how to use these classes
+ in your applications.
+*/
+
+/*!
+ \page internationalization.html
+ \title Internationalization with Qt
+ \brief Information about Qt's support for internationalization and multiple languages.
+ \nextpage Writing Source Code for Translation
+
+ \keyword internationalization
+ \keyword i18n
+
+ The internationalization of an application is the process of making
+ the application usable by people in countries other than one's own.
+
+ \tableofcontents
+
+ \section1 Relevant Qt Classes and APIs
+
+ These classes support internationalizing of Qt applications.
+
+ \annotatedlist i18n
+
+ \section1 Languages and Writing Systems
+
+ In some cases internationalization is simple, for example, making a US
+ application accessible to Australian or British users may require
+ little more than a few spelling corrections. But to make a US
+ application usable by Japanese users, or a Korean application usable
+ by German users, will require that the software operate not only in
+ different languages, but use different input techniques, character
+ encodings and presentation conventions.
+
+ Qt tries to make internationalization as painless as possible for
+ developers. All input widgets and text drawing methods in Qt offer
+ built-in support for all supported languages. The built-in font engine
+ is capable of correctly and attractively rendering text that contains
+ characters from a variety of different writing systems at the same
+ time.
+
+ Qt supports most languages in use today, in particular:
+ \list
+ \o All East Asian languages (Chinese, Japanese and Korean)
+ \o All Western languages (using Latin script)
+ \o Arabic
+ \o Cyrillic languages (Russian, Ukrainian, etc.)
+ \o Greek
+ \o Hebrew
+ \o Thai and Lao
+ \o All scripts in Unicode 5.1 that do not require special processing
+ \endlist
+
+ On Windows, Unix/X11 with FontConfig (client side font support)
+ and Qt for Embedded Linux the following languages are also supported:
+ \list
+ \o Bengali
+ \o Devanagari
+ \o Dhivehi (Thaana)
+ \o Gujarati
+ \o Gurmukhi
+ \o Kannada
+ \o Khmer
+ \o Malayalam
+ \o Myanmar
+ \o Syriac
+ \o Tamil
+ \o Telugu
+ \o Tibetan
+ \o N'Ko
+ \endlist
+
+ Many of these writing systems exhibit special features:
+
+ \list
+
+ \o \bold{Special line breaking behavior.} Some of the Asian languages are
+ written without spaces between words. Line breaking can occur either
+ after every character (with exceptions) as in Chinese, Japanese and
+ Korean, or after logical word boundaries as in Thai.
+
+ \o \bold{Bidirectional writing.} Arabic and Hebrew are written from right to
+ left, except for numbers and embedded English text which is written
+ left to right. The exact behavior is defined in the
+ \l{http://www.unicode.org/unicode/reports/tr9/}{Unicode Technical Annex #9}.
+
+ \o \bold{Non-spacing or diacritical marks (accents or umlauts in European
+ languages).} Some languages such as Vietnamese make extensive use of
+ these marks and some characters can have more than one mark at the
+ same time to clarify pronunciation.
+
+ \o \bold{Ligatures.} In special contexts, some pairs of characters get
+ replaced by a combined glyph forming a ligature. Common examples are
+ the fl and fi ligatures used in typesetting US and European books.
+
+ \endlist
+
+ Qt tries to take care of all the special features listed above. You
+ usually don't have to worry about these features so long as you use
+ Qt's input widgets (e.g. QLineEdit, QTextEdit, and derived classes)
+ and Qt's display widgets (e.g. QLabel).
+
+ Support for these writing systems is transparent to the
+ programmer and completely encapsulated in \l{rich text
+ processing}{Qt's text engine}. This means that you don't need to
+ have any knowledge about the writing system used in a particular
+ language, except for the following small points:
+
+ \list
+
+ \o QPainter::drawText(int x, int y, const QString &str) will always
+ draw the string with its left edge at the position specified with
+ the x, y parameters. This will usually give you left aligned strings.
+ Arabic and Hebrew application strings are usually right
+ aligned, so for these languages use the version of drawText() that
+ takes a QRect since this will align in accordance with the language.
+
+ \o When you write your own text input controls, use QTextLayout.
+ In some languages (e.g. Arabic or languages from the Indian
+ subcontinent), the width and shape of a glyph changes depending on the
+ surrounding characters, which QTextLayout takes into account.
+ Writing input controls usually requires a certain knowledge of the
+ scripts it is going to be used in. Usually the easiest way is to
+ subclass QLineEdit or QTextEdit.
+
+ \endlist
+
+ The following sections give some information on the status of the
+ internationalization (i18n) support in Qt. See also the \l{Qt
+ Linguist manual}.
+
+ \section1 Step by Step
+
+ Writing cross-platform international software with Qt is a gentle,
+ incremental process. Your software can become internationalized in
+ the following stages:
+
+ \section2 Use QString for All User-Visible Text
+
+ Since QString uses the Unicode 5.1 encoding internally, every
+ language in the world can be processed transparently using
+ familiar text processing operations. Also, since all Qt functions
+ that present text to the user take a QString as a parameter,
+ there is no \c{char *} to QString conversion overhead.
+
+ Strings that are in "programmer space" (such as QObject names
+ and file format texts) need not use QString; the traditional
+ \c{char *} or the QByteArray class will suffice.
+
+ You're unlikely to notice that you are using Unicode;
+ QString, and QChar are just like easier versions of the crude
+ \c{const char *} and char from traditional C.
+
+ \section2 Use tr() for All Literal Text
+
+ Wherever your program uses "quoted text" for text that will
+ be presented to the user, ensure that it is processed by the \l
+ QCoreApplication::translate() function. Essentially all that is necessary
+ to achieve this is to use QObject::tr(). For example, assuming the
+ \c LoginWidget is a subclass of QWidget:
+
+ \snippet doc/src/snippets/code/doc_src_i18n.qdoc 0
+
+ This accounts for 99% of the user-visible strings you're likely to
+ write.
+
+ If the quoted text is not in a member function of a
+ QObject subclass, use either the tr() function of an
+ appropriate class, or the QCoreApplication::translate() function
+ directly:
+
+ \snippet doc/src/snippets/code/doc_src_i18n.qdoc 1
+
+ If you need to have translatable text completely
+ outside a function, there are two macros to help: QT_TR_NOOP()
+ and QT_TRANSLATE_NOOP(). They merely mark the text for
+ extraction by the \c lupdate utility described below.
+ The macros expand to just the text (without the context).
+
+ Example of QT_TR_NOOP():
+
+ \snippet doc/src/snippets/code/doc_src_i18n.qdoc 2
+
+ Example of QT_TRANSLATE_NOOP():
+
+ \snippet doc/src/snippets/code/doc_src_i18n.qdoc 3
+
+ If you disable the \c{const char *} to QString automatic
+ conversion by compiling your software with the macro \c
+ QT_NO_CAST_FROM_ASCII defined, you'll be very likely to catch any
+ strings you are missing. See QString::fromLatin1() for more
+ information. Disabling the conversion can make programming a bit
+ cumbersome.
+
+ If your source language uses characters outside Latin1, you
+ might find QObject::trUtf8() more convenient than
+ QObject::tr(), as tr() depends on the
+ QTextCodec::codecForTr(), which makes it more fragile than
+ QObject::trUtf8().
+
+ \section2 Use QKeySequence() for Accelerator Values
+
+ Accelerator values such as Ctrl+Q or Alt+F need to be translated
+ too. If you hardcode Qt::CTRL + Qt::Key_Q for "quit" in your
+ application, translators won't be able to override it. The
+ correct idiom is
+
+ \snippet examples/mainwindows/application/mainwindow.cpp 20
+
+ \section2 Use QString::arg() for Dynamic Text
+
+ The QString::arg() functions offer a simple means for substituting
+ arguments:
+ \snippet doc/src/snippets/code/doc_src_i18n.qdoc 4
+
+ In some languages the order of arguments may need to change, and this
+ can easily be achieved by changing the order of the % arguments. For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_i18n.qdoc 5
+
+ produces the correct output in English and Norwegian:
+ \snippet doc/src/snippets/code/doc_src_i18n.qdoc 6
+
+ \section2 Produce Translations
+
+ Once you are using tr() throughout an application, you can start
+ producing translations of the user-visible text in your program.
+
+ The \l{Qt Linguist manual} provides further information about
+ Qt's translation tools, \e{Qt Linguist}, \c lupdate and \c
+ lrelease.
+
+ Translation of a Qt application is a three-step process:
+
+ \list 1
+
+ \o Run \c lupdate to extract translatable text from the C++
+ source code of the Qt application, resulting in a message file
+ for translators (a TS file). The utility recognizes the tr()
+ construct and the \c{QT_TR*_NOOP()} macros described above and
+ produces TS files (usually one per language).
+
+ \o Provide translations for the source texts in the TS file, using
+ \e{Qt Linguist}. Since TS files are in XML format, you can also
+ edit them by hand.
+
+ \o Run \c lrelease to obtain a light-weight message file (a QM
+ file) from the TS file, suitable only for end use. Think of the TS
+ files as "source files", and QM files as "object files". The
+ translator edits the TS files, but the users of your application
+ only need the QM files. Both kinds of files are platform and
+ locale independent.
+
+ \endlist
+
+ Typically, you will repeat these steps for every release of your
+ application. The \c lupdate utility does its best to reuse the
+ translations from previous releases.
+
+ Before you run \c lupdate, you should prepare a project file. Here's
+ an example project file (\c .pro file):
+
+ \snippet doc/src/snippets/code/doc_src_i18n.qdoc 7
+
+ When you run \c lupdate or \c lrelease, you must give the name of the
+ project file as a command-line argument.
+
+ In this example, four exotic languages are supported: Danish,
+ Finnish, Norwegian and Swedish. If you use \l{qmake}, you usually
+ don't need an extra project file for \c lupdate; your \c qmake
+ project file will work fine once you add the \c TRANSLATIONS
+ entry.
+
+ In your application, you must \l QTranslator::load() the translation
+ files appropriate for the user's language, and install them using \l
+ QCoreApplication::installTranslator().
+
+ \c linguist, \c lupdate and \c lrelease are installed in the \c bin
+ subdirectory of the base directory Qt is installed into. Click Help|Manual
+ in \e{Qt Linguist} to access the user's manual; it contains a tutorial
+ to get you started.
+
+ \target qt-itself
+ Qt itself contains over 400 strings that will also need to be
+ translated into the languages that you are targeting. You will find
+ translation files for French, German and Simplified Chinese in
+ \c{$QTDIR/translations}, as well as a template for translating to
+ other languages. (This directory also contains some additional
+ unsupported translations which may be useful.)
+
+ Typically, your application's \c main() function will look like
+ this:
+
+ \snippet doc/src/snippets/code/doc_src_i18n.qdoc 8
+
+ Note the use of QLibraryInfo::location() to locate the Qt translations.
+ Developers should request the path to the translations at run-time by
+ passing QLibraryInfo::TranslationsPath to this function instead of
+ using the \c QTDIR environment variable in their applications.
+
+ \section2 Support for Encodings
+
+ The QTextCodec class and the facilities in QTextStream make it easy to
+ support many input and output encodings for your users' data. When an
+ application starts, the locale of the machine will determine the 8-bit
+ encoding used when dealing with 8-bit data: such as for font
+ selection, text display, 8-bit text I/O, and character input.
+
+ The application may occasionally require encodings other than the
+ default local 8-bit encoding. For example, an application in a
+ Cyrillic KOI8-R locale (the de-facto standard locale in Russia) might
+ need to output Cyrillic in the ISO 8859-5 encoding. Code for this
+ would be:
+
+ \snippet doc/src/snippets/code/doc_src_i18n.qdoc 9
+
+ For converting Unicode to local 8-bit encodings, a shortcut is
+ available: the QString::toLocal8Bit() function returns such 8-bit
+ data. Another useful shortcut is QString::toUtf8(), which returns
+ text in the 8-bit UTF-8 encoding: this perfectly preserves
+ Unicode information while looking like plain ASCII if the text is
+ wholly ASCII.
+
+ For converting the other way, there are the QString::fromUtf8() and
+ QString::fromLocal8Bit() convenience functions, or the general code,
+ demonstrated by this conversion from ISO 8859-5 Cyrillic to Unicode
+ conversion:
+
+ \snippet doc/src/snippets/code/doc_src_i18n.qdoc 10
+
+ Ideally Unicode I/O should be used as this maximizes the portability
+ of documents between users around the world, but in reality it is
+ useful to support all the appropriate encodings that your users will
+ need to process existing documents. In general, Unicode (UTF-16 or
+ UTF-8) is best for information transferred between arbitrary people,
+ while within a language or national group, a local standard is often
+ more appropriate. The most important encoding to support is the one
+ returned by QTextCodec::codecForLocale(), as this is the one the user
+ is most likely to need for communicating with other people and
+ applications (this is the codec used by local8Bit()).
+
+ Qt supports most of the more frequently used encodings natively. For a
+ complete list of supported encodings see the \l QTextCodec
+ documentation.
+
+ In some cases and for less frequently used encodings it may be
+ necessary to write your own QTextCodec subclass. Depending on the
+ urgency, it may be useful to contact Qt's technical support team or
+ ask on the \c qt-interest mailing list to see if someone else is
+ already working on supporting the encoding.
+
+ \keyword localization
+
+ \section2 Localize
+
+ Localization is the process of adapting to local conventions, for
+ example presenting dates and times using the locally preferred
+ formats. Such localizations can be accomplished using appropriate tr()
+ strings.
+
+ \snippet doc/src/snippets/code/doc_src_i18n.qdoc 11
+
+ In the example, for the US we would leave the translation of
+ "AMPM" as it is and thereby use the 12-hour clock branch; but in
+ Europe we would translate it as something else and this will make
+ the code use the 24-hour clock branch.
+
+ For localized numbers use the QLocale class.
+
+ Localizing images is not recommended. Choose clear icons that are
+ appropriate for all localities, rather than relying on local puns or
+ stretched metaphors. The exception is for images of left and right
+ pointing arrows which may need to be reversed for Arabic and Hebrew
+ locales.
+
+ \section1 Dynamic Translation
+
+ Some applications, such as Qt Linguist, must be able to support changes
+ to the user's language settings while they are still running. To make
+ widgets aware of changes to the installed QTranslators, reimplement the
+ widget's \l{QWidget::changeEvent()}{changeEvent()} function to check whether
+ the event is a \l{QEvent::LanguageChange}{LanguageChange} event, and update
+ the text displayed by widgets using the \l{QObject::tr()}{tr()} function
+ in the usual way. For example:
+
+ \snippet doc/src/snippets/code/doc_src_i18n.qdoc 12
+
+ All other change events should be passed on by calling the default
+ implementation of the function.
+
+ The list of installed translators might change in reaction to a
+ \l{QEvent::LocaleChange}{LocaleChange} event, or the application might
+ provide a user interface that allows the user to change the current
+ application language.
+
+ The default event handler for QWidget subclasses responds to the
+ QEvent::LanguageChange event, and will call this function when necessary.
+
+ \l{QEvent::LanguageChange}{LanguageChange} events are posted when a new
+ translation is installed using the QCoreApplication::installTranslator()
+ function. Additionally, other application components can also force
+ widgets to update themselves by posting LanguageChange events to them.
+
+
+ \section1 Translating Non-Qt Classes
+
+ It is sometimes necessary to provide internationalization support for
+ strings used in classes that do not inherit QObject or use the Q_OBJECT
+ macro to enable translation features. Since Qt translates strings at
+ run-time based on the class they are associated with and \c lupdate
+ looks for translatable strings in the source code, non-Qt classes must
+ use mechanisms that also provide this information.
+
+ One way to do this is to add translation support to a non-Qt class
+ using the Q_DECLARE_TR_FUNCTIONS() macro; for example:
+
+ \snippet doc/src/snippets/i18n-non-qt-class/myclass.h 0
+ \dots
+ \snippet doc/src/snippets/i18n-non-qt-class/myclass.h 1
+
+ This provides the class with \l{QObject::}{tr()} functions that can
+ be used to translate strings associated with the class, and makes it
+ possible for \c lupdate to find translatable strings in the source
+ code.
+
+ Alternatively, the QCoreApplication::translate() function can be called
+ with a specific context, and this will be recognized by \c lupdate and
+ Qt Linguist.
+
+ \section1 System Support
+
+ Some of the operating systems and windowing systems that Qt runs on
+ only have limited support for Unicode. The level of support available
+ in the underlying system has some influence on the support that Qt can
+ provide on those platforms, although in general Qt applications need
+ not be too concerned with platform-specific limitations.
+
+ \section2 Unix/X11
+
+ \list
+ \o Locale-oriented fonts and input methods. Qt hides these and
+ provides Unicode input and output.
+ \o Filesystem conventions such as
+ \l{http://www.ietf.org/rfc/rfc2279.txt}{UTF-8}
+ are under development in some Unix variants. All Qt file
+ functions allow Unicode, but convert filenames to the local
+ 8-bit encoding, as this is the Unix convention (see
+ QFile::setEncodingFunction() to explore alternative
+ encodings).
+ \o File I/O defaults to the local 8-bit encoding,
+ with Unicode options in QTextStream.
+ \o Many Unix distributions contain only partial support for some locales.
+ For example, if you have a \c /usr/share/locale/ja_JP.EUC directory,
+ this does not necessarily mean you can display Japanese text; you also
+ need JIS encoded fonts (or Unicode fonts), and the
+ \c /usr/share/locale/ja_JP.EUC directory needs to be complete. For
+ best results, use complete locales from your system vendor.
+ \endlist
+
+ \section2 Windows
+
+ \list
+ \o Qt provides full Unicode support, including input methods, fonts,
+ clipboard, drag-and-drop and file names.
+ \o File I/O defaults to Latin1, with Unicode options in QTextStream.
+ Note that some Windows programs do not understand big-endian
+ Unicode text files even though that is the order prescribed by
+ the Unicode Standard in the absence of higher-level protocols.
+ \o Unlike programs written with MFC or plain winlib, Qt programs
+ are portable between Windows 98 and Windows NT.
+ \e {You do not need different binaries to support Unicode.}
+ \endlist
+
+ \section2 Mac OS X
+
+ For details on Mac-specific translation, refer to the Qt/Mac Specific Issues
+ document \l{Qt for Mac OS X - Specific Issues#Translating the Application Menu and Native Dialogs}{here}.
+*/
+
+/*!
+ \page i18n-source-translation.html
+ \title Writing Source Code for Translation
+ \ingroup i18n
+ \previouspage Internationalization with Qt
+ \contentspage Internationalization with Qt
+ \nextpage Translation Rules for Plurals
+ \brief How to write source code in a way that makes it possible for user-visible text to be translated.
+
+ \tableofcontents
+
+ \section1 The Basics
+
+ Developers use the \l{QObject::}{tr()} function to obtain translated text
+ for their classes, typically for display purposes. This function is also
+ used to indicate which text strings in an application are translatable.
+
+ Qt indexes each translatable string by the \e{translation context} it is
+ associated with; this is generally the name of the QObject subclass it is
+ used in.
+
+ Translation contexts are defined for new QObject-based classes by the use
+ of the Q_OBJECT macro in each new class definition.
+
+ When tr() is called, it looks up the translatable string using a QTranslator
+ object. For translation to work, one or more of these must have been
+ installed on the application object in the way described in the
+ \l{#Enabling Translation}{Enabling Translation} section below.
+
+ \section1 Defining a Translation Context
+
+ The translation context for QObject and each QObject subclass is the
+ class name itself. Developers subclassing QObject must use the
+ Q_OBJECT macro in their class definition to override the translation
+ context. This macro sets the context to the name of the subclass.
+
+ For example, the following class definition includes the Q_OBJECT macro,
+ implementing a new tr() that uses the \c MainWindow context:
+
+ \snippet mainwindows/sdi/mainwindow.h class definition with macro
+ \dots
+
+ If Q_OBJECT is not used in a class definition, the context will be
+ inherited from the base class. For example, since all QObject-based
+ classes in Qt provide a context, a new QWidget subclass defined without
+ a Q_OBJECT macro will use the \c QWidget context if its tr() function
+ is invoked.
+
+ \section1 Using tr() to Obtain a Translation
+
+ The following example shows how a translation is obtained for the
+ class shown in the previous section:
+
+ \snippet mainwindows/sdi/mainwindow.cpp implicit tr context
+ \dots
+
+ Here, the translation context is \c MainWindow because it is the
+ \c MainWindow::tr() function that is invoked. The text returned
+ by the tr() function is a translation of "&File" obtained from
+ the \c MainWindow context.
+
+ When Qt's translation tool, \l lupdate, is used to process a set of source
+ files, the text wrapped in tr() calls is stored in a section of the translation
+ file that corresponds to its translation context.
+
+ In some situations, it is useful to give a translation context explicitly
+ by fully qualifying the call to tr(); for example:
+
+ \snippet doc/src/snippets/code/src_corelib_kernel_qobject.cpp explicit tr context
+
+ This call obtains the translated text for "Page up" from the \c QScrollBar
+ context. Developers can also use the QCoreApplication::translate() function
+ to obtain a translation for a particular translation context.
+
+ \section1 Translator Comments
+
+ Developers can include information about each translatable string to
+ help translators with the translation process. These are extracted
+ when \l lupdate is used to process the source files. The recommended
+ way to add comments is to annotate the tr() calls in your code with
+ comments of the form:
+
+ \tt{//: ...}
+
+ or
+
+ \tt{\begincomment: ... \endcomment}
+
+ Examples:
+
+ \snippet doc/src/snippets/code/src_corelib_kernel_qobject.cpp 40
+
+ In these examples, the comments will be associated with the strings
+ passed to tr() in the context of each call.
+
+ \section1 Adding Meta-Data to Strings
+
+ Additional data can be attached to each translatable message. These are
+ extracted when \l lupdate is used to process the source files. The
+ recommended way to add meta-data is to annotate the tr() calls in your code
+ with comments of the form:
+
+ \tt{//= <id>}
+
+ This can be used to give the message a unique identifier to support tools
+ which need it.
+
+ An alternative way to attach meta-data is to use the following syntax:
+
+ \tt{//~ <field name> <field contents>}
+
+ This can be used to attach meta-data to the message. The field name should
+ consist of a domain prefix (possibly the conventional file extension of the
+ file format the field is inspired by), a hyphen and the actual field name
+ in underscore-delimited notation. For storage in TS files, the field name
+ together with the prefix "extra-" will form an XML element name. The field
+ contents will be XML-escaped, but otherwise appear verbatim as the
+ element's contents. Any number of unique fields can be added to each
+ message.
+
+ Example:
+
+ \snippet doc/src/snippets/code/src_corelib_kernel_qobject.cpp meta data
+
+ Meta-data appearing right in front of a magic TRANSLATOR comment applies to
+ the whole TS file.
+
+ \section1 Disambiguation
+
+ If the same translatable string is used in different roles within the same
+ translation context, an additional identifying string may be passed in
+ the call to \l{QObject::}{tr()}. This optional disambiguation argument
+ is used to distinguish between otherwise identical strings.
+
+ Example:
+
+ \snippet doc/src/snippets/code/src_corelib_kernel_qobject.cpp 17
+ \dots
+
+ In Qt 4.4 and earlier, this disambiguation parameter was the preferred
+ way to specify comments to translators.
+
+ \section1 Character Encodings
+
+ You can set the encoding for the source text by calling QTextCodec::setCodecForTr().
+ By default, the source text is assumed to be in Latin-1 encoding.
+
+ \section1 Handling Plurals
+
+ Some translatable strings contain placeholders for integer values and need
+ to be translated differently depending on the values in use.
+
+ To help with this problem, developers pass an additional integer argument
+ to the \l{QObject::}{tr()} function, and typically use a special notation
+ for plurals in each translatable string.
+
+ If this argument is equal or greater than zero, all occurrences of
+ \c %n in the resulting string are replaced with a decimal representation
+ of the value supplied. In addition, the translation used will adapt to the
+ value according to the rules for each language.
+
+ Example:
+
+ \snippet doc/src/snippets/code/src_corelib_kernel_qobject.cpp 18
+
+ The table below shows what string is returned depending on the
+ active translation:
+
+ \table
+ \header \o \o{3,1} Active Translation
+ \header \o \a n \o No Translation \o French \o English
+ \row \o 0 \o "0 message(s) saved" \o "0 message sauvegard\unicode{0xE9}" \o "0 message\bold{s} saved"
+ \row \o 1 \o "1 message(s) saved" \o "1 message sauvegard\unicode{0xE9}" \o "1 message saved"
+ \row \o 2 \o "2 message(s) saved" \o "2 message\bold{s} sauvegard\unicode{0xE9}\bold{s}" \o "2 message\bold{s} saved"
+ \row \o 37 \o "37 message(s) saved" \o "37 message\bold{s} sauvegard\unicode{0xE9}\bold{s}" \o "37 message\bold{s} saved"
+ \endtable
+
+ This idiom is more flexible than the traditional approach; e.g.,
+
+ \snippet doc/src/snippets/code/src_corelib_kernel_qobject.cpp 19
+
+ because it also works with target languages that have several
+ plural forms (e.g., Irish has a special "dual" form that should
+ be used when \c n is 2), and it handles the \e n == 0 case
+ correctly for languages such as French that require the singular.
+ See the \l{Qt Linguist Manual} for details.
+
+ Instead of \c %n, you can use \c %Ln to produce a localized
+ representation of \a n. The conversion uses the default locale,
+ set using QLocale::setDefault(). (If no default locale was
+ specified, the "C" locale is used.)
+
+ A summary of the rules used to translate strings containing plurals can be
+ found in the \l{Translation Rules for Plurals} document.
+
+ \section1 Enabling Translation
+
+ Typically, your application's \c main() function will look like
+ this:
+
+ \snippet doc/src/snippets/code/doc_src_i18n.qdoc 8
+
+ Note the use of QLibraryInfo::location() to locate the Qt translations.
+ Developers should request the path to the translations at run-time by
+ passing QLibraryInfo::TranslationsPath to this function instead of
+ using the \c QTDIR environment variable in their applications.
+
+ \section1 Further Reading
+
+ \l{Qt Linguist Manual}, \l{Hello tr Example}, \l{Translation Rules for Plurals}
+*/
+
+/*!
+ \page i18n-plural-rules.html
+ \title Translation Rules for Plurals
+ \ingroup i18n
+ \previouspage Writing Source Code for Translation
+ \contentspage Internationalization with Qt
+ \brief A summary of the translation rules for plurals produced by Qt's i18n tools.
+
+ The table below shows the specific rules that are produced by Qt Linguist
+ and \c lrelease for a selection of languages. Cells marked \e otherwise
+ indicate the form used when none of the other rules are appropriate for a
+ specific language.
+
+ \table 80%
+ \header \o Language \o Rule 1 \o Rule 2 \o Rule 3
+ \row \o English \o \c{n == 1}
+ \o \e{otherwise} \o N/A
+ \row \o French \o \c{n < 2}
+ \o \e{otherwise} \o N/A
+ \row \o Czech \o \c{n % 100 == 1}
+ \o \c{n % 100 >= 2 && n % 100 <= 4}
+ \o \e{otherwise}
+ \row \o Irish \o \c{n == 1}
+ \o \c{n == 2} \o \e{otherwise}
+ \row \o Latvian \o \c{n % 10 == 1&& n % 100 != 11}
+ \o \c{n != 0} \o \e{otherwise}
+ \row \o Lithuanian \o \c{n % 10 == 1&& n % 100 != 11}
+ \o \c{n % 100 != 12 && n % 10 == 2}
+ \o \e{otherwise}
+ \row \o Macedonian \o \c{n % 10 == 1}
+ \o \c{n % 10 == 2} \o \e{otherwise}
+ \row \o Polish \o \c{n == 1}
+ \o \c{n % 10 >= 2 && n % 10 <= 4
+ && (n % 100 < 10 || n % 100 > 20)}
+ \o \e{otherwise}
+ \row \o Romanian \o \c{n == 1}
+ \o \c{n == 0|| (n % 100 >= 1 && n % 100 <= 20)}
+ \o \e{otherwise}
+ \row \o Russian \o \c{n % 10 == 1&& n % 100 != 11}
+ \o \c{n % 10 >= 2 && n % 10 <= 4
+ && (n % 100 < 10 || n % 100 > 20)}
+ \o \e{otherwise}
+ \row \o Slovak \o \c{n == 1} \o \c{n >= 2 && n <= 4}
+ \o \e{otherwise}
+ \row \o Japanese \o \e{otherwise} \o N/A \o N/A
+ \endtable
+
+ The rules themselves are not documented and are internal to Qt Linguist and \c lrelease.
+*/
diff --git a/doc/src/internationalization/linguist-manual.qdoc b/doc/src/internationalization/linguist-manual.qdoc
new file mode 100644
index 000000000..3e06a2f65
--- /dev/null
+++ b/doc/src/internationalization/linguist-manual.qdoc
@@ -0,0 +1,1521 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 linguist-manual.html
+ \title Qt Linguist Manual
+ \ingroup qttools
+
+ \startpage {index.html}{Qt Reference Documentation}
+ \nextpage Qt Linguist Manual: Release Manager
+
+ \keyword Qt Linguist
+
+ Qt provides excellent support for translating applications into local
+ languages. This Guide explains how to use Qt's translation tools for
+ each of the roles involved in translating an application. The Guide
+ begins with a brief overview of the issues that must be considered,
+ followed by chapters devoted to each role and the supporting tools
+ provided.
+
+ The \l{linguist-manager.html}{Release Manager} chapter is aimed
+ at the person with overall responsibility for the release of the
+ application. They will typically coordinate the work of the
+ software engineers and the translator. The chapter describes the
+ use of two tools. The \l{lupdate} tool is used to synchronize
+ source code and translations. The \l{lrelease} tool is used to
+ create run-time translation files for use by the released
+ application.
+
+ The \l{linguist-translators.html}{Translators} chapter is for
+ translators. It describes the use of the \QL tool.
+ No computer knowledge beyond the ability to start a program and
+ use a text editor or word processor is required.
+
+ The \l{linguist-programmers.html}{Programmers} chapter is for Qt
+ programmers. It explains how to create Qt applications that are
+ able to use translated text. It also provides guidance on how to
+ help the translator identify the context in which phrases appear.
+ This chapter's three short tutorials cover everything the
+ programmer needs to do.
+
+ \section1 Overview of the Translation Process
+
+ Most of the text that must be translated in an application program
+ consists of either single words or short phrases. These typically
+ appear as window titles, menu items, pop-up help text (balloon help),
+ and labels to buttons, check boxes and radio buttons.
+
+ The phrases are entered into the source code by the programmer in
+ their native language using a simple but special syntax to identify
+ that the phrases require translation. The Qt tools provide context
+ information for each of the phrases to help the translator, and the
+ programmer is able to add additional context information to phrases
+ when necessary. The release manager generates a set of translation
+ files that are produced from the source files and passes these to the
+ translator. The translator opens the translation files using \QL,
+ enters their translations and saves the results back into
+ the translation files, which they pass back to the release manager.
+ The release manager then generates fast compact versions of these
+ translation files ready for use by the application. The tools are
+ designed to be used in repeated cycles as applications change and
+ evolve, preserving existing translations and making it easy to
+ identify which new translations are required. \QL also
+ provides a phrase book facility to help ensure consistent
+ translations across multiple applications and projects.
+
+ Translators and programmers must address a number of issues because
+ of the subtleties and complexities of human language:
+
+ \list
+
+ \o A single phrase may need to be translated into several
+ different forms depending on context, e.g. \e open in English
+ might become \e{\ouml\c{}ffnen}, "open file", or \e aufbauen,
+ "open internet connection", in German.
+
+ \o Keyboard accelerators may need to be changed but without
+ introducing conflicts, e.g. "\&Quit" in English becomes "Avslutt"
+ in Norwegian which doesn't contain a "Q". We cannot use a letter
+ that is already in use - unless we change several accelerators.
+
+ \o Phrases that contain variables, for example, "The 25 files
+ selected will take 63 seconds to process", where the two numbers
+ are inserted programmatically at run-time may need to be reworded
+ because in a different language the word order and therefore the
+ placement of the variables may have to change.
+
+ \endlist
+
+ The Qt translation tools provide clear and simple solutions to these
+ issues.
+
+ Chapters:
+
+ \list
+ \o \l{Qt Linguist Manual: Release Manager}{Release Manager}
+ \o \l{Qt Linguist Manual: Translators}{Translators}
+ \o \l{Qt Linguist Manual: Programmers}{Programmers}
+ \o \l{Qt Linguist Manual: TS File Format}{TS File Format}
+ \endlist
+
+ \QL and \c lupdate are able to import and export XML Localization
+ Interchange File Format (XLIFF) files, making it possible to take
+ advantage of tools and translation services that work with this
+ format. See the \l{Qt Linguist Manual: Translators} {Translators}
+ section for more information on working with these files.
+
+ \table
+
+ \row \o{1,2} \inlineimage wVista-Cert-border-small.png
+ \o \e{Qt Linguist 4.3 is Certified for Windows Vista}
+
+ \row \o Windows Vista and the Windows Vista Start button are
+ trademarks or registered trademarks of Microsoft Corporation in
+ the United States and/or other countries.
+
+ \endtable
+*/
+
+/*!
+ \page linguist-manager.html
+ \title Qt Linguist Manual: Release Manager
+
+ \contentspage {Qt Linguist Manual}{Contents}
+ \previouspage Qt Linguist Manual
+ \nextpage Qt Linguist Manual: Translators
+
+ \keyword lupdate
+ \keyword lrelease
+
+ Two tools are provided for the release manager, \l lupdate and \l
+ lrelease. These tools can process \l qmake project files, or operate
+ directly on the file system.
+
+ \section1 Qt Project Files
+
+ The easiest method to use \l{#lupdate} {lupdate} and \l{#lrelease}
+ {lrelease} is by specifing a \c .pro Qt project file. There must
+ be an entry in the \c TRANSLATIONS section of the project file for
+ each language that is additional to the native language. A typical
+ entry looks like this:
+
+ \snippet examples/linguist/arrowpad/arrowpad.pro 1
+
+ Using a locale within the translation file name is useful for
+ determining which language to load at runtime. This is explained
+ in the \l{linguist-programmers.html} {Programmers} chapter.
+
+ An example of a complete \c .pro file with four translation source
+ files:
+
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 0
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 1
+
+ QTextCodec::setCodecForTr() makes it possible to choose a 8-bit
+ encoding for literal strings that appear within \c tr() calls.
+ This is useful for applications whose source language is, for
+ example, Chinese or Japanese. If no encoding is set, \c tr() uses
+ Latin1.
+
+ If you do use the QTextCodec::codecForTr() mechanism in your
+ application, \QL needs you to set the \c CODECFORTR
+ entry in the \c .pro file as well. For example:
+
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 1
+
+ Also, if your compiler uses a different encoding for its runtime
+ system as for its source code and you want to use non-ASCII
+ characters in string literals, you will need to set the \c
+ CODECFORSRC. For example:
+
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 2
+
+ Microsoft Visual Studio 2005 .NET appears to be the only compiler
+ for which this is necessary. However, if you want to write
+ portable code, we recommend that you avoid non-ASCII characters
+ in your source files. You can still specify non-ASCII characters
+ portably using escape sequences, for example:
+
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 3
+
+ \target lupdate manual
+ \section1 lupdate
+
+ Usage: \c {lupdate myproject.pro}
+
+ \l lupdate is a command line tool that finds the translatable
+ strings in the specified source, header and \e {Qt Designer}
+ interface files, and produces or updates \c .ts translation
+ files. The files to process and the files to update can be set at
+ the command line, or provided in a \c .pro file specified as an
+ command line argument. The produced translation files are given to
+ the translator who uses \QL to read the files and insert the
+ translations.
+
+ Companies that have their own translators in-house may find it
+ useful to run \l lupdate regularly, perhaps monthly, as the
+ application develops. This will lead to a fairly low volume of
+ translation work spread evenly over the life of the project and
+ will allow the translators to support a number of projects
+ simultaneously.
+
+ Companies that hire in translators as required may prefer to run
+ \l lupdate only a few times in the application's life cycle, the
+ first time might be just before the first test phase. This will
+ provide the translator with a substantial single block of work and
+ any bugs that the translator detects may easily be included with
+ those found during the initial test phase. The second and any
+ subsequent \l lupdate runs would probably take place during the
+ final beta phase.
+
+ The TS file format is a simple human-readable XML format that
+ can be used with version control systems if required. \c lupdate
+ 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.
+
+ Pass the \c -help option to \c lupdate to obtain the list of
+ supported options:
+
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 4
+
+ \QL is also able to import and export XLIFF files. See the
+ \l{Qt Linguist Manual: Translators}{Translators} section for more
+ information.
+
+ \section1 lrelease
+
+ Usage: \c {lrelease myproject.pro}
+
+ \l lrelease is a command line tool that produces QM files out
+ of TS files. The QM file format is a compact binary format
+ that is used by the localized application. It provides extremely
+ fast lookups for translations. The TS files \l lrelease
+ processes can be specified at the command line, or given
+ indirectly by a Qt \c .pro project file.
+
+ This tool is run whenever a release of the application is to be
+ made, from initial test version through to final release
+ version. If the QM files are not created, e.g. because an
+ alpha release is required before any translation has been
+ undertaken, the application will run perfectly well using the text
+ the programmers placed in the source files. Once the QM files
+ are available the application will detect them and use them
+ automatically.
+
+ Note that lrelease will only incorporate translations that are
+ marked as "finished". Otherwise the original text will be used
+ instead.
+
+ Pass the \c -help option to \c lrelease to obtain the list of
+ supported options:
+
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 5
+
+ \section1 Missing Translations
+
+ Both \l lupdate and \l lrelease may be used with TS
+ translation source files which are incomplete. Missing
+ translations will be replaced with the native language phrases at
+ runtime.
+*/
+
+/*!
+ \page linguist-translators.html
+ \title Qt Linguist Manual: Translators
+
+ \contentspage {Qt Linguist Manual}{Contents}
+ \previouspage Qt Linguist Manual: Release Manager
+ \nextpage Qt Linguist Manual: Programmers
+
+ Contents
+
+ \tableofcontents
+
+ \section1 The One Minute Guide to Using Qt Linguist
+
+ \QL is a tool for adding translations to Qt applications. Run \QL
+ from the taskbar menu, or by double clicking the desktop icon, or
+ by entering the command \c {linguist} at the command line. Once
+ \QL has started, choose \menu{File|Open} from the \l{menubar}
+ {menu bar} and select a translation source (TS file) to
+ load. If you do not have a TS file, see the \l {Qt Linguist
+ Manual: Release Manager} {release manager manual} to learn how to
+ generate one.
+
+ The \QL main window is divided into several, dockable subwindows
+ arranged around a central \l{The Translation Area} {translation
+ area}. The \l{Context Window} {context list} is normally shown
+ on the left, and the \l{Sources and Forms Window} {source code},
+ \l{Strings Window} {string list}, and either the \l{Phrases and
+ Guesses Window} {phrases and guesses}, or the \l{Warnings Window}
+ {warnings} are shown above and below the \l{The Translation Area}
+ {translations area}.
+
+ With a translation file loaded, select a context from the
+ \l{Context Window} {context list} on the left. Selecting a context
+ loads the translatable strings found in that context into the
+ \l{Strings Window} {string list}. Selecting one of the strings
+ copies that string as the \key{Source text} in the \l{The
+ Translation Area} {translation area}. Click in the text entry
+ widget below the copied string and type your translation for that
+ string. To accept the translation, either press the green
+ \key{tick mark} button on the toolbar, or click the icon to the
+ left of the selected source string in the string list. Repeat this
+ process until all strings in the string list are marked with
+ \inlineimage linguist-check-on.png
+ or
+ \inlineimage linguist-check-warning.png
+ . Then select the next context and continue.
+
+ Translation options are shown in the \l{Phrases and Guesses
+ Window} {phrases and guesses window}. If the phrases and guesses
+ window is not visible, click the \key{Phrases and guesses} tab at
+ the bottom of the main window. The phrases and guesses window
+ shows possible translations for the current string. These
+ translation "guesses" have been read from phrase books
+ (\menu{Phrases|Open Phrase Book...}). The current string's
+ current translation is also shown here. To select a guess, double
+ click it in the phrases and guesses window or use the keyboard
+ shortcut shown to the right of the guess.
+
+ \QL can automatically check whether your translation strings pass
+ a list of \l{Validation Tests} {validation tests}. Validation test
+ failures are shown in the \l{Warnings Window} {warnings window}.
+ If the warnings window is not visible, click the \key{Warnings}
+ tab at the bottom of the main window.
+
+ Finally, if the source code for the contexts is accessible, the
+ \l{Sources and Forms Window} {source code window} shows the
+ context where the current string is used. If the source code
+ window is not visible, click the \key{Sources and Forms} tab at
+ the bottom of the main window.
+
+ At the end of the session choose \menu{File|Save} from the menu
+ bar and then \menu{File|Exit} to quit.
+
+ \section1 The Qt Linguist Window
+
+ \image linguist-linguist.png "Linguist UI Snapshot"
+
+ This \QL main window is divided into dockable subwindows arranged
+ around a central \l{The Translation Area} {translation area}. The
+ subwindows are: \l{Context Window} {Context}, \l{Sources and Forms
+ Window} {Sources and Forms}, \l{Strings Window} {Strings},
+ \l{Phrases and Guesses Window} {Phrases and guesses}, and
+ \l{Warnings Window} {Warnings} (hidden in the UI snapsot). The
+ translation area is always visible, but the dockable subwindows
+ can be activated or deactivated in the \menu{View|Views} menu, and
+ dragged around by their title bars and dropped in the translation
+ area or even outside the main window.
+
+ \section2 Context Window
+
+ The context window normally appears on the left side of the main
+ window. It lists the contexts in which strings to be translated
+ appear. The column labeled \e{Context} lists the context names in
+ alphabetical order. Each context is the name of a subclass of
+ QObject. There can also be a context for QObject itself, which
+ contains strings passed to the static function QObject::tr().
+ There can also be an \e{<unnamed context>}, which contains strings
+ that aren't in a subclass of QObject.
+
+ To the left of the \e{Context} column is a column labeled
+ \inlineimage linguist-check-obsolete.png
+ . This column uses the following list of icons to summarize the
+ current translation state for each context:
+
+ \list
+
+ \o \inlineimage linguist-check-on.png
+ All strings in the context have been translated, and all the
+ translations passed the \l{Validation Tests} {validation tests}.
+
+ \o \inlineimage linguist-check-warning.png
+ All strings in the context have been translated or marked as
+ translated, but at least one translation failed the \l{Validation
+ Tests} {validation tests}.
+
+ \o \inlineimage linguist-check-off.png
+ At least one string in the context has not been translated or is
+ not marked as translated.
+
+ \o \inlineimage linguist-check-obsolete.png
+ None of the translated strings still appears in the context. This
+ usually means the context itself no longer exists in the
+ application.
+
+ \endlist
+
+ To the right of the \e{Context} column is the \e{Items} column.
+ Each entry in the \e{Items} column is a pair of numbers separated
+ by a slash ("/"). The number to the right of the slash is the
+ number of translatable strings in the context. The number to the
+ left of the slash is the number of those strings that currently
+ have translations. i.e., if the numbers are equal, all the
+ translatable strings in the context have translations.
+
+ In the UI snapshot above, the \bold{MessageEditor} context is
+ selected. Its \e{Items} entry shows \bold{18/18}, which means it
+ has 18 translatable strings and all 18 strings currently have
+ translations. However, the context has been marked with the
+ \inlineimage linguist-check-warning.png
+ icon, which means that at least one of the current translations
+ failed a \l{Validation Tests} {validation test}. In the
+ \l{Strings Window} {strings window} to the right, we see that one
+ of the strings is indeed marked with the
+ \inlineimage linguist-check-warning.png
+ icon.
+
+ The context window is a dockable window. It can be dragged to
+ another position in the main window, or dragged out of the main
+ window to be a separate window. If you move the context window,
+ \QL remembers the new position and puts the context window there
+ whenever you start the program. If the context window has been
+ closed, it can be restored by pressing \key{F6}.
+
+ \section2 Strings Window
+
+ The strings window normally appears on the right in the main
+ window, above the \l{The Translation Area} {translation area}. Its
+ \e{Source text} column lists all the translatable strings found in
+ the current context. Selecting a string makes that string the
+ current string in the \l{The Translation Area} {translation area}.
+
+ To the left of the \e{Source text} column is a column labeled
+ \inlineimage linguist-check-obsolete.png
+ . This column is similar to the one in the \l{Context Window}
+ {context window}, but here you can click on the icon to change the
+ translation acceptance state for each string in the list. A tick
+ mark, green or yellow, means the string has been translated and
+ the user has accepted the translation. A question mark means
+ either that the user has not accepted the string's translation or
+ that the string doesn't have a translation. The table below
+ explains the acceptance states and their icons:
+
+ \target String Translation States
+
+ \table
+ \header
+ \o State
+ \o Icon
+ \o Description
+
+ \row
+ \o Accepted/Correct
+ \o \inlineimage linguist-check-on.png
+ \o The source string has a translation (possibly empty); the user
+ has accepted the translation, and the translation passes all the
+ \l{Validation Tests} {validation tests}. If the translation is
+ empty, the user has chosen to leave it empty. Click the icon to
+ revoke acceptance of the translation and decrement the number of
+ accepted translations in the \e{Items} column of the \l{Context
+ Window} {context list} by 1. The state is reset to
+ \inlineimage linguist-check-off.png
+ if the string has a translation, or to
+ \inlineimage linguist-check-empty.png
+ if the string's translation is empty. If \c{lupdate} changes the
+ contents of a string, its acceptance state is automatically reset
+ to \inlineimage linguist-check-off.png
+ .
+
+ \row
+ \o Accepted/Warnings
+ \o \inlineimage linguist-check-warning.png
+ \o The user has accepted the translation, but the translation does
+ not pass all the \l{Validation Tests} {validation tests}. The
+ validation test failures are shown in the \l{Warnings Window}
+ {warnings window}. Click the icon to revoke acceptance of the
+ translation. The state is reset to \inlineimage linguist-danger.png
+ , and the number of accepted translations in the \e{Items} column
+ of the \l{Context Window} {context list} is decremented by 1.
+
+ \row
+ \o Not Accepted
+ \o \inlineimage linguist-check-off.png
+ \o The string has a non-empty translation that passes all the
+ \l{Validation Tests} {validation tests}, but the user has not yet
+ accepted the translation. Click the icon or press \key{Ctrl+Enter}
+ to accept the translation. The state is reset to
+ \inlineimage linguist-check-on.png
+ , and the number of accepted translations in the \e{Items} column
+ of the \l{Context Window} {context list} is incremented by 1.
+
+ \row
+ \o No Translation
+ \o \inlineimage linguist-check-empty.png
+ \o The string does not have a translation. Click the icon to
+ accpet the empty translation anyway. The state is reset to
+ \inlineimage linguist-check-on.png
+ , and the number of accepted translations in the \e{Items} column
+ of the \l{Context Window} {context list} is incremented by 1.
+
+ \row
+ \o Validation Failures
+ \o \inlineimage linguist-danger.png
+ \o The string has a translation, but the translation does not
+ pass all the \l{Validation Tests} {validation tests}. Validation
+ test failures are shown in the \l{Warnings Window} {warnings}
+ window. Click on the icon or press \key{Ctrl+Return} to accept
+ the translation even with validation failures. The state is
+ reset to \inlineimage linguist-check-warning.png
+ . We recommended editing the translation to fix the causes of
+ the validation failures. The state will reset automatically to
+ \inlineimage linguist-check-off.png
+ , when all the failures have been fixed.
+
+ \row
+ \o Obsolete
+ \o \inlineimage linguist-check-obsolete.png
+ \o The string is obsolete. It is no longer used in the context.
+ See the \l{Qt Linguist Manual: Release Manager} {Release Manager}
+ for instructions on how to remove obsolete messages from the file.
+
+ \endtable
+
+ The string list is a dockable subwindow. If it has been closed,
+ restored it by pressing \key{F7}.
+
+ \section2 The Translation Area
+
+ The translation area is in the middle of the main window, to the
+ right of the \l{Context Window} {context list}. It doesn't have a
+ title bar, so you can't drag it around. Instead, you drag and drop
+ the other subwindows to arrange them around the translation area.
+ The string currently selected in the \l{Strings Window} {string
+ list} appears at the top of the translation area, under the label
+ \menu{Source text}. Note that all blanks in the source text have
+ been replaced by "." so the translator can see the spacing
+ required within the text.
+
+ If the developer provides a \l{QObject::tr()} {disambiguating
+ comment}, it will appear below the source text area, under the
+ label \menu{Developer comments}.
+
+ Below the source text and optional developer comments are two text
+ entry widgets for the translator, one for entering the translation
+ of the current string, and one for the translator to enter an
+ optional comment to be read by other translators.
+
+ When \l{Translating Multiple Languages Simultaneously} {multiple
+ languages} are being translated, this sequence of fields is
+ repeated for each language. See aso \l {Changing the Target
+ Locale}.
+
+ \section2 Phrases and Guesses Window
+
+ If the current string in the \l{Strings Window} {string list}
+ appears in one or more of the \l{Phrase Books} {phrase books}
+ that have been loaded, the current string and its phrase book
+ translation(s) will be listed in this window. If the current
+ string is the same as, or similar to, another string that has
+ already been translated, that other string and its translation
+ will also be listed in this window.
+
+ To use a translation from the Phrases and Guesses Window, you can
+ double click the translation, and it will be copied into the
+ translation area, or you can use the translation's \e{Guess}
+ hotkey on the right. You can also press \key{F10} to move the
+ focus to the Phrases and Guesses Window, then use the up and down
+ arrow keys to find the desired translation, and and then press
+ \key{Enter} to copy it to the translation area. If you decide
+ that you don't want to copy a phrase after all, press \key{Esc} to
+ return the focus to the translation area.
+
+ The Phrases and Guesses Window is a dockable window. If it has
+ been closed, it can be made visible by pressing the \e{Phrases and
+ guesses} tab at the bottom of the window, or by pressing
+ \key{F10}.
+
+ \section2 Sources and Forms Window
+
+ If the source files containing the translatable strings are
+ available to \QL, this window shows the source context of the
+ current string in the \l{Strings Window} {string list}. The source
+ code line containing the current string should be shown and
+ highlighted. If the file containing the source string is not
+ found, the expected absolute file path is shown.
+
+ If the source context shows the wrong source line, it probably
+ means the translation file is out of sync with the source files.
+ To re-sync the translation file with the source files, see the
+ \l{lupdate manual} {lupdate manual}.
+
+ The Sources and Forms window is a dockable window. If it has been
+ closed, it can be made visible again by pressing the \e{Sources
+ and Forms} tab at the bottom of the window, or by pressing
+ \key{F9}.
+
+ \section2 Warnings Window
+
+ If the translation you enter for the current string fails any of
+ the active \l{Validation Tests} {validation tests}, the failures
+ are listed in the warnings window. The first of these failure
+ messages is also shown in the status bar at the bottom of the main
+ window. Note that only \e{active} validation tests are
+ reported. To see which validation tests are currently active, or
+ to activate or deactivate tests, use the \menu{Validation} menu
+ from the \l{menubar}{menu bar}.
+
+ The Warnings window is a dockable window. If it has been closed,
+ it can be made visible by pressing the \e{Warnings} tab at the
+ bottom of the window, or by pressing \key{F8}.
+
+ \target multiple languages
+ \section2 Translating Multiple Languages Simultaneously
+
+ Qt Linguist can now load and edit multiple translation files
+ simultaneously. One use for this is the case where you know two
+ languages better than you know English (Polish and Japanese, say),
+ and you are given an application's Polish translation file and
+ asked to update the application's Japanese translation file. You
+ are more comfortable translating Polish to Japanese than you are
+ translating English to Japanese.
+
+ Below is the UI snapshot shown earlier, but this time with both
+ \e{Polish} and \e{Japanese} translation files loaded.
+
+ \image linguist-linguist_2.png
+
+ The first thing to notice is that the \l{The Translation Area}
+ {translation area} has text editing areas for both Polish and
+ Japanese, and these are color-coded for easier separation.
+ Second, the \l{Context Window} and the \l{Strings Window} both
+ have two clomuns labeled \inlineimage linguist-check-obsolete.png
+ instead of one, and although it may be hard to tell, these columns
+ are also color-coded with the same colors. The left-most column in
+ either case applies to the top-most language area (Polish above)
+ in the \l{The Translation Area} {translation area}, and the
+ right-most column applies to the bottom language area.
+
+ The \e{Items} column in the \l{Context Window} combines the values
+ for both languages. The best way to see this is to look at the
+ value for the \bold{MessageEditor} context, which is the one
+ selected in the snapshot shown above. Recall that in the first UI
+ snapshot (Polish only), the numbers for this context were
+ \e{18/18}, meaning 18 translatable strings had been found in the
+ context, and all 18 strings had accepted translations. In the UI
+ snapshot above, the numbers for the \bold{MessageEditor} context
+ are now \e{1/18}, meaning that both languages have 18 translatable
+ strings for that context, but for Japanese, only 1 of the 18
+ strings has an accepted translation. The
+ \inlineimage linguist-check-off.png
+ icon in the Japanese column means that at least one string in the
+ context doesn't have an accepted Japanese translation yet. In fact,
+ 17 of the 18 strings don't have accepted Japanese translations yet.
+ We will see \e{18/18} in the \e{Items} column when all 18 strings
+ have accepted translations for all the loaded translation files,
+ e.g., both Polish and Japanese in the snapshot.
+
+ \section1 Common Tasks
+
+ \section2 Leaving a Translation for Later
+
+ If you wish to leave a translation press \key{Ctrl+L} (Next
+ Unfinished) to move to the next unfinished translation. To move to
+ the next translation (whether finished or unfinished) press
+ \key{Shift+Ctrl+L}. You can also navigate using the Translation
+ menu. If you want to go to a different context entirely, click the
+ context you want to work on in the Context list, then click the
+ source text in the \l{Strings Window} {string list}.
+
+ \section2 Phrases That Require Multiple Translations Depending on Context
+
+ The same phrase may occur in two or more contexts without conflict. Once
+ a phrase has been translated in one context, \QL notes
+ that the translation has been made and when the translator reaches a
+ later occurrence of the same phrase \QL will provide
+ the previous translation as a possible translation candidate in the
+ \l{Phrases and Guesses Window}.
+
+ If a phrase occurs more than once in a particular context it will
+ only be shown once in \QL's \l{Context Window} {context list} and
+ the translation will be applied to every occurrence within the
+ context. If the same phrase needs to be translated differently
+ within the same context the programmer must provide a
+ distinguishing comment for each of the phrases concerned. If such
+ comments are used the duplicate phrases will appear in the
+ \l{Context Window} {context list}. The programmers comments will
+ appear in the \l{The Translation Area} {translation area} on a
+ light blue background.
+
+ \section2 Changing Keyboard Accelerators
+
+ A keyboard accelerator is a key combination that, when pressed,
+ causes an application to perform an action. There are two kinds of
+ keyboard accelerators: Alt key and Ctrl key accelerators.
+
+ \section3 Alt Key Accellerators
+
+ Alt key accelerators are used in menu selection and on buttons.
+ The underlined character in a menu item or button label signifies
+ that pressing the Alt key with the underlined character will
+ perform the same action as clicking the menu item or pressing the
+ button. For example, most applications have a \e{File} menu with
+ the "F" in the word "File" underlined. In these applications the
+ \e{File} menu can be invoked either by clicking the word "File" on
+ the menu bar or by pressing \e{Alt+F}. To identify an accelerator
+ key in the translation text ("File") precede it with an ampersand,
+ e.g. \e{\&File}. If a string to be translated has an ampersand in
+ it, then the translation for that string should also have an
+ ampersand in it, preferably in front of the same character.
+
+ The meaning of an Alt key accelerator can be determined from the
+ phrase in which the ampersand is embedded. The translator can
+ change the character part of the Alt key accelerator, if the
+ translated phrase does not contain the same character or if that
+ character has already been used in the translation of some other
+ Alt key accelerator. Conflicts with other Alt key accelerators
+ must be avoided within a context. Note that some Alt key
+ accelerators, usually those on the menu bar, may apply in other
+ contexts.
+
+ \section3 Ctrl Key Accelerators
+
+ Ctrl key accelerators can exist independently of any visual
+ control. They are often used to invoke actions in menus that would
+ otherwise require multiple keystrokes or mouse clicks. They may
+ also be used to perform actions that do not appear in any menu or
+ on any button. For example, most applications that have a \e{File}
+ menu have a \e{New} submenu item in the \e{File} menu. The \e{New}
+ item might appear as "\underline{N}ew Ctrl+N" in the \e{File}
+ menu, meaning the \e{New} menu can be invoked by simply pressing
+ \key{Ctrl+N}, instead of either clicking \e{File} with the mouse
+ and then clicking \e{New} with the mouse, or by entering \e{Alt+F}
+ and \e{N}.
+
+ Each Ctrl key accelerator is shown in the \l{Strings Window}
+ {string list} as a separate string, e.g. \key{Ctrl+Enter}. Since
+ the string doesn't have a context to give it meaning, e.g. like
+ the context of the phrase in which an Alt key accelerator appears,
+ the translator must rely on the UI developer to include a
+ \l{QObject::tr()} {disambiguation comment} to explain the action
+ the Ctrl key accelerator is meant to perform. This disambiguating
+ comment (if provided by the developer) will appear under
+ \e{Developer comments} in the \l{The Translation Area}
+ {translation area} under the \e{Source text} area.
+
+ Ideally Ctrl key accelerators are translated simply by copying
+ them directly using \e {Copy from source text} in the
+ \menu{Translation} menu. However, in some cases the character will
+ not make sense in the target language, and it must be
+ changed. Whichever character (alpha or digit) is chosen, the
+ translation must be in the form "Ctrl+" followed by the upper case
+ character. \e{Qt} will automatically display the correct name at
+ run-time. As with Alt key accelerators, if the translator changes
+ the character, the new character must not conflict with any other
+ Ctrl key accelerator.
+
+ \warning Do not translate the "Alt", "Ctrl" or "Shift" parts of
+ the accelerators. \e{Qt} relies on these strings being there. For
+ supported languages, \e {Qt} automatically translates these
+ strings.
+
+ \section2 Handling Numbered Arguments and Plurals
+
+ Some phrases contain numbered arguments. A numbered argument is a
+ placeholder that will be replaced with text at run-time. A numbered
+ argument appears in a source string as a percent sign followed by
+ a digit. Consider an example: \c{After processing file %1, file %2
+ is next in line}. In this string to be translated, \c{%1} and
+ \c{%2} are numbered arguments. At run-time, \c{%1} and \c{%2} will
+ be replaced with the first and next file names respectively. The
+ same numbered arguments must appear in the translation, but not
+ necessarily in the same order. A German translation of the string
+ might reverse the phrases, e.g. \c{Datei %2 wird bearbeitet, wenn
+ Datei %1 fertig ist}. Both numbered arguments appear in the
+ translation, but in the reverse order. \c{%i} will always be
+ replaced by the same text in the translation stringss, regardless
+ of where argument \e{i} appears in the argument sequence in the
+ source string.
+
+ The use of numbered arguments is often accompanied by the use of
+ plurals in the source text. In many languages, the form of the
+ text will depend on the value shown, and more than one translation
+ is required. If the developers have marked up the source text in
+ correct way, fields for each of the possible plural forms will be
+ available in the translation area. (The
+ \l{Writing Source Code for Translation#Handling Plurals}{Writing Source Code for Translation}
+ document contains details about this feature for developers.)
+
+ \section2 Reusing Translations
+
+ If the translated text is similar to the source text, choose the
+ \e {Copy from source text} entry in the \menu Translation menu (press
+ \key{Ctrl+B}) which will copy the source text into the
+ \l{The Translation Area} {translation area}.
+
+ \QL automatically lists possible translations from any open
+ \l{Phrase Books} {phrase books} in the \l{Phrases and Guesses
+ Window}, as well as similar or identical phrases that have already
+ been translated.
+
+ \section2 Changing the Target Locale
+
+ \QL displays the target language in the \l{The Translation Area}
+ {translation area}, and adapts the number of input fields for
+ plural forms accordingly. If not explicitly set, \QL guesses the
+ target language and country by evaluating the translation source
+ file name. For example, \c app_de.ts sets the target language to German,
+ and \c app_de_ch.ts sets the target language to German and the
+ target country to Switzerland (this also helps loading
+ translations for the current locale automatically; see
+ \l{linguist-programmers.html}{Programmers Manual} for details).
+ If your files do not follow this convention, you can also set the
+ locale information explicitly using \e {Translation File Settings}
+ in the \menu Edit menu.
+
+ \image linguist-translationfilesettings.png
+
+ \section1 Phrase Books
+
+ A \QL phrase book is a set of source phrases, target
+ (translated) phrases, and optional definitions. Typically one phrase book
+ will be created per language and family of applications. Phrase books
+ are used to provide a common set of translations to help ensure consistency.
+ They can also be used to avoid duplication of effort since the translations
+ for a family of applications can be produced once in the phrase book.
+ If the translator reaches an untranslated phrase that is the same as a
+ source phrase in a phrase book, \QL will show the
+ phrase book entry in the \l {Phrases and Guesses Window}.
+
+ \section2 Creating and Editing Phrase Books
+
+ \image linguist-phrasebookdialog.png
+
+ Before a phrase book can be edited it must be created or, if it already
+ exists, opened. Create a new phrase book by selecting
+ \menu{Phrase|New Phrase Book} from the menu bar. You must enter a
+ filename and may change the location of the file if you wish. A newly
+ created phrase book is automatically opened. Open an existing phrase
+ book by choosing \menu{Phrase|Open Phrase Book} from the menu bar.
+
+ The phrase book contents can be displayed and changed by selecting
+ \menu{Phrase|Edit Phrase Book}, and then activating the phrase book you
+ want to work on. This will pop up the Phrase Book Dialog as shown
+ in the image above. To add a new phrase click the \gui{New Phrase}
+ button (or press Alt+N) and type in a new source phrase. Press Tab and
+ type in the translation. Optionally press Tab and enter a definition --
+ this is useful to distinguish different translations of the same source
+ phrase. This process may be repeated as often as necessary. You can delete
+ a phrase by selecting it in the phrases list and clicking
+ Remove Phrase. Click the \gui Close button (press Esc) once you've finished
+ adding (and removing) phrases.
+
+ \section2 Shortcuts for Editing Phrase Books
+
+ You can also create a new phrase book entry directly out of the translation you
+ are working on: Clicking \menu{Phrases|Add to Phrase Book} or pressing
+ \key{Ctrl+T} will add the source text and the content of the first translation
+ field to the current phrase book. If multiple phrase books are loaded,
+ you have to specify the phrase book to add the entry to in a dialogue.
+ If you detect an error in a phrase book entry that is shown in the
+ \l{Phrases and Guesses Window}, you can also edit it in place by right
+ clicking on the entry, and selecting \menu{Edit}. After fixing the error
+ press \key{Return} to leave the editing mode.
+
+ \section2 Batch Translation
+
+ \image linguist-batchtranslation.png
+
+ Use the batch translation feature of \QL to automatically
+ translate source texts that are also in a phrase book. Selecting
+ \menu{Tools|Batch Translation} will show you the batch translation dialog,
+ which let you configure which phrase books to use in what order during the
+ batch translation process. Furthermore you can set whether only entries
+ with no present translation should be considered, and whether batch translated
+ entries should be set to finished (see also \l {String Translation States}).
+
+ \section1 Validation Tests
+
+ \QL provides four kinds of validation tests for translations.
+
+ \list 1
+ \o \e {Accelerator validation} detects translated phrases
+ that do not have an ampersand when the source phrase does and vice
+ versa.
+ \o \e {Punctuation validation} detects differences in the
+ terminating punctuation between source and translated phrases when this
+ may be significant, e.g. warns if the source phrase ends with an
+ ellipsis, exclamation mark or question mark, and the translated phrase
+ doesn't and vice versa.
+ \o \e {Phrases validation} detects source phrases that are
+ also in the phrase book but whose translation differs from that given in
+ the phrase book.
+ \o \e {Place marker validation} detects whether the same variables
+ (like \c %1, \c %2) are used both in the source text and in the translation.
+ \endlist
+
+ Validation may be switched on or off from the menu bar's
+ Validation item or using the toolbar buttons. Unfinished phrases
+ that fail validation are marked with an exclamation mark in the
+ source text pane. Finished phrases will get a yellow tick
+ instead. If you switch validation off and then switch it on later,
+ \QL will recheck all phrases and mark any that fail
+ validation. See also \l{String Translation States}.
+
+ \section1 Form Preview
+
+ \image linguist-previewtool.png
+
+ Forms created by \e{Qt Designer} are stored in special UI files.
+ \QL can make use of these UI files to show the translations
+ done so far on the form itself. This of course requires access to the UI
+ files during the translation process. Activate
+ \menu{Tools|Open/Refresh Form Preview} to open the window shown above.
+ The list of UI files \QL has detected are displayed in the Forms
+ List on the left hand. If the path to the files has changed, you can load
+ the files manually via \menu{File|Open Form...}. Double-click on an entry
+ in the Forms List to display the Form File. Select \e{<No Translation>} from
+ the toolbar to display the untranslated form.
+
+ \section1 Qt Linguist Reference
+
+
+ \section2 File Types
+
+ \QL makes use of four kinds of files:
+
+ \list
+ \o TS \e {translation source files} \BR are human-readable XML
+ files containing source phrases and their translations. These files are
+ usually created and updated by \l lupdate and are specific to an
+ 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.
+ \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.
+ \o \c .qph \e {Qt phrase book files} \BR are human-readable XML
+ files containing standard phrases and their translations. These files
+ are created and updated by \QL and may be used by any
+ number of projects and applications.
+ \endlist
+
+ \target menubar
+ \section2 The Menu Bar
+
+ \image linguist-menubar.png
+
+ \list
+ \o \gui {File}
+ \list
+ \o \gui {Open... Ctrl+O} \BR pops up an open file dialog from which a
+ translation source \c .ts or \c .xlf file can be chosen.
+ \o \gui {Recently opened files} \BR shows the TS files that
+ have been opened recently, click one to open it.
+ \o \gui {Save Ctrl+S} \BR saves the current translation source file.
+ \o \gui {Save As...} \BR pops up a save as file dialog so that the
+ current translation source file may be saved with a different
+ name, format and/or put in a different location.
+ \o \gui {Release} \BR create a Qt message QM file with the same base
+ name as the current translation source file. The release manager's
+ command line tool \l lrelease performs the same function on
+ \e all of an application's translation source files.
+ \o \gui {Release As...} \BR pops up a save as file dialog. The
+ filename entered will be a Qt message QM file of the translation
+ based on the current translation source file. The release manager's
+ command line tool \l lrelease performs the same function on
+ \e all of an application's translation source files.
+ \o \gui {Print... Ctrl+P} \BR pops up a print dialog. If you click
+ OK the translation source and the translations will be printed.
+ \o \gui {Exit Ctrl+Q} \BR closes \QL.
+ \endlist
+
+ \o \gui {Edit}
+ \list
+ \o \gui {Undo Ctrl+Z} \BR undoes the last editing action in the
+ translation pane.
+ \o \gui {Redo Ctrl+Y} \BR redoes the last editing action in the
+ translation pane.
+ \o \gui {Cut Ctrl+X} \BR deletes any highlighted text in the
+ translation pane and saves a copy to the clipboard.
+ \o \gui {Copy Ctrl+C} \BR copies the highlighted text in the
+ translation pane to the clipboard.
+ \o \gui {Paste Ctrl+V} \BR pastes the clipboard text into the
+ translation pane.
+ \omit
+ \o \gui {Delete} \BR deletes the highlighted text in the
+ translation pane.
+ \endomit
+ \o \gui {Select All Ctrl+A} \BR selects all the text in the
+ translation pane ready for copying or deleting.
+ \o \gui {Find... Ctrl+F} \BR pops up the
+ Find dialog. When the dialog pops up
+ enter the text to be found and click the \gui {Find Next} button.
+ Source phrases, translations and comments may be searched.
+ \o \gui {Find Next F3} \BR finds the next occurrence of the text that
+ was last entered in the Find dialog.
+ \o \gui {Search and Translate...} \BR pops up the Search and
+ Replace Dialog. Use this dialog to translate the same text in multiple items.
+ \o \gui {Translation File Settings...} \BR let you configure the target
+ language and the country/region of a translation source file.
+ \endlist
+
+ \o \gui {Translation}
+ \list
+ \o \gui {Prev Unfinished Ctrl+K} \BR moves to the nearest previous
+ unfinished source phrase (unfinished means untranslated or
+ translated but failed validation).
+ \o \gui {Next Unfinished Ctrl+L} \BR moves to the next unfinished source
+ phrase.
+ \o \gui {Prev Shift+Ctrl+K} \BR moves to the previous source phrase.
+ \o \gui {Next Shift+Ctrl+L} \BR moves to the next source phrase.
+ \o \gui {Done \& Next Ctrl+Enter} \BR mark this phrase as 'done'
+ (translated) and move to the next unfinished source phrase.
+ \o \gui {Copy from source text Ctrl+B} \BR copies the source text into
+ the translation.
+ \endlist
+
+ \o \gui {Validation} (See \l{Validation Tests})
+ \list
+ \o \gui {Accelerators} \BR toggles validation on or off for Alt
+ accelerators.
+ \o \gui {Ending Punctuation} \BR switches validation on or off
+ for phrase ending punctuation, e.g. ellipsis, exclamation mark,
+ question mark, etc.
+ \o \gui {Phrase Matches} \BR sets validation on or off for
+ matching against translations that are in the current phrase book.
+ \o \gui {Place Marker Matches} \BR sets validation on or off for
+ the use of the same place markers in the source and translation.
+ \endlist
+
+ \o \gui {Phrases} (See the section \l {Phrase Books} for details.)
+ \list
+
+ \o \gui {New Phrase Book... Ctrl+N} \BR pops up a save as file
+ dialog. You must enter a filename to be used for the phrase
+ book and save the file. Once saved you should open the phrase
+ book to begin using it.
+
+ \o \gui {Open Phrase Book... Ctrl+H} \BR pops up an open file
+ dialog. Find and choose a phrase book to open.
+
+ \o \gui {Close Phrase Book} \BR displays the list of phrase
+ books currently opened. Clicking on one of the items will
+ close the phrase book. If the phrase book has been modified, a
+ dialog box asks whether \QL should save the changes.
+
+ \o \gui {Edit Phrase Book...} \BR displays the list of phrase
+ books currently opened. Clicking on one of the items will open
+ the \l{Creating and Editing Phrase Books}{Phrase Book Dialog}
+ where you can add, edit or delete phrases.
+
+ \o \gui {Print Phrase Book...} \BR displays the list of phrase
+ books currently opened. Clicking on one of the items pops up a
+ print dialog. If you click OK the phrase book will be
+ printed.
+
+ \o \gui {Add to Phrase Book Ctrl+T} \BR Adds the source text
+ and translation currently shown in the \l{The Translation
+ Area} {translation area} to a phrase book. If multiple phrase
+ books are loaded, a dialog box let you specify select one.
+
+ \endlist
+
+ \o \gui {Tools}
+ \list
+
+ \o \gui {Batch Translation...} \BR Opens a \l{Batch
+ Translation}{dialog} which let you automatically insert
+ translations for source texts which are in a phrase book.
+
+ \o \gui {Open/Refresh Form Preview F3} \BR Opens the \l{Form
+ Preview}. This window let you instantly see translations for
+ forms created with \QD. \endlist
+
+ \o \gui {View}
+ \list
+
+ \o \gui {Revert Sorting} \BR puts the items in the \l{Context
+ Window} {context list} and in the \l{Strings Window} {string
+ list} into their original order.
+
+ \o \gui {Display Guesses} \BR turns the display of phrases and
+ guesses on or off.
+
+ \o \gui {Statistics} \BR toggles the visibility of the
+ Statistics dialog.
+
+ \o \gui {Views} \BR toggles the visibility of the \l{Context
+ Window}, \l{Strings Window}, \l{Phrases and Guesses Window},
+ \l{Warnings Window}, or \l{Sources and Forms Window}.
+
+ \o \gui {Toolbars} \BR toggles the visibility of the different
+ toolbars.
+
+ \endlist
+
+ \o \gui {Help}
+ \list
+ \o \gui {Manual F1} \BR opens this manual.
+ \o \gui {About Qt Linguist} \BR Shows information about \QL.
+ \o \gui {About Qt} \BR Shows information about \e{Qt}.
+ \o \gui {What's This? Shift+F1} \BR Click on one item in the main window
+ to get additional information about it.
+ \endlist
+
+ \endlist
+
+ \section2 The Toolbar
+
+ \image linguist-toolbar.png
+
+ \list
+ \o \inlineimage linguist-fileopen.png
+ \BR
+ Pops up the open file dialog to open a new translation source TS file.
+
+ \o \inlineimage linguist-filesave.png
+ \BR
+ Saves the current translation source TS file.
+
+ \o \inlineimage linguist-fileprint.png
+ \BR
+ Prints the current translation source TS file.
+
+ \o \inlineimage linguist-phrasebookopen.png
+ \BR
+ Pops up the file open dialog to open a new phrase book \c .qph file.
+
+ \o \inlineimage linguist-editundo.png
+ \BR
+ Undoes the last editing action in the translation pane.
+
+ \o \inlineimage linguist-editredo.png
+ \BR
+ Redoes the last editing action in the translation pane.
+
+ \o \inlineimage linguist-editcut.png
+ \BR
+ Deletes any highlighted text in the translation pane and save a copy to
+ the clipboard.
+
+ \o \inlineimage linguist-editcopy.png
+ \BR
+ Copies the highlighted text in the translation pane to the clipboard.
+
+ \o \inlineimage linguist-editpaste.png
+ \BR
+ Pastes the clipboard text into the translation pane.
+
+ \o \inlineimage linguist-editfind.png
+ \BR
+ Pops up the Find dialog .
+
+ \o \inlineimage linguist-prev.png
+ \BR
+ Moves to the previous source phrase.
+
+ \o \inlineimage linguist-next.png
+ \BR
+ Moves to the next source phrase.
+
+ \o \inlineimage linguist-prevunfinished.png
+ \BR
+ Moves to the previous unfinished source phrase.
+
+ \o \inlineimage linguist-nextunfinished.png
+ \BR
+ Moves to the next unfinished source phrase.
+
+ \o \inlineimage linguist-doneandnext.png
+ \BR
+ Marks the phrase as 'done' (translated) and move to the next
+ unfinished source phrase.
+
+ \o \inlineimage linguist-validateaccelerators.png
+ \BR
+ Toggles accelerator validation on and off.
+
+ \o \inlineimage linguist-validatepunctuation.png
+ \BR
+ Toggles phrase ending punctuation validation on and off.
+
+ \o \inlineimage linguist-validatephrases.png
+ \BR
+ Toggles phrase book validation on or off.
+
+ \o \inlineimage linguist-validateplacemarkers.png
+ \BR
+ Toggles place marker validation on or off.
+
+ \endlist
+
+*/
+
+/*!
+ \page linguist-programmers.html
+ \title Qt Linguist Manual: Programmers
+
+ \contentspage {Qt Linguist Manual}{Contents}
+ \previouspage Qt Linguist Manual: Translators
+ \nextpage Qt Linguist Manual: TS File Format
+
+ Support for multiple languages is extremely simple in Qt
+ applications, and adds little overhead to the programmer's workload.
+
+ Qt minimizes the performance cost of using translations by
+ translating the phrases for each window as they are created. In most
+ applications the main window is created just once. Dialogs are often
+ created once and then shown and hidden as required. Once the initial
+ translation has taken place there is no further runtime overhead for
+ the translated windows. Only those windows that are created,
+ destroyed and subsequently created will have a translation
+ performance cost.
+
+ Creating applications that can switch language at runtime is possible
+ with Qt, but requires a certain amount of programmer intervention and
+ will of course incur some runtime performance cost.
+
+ \section1 Making the Application Translation-Aware
+
+ Programmers should make their application look for and load the
+ appropriate translation file and mark user-visible text and Ctrl
+ keyboard accelerators as targets for translation.
+
+ Each piece of text that requires translating requires context to help
+ the translator identify where in the program the text occurs. In the
+ case of multiple identical texts that require different translations,
+ the translator also requires some information to disambiguate the
+ source texts. Marking text for translation will automatically cause
+ the class name to be used as basic context information. In some cases
+ the programmer may be required to add additional information to help
+ the translator.
+
+ \section2 Creating Translation Files
+
+ Translation files consist of all the user-visible text and Ctrl key
+ accelerators in an application and translations of that text.
+ Translation files are created as follows:
+
+ \list 1
+ \o Run \l lupdate initially to generate the first set of TS
+ translation source files with all the user-visible text but no
+ translations.
+ \o The TS files are given to the translator who adds translations
+ using \QL. \QL takes care of any changed
+ or deleted source text.
+ \o Run \l lupdate to incorporate any new text added to the
+ application. \l lupdate synchronizes the user-visible text from the
+ application with the translations; it does not destroy any data.
+ \o Steps 2 and 3 are repeated as often as necessary.
+ \o When a release of the application is needed \l lrelease is run to
+ read the TS files and produce the QM files used by the
+ application at runtime.
+ \endlist
+
+ For \l lupdate to work successfully, it must know which translation
+ files to produce. The files are simply listed in the application's \c
+ .pro Qt project file, for example:
+
+ \snippet examples/linguist/arrowpad/arrowpad.pro 1
+
+ If your sources contain genuine non-Latin1 strings, \l lupdate needs
+ to be told about it in the \c .pro file by using, for example,
+ the following line:
+
+ \code
+ CODECFORTR = UTF-8
+ \endcode
+
+ See the \l lupdate and \l lrelease sections.
+
+ \section2 Loading Translations
+
+ \snippet examples/linguist/hellotr/main.cpp 1
+ \snippet examples/linguist/hellotr/main.cpp 3
+
+ This is how a simple \c main() function of a Qt application begins.
+
+ \snippet examples/linguist/hellotr/main.cpp 1
+ \snippet examples/linguist/hellotr/main.cpp 4
+
+ For a translation-aware application a translator object is created, a
+ translation is loaded and the translator object installed into the
+ application.
+
+ \snippet examples/linguist/arrowpad/main.cpp 0
+ \snippet examples/linguist/arrowpad/main.cpp 1
+
+ For non-Latin1 strings in the sources you will also need for example:
+
+ \code
+ QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
+ \endcode
+
+ In production applications a more flexible approach, for example,
+ loading translations according to locale, might be more appropriate. If
+ the TS files are all named according to a convention such as
+ \e appname_locale, e.g. \c tt2_fr, \c tt2_de etc, then the
+ code above will load the current locale's translation at runtime.
+
+ If there is no translation file for the current locale the application
+ will fall back to using the original source text.
+
+ Note that if you need to programmatically add translations at
+ runtime, you can reimplement QTranslator::translate().
+
+ \section2 Making the Application Translate User-Visible Strings
+
+ User-visible strings are marked as translation targets by wrapping them
+ in a \c tr() call, for example:
+
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 6
+
+ would become
+
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 7
+
+ All QObject subclasses that use the \c Q_OBJECT macro implement
+ the \c tr() function.
+
+ Although the \c tr() call is normally made directly since it is
+ usually called as a member function of a QObject subclass, in
+ other cases an explicit class name can be supplied, for example:
+
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 8
+
+ or
+
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 9
+
+ \section2 Distinguishing Between Identical Translatable Strings
+
+ The \l lupdate program automatically provides a \e context for every
+ source text. This context is the class name of the class that contains
+ the \c tr() call. This is sufficient in the vast majority of cases.
+ Sometimes however, the translator will need further information to
+ uniquely identify a source text; for example, a dialog that contained
+ two separate frames, each of which contained an "Enabled" option would
+ need each identified because in some languages the translation would
+ differ between the two. This is easily achieved using the
+ two argument form of the \c tr() call, e.g.
+
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 10
+
+ and
+
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 11
+
+ Ctrl key accelerators are also translatable:
+
+ \snippet examples/linguist/trollprint/mainwindow.cpp 2
+
+ It is strongly recommended that the two argument form of \c tr() is used
+ for Ctrl key accelerators. The second argument is the only clue the
+ translator has as to the function performed by the accelerator.
+
+ \section2 Helping the Translator with Navigation Information
+
+ In large complex applications it may be difficult for the translator to
+ see where a particular source text comes from. This problem can be
+ solved by adding a comment using the keyword \e TRANSLATOR which
+ describes the navigation steps to reach the text in question; e.g.
+
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 12
+
+ These comments are particularly useful for widget classes.
+
+ \section2 Handling Plural Forms
+
+ Qt includes a \c tr() overload that will make it very easy to
+ write "plural-aware" internationalized applications. This overload
+ has the following signature:
+
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 17
+
+ Depending on the value of \c n, the \c tr() function will return a different
+ translation, with the correct grammatical number for the target language.
+ Also, any occurrence of \c %n is replaced with \c{n}'s value. For example:
+
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 18
+
+ If a French translation is loaded, this will expand to "0 item
+ remplac\unicode{233}", "1 item remplac\unicode{233}", "2 items
+ remplac\unicode{233}s", etc., depending on \c{n}'s value.
+ And if no translation is loaded, the orignal string is used, with \c %n
+ replaced with count's value (e.g., "6 item(s) replaced").
+
+ To handle plural forms in the native language, you need to load a
+ translation file for this language, too. \l lupdate has the
+ \c -pluralonly command line option, which allows the creation of
+ TS files containing only entries with plural forms.
+
+ See the \l{http://qt.nokia.com/doc/qq/}{Qt Quarterly} Article
+ \l{http://qt.nokia.com/doc/qq/qq19-plurals.html}{Plural Forms in Translations}
+ for further details on this issue.
+
+ \section2 Coping With C++ Namespaces
+
+ C++ namespaces and the \c {using namespace} statement can confuse
+ \l lupdate. It will interpret \c MyClass::tr() as meaning just
+ that, not as \c MyNamespace::MyClass::tr(), even if \c MyClass is
+ defined in the \c MyNamespace namespace. Runtime translation of
+ these strings will fail because of that.
+
+ You can work around this limitation by putting a \e TRANSLATOR
+ comment at the beginning of the source files that use \c
+ MyClass::tr():
+
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 13
+
+ After the comment, all references to \c MyClass::tr() will be
+ understood as meaning \c MyNamespace::MyClass::tr().
+
+ \section2 Translating Text That is Outside of a QObject Subclass
+
+ \section3 Using QCoreApplication::translate()
+
+ If the quoted text is not in a member function of a QObject subclass,
+ use either the tr() function of an appropriate class, or the
+ QCoreApplication::translate() function directly:
+
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 14
+
+ \section3 Using QT_TR_NOOP() and QT_TRANSLATE_NOOP()
+
+ If you need to have translatable text completely outside a function,
+ there are two macros to help: QT_TR_NOOP() and QT_TRANSLATE_NOOP().
+ These macros merely mark the text for extraction by \l{lupdate}.
+ The macros expand to just the text (without the context).
+
+ Example of QT_TR_NOOP():
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 15
+
+ Example of QT_TRANSLATE_NOOP():
+ \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 16
+
+ \section1 Tutorials
+
+ Three tutorials are presented:
+
+ \list 1
+ \o \l{linguist/hellotr}{Hello tr()} demonstrates the creation of
+ a \l QTranslator object. It also shows the simplest use of
+ the \c tr() function to mark user-visible source text for
+ translation.
+
+ \o \l{linguist/arrowpad}{Arrow Pad} explains how to make the application load the
+ translation file applicable to the current locale. It also shows the
+ use of the two-argument form of \c tr() which provides additional
+ information to the translator.
+
+ \o \l{linguist/trollprint}{Troll Print} explains how
+ identical source texts can be distinguished even when they occur in
+ the same context. This tutorial also discusses how the translation
+ tools help minimize the translator's work when an application is
+ upgraded.
+ \endlist
+
+ These tutorials cover all that you need to know to prepare your Qt
+ applications for translation.
+
+ At the beginning of a project add the translation source files to be
+ used to the project file and add calls to \l lupdate and \l lrelease to
+ the makefile.
+
+ During the project all the programmer must do is wrap any user-visible
+ text in \c tr() calls. They should also use the two argument form for
+ Ctrl key accelerators, or when asked by the translator for the cases
+ where the same text translates into two different forms in the same
+ context. The programmer should also include \c TRANSLATION comments to
+ help the translator navigate the application.
+*/
+
+/*!
+ \page linguist-ts-file-format.html
+ \title Qt Linguist Manual: TS File Format
+
+ \contentspage {Qt Linguist Manual}{Contents}
+ \previouspage Qt Linguist Manual: Programmers
+
+ The TS file format used by \QL is described by the
+ \l{http://www.w3.org/TR/1998/REC-xml-19980210}{DTD} presented below,
+ which we include for your convenience. Be aware that the format
+ may change in future Qt releases.
+
+ \quotefile tools/linguist/shared/ts.dtd
+
+*/
diff --git a/doc/src/introtodbus.qdoc b/doc/src/introtodbus.qdoc
deleted file mode 100644
index bd1aefc79..000000000
--- a/doc/src/introtodbus.qdoc
+++ /dev/null
@@ -1,229 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page intro-to-dbus.html
- \title Introduction to D-Bus
-
- \keyword QtDBus
- \ingroup architecture
- \brief An introduction to Inter-Process Communication and Remote Procedure Calling with D-Bus.
-
- \section1 Introduction
-
- D-Bus is an Inter-Process Communication (IPC) and Remote Procedure
- Calling (RPC) mechanism originally developed for Linux to replace
- existing and competing IPC solutions with one unified protocol. It
- has also been designed to allow communication between system-level
- processes (such as printer and hardware driver services) and
- normal user processes.
-
- It uses a fast, binary message-passing protocol, which is suitable
- for same-machine communication due to its low latency and low
- overhead. Its specification is currently defined by the
- \tt{freedesktop.org} project, and is available to all parties.
-
- Communication in general happens through a central server
- application, called the "bus" (hence the name), but direct
- application-to-application communication is also possible. When
- communicating on a bus, applications can query which other
- applications and services are available, as well as activate one
- on demand.
-
- \section1 The Buses
-
- D-Bus buses are used to when many-to-many communication is
- desired. In order to achieve that, a central server is launched
- before any applications can connect to the bus: this server is
- responsible for keeping track of the applications that are
- connected and for properly routing messages from their source to
- their destination.
-
- In addition, D-Bus defines two well-known buses, called the
- system bus and the session bus. These buses are special in the
- sense that they have well-defined semantics: some services are
- defined to be found in one or both of these buses.
-
- For example, an application wishing to query the list of hardware
- devices attached to the computer will probably communicate to a
- service available on the system bus, while the service providing
- opening of the user's web browser will be probably found on the
- session bus.
-
- On the system bus, one can also expect to find restrictions on
- what services each application is allowed to offer. Therefore, one
- can be reasonably certain that, if a certain service is present,
- it is being offered by a trusted application.
-
- \section1 Concepts
-
- \section2 Messages
-
- On the low level, applications communicate over D-Bus by sending
- messages to one another. Messages are used to relay the remote
- procedure calls as well as the replies and errors associated
- with them. When used over a bus, messages have a destination,
- which means they are routed only to the interested parties,
- avoiding congestion due to "swarming" or broadcasting.
-
- A special kind of message called a "signal message"
- (a concept based on Qt's \l {Signals and Slots} mechanism),
- however, does not have a pre-defined destination. Since its
- purpose is to be used in a one-to-many context, signal messages
- are designed to work over an "opt-in" mechanism.
-
- The QtDBus module fully encapsulates the low-level concept of
- messages into a simpler, object-oriented approach familiar to Qt
- developers. In most cases, the developer need not worry about
- sending or receiving messages.
-
- \section2 Service Names
-
- When communicating over a bus, applications obtain what is
- called a "service name": it is how that application chooses to be
- known by other applications on the same bus. The service names
- are brokered by the D-Bus bus daemon and are used to
- route messages from one application to another. An analogous
- concept to service names are IP addresses and hostnames: a
- computer normally has one IP address and may have one or more
- hostnames associated with it, according to the services that it
- provides to the network.
-
- On the other hand, if a bus is not used, service names are also
- not used. If we compare this to a computer network again, this
- would equate to a point-to-point network: since the peer is
- known, there is no need to use hostnames to find it or its IP
- address.
-
- The format of a D-Bus service name is in fact very similar to a
- host name: it is a dot-separated sequence of letters and
- digits. The common practice is even to name one's service name
- according to the domain name of the organization that defined
- that service.
-
- For example, the D-Bus service is defined by
- \tt{freedesktop.org} and can be found on the bus under the
- service name:
-
- \snippet doc/src/snippets/code/doc_src_introtodbus.qdoc 0
-
- \section2 Object Paths
-
- Like network hosts, applications provide specific services to
- other applications by exporting objects. Those objects are
- hierarchically organised, much like the parent-child
- relationship that classes derived from QObject possess. One
- difference, however, is that there is the concept of "root
- object", that all objects have as ultimate parent.
-
- If we continue our analogy with Web services, object paths
- equate to the path part of a URL:
-
- \img qurl-ftppath.png
-
- Like them, object paths in D-Bus are formed resembling path
- names on the filesystem: they are slash-separated labels, each
- consisting of letters, digits and the underscore character
- ("_"). They must always start with a slash and must not end with
- one.
-
- \section2 Interfaces
-
- Interfaces are similar to C++ abstract classes and Java's
- \c interface keyword and declare the "contract" that is
- established between caller and callee. That is, they establish
- the names of the methods, signals and properties that are
- available as well as the behavior that is expected from either
- side when communication is established.
-
- Qt uses a very similar mechanism in its \l {How to Create Qt
- Plugins}{Plugin system}: Base classes in C++ are associated
- with a unique identifier by way of the Q_DECLARE_INTERFACE()
- macro.
-
- D-Bus interface names are, in fact, named in a manner similar to
- what is suggested by the Qt Plugin System: an identifier usually
- constructed from the domain name of the entity that defined that
- interface.
-
- \section2 Cheat Sheet
-
- To facilitate remembering of the naming formats and their
- purposes, the following table can be used:
-
- \table 90%
- \header \o D-Bus Concept \o Analogy \o Name format
- \row \o Service name \o Network hostnames \o Dot-separated
- ("looks like a hostname")
- \row \o Object path \o URL path component \o Slash-separated
- ("looks like a path")
- \row \o Interface \o Plugin identifier \o Dot-separated
- \endtable
-
- \section1 Debugging
-
- When developing applications that use D-Bus, it is sometimes useful to be able
- to see information about the messages that are sent and received across the
- bus by each application.
-
- This feature can be enabled on a per-application basis by setting the
- \c QDBUS_DEBUG environment variable before running each application.
- For example, we can enable debugging only for the car in the
- \l{D-Bus Remote Controlled Car Example} by running the controller and the
- car in the following way:
-
- \snippet doc/src/snippets/code/doc_src_introtodbus.qdoc QDBUS_DEBUG
-
- Information about the messages will be written to the console the application
- was launched from.
-
- \section1 Further Reading
-
- The following documents contain information about Qt's D-Bus integration
- features, and provide details about the mechanisms used to send and receive
- type information over the bus:
-
- \list
- \o \l{Using QtDBus Adaptors}
- \o \l{The QtDBus Type System}
- \o \l{QtDBus XML compiler (qdbusxml2cpp)}
- \endlist
-*/
diff --git a/doc/src/ipc.qdoc b/doc/src/ipc.qdoc
deleted file mode 100644
index 9ca8a0d23..000000000
--- a/doc/src/ipc.qdoc
+++ /dev/null
@@ -1,91 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \group ipc
- \title Inter-Process Communication in Qt
- \ingroup groups
- \ingroup architecture
- \brief Inter-Process communication in Qt applications.
-
- Qt provides several ways to implement Inter-Process Communication
- (IPC) in Qt applications.
-
- \section1 D-Bus
-
- The \l{QtDBus} module is a Unix-only library
- you can use to implement IPC using the D-Bus protocol. It extends
- Qt's \l{signalsandslots.html} {Signals and Slots} mechanism to the
- IPC level, allowing a signal emitted by one process to be
- connected to a slot in another process. This \l {Introduction to
- D-Bus} page has detailed information on how to use the \l{QtDBus}
- module.
-
- \section1 TCP/IP
-
- The cross-platform \l{QtNetwork} module provides classes that make
- network programming portable and easy. It offers high-level
- classes (e.g., QNetworkAccessManager, QFtp) that communicate using
- specific application-level protocols, and lower-level classes
- (e.g., QTcpSocket, QTcpServer, QSslSocket) for implementing
- protocols.
-
- \section1 Shared Memory
-
- The cross-platform shared memory class, QSharedMemory, provides
- access to the operating system's shared memory implementation.
- It allows safe access to shared memory segments by multiple threads
- and processes. Additionally, QSystemSemaphore can be used to control
- access to resources shared by the system, as well as to communicate
- between processes.
-
- \section1 Qt COmmunications Protocol (QCOP)
-
- The QCopChannel class implements a protocol for transferring messages
- between client processes across named channels. QCopChannel is
- only available in \l{Qt for Embedded Linux}. Like the \l{QtDBus}
- module, QCOP extends Qt's \l{Signals and Slots} mechanism to the
- IPC level, allowing a signal emitted by one process to be
- connected to a slot in another process, but unlike QtDBus, QCOP
- does not depend on a third party library.
-
-*/
-
diff --git a/doc/src/known-issues.qdoc b/doc/src/known-issues.qdoc
deleted file mode 100644
index 87955bdc3..000000000
--- a/doc/src/known-issues.qdoc
+++ /dev/null
@@ -1,143 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page known-issues.html
- \title Known Issues in %VERSION%
- \ingroup platform-notes
- \brief A summary of known issues in Qt %VERSION% at the time of release.
-
- An up-to-date list of known issues with Qt %VERSION% can be found via the
- \l{Task Tracker} on the Qt website which provides additional information
- about known issues and tasks related to Qt.
-
- \section1 General Issues
-
- When running Qt applications on Windows or with \c{-graphicssystem raster},
- any process that triggers a QWidget::update() from within a destructor
- might result in a crash.
-
-
- \section1 Issues with Third Party Software
-
- \section2 X11 Hardware Support
-
- \list
- \o There is a bug in the 169.xx NVIDIA drivers on certain GeForce 8 series
- cards that is triggered by the OpenGL paint engine when using QPainter
- on a QGLWidget to draw paths and polygons. Some other painting
- operations that end up in the path fallback are affected as well. The
- bug causes the whole X server to repeatedly hang for several seconds at
- a time.
- \o There is an issue with NVIDIA's 9xxx driver series on X11 that causes a
- crash in cases where there are several \l{QGLContext}s and the extended
- composition modes are used (the composition modes between and including
- QPainter::CompositionMode_Multiply and
- QPainter::CompositionMode_Exclusion). This affects the composition mode
- demo in Qt 4.5, for example. The crash does not occur in newer versions
- of the drivers.
- \endlist
-
- \section2 Windows Hardware Support
-
- \list
- \o When using version 6.14.11.6921 of the NVIDIA drivers for the GeForce
- 6600 GT under Windows XP, Qt applications which use drag and drop will
- display reduced size drag and drop icons when run alongside
- applications that use OpenGL. This problem can be worked around by
- reducing the level of graphics acceleration provided by the driver, or
- by disabling hardware acceleration completely.
- \endlist
-
- \section2 Windows Software Issues
-
- \list
-
- \o When building Qt 4.5.0 with Windows 7, the build fails with an error
- message regarding failing to embed manifest. This a known issue with
- Windows 7, explained in the Windows 7 SDK Beta
- \l{http://download.microsoft.com/download/8/8/0/8808A472-6450-4723-9C87-977069714B27/ReleaseNotes.Htm}
- {release notes}. A workaround for this issue is to patch the
- \bold{embed_manifest_exe.prf} file with the following:
-
- \code
- diff --git a/mkspecs/features/win32/embed_manifest_exe.prf b/mkspecs/features/win32/embed_manifest_exe.prf
- index e1747f1..05f116e 100644
- --- a/mkspecs/features/win32/embed_manifest_exe.prf
- +++ b/mkspecs/features/win32/embed_manifest_exe.prf
- @@ -8,4 +8,9 @@ if(win32-msvc2005|win32-msvc2008):!equals(TEMPLATE_PREFIX, "vc"):equals(TEMPLATE
- QMAKE_POST_LINK = $$quote(mt.exe -nologo -manifest \"$$replace(OBJECTS_DIR,/,\\)\\$${NOPATH_TARGET}.intermediate.ma
- nifest\" -outputresource:$(DESTDIR_TARGET);1$$escape_expand(\n\t))
- QMAKE_POST_LINK += $$QMAKE_PREV_POST_LINK
- QMAKE_CLEAN += \"$$replace(OBJECTS_DIR,/,\\)\\$${NOPATH_TARGET}.intermediate.manifest\"
- + isEmpty(RC_FILE) {
- + system("echo.>$$replace(OUT_PWD,/,\\)\\$$replace(OBJECTS_DIR,/,\\)\\Windows7WorkAround.rc")
- + RC_FILE = $$replace(OUT_PWD,/,\\)\\$$replace(OBJECTS_DIR,/,\\)\\Windows7WorkAround.rc
- + }
- +
- }
- \endcode
-
- \o Under certain circumstances Visual Studio Integration v1.4.0 will not
- be able to install the integration for Visual Studio 2005 on Windows
- Vista. An error message states that .NET Framework v2.0 Service Pack 1
- is not installed. This is due to a problem with the built-in
- installation of this on Windows Vista. This issue can be fixed by
- installing .NET Framework version 3.5.
-
- \o With NVIDIA GeForce 7950 GT (driver version 6.14.11.7824), a fullscreen
- QGLWidget flickers when child widgets are shown/hidden. The workaround
- for this is to use \l{QWidget::}{setGeometry()} with a width/height 1
- pixel bigger than your geometry and call \l{QWidget::}{show()}.
-
- \o A bug in the Firebird database can cause an application to crash when
- \c{fbembed.dll} is unloaded. The bug is fixed in version 2.5.
-
- \endlist
-
- \section2 Mac OS X Software Support
-
- \list
- \o If a sheet is opened for a given window, clicking the title bar of that
- window will cause it to flash. This behavior has been reported to Apple
- (bug number 5827676).
- \endlist
-*/
diff --git a/doc/src/layout.qdoc b/doc/src/layout.qdoc
deleted file mode 100644
index dc75bc6d4..000000000
--- a/doc/src/layout.qdoc
+++ /dev/null
@@ -1,384 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page layout.html
-
- \title Layout Management
- \ingroup architecture
- \brief A tour of the standard layout managers and an introduction to custom
- layouts.
-
- The Qt layout system provides a simple and powerful way of automatically
- arranging child widgets within a widget to ensure that they make good use
- of the available space.
-
- \tableofcontents
-
- \section1 Introduction
-
- Qt includes a set of layout management classes that are used to describe
- how widgets are laid out in an application's user interface. These layouts
- automatically position and resize widgets when the amount of space
- available for them changes, ensuring that they are consistently arranged
- and that the user interface as a whole remains usable.
-
- All QWidget subclasses can use layouts to manage their children. The
- QWidget::setLayout() function applies a layout to a widget. When a layout
- is set on a widget in this way, it takes charge of the following tasks:
-
- \list
- \o Positioning of child widgets.
- \o Sensible default sizes for windows.
- \o Sensible minimum sizes for windows.
- \o Resize handling.
- \o Automatic updates when contents change:
- \list
- \o Font size, text or other contents of child widgets.
- \o Hiding or showing a child widget.
- \o Removal of child widgets.
- \endlist
- \endlist
-
- Qt's layout classes were designed for hand-written C++ code, allowing
- measurements to be specified in pixels for simplicity, so they are easy to
- understand and use. The code generated for forms created using \QD also
- uses the layout classes. \QD is useful to use when experimenting with the
- design of a form since it avoids the compile, link and run cycle usually
- involved in user interface development.
-
-
- \section1 Horizontal, Vertical, Grid, and Form Layouts
-
- The easiest way to give your widgets a good layout is to use the built-in
- layout managers: QHBoxLayout, QVBoxLayout, QGridLayout, and QFormLayout.
- These classes inherit from QLayout, which in turn derives from QObject (not
- QWidget). They take care of geometry management for a set of widgets. To
- create more complex layouts, you can nest layout managers inside each other.
-
- \list
- \o A QHBoxLayout lays out widgets in a horizontal row, from left to
- right (or right to left for right-to-left languages).
- \image qhboxlayout-with-5-children.png
-
- \o A QVBoxLayout lays out widgets in a vertical column, from top to
- bottom.
- \image qvboxlayout-with-5-children.png
-
- \o A QGridLayout lays out widgets in a two-dimensional grid. Widgets
- can occupy multiple cells.
- \image qgridlayout-with-5-children.png
-
- \o A QFormLayout lays out widgets in a 2-column descriptive label-
- field style.
- \image qformlayout-with-6-children.png
- \endlist
-
-
- \section2 Laying Out Widgets in Code
-
- The following code creates a QHBoxLayout that manages the geometry of five
- \l{QPushButton}s, as shown on the first screenshot above:
-
- \snippet doc/src/snippets/layouts/layouts.cpp 0
- \snippet doc/src/snippets/layouts/layouts.cpp 1
- \snippet doc/src/snippets/layouts/layouts.cpp 2
- \codeline
- \snippet doc/src/snippets/layouts/layouts.cpp 3
- \snippet doc/src/snippets/layouts/layouts.cpp 4
- \snippet doc/src/snippets/layouts/layouts.cpp 5
-
- The code for QVBoxLayout is identical, except the line where the layout is
- created. The code for QGridLayout is a bit different, because we need to
- specify the row and column position of the child widget:
-
- \snippet doc/src/snippets/layouts/layouts.cpp 12
- \snippet doc/src/snippets/layouts/layouts.cpp 13
- \snippet doc/src/snippets/layouts/layouts.cpp 14
- \codeline
- \snippet doc/src/snippets/layouts/layouts.cpp 15
- \snippet doc/src/snippets/layouts/layouts.cpp 16
- \snippet doc/src/snippets/layouts/layouts.cpp 17
-
- The third QPushButton spans 2 columns. This is possible by specifying 2 as
- the fifth argument to QGridLayout::addWidget().
-
- Finally, the code for QFormLayout is ..
-
-
- \section2 Tips for Using Layouts
-
- When you use a layout, you do not need to pass a parent when constructing
- the child widgets. The layout will automatically reparent the widgets
- (using QWidget::setParent()) so that they are children of the widget on
- which the layout is installed.
-
- \note Widgets in a layout are children of the widget on which the layout
- is installed, \e not of the layout itself. Widgets can only have other
- widgets as parent, not layouts.
-
- You can nest layouts using \c addLayout() on a layout; the inner layout
- then becomes a child of the layout it is inserted into.
-
-
- \section1 Adding Widgets to a Layout
-
- When you add widgets to a layout, the layout process works as follows:
-
- \list 1
- \o All the widgets will initially be allocated an amount of space in
- accordance with their QWidget::sizePolicy() and
- QWidget::sizeHint().
-
- \o If any of the widgets have stretch factors set, with a value
- greater than zero, then they are allocated space in proportion to
- their stretch factor (explained below).
-
- \o If any of the widgets have stretch factors set to zero they will
- only get more space if no other widgets want the space. Of these,
- space is allocated to widgets with an
- \l{QSizePolicy::Expanding}{Expanding} size policy first.
-
- \o Any widgets that are allocated less space than their minimum size
- (or minimum size hint if no minimum size is specified) are
- allocated this minimum size they require. (Widgets don't have to
- have a minimum size or minimum size hint in which case the strech
- factor is their determining factor.)
-
- \o Any widgets that are allocated more space than their maximum size
- are allocated the maximum size space they require. (Widgets do not
- have to have a maximum size in which case the strech factor is
- their determining factor.)
- \endlist
-
-
- \section2 Stretch Factors
- \keyword stretch factor
-
- Widgets are normally created without any stretch factor set. When they are
- laid out in a layout the widgets are given a share of space in accordance
- with their QWidget::sizePolicy() or their minimum size hint whichever is
- the greater. Stretch factors are used to change how much space widgets are
- given in proportion to one another.
-
- If we have three widgets laid out using a QHBoxLayout with no stretch
- factors set we will get a layout like this:
-
- \img layout1.png Three widgets in a row
-
- If we apply stretch factors to each widget, they will be laid out in
- proportion (but never less than their minimum size hint), e.g.
-
- \img layout2.png Three widgets with different stretch factors in a row
-
-
- \section1 Custom Widgets in Layouts
-
- When you make your own widget class, you should also communicate its layout
- properties. If the widget has a one of Qt's layouts, this is already taken
- care of. If the widget does not have any child widgets, or uses manual
- layout, you can change the behavior of the widget using any or all of the
- following mechanisms:
-
- \list
- \o Reimplement QWidget::sizeHint() to return the preferred size of the
- widget.
- \o Reimplement QWidget::minimumSizeHint() to return the smallest size
- the widget can have.
- \o Call QWidget::setSizePolicy() to specify the space requirements of
- the widget.
- \endlist
-
- Call QWidget::updateGeometry() whenever the size hint, minimum size hint or
- size policy changes. This will cause a layout recalculation. Multiple
- consecutive calls to QWidget::updateGeometry() will only cause one layout
- recalculation.
-
- If the preferred height of your widget depends on its actual width (e.g.,
- a label with automatic word-breaking), set the
- \l{QSizePolicy::hasHeightForWidth()}{height-for-width} flag in the
- widget's \l{QWidget::sizePolicy}{size policy} and reimplement
- QWidget::heightForWidth().
-
- Even if you implement QWidget::heightForWidth(), it is still a good idea to
- provide a reasonable sizeHint().
-
- For further guidance when implementing these functions, see the
- \e{Qt Quarterly} article
- \l{http://qt.nokia.com/doc/qq/qq04-height-for-width.html}
- {Trading Height for Width}.
-
-
- \section1 Layout Issues
-
- The use of rich text in a label widget can introduce some problems to the
- layout of its parent widget. Problems occur due to the way rich text is
- handled by Qt's layout managers when the label is word wrapped.
-
- In certain cases the parent layout is put into QLayout::FreeResize mode,
- meaning that it will not adapt the layout of its contents to fit inside
- small sized windows, or even prevent the user from making the window too
- small to be usable. This can be overcome by subclassing the problematic
- widgets, and implementing suitable \l{QWidget::}{sizeHint()} and
- \l{QWidget::}{minimumSizeHint()} functions.
-
- In some cases, it is relevant when a layout is added to a widget. When
- you set the widget of a QDockWidget or a QScrollArea (with
- QDockWidget::setWidget() and QScrollArea::setWidget()), the layout must
- already have been set on the widget. If not, the widget will not be
- visible.
-
-
- \section1 Manual Layout
-
- If you are making a one-of-a-kind special layout, you can also make a
- custom widget as described above. Reimplement QWidget::resizeEvent() to
- calculate the required distribution of sizes and call
- \l{QWidget::}{setGeometry()} on each child.
-
- The widget will get an event of type QEvent::LayoutRequest when the
- layout needs to be recalculated. Reimplement QWidget::event() to handle
- QEvent::LayoutRequest events.
-
-
- \section1 How to Write A Custom Layout Manager
-
- An alternative to manual layout is to write your own layout manager by
- subclassing QLayout. The \l{layouts/borderlayout}{Border Layout} and
- \l{layouts/flowlayout}{Flow Layout} examples show how to do this.
-
- Here we present an example in detail. The \c CardLayout class is inspired
- by the Java layout manager of the same name. It lays out the items (widgets
- or nested layouts) on top of each other, each item offset by
- QLayout::spacing().
-
- To write your own layout class, you must define the following:
- \list
- \o A data structure to store the items handled by the layout. Each
- item is a \link QLayoutItem QLayoutItem\endlink. We will use a
- QList in this example.
- \o \l{QLayout::}{addItem()}, how to add items to the layout.
- \o \l{QLayout::}{setGeometry()}, how to perform the layout.
- \o \l{QLayout::}{sizeHint()}, the preferred size of the layout.
- \o \l{QLayout::}{itemAt()}, how to iterate over the layout.
- \o \l{QLayout::}{takeAt()}, how to remove items from the layout.
- \endlist
-
- In most cases, you will also implement \l{QLayout::}{minimumSize()}.
-
-
- \section2 The Header File (\c card.h)
-
- \snippet doc/src/snippets/code/doc_src_layout.qdoc 0
-
-
- \section2 The Implementation File (\c card.cpp)
-
- \snippet doc/src/snippets/code/doc_src_layout.qdoc 1
-
- First we define \c{count()} to fetch the number of items in the list.
-
- \snippet doc/src/snippets/code/doc_src_layout.qdoc 2
-
- Then we define two functions that iterate over the layout: \c{itemAt()}
- and \c{takeAt()}. These functions are used internally by the layout system
- to handle deletion of widgets. They are also available for application
- programmers.
-
- \c{itemAt()} returns the item at the given index. \c{takeAt()} removes the
- item at the given index, and returns it. In this case we use the list index
- as the layout index. In other cases where we have a more complex data
- structure, we may have to spend more effort defining a linear order for the
- items.
-
- \snippet doc/src/snippets/code/doc_src_layout.qdoc 3
-
- \c{addItem()} implements the default placement strategy for layout items.
- This function must be implemented. It is used by QLayout::add(), by the
- QLayout constructor that takes a layout as parent. If your layout has
- advanced placement options that require parameters, you must provide extra
- access functions such as the row and column spanning overloads of
- QGridLayout::addItem(), QGridLayout::addWidget(), and
- QGridLayout::addLayout().
-
- \snippet doc/src/snippets/code/doc_src_layout.qdoc 4
-
- The layout takes over responsibility of the items added. Since QLayoutItem
- does not inherit QObject, we must delete the items manually. In the
- destructor, we remove each item from the list using \c{takeAt()}, and
- then delete it.
-
- \snippet doc/src/snippets/code/doc_src_layout.qdoc 5
-
- The \c{setGeometry()} function actually performs the layout. The rectangle
- supplied as an argument does not include \c{margin()}. If relevant, use
- \c{spacing()} as the distance between items.
-
- \snippet doc/src/snippets/code/doc_src_layout.qdoc 6
-
- \c{sizeHint()} and \c{minimumSize()} are normally very similar in
- implementation. The sizes returned by both functions should include
- \c{spacing()}, but not \c{margin()}.
-
- \snippet doc/src/snippets/code/doc_src_layout.qdoc 7
-
-
- \section2 Further Notes
-
- \list
- \o This custom layout does not handle height for width.
- \o We ignore QLayoutItem::isEmpty(); this means that the layout will
- treat hidden widgets as visible.
- \o For complex layouts, speed can be greatly increased by caching
- calculated values. In that case, implement
- QLayoutItem::invalidate() to mark the cached data is dirty.
- \o Calling QLayoutItem::sizeHint(), etc. may be expensive. So, you
- should store the value in a local variable if you need it again
- later within in the same function.
- \o You should not call QLayoutItem::setGeometry() twice on the same
- item in the same function. This call can be very expensive if the
- item has several child widgets, because the layout manager must do
- a complete layout every time. Instead, calculate the geometry and
- then set it. (This does not only apply to layouts, you should do
- the same if you implement your own resizeEvent(), for example.)
- \endlist
-*/
-
diff --git a/doc/src/legal/3rdparty.qdoc b/doc/src/legal/3rdparty.qdoc
index d24dfacc7..f1c1847e9 100644
--- a/doc/src/legal/3rdparty.qdoc
+++ b/doc/src/legal/3rdparty.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -114,6 +114,35 @@
FreeType-2, it has been modified in various other ways.} -- quoted from
\c src/3rdparty/harfbuzz/README.
+ \hr
+
+ Copyright (C) 2004,2007  Red Hat, Inc.\br
+ Copyright (C) 1998-2004  David Turner and Werner Lemberg\br
+ Copyright (C) 2006  Behdad Esfahbod\br
+ Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
+
+ This is part of HarfBuzz, an OpenType Layout engine library.
+
+ Permission is hereby granted, without written agreement and without
+ license or royalty fees, to use, copy, modify, and distribute this
+ software and its documentation for any purpose, provided that the
+ above copyright notice and the following two paragraphs appear in
+ all copies of this software.
+
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+ DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+ IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ DAMAGE.
+
+ THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+ BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
+ ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+ PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+ \hr
+
See \c src/3rdparty/harfbuzz/COPYING.FTL and src/3rdparty/harfbuzz/COPYING.GPL
for license details.
@@ -257,7 +286,9 @@
\hr
Copyright (c) 1996-1997 Sam Leffler\br
- Copyright (c) 1996 Pixar
+ Copyright (c) 1996 Pixar\br
+ Copyright (c) 1991-1997 Silicon Graphics, Inc.\br
+ Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>
Permission to use, copy, modify, distribute, and sell this software and
its documentation for any purpose is hereby granted without fee, provided
@@ -280,6 +311,27 @@
\hr
+ Copyright (c) 1985, 1986 The Regents of the University of California.\br
+ All rights reserved.
+
+ This code is derived from software contributed to Berkeley by
+ James A. Woods, derived from original work by Spencer Thomas
+ and Joseph Orost.
+
+ Redistribution and use in source and binary forms are permitted
+ provided that the above copyright notice and this paragraph are
+ duplicated in all such forms and that any documentation,
+ advertising materials, and other materials related to such
+ distribution and use acknowledge that the software was developed
+ by the University of California, Berkeley.  The name of the
+ University may not be used to endorse or promote products derived
+ from this software without specific prior written permission.
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+ \hr
+
See \c src/3rdparty/libtiff/COPYRIGHT for license details.
\section1 Wintab API (\c wintab)
@@ -297,4 +349,24 @@
src/3rdparty/zlib/README.
See \c src/3rdparty/zlib/README for license details.
+
+ \section1 JavaScriptCore
+
+ \hr
+
+ Copyright (c) 1991, 2000, 2001 by Lucent Technologies.\br
+ Copyright (C) 2002, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
+
+ Permission to use, copy, modify, and distribute this software for any
+ purpose without fee is hereby granted, provided that this entire notice
+ is included in all copies of any software which is or includes a copy
+ or modification of this software and in all copies of the supporting
+ documentation for such software.
+
+ THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
+ WARRANTY.  IN PARTICULAR, NEITHER THE AUTHOR NOR LUCENT MAKES ANY
+ REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
+ OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
+
+ See \c src/3rdparty/webkit/JavaScriptCore/wtf/dtoa.cpp for license details.
*/
diff --git a/doc/src/legal/commercialeditions.qdoc b/doc/src/legal/commercialeditions.qdoc
index 761a53b2a..1441a4a0d 100644
--- a/doc/src/legal/commercialeditions.qdoc
+++ b/doc/src/legal/commercialeditions.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -91,8 +91,8 @@
following pages:
\list
- \o \l{Qt GUI Framework Edition Classes}
- \o \l{Qt Full Framework Edition Classes}
+ \o \l{Qt GUI Framework Edition}
+ \o \l{Qt Full Framework Edition}
\endlist
Please see the \l{Supported Platforms}{list of supported
@@ -119,16 +119,20 @@
/*!
\page full-framework-edition-classes.html
- \title Qt Full Framework Edition Classes
+ \title Qt Full Framework Edition
\ingroup classlists
+ \brief The list of Qt classes included in the Full Framework Edition.
+
\generatelist{classesbyedition Desktop}
*/
/*!
\page gui-framework-edition-classes.html
- \title Qt GUI Framework Edition Classes
+ \title Qt GUI Framework Edition
\ingroup classlists
+ \brief The list of Qt classes included in the GUI Framework Edition.
+
\generatelist{classesbyedition DesktopLight}
*/
diff --git a/doc/src/legal/editions.qdoc b/doc/src/legal/editions.qdoc
index cf1534da3..d00078566 100644
--- a/doc/src/legal/editions.qdoc
+++ b/doc/src/legal/editions.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,34 +21,21 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
**
-****************************************************************************/
-
-/****************************************************************************
**
-** Documentation of Qt editions.
**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
+**
+** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/legal/gpl.qdoc b/doc/src/legal/gpl.qdoc
index d138728f2..906dde62a 100644
--- a/doc/src/legal/gpl.qdoc
+++ b/doc/src/legal/gpl.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/legal/licenses.qdoc b/doc/src/legal/licenses.qdoc
index 741466735..3f24fc535 100644
--- a/doc/src/legal/licenses.qdoc
+++ b/doc/src/legal/licenses.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,7 +42,6 @@
/*!
\group licensing
\title Licensing Information
- \ingroup topics
\brief Information about licenses and licensing issues.
These documents include information about Qt's licenses and the licenses
@@ -270,6 +269,467 @@
\list
\o examples/webkit/fancybrowser/jquery.min.js
\endlist
+
+ \hr
+
+ Copyright (C) Research In Motion Limited 2009. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:\br
+     * Redistributions of source code must retain the above copyright
+       notice, this list of conditions and the following disclaimer.\br
+     * 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.\br
+     * Neither the name of Research In Motion Limited 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 Research In Motion Limited ''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 Research In Motion Limited 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.
+
+ \list
+ \o src/corelib/io/qurl.cpp
+ \endlist
+
+ \hr
+
+ Copyright (c) 2007-2008, Apple, Inc.\br
+ Copyright (C) 2008 Cameron Zwarich <cwzwarich@uwaterloo.ca>\br
+ Copyright (C) 2009 Google Inc. All rights reserved.\br
+ Copyright (C) 2008, 2009 Paul Pedriana <ppedriana@ea.com>. All rights reserved.\br
+ Copyright (C) 2007 Justin Haygood (jhaygood@reaktix.com)\br
+ Copyright (C) 2009 Jian Li <jianli@chromium.org>\br
+ Copyright (C) 2007 Staikos Computing Services Inc.\br
+ Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)\br
+ Copyright (C) 2008 Nuanti Ltd.\br
+ Copyright (C) 2007 David Smith (catfish.man@gmail.com)\br
+ Copyright (C) 2008 Tony Chang <idealisms@gmail.com>\br
+ Copyright (C) 2007 Graham Dennis (graham.dennis@gmail.com)
+
+ All rights reserved.
+
+ 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 Apple, Inc. 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.
+
+ \list
+ \o Parts of WebKit used by the QtWebKit module
+ \endlist
+
+ \hr
+
+ Copyright (C) 1999 Serika Kurusugawa, All rights reserved.\br
+ Copyright (C) 1999-2000 Mizi Research Inc. All rights reserved.\br
+ Copyright (C) 2004, 2005 Daniel M. Duley\br
+ Copyright (C) 2000 Ming-Che Chuang\br
+ Copyright (C) 2001, 2002 James Su, Turbolinux Inc.\br
+ Copyright (C) 2002 WU Yi, HancomLinux Inc.\br
+ Copyright (C) 2001, 2002 Anthony Fok, ThizLinux Laboratory Ltd.\br
+ Copyright (c) 2000 Hans Petter Bieker. All rights reserved.\br
+ Copyright (C) 2001, 2002 ThizLinux Laboratory Ltd.\br
+ Copyright (C) 2001, 2002 Turbolinux, Inc.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 REGENTS 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.
+
+ \list
+ \o Parts of the codecs implemented by Qt
+ \endlist
+
+ \hr
+
+ Copyright (c) 1992, 1993\br
+ The Regents of the University of California. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. All advertising materials mentioning features or use of this software
+ must display the following acknowledgment:
+ This product includes software developed by the University of
+ California, Berkeley and its contributors.
+ 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
+
+ \list
+ \o src/corelib/tools/qlocale.cpp
+ \endlist
+
+ \hr
+
+ Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,\br
+ All rights reserved.
+
+ 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.\br
+ * 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.\br
+ * Neither the name of the author nor the names of 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.
+
+ \list
+ \o Parts of WebKit used by the QtWebKit module
+ \endlist
+
+ \hr
+
+ Copyright (C) 2005, 2007, 2008 by George Williams
+
+ 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.
+
+ The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+ \list
+ \o Parts of the FreeType library
+ \endlist
+
+ \hr
+
+ Copyright (C) 2006 Apple Computer, Inc. All rights reserved.\br
+ Copyright (C) 2007 Eric Seidel <eric@webkit.org>\br
+ Copyright (C) 2008 Kelvin W Sherlock (ksherlock@gmail.com)\br
+ Copyright (C) 2008 Alp Toker <alp@atoker.com>\br
+ Copyright (C) 2009 University of Szeged\br
+ Copyright (C) 2007 Alexey Proskuryakov (ap@nypop.com)\br
+ Copyright (C) 2009 Daniel Bates (dbates@intudata.com)\br
+ Copyright (C) 2008 Nikolas Zimmermann <zimmermann@kde.org>\br
+ Copyright (C) 2006 Michael Emmel mike.emmel@gmail.com\br
+ Copyright (C) 2007 Holger Hans Peter Freyther\br
+ Copyright (C) 2008 Collabora Ltd. All rights reserved.\br
+ Copyright (C) 2006 Dirk Mueller <mueller@kde.org>\br
+ Copyright (C) 2006 Zack Rusin <zack@kde.org>\br
+ Copyright (C) 2006 George Staikos <staikos@kde.org>\br
+ Copyright (C) 2006 Simon Hausmann <hausmann@kde.org>\br
+ Copyright (C) 2006 Rob Buis <buis@kde.org>\br
+ Copyright (C) 2008 Julien Chaffraix <jchaffraix@webkit.org>\br
+ Copyright (C) 2007 Henry Mason (hmason@mac.com)\br
+ Copyright (C) 1999 Lars Knoll (knoll@kde.org)\br
+ Copyright (C) 1999 Antti Koivisto (koivisto@kde.org)\br
+ Copyright (c) 2009 The Android Open Source Project\br
+ Copyright (C) 2008 Dirk Schulze <krit@webkit.org>\br
+ Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)\br
+ Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com>\br
+ Copyright (C) 2009 280 North Inc. All Rights Reserved.\br
+ Copyright (C) 2009 Joseph Pecoraro\br
+ Copyright (C) 2008 Anthony Ricaud (rik24d@gmail.com)\br
+ Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>\br
+ Copyright (C) 2008 Christian Dywan <christian@imendio.com>\br
+ Copyright (C) 2006 Michael Emmel mike.emmel@gmail.com \br
+ Copyright (C) 2009 Holger Hans Peter Freyther\br
+ Copyright (C) 2008 Google Inc. All rights reserved.\br
+ Copyright (C) 2006 Friedemann Kleint <fkleint@trolltech.com>\br
+ Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>\br
+ Copyright (C) 2008 Collin Jackson <collinj@webkit.org>\br
+ Copyright (C) 2007 Staikos Computing Services Inc. <info@staikos.net>\br
+ Copyright (C) 2008 Kevin Ollivier <kevino@theolliviers.com> All Rights Reserved.\br
+ Copyright (C) 2005 Frerich Raabe <raabe@kde.org>\br
+ Copyright (C) 2005 Maksim Orlovich <maksim@kde.org>\br
+ Copyright (C) 2005, 2006 Kimmo Kinnunen <kimmo.t.kinnunen@nokia.com>.\br
+ Copyright (C) 2007-2009 Torch Mobile, Inc.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.\br
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. 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.
+
+ \list
+ \o Parts of WebKit used by the QtWebKit module
+ \endlist
+
+ \hr
+
+ Copyright (C) 2009 University of Szeged\br
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.\br
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY UNIVERSITY OF SZEGED ``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 UNIVERSITY OF SZEGED 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.
+
+ \list
+ \o Parts of WebKit used by the QtWebKit module
+ \endlist
+
+ \hr
+
+ Copyright (C) 2002 Michael Ringgaard. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.\br
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.\br
+ 3. Neither the name of the project 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.
+
+ \list
+ \o src/3rdparty/ce-compat/ce_time.c
+ \endlist
+
+ \hr
+
+ Copyright (c) 1997-2005 University of Cambridge. All rights reserved.
+
+ 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 the University of Cambridge nor the name of Apple
+ Inc. nor the names of their 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.
+
+ \list
+ \o Parts of WebKit used by the QtWebKit module
+ \endlist
+
+ \hr
+
+ Originally written by Philip Hazel\br
+ Copyright (c) 1997-2006 University of Cambridge\br
+ Copyright (C) 2007 Eric Seidel <eric@webkit.org>\br
+ Copyright (C) 2002, 2004, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+
+ -----------------------------------------------------------------------------\br
+ 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 the University of Cambridge 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.
+
+ \list
+ \o Parts of WebKit used by the QtWebKit module
+ \endlist
+
+ \hr
+
+ Copyright (C) 2006 Apple Computer, Inc. All rights reserved.\br
+ Copyright (C) 2008 Google Inc. All rights reserved.\br
+ Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com>
+
+ 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.\br
+ * 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.\br
+ * Neither the name of Google Inc. 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.
+
+ \list
+ \o Parts of WebKit used by the QtWebKit module
+ \endlist
*/
/*!
diff --git a/doc/src/legal/opensourceedition.qdoc b/doc/src/legal/opensourceedition.qdoc
index 8a76f276c..985836093 100644
--- a/doc/src/legal/opensourceedition.qdoc
+++ b/doc/src/legal/opensourceedition.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/legal/trademarks.qdoc b/doc/src/legal/trademarks.qdoc
index 40987e170..3e11ff3d2 100644
--- a/doc/src/legal/trademarks.qdoc
+++ b/doc/src/legal/trademarks.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/linguist-manual.qdoc b/doc/src/linguist-manual.qdoc
deleted file mode 100644
index a67d65ad1..000000000
--- a/doc/src/linguist-manual.qdoc
+++ /dev/null
@@ -1,1512 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page linguist-manual.html
- \title Qt Linguist Manual
- \ingroup qttools
-
- \startpage {index.html}{Qt Reference Documentation}
- \nextpage Qt Linguist Manual: Release Manager
-
- \keyword Qt Linguist
-
- Qt provides excellent support for translating applications into local
- languages. This Guide explains how to use Qt's translation tools for
- each of the roles involved in translating an application. The Guide
- begins with a brief overview of the issues that must be considered,
- followed by chapters devoted to each role and the supporting tools
- provided.
-
- The \l{linguist-manager.html}{Release Manager} chapter is aimed
- at the person with overall responsibility for the release of the
- application. They will typically coordinate the work of the
- software engineers and the translator. The chapter describes the
- use of two tools. The \l{lupdate} tool is used to synchronize
- source code and translations. The \l{lrelease} tool is used to
- create runtime translation files for use by the released
- application.
-
- The \l{linguist-translators.html}{Translators} chapter is for
- translators. It describes the use of the \QL tool.
- No computer knowledge beyond the ability to start a program and
- use a text editor or word processor is required.
-
- The \l{linguist-programmers.html}{Programmers} chapter is for Qt
- programmers. It explains how to create Qt applications that are
- able to use translated text. It also provides guidance on how to
- help the translator identify the context in which phrases appear.
- This chapter's three short tutorials cover everything the
- programmer needs to do.
-
- \section1 Overview of the Translation Process
-
- Most of the text that must be translated in an application program
- consists of either single words or short phrases. These typically
- appear as window titles, menu items, pop-up help text (balloon help),
- and labels to buttons, check boxes and radio buttons.
-
- The phrases are entered into the source code by the programmer in
- their native language using a simple but special syntax to identify
- that the phrases require translation. The Qt tools provide context
- information for each of the phrases to help the translator, and the
- programmer is able to add additional context information to phrases
- when necessary. The release manager generates a set of translation
- files that are produced from the source files and passes these to the
- translator. The translator opens the translation files using \QL,
- enters their translations and saves the results back into
- the translation files, which they pass back to the release manager.
- The release manager then generates fast compact versions of these
- translation files ready for use by the application. The tools are
- designed to be used in repeated cycles as applications change and
- evolve, preserving existing translations and making it easy to
- identify which new translations are required. \QL also
- provides a phrase book facility to help ensure consistent
- translations across multiple applications and projects.
-
- Translators and programmers must address a number of issues because
- of the subtleties and complexities of human language:
-
- \list
-
- \o A single phrase may need to be translated into several
- different forms depending on context, e.g. \e open in English
- might become \e{\ouml\c{}ffnen}, "open file", or \e aufbauen,
- "open internet connection", in German.
-
- \o Keyboard accelerators may need to be changed but without
- introducing conflicts, e.g. "\&Quit" in English becomes "Avslutt"
- in Norwegian which doesn't contain a "Q". We cannot use a letter
- that is already in use - unless we change several accelerators.
-
- \o Phrases that contain variables, for example, "The 25 files
- selected will take 63 seconds to process", where the two numbers
- are inserted programmatically at runtime may need to be reworded
- because in a different language the word order and therefore the
- placement of the variables may have to change.
-
- \endlist
-
- The Qt translation tools provide clear and simple solutions to these
- issues.
-
- Chapters:
-
- \list
- \o \l{Qt Linguist Manual: Release Manager}{Release Manager}
- \o \l{Qt Linguist Manual: Translators}{Translators}
- \o \l{Qt Linguist Manual: Programmers}{Programmers}
- \o \l{Qt Linguist Manual: TS File Format}{TS File Format}
- \endlist
-
- \QL and \c lupdate are able to import and export XML Localization
- Interchange File Format (XLIFF) files, making it possible to take
- advantage of tools and translation services that work with this
- format. See the \l{Qt Linguist Manual: Translators} {Translators}
- section for more information on working with these files.
-
- \table
-
- \row \o{1,2} \inlineimage wVista-Cert-border-small.png
- \o \e{Qt Linguist 4.3 is Certified for Windows Vista}
-
- \row \o Windows Vista and the Windows Vista Start button are
- trademarks or registered trademarks of Microsoft Corporation in
- the United States and/or other countries.
-
- \endtable
-*/
-
-/*!
- \page linguist-manager.html
- \title Qt Linguist Manual: Release Manager
-
- \contentspage {Qt Linguist Manual}{Contents}
- \previouspage Qt Linguist Manual
- \nextpage Qt Linguist Manual: Translators
-
- \keyword lupdate
- \keyword lrelease
-
- Two tools are provided for the release manager, \l lupdate and \l
- lrelease. These tools can process \l qmake project files, or operate
- directly on the file system.
-
- \section1 Qt Project Files
-
- The easiest method to use \l{#lupdate} {lupdate} and \l{#lrelease}
- {lrelease} is by specifing a \c .pro Qt project file. There must
- be an entry in the \c TRANSLATIONS section of the project file for
- each language that is additional to the native language. A typical
- entry looks like this:
-
- \snippet examples/linguist/arrowpad/arrowpad.pro 1
-
- Using a locale within the translation file name is useful for
- determining which language to load at runtime. This is explained
- in the \l{linguist-programmers.html} {Programmers} chapter.
-
- An example of a complete \c .pro file with four translation source
- files:
-
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 0
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 1
-
- QTextCodec::setCodecForTr() makes it possible to choose a 8-bit
- encoding for literal strings that appear within \c tr() calls.
- This is useful for applications whose source language is, for
- example, Chinese or Japanese. If no encoding is set, \c tr() uses
- Latin1.
-
- If you do use the QTextCodec::codecForTr() mechanism in your
- application, \QL needs you to set the \c CODECFORTR
- entry in the \c .pro file as well. For example:
-
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 1
-
- Also, if your compiler uses a different encoding for its runtime
- system as for its source code and you want to use non-ASCII
- characters in string literals, you will need to set the \c
- CODECFORSRC. For example:
-
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 2
-
- Microsoft Visual Studio 2005 .NET appears to be the only compiler
- for which this is necessary. However, if you want to write
- portable code, we recommend that you avoid non-ASCII characters
- in your source files. You can still specify non-ASCII characters
- portably using escape sequences, for example:
-
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 3
-
- \target lupdate manual
- \section1 lupdate
-
- Usage: \c {lupdate myproject.pro}
-
- \l lupdate is a command line tool that finds the translatable
- strings in the specified source, header and \e {Qt Designer}
- interface files, and produces or updates \c .ts translation
- files. The files to process and the files to update can be set at
- the command line, or provided in a \c .pro file specified as an
- command line argument. The produced translation files are given to
- the translator who uses \QL to read the files and insert the
- translations.
-
- Companies that have their own translators in-house may find it
- useful to run \l lupdate regularly, perhaps monthly, as the
- application develops. This will lead to a fairly low volume of
- translation work spread evenly over the life of the project and
- will allow the translators to support a number of projects
- simultaneously.
-
- Companies that hire in translators as required may prefer to run
- \l lupdate only a few times in the application's life cycle, the
- first time might be just before the first test phase. This will
- provide the translator with a substantial single block of work and
- any bugs that the translator detects may easily be included with
- those found during the initial test phase. The second and any
- subsequent \l lupdate runs would probably take place during the
- final beta phase.
-
- The TS file format is a simple human-readable XML format that
- can be used with version control systems if required. \c lupdate
- 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.
-
- Pass the \c -help option to \c lupdate to obtain the list of
- supported options:
-
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 4
-
- \QL is also able to import and export XLIFF files. See the
- \l{Qt Linguist Manual: Translators}{Translators} section for more
- information.
-
- \section1 lrelease
-
- Usage: \c {lrelease myproject.pro}
-
- \l lrelease is a command line tool that produces QM files out
- of TS files. The QM file format is a compact binary format
- that is used by the localized application. It provides extremely
- fast lookups for translations. The TS files \l lrelease
- processes can be specified at the command line, or given
- indirectly by a Qt \c .pro project file.
-
- This tool is run whenever a release of the application is to be
- made, from initial test version through to final release
- version. If the QM files are not created, e.g. because an
- alpha release is required before any translation has been
- undertaken, the application will run perfectly well using the text
- the programmers placed in the source files. Once the QM files
- are available the application will detect them and use them
- automatically.
-
- Note that lrelease will only incorporate translations that are
- marked as "finished". Otherwise the original text will be used
- instead.
-
- Pass the \c -help option to \c lrelease to obtain the list of
- supported options:
-
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 5
-
- \section1 Missing Translations
-
- Both \l lupdate and \l lrelease may be used with TS
- translation source files which are incomplete. Missing
- translations will be replaced with the native language phrases at
- runtime.
-*/
-
-/*!
- \page linguist-translators.html
- \title Qt Linguist Manual: Translators
-
- \contentspage {Qt Linguist Manual}{Contents}
- \previouspage Qt Linguist Manual: Release Manager
- \nextpage Qt Linguist Manual: Programmers
-
- Contents
-
- \tableofcontents
-
- \section1 The One Minute Guide to Using Qt Linguist
-
- \QL is a tool for adding translations to Qt applications. Run \QL
- from the taskbar menu, or by double clicking the desktop icon, or
- by entering the command \c {linguist} at the command line. Once
- \QL has started, choose \menu{File|Open} from the \l{menubar}
- {menu bar} and select a translation source (TS file) to
- load. If you do not have a TS file, see the \l {Qt Linguist
- Manual: Release Manager} {release manager manual} to learn how to
- generate one.
-
- The \QL main window is divided into several, dockable subwindows
- arranged around a central \l{The Translation Area} {translation
- area}. The \l{Context Window} {context list} is normally shown
- on the left, and the \l{Sources and Forms Window} {source code},
- \l{Strings Window} {string list}, and either the \l{Phrases and
- Guesses Window} {prhrases and guesses}, or the \l{Warnings Window}
- {warnings} are shown above and below the \l{The Translation Area}
- {translations area}.
-
- With a translation file loaded, select a context from the
- \l{Context Window} {context list} on the left. Selecting a context
- loads the translatable strings found in that context into the
- \l{Strings Window} {string list}. Selecting one of the strings
- copies that string as the \key{Source text} in the \l{The
- Translation Area} {translation area}. Click in the text entry
- widget below the copied string and type your translation for that
- string. To accept the translation, either press the green
- \key{tick mark} button on the toolbar, or click the icon to the
- left of the selected source string in the string list. Repeat this
- process until all strings in the string list are marked with
- \inlineimage linguist-check-on.png
- or
- \inlineimage linguist-check-warning.png
- . Then select the next context and continue.
-
- Translation options are shown in the \l{Phrases and Guesses
- Window} {phrases and guesses window}. If the phrases and guesses
- window is not visible, click the \key{Phrases and guesses} tab at
- the bottom of the main window. The phrases and guesses window
- shows possible translations for the current string. These
- translation "guesses" have been read from phrase books
- (\menu{Phrases|Open Phrase Book...}). The current string's
- current translation is also shown here. To select a guess, double
- click it in the prases and guesses window or use the keyboard
- shortcut shown to the right of the guess.
-
- \QL can automatically check whether your translation strings pass
- a list of \l{Validation Tests} {validation tests}. Validation test
- failures are shown in the \l{Warnings Window} {warnings window}.
- If the warnings window is not visible, click the \key{Warnings}
- tab at the bottom of the main window.
-
- Finally, if the source code for the contexts is accessible, the
- \l{Sources and Forms Window} {source code window} shows the
- context where the current string is used. If the source code
- window is not visible, click the \key{Sources and Forms} tab at
- the bottom of the main window.
-
- At the end of the session choose \menu{File|Save} from the menu
- bar and then \menu{File|Exit} to quit.
-
- \section1 The Qt Linguist Window
-
- \image linguist-linguist.png "Linguist UI Snapshot"
-
- This \QL main window is divided into dockable subwindows arranged
- around a central \l{The Translation Area} {translation area}. The
- subwindows are: \l{Context Window} {Context}, \l{Sources and Forms
- Window} {Sources and Forms}, \l{Strings Window} {Strings},
- \l{Phrases and Guesses Window} {Phrases and guesses}, and
- \l{Warnings Window} {Warnings} (hidden in the UI snapsot). The
- translation area is always visible, but the dockable subwindows
- can be activated or deactivated in the \menu{View|Views} menu, and
- dragged around by their title bars and dropped in the translation
- area or even outside the main window.
-
- \section2 Context Window
-
- The context window normally appears on the left side of the main
- window. It lists the contexts in which strings to be translated
- appear. The column labeled \e{Context} lists the context names in
- alphabetical order. Each context is the name of a subclass of
- QObject. There can also be a context for QObject itself, which
- contains strings passed to the static function QObject::tr().
- There can also be an \e{<unnamed context>}, which contains strings
- that aren't in a subclass of QObject.
-
- To the left of the \e{Context} column is a column labeled
- \inlineimage linguist-check-obsolete.png
- . This column uses the following list of icons to summarize the
- current translation state for each context:
-
- \list
-
- \o \inlineimage linguist-check-on.png
- All strings in the context have been translated, and all the
- translations passed the \l{Validation Tests} {validation tests}.
-
- \o \inlineimage linguist-check-warning.png
- All strings in the context have been translated or marked as
- translated, but at least one translation failed the \l{Validation
- Tests} {validation tests}.
-
- \o \inlineimage linguist-check-off.png
- At least one string in the context has not been translated or is
- not marked as translated.
-
- \o \inlineimage linguist-check-obsolete.png
- None of the translated strings still appears in the context. This
- usually means the context itself no longer exists in the
- application.
-
- \endlist
-
- To the right of the \e{Context} column is the \e{Items} column.
- Each entry in the \e{Items} column is a pair of numbers separated
- by a slash ("/"). The number to the right of the slash is the
- number of translatable strings in the context. The number to the
- left of the slash is the number of those strings that currently
- have translations. i.e., if the numbers are equal, all the
- translatable strings in the context have translations.
-
- In the UI snapshot above, the \bold{MessageEditor} context is
- selected. Its \e{Items} entry shows \bold{18/18}, which means it
- has 18 translatable strings and all 18 strings currently have
- translations. However, the context has been marked with the
- \inlineimage linguist-check-warning.png
- icon, which means that at least one of the current translations
- failed a \l{Validation Tests} {validation test}. In the
- \l{Strings Window} {strings window} to the right, we see that one
- of the strings is indeed marked with the
- \inlineimage linguist-check-warning.png
- icon.
-
- The context window is a dockable window. It can be dragged to
- another position in the main window, or dragged out of the main
- window to be a separate window. If you move the context window,
- \QL remembers the new position and puts the context window there
- whenever you start the program. If the context window has been
- closed, it can be restored by pressing \key{F6}.
-
- \section2 Strings Window
-
- The strings window normally appears on the right in the main
- window, above the \l{The Translation Area} {translation area}. Its
- \e{Source text} column lists all the translatable strings found in
- the current context. Selecting a string makes that string the
- current string in the \l{The Translation Area} {translation area}.
-
- To the left of the \e{Source text} column is a column labeled
- \inlineimage linguist-check-obsolete.png
- . This column is similar to the one in the \l{Context Window}
- {context window}, but here you can click on the icon to change the
- translation acceptance state for each string in the list. A tick
- mark, green or yellow, means the string has been translated and
- the user has accepted the translation. A question mark means
- either that the user has not accepted the string's translation or
- that the string doesn't have a translation. The table below
- explains the acceptance states and their icons:
-
- \target String Translation States
-
- \table
- \header
- \o State
- \o Icon
- \o Description
-
- \row
- \o Accepted/Correct
- \o \inlineimage linguist-check-on.png
- \o The source string has a translation (possibly empty); the user
- has accepted the translation, and the translation passes all the
- \l{Validation Tests} {validation tests}. If the translation is
- empty, the user has chosen to leave it empty. Click the icon to
- revoke acceptance of the translation and decrement the number of
- accepted translations in the \e{Items} column of the \l{Context
- Window} {context list} by 1. The state is reset to
- \inlineimage linguist-check-off.png
- if the string has a translation, or to
- \inlineimage linguist-check-empty.png
- if the string's translation is empty. If \c{lupdate} changes the
- contents of a string, its acceptance state is automatically reset
- to \inlineimage linguist-check-off.png
- .
-
- \row
- \o Accepted/Warnings
- \o \inlineimage linguist-check-warning.png
- \o The user has accepted the translation, but the translation does
- not pass all the \l{Validation Tests} {validation tests}. The
- validation test failures are shown in the \l{Warnings Window}
- {warnings window}. Click the icon to revoke acceptance of the
- translation. The state is reset to \inlineimage linguist-danger.png
- , and the number of accepted translations in the \e{Items} column
- of the \l{Context Window} {context list} is decremented by 1.
-
- \row
- \o Not Accepted
- \o \inlineimage linguist-check-off.png
- \o The string has a non-empty translation that passes all the
- \l{Validation Tests} {validation tests}, but the user has not yet
- accepted the translation. Click the icon or press \key{Ctrl+Enter}
- to accept the translation. The state is reset to
- \inlineimage linguist-check-on.png
- , and the number of accepted translations in the \e{Items} column
- of the \l{Context Window} {context list} is incremented by 1.
-
- \row
- \o No Translation
- \o \inlineimage linguist-check-empty.png
- \o The string does not have a translation. Click the icon to
- accpet the empty translation anyway. The state is reset to
- \inlineimage linguist-check-on.png
- , and the number of accepted translations in the \e{Items} column
- of the \l{Context Window} {context list} is incremented by 1.
-
- \row
- \o Validation Failures
- \o \inlineimage linguist-danger.png
- \o The string has a translation, but the translation does not
- pass all the \l{Validation Tests} {validation tests}. Validation
- test failures are shown in the \l{Warnings Window} {warnings}
- window. Click on the icon or press \key{Ctrl+Return} to accept
- the translation even with validation failures. The state is
- reset to \inlineimage linguist-check-warning.png
- . We recommended editing the translation to fix the causes of
- the validation failures. The state will reset automatically to
- \inlineimage linguist-check-off.png
- , when all the failures have been fixed.
-
- \row
- \o Obsolete
- \o \inlineimage linguist-check-obsolete.png
- \o The string is obsolete. It is no longer used in the context.
- See the \l{Qt Linguist Manual: Release Manager} {Release Manager}
- for instructions on how to remove obsolete messages from the file.
-
- \endtable
-
- The string list is a dockable subwindow. If it has been closed,
- restored it by pressing \key{F7}.
-
- \section2 The Translation Area
-
- The translation area is in the middle of the main window, to the
- right of the \l{Context Window} {context list}. It doesn't have a
- title bar, so you can't drag it around. Instead, you drag and drop
- the other subwindows to arrange them around the translation area.
- The string currently selected in the \l{Strings Window} {string
- list} appears at the top of the translation area, under the label
- \menu{Source text}. Note that all blanks in the source text have
- been replaced by "." so the translator can see the spacing
- required within the text.
-
- If the developer provides a \l{QObject::tr()} {disambiguating
- comment}, it will appear below the source text area, under the
- label \menu{Developer comments}.
-
- Below the source text and optional developer comments are two text
- entry widgets for the translator, one for entering the translation
- of the current string, and one for the translator to enter an
- optional comment to be read by other translators.
-
- When \l{Translating Multiple Languages Simultaneously} {multiple
- languages} are being translated, this sequence of fields is
- repeated for each language. See aso \l {Changing the Target
- Locale}.
-
- \section2 Phrases and Guesses Window
-
- If the current string in the \l{Strings Window} {string list}
- appears in one or more of the \l{Phrase Books} {phrase books}
- that have been loaded, the current string and its phrase book
- translation(s) will be listed in this window. If the current
- string is the same as, or similar to, another string that has
- already been translated, that other string and its translation
- will also be listed in this window.
-
- To use a translation from the Phrases and Guesses Window, you can
- double click the translation, and it will be copied into the
- translation area, or you can use the translation's \e{Guess}
- hotkey on the right. You can also press \key{F10} to move the
- focus to the Phrases and Guesses Window, then use the up and down
- arrow keys to find the desired translation, and and then press
- \key{Enter} to copy it to the translation area. If you decide
- that you don't want to copy a phrase after all, press \key{Esc} to
- return the focus to the translation area.
-
- The Phrases and Guesses Window is a dockable window. If it has
- been closed, it can be made visible by pressing the \e{Phrases and
- guesses} tab at the bottom of the window, or by pressing
- \key{F10}.
-
- \section2 Sources and Forms Window
-
- If the source files containing the translatable strings are
- available to \QL, this window shows the source context of the
- current string in the \l{Strings Window} {string list}. The source
- code line containing the current string should be shown and
- highlighted. If the file containing the source string is not
- found, the expected absolute file path is shown.
-
- If the source context shows the wrong source line, it probably
- means the translation file is out of sync with the source files.
- To re-sync the translation file with the source files, see the
- \l{lupdate manual} {lupdate manual}.
-
- The Sources and Forms window is a dockable window. If it has been
- closed, it can be made visible again by pressing the \e{Sources
- and Forms} tab at the bottom of the window, or by pressing
- \key{F9}.
-
- \section2 Warnings Window
-
- If the translation you enter for the current string fails any of
- the active \l{Validation Tests} {validation tests}, the failures
- are listed in the warnings window. The first of these failure
- messages is also shown in the status bar at the bottom of the main
- window. Note that only \e{active} validation tests are
- reported. To see which validation tests are currently active, or
- to activate or deactivate tests, use the \menu{Validation} menu
- from the \l{menubar}{menu bar}.
-
- The Warnings window is a dockable window. If it has been closed,
- it can be made visible by pressing the \e{Warnings} tab at the
- bottom of the window, or by pressing \key{F8}.
-
- \target multiple languages
- \section2 Translating Multiple Languages Simultaneously
-
- Qt Linguist can now load and edit multiple translation files
- simultaneously. One use for this is the case where you know two
- languages better than you know English (Polish and Japanese, say),
- and you are given an application's Polish translation file and
- asked to update the application's Japanese translation file. You
- are more comfortable translating Polish to Japanese than you are
- translating English to Japanese.
-
- Below is the UI snapshot shown earlier, but this time with both
- \e{Polish} and \e{Japanese} translation files loaded.
-
- \image linguist-linguist_2.png
-
- The first thing to notice is that the \l{The Translation Area}
- {translation area} has text editing areas for both Polish and
- Japanese, and these are color-coded for easier separation.
- Second, the \l{Context Window} and the \l{Strings Window} both
- have two clomuns labeled \inlineimage linguist-check-obsolete.png
- instead of one, and although it may be hard to tell, these columns
- are also color-coded with the same colors. The left-most column in
- either case applies to the top-most language area (Polish above)
- in the \l{The Translation Area} {translation area}, and the
- right-most column applies to the bottom language area.
-
- The \e{Items} column in the \l{Context Window} combines the values
- for both languages. The best way to see this is to look at the
- value for the \bold{MessageEditor} context, which is the one
- selected in the snapshot shown above. Recall that in the first UI
- snapshot (Polish only), the numbers for this context were
- \e{18/18}, meaning 18 translatable strings had been found in the
- context, and all 18 strings had accepted translations. In the UI
- snapshot above, the numbers for the \bold{MessageEditor} context
- are now \e{1/18}, meaning that both languages have 18 translatable
- strings for that context, but for Japanese, only 1 of the 18
- strings has an accepted translation. The
- \inlineimage linguist-check-off.png
- icon in the Japanese column means that at least one string in the
- context doesn't have an accepted Japanese translation yet. In fact,
- 17 of the 18 strings don't have accepted Japanese translations yet.
- We will see \e{18/18} in the \e{Items} column when all 18 strings
- have accepted translations for all the loaded translation files,
- e.g., both Polish and Japanese in the snapshot.
-
- \section1 Common Tasks
-
- \section2 Leaving a Translation for Later
-
- If you wish to leave a translation press \key{Ctrl+L} (Next
- Unfinished) to move to the next unfinished translation. To move to
- the next translation (whether finished or unfinished) press
- \key{Shift+Ctrl+L}. You can also navigate using the Translation
- menu. If you want to go to a different context entirely, click the
- context you want to work on in the Context list, then click the
- source text in the \l{Strings Window} {string list}.
-
- \section2 Phrases That Require Multiple Translations Depending on Context
-
- The same phrase may occur in two or more contexts without conflict. Once
- a phrase has been translated in one context, \QL notes
- that the translation has been made and when the translator reaches a
- later occurrence of the same phrase \QL will provide
- the previous translation as a possible translation candidate in the
- \l{Phrases and Guesses Window}.
-
- If a phrase occurs more than once in a particular context it will
- only be shown once in \QL's \l{Context Window} {context list} and
- the translation will be applied to every occurrence within the
- context. If the same phrase needs to be translated differently
- within the same context the programmer must provide a
- distinguishing comment for each of the phrases concerned. If such
- comments are used the duplicate phrases will appear in the
- \l{Context Window} {context list}. The programmers comments will
- appear in the \l{The Translation Area} {translation area} on a
- light blue background.
-
- \section2 Changing Keyboard Accelerators
-
- A keyboard accelerator is a key combination that, when pressed,
- causes an application to perform an action. There are two kinds of
- keyboard accelerators: Alt key and Ctrl key accelerators.
-
- \section3 Alt Key Accellerators
-
- Alt key accelerators are used in menu selection and on buttons.
- The underlined character in a menu item or button label signifies
- that pressing the Alt key with the underlined character will
- perform the same action as clicking the menu item or pressing the
- button. For example, most applications have a \e{File} menu with
- the "F" in the word "File" underlined. In these applications the
- \e{File} menu can be invoked either by clicking the word "File" on
- the menu bar or by pressing \e{Alt+F}. To identify an accelerator
- key in the translation text ("File") precede it with an ampersand,
- e.g. \e{\&File}. If a string to be translated has an ampersand in
- it, then the translation for that string should also have an
- ampersand in it, preferably in front of the same character.
-
- The meaning of an Alt key accelerator can be determined from the
- phrase in which the ampersand is embedded. The translator can
- change the character part of the Alt key accelerator, if the
- translated phrase does not contain the same character or if that
- character has already been used in the translation of some other
- Alt key accelerator. Conflicts with other Alt key accelerators
- must be avoided within a context. Note that some Alt key
- accelerators, usually those on the menu bar, may apply in other
- contexts.
-
- \section3 Ctrl Key Accelerators
-
- Ctrl key accelerators can exist independently of any visual
- control. They are often used to invoke actions in menus that would
- otherwise require multiple keystrokes or mouse clicks. They may
- also be used to perform actions that do not appear in any menu or
- on any button. For example, most applications that have a \e{File}
- menu have a \e{New} submenu item in the \e{File} menu. The \e{New}
- item might appear as "\underline{N}ew Ctrl+N" in the \e{File}
- menu, meaning the \e{New} menu can be invoked by simply pressing
- \key{Ctrl+N}, instead of either clicking \e{File} with the mouse
- and then clicking \e{New} with the mouse, or by entering \e{Alt+F}
- and \e{N}.
-
- Each Ctrl key accelerator is shown in the \l{Strings Window}
- {string list} as a separte string, e.g. \key{Ctrl+Enter}. Since
- the string doesn't have a context to give it meaning, e.g. like
- the context of the phrase in which an Alt key accelerator appears,
- the translator must rely on the UI developer to include a
- \l{QObject::tr()} {disambiguation comment} to explain the action
- the Ctrl key accelerator is meant to perform. This disambiguating
- comment (if provided by the developer) will appear under
- \e{Developer comments} in the \l{The Translation Area}
- {translation area} under the \e{Source text} area.
-
- Ideally Ctrl key accelerators are translated simply by copying
- them directly using \e {Copy from source text} in the
- \menu{Translation} menu. However, in some cases the character will
- not make sense in the target language, and it must be
- changed. Whichever character (alpha or digit) is chosen, the
- translation must be in the form "Ctrl+" followed by the upper case
- character. \e{Qt} will automatically display the correct name at
- runtime. As with Alt key accelerators, if the translator changes
- the character, the new character must not conflict with any other
- Ctrl key accelerator.
-
- \warning Do not translate the "Alt", "Ctrl" or "Shift" parts of
- the accelerators. \e{Qt} relies on these strings being there. For
- supported languages, \e {Qt} automatically translates these
- strings.
-
- \section2 Handling Numbered Arguments
-
- Some phrases contain numbered arguments. A numbered argument is a
- placeholder that will be replaced with text at runtime. A numbered
- argument appears in a source string as a percent sign followed by
- a digit. Consider an example: \c{After processing file %1, file %2
- is next in line}. In this string to be translated, \c{%1} and
- \c{%2} are numbered arguments. At runtime, \c{%1} and \c{%2} will
- be replaced with the first and next file names respectively. The
- same numbered arguments must appear in the translation, but not
- necessarily in the same order. A German translation of the string
- might reverse the phrases, e.g. \c{Datei %2 wird bearbeitet, wenn
- Datei %1 fertig ist}. Both numbered arguments appear in the
- translation, but in the reverse order. \c{%i} will always be
- replaced by the same text in the translation stringss, regardless
- of where argument \e{i} appears in the argument sequence in the
- source string.
-
- \section2 Reusing Translations
-
- If the translated text is similar to the source text, choose the
- \e {Copy from source text} entry in the \menu Translation menu (press
- \key{Ctrl+B}) which will copy the source text into the
- \l{The Translation Area} {translation area}.
-
- \QL automatically lists possible translations from any open
- \l{Phrase Books} {phrase books} in the \l{Phrases and Guesses
- Window}, as well as similar or identical phrases that have already
- been translated.
-
- \section2 Changing the Target Locale
-
- \QL displays the target language in the \l{The Translation Area}
- {translation area}, and adapts the number of input fields for
- plural forms accordingly. If not explicitly set, \QL guesses the
- target language and country by evaluating the translation source
- file name: E.g. \c app_de.ts sets the target language to German,
- and \c app_de_ch.ts sets the target language to German and the
- target country to Switzerland (this also helps loading
- translations for the current locale automatically; see
- \l{linguist-programmers.html}{Programmers Manual} for details).
- If your files do not follow this convention, you can also set the
- locale information explicitly using \e {Translation File Settings}
- in the \menu Edit menu.
-
- \image linguist-translationfilesettings.png
-
- \section1 Phrase Books
-
- A \QL phrase book is a set of source phrases, target
- (translated) phrases, and optional definitions. Typically one phrase book
- will be created per language and family of applications. Phrase books
- are used to provide a common set of translations to help ensure consistency.
- They can also be used to avoid duplication of effort since the translations
- for a family of applications can be produced once in the phrase book.
- If the translator reaches an untranslated phrase that is the same as a
- source phrase in a phrase book, \QL will show the
- phrase book entry in the \l {Phrases and Guesses Window}.
-
- \section2 Creating and Editing Phrase Books
-
- \image linguist-phrasebookdialog.png
-
- Before a phrase book can be edited it must be created or, if it already
- exists, opened. Create a new phrase book by selecting
- \menu{Phrase|New Phrase Book} from the menu bar. You must enter a
- filename and may change the location of the file if you wish. A newly
- created phrase book is automatically opened. Open an existing phrase
- book by choosing \menu{Phrase|Open Phrase Book} from the menu bar.
-
- The phrase book contents can be displayed and changed by selecting
- \menu{Phrase|Edit Phrase Book}, and then activating the phrase book you
- want to work on. This will pop up the Phrase Book Dialog as shown
- in the image above. To add a new phrase click the \gui{New Phrase}
- button (or press Alt+N) and type in a new source phrase. Press Tab and
- type in the translation. Optionally press Tab and enter a definition --
- this is useful to distinguish different translations of the same source
- phrase. This process may be repeated as often as necessary. You can delete
- a phrase by selecting it in the phrases list and clicking
- Remove Phrase. Click the \gui Close button (press Esc) once you've finished
- adding (and removing) phrases.
-
- \section2 Shortcuts for Editing Phrase Books
-
- You can also create a new phrase book entry directly out of the translation you
- are working on: Clicking \menu{Phrases|Add to Phrase Book} or pressing
- \key{Ctrl+T} will add the source text and the content of the first translation
- field to the current phrase book. If multiple phrase books are loaded,
- you have to specify the phrase book to add the entry to in a dialogue.
- If you detect an error in a phrase book entry that is shown in the
- \l{Phrases and Guesses Window}, you can also edit it in place by right
- clicking on the entry, and selecting \menu{Edit}. After fixing the error
- press \key{Return} to leave the editing mode.
-
- \section2 Batch Translation
-
- \image linguist-batchtranslation.png
-
- Use the batch translation feature of \QL to automatically
- translate source texts that are also in a phrase book. Selecting
- \menu{Tools|Batch Translation} will show you the batch translation dialog,
- which let you configure which phrase books to use in what order during the
- batch translation process. Furthermore you can set whether only entries
- with no present translation should be considered, and whether batch translated
- entries should be set to finished (see also \l {String Translation States}).
-
- \section1 Validation Tests
-
- \QL provides four kinds of validation tests for translations.
-
- \list 1
- \o \e {Accelerator validation} detects translated phrases
- that do not have an ampersand when the source phrase does and vice
- versa.
- \o \e {Punctuation validation} detects differences in the
- terminating punctuation between source and translated phrases when this
- may be significant, e.g. warns if the source phrase ends with an
- ellipsis, exclamation mark or question mark, and the translated phrase
- doesn't and vice versa.
- \o \e {Phrases validation} detects source phrases that are
- also in the phrase book but whose translation differs from that given in
- the phrase book.
- \o \e {Place marker validation} detects whether the same variables
- (like \c %1, \c %2) are used both in the source text and in the translation.
- \endlist
-
- Validation may be switched on or off from the menu bar's
- Validation item or using the toolbar buttons. Unfinished phrases
- that fail validation are marked with an exclamation mark in the
- source text pane. Finished phrases will get a yellow tick
- instead. If you switch validation off and then switch it on later,
- \QL will recheck all phrases and mark any that fail
- validation. See also \l{String Translation States}.
-
- \section1 Form Preview
-
- \image linguist-previewtool.png
-
- Forms created by \e{Qt Designer} are stored in special UI files.
- \QL can make use of these UI files to show the translations
- done so far on the form itself. This of course requires access to the UI
- files during the translation process. Activate
- \menu{Tools|Open/Refresh Form Preview} to open the window shown above.
- The list of UI files \QL has detected are displayed in the Forms
- List on the left hand. If the path to the files has changed, you can load
- the files manually via \menu{File|Open Form...}. Double-click on an entry
- in the Forms List to display the Form File. Select \e{<No Translation>} from
- the toolbar to display the untranslated form.
-
- \section1 Qt Linguist Reference
-
-
- \section2 File Types
-
- \QL makes use of four kinds of files:
-
- \list
- \o TS \e {translation source files} \BR are human-readable XML
- files containing source phrases and their translations. These files are
- usually created and updated by \l lupdate and are specific to an
- 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.
- \o QM \e {Qt message files} \BR are binary files that contain
- translations used by an application at runtime. These files are
- generated by \l lrelease, but can also be generated by \QL.
- \o \c .qph \e {Qt phrase book files} \BR are human-readable XML
- files containing standard phrases and their translations. These files
- are created and updated by \QL and may be used by any
- number of projects and applications.
- \endlist
-
- \target menubar
- \section2 The Menu Bar
-
- \image linguist-menubar.png
-
- \list
- \o \gui {File}
- \list
- \o \gui {Open... Ctrl+O} \BR pops up an open file dialog from which a
- translation source \c .ts or \c .xlf file can be chosen.
- \o \gui {Recently opened files} \BR shows the TS files that
- have been opened recently, click one to open it.
- \o \gui {Save Ctrl+S} \BR saves the current translation source file.
- \o \gui {Save As...} \BR pops up a save as file dialog so that the
- current translation source file may be saved with a different
- name, format and/or put in a different location.
- \o \gui {Release} \BR create a Qt message QM file with the same base
- name as the current translation source file. The release manager's
- command line tool \l lrelease performs the same function on
- \e all of an application's translation source files.
- \o \gui {Release As...} \BR pops up a save as file dialog. The
- filename entered will be a Qt message QM file of the translation
- based on the current translation source file. The release manager's
- command line tool \l lrelease performs the same function on
- \e all of an application's translation source files.
- \o \gui {Print... Ctrl+P} \BR pops up a print dialog. If you click
- OK the translation source and the translations will be printed.
- \o \gui {Exit Ctrl+Q} \BR closes \QL.
- \endlist
-
- \o \gui {Edit}
- \list
- \o \gui {Undo Ctrl+Z} \BR undoes the last editing action in the
- translation pane.
- \o \gui {Redo Ctrl+Y} \BR redoes the last editing action in the
- translation pane.
- \o \gui {Cut Ctrl+X} \BR deletes any highlighted text in the
- translation pane and saves a copy to the clipboard.
- \o \gui {Copy Ctrl+C} \BR copies the highlighted text in the
- translation pane to the clipboard.
- \o \gui {Paste Ctrl+V} \BR pastes the clipboard text into the
- translation pane.
- \omit
- \o \gui {Delete} \BR deletes the highlighted text in the
- translation pane.
- \endomit
- \o \gui {Select All Ctrl+A} \BR selects all the text in the
- translation pane ready for copying or deleting.
- \o \gui {Find... Ctrl+F} \BR pops up the
- Find dialog. When the dialog pops up
- enter the text to be found and click the \gui {Find Next} button.
- Source phrases, translations and comments may be searched.
- \o \gui {Find Next F3} \BR finds the next occurrence of the text that
- was last entered in the Find dialog.
- \o \gui {Search and Translate...} \BR pops up the Search and
- Replace Dialog. Use this dialog to translate the same text in multiple items.
- \o \gui {Translation File Settings...} \BR let you configure the target
- language and the country/region of a translation source file.
- \endlist
-
- \o \gui {Translation}
- \list
- \o \gui {Prev Unfinished Ctrl+K} \BR moves to the nearest previous
- unfinished source phrase (unfinished means untranslated or
- translated but failed validation).
- \o \gui {Next Unfinished Ctrl+L} \BR moves to the next unfinished source
- phrase.
- \o \gui {Prev Shift+Ctrl+K} \BR moves to the previous source phrase.
- \o \gui {Next Shift+Ctrl+L} \BR moves to the next source phrase.
- \o \gui {Done \& Next Ctrl+Enter} \BR mark this phrase as 'done'
- (translated) and move to the next unfinished source phrase.
- \o \gui {Copy from source text Ctrl+B} \BR copies the source text into
- the translation.
- \endlist
-
- \o \gui {Validation} (See \l{Validation Tests})
- \list
- \o \gui {Accelerators} \BR toggles validation on or off for Alt
- accelerators.
- \o \gui {Ending Punctuation} \BR switches validation on or off
- for phrase ending punctuation, e.g. ellipsis, exclamation mark,
- question mark, etc.
- \o \gui {Phrase Matches} \BR sets validation on or off for
- matching against translations that are in the current phrase book.
- \o \gui {Place Marker Matches} \BR sets validation on or off for
- the use of the same place markers in the source and translation.
- \endlist
-
- \o \gui {Phrases} (See the section \l {Phrase Books} for details.)
- \list
-
- \o \gui {New Phrase Book... Ctrl+N} \BR pops up a save as file
- dialog. You must enter a filename to be used for the phrase
- book and save the file. Once saved you should open the phrase
- book to begin using it.
-
- \o \gui {Open Phrase Book... Ctrl+H} \BR pops up an open file
- dialog. Find and choose a phrase book to open.
-
- \o \gui {Close Phrase Book} \BR displays the list of phrase
- books currently opened. Clicking on one of the items will
- close the phrase book. If the phrase book has been modified, a
- dialog box asks whether \QL should save the changes.
-
- \o \gui {Edit Phrase Book...} \BR displays the list of phrase
- books currently opened. Clicking on one of the items will open
- the \l{Creating and Editing Phrase Books}{Phrase Book Dialog}
- where you can add, edit or delete phrases.
-
- \o \gui {Print Phrase Book...} \BR displays the list of phrase
- books currently opened. Clicking on one of the items pops up a
- print dialog. If you click OK the phrase book will be
- printed.
-
- \o \gui {Add to Phrase Book Ctrl+T} \BR Adds the source text
- and translation currently shown in the \l{The Translation
- Area} {translation area} to a phrase book. If multiple phrase
- books are loaded, a dialog box let you specify select one.
-
- \endlist
-
- \o \gui {Tools}
- \list
-
- \o \gui {Batch Translation...} \BR Opens a \l{Batch
- Translation}{dialog} which let you automatically insert
- translations for source texts which are in a phrase book.
-
- \o \gui {Open/Refresh Form Preview F3} \BR Opens the \l{Form
- Preview}. This window let you instantly see translations for
- forms created with \QD. \endlist
-
- \o \gui {View}
- \list
-
- \o \gui {Revert Sorting} \BR puts the items in the \l{Context
- Window} {context list} and in the \l{Strings Window} {string
- list} into their original order.
-
- \o \gui {Display Guesses} \BR turns the display of phrases and
- guesses on or off.
-
- \o \gui {Statistics} \BR toggles the visibility of the
- Statistics dialog.
-
- \o \gui {Views} \BR toggles the visibility of the \l{Context
- Window}, \l{Strings Window}, \l{Phrases and Guesses Window},
- \l{Warnings Window}, or \l{Sources and Forms Window}.
-
- \o \gui {Toolbars} \BR toggles the visibility of the different
- toolbars.
-
- \endlist
-
- \o \gui {Help}
- \list
- \o \gui {Manual F1} \BR opens this manual.
- \o \gui {About Qt Linguist} \BR Shows information about \QL.
- \o \gui {About Qt} \BR Shows information about \e{Qt}.
- \o \gui {What's This? Shift+F1} \BR Click on one item in the main window
- to get additional information about it.
- \endlist
-
- \endlist
-
- \section2 The Toolbar
-
- \image linguist-toolbar.png
-
- \list
- \o \inlineimage linguist-fileopen.png
- \BR
- Pops up the open file dialog to open a new translation source TS file.
-
- \o \inlineimage linguist-filesave.png
- \BR
- Saves the current translation source TS file.
-
- \o \inlineimage linguist-fileprint.png
- \BR
- Prints the current translation source TS file.
-
- \o \inlineimage linguist-phrasebookopen.png
- \BR
- Pops up the file open dialog to open a new phrase book \c .qph file.
-
- \o \inlineimage linguist-editundo.png
- \BR
- Undoes the last editing action in the translation pane.
-
- \o \inlineimage linguist-editredo.png
- \BR
- Redoes the last editing action in the translation pane.
-
- \o \inlineimage linguist-editcut.png
- \BR
- Deletes any highlighted text in the translation pane and save a copy to
- the clipboard.
-
- \o \inlineimage linguist-editcopy.png
- \BR
- Copies the highlighted text in the translation pane to the clipboard.
-
- \o \inlineimage linguist-editpaste.png
- \BR
- Pastes the clipboard text into the translation pane.
-
- \o \inlineimage linguist-editfind.png
- \BR
- Pops up the Find dialog .
-
- \o \inlineimage linguist-prev.png
- \BR
- Moves to the previous source phrase.
-
- \o \inlineimage linguist-next.png
- \BR
- Moves to the next source phrase.
-
- \o \inlineimage linguist-prevunfinished.png
- \BR
- Moves to the previous unfinished source phrase.
-
- \o \inlineimage linguist-nextunfinished.png
- \BR
- Moves to the next unfinished source phrase.
-
- \o \inlineimage linguist-doneandnext.png
- \BR
- Marks the phrase as 'done' (translated) and move to the next
- unfinished source phrase.
-
- \o \inlineimage linguist-validateaccelerators.png
- \BR
- Toggles accelerator validation on and off.
-
- \o \inlineimage linguist-validatepunctuation.png
- \BR
- Toggles phrase ending punctuation validation on and off.
-
- \o \inlineimage linguist-validatephrases.png
- \BR
- Toggles phrase book validation on or off.
-
- \o \inlineimage linguist-validateplacemarkers.png
- \BR
- Toggles place marker validation on or off.
-
- \endlist
-
-*/
-
-/*!
- \page linguist-programmers.html
- \title Qt Linguist Manual: Programmers
-
- \contentspage {Qt Linguist Manual}{Contents}
- \previouspage Qt Linguist Manual: Translators
- \nextpage Qt Linguist Manual: TS File Format
-
- Support for multiple languages is extremely simple in Qt
- applications, and adds little overhead to the programmer's workload.
-
- Qt minimizes the performance cost of using translations by
- translating the phrases for each window as they are created. In most
- applications the main window is created just once. Dialogs are often
- created once and then shown and hidden as required. Once the initial
- translation has taken place there is no further runtime overhead for
- the translated windows. Only those windows that are created,
- destroyed and subsequently created will have a translation
- performance cost.
-
- Creating applications that can switch language at runtime is possible
- with Qt, but requires a certain amount of programmer intervention and
- will of course incur some runtime performance cost.
-
- \section1 Making the Application Translation-Aware
-
- Programmers should make their application look for and load the
- appropriate translation file and mark user-visible text and Ctrl
- keyboard accelerators as targets for translation.
-
- Each piece of text that requires translating requires context to help
- the translator identify where in the program the text occurs. In the
- case of multiple identical texts that require different translations,
- the translator also requires some information to disambiguate the
- source texts. Marking text for translation will automatically cause
- the class name to be used as basic context information. In some cases
- the programmer may be required to add additional information to help
- the translator.
-
- \section2 Creating Translation Files
-
- Translation files consist of all the user-visible text and Ctrl key
- accelerators in an application and translations of that text.
- Translation files are created as follows:
-
- \list 1
- \o Run \l lupdate initially to generate the first set of TS
- translation source files with all the user-visible text but no
- translations.
- \o The TS files are given to the translator who adds translations
- using \QL. \QL takes care of any changed
- or deleted source text.
- \o Run \l lupdate to incorporate any new text added to the
- application. \l lupdate synchronizes the user-visible text from the
- application with the translations; it does not destroy any data.
- \o Steps 2 and 3 are repeated as often as necessary.
- \o When a release of the application is needed \l lrelease is run to
- read the TS files and produce the QM files used by the
- application at runtime.
- \endlist
-
- For \l lupdate to work successfully, it must know which translation
- files to produce. The files are simply listed in the application's \c
- .pro Qt project file, for example:
-
- \snippet examples/linguist/arrowpad/arrowpad.pro 1
-
- If your sources contain genuine non-Latin1 strings, \l lupdate needs
- to be told about it in the \c .pro file by using, for example,
- the following line:
-
- \code
- CODECFORTR = UTF-8
- \endcode
-
- See the \l lupdate and \l lrelease sections.
-
- \section2 Loading Translations
-
- \snippet examples/linguist/hellotr/main.cpp 1
- \snippet examples/linguist/hellotr/main.cpp 3
-
- This is how a simple \c main() function of a Qt application begins.
-
- \snippet examples/linguist/hellotr/main.cpp 1
- \snippet examples/linguist/hellotr/main.cpp 4
-
- For a translation-aware application a translator object is created, a
- translation is loaded and the translator object installed into the
- application.
-
- \snippet examples/linguist/arrowpad/main.cpp 0
- \snippet examples/linguist/arrowpad/main.cpp 1
-
- For non-Latin1 strings in the sources you will also need for example:
-
- \code
- QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
- \endcode
-
- In production applications a more flexible approach, for example,
- loading translations according to locale, might be more appropriate. If
- the TS files are all named according to a convention such as
- \e appname_locale, e.g. \c tt2_fr, \c tt2_de etc, then the
- code above will load the current locale's translation at runtime.
-
- If there is no translation file for the current locale the application
- will fall back to using the original source text.
-
- Note that if you need to programmatically add translations at
- runtime, you can reimplement QTranslator::translate().
-
- \section2 Making the Application Translate User-Visible Strings
-
- User-visible strings are marked as translation targets by wrapping them
- in a \c tr() call, for example:
-
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 6
-
- would become
-
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 7
-
- All QObject subclasses that use the \c Q_OBJECT macro implement
- the \c tr() function.
-
- Although the \c tr() call is normally made directly since it is
- usually called as a member function of a QObject subclass, in
- other cases an explicit class name can be supplied, for example:
-
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 8
-
- or
-
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 9
-
- \section2 Distinguishing Identical Strings That Require Different Translations
-
- The \l lupdate program automatically provides a \e context for every
- source text. This context is the class name of the class that contains
- the \c tr() call. This is sufficient in the vast majority of cases.
- Sometimes however, the translator will need further information to
- uniquely identify a source text; for example, a dialog that contained
- two separate frames, each of which contained an "Enabled" option would
- need each identified because in some languages the translation would
- differ between the two. This is easily achieved using the
- two argument form of the \c tr() call, e.g.
-
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 10
-
- and
-
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 11
-
- Ctrl key accelerators are also translatable:
-
- \snippet examples/linguist/trollprint/mainwindow.cpp 2
-
- It is strongly recommended that the two argument form of \c tr() is used
- for Ctrl key accelerators. The second argument is the only clue the
- translator has as to the function performed by the accelerator.
-
- \section2 Helping the Translator with Navigation Information
-
- In large complex applications it may be difficult for the translator to
- see where a particular source text comes from. This problem can be
- solved by adding a comment using the keyword \e TRANSLATOR which
- describes the navigation steps to reach the text in question; e.g.
-
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 12
-
- These comments are particularly useful for widget classes.
-
- \section2 Handling Plural Forms
-
- Qt includes a \c tr() overload that will make it very easy to
- write "plural-aware" internationalized applications. This overload
- has the following signature:
-
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 17
-
- Depending on the value of \c n, the \c tr() function will return a different
- translation, with the correct grammatical number for the target language.
- Also, any occurrence of \c %n is replaced with \c{n}'s value. For example:
-
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 18
-
- If a French translation is loaded, this will expand to "0 item
- remplac\unicode{233}", "1 item remplac\unicode{233}", "2 items
- remplac\unicode{233}s", etc., depending on \c{n}'s value.
- And if no translation is loaded, the orignal string is used, with \c %n
- replaced with count's value (e.g., "6 item(s) replaced").
-
- To handle plural forms in the native language, you need to load a
- translation file for this language, too. \l lupdate has the
- \c -pluralonly command line option, which allows the creation of
- TS files containing only entries with plural forms.
-
- See the \l{http://qt.nokia.com/doc/qq/}{Qt Quarterly} Article
- \l{http://qt.nokia.com/doc/qq/qq19-plurals.html}{Plural Forms in Translations}
- for further details on this issue.
-
- \section2 Coping With C++ Namespaces
-
- C++ namespaces and the \c {using namespace} statement can confuse
- \l lupdate. It will interpret \c MyClass::tr() as meaning just
- that, not as \c MyNamespace::MyClass::tr(), even if \c MyClass is
- defined in the \c MyNamespace namespace. Runtime translation of
- these strings will fail because of that.
-
- You can work around this limitation by putting a \e TRANSLATOR
- comment at the beginning of the source files that use \c
- MyClass::tr():
-
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 13
-
- After the comment, all references to \c MyClass::tr() will be
- understood as meaning \c MyNamespace::MyClass::tr().
-
- \section2 Translating Text That is Outside of a QObject Subclass
-
- \section3 Using QCoreApplication::translate()
-
- If the quoted text is not in a member function of a QObject subclass,
- use either the tr() function of an appropriate class, or the
- QCoreApplication::translate() function directly:
-
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 14
-
- \section3 Using QT_TR_NOOP() and QT_TRANSLATE_NOOP()
-
- If you need to have translatable text completely outside a function,
- there are two macros to help: QT_TR_NOOP() and QT_TRANSLATE_NOOP().
- These macros merely mark the text for extraction by \l{lupdate}.
- The macros expand to just the text (without the context).
-
- Example of QT_TR_NOOP():
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 15
-
- Example of QT_TRANSLATE_NOOP():
- \snippet doc/src/snippets/code/doc_src_linguist-manual.qdoc 16
-
- \section1 Tutorials
-
- Three tutorials are presented:
-
- \list 1
- \o \l{linguist/hellotr}{Hello tr()} demonstrates the creation of
- a \l QTranslator object. It also shows the simplest use of
- the \c tr() function to mark user-visible source text for
- translation.
-
- \o \l{linguist/arrowpad}{Arrow Pad} explains how to make the application load the
- translation file applicable to the current locale. It also shows the
- use of the two-argument form of \c tr() which provides additional
- information to the translator.
-
- \o \l{linguist/trollprint}{Troll Print} explains how
- identical source texts can be distinguished even when they occur in
- the same context. This tutorial also discusses how the translation
- tools help minimize the translator's work when an application is
- upgraded.
- \endlist
-
- These tutorials cover all that you need to know to prepare your Qt
- applications for translation.
-
- At the beginning of a project add the translation source files to be
- used to the project file and add calls to \l lupdate and \l lrelease to
- the makefile.
-
- During the project all the programmer must do is wrap any user-visible
- text in \c tr() calls. They should also use the two argument form for
- Ctrl key accelerators, or when asked by the translator for the cases
- where the same text translates into two different forms in the same
- context. The programmer should also include \c TRANSLATION comments to
- help the translator navigate the application.
-*/
-
-/*!
- \page linguist-ts-file-format.html
- \title Qt Linguist Manual: TS File Format
-
- \contentspage {Qt Linguist Manual}{Contents}
- \previouspage Qt Linguist Manual: Programmers
-
- The TS file format used by \QL is described by the
- \l{http://www.w3.org/TR/1998/REC-xml-19980210}{DTD} presented below,
- which we include for your convenience. Be aware that the format
- may change in future Qt releases.
-
- \quotefile tools/linguist/shared/ts.dtd
-
-*/
diff --git a/doc/src/mac-differences.qdoc b/doc/src/mac-differences.qdoc
deleted file mode 100644
index ee7712537..000000000
--- a/doc/src/mac-differences.qdoc
+++ /dev/null
@@ -1,339 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page mac-differences.html
- \title Qt for Mac OS X - Specific Issues
- \brief A description of issues with Qt that are specific to Mac OS X.
- \ingroup platform-notes
-
- This file outlines known issues and possible workarounds when
- using Qt on Mac OS X. Contact Qt's technical support team if you find
- additional issues which are not covered here. (See also the
- document \l{qtmac-as-native.html} {Qt is Mac OS X Native}.)
-
- \tableofcontents
-
- \section1 GUI Applications
-
- Mac OS X handles most applications as "bundles". A bundle is a
- directory structure that groups related files together (e.g.,
- widgets.app/). GUI applications in particular must be run from a
- bundle or by using the open(1), because Mac OS X needs the bundle
- to dispatch events correctly, as well as for accessing the menu
- bar.
-
- If you are using older versions of GDB you must run with the full
- path to the executable. Later versions allow you to pass the
- bundle name on the command line.
-
- \section1 Painting
-
- Mac OS X always double buffers the screen so the
- Qt::WA_PaintOnScreen attribute has no effect. Also it is
- impossible to paint outside of a paint event so
- Qt::WA_PaintOutsidePaintEvent has no effect either.
-
- \section1 Library Support
-
- \section2 Qt libraries as frameworks
-
- By default, Qt is built as a set of frameworks. Frameworks is the
- Mac OS X "preferred" way of distributing libraries. There are
- definite advantages to using them. See
- \l{http://developer.apple.com/documentation/MacOSX/Conceptual/BPFrameworks/index.html}
- {Apple's Framework Programming Guide} for more information.
-
- In general, this shouldn't be an issue because qmake takes care of
- the specifics for you. The
- \l{http://developer.apple.com/documentation/MacOSX/Conceptual/BPFrameworks/index.html}
- {Framework Programming Guide} discusses issues to keep in mind
- when choosing frameworks over the more typical, dynamic libraries.
- However, one point to remember is: \bold {Frameworks always link
- with "release" versions of libraries}.
-
- If you actually want to use a \e{debug} version of a Qt framework,
- you must ensure that your application actually loads that debug
- version. This is often done by using the DYLD_IMAGE_SUFFIX
- environment variables, but that way often doesn't work so well.
- Instead, you can temporarily swap your debug and release versions,
- which is documented in
- \l{http://developer.apple.com/technotes/tn2004/tn2124.html#SECJUSTONELIB}
- {Apple's "Debugging Magic" technical note}.
-
- If you don't want to use frameworks, simply configure Qt with
- \c{-no-framework}.
-
- \section2 Bundle-Based Libraries
-
- If you want to use some dynamic libraries in your Mac OS X
- application bundle (the application directory), create a
- subdirectory named "Frameworks" in the application bundle
- directory and place your dynamic libraries there. The application
- will find a dynamic library if it has the install name
- \e{@executable_path/../Frameworks/libname.dylib}.
-
- If you use \c qmake and Makefiles, use the \c QMAKE_LFLAGS_SONAME setting:
-
- \snippet doc/src/snippets/code/doc_src_mac-differences.qdoc 0
-
- Alternatively, you can modify the install name using the
- install_name_tool(1) on the command line. See its manpage for more
- information.
-
- Note that the \c DYLD_LIBRARY_PATH environment variable will
- override these settings, and any other default paths, such as a
- lookup of dynamic libraries inside \c /usr/lib and similar default
- locations.
-
- \section2 Combining Libraries
-
- If you want to build a new dynamic library combining the Qt 4
- dynamic libraries, you need to introduce the \c{ld -r} flag. Then
- relocation information is stored in the output file, so that
- this file could be the subject of another \c ld run. This is done
- by setting the \c -r flag in the \c .pro file, and the \c LFLAGS
- settings.
-
- \section2 Initialization Order
-
- dyld(1) calls global static initializers in the order they are
- linked into your application. If a library links against Qt and
- references globals in Qt (from global initializers in your own
- library), be sure to link your application against Qt before
- linking it against the library. Otherwise the result will be
- undefined because Qt's global initializers have not been called
- yet.
-
- \section1 Compile-Time Flags
-
- The follewing flags are helpful when you want to define Mac OS X specific
- code:
-
- \list
-
- \o Q_OS_DARWIN is defined when Qt detects you are on a
- Darwin-based system (including the Open Source version)
-
- \o Q_WS_MAC is defined when the Mac OS X GUI is present.
-
- \o QT_MAC_USE_COCOA is defined when Qt is built to use the Cocoa framework.
- If it is not present, then Qt is using Carbon.
-
- \endlist
-
- A additional flag, Q_OS_MAC, is defined as a convenience whenever
- Q_OS_DARWIN is defined.
-
- If you want to define code for specific versions of Mac OS X, use
- the availability macros defined in /usr/include/AvailabilityMacros.h.
-
- See QSysInfo for information on runtime version checking.
-
- \section1 Mac OS X Native API Access
-
- \section2 Accessing the Bundle Path
-
- The Mac OS X application is actually a directory (ending with \c
- .app). This directory contains sub-directories and files. It may
- be useful to place items (e.g. plugins, online-documentation,
- etc.) inside this bundle. You might then want to find out where
- the bundle resides on the disk. The following code returns the
- path of the application bundle:
-
- \snippet doc/src/snippets/code/doc_src_mac-differences.qdoc 1
-
- Note: When OS X is set to use Japanese, a bug causes this sequence
- to fail and return an empty string. Therefore, always test the
- returned string.
-
- For more information about using the CFBundle API, see
- \l{http://developer.apple.com/documentation/CoreFoundation/Reference/CFBundleRef/index.html}
- {Apple's Developer Website}.
-
- \section2 Translating the Application Menu and Native Dialogs
-
- The items in the Application Menu will be merged correctly for
- your localized application, but they will not show up translated
- until you
- \l{http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFBundles/Concepts/BundleAnatomy.html#//apple_ref/doc/uid/20001119-105003-BAJFDAAG}
- {add a localized resource folder} to the application bundle.
- The main thing you need to do is create a file called
- locversion.plist. Here is an example for Norwegian:
-
- \snippet doc/src/snippets/code/doc_src_mac-differences.qdoc 2
-
- Now when you run the application with your preferred language set
- to Norwegian, you should see menu items like "Avslutt" instead of
- "Quit".
-
- \section1 User Interface
-
- \section2 Right-Mouse Clicks
-
- If you want to provide right-mouse click support for Mac OS X, use
- the QContextMenuEvent class. This will map to a context menu
- event, i.e., a menu that will display a pop-up selection. This is
- the most common use of right-mouse clicks, and maps to a
- control-click with the Mac OS X one-button mouse support.
-
- \section2 Menu Bar
-
- Qt will automatically detect your menu bars for you and turn
- them into Mac native menu bars. Fitting this into your existing Qt
- application will normally be automatic. However, if you have
- special needs, the Qt implementation currently selects a menu
- bar by starting at the active window
- (i.e. QApplication::activeWindow()) and applying the following
- tests:
-
- \list 1
-
- \i If the window has a QMenuBar, then it is used.
-
- \i If the window is modal, then its menu bar is used. If no menu
- bar is specified, then a default menu bar is used (as
- documented below).
-
- \i If the window has no parent, then the default menu bar is used
- (as documented below).
-
- \endlist
-
- These tests are followed all the way up the parent window chain
- until one of the above rules is satisifed. If all else fails, a
- default menu bar will be created. Note the default menu bar on
- Qt is an empty menu bar. However, you can create a different
- default menu bar by creating a parentless QMenuBar. The first one
- created will be designated the default menu bar and will be used
- whenever a default menu bar is needed.
-
- Note that using native menu bars introduces certain limitations on
- Qt classes. See the \l{#Limitations}{list of limitations} below
- for more information about these.
-
- \section2 Special Keys
-
- To provide the expected behavior for Qt applications on Mac OS X,
- the Qt::Meta, Qt::MetaModifier, and Qt::META enum values
- correspond to the Control keys on the standard Macintosh keyboard,
- and the Qt::Control, Qt::ControlModifier, and Qt::CTRL enum values
- correspond to the Command keys.
-
- \section1 Limitations
-
- \section2 Menu Actions
-
- \list
-
- \o Actions in a QMenu with accelerators that have more than one
- keystroke (QKeySequence) will not display correctly, when the
- QMenu is translated into a Mac native menu bar. The first key
- will be displayed. However, the shortcut will still be
- activated as on all other platforms.
-
- \o QMenu objects used in the native menu bar are not able to
- handle Qt events via the normal event handlers.
- For Carbon, you will have to install a Carbon event handler on
- the menu bar in order to receive Carbon events that are similar
- to \l{QMenu::}{showEvent()}, \l{QMenu::}{hideEvent()}, and
- \l{QMenu::}{mouseMoveEvent()}. For Cocoa, you will have to
- install a delegate on the menu itself to be notified of these
- changes. Alternatively, consider using the QMenu::aboutToShow()
- and QMenu::aboutToHide() signals to keep track of menu visibility;
- these provide a solution that should work on all platforms
- supported by Qt.
-
- \endlist
-
- \section2 Native Widgets
-
- Qt has support for sheets and drawers, represented in the
- window flags by Qt::Sheet and Qt::Drawer respectiviely. Brushed
- metal windows can also be created by using the
- Qt::WA_MacMetalStyle window attribute.
-
-*/
-
-/*!
- \page qt-mac-cocoa-licensing.html
-
- \title Contributions to the Following QtGui Files: qapplication_cocoa_p.h, qapplication_mac.mm, qdesktopwidget_mac.mm qeventdispatcher_mac.mm qeventdispatcher_mac_p.h qmacincludes_mac.h qt_cocoa_helpers.mm qt_cocoa_helpers_p.h qwidget_mac.mm qsystemtrayicon_mac.mm
-
- \contentspage {Other Licenses Used in Qt}{Contents}
-
- \ingroup licensing
- \brief License information for contributions by Apple, Inc. to specific parts of the Qt/Mac Cocoa port.
-
- \legalese
-
- Copyright (C) 2007-2008, Apple, Inc.
-
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- \list
- \o Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- \o 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.
- \o Neither the name of Apple, Inc. nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
- \endlist
-
- 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.
-
- \endlegalese
-*/
diff --git a/doc/src/metaobjects.qdoc b/doc/src/metaobjects.qdoc
deleted file mode 100644
index c11cf4d15..000000000
--- a/doc/src/metaobjects.qdoc
+++ /dev/null
@@ -1,149 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page metaobjects.html
- \title Meta-Object System
- \brief An overview of Qt's meta-object system and introspection capabilities.
- \ingroup architecture
- \keyword meta-object
-
- Qt's meta-object system provides the signals and slots mechanism for
- inter-object communication, run-time type information, and the dynamic
- property system.
-
- The meta-object system is based on three things:
-
- \list 1
- \o The \l QObject class provides a base class for objects that can
- take advantage of the meta-object system.
- \o The Q_OBJECT macro inside the private section of the class
- declaration is used to enable meta-object features, such as
- dynamic properties, signals, and slots.
- \o The \l{moc}{Meta-Object Compiler} (\c moc) supplies each
- QObject subclass with the necessary code to implement
- meta-object features.
- \endlist
-
- The \c moc tool reads a C++ source file. If it finds one or more
- class declarations that contain the Q_OBJECT macro, it
- produces another C++ source file which contains the meta-object
- code for each of those classes. This generated source file is
- either \c{#include}'d into the class's source file or, more
- usually, compiled and linked with the class's implementation.
-
- In addition to providing the \l{signals and slots} mechanism for
- communication between objects (the main reason for introducing
- the system), the meta-object code provides the following
- additional features:
-
- \list
- \o QObject::metaObject() returns the associated
- \l{QMetaObject}{meta-object} for the class.
- \o QMetaObject::className() returns the class name as a
- string at run-time, without requiring native run-time type information
- (RTTI) support through the C++ compiler.
- \o QObject::inherits() function returns whether an object is an
- instance of a class that inherits a specified class within the
- QObject inheritance tree.
- \o QObject::tr() and QObject::trUtf8() translate strings for
- \l{Internationalization with Qt}{internationalization}.
- \o QObject::setProperty() and QObject::property()
- dynamically set and get properties by name.
- \o QMetaObject::newInstance() constructs a new instance of the class.
- \endlist
-
- \target qobjectcast
- It is also possible to perform dynamic casts using qobject_cast()
- on QObject classes. The qobject_cast() function behaves similarly
- to the standard C++ \c dynamic_cast(), with the advantages
- that it doesn't require RTTI support and it works across dynamic
- library boundaries. It attempts to cast its argument to the pointer
- type specified in angle-brackets, returning a non-zero pointer if the
- object is of the correct type (determined at run-time), or 0
- if the object's type is incompatible.
-
- For example, let's assume \c MyWidget inherits from QWidget and
- is declared with the Q_OBJECT macro:
-
- \snippet doc/src/snippets/qtcast/qtcast.cpp 0
-
- The \c obj variable, of type \c{QObject *}, actually refers to a
- \c MyWidget object, so we can cast it appropriately:
-
- \snippet doc/src/snippets/qtcast/qtcast.cpp 1
-
- The cast from QObject to QWidget is successful, because the
- object is actually a \c MyWidget, which is a subclass of QWidget.
- Since we know that \c obj is a \c MyWidget, we can also cast it to
- \c{MyWidget *}:
-
- \snippet doc/src/snippets/qtcast/qtcast.cpp 2
-
- The cast to \c MyWidget is successful because qobject_cast()
- makes no distinction between built-in Qt types and custom types.
-
- \snippet doc/src/snippets/qtcast/qtcast.cpp 3
- \snippet doc/src/snippets/qtcast/qtcast.cpp 4
-
- The cast to QLabel, on the other hand, fails. The pointer is then
- set to 0. This makes it possible to handle objects of different
- types differently at run-time, based on the type:
-
- \snippet doc/src/snippets/qtcast/qtcast.cpp 5
- \snippet doc/src/snippets/qtcast/qtcast.cpp 6
-
- While it is possible to use QObject as a base class without the
- Q_OBJECT macro and without meta-object code, neither signals
- and slots nor the other features described here will be available
- if the Q_OBJECT macro is not used. From the meta-object
- system's point of view, a QObject subclass without meta code is
- equivalent to its closest ancestor with meta-object code. This
- means for example, that QMetaObject::className() will not return
- the actual name of your class, but the class name of this
- ancestor.
-
- Therefore, we strongly recommend that all subclasses of QObject
- use the Q_OBJECT macro regardless of whether or not they
- actually use signals, slots, and properties.
-
- \sa QMetaObject, {Qt's Property System}, {Signals and Slots}
-*/
diff --git a/doc/src/moc.qdoc b/doc/src/moc.qdoc
deleted file mode 100644
index ee57f7efc..000000000
--- a/doc/src/moc.qdoc
+++ /dev/null
@@ -1,336 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page moc.html
- \title Using the Meta-Object Compiler (moc)
- \ingroup buildsystem
- \ingroup qttools
- \keyword moc
-
- The Meta-Object Compiler, \c moc, is the program that handles
- \l{Meta-Object System}{Qt's C++ extensions}.
-
- The \c moc tool reads a C++ header file. If it finds one or more
- class declarations that contain the Q_OBJECT macro, it
- produces a C++ source file containing the meta-object code for
- those classes. Among other things, meta-object code is required
- for the signals and slots mechanism, the run-time type information,
- and the dynamic property system.
-
- The C++ source file generated by \c moc must be compiled and
- linked with the implementation of the class.
-
- If you use \l qmake to create your makefiles, build rules will be
- included that call the moc when required, so you will not need to
- use the moc directly. For more background information on \c moc,
- see \l{Why Doesn't Qt Use Templates for Signals and Slots?}
-
- \section1 Usage
-
- \c moc is typically used with an input file containing class
- declarations like this:
-
- \snippet doc/src/snippets/moc/myclass1.h 0
-
- In addition to the signals and slots shown above, \c moc also
- implements object properties as in the next example. The
- Q_PROPERTY() macro declares an object property, while
- Q_ENUMS() declares a list of enumeration types within the class
- to be usable inside the \l{Qt's Property System}{property
- system}.
-
- In the following example, we declare a property of the
- enumeration type \c Priority that is also called \c priority and
- has a get function \c priority() and a set function \c
- setPriority().
-
- \snippet doc/src/snippets/moc/myclass2.h 0
-
- The Q_FLAGS() macro declares enums that are to be used
- as flags, i.e. OR'd together. Another macro, Q_CLASSINFO(),
- allows you to attach additional name/value pairs to the class's
- meta-object:
-
- \snippet doc/src/snippets/moc/myclass3.h 0
-
- The output produced by \c moc must be compiled and linked, just
- like the other C++ code in your program; otherwise, the build
- will fail in the final link phase. If you use \c qmake, this is
- done automatically. Whenever \c qmake is run, it parses the
- project's header files and generates make rules to invoke \c moc
- for those files that contain a Q_OBJECT macro.
-
- If the class declaration is found in the file \c myclass.h, the
- moc output should be put in a file called \c moc_myclass.cpp.
- This file should then be compiled as usual, resulting in an
- object file, e.g., \c moc_myclass.obj on Windows. This object
- should then be included in the list of object files that are
- linked together in the final building phase of the program.
-
- \section1 Writing Make Rules for Invoking \c moc
-
- For anything but the simplest test programs, it is recommended
- that you automate running the \c{moc}. By adding some rules to
- your program's makefile, \c make can take care of running moc
- when necessary and handling the moc output.
-
- We recommend using the \l qmake makefile generation tool for
- building your makefiles. This tool generates a makefile that does
- all the necessary \c moc handling.
-
- If you want to create your makefiles yourself, here are some tips
- on how to include moc handling.
-
- For Q_OBJECT class declarations in header files, here is a
- useful makefile rule if you only use GNU make:
-
- \snippet doc/src/snippets/code/doc_src_moc.qdoc 0
-
- If you want to write portably, you can use individual rules of
- the following form:
-
- \snippet doc/src/snippets/code/doc_src_moc.qdoc 1
-
- You must also remember to add \c moc_foo.cpp to your \c SOURCES
- (substitute your favorite name) variable and \c moc_foo.o or \c
- moc_foo.obj to your \c OBJECTS variable.
-
- Both examples assume that \c $(DEFINES) and \c $(INCPATH) expand
- to the define and include path options that are passed to the C++
- compiler. These are required by \c moc to preprocess the source
- files.
-
- While we prefer to name our C++ source files \c .cpp, you can use
- any other extension, such as \c .C, \c .cc, \c .CC, \c .cxx, and
- \c .c++, if you prefer.
-
- For Q_OBJECT class declarations in implementation (\c .cpp)
- files, we suggest a makefile rule like this:
-
- \snippet doc/src/snippets/code/doc_src_moc.qdoc 2
-
- This guarantees that make will run the moc before it compiles
- \c foo.cpp. You can then put
-
- \snippet doc/src/snippets/code/doc_src_moc.qdoc 3
-
- at the end of \c foo.cpp, where all the classes declared in that
- file are fully known.
-
- \section1 Command-Line Options
-
- Here are the command-line options supported by the moc:
-
- \table
- \header \o Option \o Description
-
- \row
- \o \c{-o<file>}
- \o Write output to \c <file> rather than to standard output.
-
- \row
- \o \c{-f[<file>]}
- \o Force the generation of an \c #include statement in the
- output. This is the default for header files whose extension
- starts with \c H or \c h. This option is useful if you have
- header files that do not follow the standard naming conventions.
- The \c <file> part is optional.
-
- \row
- \o \c -i
- \o Do not generate an \c #include statement in the output.
- This may be used to run the moc on on a C++ file containing one or
- more class declarations. You should then \c #include the meta-object
- code in the \c .cpp file.
-
- \row
- \o \c -nw
- \o Do not generate any warnings. (Not recommended.)
-
- \row
- \o \c {-p<path>}
- \o Makes the moc prepend \c {<path>/} to the file name in the
- generated \c #include statement.
-
- \row
- \o \c {-I<dir>}
- \o Add dir to the include path for header files.
-
- \row
- \o \c{-E}
- \o Preprocess only; do not generate meta-object code.
-
- \row
- \o \c {-D<macro>[=<def>]}
- \o Define macro, with optional definition.
-
- \row
- \o \c{-U<macro>}
- \o Undefine macro.
-
- \row
- \o \c{@<file>}
- \o Read additional command-line options from \c{<file>}.
- Each line of the file is treated as a single option. Empty lines
- are ignored. Note that this option is not supported within the
- options file itself (i.e. an options file can't "include" another
- file).
-
- \row
- \o \c{-h}
- \o Display the usage and the list of options.
-
- \row
- \o \c {-v}
- \o Display \c{moc}'s version number.
-
- \row
- \o \c{-Fdir}
-
- \o Mac OS X. Add the framework directory \c{dir} to the head of
- the list of directories to be searched for header files. These
- directories are interleaved with those specified by -I options
- and are scanned in a left-to-right order (see the manpage for
- gcc). Normally, use -F /Library/Frameworks/
-
- \endtable
-
- You can explicitly tell the moc not to parse parts of a header
- file. \c moc defines the preprocessor symbol \c Q_MOC_RUN. Any
- code surrounded by
-
- \snippet doc/src/snippets/code/doc_src_moc.qdoc 4
-
- is skipped by the \c moc.
-
- \section1 Diagnostics
-
- \c moc will warn you about a number of dangerous or illegal
- constructs in the Q_OBJECT class declarations.
-
- If you get linkage errors in the final building phase of your
- program, saying that \c YourClass::className() is undefined or
- that \c YourClass lacks a vtable, something has been done wrong.
- Most often, you have forgotten to compile or \c #include the
- moc-generated C++ code, or (in the former case) include that
- object file in the link command. If you use \c qmake, try
- rerunning it to update your makefile. This should do the trick.
-
- \section1 Limitations
-
- \c moc does not handle all of C++. The main problem is that class
- templates cannot have signals or slots. Here is an example:
-
- \snippet doc/src/snippets/code/doc_src_moc.qdoc 5
-
- Another limitation is that moc does not expand macros, so you
- for example cannot use a macro to declare a signal/slot
- or use one to define a base class for a QObject.
-
- Less importantly, the following constructs are illegal. All of
- them have alternatives which we think are usually better, so
- removing these limitations is not a high priority for us.
-
- \section2 Multiple Inheritance Requires QObject to Be First
-
- If you are using multiple inheritance, \c moc assumes that the
- first inherited class is a subclass of QObject. Also, be sure
- that only the first inherited class is a QObject.
-
- \snippet doc/src/snippets/code/doc_src_moc.qdoc 6
-
- Virtual inheritance with QObject is \e not supported.
-
- \section2 Function Pointers Cannot Be Signal or Slot Parameters
-
- In most cases where you would consider using function pointers as
- signal or slot parameters, we think inheritance is a better
- alternative. Here is an example of illegal syntax:
-
- \snippet doc/src/snippets/code/doc_src_moc.qdoc 7
-
- You can work around this restriction like this:
-
- \snippet doc/src/snippets/code/doc_src_moc.qdoc 8
-
- It may sometimes be even better to replace the function pointer
- with inheritance and virtual functions.
-
- \section2 Enums and Typedefs Must Be Fully Qualified for Signal and Slot Parameters
-
- When checking the signatures of its arguments, QObject::connect()
- compares the data types literally. Thus,
- \l{Qt::Alignment}{Alignment} and \l{Qt::Alignment} are treated as
- two distinct types. To work around this limitation, make sure to
- fully qualify the data types when declaring signals and slots,
- and when establishing connections. For example:
-
- \snippet doc/src/snippets/code/doc_src_moc.qdoc 9
-
- \section2 Type Macros Cannot Be Used for Signal and Slot Parameters
-
- Since \c moc doesn't expand \c{#define}s, type macros that take
- an argument will not work in signals and slots. Here is an
- illegal example:
-
- \snippet doc/src/snippets/code/doc_src_moc.qdoc 10
-
- A macro without parameters will work.
-
- \section2 Nested Classes Cannot Have Signals or Slots
-
- Here's an example of the offending construct:
-
- \snippet doc/src/snippets/code/doc_src_moc.qdoc 11
-
- \section2 Signal/Slot return types cannot be references
-
- Signals and slots can have return types, but signals or slots returning references
- will be treated as returning void.
-
- \section2 Only Signals and Slots May Appear in the \c signals and \c slots Sections of a Class
-
- \c moc will complain if you try to put other constructs in the \c
- signals or \c slots sections of a class than signals and slots.
-
- \sa {Meta-Object System}, {Signals and Slots}, {Qt's Property System}
-*/
diff --git a/doc/src/model-view-programming.qdoc b/doc/src/model-view-programming.qdoc
deleted file mode 100644
index 13f5e5a63..000000000
--- a/doc/src/model-view-programming.qdoc
+++ /dev/null
@@ -1,2485 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page model-view-programming.html
- \nextpage An Introduction to Model/View Programming
- \startpage index.html Qt Reference Documentation
-
- \title Model/View Programming
- \ingroup architecture
- \brief A guide to the extensible model/view architecture used by Qt's
- item view classes.
-
- \list
- \o \l{An Introduction to Model/View Programming}
- \tableofcontents{1 An Introduction to Model/View Programming}
- \o \l{Using Models and Views}
- \tableofcontents{1 Using Models and Views}
- \o \l{Model Classes}
- \tableofcontents{1 Model Classes}
- \o \l{Creating New Models}
- \tableofcontents{1 Creating New Models}
- \o \l{View Classes}
- \tableofcontents{1 View Classes}
- \o \l{Handling Selections in Item Views}
- \tableofcontents{1 Handling Selections in Item Views}
- \o \l{Delegate Classes}
- \tableofcontents{1 Delegate Classes}
- \o \l{Item View Convenience Classes}
- \tableofcontents{1 Item View Convenience Classes}
- \o \l{Using Drag and Drop with Item Views}
- \tableofcontents{1 Using Drag and Drop with Item Views}
- \o \l{Proxy Models}
- \tableofcontents{1 Proxy Models}
- \o \l{Model Subclassing Reference}
- \tableofcontents{1 Model Subclassing Reference}
- \endlist
-
- See also the list of \l{Model/View Classes}.
-
- \section1 Related Examples
-
- \list
- \o \l{itemviews/dirview}{Dir View}
- \o \l{itemviews/spinboxdelegate}{Spin Box Delegate}
- \o \l{itemviews/pixelator}{Pixelator}
- \o \l{itemviews/simpletreemodel}{Simple Tree Model}
- \o \l{itemviews/chart}{Chart}
- \endlist
-*/
-
-/*!
- \page model-view-introduction.html
- \previouspage Model/View Programming
- \nextpage Using Models and Views
- \startpage index.html Qt Reference Documentation
-
- \title An Introduction to Model/View Programming
-
- \tableofcontents
-
- Qt 4 introduces a new set of item view classes that use a model/view
- architecture to manage the relationship between data and the way it
- is presented to the user. The separation of functionality introduced by
- this architecture gives developers greater flexibility to customize the
- presentation of items, and provides a standard model interface to allow
- a wide range of data sources to be used with existing item views.
- In this document, we give a brief introduction to the model/view paradigm,
- outline the concepts involved, and describe the architecture of the item
- view system. Each of the components in the architecture is explained,
- and examples are given that show how to use the classes provided.
-
- \section1 The Model/View Architecture
-
- Model-View-Controller (MVC) is a design pattern originating from
- Smalltalk that is often used when building user interfaces.
- In \l{Design Patterns}, Gamma et al. write:
-
- \quotation
- MVC consists of three kinds of objects. The Model is the application
- object, the View is its screen presentation, and the Controller defines
- the way the user interface reacts to user input. Before MVC, user
- interface designs tended to lump these objects together. MVC decouples
- them to increase flexibility and reuse.
- \endquotation
-
- If the view and the controller objects are combined, the result is
- the model/view architecture. This still separates the way that data
- is stored from the way that it is presented to the user, but provides
- a simpler framework based on the same principles. This separation
- makes it possible to display the same data in several different views,
- and to implement new types of views, without changing the underlying
- data structures.
- To allow flexible handling of user input, we introduce the concept of
- the \e delegate. The advantage of having a delegate in this framework
- is that it allows the way items of data are rendered and edited to be
- customized.
-
- \table
- \row \i \inlineimage modelview-overview.png
- \i \bold{The model/view architecture}
-
- The model communicates with a source of data, providing an \e interface
- for the other components in the architecture. The nature of the
- communication depends on the type of data source, and the way the model
- is implemented.
-
- The view obtains \e{model indexes} from the model; these are references
- to items of data. By supplying model indexes to the model, the view can
- retrieve items of data from the data source.
-
- In standard views, a \e delegate renders the items of data. When an item
- is edited, the delegate communicates with the model directly using
- model indexes.
- \endtable
-
- Generally, the model/view classes can be separated into the three groups
- described above: models, views, and delegates. Each of these components
- is defined by \e abstract classes that provide common interfaces and,
- in some cases, default implementations of features.
- Abstract classes are meant to be subclassed in order to provide the full
- set of functionality expected by other components; this also allows
- specialized components to be written.
-
- Models, views, and delegates communicate with each other using \e{signals
- and slots}:
-
- \list
- \o Signals from the model inform the view about changes to the data
- held by the data source.
- \o Signals from the view provide information about the user's interaction
- with the items being displayed.
- \o Signals from the delegate are used during editing to tell the
- model and view about the state of the editor.
- \endlist
-
- \section2 Models
-
- All item models are based on the QAbstractItemModel class. This class
- defines an interface that is used by views and delegates to access data.
- The data itself does not have to be stored in the model; it can be held
- in a data structure or repository provided by a separate class, a file,
- a database, or some other application component.
-
- The basic concepts surrounding models are presented in the section
- on \l{Model Classes}.
-
- QAbstractItemModel
- provides an interface to data that is flexible enough to handle views
- that represent data in the form of tables, lists, and trees. However,
- when implementing new models for list and table-like data structures,
- the QAbstractListModel and QAbstractTableModel classes are better
- starting points because they provide appropriate default implementations
- of common functions. Each of these classes can be subclassed to provide
- models that support specialized kinds of lists and tables.
-
- The process of subclassing models is discussed in the section on
- \l{Creating New Models}.
-
- Qt provides some ready-made models that can be used to handle items of
- data:
-
- \list
- \o QStringListModel is used to store a simple list of QString items.
- \o QStandardItemModel manages more complex tree structures of items, each
- of which can contain arbitrary data.
- \o QDirModel provides information about files and directories in the local
- filing system.
- \o QSqlQueryModel, QSqlTableModel, and QSqlRelationalTableModel are used
- to access databases using model/view conventions.
- \endlist
-
- If these standard models do not meet your requirements, you can subclass
- QAbstractItemModel, QAbstractListModel, or QAbstractTableModel to create
- your own custom models.
-
- \section2 Views
-
- Complete implementations are provided for different kinds of
- views: QListView displays a list of items, QTableView displays data
- from a model in a table, and QTreeView shows model items of data in a
- hierarchical list. Each of these classes is based on the
- QAbstractItemView abstract base class. Although these classes are
- ready-to-use implementations, they can also be subclassed to provide
- customized views.
-
- The available views are examined in the section on \l{View Classes}.
-
- \section2 Delegates
-
- QAbstractItemDelegate is the abstract base class for delegates in the
- model/view framework. Since Qt 4.4, the default delegate implementation is
- provided by QStyledItemDelegate, and this is used as the default delegate
- by Qt's standard views. However, QStyledItemDelegate and QItemDelegate are
- independent alternatives to painting and providing editors for items in
- views. The difference between them is that QStyledItemDelegate uses the
- current style to paint its items. We therefore recommend using
- QStyledItemDelegate as the base class when implementing custom delegates or
- when working with Qt style sheets.
-
- Delegates are described in the section on \l{Delegate Classes}.
-
- \section2 Sorting
-
- There are two ways of approaching sorting in the model/view
- architecture; which approach to choose depends on your underlying
- model.
-
- If your model is sortable, i.e, if it reimplements the
- QAbstractItemModel::sort() function, both QTableView and QTreeView
- provide an API that allows you to sort your model data
- programmatically. In addition, you can enable interactive sorting
- (i.e. allowing the users to sort the data by clicking the view's
- headers), by connecting the QHeaderView::sortIndicatorChanged() signal
- to the QTableView::sortByColumn() slot or the
- QTreeView::sortByColumn() slot, respectively.
-
- The alternative approach, if your model do not have the required
- interface or if you want to use a list view to present your data,
- is to use a proxy model to transform the structure of your model
- before presenting the data in the view. This is covered in detail
- in the section on \l {Proxy Models}.
-
- \section2 Convenience Classes
-
- A number of \e convenience classes are derived from the standard view
- classes for the benefit of applications that rely on Qt's item-based
- item view and table classes. They are not intended to be subclassed,
- but simply exist to provide a familiar interface to the equivalent classes
- in Qt 3.
- Examples of such classes include \l QListWidget, \l QTreeWidget, and
- \l QTableWidget; these provide similar behavior to the \c QListBox,
- \c QListView, and \c QTable classes in Qt 3.
-
- These classes are less flexible than the view classes, and cannot be
- used with arbitrary models. We recommend that you use a model/view
- approach to handling data in item views unless you strongly need an
- item-based set of classes.
-
- If you wish to take advantage of the features provided by the model/view
- approach while still using an item-based interface, consider using view
- classes, such as QListView, QTableView, and QTreeView with
- QStandardItemModel.
-
- \section1 The Model/View Components
-
- The following sections describe the way in which the model/view pattern
- is used in Qt. Each section provides an example of use, and is followed
- by a section showing how you can create new components.
-*/
-
-/*!
- \page model-view-using.html
- \contentspage model-view-programming.html Contents
- \previouspage An Introduction to Model/View Programming
- \nextpage Model Classes
-
- \title Using Models and Views
-
- \tableofcontents
-
- \section1 Introduction
-
- Two of the standard models provided by Qt are QStandardItemModel and
- QDirModel. QStandardItemModel is a multi-purpose model that can be used
- to represent various different data structures needed by list, table,
- and tree views. This model also holds the items of data.
- QDirModel is a model that maintains information about the contents of a
- directory. As a result, it does not hold any items of data itself, but
- simply represents files and directories on the local filing system.
-
- QDirModel provides a ready-to-use model to experiment with, and can be
- easily configured to use existing data. Using this model, we can show how
- to set up a model for use with ready-made views, and explore how to
- manipulate data using model indexes.
-
- \section1 Using Views with an Existing Model
-
- The QListView and QTreeView classes are the most suitable views
- to use with QDirModel. The example presented below displays the
- contents of a directory in a tree view next to the same information in
- a list view. The views share the user's selection so that the selected
- items are highlighted in both views.
-
- \img shareddirmodel.png
-
- We set up a QDirModel so that it is ready for use, and create some
- views to display the contents of a directory. This shows the simplest
- way to use a model. The construction and use of the model is
- performed from within a single \c main() function:
-
- \snippet doc/src/snippets/shareddirmodel/main.cpp 0
-
- The model is set up to use data from a default directory. We create two
- views so that we can examine the items held in the model in two
- different ways:
-
- \snippet doc/src/snippets/shareddirmodel/main.cpp 5
-
- The views are constructed in the same way as other widgets. Setting up
- a view to display the items in the model is simply a matter of calling its
- \l{QAbstractItemView::setModel()}{setModel()} function with the directory
- model as the argument. The calls to
- \l{QAbstractItemView::setRootIndex()}{setRootIndex()} tell the views which
- directory to display by supplying a \e{model index} that we obtain from
- the directory model.
-
- The \c index() function used in this case is unique to QDirModel; we supply
- it with a directory and it returns a model index. Model indexes are
- discussed in the \l{Model Classes} chapter.
-
- The rest of the function just displays the views within a splitter
- widget, and runs the application's event loop:
-
- \snippet doc/src/snippets/shareddirmodel/main.cpp 8
-
- In the above example, we neglected to mention how to handle selections
- of items. This subject is covered in more detail in the chapter on
- \l{Handling Selections in Item Views}. Before examining how selections
- are handled, you may find it useful to read the \l{Model Classes} chapter
- which describes the concepts used in the model/view framework.
-*/
-
-/*!
- \page model-view-model.html
- \contentspage model-view-programming.html Contents
- \previouspage Using Models and Views
- \nextpage Creating New Models
-
- \title Model Classes
-
- \tableofcontents
-
- \section1 Basic Concepts
-
- In the model/view architecture, the model provides a standard interface
- that views and delegates use to access data. In Qt, the standard
- interface is defined by the QAbstractItemModel class. No matter how the
- items of data are stored in any underlying data structure, all subclasses
- of QAbstractItemModel represent the data as a hierarchical structure
- containing tables of items. Views use this \e convention to access items
- of data in the model, but they are not restricted in the way that they
- present this information to the user.
-
- \image modelview-models.png
-
- Models also notify any attached views about changes to data through the
- signals and slots mechanism.
-
- This chapter describes some basic concepts that are central to the way
- item of data are accessed by other components via a model class. More
- advanced concepts are discussed in later chapters.
-
- \section2 Model Indexes
-
- To ensure that the representation of the data is kept separate from the
- way it is accessed, the concept of a \e{model index} is introduced. Each
- piece of information that can be obtained via a model is represented by
- a model index. Views and delegates use these indexes to request items of
- data to display.
-
- As a result, only the model needs to know how to obtain data, and the type
- of data managed by the model can be defined fairly generally. Model indexes
- contain a pointer to the model that created them, and this prevents
- confusion when working with more than one model.
-
- \snippet doc/src/snippets/code/doc_src_model-view-programming.qdoc 0
-
- Model indexes provide \e temporary references to pieces of information, and
- can be used to retrieve or modify data via the model. Since models may
- reorganize their internal structures from time to time, model indexes may
- become invalid, and \e{should not be stored}. If a long-term reference to a
- piece of information is required, a \e{persistent model index} must be
- created. This provides a reference to the information that the model keeps
- up-to-date. Temporary model indexes are provided by the QModelIndex class,
- and persistent model indexes are provided by the QPersistentModelIndex
- class.
-
- To obtain a model index that corresponds to an item of data, three
- properties must be specified to the model: a row number, a column number,
- and the model index of a parent item. The following sections describe
- and explain these properties in detail.
-
- \section2 Rows and Columns
-
- In its most basic form, a model can be accessed as a simple table in which
- items are located by their row and column numbers. \e{This does not mean
- that the underlying pieces of data are stored in an array structure}; the
- use of row and column numbers is only a convention to allow components to
- communicate with each other. We can retrieve information about any given
- item by specifying its row and column numbers to the model, and we receive
- an index that represents the item:
-
- \snippet doc/src/snippets/code/doc_src_model-view-programming.qdoc 1
-
- Models that provide interfaces to simple, single level data structures like
- lists and tables do not need any other information to be provided but, as
- the above code indicates, we need to supply more information when obtaining
- a model index.
-
- \table
- \row \i \inlineimage modelview-tablemodel.png
- \i \bold{Rows and columns}
-
- The diagram shows a representation of a basic table model in which each
- item is located by a pair of row and column numbers. We obtain a model
- index that refers to an item of data by passing the relevant row and
- column numbers to the model.
-
- \snippet doc/src/snippets/code/doc_src_model-view-programming.qdoc 2
-
- Top level items in a model are always referenced by specifying
- \c QModelIndex() as their parent item. This is discussed in the next
- section.
- \endtable
-
- \section2 Parents of Items
-
- The table-like interface to item data provided by models is ideal when
- using data in a table or list view; the row and column number system maps
- exactly to the way the views display items. However, structures such as
- tree views require the model to expose a more flexible interface to the
- items within. As a result, each item can also be the parent of another
- table of items, in much the same way that a top-level item in a tree view
- can contain another list of items.
-
- When requesting an index for a model item, we must provide some information
- about the item's parent. Outside the model, the only way to refer to an
- item is through a model index, so a parent model index must also be given:
-
- \snippet doc/src/snippets/code/doc_src_model-view-programming.qdoc 3
-
- \table
- \row \i \inlineimage modelview-treemodel.png
- \i \bold{Parents, rows, and columns}
-
- The diagram shows a representation of a tree model in which each item is
- referred to by a parent, a row number, and a column number.
-
- Items "A" and "C" are represented as top-level siblings in the model:
-
- \snippet doc/src/snippets/code/doc_src_model-view-programming.qdoc 4
-
- Item "A" has a number of children. A model index for item "B" is
- obtained with the following code:
-
- \snippet doc/src/snippets/code/doc_src_model-view-programming.qdoc 5
- \endtable
-
- \section2 Item Roles
-
- Items in a model can perform various \e roles for other components,
- allowing different kinds of data to be supplied for different situations.
- For example, Qt::DisplayRole is used to access a string that can be
- displayed as text in a view. Typically, items contain data for a number of
- different roles, and the standard roles are defined by Qt::ItemDataRole.
-
- We can ask the model for the item's data by passing it the model index
- corresponding to the item, and by specifying a role to obtain the type
- of data we want:
-
- \snippet doc/src/snippets/code/doc_src_model-view-programming.qdoc 6
-
- \table
- \row \i \inlineimage modelview-roles.png
- \i \bold{Item roles}
-
- The role indicates to the model which type of data is being referred to.
- Views can display the roles in different ways, so it is important to
- supply appropriate information for each role.
-
- The \l{Creating New Models} section covers some specific uses of roles in
- more detail.
- \endtable
-
- Most common uses for item data are covered by the standard roles defined in
- Qt::ItemDataRole. By supplying appropriate item data for each role, models
- can provide hints to views and delegates about how items should be
- presented to the user. Different kinds of views have the freedom to
- interpret or ignore this information as required. It is also possible to
- define additional roles for application-specific purposes.
-
- \section2 Summary of Concepts
-
- \list
- \o Model indexes give views and delegates information about the location
- of items provided by models in a way that is independent of any
- underlying data structures.
- \o Items are referred to by their row and column numbers, and by the model
- index of their parent items.
- \o Model indexes are constructed by models at the request of other
- components, such as views and delegates.
- \o If a valid model index is specified for the parent item when an index is
- requested using \l{QAbstractItemModel::index()}{index()}, the index
- returned will refer to an item beneath that parent item in the
- model.
- The index obtained refers to a child of that item.
- \o If an invalid model index is specified for the parent item when an index
- is requested using \l{QAbstractItemModel::index()}{index()}, the index
- returned will refer to a top-level item in the model.
- \o The \l{Qt::ItemDataRole}{role} distinguishes between the
- different kinds of data associated with an item.
- \endlist
-
- \section2 Using Model Indexes
-
- To demonstrate how data can be retrieved from a model, using model
- indexes, we set up a QDirModel without a view and display the
- names of files and directories in a widget.
- Although this does not show a normal way of using a model, it demonstrates
- the conventions used by models when dealing with model indexes.
-
- We construct a directory model in the following way:
-
- \snippet doc/src/snippets/simplemodel-use/main.cpp 0
-
- In this case, we set up a default QDirModel, obtain a parent index using
- a specific implementation of \l{QDirModel::index()}{index()} provided by
- that model, and we count the number of rows in the model using the
- \l{QDirModel::rowCount()}{rowCount()} function.
-
- For simplicity, we are only interested in the items in the first column
- of the model. We examine each row in turn, obtaining a model index for
- the first item in each row, and read the data stored for that item
- in the model.
-
- \snippet doc/src/snippets/simplemodel-use/main.cpp 1
-
- To obtain a model index, we specify the row number, column number (zero
- for the first column), and the appropriate model index for the parent
- of all the items that we want.
- The text stored in each item is retrieved using the model's
- \l{QDirModel::data()}{data()} function. We specify the model index and
- the \l{Qt::ItemDataRole}{DisplayRole} to obtain data for the
- item in the form of a string.
-
- \snippet doc/src/snippets/simplemodel-use/main.cpp 2
- \codeline
- \snippet doc/src/snippets/simplemodel-use/main.cpp 3
-
- The above example demonstrates the basic principles used to retrieve
- data from a model:
-
- \list
- \i The dimensions of a model can be found using
- \l{QAbstractItemModel::rowCount()}{rowCount()} and
- \l{QAbstractItemModel::columnCount()}{columnCount()}.
- These functions generally require a parent model index to be
- specified.
- \i Model indexes are used to access items in the model. The row, column,
- and parent model index are needed to specify the item.
- \i To access top-level items in a model, specify a null model index
- as the parent index with \c QModelIndex().
- \i Items contain data for different roles. To obtain the data for a
- particular role, both the model index and the role must be supplied
- to the model.
- \endlist
-
-
- \section1 Further Reading
-
- New models can be created by implementing the standard interface provided
- by QAbstractItemModel. In the \l{Creating New Models} chapter, we will
- demonstrate this by creating a convenient ready-to-use model for holding
- lists of strings.
-*/
-
-/*!
- \page model-view-view.html
- \contentspage model-view-programming.html Contents
- \previouspage Creating New Models
- \nextpage Handling Selections in Item Views
-
- \title View Classes
-
- \tableofcontents
-
- \section1 Concepts
-
- In the model/view architecture, the view obtains items of data from the
- model and presents them to the user. The way that the data is
- presented need not resemble the representation of the data provided by
- the model, and may be \e{completely different} from the underlying data
- structure used to store items of data.
-
- The separation of content and presentation is achieved by the use of a
- standard model interface provided by QAbstractItemModel, a standard view
- interface provided by QAbstractItemView, and the use of model indexes
- that represent items of data in a general way.
- Views typically manage the overall layout of the data obtained from
- models. They may render individual items of data themselves, or use
- \l{Delegate Classes}{delegates} to handle both rendering and editing
- features.
-
- As well as presenting data, views handle navigation between items,
- and some aspects of item selection. The views also implement basic
- user interface features, such as context menus and drag and drop.
- A view can provide default editing facilities for items, or it may
- work with a \l{Delegate Classes}{delegate} to provide a custom
- editor.
-
- A view can be constructed without a model, but a model must be
- provided before it can display useful information. Views keep track of
- the items that the user has selected through the use of
- \l{Handling Selections in Item Views}{selections} which can be maintained
- separately for each view, or shared between multiple views.
-
- Some views, such as QTableView and QTreeView, display headers as well
- as items. These are also implemented by a view class, QHeaderView.
- Headers usually access the same model as the view that contains them.
- They retrieve data from the model using the
- \l{QAbstractItemModel::headerData()} function, and usually display
- header information in the form of a label. New headers can be
- subclassed from the QHeaderView class to provide more specialized
- labels for views.
-
- \section1 Using an Existing View
-
- Qt provides three ready-to-use view classes that present data from
- models in ways that are familiar to most users.
- QListView can display items from a model as a simple list, or in the
- form of a classic icon view. QTreeView displays items from a
- model as a hierarchy of lists, allowing deeply nested structures to be
- represented in a compact way. QTableView presents items from a model
- in the form of a table, much like the layout of a spreadsheet
- application.
-
- \img standard-views.png
-
- The default behavior of the standard views shown above should be
- sufficient for most applications. They provide basic editing
- facilities, and can be customized to suit the needs of more specialized
- user interfaces.
-
- \section2 Using a Model
-
- We take the string list model that \l{Creating New Models}{we created as
- an example model}, set it up with some data, and construct a view to
- display the contents of the model. This can all be performed within a
- single function:
-
- \snippet doc/src/snippets/stringlistmodel/main.cpp 0
-
- Note that the \c StringListModel is declared as a \l QAbstractItemModel.
- This allows us to use the abstract interface to the model, and
- ensures that the code will still work even if we replace the string list
- model with a different model in the future.
-
- The list view provided by \l QListView is sufficient for presenting
- the items in the string list model. We construct the view, and set up
- the model using the following lines of code:
-
- \snippet doc/src/snippets/stringlistmodel/main.cpp 2
- \snippet doc/src/snippets/stringlistmodel/main.cpp 4
-
- The view is shown in the normal way:
-
- \snippet doc/src/snippets/stringlistmodel/main.cpp 5
-
- The view renders the contents of a model, accessing data via the model's
- interface. When the user tries to edit an item, the view uses a default
- delegate to provide an editor widget.
-
- \img stringlistmodel.png
-
- The above image shows how a QListView represents the data in the string
- list model. Since the model is editable, the view automatically allows
- each item in the list to be edited using the default delegate.
-
- \section2 Using Multiple Views onto the Same Model
-
- Providing multiple views onto the same model is simply a matter of
- setting the same model for each view. In the following code we create
- two table views, each using the same simple table model which we have
- created for this example:
-
- \snippet doc/src/snippets/sharedtablemodel/main.cpp 0
- \codeline
- \snippet doc/src/snippets/sharedtablemodel/main.cpp 1
-
- The use of signals and slots in the model/view architecture means that
- changes to the model can be propagated to all the attached views,
- ensuring that we can always access the same data regardless of the
- view being used.
-
- \img sharedmodel-tableviews.png
-
- The above image shows two different views onto the same model, each
- containing a number of selected items. Although the data from the model
- is shown consistently across view, each view maintains its own internal
- selection model. This can be useful in certain situations but, for
- many applications, a shared selection model is desirable.
-
- \section1 Handling Selections of Items
-
- The mechanism for handling selections of items within views is provided
- by the \l QItemSelectionModel class. All of the standard views construct
- their own selection models by default, and interact with them in the
- normal way. The selection model being used by a view can be obtained
- through the \l{QAbstractItemView::selectionModel()}{selectionModel()}
- function, and a replacement selection model can be specified with
- \l{QAbstractItemView::setSelectionModel()}{setSelectionModel()}.
- The ability to control the selection model used by a view is useful
- when we want to provide multiple consistent views onto the same model
- data.
-
- Generally, unless you are subclassing a model or view, you will not
- need to manipulate the contents of selections directly. However, the
- interface to the selection model can be accessed, if required, and
- this is explored in the chapter on
- \l{Handling Selections in Item Views}.
-
- \section2 Sharing Selections Between Views
-
- Although it is convenient that the view classes provide their own
- selection models by default, when we use more than one view onto the
- same model it is often desirable that both the model's data and the
- user's selection are shown consistently in all views.
- Since the view classes allow their internal selection models to be
- replaced, we can achieve a unified selection between views with the
- following line:
-
- \snippet doc/src/snippets/sharedtablemodel/main.cpp 2
-
- The second view is given the selection model for the first view.
- Both views now operate on the same selection model, keeping both
- the data and the selected items synchronized.
-
- \img sharedselection-tableviews.png
-
- In the example shown above, two views of the same type were used to
- display the same model's data. However, if two different types of view
- were used, the selected items may be represented very differently in
- each view; for example, a contiguous selection in a table view can be
- represented as a fragmented set of highlighted items in a tree view.
-
-*/
-
-/*!
- \page model-view-delegate.html
- \contentspage model-view-programming.html Contents
- \previouspage Handling Selections in Item Views
- \nextpage Item View Convenience Classes
-
- \title Delegate Classes
-
- \tableofcontents
-
- \section1 Concepts
-
- Unlike the Model-View-Controller pattern, the model/view design does not
- include a completely separate component for managing interaction with
- the user. Generally, the view is responsible for the presentation of
- model data to the user, and for processing user input. To allow some
- flexibility in the way this input is obtained, the interaction is
- performed by delegates. These components provide input capabilities
- and are also responsible for rendering individual items in some views.
- The standard interface for controlling delegates is defined in the
- \l QAbstractItemDelegate class.
-
- Delegates are expected to be able to render their contents themselves
- by implementing the \l{QItemDelegate::paint()}{paint()}
- and \l{QItemDelegate::sizeHint()}{sizeHint()} functions.
- However, simple widget-based delegates can subclass \l QItemDelegate
- instead of \l QAbstractItemDelegate, and take advantage of the default
- implementations of these functions.
-
- Editors for delegates can be implemented either by using widgets to manage
- the editing process or by handling events directly.
- The first approach is covered later in this chapter, and it is also
- shown in the \l{Spin Box Delegate Example}{Spin Box Delegate} example.
-
- The \l{Pixelator Example}{Pixelator} example shows how to create a
- custom delegate that performs specialized rendering for a table view.
-
- \section1 Using an Existing Delegate
-
- The standard views provided with Qt use instances of \l QItemDelegate
- to provide editing facilities. This default implementation of the
- delegate interface renders items in the usual style for each of the
- standard views: \l QListView, \l QTableView, and \l QTreeView.
-
- All the standard roles are handled by the default delegate used by
- the standard views. The way these are interpreted is described in the
- QItemDelegate documentation.
-
- The delegate used by a view is returned by the
- \l{QAbstractItemView::itemDelegate()}{itemDelegate()} function.
- The \l{QAbstractItemView::setItemDelegate()}{setItemDelegate()} function
- allows you to install a custom delegate for a standard view, and it is
- necessary to use this function when setting the delegate for a custom
- view.
-
- \section1 A Simple Delegate
-
- The delegate implemented here uses a \l QSpinBox to provide editing
- facilities, and is mainly intended for use with models that display
- integers. Although we set up a custom integer-based table model for
- this purpose, we could easily have used \l QStandardItemModel instead
- since the custom delegate will control data entry. We construct a
- table view to display the contents of the model, and this will use
- the custom delegate for editing.
-
- \img spinboxdelegate-example.png
-
- We subclass the delegate from \l QItemDelegate because we do not want
- to write custom display functions. However, we must still provide
- functions to manage the editor widget:
-
- \snippet examples/itemviews/spinboxdelegate/delegate.h 0
-
- Note that no editor widgets are set up when the delegate is
- constructed. We only construct an editor widget when it is needed.
-
- \section2 Providing an Editor
-
- In this example, when the table view needs to provide an editor, it
- asks the delegate to provide an editor widget that is appropriate
- for the item being modified. The
- \l{QAbstractItemDelegate::createEditor()}{createEditor()} function is
- supplied with everything that the delegate needs to be able to set up
- a suitable widget:
-
- \snippet examples/itemviews/spinboxdelegate/delegate.cpp 1
-
- Note that we do not need to keep a pointer to the editor widget because
- the view takes responsibility for destroying it when it is no longer
- needed.
-
- We install the delegate's default event filter on the editor to ensure
- that it provides the standard editing shortcuts that users expect.
- Additional shortcuts can be added to the editor to allow more
- sophisticated behavior; these are discussed in the section on
- \l{#EditingHints}{Editing Hints}.
-
- The view ensures that the editor's data and geometry are set
- correctly by calling functions that we define later for these purposes.
- We can create different editors depending on the model index supplied
- by the view. For example, if we have a column of integers and a column
- of strings we could return either a \c QSpinBox or a \c QLineEdit,
- depending on which column is being edited.
-
- The delegate must provide a function to copy model data into the
- editor. In this example, we read the data stored in the
- \l{Qt::ItemDataRole}{display role}, and set the value in the
- spin box accordingly.
-
- \snippet examples/itemviews/spinboxdelegate/delegate.cpp 2
-
- In this example, we know that the editor widget is a spin box, but we
- could have provided different editors for different types of data in
- the model, in which case we would need to cast the widget to the
- appropriate type before accessing its member functions.
-
- \section2 Submitting Data to the Model
-
- When the user has finished editing the value in the spin box, the view
- asks the delegate to store the edited value in the model by calling the
- \l{QAbstractItemDelegate::setModelData()}{setModelData()} function.
-
- \snippet examples/itemviews/spinboxdelegate/delegate.cpp 3
-
- Since the view manages the editor widgets for the delegate, we only
- need to update the model with the contents of the editor supplied.
- In this case, we ensure that the spin box is up-to-date, and update
- the model with the value it contains using the index specified.
-
- The standard \l QItemDelegate class informs the view when it has
- finished editing by emitting the
- \l{QAbstractItemDelegate::closeEditor()}{closeEditor()} signal.
- The view ensures that the editor widget is closed and destroyed. In
- this example, we only provide simple editing facilities, so we need
- never emit this signal.
-
- All the operations on data are performed through the interface
- provided by \l QAbstractItemModel. This makes the delegate mostly
- independent from the type of data it manipulates, but some
- assumptions must be made in order to use certain types of
- editor widgets. In this example, we have assumed that the model
- always contains integer values, but we can still use this
- delegate with different kinds of models because \l{QVariant}
- provides sensible default values for unexpected data.
-
- \section2 Updating the Editor's Geometry
-
- It is the responsibility of the delegate to manage the editor's
- geometry. The geometry must be set when the editor is created, and
- when the item's size or position in the view is changed. Fortunately,
- the view provides all the necessary geometry information inside a
- \l{QStyleOptionViewItem}{view option} object.
-
- \snippet examples/itemviews/spinboxdelegate/delegate.cpp 4
-
- In this case, we just use the geometry information provided by the
- view option in the item rectangle. A delegate that renders items with
- several elements would not use the item rectangle directly. It would
- position the editor in relation to the other elements in the item.
-
- \target EditingHints
- \section2 Editing Hints
-
- After editing, delegates should provide hints to the other components
- about the result of the editing process, and provide hints that will
- assist any subsequent editing operations. This is achieved by
- emitting the \l{QAbstractItemDelegate::closeEditor()}{closeEditor()}
- signal with a suitable hint. This is taken care of by the default
- QItemDelegate event filter which we installed on the spin box when
- it was constructed.
-
- The behavior of the spin box could be adjusted to make it more user
- friendly. In the default event filter supplied by QItemDelegate, if
- the user hits \key Return to confirm their choice in the spin box,
- the delegate commits the value to the model and closes the spin box.
- We can change this behavior by installing our own event filter on the
- spin box, and provide editing hints that suit our needs; for example,
- we might emit \l{QAbstractItemDelegate::closeEditor()}{closeEditor()}
- with the \l{QAbstractItemDelegate::EndEditHint}{EditNextItem} hint to
- automatically start editing the next item in the view.
-
- Another approach that does not require the use of an event
- filter is to provide our own editor widget, perhaps subclassing
- QSpinBox for convenience. This alternative approach would give us
- more control over how the editor widget behaves at the cost of
- writing additional code. It is usually easier to install an event
- filter in the delegate if you need to customize the behavior of
- a standard Qt editor widget.
-
- Delegates do not have to emit these hints, but those that do not will
- be less integrated into applications, and will be less usable than
- those that emit hints to support common editing actions.
-*/
-
-/*!
- \page model-view-selection.html
- \contentspage model-view-programming.html Contents
- \previouspage View Classes
- \nextpage Delegate Classes
-
- \title Handling Selections in Item Views
-
- \tableofcontents
-
- \section1 Concepts
-
- The selection model used in the item view classes offers many improvements
- over the selection model used in Qt 3. It provides a more general
- description of selections based on the facilities of the model/view
- architecture. Although the standard classes for manipulating selections are
- sufficient for the item views provided, the selection model allows you to
- create specialized selection models to suit the requirements for your own
- item models and views.
-
- Information about the items selected in a view is stored in an instance of
- the \l QItemSelectionModel class. This maintains model indexes for items in
- a single model, and is independent of any views. Since there can be many
- views onto a model, it is possible to share selections between views,
- allowing applications to show multiple views in a consistent way.
-
- Selections are made up of \e{selection ranges}. These efficiently maintain
- information about large selections of items by recording only the starting
- and ending model indexes for each range of selected items. Non-contiguous
- selections of items are constructed by using more than one selection range
- to describe the selection.
-
- Selections are applied to a collection of model indexes held by a selection
- model. The most recent selection of items applied is known as the
- \e{current selection}. The effects of this selection can be modified even
- after its application through the use of certain types of selection
- commands. These are discussed later in this section.
-
-
- \section2 Current Item and Selected Items
-
- In a view, there is always a current item and a selected item - two
- independent states. An item can be the current item and selected at the
- same time. The view is responsible for ensuring that there is always a
- current item as keyboard navigation, for example, requires a current item.
-
- The table below highlights the differences between current item and
- selected items.
-
- \table
- \header
- \o Current Item
- \o Selected Items
-
- \row
- \o There can only be one current item.
- \o There can be multiple selected items.
- \row
- \o The current item will be changed with key navigation or mouse
- button clicks.
- \o The selected state of items is set or unset, depending on several
- pre-defined modes - e.g., single selection, multiple selection,
- etc. - when the user interacts with the items.
- \row
- \o The current item will be edited if the edit key, \gui F2, is
- pressed or the item is double-clicked (provided that editing is
- enabled).
- \o The current item can be used together with an anchor to specify a
- range that should be selected or deselected (or a combination of
- the two).
- \row
- \o The current item is indicated by the focus rectangle.
- \o The selected items are indicated with the selection rectangle.
- \endtable
-
- When manipulating selections, it is often helpful to think of
- \l QItemSelectionModel as a record of the selection state of all the items
- in an item model. Once a selection model is set up, collections of items
- can be selected, deselected, or their selection states can be toggled
- without the need to know which items are already selected. The indexes of
- all selected items can be retrieved at any time, and other components can
- be informed of changes to the selection model via the signals and slots
- mechanism.
-
-
- \section1 Using a Selection Model
-
- The standard view classes provide default selection models that can
- be used in most applications. A selection model belonging to one view
- can be obtained using the view's
- \l{QAbstractItemView::selectionModel()}{selectionModel()} function,
- and shared between many views with
- \l{QAbstractItemView::setSelectionModel()}{setSelectionModel()},
- so the construction of new selection models is generally not required.
-
- A selection is created by specifying a model, and a pair of model
- indexes to a \l QItemSelection. This uses the indexes to refer to items
- in the given model, and interprets them as the top-left and bottom-right
- items in a block of selected items.
- To apply the selection to items in a model requires the selection to be
- submitted to a selection model; this can be achieved in a number of ways,
- each having a different effect on the selections already present in the
- selection model.
-
-
- \section2 Selecting Items
-
- To demonstrate some of the principal features of selections, we construct
- an instance of a custom table model with 32 items in total, and open a
- table view onto its data:
-
- \snippet doc/src/snippets/itemselection/main.cpp 0
-
- The table view's default selection model is retrieved for later use.
- We do not modify any items in the model, but instead select a few
- items that the view will display at the top-left of the table. To do
- this, we need to retrieve the model indexes corresponding to the
- top-left and bottom-right items in the region to be selected:
-
- \snippet doc/src/snippets/itemselection/main.cpp 1
-
- To select these items in the model, and see the corresponding change
- in the table view, we need to construct a selection object then apply
- it to the selection model:
-
- \snippet doc/src/snippets/itemselection/main.cpp 2
-
- The selection is applied to the selection model using a command
- defined by a combination of
- \l{QItemSelectionModel::SelectionFlag}{selection flags}.
- In this case, the flags used cause the items recorded in the
- selection object to be included in the selection model, regardless
- of their previous state. The resulting selection is shown by the view.
-
- \img selected-items1.png
-
- The selection of items can be modified using various operations that
- are defined by the selection flags. The selection that results from
- these operations may have a complex structure, but will be represented
- efficiently by the selection model. The use of different selection
- flags to manipulate the selected items is described when we examine
- how to update a selection.
-
- \section2 Reading the Selection State
-
- The model indexes stored in the selection model can be read using
- the \l{QItemSelectionModel::selectedIndexes()}{selectedIndexes()}
- function. This returns an unsorted list of model indexes that we can
- iterate over as long as we know which model they are for:
-
- \snippet doc/src/snippets/reading-selections/window.cpp 0
-
- The above code uses Qt's convenient \l{Generic Containers}{foreach
- keyword} to iterate over, and modify, the items corresponding to the
- indexes returned by the selection model.
-
- The selection model emits signals to indicate changes in the
- selection. These notify other components about changes to both the
- selection as a whole and the currently focused item in the item
- model. We can connect the
- \l{QItemSelectionModel::selectionChanged()}{selectionChanged()}
- signal to a slot, and examine the items in the model that are selected or
- deselected when the selection changes. The slot is called with two
- \l{QItemSelection} objects: one contains a list of indexes that
- correspond to newly selected items; the other contains indexes that
- correspond to newly deselected items.
-
- In the following code, we provide a slot that receives the
- \l{QItemSelectionModel::selectionChanged()}{selectionChanged()}
- signal, fills in the selected items with
- a string, and clears the contents of the deselected items.
-
- \snippet doc/src/snippets/updating-selections/window.cpp 0
- \snippet doc/src/snippets/updating-selections/window.cpp 1
- \codeline
- \snippet doc/src/snippets/updating-selections/window.cpp 2
-
- We can keep track of the currently focused item by connecting the
- \l{QItemSelectionModel::currentChanged()}{currentChanged()} signal
- to a slot that is called with two model indexes. These correspond to
- the previously focused item, and the currently focused item.
-
- In the following code, we provide a slot that receives the
- \l{QItemSelectionModel::currentChanged()}{currentChanged()} signal,
- and uses the information provided to update the status bar of a
- \l QMainWindow:
-
- \snippet doc/src/snippets/updating-selections/window.cpp 3
-
- Monitoring selections made by the user is straightforward with these
- signals, but we can also update the selection model directly.
-
- \section2 Updating a Selection
-
- Selection commands are provided by a combination of selection flags,
- defined by \l{QItemSelectionModel::SelectionFlag}.
- Each selection flag tells the selection model how to update its
- internal record of selected items when either of the
- \l{QItemSelection::select()}{select()} functions are called.
- The most commonly used flag is the
- \l{QItemSelectionModel::SelectionFlag}{Select} flag
- which instructs the selection model to record the specified items as
- being selected. The
- \l{QItemSelectionModel::SelectionFlag}{Toggle} flag causes the
- selection model to invert the state of the specified items,
- selecting any deselected items given, and deselecting any currently
- selected items. The \l{QItemSelectionModel::SelectionFlag}{Deselect}
- flag deselects all the specified items.
-
- Individual items in the selection model are updated by creating a
- selection of items, and applying them to the selection model. In the
- following code, we apply a second selection of items to the table
- model shown above, using the
- \l{QItemSelectionModel::SelectionFlag}{Toggle} command to invert the
- selection state of the items given.
-
- \snippet doc/src/snippets/itemselection/main.cpp 3
-
- The results of this operation are displayed in the table view,
- providing a convenient way of visualizing what we have achieved:
-
- \img selected-items2.png
-
- By default, the selection commands only operate on the individual
- items specified by the model indexes. However, the flag used to
- describe the selection command can be combined with additional flags
- to change entire rows and columns. For example if you call
- \l{QItemSelectionModel::select()}{select()} with only one index, but
- with a command that is a combination of
- \l{QItemSelectionModel::SelectionFlag}{Select} and
- \l{QItemSelectionModel::SelectionFlag}{Rows}, the
- entire row containing the item referred to will be selected.
- The following code demonstrates the use of the
- \l{QItemSelectionModel::SelectionFlag}{Rows} and
- \l{QItemSelectionModel::SelectionFlag}{Columns} flags:
-
- \snippet doc/src/snippets/itemselection/main.cpp 4
-
- Although only four indexes are supplied to the selection model, the
- use of the
- \l{QItemSelectionModel::SelectionFlag}{Columns} and
- \l{QItemSelectionModel::SelectionFlag}{Rows} selection flags means
- that two columns and two rows are selected. The following image shows
- the result of these two selections:
-
- \img selected-items3.png
-
- The commands performed on the example model have all involved
- accumulating a selection of items in the model. It is also possible
- to clear the selection, or to replace the current selection with
- a new one.
-
- To replace the current selection with a new selection, combine
- the other selection flags with the
- \l{QItemSelectionModel::SelectionFlag}{Current} flag. A command using
- this flag instructs the selection model to replace its current collection
- of model indexes with those specified in a call to
- \l{QItemSelectionModel::select()}{select()}.
- To clear all selections before you start adding new ones,
- combine the other selection flags with the
- \l{QItemSelectionModel::SelectionFlag}{Clear} flag. This
- has the effect of resetting the selection model's collection of model
- indexes.
-
- \section2 Selecting All Items in a Model
-
- To select all items in a model, it is necessary to create a
- selection for each level of the model that covers all items in that
- level. We do this by retrieving the indexes corresponding to the
- top-left and bottom-right items with a given parent index:
-
- \snippet doc/src/snippets/reading-selections/window.cpp 2
-
- A selection is constructed with these indexes and the model. The
- corresponding items are then selected in the selection model:
-
- \snippet doc/src/snippets/reading-selections/window.cpp 3
-
- This needs to be performed for all levels in the model.
- For top-level items, we would define the parent index in the usual way:
-
- \snippet doc/src/snippets/reading-selections/window.cpp 1
-
- For hierarchical models, the
- \l{QAbstractItemModel::hasChildren()}{hasChildren()} function is used to
- determine whether any given item is the parent of another level of
- items.
-*/
-
-/*!
- \page model-view-creating-models.html
- \contentspage model-view-programming.html Contents
- \previouspage Model Classes
- \nextpage View Classes
-
- \title Creating New Models
-
- \tableofcontents
-
- \section1 Introduction
-
- The separation of functionality between the model/view components allows
- models to be created that can take advantage of existing views. This
- approach lets us present data from a variety of sources using standard
- graphical user interface components, such as QListView, QTableView, and
- QTreeView.
-
- The QAbstractItemModel class provides an interface that is flexible
- enough to support data sources that arrange information in hierarchical
- structures, allowing for the possibility that data will be inserted,
- removed, modified, or sorted in some way. It also provides support for
- drag and drop operations.
-
- The QAbstractListModel and QAbstractTableModel classes provide support
- for interfaces to simpler non-hierarchical data structures, and are
- easier to use as a starting point for simple list and table models.
-
- In this chapter, we create a simple read-only model to explore
- the basic principles of the model/view architecture. Later in this
- chapter, we will adapt this simple model so that items can be modified
- by the user.
-
- For an example of a more complex model, see the
- \l{itemviews/simpletreemodel}{Simple Tree Model} example.
-
- The requirements of QAbstractItemModel subclasses is described in more
- detail in the \l{Model Subclassing Reference} document.
-
- \section1 Designing a Model
-
- When creating a new model for an existing data structure, it is important
- to consider which type of model should be used to provide an interface
- onto the data. If the data structure can be represented as a
- list or table of items, you can subclass QAbstractListModel or
- QAbstractTableModel since these classes provide suitable default
- implementations for many functions.
-
- However, if the underlying data structure can only be represented by a
- hierarchical tree structure, it is necessary to subclass
- QAbstractItemModel. This approach is taken in the
- \l{itemviews/simpletreemodel}{Simple Tree Model} example.
-
- In this chapter, we will implement a simple model based on a list of
- strings, so the QAbstractListModel provides an ideal base class on
- which to build.
-
- Whatever form the underlying data structure takes, it is
- usually a good idea to supplement the standard QAbstractItemModel API
- in specialized models with one that allows more natural access to the
- underlying data structure. This makes it easier to populate the model
- with data, yet still enables other general model/view components to
- interact with it using the standard API. The model described below
- provides a custom constructor for just this purpose.
-
- \section1 A Read-Only Example Model
-
- The model implemented here is a simple, non-hierarchical, read-only data
- model based on the standard QStringListModel class. It has a \l QStringList
- as its internal data source, and implements only what is needed to make a
- functioning model. To make the implementation easier, we subclass
- \l QAbstractListModel because it defines sensible default behavior for list
- models, and it exposes a simpler interface than the \l QAbstractItemModel
- class.
-
- When implementing a model it is important to remember that
- \l QAbstractItemModel does not store any data itself, it merely
- presents an interface that the views use to access the data.
- For a minimal read-only model it is only necessary to implement a few
- functions as there are default implementations for most of the
- interface. The class declaration is as follows:
-
-
- \snippet doc/src/snippets/stringlistmodel/model.h 0
- \snippet doc/src/snippets/stringlistmodel/model.h 1
- \codeline
- \snippet doc/src/snippets/stringlistmodel/model.h 5
-
- Apart from the model's constructor, we only need to implement two
- functions: \l{QAbstractItemModel::rowCount()}{rowCount()} returns the
- number of rows in the model and \l{QAbstractItemModel::data()}{data()}
- returns an item of data corresponding to a specified model index.
-
- Well behaved models also implement
- \l{QAbstractItemModel::headerData()}{headerData()} to give tree and
- table views something to display in their headers.
-
- Note that this is a non-hierarchical model, so we don't have to worry
- about the parent-child relationships. If our model was hierarchical, we
- would also have to implement the
- \l{QAbstractItemModel::index()}{index()} and
- \l{QAbstractItemModel::parent()}{parent()} functions.
-
- The list of strings is stored internally in the \c stringList private
- member variable.
-
- \section2 Dimensions of The Model
-
- We want the number of rows in the model to be the same as the number of
- strings in the string list. We implement the
- \l{QAbstractItemModel::rowCount()}{rowCount()} function with this in
- mind:
-
- \snippet doc/src/snippets/stringlistmodel/model.cpp 0
-
- Since the model is non-hierarchical, we can safely ignore the model index
- corresponding to the parent item. By default, models derived from
- QAbstractListModel only contain one column, so we do not need to
- reimplement the \l{QAbstractItemModel::columnCount()}{columnCount()}
- function.
-
- \section2 Model Headers and Data
-
- For items in the view, we want to return the strings in the string list.
- The \l{QAbstractItemModel::data()}{data()} function is responsible for
- returning the item of data that corresponds to the index argument:
-
- \snippet doc/src/snippets/stringlistmodel/model.cpp 1-data-read-only
-
- We only return a valid QVariant if the model index supplied is valid,
- the row number is within the range of items in the string list, and the
- requested role is one that we support.
-
- Some views, such as QTreeView and QTableView, are able to display headers
- along with the item data. If our model is displayed in a view with headers,
- we want the headers to show the row and column numbers. We can provide
- information about the headers by subclassing the
- \l{QAbstractItemModel::headerData()}{headerData()} function:
-
- \snippet doc/src/snippets/stringlistmodel/model.cpp 2
-
- Again, we return a valid QVariant only if the role is one that we support.
- The orientation of the header is also taken into account when deciding the
- exact data to return.
-
- Not all views display headers with the item data, and those that do may
- be configured to hide them. Nonetheless, it is recommended that you
- implement the \l{QAbstractItemModel::headerData()}{headerData()} function
- to provide relevant information about the data provided by the model.
-
- An item can have several roles, giving out different data depending on the
- role specified. The items in our model only have one role,
- \l{Qt::ItemDataRole}{DisplayRole}, so we return the data
- for items irrespective of the role specified.
- However, we could reuse the data we provide for the
- \l{Qt::ItemDataRole}{DisplayRole} in
- other roles, such as the
- \l{Qt::ItemDataRole}{ToolTipRole} that views can use to
- display information about items in a tooltip.
-
- \section1 An Editable Model
-
- The read-only model shows how simple choices could be presented to the
- user but, for many applications, an editable list model is much more
- useful. We can modify the read-only model to make the items editable
- by changing the data() function we implemented for read-only, and
- by implementing two extra functions:
- \l{QAbstractItemModel::flags()}{flags()} and
- \l{QAbstractItemModel::setData()}{setData()}.
- The following function declarations are added to the class definition:
-
- \snippet doc/src/snippets/stringlistmodel/model.h 2
- \snippet doc/src/snippets/stringlistmodel/model.h 3
-
- \section2 Making the Model Editable
-
- A delegate checks whether an item is editable before creating an
- editor. The model must let the delegate know that its items are
- editable. We do this by returning the correct flags for each item in
- the model; in this case, we enable all items and make them both
- selectable and editable:
-
- \snippet doc/src/snippets/stringlistmodel/model.cpp 3
-
- Note that we do not have to know how the delegate performs the actual
- editing process. We only have to provide a way for the delegate to set the
- data in the model. This is achieved through the
- \l{QAbstractItemModel::setData()}{setData()} function:
-
- \snippet doc/src/snippets/stringlistmodel/model.cpp 4
- \snippet doc/src/snippets/stringlistmodel/model.cpp 5
-
- In this model, the item in the string list that corresponds to the
- model index is replaced by the value provided. However, before we
- can modify the string list, we must make sure that the index is
- valid, the item is of the correct type, and that the role is
- supported. By convention, we insist that the role is the
- \l{Qt::ItemDataRole}{EditRole} since this is the role used by the
- standard item delegate. For boolean values, however, you can use
- Qt::CheckStateRole and set the Qt::ItemIsUserCheckable flag; a
- checkbox will then be used for editing the value. The underlying
- data in this model is the same for all roles, so this detail just
- makes it easier to integrate the model with standard components.
-
- When the data has been set, the model must let the views know that some
- data has changed. This is done by emitting the
- \l{QAbstractItemModel::dataChanged()}{dataChanged()} signal. Since only
- one item of data has changed, the range of items specified in the signal
- is limited to just one model index.
-
- Also the data() function needs to be changed to add the Qt::EditRole test:
-
- \snippet doc/src/snippets/stringlistmodel/model.cpp 1
-
- \section2 Inserting and Removing Rows
-
- It is possible to change the number of rows and columns in a model. In the
- string list model it only makes sense to change the number of rows, so we
- only reimplement the functions for inserting and removing rows. These are
- declared in the class definition:
-
- \snippet doc/src/snippets/stringlistmodel/model.h 4
-
- Since rows in this model correspond to strings in a list, the
- \c insertRows() function inserts a number of empty strings into the string
- list before the specified position. The number of strings inserted is
- equivalent to the number of rows specified.
-
- The parent index is normally used to determine where in the model the
- rows should be added. In this case, we only have a single top-level list
- of strings, so we just insert empty strings into that list.
-
- \snippet doc/src/snippets/stringlistmodel/model.cpp 6
- \snippet doc/src/snippets/stringlistmodel/model.cpp 7
-
- The model first calls the
- \l{QAbstractItemModel::beginInsertRows()}{beginInsertRows()} function to
- inform other components that the number of rows is about to change. The
- function specifies the row numbers of the first and last new rows to be
- inserted, and the model index for their parent item. After changing the
- string list, it calls
- \l{QAbstractItemModel::endInsertRows()}{endInsertRows()} to complete the
- operation and inform other components that the dimensions of the model
- have changed, returning true to indicate success.
-
- The function to remove rows from the model is also simple to write.
- The rows to be removed from the model are specified by the position and
- the number of rows given.
- We ignore the parent index to simplify our implementation, and just
- remove the corresponding items from the string list.
-
- \snippet doc/src/snippets/stringlistmodel/model.cpp 8
- \snippet doc/src/snippets/stringlistmodel/model.cpp 9
-
- The \l{QAbstractItemModel::beginRemoveRows()}{beginRemoveRows()} function
- is always called before any underlying data is removed, and specifies the
- first and last rows to be removed. This allows other components to access
- the data before it becomes unavailable.
- After the rows have been removed, the model emits
- \l{QAbstractItemModel::endRemoveRows()}{endRemoveRows()} to finish the
- operation and let other components know that the dimensions of the model
- have changed.
-
- \section1 Next Steps
-
- We can display the data provided by this model, or any other model, using
- the \l QListView class to present the model's items in the form of a vertical
- list.
- For the string list model, this view also provides a default editor so that
- the items can be manipulated. We examine the possibilities made available by
- the standard view classes in the chapter on \l{View Classes}.
-
- The \l{Model Subclassing Reference} document discusses the requirements of
- QAbstractItemModel subclasses in more detail, and provides a guide to the
- virtual functions that must be implemented to enable various features in
- different types of models.
-*/
-
-/*!
- \page model-view-convenience.html
- \contentspage model-view-programming.html Contents
- \previouspage Delegate Classes
- \nextpage Using Drag and Drop with Item Views
-
- \title Item View Convenience Classes
-
- \tableofcontents
-
- \section1 Overview
-
- Alongside the model/view classes, Qt 4 also includes standard widgets to
- provide classic item-based container widgets. These behave in a similar
- way to the item view classes in Qt 3, but have been rewritten to use the
- underlying model/view framework for performance and maintainability. The
- old item view classes are still available in the compatibility library
- (see the \l{porting4.html}{Porting Guide} for more information).
-
- The item-based widgets have been given names which reflect their uses:
- \c QListWidget provides a list of items, \c QTreeWidget displays a
- multi-level tree structure, and \c QTableWidget provides a table of cell
- items. Each class inherits the behavior of the \c QAbstractItemView
- class which implements common behavior for item selection and header
- management.
-
- \section1 List Widgets
-
- Single level lists of items are typically displayed using a \c QListWidget
- and a number of \c{QListWidgetItem}s. A list widget is constructed in the
- same way as any other widget:
-
- \snippet doc/src/snippets/qlistwidget-using/mainwindow.cpp 0
-
- List items can be added directly to the list widget when they are
- constructed:
-
- \snippet doc/src/snippets/qlistwidget-using/mainwindow.cpp 3
-
- They can also be constructed without a parent list widget and added to
- a list at some later time:
-
- \snippet doc/src/snippets/qlistwidget-using/mainwindow.cpp 6
- \snippet doc/src/snippets/qlistwidget-using/mainwindow.cpp 7
-
- Each item in a list can display a text label and an icon. The colors
- and font used to render the text can be changed to provide a customized
- appearance for items. Tooltips, status tips, and "What's
- This?" help are all easily configured to ensure that the list is properly
- integrated into the application.
-
- \snippet doc/src/snippets/qlistwidget-using/mainwindow.cpp 8
-
- By default, items in a list are presented in the order of their creation.
- Lists of items can be sorted according to the criteria given in
- \l{Qt::SortOrder} to produce a list of items that is sorted in forward or
- reverse alphabetical order:
-
- \snippet doc/src/snippets/qlistwidget-using/mainwindow.cpp 4
- \snippet doc/src/snippets/qlistwidget-using/mainwindow.cpp 5
-
-
- \section1 Tree Widgets
-
- Trees or hierarchical lists of items are provided by the \c QTreeWidget
- and \c QTreeWidgetItem classes. Each item in the tree widget can have
- child items of its own, and can display a number of columns of
- information. Tree widgets are created just like any other widget:
-
- \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 0
-
- Before items can be added to the tree widget, the number of columns must
- be set. For example, we could define two columns, and create a header
- to provide labels at the top of each column:
-
- \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 1
- \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 2
-
- The easiest way to set up the labels for each section is to supply a string
- list. For more sophisticated headers, you can construct a tree item,
- decorate it as you wish, and use that as the tree widget's header.
-
- Top-level items in the tree widget are constructed with the tree widget as
- their parent widget. They can be inserted in an arbitrary order, or you
- can ensure that they are listed in a particular order by specifying the
- previous item when constructing each item:
-
- \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 3
- \codeline
- \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 4
-
- Tree widgets deal with top-level items slightly differently to other
- items from deeper within the tree. Items can be removed from the top
- level of the tree by calling the tree widget's
- \l{QTreeWidget::takeTopLevelItem()}{takeTopLevelItem()} function, but
- items from lower levels are removed by calling their parent item's
- \l{QTreeWidgetItem::takeChild()}{takeChild()} function.
- Items are inserted in the top level of the tree with the
- \l{QTreeWidget::insertTopLevelItem()}{insertTopLevelItem()} function.
- At lower levels in the tree, the parent item's
- \l{QTreeWidgetItem::insertChild()}{insertChild()} function is used.
-
- It is easy to move items around between the top level and lower levels
- in the tree. We just need to check whether the items are top-level items
- or not, and this information is supplied by each item's \c parent()
- function. For example, we can remove the current item in the tree widget
- regardless of its location:
-
- \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 10
- \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 11
-
- Inserting the item somewhere else in the tree widget follows the same
- pattern:
-
- \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 8
- \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 9
-
-
- \section1 Table Widgets
-
- Tables of items similar to those found in spreadsheet applications
- are constructed with the \c QTableWidget and \c QTableWidgetItem. These
- provide a scrolling table widget with headers and items to use within it.
-
- Tables can be created with a set number of rows and columns, or these
- can be added to an unsized table as they are needed.
-
- \snippet doc/src/snippets/qtablewidget-using/mainwindow.h 0
- \snippet doc/src/snippets/qtablewidget-using/mainwindow.cpp 0
-
- Items are constructed outside the table before being added to the table
- at the required location:
-
- \snippet doc/src/snippets/qtablewidget-using/mainwindow.cpp 3
-
- Horizontal and vertical headers can be added to the table by constructing
- items outside the table and using them as headers:
-
- \snippet doc/src/snippets/qtablewidget-using/mainwindow.cpp 1
-
- Note that the rows and columns in the table begin at zero.
-
- \section1 Common Features
-
- There are a number of item-based features common to each of the
- convenience classes that are available through the same interfaces
- in each class. We present these in the following sections with some
- examples for different widgets.
- Look at the list of \l{Model/View Classes} for each of the widgets
- for more details about the use of each function used.
-
- \section2 Hidden Items
-
- It is sometimes useful to be able to hide items in an item view widget
- rather than remove them. Items for all of the above widgets can be
- hidden and later shown again. You can determine whether an item is hidden
- by calling the isItemHidden() function, and items can be hidden with
- \c setItemHidden().
-
- Since this operation is item-based, the same function is available for
- all three convenience classes.
-
- \section2 Selections
-
- The way items are selected is controlled by the widget's selection mode
- (\l{QAbstractItemView::SelectionMode}).
- This property controls whether the user can select one or many items and,
- in many-item selections, whether the selection must be a continuous range
- of items. The selection mode works in the same way for all of the
- above widgets.
-
- \table
- \row
- \i \img selection-single.png
- \i \bold{Single item selections:}
- Where the user needs to choose a single item from a widget, the
- default \c SingleSelection mode is most suitable. In this mode, the
- current item and the selected item are the same.
-
- \row
- \i \img selection-multi.png
- \i \bold{Multi-item selections:}
- In this mode, the user can toggle the selection state of any item in the
- widget without changing the existing selection, much like the way
- non-exclusive checkboxes can be toggled independently.
-
- \row
- \i \img selection-extended.png
- \i \bold{Extended selections:}
- Widgets that often require many adjacent items to be selected, such
- as those found in spreadsheets, require the \c ExtendedSelection mode.
- In this mode, continuous ranges of items in the widget can be selected
- with both the mouse and the keyboard.
- Complex selections, involving many items that are not adjacent to other
- selected items in the widget, can also be created if modifier keys are
- used.
-
- If the user selects an item without using a modifier key, the existing
- selection is cleared.
- \endtable
-
- The selected items in a widget are read using the \c selectedItems()
- function, providing a list of relevant items that can be iterated over.
- For example, we can find the sum of all the numeric values within a
- list of selected items with the following code:
-
- \snippet doc/src/snippets/qtablewidget-using/mainwindow.cpp 4
-
- Note that for the single selection mode, the current item will be in
- the selection. In the multi-selection and extended selection modes, the
- current item may not lie within the selection, depending on the way the
- user formed the selection.
-
- \section2 Searching
-
- It is often useful to be able to find items within an item view widget,
- either as a developer or as a service to present to users. All three
- item view convenience classes provide a common \c findItems() function
- to make this as consistent and simple as possible.
-
- Items are searched for by the text that they contain according to
- criteria specified by a selection of values from Qt::MatchFlags.
- We can obtain a list of matching items with the \c findItems()
- function:
-
- \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 6
- \snippet doc/src/snippets/qtreewidget-using/mainwindow.cpp 7
-
- The above code causes items in a tree widget to be selected if they
- contain the text given in the search string. This pattern can also be
- used in the list and table widgets.
-*/
-
-/*!
- \page model-view-dnd.html
- \contentspage model-view-programming.html Contents
- \previouspage Item View Convenience Classes
- \nextpage Proxy Models
-
- \title Using Drag and Drop with Item Views
-
- \tableofcontents
-
- \section1 Overview
-
- Qt's drag and drop infrastructure is fully supported by the model/view framework.
- Items in lists, tables, and trees can be dragged within the views, and data can be
- imported and exported as MIME-encoded data.
-
- The standard views automatically support internal drag and drop, where items are
- moved around to change the order in which they are displayed. By default, drag and
- drop is not enabled for these views because they are configured for the simplest,
- most common uses. To allow items to be dragged around, certain properties of the
- view need to be enabled, and the items themselves must also allow dragging to occur.
-
- The requirements for a model that only allows items to be exported from a
- view, and which does not allow data to be dropped into it, are fewer than
- those for a fully-enabled drag and drop model.
-
- See also the \l{Model Subclassing Reference} for more information about
- enabling drag and drop support in new models.
-
- \section1 Using Convenience Views
-
- Each of the types of item used with QListWidget, QTableWidget, and QTreeWidget
- is configured to use a different set of flags by default. For example, each
- QListWidgetItem or QTreeWidgetItem is initially enabled, checkable, selectable,
- and can be used as the source of a drag and drop operation; each QTableWidgetItem
- can also be edited and used as the target of a drag and drop operation.
-
- Although all of the standard items have one or both flags set for drag and drop,
- you generally need to set various properties in the view itself to take advantage
- of the built-in support for drag and drop:
-
- \list
- \o To enable item dragging, set the view's
- \l{QAbstractItemView::dragEnabled}{dragEnabled} property to \c true.
- \o To allow the user to drop either internal or external items within the view,
- set the view's \l{QAbstractScrollArea::}{viewport()}'s
- \l{QWidget::acceptDrops}{acceptDrops} property to \c true.
- \o To show the user where the item currently being dragged will be placed if
- dropped, set the view's \l{QAbstractItemView::showDropIndicator}{showDropIndicator}
- property. This provides the user with continuously updating information about
- item placement within the view.
- \endlist
-
- For example, we can enable drag and drop in a list widget with the following lines
- of code:
-
- \snippet doc/src/snippets/qlistwidget-dnd/mainwindow.cpp 0
-
- The result is a list widget which allows the items to be copied
- around within the view, and even lets the user drag items between
- views containing the same type of data. In both situations, the
- items are copied rather than moved.
-
- To enable the user to move the items around within the view, we
- must set the list widget's \l {QAbstractItemView::}{dragDropMode}:
-
- \snippet doc/src/snippets/qlistwidget-dnd/mainwindow.cpp 1
-
- \section1 Using Model/View Classes
-
- Setting up a view for drag and drop follows the same pattern used with the
- convenience views. For example, a QListView can be set up in the same way as a
- QListWidget:
-
- \snippet doc/src/snippets/qlistview-dnd/mainwindow.cpp 0
-
- Since access to the data displayed by the view is controlled by a model, the
- model used also has to provide support for drag and drop operations. The
- actions supported by a model can be specified by reimplementing the
- QAbstractItemModel::supportedDropActions() function. For example, copy and
- move operations are enabled with the following code:
-
- \snippet doc/src/snippets/qlistview-dnd/model.cpp 10
-
- Although any combination of values from Qt::DropActions can be given, the
- model needs to be written to support them. For example, to allow Qt::MoveAction
- to be used properly with a list model, the model must provide an implementation
- of QAbstractItemModel::removeRows(), either directly or by inheriting the
- implementation from its base class.
-
- \section2 Enabling Drag and Drop for Items
-
- Models indicate to views which items can be dragged, and which will accept drops,
- by reimplementing the QAbstractItemModel::flags() function to provide suitable
- flags.
-
- For example, a model which provides a simple list based on QAbstractListModel
- can enable drag and drop for each of the items by ensuring that the flags
- returned contain the \l Qt::ItemIsDragEnabled and \l Qt::ItemIsDropEnabled
- values:
-
- \snippet doc/src/snippets/qlistview-dnd/model.cpp 7
-
- Note that items can be dropped into the top level of the model, but dragging is
- only enabled for valid items.
-
- In the above code, since the model is derived from QStringListModel, we
- obtain a default set of flags by calling its implementation of the flags()
- function.
-
- \section2 Encoding Exported Data
-
- When items of data are exported from a model in a drag and drop operation, they
- are encoded into an appropriate format corresponding to one or more MIME types.
- Models declare the MIME types that they can use to supply items by reimplementing
- the QAbstractItemModel::mimeTypes() function, returning a list of standard MIME
- types.
-
- For example, a model that only provides plain text would provide the following
- implementation:
-
- \snippet doc/src/snippets/qlistview-dnd/model.cpp 9
-
- The model must also provide code to encode data in the advertised format. This
- is achieved by reimplementing the QAbstractItemModel::mimeData() function to
- provide a QMimeData object, just as in any other drag and drop operation.
-
- The following code shows how each item of data, corresponding to a given list of
- indexes, is encoded as plain text and stored in a QMimeData object.
-
- \snippet doc/src/snippets/qlistview-dnd/model.cpp 8
-
- Since a list of model indexes is supplied to the function, this approach is general
- enough to be used in both hierarchical and non-heirarchical models.
-
- Note that custom datatypes must be declared as \l{QMetaObject}{meta objects}
- and that stream operators must be implemented for them. See the QMetaObject
- class description for details.
-
- \section2 Inserting Dropped Data into a Model
-
- The way that any given model handles dropped data depends on both its type
- (list, table, or tree) and the way its contents is likely to be presented to
- the user. Generally, the approach taken to accommodate dropped data should
- be the one that most suits the model's underlying data store.
-
- Different types of model tend to handle dropped data in different ways. List
- and table models only provide a flat structure in which items of data are
- stored. As a result, they may insert new rows (and columns) when data is
- dropped on an existing item in a view, or they may overwrite the item's
- contents in the model using some of the data supplied. Tree models are
- often able to add child items containing new data to their underlying data
- stores, and will therefore behave more predictably as far as the user
- is concerned.
-
- Dropped data is handled by a model's reimplementation of
- QAbstractItemModel::dropMimeData(). For example, a model that handles a
- simple list of strings can provide an implementation that handles data
- dropped onto existing items separately to data dropped into the top level
- of the model (i.e., onto an invalid item).
-
- The model first has to make sure that the operation should be acted on,
- the data supplied is in a format that can be used, and that its destination
- within the model is valid:
-
- \snippet doc/src/snippets/qlistview-dnd/model.cpp 0
- \snippet doc/src/snippets/qlistview-dnd/model.cpp 1
-
- A simple one column string list model can indicate failure if the data
- supplied is not plain text, or if the column number given for the drop
- is invalid.
-
- The data to be inserted into the model is treated differently depending on
- whether it is dropped onto an existing item or not. In this simple example,
- we want to allow drops between existing items, before the first item in the
- list, and after the last item.
-
- When a drop occurs, the model index corresponding to the parent item will
- either be valid, indicating that the drop occurred on an item, or it will
- be invalid, indicating that the drop occurred somewhere in the view that
- corresponds to top level of the model.
-
- \snippet doc/src/snippets/qlistview-dnd/model.cpp 2
-
- We initially examine the row number supplied to see if we can use it
- to insert items into the model, regardless of whether the parent index is
- valid or not.
-
- \snippet doc/src/snippets/qlistview-dnd/model.cpp 3
-
- If the parent model index is valid, the drop occurred on an item. In this
- simple list model, we find out the row number of the item and use that
- value to insert dropped items into the top level of the model.
-
- \snippet doc/src/snippets/qlistview-dnd/model.cpp 4
-
- When a drop occurs elsewhere in the view, and the row number is unusable,
- we append items to the top level of the model.
-
- In hierarchical models, when a drop occurs on an item, it would be better to
- insert new items into the model as children of that item. In the simple
- example shown here, the model only has one level, so this approach is not
- appropriate.
-
- \section2 Decoding Imported Data
-
- Each implementation of \l{QAbstractItemModel::dropMimeData()}{dropMimeData()} must
- also decode the data and insert it into the model's underlying data structure.
-
- For a simple string list model, the encoded items can be decoded and streamed
- into a QStringList:
-
- \snippet doc/src/snippets/qlistview-dnd/model.cpp 5
-
- The strings can then be inserted into the underlying data store. For consistency,
- this can be done through the model's own interface:
-
- \snippet doc/src/snippets/qlistview-dnd/model.cpp 6
-
- Note that the model will typically need to provide implementations of the
- QAbstractItemModel::insertRows() and QAbstractItemModel::setData() functions.
-
- \sa {Item Views Puzzle Example}
-*/
-
-/*!
- \page model-view-proxy-models.html
- \contentspage model-view-programming.html Contents
- \previouspage Using Drag and Drop with Item Views
- \nextpage Model Subclassing Reference
-
- \title Proxy Models
-
- \tableofcontents
-
- \section1 Overview
-
- In the model/view framework, items of data supplied by a single model can be shared
- by any number of views, and each of these can possibly represent the same information
- in completely different ways.
- Custom views and delegates are effective ways to provide radically different
- representations of the same data. However, applications often need to provide
- conventional views onto processed versions of the same data, such as differently-sorted
- views onto a list of items.
-
- Although it seems appropriate to perform sorting and filtering operations as internal
- functions of views, this approach does not allow multiple views to share the results
- of such potentially costly operations. The alternative approach, involving sorting
- within the model itself, leads to the similar problem where each view has to display
- items of data that are organized according to the most recent processing operation.
-
- To solve this problem, the model/view framework uses proxy models to manage the
- information supplied between individual models and views. Proxy models are components
- that behave like ordinary models from the perspective of a view, and access data from
- source models on behalf of that view. The signals and slots used by the model/view
- framework ensure that each view is updated appropriately no matter how many proxy models
- are placed between itself and the source model.
-
- \section1 Using Proxy Models
-
- Proxy models can be inserted between an existing model and any number of views.
- Qt is supplied with a standard proxy model, QSortFilterProxyModel, that is usually
- instantiated and used directly, but can also be subclassed to provide custom filtering
- and sorting behavior. The QSortFilterProxyModel class can be used in the following way:
-
- \snippet doc/src/snippets/qsortfilterproxymodel/main.cpp 0
- \codeline
- \snippet doc/src/snippets/qsortfilterproxymodel/main.cpp 1
-
- Since proxy models are inherit from QAbstractItemModel, they can be connected to
- any kind of view, and can be shared between views. They can also be used to
- process the information obtained from other proxy models in a pipeline arrangement.
-
- The QSortFilterProxyModel class is designed to be instantiated and used directly
- in applications. More specialized proxy models can be created by subclassing this
- classes and implementing the required comparison operations.
-
- \section1 Customizing Proxy Models
-
- Generally, the type of processing used in a proxy model involves mapping each item of
- data from its original location in the source model to either a different location in
- the proxy model. In some models, some items may have no corresponding location in the
- proxy model; these models are \e filtering proxy models. Views access items using
- model indexes provided by the proxy model, and these contain no information about the
- source model or the locations of the original items in that model.
-
- QSortFilterProxyModel enables data from a source model to be filtered before
- being supplied to views, and also allows the contents of a source model to
- be supplied to views as pre-sorted data.
-
- \section2 Custom Filtering Models
-
- The QSortFilterProxyModel class provides a filtering model that is fairly versatile,
- and which can be used in a variety of common situations. For advanced users,
- QSortFilterProxyModel can be subclassed, providing a mechanism that enables custom
- filters to be implemented.
-
- Subclasses of QSortFilterProxyModel can reimplement two virtual functions that are
- called whenever a model index from the proxy model is requested or used:
-
- \list
- \o \l{QSortFilterProxyModel::filterAcceptsColumn()}{filterAcceptsColumn()} is used to
- filter specific columns from part of the source model.
- \o \l{QSortFilterProxyModel::filterAcceptsRow()}{filterAcceptsRow()} is used to filter
- specific rows from part of the source model.
- \endlist
-
- The default implementations of the above functions in QSortFilterProxyModel
- return true to ensure that all items are passed through to views; reimplementations
- of these functions should return false to filter out individual rows and columns.
-
- \section2 Custom Sorting Models
-
- QSortFilterProxyModel instances use Qt's built-in qStableSort() function to set up
- mappings between items in the source model and those in the proxy model, allowing a
- sorted hierarchy of items to be exposed to views without modifying the structure of the
- source model. To provide custom sorting behavior, reimplement the
- \l{QSortFilterProxyModel::lessThan()}{lessThan()} function to perform custom
- comparisons.
-*/
-
-/*!
- \page model-view-model-subclassing.html
- \contentspage model-view-programming.html Contents
- \previouspage Proxy Models
-
- \title Model Subclassing Reference
-
- \tableofcontents
-
- \section1 Introduction
-
- Model subclasses need to provide implementations of many of the virtual functions
- defined in the QAbstractItemModel base class. The number of these functions that need
- to be implemented depends on the type of model - whether it supplies views with
- a simple list, a table, or a complex hierarchy of items. Models that inherit from
- QAbstractListModel and QAbstractTableModel can take advantage of the default
- implementations of functions provided by those classes. Models that expose items
- of data in tree-like structures must provide implementations for many of the
- virtual functions in QAbstractItemModel.
-
- The functions that need to be implemented in a model subclass can be divided into three
- groups:
-
- \list
- \o \bold{Item data handling:} All models need to implement functions to enable views and
- delegates to query the dimensions of the model, examine items, and retrieve data.
- \o \bold{Navigation and index creation:} Hierarchical models need to provide functions
- that views can call to navigate the tree-like structures they expose, and obtain
- model indexes for items.
- \o \bold{Drag and drop support and MIME type handling:} Models inherit functions that
- control the way that internal and external drag and drop operations are performed.
- These functions allow items of data to be described in terms of MIME types that
- other components and applications can understand.
- \endlist
-
- For more information, see the \l
- {"Item View Classes" Chapter of C++ GUI Programming with Qt 4}.
-
- \section1 Item Data Handling
-
- Models can provide varying levels of access to the data they provide: They can be
- simple read-only components, some models may support resizing operations, and
- others may allow items to be edited.
-
- \section2 Read-Only Access
-
- To provide read-only access to data provided by a model, the following functions
- \e{must} be implemented in the model's subclass:
-
- \table 90%
- \row \o \l{QAbstractItemModel::flags()}{flags()}
- \o Used by other components to obtain information about each item provided by
- the model. In many models, the combination of flags should include
- Qt::ItemIsEnabled and Qt::ItemIsSelectable.
- \row \o \l{QAbstractItemModel::data()}{data()}
- \o Used to supply item data to views and delegates. Generally, models only
- need to supply data for Qt::DisplayRole and any application-specific user
- roles, but it is also good practice to provide data for Qt::ToolTipRole,
- Qt::AccessibleTextRole, and Qt::AccessibleDescriptionRole.
- See the Qt::ItemDataRole enum documentation for information about the types
- associated with each role.
- \row \o \l{QAbstractItemModel::headerData()}{headerData()}
- \o Provides views with information to show in their headers. The information is
- only retrieved by views that can display header information.
- \row \o \l{QAbstractItemModel::rowCount()}{rowCount()}
- \o Provides the number of rows of data exposed by the model.
- \endtable
-
- These four functions must be implemented in all types of model, including list models
- (QAbstractListModel subclasses) and table models (QAbstractTableModel subclasses).
-
- Additionally, the following functions \e{must} be implemented in direct subclasses
- of QAbstractTableModel and QAbstractItemModel:
-
- \table 90%
- \row \o \l{QAbstractItemModel::columnCount()}{columnCount()}
- \o Provides the number of columns of data exposed by the model. List models do not
- provide this function because it is already implemented in QAbstractListModel.
- \endtable
-
- \section2 Editable Items
-
- Editable models allow items of data to be modified, and may also provide
- functions to allow rows and columns to be inserted and removed. To enable
- editing, the following functions must be implemented correctly:
-
- \table 90%
- \row \o \l{QAbstractItemModel::flags()}{flags()}
- \o Must return an appropriate combination of flags for each item. In particular,
- the value returned by this function must include \l{Qt::ItemIsEditable} in
- addition to the values applied to items in a read-only model.
- \row \o \l{QAbstractItemModel::setData()}{setData()}
- \o Used to modify the item of data associated with a specified model index.
- To be able to accept user input, provided by user interface elements, this
- function must handle data associated with Qt::EditRole.
- The implementation may also accept data associated with many different kinds
- of roles specified by Qt::ItemDataRole. After changing the item of data,
- models must emit the \l{QAbstractItemModel::dataChanged()}{dataChanged()}
- signal to inform other components of the change.
- \row \o \l{QAbstractItemModel::setHeaderData()}{setHeaderData()}
- \o Used to modify horizontal and vertical header information. After changing
- the item of data, models must emit the
- \l{QAbstractItemModel::headerDataChanged()}{headerDataChanged()}
- signal to inform other components of the change.
- \endtable
-
- \section2 Resizable Models
-
- All types of model can support the insertion and removal of rows. Table models
- and hierarchical models can also support the insertion and removal of columns.
- It is important to notify other components about changes to the model's dimensions
- both \e before and \e after they occur. As a result, the following functions
- can be implemented to allow the model to be resized, but implementations must
- ensure that the appropriate functions are called to notify attached views and
- delegates:
-
- \table 90%
- \row \o \l{QAbstractItemModel::insertRows()}{insertRows()}
- \o Used to add new rows and items of data to all types of model.
- Implementations must call
- \l{QAbstractItemModel::beginInsertRows()}{beginInsertRows()} \e before
- inserting new rows into any underlying data structures, and call
- \l{QAbstractItemModel::endInsertRows()}{endInsertRows()}
- \e{immediately afterwards}.
- \row \o \l{QAbstractItemModel::removeRows()}{removeRows()}
- \o Used to remove rows and the items of data they contain from all types of model.
- Implementations must call
- \l{QAbstractItemModel::beginRemoveRows()}{beginRemoveRows()}
- \e before inserting new columns into any underlying data structures, and call
- \l{QAbstractItemModel::endRemoveRows()}{endRemoveRows()}
- \e{immediately afterwards}.
- \row \o \l{QAbstractItemModel::insertColumns()}{insertColumns()}
- \o Used to add new columns and items of data to table models and hierarchical models.
- Implementations must call
- \l{QAbstractItemModel::beginInsertColumns()}{beginInsertColumns()} \e before
- rows are removed from any underlying data structures, and call
- \l{QAbstractItemModel::endInsertColumns()}{endInsertColumns()}
- \e{immediately afterwards}.
- \row \o \l{QAbstractItemModel::removeColumns()}{removeColumns()}
- \o Used to remove columns and the items of data they contain from table models and
- hierarchical models.
- Implementations must call
- \l{QAbstractItemModel::beginRemoveColumns()}{beginRemoveColumns()}
- \e before columns are removed from any underlying data structures, and call
- \l{QAbstractItemModel::endRemoveColumns()}{endRemoveColumns()}
- \e{immediately afterwards}.
- \endtable
-
- Generally, these functions should return true if the operation was successful.
- However, there may be cases where the operation only partly succeeded; for example,
- if less than the specified number of rows could be inserted. In such cases, the
- model should return false to indicate failure to enable any attached components to
- handle the situation.
-
- The signals emitted by the functions called in implementations of the resizing
- API give attached components the chance to take action before any data becomes
- unavailable. The encapsulation of insert and remove operations with begin and end
- functions also enable the model to manage
- \l{QPersistentModelIndex}{persistent model indexes} correctly.
-
- Normally, the begin and end functions are capable of informing other components
- about changes to the model's underlying structure. For more complex changes to the
- model's structure, perhaps involving internal reorganization or sorting of data,
- it is necessary to emit the \l{QAbstractItemModel::layoutChanged()}{layoutChanged()}
- signal to cause any attached views to be updated.
-
- \section2 Lazy Population of Model Data
-
- Lazy population of model data effectively allows requests for information
- about the model to be deferred until it is actually needed by views.
-
- Some models need to obtain data from remote sources, or must perform
- time-consuming operations to obtain information about the way the
- data is organized. Since views generally request as much information
- as possible in order to accurately display model data, it can be useful
- to restrict the amount of information returned to them to reduce
- unnecessary follow-up requests for data.
-
- In hierarchical models where finding the number of children of a given
- item is an expensive operation, it is useful to ensure that the model's
- \l{QAbstractItemModel::}{rowCount()} implementation is only called when
- necessary. In such cases, the \l{QAbstractItemModel::}{hasChildren()}
- function can be reimplemented to provide an inexpensive way for views to
- check for the presence of children and, in the case of QTreeView, draw
- the appropriate decoration for their parent item.
-
- Whether the reimplementation of \l{QAbstractItemModel::}{hasChildren()}
- returns \c true or \c false, it may not be necessary for the view to call
- \l{QAbstractItemModel::}{rowCount()} to find out how many children are
- present. For example, QTreeView does not need to know how many children
- there are if the parent item has not been expanded to show them.
-
- If it is known that many items will have children, reimplementing
- \l{QAbstractItemModel::}{hasChildren()} to unconditionally return \c true
- is sometimes a useful approach to take. This ensures that each item can
- be later examined for children while making initial population of model
- data as fast as possible. The only disadvantage is that items without
- children may be displayed incorrectly in some views until the user
- attempts to view the non-existent child items.
-
-
- \section1 Navigation and Model Index Creation
-
- Hierarchical models need to provide functions that views can call to navigate the
- tree-like structures they expose, and obtain model indexes for items.
-
- \section2 Parents and Children
-
- Since the structure exposed to views is determined by the underlying data
- structure, it is up to each model subclass to create its own model indexes
- by providing implementations of the following functions:
-
- \table 90%
- \row \o \l{QAbstractItemModel::index()}{index()}
- \o Given a model index for a parent item, this function allows views and delegates
- to access children of that item. If no valid child item - corresponding to the
- specified row, column, and parent model index, can be found, the function
- must return QModelIndex(), which is an invalid model index.
- \row \o \l{QAbstractItemModel::parent()}{parent()}
- \o Provides a model index corresponding to the parent of any given child item.
- If the model index specified corresponds to a top-level item in the model, or if
- there is no valid parent item in the model, the function must return
- an invalid model index, created with the empty QModelIndex() constructor.
- \endtable
-
- Both functions above use the \l{QAbstractItemModel::createIndex()}{createIndex()}
- factory function to generate indexes for other components to use. It is normal for
- models to supply some unique identifier to this function to ensure that
- the model index can be re-associated with its corresponding item later on.
-
- \section1 Drag and Drop Support and MIME Type Handling
-
- The model/view classes support drag and drop operations, providing default behavior
- that is sufficient for many applications. However, it is also possible to customize
- the way items are encoded during drag and drop operations, whether they are copied
- or moved by default, and how they are inserted into existing models.
-
- Additionally, the convenience view classes implement specialized behavior that
- should closely follow that expected by existing developers.
- The \l{#Convenience Views}{Convenience Views} section provides an overview of this
- behavior.
-
- \section2 MIME Data
-
- By default, the built-in models and views use an internal MIME type
- (\c{application/x-qabstractitemmodeldatalist}) to pass around information about
- model indexes. This specifies data for a list of items, containing the row and
- column numbers of each item, and information about the roles that each item
- supports.
-
- Data encoded using this MIME type can be obtained by calling
- QAbstractItemModel::mimeData() with a QModelIndexList containing the items to
- be serialized.
- \omit
- The following types are used to store information about
- each item as it is streamed into a QByteArray and stored in a QMimeData object:
-
- \table 90%
- \header \o Description \o Type
- \row \o Row \o int
- \row \o Column \o int
- \row \o Data for each role \o QMap<int, QVariant>
- \endtable
-
- This information can be retrieved for use in non-model classes by calling
- QMimeData::data() with the \c{application/x-qabstractitemmodeldatalist} MIME
- type and streaming out the items one by one.
- \endomit
-
- When implementing drag and drop support in a custom model, it is possible to
- export items of data in specialized formats by reimplementing the following
- function:
-
- \table 90%
- \row \o \l{QAbstractItemModel::mimeData()}{mimeData()}
- \o This function can be reimplemented to return data in formats other
- than the default \c{application/x-qabstractitemmodeldatalist} internal
- MIME type.
-
- Subclasses can obtain the default QMimeData object from the base class
- and add data to it in additional formats.
- \endtable
-
- For many models, it is useful to provide the contents of items in common format
- represented by MIME types such as \c{text/plain} and \c{image/png}. Note that
- images, colors and HTML documents can easily be added to a QMimeData object with
- the QMimeData::setImageData(), QMimeData::setColorData(), and
- QMimeData::setHtml() functions.
-
- \section2 Accepting Dropped Data
-
- When a drag and drop operation is performed over a view, the underlying model is
- queried to determine which types of operation it supports and the MIME types
- it can accept. This information is provided by the
- QAbstractItemModel::supportedDropActions() and QAbstractItemModel::mimeTypes()
- functions. Models that do not override the implementations provided by
- QAbstractItemModel support copy operations and the default internal MIME type
- for items.
-
- When serialized item data is dropped onto a view, the data is inserted into
- the current model using its implementation of QAbstractItemModel::dropMimeData().
- The default implementation of this function will never overwrite any data in the
- model; instead, it tries to insert the items of data either as siblings of an
- item, or as children of that item.
-
- To take advantage of QAbstractItemModel's default implementation for the built-in
- MIME type, new models must provide reimplementations of the following functions:
-
- \table 90%
- \row \o \l{QAbstractItemModel::insertRows()}{insertRows()}
- \o {1, 2} These functions enable the model to automatically insert new data using
- the existing implementation provided by QAbstractItemModel::dropMimeData().
- \row \o \l{QAbstractItemModel::insertColumns()}{insertColumns()}
- \row \o \l{QAbstractItemModel::setData()}{setData()}
- \o Allows the new rows and columns to be populated with items.
- \row \o \l{QAbstractItemModel::setItemData()}{setItemData()}
- \o This function provides more efficient support for populating new items.
- \endtable
-
- To accept other forms of data, these functions must be reimplemented:
-
- \table 90%
- \row \o \l{QAbstractItemModel::supportedDropActions()}{supportedDropActions()}
- \o Used to return a combination of \l{Qt::DropActions}{drop actions},
- indicating the types of drag and drop operations that the model accepts.
- \row \o \l{QAbstractItemModel::mimeTypes()}{mimeTypes()}
- \o Used to return a list of MIME types that can be decoded and handled by
- the model. Generally, the MIME types that are supported for input into
- the model are the same as those that it can use when encoding data for
- use by external components.
- \row \o \l{QAbstractItemModel::dropMimeData()}{dropMimeData()}
- \o Performs the actual decoding of the data transferred by drag and drop
- operations, determines where in the model it will be set, and inserts
- new rows and columns where necessary. How this function is implemented
- in subclasses depends on the requirements of the data exposed by each
- model.
- \endtable
-
- If the implementation of the \l{QAbstractItemModel::dropMimeData()}{dropMimeData()}
- function changes the dimensions of a model by inserting or removing rows or
- columns, or if items of data are modified, care must be taken to ensure that
- all relevant signals are emitted. It can be useful to simply call
- reimplementations of other functions in the subclass, such as
- \l{QAbstractItemModel::setData()}{setData()},
- \l{QAbstractItemModel::insertRows()}{insertRows()}, and
- \l{QAbstractItemModel::insertColumns()}{insertColumns()}, to ensure that the
- model behaves consistently.
-
- In order to ensure drag operations work properly, it is important to
- reimplement the following functions that remove data from the model:
-
- \list
- \o \l{QAbstractItemModel::}{removeRows()}
- \o \l{QAbstractItemModel::}{removeRow()}
- \o \l{QAbstractItemModel::}{removeColumns()}
- \o \l{QAbstractItemModel::}{removeColumn()}
- \endlist
-
- For more information about drag and drop with item views, refer to
- \l{Using Drag and Drop with Item Views}.
-
- \section2 Convenience Views
-
- The convenience views (QListWidget, QTableWidget, and QTreeWidget) override
- the default drag and drop functionality to provide less flexible, but more
- natural behavior that is appropriate for many applications. For example,
- since it is more common to drop data into cells in a QTableWidget, replacing
- the existing contents with the data being transferred, the underlying model
- will set the data of the target items rather than insert new rows and columns
- into the model. For more information on drag and drop in convenience views,
- you can see \l{Using Drag and Drop with Item Views}.
-
- \section1 Performance Optimization for Large Amounts of Data
-
- The \l{QAbstractItemModel::}{canFetchMore()} function checks if the parent
- has more data available and returns true or false accordingly. The
- \l{QAbstractItemModel::}{fetchMore()} function fetches data based on the
- parent specified. Both these functions can be combined, for example, in a
- database query involving incremental data to populate a QAbstractItemModel.
- We reimplement \l{QAbstractItemModel::}{canFetchMore()} to indicate if there
- is more data to be fetched and \l{QAbstractItemModel::}{fetchMore()} to
- populate the model as required.
-
- Another example would be dynamically populated tree models, where we
- reimplement \l{QAbstractItemModel::}{fetchMore()} when a branch in the tree
- model is expanded.
-
- If your reimplementation of \l{QAbstractItemModel::}{fetchMore()} adds rows
- to the model, you need to call \l{QAbstractItemModel::}{beginInsertRows()}
- and \l{QAbstractItemModel::}{endInsertRows()}. Also, both
- \l{QAbstractItemModel::}{canFetchMore()} and \l{QAbstractItemModel::}
- {fetchMore()} must be reimplemented as their default implementation returns
- false and does nothing.
-*/
diff --git a/doc/src/modules.qdoc b/doc/src/modules.qdoc
index 9b0e58adb..1f4ed685b 100644
--- a/doc/src/modules.qdoc
+++ b/doc/src/modules.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,39 +21,40 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
/*!
\group modules
- \title Qt's Modules
+ \title All Qt Modules
\startpage index.html Qt Reference Documentation
\nextpage QtCore
+
+ \ingroup classlists
- Qt 4 consists of several modules, each of which lives in a
- separate library.
-
- Modules for general software development:
+ \brief Qt 4 comprises several modules. Each module is a separate
+ library.
\table 80%
+ \header \o {2,1} \bold{Modules for general software development}
\row \o \l{QtCore} \o Core non-graphical classes used by other modules
\row \o \l{QtGui} \o Graphical user interface (GUI) components
+ \row \o \l{QtMultimedia} \o Classes for low-level multimedia functionality
\row \o \l{QtNetwork} \o Classes for network programming
\row \o \l{QtOpenGL} \o OpenGL support classes
\row \o \l{QtOpenVG} \o OpenVG support classes
@@ -65,30 +67,15 @@
\row \o \l{QtXmlPatterns} \o An XQuery & XPath engine for XML and custom data models
\row \o \l{Phonon Module}{Phonon} \o Multimedia framework classes
\row \o \l{Qt3Support} \o Qt 3 compatibility classes
- \endtable
-
- Modules for working with Qt's tools:
-
- \table 80%
+ \header \o {2,1} \bold{Modules for working with Qt's tools}
\row \o \l{QtDesigner} \o Classes for extending \QD
\row \o \l{QtUiTools} \o Classes for handling \QD forms in applications
\row \o \l{QtHelp} \o Classes for online help
- \row \o \l{QtAssistant} \o Support for online help
\row \o \l{QtTest} \o Tool classes for unit testing
- \endtable
-
- The following extension modules are available in the \l{Qt
- Commercial Editions} on Windows:
-
- \table 80%
+ \header \o {2,1} \bold{Modules for Windows developers}
\row \o \l{QAxContainer} \o Extension for accessing ActiveX controls
\row \o \l{QAxServer} \o Extension for writing ActiveX servers
- \endtable
-
- The following extension module is available in all \l {Qt Editions}
- on Unix platforms:
-
- \table 80%
+ \header \o {2,1} \bold{Modules for Unix developers}
\row \o \l{QtDBus} \o Classes for Inter-Process Communication using the D-Bus
\endtable
@@ -98,9 +85,957 @@
\snippet doc/src/snippets/code/doc_src_modules.qdoc 0
- On Windows, if you do not use \l qmake, the \l{Visual Studio Integration}
- available to \l{Qt Commercial Editions}{commercial licensees}, or other
- build tools such as CMake, you also need to link against the \c qtmain library.
+ On Windows, if you do not use \l qmake
+ or other build tools such as CMake, you also need to link against
+ the \c qtmain library.
+
+ \sa {Class and Function Documentation}
+*/
+
+/*!
+ \module QtCore
+ \title QtCore Module
+ \contentspage All Qt Modules
+ \previouspage All Qt Modules
+ \nextpage QtGui
+ \ingroup modules
+
+ \keyword QtCore
+
+ \brief The QtCore module contains core non-GUI functionality.
+
+ All other Qt modules rely on this module. To include the
+ definitions of the module's classes, use the following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtcore.qdoc 0
+
+ The QtCore module is part of all \l{Qt editions}.
+*/
+
+
+/*!
+ \module QtGui
+ \title QtGui Module
+ \contentspage All Qt Modules
+ \previouspage QtCore
+ \nextpage QtNetwork
+ \ingroup modules
+
+ \brief The QtGui module extends QtCore with GUI functionality.
+
+ To include the definitions of both modules' classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtgui.qdoc 0
+
+ The QtGui module is part of the \l{Qt GUI Framework Edition},
+ the \l{Qt Full Framework Edition}, and the \l{Open Source Versions of Qt}.
+*/
+
+/*!
+ \module QtMultimedia
+ \title QtMultimedia Module
+ \contentspage All Qt Modules
+ \previouspage QtCore
+ \nextpage QtNetwork
+ \ingroup modules
+
+ \brief The QtMultimedia module provides low-level multimedia functionality.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtmultimedia.qdoc 1
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtmultimedia.qdoc 0
+
+ The functionality provided by the \l{Phonon Module} is on a higher level
+ and in many cases more suitable for application developers.
+*/
+
+/*!
+ \module QtNetwork
+ \title QtNetwork Module
+ \contentspage All Qt Modules
+ \previouspage QtMultimedia
+ \nextpage QtOpenGL
+ \ingroup modules
+
+ \brief The QtNetwork module provides classes to make network programming
+ easier and portable.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtnetwork.qdoc 1
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtnetwork.qdoc 0
+
+ The QtNetwork module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+*/
+
+/*!
+ \module QtOpenGL
+ \title QtOpenGL Module
+ \contentspage All Qt Modules
+ \previouspage QtNetwork
+ \nextpage QtOpenVG
+ \ingroup modules
+
+ \brief The QtOpenGL module offers classes that make it easy to
+ use OpenGL in Qt applications.
+
+ OpenGL is a standard API for rendering 3D graphics. OpenGL only
+ deals with 3D rendering and provides little or no support for GUI
+ programming issues. The user interface for an OpenGL application
+ must be created with another toolkit, such as Motif on the X
+ platform, Microsoft Foundation Classes (MFC) under Windows, or Qt
+ on both platforms.
+
+ \note OpenGL is a trademark of Silicon Graphics, Inc. in
+ the United States and other countries.
+
+ The Qt OpenGL module makes it easy to use OpenGL in Qt applications.
+ It provides an OpenGL widget class that can be used just like any
+ other Qt widget, except that it opens an OpenGL display buffer where
+ you can use the OpenGL API to render the contents.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtopengl.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtopengl.qdoc 1
+
+ The Qt OpenGL module is implemented as a platform-independent Qt/C++
+ wrapper around the platform-dependent GLX (version 1.3 or later),
+ WGL, or AGL C APIs. Although the basic functionality provided is very
+ similar to Mark Kilgard's GLUT library, applications using the Qt
+ OpenGL module can take advantage of the whole Qt API for
+ non-OpenGL-specific GUI functionality.
+
+ The QtOpenGL module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}. It is available on Windows, X11, and Mac OS X.
+ \l{Qt for Embedded Linux and OpenGL} supports OpenGL ES (OpenGL for Embedded Systems).
+ \note To be able to use the OpenGL API in \l{Qt for Embedded Linux}, it must be
+ integrated with the Q Window System (QWS). See the
+ \l{Qt for Embedded Linux and OpenGL} documentation for details.
+
+*/
+
+/*!
+ \module QtOpenVG
+ \title QtOpenVG Module
+ \since 4.6
+ \contentspage All Qt Modules
+ \previouspage QtOpenGL
+ \nextpage QtScript
+ \ingroup modules
+
+ \brief The QtOpenVG module is a plugin that provides support for
+ OpenVG painting.
+
+ OpenVG is a standard API from the
+ \l{http://www.khronos.org/openvg}{Khronos Group} for accelerated
+ 2D vector graphics that is appearing in an increasing number of
+ embedded devices.
+
+ OpenVG support can be enabled by passing the \c{-openvg} option
+ to configure. It is assumed that the following qmake variables
+ are set to appropriate values in the qmake.conf file for your
+ platform:
+
+ \list
+ \o QMAKE_INCDIR_OPENVG
+ \o QMAKE_LIBDIR_OPENVG
+ \o QMAKE_LIBS_OPENVG
+ \endlist
+
+ Most OpenVG implementations are based on EGL, so the following
+ variables may also need to be set:
+
+ \list
+ \o QMAKE_INCDIR_EGL
+ \o QMAKE_LIBDIR_EGL
+ \o QMAKE_LIBS_EGL
+ \endlist
+
+ See \l{qmake Variable Reference} for more information on these variables.
+
+ Two kinds of OpenVG engines are currently supported: EGL based,
+ and engines built on top of OpenGL such as
+ \l{http://sourceforge.net/projects/shivavg}{ShivaVG}.
+ EGL based engines are preferred.
+
+ Once the graphics system plugin has been built and installed,
+ applications can be run as follows to use the plugin:
+
+ \code
+ app -graphicssystem OpenVG
+ \endcode
+
+ If ShivaVG is being used, then substitute \c ShivaVG instead of
+ \c OpenVG in the line above.
+*/
+
+/*!
+ \module QtScript
+ \title QtScript Module
+ \since 4.3
+ \contentspage All Qt Modules
+ \previouspage QtOpenVG
+ \nextpage QtScriptTools
+ \ingroup modules
+
+ \brief The QtScript module provides classes for making Qt applications scriptable.
+
+ The QtScript module only provides core scripting facilities; the
+ QtScriptTools module provides additional Qt Script-related
+ components that application developers may find useful.
+
+ \tableofcontents
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 1
+
+ For detailed information on how to make your application
+ scriptable with QtScript, see \l{Making Applications
+ Scriptable}.
+
+ The QtScript module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+
+ \section1 License Information
+
+ Qt Commercial Edition licensees that wish to distribute applications that
+ use the QtScript module need to be aware of their obligations under the
+ GNU Library General Public License (LGPL).
+
+ Developers using the Open Source Edition can choose to redistribute
+ the module under the appropriate version of the GNU LGPL.
+
+ \legalese
+ QtScript is licensed under the GNU Library General Public License.
+ Individual contributor names and copyright dates can be found
+ inline in the code.
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+ \endlegalese
+
+*/
+
+/*!
+ \module QtScriptTools
+ \title QtScriptTools Module
+ \since 4.5
+ \contentspage All Qt Modules
+ \previouspage QtScript
+ \nextpage QtSql
+ \ingroup modules
+
+ \brief The QtScriptTools module provides additional components for applications that use Qt Script.
+
+ \tableofcontents
+
+ \section1 Configuring the Build Process
+
+ Applications that use the Qt Script Tools classes need to
+ be configured to be built against the QtScriptTools module.
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc.src.qtscripttools.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c .pro file:
+
+ \snippet doc/src/snippets/code/doc.src.qtscripttools.qdoc 1
+
+ The QtScriptTools module is part of the \l{Qt Full Framework Edition} and
+ the \l{Open Source Versions of Qt}.
+*/
+
+/*!
+ \module QtSql
+ \title QtSql Module
+ \contentspage All Qt Modules
+ \previouspage QtScript
+ \nextpage QtSvg
+ \ingroup modules
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtsql.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtsql.qdoc 1
+
+ The QtSql module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+
+ See the \l{SQL Programming} guide for information about using this
+ module in your applications.
+*/
+
+/*!
+ \module QtSvg
+ \title QtSvg Module
+ \since 4.1
+ \contentspage All Qt Modules
+ \previouspage QtSql
+ \nextpage QtWebKit
+ \ingroup modules
+
+ \brief The QtSvg module provides classes for displaying the contents of SVG
+ files.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtsvg.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtsvg.qdoc 1
+
+ The QtSvg module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+
+ \section1 License Information
+
+ Some code for arc handling in this module is derived from code with
+ the following license:
+
+ \legalese
+ Copyright 2002 USC/Information Sciences Institute
+
+ Permission to use, copy, modify, distribute, and sell this software
+ and its documentation for any purpose is hereby granted without
+ fee, provided that the above copyright notice appear in all copies
+ and that both that copyright notice and this permission notice
+ appear in supporting documentation, and that the name of
+ Information Sciences Institute not be used in advertising or
+ publicity pertaining to distribution of the software without
+ specific, written prior permission. Information Sciences Institute
+ makes no representations about the suitability of this software for
+ any purpose. It is provided "as is" without express or implied
+ warranty.
+
+ INFORMATION SCIENCES INSTITUTE DISCLAIMS ALL WARRANTIES WITH REGARD
+ TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL INFORMATION SCIENCES
+ INSTITUTE BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA
+ OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+ \endlegalese
+*/
+
+/*!
+ \module QtXml
+ \title QtXml Module
+ \contentspage All Qt Modules
+ \previouspage QtSvg
+ \nextpage QtXmlPatterns
+ \ingroup modules
+
+ \brief The QtXml module provides a stream reader and writer for
+ XML documents, and C++ implementations of SAX and DOM.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 1
+
+ Further XML support is provided by the \l{Qt Solutions} group who
+ provide, for example, classes that support SOAP and MML with the
+ Qt XML classes.
+
+ This module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+*/
+
+/*!
+ \module QtXmlPatterns
+ \title QtXmlPatterns Module
+ \since 4.4
+ \contentspage All Qt Modules
+ \previouspage QtXml
+ \nextpage Phonon Module
+ \ingroup modules
+
+ \brief The QtXmlPatterns module provides support for XPath,
+ XQuery, XSLT and XML Schema validation.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtxmlpatterns.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qtxmlpatterns.qdoc 1
+
+ This module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+
+ \section1 License Information
+
+ The XML Schema implementation provided by this module contains the \c xml.xsd file
+ (located in \c{src/xmlpatterns/schema/schemas}) which is licensed under the terms
+ given below. This module is always built with XML Schema support enabled.
+
+ \legalese
+ W3C\copyright SOFTWARE NOTICE AND LICENSE
+
+ This license came from: http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+
+ This work (and included software, documentation such as READMEs, or other
+ related items) is being provided by the copyright holders under the following
+ license. By obtaining, using and/or copying this work, you (the licensee)
+ agree that you have read, understood, and will comply with the following
+ terms and conditions.
+
+ Permission to copy, modify, and distribute this software and its
+ documentation, with or without modification, for any purpose and without
+ fee or royalty is hereby granted, provided that you include the following on
+ ALL copies of the software and documentation or portions thereof, including
+ modifications:
+
+ 1. The full text of this NOTICE in a location viewable to users of the
+ redistributed or derivative work.\br
+ 2. Any pre-existing intellectual property disclaimers, notices, or terms
+ and conditions. If none exist, the W3C Software Short Notice should be
+ included (hypertext is preferred, text is permitted)
+ within the body of any redistributed or derivative code.\br
+ 3. Notice of any changes or modifications to the files, including the date
+ changes were made. (We recommend you provide URIs to the location from
+ which the code is derived.)
+
+ THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS
+ MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+ LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
+ PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE
+ ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+
+ COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
+ CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
+ DOCUMENTATION.
+
+ The name and trademarks of copyright holders may NOT be used in
+ advertising or publicity pertaining to the software without specific, written
+ prior permission. Title to copyright in this software and any associated
+ documentation will at all times remain with copyright holders.
+ \endlegalese
+*/
+
+/*!
+ \page phonon-module.html
+ \module Phonon
+ \title Phonon Module
+ \contentspage All Qt Modules
+ \previouspage QtXmlPatterns
+ \nextpage Qt3Support
+ \ingroup modules
+
+ \brief The Phonon module contains namespaces and classes for multimedia functionality.
+
+ \generatelist{classesbymodule Phonon}
+
+ Phonon is a cross-platform multimedia framework that enables the use of
+ audio and video content in Qt applications. The \l{Phonon Overview}
+ document provides an introduction to the architecture and features included
+ in Phonon. The \l{Phonon} namespace contains a list of all classes, functions
+ and namespaces provided by the module.
+
+ Applications that use Phonon's classes need to
+ be configured to be built against the Phonon module.
+ The following declaration in a \c qmake project file ensures that
+ an application is compiled and linked appropriately:
+
+ \snippet doc/src/snippets/code/doc_src_phonon.qdoc 1
+
+ The Phonon module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}.
+
+ \section1 Qt Backends
+
+ Qt Backends are currently developed for Phonon version 4.1. The Phonon
+ project has moved on and introduced new features that the Qt Backends do not
+ implement. We have chosen not to document the part of Phonon that we do not
+ support. Any class or function not appearing in our documentation can be
+ considered unsupported.
+
+ \section1 License Information
+
+ Qt Commercial Edition licensees that wish to distribute applications that
+ use the Phonon module need to be aware of their obligations under the
+ GNU Lesser General Public License (LGPL).
+
+ Developers using the Open Source Edition can choose to redistribute
+ the module under the appropriate version of the GNU LGPL; version 2.1
+ for applications and libraries licensed under the GNU GPL version 2,
+ or version 3 for applications and libraries licensed under the GNU
+ GPL version 3.
+
+ \legalese
+ This file is part of the KDE project
+
+ Copyright (C) 2004-2009 Matthias Kretz <kretz@kde.org> \BR
+ Copyright (C) 2008 Ian Monroe <ian@monroe.nu> \BR
+ Copyright (C) 2007-2008 Trolltech ASA \BR
+ Copyright (C) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). \BR
+ Contact: Nokia Corporation (qt-info@nokia.com)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+ \endlegalese
+*/
+
+/*!
+ \module Qt3Support
+ \title Qt3Support Module
+ \contentspage All Qt Modules
+ \previouspage Phonon Module
+ \nextpage QtDesigner
+ \ingroup modules
+
+ \keyword Qt3Support
+ \brief The Qt3Support module provides classes that ease porting
+ from Qt 3 to Qt 4.
+
+ \warning The classes in this module are intended to be used in
+ intermediate stages of a porting process and are not intended
+ to be used in production code.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qt3support.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qt3support.qdoc 1
+
+ \note Since this module provides compatibility classes for
+ diverse parts of the Qt 3 API, it has dependencies on the QtCore,
+ QtGui, QtNetwork, QtSql, and QtXml modules.
+
+ This module is part of the \l{Qt Full Framework Edition} and the
+ \l{Open Source Versions of Qt}. Most classes offered by this module are
+ also part of the \l{Qt GUI Framework Edition}.
+ Classes that are not available for \l{Qt GUI Framework Edition}
+ users are marked as such in the class documentation.
+
+ \sa {Porting to Qt 4}
+*/
+
+/*!
+ \module QtDesigner
+ \title QtDesigner Module
+ \contentspage All Qt Modules
+ \previouspage Qt3Support
+ \nextpage QtUiTools
+ \ingroup modules
+
+ \brief The QtDesigner module provides classes that allow you to
+ create your own custom widget plugins for Qt Designer, and classes
+ that enable you to access Qt Designer's components.
+
+ In addition, the QFormBuilder class provides the possibility of
+ constructing user interfaces from UI files at run-time.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 0
+
+ To link against the module, add this line to your \c qmake .pro
+ file:
+
+ \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 1
+
+ \note These classes are part of the \l{Open Source Versions of Qt} and
+ \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial
+ users.
+*/
+
+/*!
+ \module QtUiTools
+ \title QtUiTools Module
+ \since 4.1
+ \contentspage All Qt Modules
+ \previouspage QtDesigner
+ \nextpage QtHelp
+ \ingroup modules
+
+ \brief The QtUiTools module provides classes to handle forms created
+ with Qt Designer.
+
+ These forms are processed at run-time to produce dynamically-generated
+ user interfaces. In order to generate a form at run-time, a resource
+ file containing a UI file is needed. Applications that use the
+ form handling classes need to be configured to be built against the
+ QtUiTools module. This is done by including the following declaration
+ in a \c qmake project file to ensure that the application is compiled
+ and linked appropriately.
+
+ \snippet doc/src/snippets/code/doc_src_qtuiloader.qdoc 0
+
+ A form loader object, provided by the QUiLoader class, is used to
+ construct the user interface. This user interface can
+ be retrieved from any QIODevice; for example, a QFile object can be
+ used to obtain a form stored in a project's resources. The
+ QUiLoader::load() function takes the user interface description
+ contained in the file and constructs the form widget.
+
+ To include the definitions of the module's classes, use the following
+ directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtuiloader.qdoc 1
+
+ \note These classes are part of the \l{Open Source Versions of Qt} and
+ \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial
+ users.
+
+ \sa{Calculator Builder Example}, {World Time Clock Builder Example}
+*/
+
+/*!
+ \module QtHelp
+ \title QtHelp Module
+ \contentspage All Qt Modules
+ \previouspage QtUiTools
+ \nextpage QtTest
+ \ingroup modules
+
+ \brief The QtHelp module provides classes for integrating
+ online documentation in applications.
+
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 1
+
+ These classes are part of the \l{Open Source Versions of Qt} and
+ \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial
+ users.
+
+ \section1 License Information
+
+ The QtHelp module uses the CLucene indexing library to provide full-text
+ searching capabilities for Qt Assistant and applications that use the
+ features of QtHelp.
+
+ Qt Commercial Edition licensees that wish to distribute applications that
+ use these features of the QtHelp module need to be aware of their
+ obligations under the GNU Lesser General Public License (LGPL).
+
+ Developers using the Open Source Edition can choose to redistribute
+ the module under the appropriate version of the GNU LGPL; version 2.1
+ for applications and libraries licensed under the GNU GPL version 2,
+ or version 3 for applications and libraries licensed under the GNU
+ GPL version 3.
+
+ \legalese
+ Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team \BR
+ Changes are Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ \endlegalese
+
+ \sa {The Qt Help Framework}
+*/
+
+/*!
+ \module QtTest
+ \title QtTest Module
+ \contentspage All Qt Modules
+ \previouspage QtHelp
+ \nextpage QAxContainer
+ \ingroup modules
+
+ \keyword QtTest
+
+ \brief The QtTest module provides classes for unit testing Qt applications and libraries.
+
+ Applications that use Qt's unit testing classes need to
+ be configured to be built against the QtTest module.
+ To include the definitions of the module's classes, use the
+ following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qttest.qdoc 0
+
+ To link against the module, add this line to your \l qmake \c
+ .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_qttest.qdoc 1
+
+ See the \l{QTestLib Manual} for a detailed introduction on how to use
+ Qt's unit testing features with your applications.
+
+ The QtTest module is part of all \l{Qt editions}.
+*/
+
+/*!
+ \module QAxContainer
+ \title QAxContainer Module
+ \contentspage All Qt Modules
+ \previouspage QtTest
+ \nextpage QAxServer
+ \ingroup modules
+
+ \brief The QAxContainer module is a Windows-only extension for
+ accessing ActiveX controls and COM objects.
+
+ \section1 License Information
+
+ The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
+ the \l{GNU Lesser General Public License (LGPL)}, or the
+ \l{Qt Commercial Editions}{Qt Commercial License}. Instead, it is distributed under
+ the following license.
+
+ \legalese
+ Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\br
+ All rights reserved.
+
+ Contact: Nokia Corporation (qt-info@nokia.com)\br
+
+ You may use this file under the terms of the BSD license as follows:\br
+
+ "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.\br
+ * 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.\br
+ * 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."
+ \endlegalese
+*/
+
+/*!
+ \module QAxServer
+ \title QAxServer Module
+ \contentspage All Qt Modules
+ \previouspage QAxContainer
+ \nextpage QtDBus module
+ \ingroup modules
+
+ \brief The QAxServer module is a Windows-only static library that
+ you can use to turn a standard Qt binary into a COM server.
+
+ \section1 License Information
+
+ The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
+ the \l{GNU Lesser General Public License (LGPL)}, or the
+ \l{Qt Commercial Editions}{Qt Commercial License}. Instead, it is distributed under
+ the following license.
+
+ \legalese
+ Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\br
+ All rights reserved.
+
+ Contact: Nokia Corporation (qt-info@nokia.com)\br
+
+ You may use this file under the terms of the BSD license as follows:\br
+
+ "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.\br
+ * 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.\br
+ * 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."
+ \endlegalese
+*/
+
+/*!
+ \module QtDBus
+ \title QtDBus module
+ \contentspage All Qt Modules
+ \previouspage QAxServer
+ \ingroup modules
+
+ \keyword QtDBus
+ \target The QDBus compiler
+
+ \brief The QtDBus module is a Unix-only library that you can use
+ to perform Inter-Process Communication using the \l{Introduction to
+ D-Bus}{D-Bus} protocol.
+
+ Applications using the QtDBus module can provide services to
+ other, remote applications by exporting objects, as well as use
+ services exported by those applications by placing calls and
+ accessing properties.
+
+ The QtDBus module provides an interface that extends the Qt \l
+ {signalsandslots.html}{Signals and Slots} mechanism, allowing one
+ to connect to a signal emitted remotely as well as to connect a
+ local signal to remote slot.
+
+ To use this module, use the following code in your application:
+
+ \snippet doc/src/snippets/code/doc_src_qtdbus.qdoc 0
+
+ If you're using qmake to build your application, you can add this
+ line to your .pro file to make it link against the QtDBus
+ libraries:
+
+ \snippet doc/src/snippets/code/doc_src_qtdbus.qdoc 1
+
+ \note The source code for this module is located in the \c{src/qdbus}
+ directory. When installing Qt from source, this module is built when Qt's
+ tools are built.
+
+ See the \l {Introduction to D-Bus} page for detailed information on
+ how to use this module.
+
+ This module is part of all \l{Qt editions}.
+*/
+
+/*!
+ \page qtmain.html
+ \title The qtmain Library
+ \ingroup licensing
+ \ingroup platform-specific
+ \brief Describes the use and license of the qtmain helper library.
+
+ qtmain is a helper library that enables the developer to write a
+ cross-platform main() function on Windows. If you do not use \l qmake
+ or other build tools such as CMake, then you need to link against
+ the \c qtmain library.
+
+ \section1 License Information
+
+ The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
+ the \l{GNU Lesser General Public License (LGPL)}, or the
+ \l{Qt Commercial Editions}{Qt Commercial License}. Instead, it is distributed under
+ the following license.
+
+ \legalese
+ Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\br
+ All rights reserved.
+
+ Contact: Nokia Corporation (qt-info@nokia.com)\br
+
+ You may use this file under the terms of the BSD license as follows:\br
+
+ "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.\br
+ * 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.\br
+ * 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.
- \sa {Qt's Classes}
+ 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."
+ \endlegalese
*/
diff --git a/doc/src/network-programming/qtnetwork.qdoc b/doc/src/network-programming/qtnetwork.qdoc
new file mode 100644
index 000000000..c20adaf50
--- /dev/null
+++ b/doc/src/network-programming/qtnetwork.qdoc
@@ -0,0 +1,330 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group network
+ \title Network Programming API
+ \brief Classes for Network Programming
+
+ \ingroup groups
+*/
+
+/*!
+ \page network-programming.html
+ \title Network Programming
+ \brief An Introduction to Network Programming with Qt
+
+ The QtNetwork module offers classes that allow you to write TCP/IP clients
+ and servers. it offers classes such as QFtp that implement specific
+ application-level protocols, lower-level classes such as QTcpSocket,
+ QTcpServer and QUdpSocket that represent low level network concepts,
+ and high level classes such as QNetworkRequest, QNetworkReply and
+ QNetworkAccessManager to perform network operations using common protocols.
+
+ \tableofcontents
+
+ \section1 Qt's Classes for Network Programming
+
+ The following classes provide support for network programming in Qt.
+
+ \annotatedlist network
+
+ \section1 High Level Network Operations for HTTP and FTP
+
+ The Network Access API is a collection of classes for performing
+ common network operations. The API provides an abstraction layer
+ over the specific operations and protocols used (for example,
+ getting and posting data over HTTP), and only exposes classes,
+ functions, and signals for general or high level concepts.
+
+ Network requests are represented by the QNetworkRequest class,
+ which also acts as a general container for information associated
+ with a request, such as any header information and the encryption
+ used. The URL specified when a request object is constructed
+ determines the protocol used for a request.
+ Currently HTTP, FTP and local file URLs are supported for uploading
+ and downloading.
+
+ The coordination of network operations is performed by the
+ QNetworkAccessManager class. Once a request has been created,
+ this class is used to dispatch it and emit signals to report on
+ its progress. The manager also coordinates the use of
+ \l{QNetworkCookieJar}{cookies} to store data on the client,
+ authentication requests, and the use of proxies.
+
+ Replies to network requests are represented by the QNetworkReply
+ class; these are created by QNetworkAccessManager when a request
+ is dispatched. The signals provided by QNetworkReply can be used
+ to monitor each reply individually, or developers may choose to
+ use the manager's signals for this purpose instead and discard
+ references to replies. Since QNetworkReply is a subclass of
+ QIODevice, replies can be handled synchronously or asynchronously;
+ i.e., as blocking or non-blocking operations.
+
+ Each application or library can create one or more instances of
+ QNetworkAccessManager to handle network communication.
+
+ \section1 Writing FTP Clients with QFtp
+
+ FTP (File Transfer Protocol) is a protocol used almost exclusively
+ for browsing remote directories and for transferring files.
+
+ \image httpstack.png FTP Client and Server
+
+ FTP uses two network connections, one for sending
+ commands and one for transferring data. The
+ FTP protocol has a state and requires the client to send several
+ commands before a file transfer takes place.
+ FTP clients establish a connection
+ and keeps it open throughout the session. In each session, multiple
+ transfers can occur.
+
+ The QFtp class provides client-side support for FTP.
+ It has the following characteristics:
+ \list
+
+ \o \e{Non-blocking behavior.} QFtp is asynchronous.
+ You can schedule a series of commands which are executed later,
+ when control returns to Qt's event loop.
+
+ \o \e{Command IDs.} Each command has a unique ID number that you
+ can use to follow the execution of the command. For example, QFtp
+ emits the \l{QFtp::commandStarted()}{commandStarted()} and
+ \l{QFtp::commandFinished()}{commandFinished()} signal with the
+ command ID for each command that is executed.
+
+ \o \e{Data transfer progress indicators.} QFtp emits signals
+ whenever data is transferred (QFtp::dataTransferProgress(),
+ QNetworkReply::downloadProgress(), and
+ QNetworkReply::uploadProgress()). You could connect these signals
+ to QProgressBar::setProgress() or QProgressDialog::setProgress(),
+ for example.
+
+ \o \e{QIODevice support.} The class supports convenient
+ uploading from and downloading to \l{QIODevice}s, in addition to a
+ QByteArray-based API.
+
+ \endlist
+
+ There are two main ways of using QFtp. The most common
+ approach is to keep track of the command IDs and follow the
+ execution of every command by connecting to the appropriate
+ signals. The other approach is to schedule all commands at once
+ and only connect to the done() signal, which is emitted when all
+ scheduled commands have been executed. The first approach
+ requires more work, but it gives you more control over the
+ execution of individual commands and allows you to initiate new
+ commands based on the result of a previous command. It also
+ enables you to provide detailed feedback to the user.
+
+ The \l{network/qftp}{FTP} example
+ illustrates how to write an FTP client.
+ Writing your own FTP (or HTTP) server is possible using the
+ lower-level classes QTcpSocket and QTcpServer.
+
+ \section1 Using TCP with QTcpSocket and QTcpServer
+
+ TCP (Transmission Control Protocol) is a low-level network
+ protocol used by most Internet protocols, including HTTP and FTP,
+ for data transfer. It is a reliable, stream-oriented,
+ connection-oriented transport protocol. It is particularly well
+ suited to the continuous transmission of data.
+
+ \image tcpstream.png A TCP Stream
+
+ The QTcpSocket class provides an interface for TCP. You can use
+ QTcpSocket to implement standard network protocols such as POP3,
+ SMTP, and NNTP, as well as custom protocols.
+
+ A TCP connection must be established to a remote host and port
+ before any data transfer can begin. Once the connection has been
+ established, the IP address and port of the peer are available
+ through QTcpSocket::peerAddress() and QTcpSocket::peerPort(). At
+ any time, the peer can close the connection, and data transfer
+ will then stop immediately.
+
+ QTcpSocket works asynchronously and emits signals to report status
+ changes and errors, just like QNetworkAccessManager and QFtp. It
+ relies on the event loop to detect incoming data and to
+ automatically flush outgoing data. You can write data to the
+ socket using QTcpSocket::write(), and read data using
+ QTcpSocket::read(). QTcpSocket represents two independent streams
+ of data: one for reading and one for writing.
+
+ Since QTcpSocket inherits QIODevice, you can use it with
+ QTextStream and QDataStream. When reading from a QTcpSocket, you
+ must make sure that enough data is available by calling
+ QTcpSocket::bytesAvailable() beforehand.
+
+ If you need to handle incoming TCP connections (e.g., in a server
+ application), use the QTcpServer class. Call QTcpServer::listen()
+ to set up the server, and connect to the
+ QTcpServer::newConnection() signal, which is emitted once for
+ every client that connects. In your slot, call
+ QTcpServer::nextPendingConnection() to accept the connection and
+ use the returned QTcpSocket to communicate with the client.
+
+ Although most of its functions work asynchronously, it's possible
+ to use QTcpSocket synchronously (i.e., blocking). To get blocking
+ behavior, call QTcpSocket's waitFor...() functions; these suspend
+ the calling thread until a signal has been emitted. For example,
+ after calling the non-blocking QTcpSocket::connectToHost()
+ function, call QTcpSocket::waitForConnected() to block the thread
+ until the \l{QTcpSocket::connected()}{connected()} signal has
+ been emitted.
+
+ Synchronous sockets often lead to code with a simpler flow of
+ control. The main disadvantage of the waitFor...() approach is
+ that events won't be processed while a waitFor...() function is
+ blocking. If used in the GUI thread, this might freeze the
+ application's user interface. For this reason, we recommend that
+ you use synchronous sockets only in non-GUI threads. When used
+ synchronously, QTcpSocket doesn't require an event loop.
+
+ The \l{network/fortuneclient}{Fortune Client} and
+ \l{network/fortuneserver}{Fortune Server} examples show how to use
+ QTcpSocket and QTcpServer to write TCP client-server
+ applications. See also \l{network/blockingfortuneclient}{Blocking
+ Fortune Client} for an example on how to use a synchronous
+ QTcpSocket in a separate thread (without using an event loop),
+ and \l{network/threadedfortuneserver}{Threaded Fortune Server}
+ for an example of a multithreaded TCP server with one thread per
+ active client.
+
+ \section1 Using UDP with QUdpSocket
+
+ UDP (User Datagram Protocol) is a lightweight, unreliable,
+ datagram-oriented, connectionless protocol. It can be used when
+ reliability isn't important. For example, a server that reports
+ the time of day could choose UDP. If a datagram with the time of
+ day is lost, the client can simply make another request.
+
+ \image udppackets.png UDP Packets
+
+ The QUdpSocket class allows you to send and receive UDP
+ datagrams. It inherits QAbstractSocket, and it therefore shares
+ most of QTcpSocket's interface. The main difference is that
+ QUdpSocket transfers data as datagrams instead of as a continuous
+ stream of data. In short, a datagram is a data packet of limited
+ size (normally smaller than 512 bytes), containing the IP address
+ and port of the datagram's sender and receiver in addition to the
+ data being transferred.
+
+ QUdpSocket supports IPv4 broadcasting. Broadcasting is often used
+ to implement network discovery protocols, such as finding which
+ host on the network has the most free hard disk space. One host
+ broadcasts a datagram to the network that all other hosts
+ receive. Each host that receives a request then sends a reply
+ back to the sender with its current amount of free disk space.
+ The originator waits until it has received replies from all
+ hosts, and can then choose the server with most free space to
+ store data. To broadcast a datagram, simply send it to the
+ special address QHostAddress::Broadcast (255.255.255.255), or
+ to your local network's broadcast address.
+
+ QUdpSocket::bind() prepares the socket for accepting incoming
+ datagrams, much like QTcpServer::listen() for TCP servers.
+ Whenever one or more datagrams arrive, QUdpSocket emits the
+ \l{QUdpSocket::readyRead()}{readyRead()} signal. Call
+ QUdpSocket::readDatagram() to read the datagram.
+
+ The \l{network/broadcastsender}{Broadcast Sender} and
+ \l{network/broadcastreceiver}{Broadcast Receiver} examples show
+ how to write a UDP sender and a UDP receiver using Qt.
+
+ \section1 Resolving Host Names using QHostInfo
+
+ Before establishing a network connection, QTcpSocket and
+ QUdpSocket perform a name lookup, translating the host name
+ you're connecting to into an IP address. This operation is
+ usually performed using the DNS (Domain Name Service) protocol.
+
+ QHostInfo provides a static function that lets you perform such a
+ lookup yourself. By calling QHostInfo::lookupHost() with a host
+ name, a QObject pointer, and a slot signature, QHostInfo will
+ perform the name lookup and invoke the given slot when the
+ results are ready. The actual lookup is done in a separate
+ thread, making use of the operating system's own methods for
+ performing name lookups.
+
+ QHostInfo also provides a static function called
+ QHostInfo::fromName() that takes the host name as argument and
+ returns the results. In this case, the name lookup is performed
+ in the same thread as the caller. This overload is useful for
+ non-GUI applications or for doing name lookups in a separate,
+ non-GUI thread. (Calling this function in a GUI thread may cause
+ your user interface to freeze while the function blocks as
+ it performs the lookup.)
+
+ \section1 Support for Network Proxies
+
+ Network communication with Qt can be performed through proxies,
+ which direct or filter network traffic between local and remote
+ connections.
+
+ Individual proxies are represented by the QNetworkProxy class,
+ which is used to describe and configure the connection to a proxy.
+ Proxy types which operate on different levels of network communication
+ are supported, with SOCKS 5 support allowing proxying of network
+ traffic at a low level, and HTTP and FTP proxying working at the
+ protocol level. See QNetworkProxy::ProxyType for more information.
+
+ Proxying can be enabled on a per-socket basis or for all network
+ communication in an application. A newly opened socket can be
+ made to use a proxy by calling its QAbstractSocket::setProxy()
+ function before it is connected. Application-wide proxying can
+ be enabled for all subsequent socket connections through the use
+ of the QNetworkProxy::setApplicationProxy() function.
+
+ Proxy factories are used to create policies for proxy use.
+ QNetworkProxyFactory supplies proxies based on queries for specific
+ proxy types. The queries themselves are encoded in QNetworkProxyQuery
+ objects which enable proxies to be selected based on key criteria,
+ such as the purpose of the proxy (TCP, UDP, TCP server, URL request),
+ local port, remote host and port, and the protocol in use (HTTP, FTP,
+ etc.).
+
+ QNetworkProxyFactory::proxyForQuery() is used to query the factory
+ directly. An application-wide policy for proxying can be implemented
+ by passing a factory to QNetworkProxyFactory::setApplicationProxyFactory()
+ and a custom proxying policy can be created by subclassing
+ QNetworkProxyFactory; see the class documentation for details.
+*/
diff --git a/doc/src/network-programming/ssl.qdoc b/doc/src/network-programming/ssl.qdoc
new file mode 100644
index 000000000..9b1391be6
--- /dev/null
+++ b/doc/src/network-programming/ssl.qdoc
@@ -0,0 +1,93 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group ssl
+ \title Secure Sockets Layer (SSL) Classes
+ \ingroup groups
+
+ \brief Classes for secure communication over network sockets.
+ \keyword SSL
+
+ The classes below provide support for secure network communication using
+ the Secure Sockets Layer (SSL) protocol, using the \l{OpenSSL Toolkit} to
+ perform encryption and protocol handling.
+
+ See the \l{General Qt Requirements} page for information about the
+ versions of OpenSSL that are known to work with Qt.
+
+ \section1 Enabling and Disabling SSL Support
+
+ When building Qt from source, the configuration system checks for the presence
+ of the \c{openssl/opensslv.h} header provided by source or developer packages
+ of OpenSSL.
+
+ By default, an SSL-enabled Qt library dynamically loads any installed OpenSSL
+ library at run-time. However, it is possible to link against the library at
+ compile-time by configuring Qt with the \c{-openssl-linked} option.
+
+ When building a version of Qt linked against OpenSSL, the build system will
+ attempt to link with libssl and libcrypt libraries located in the default
+ location on the developer's system. This location is configurable:
+ set the \c OPENSSL_LIBS environment variable to contain the linker options
+ required to link Qt against the installed library. For example, on a Unix/Linux
+ system:
+
+ \code
+ ./configure -openssl-linked OPENSSL_LIBS='-L/opt/ssl/lib -lssl -lcrypto'
+ \endcode
+
+ To disable SSL support in a Qt build, configure Qt with the \c{-no-openssl}
+ option.
+
+ \section1 Licensing Information
+
+ \note Due to import and export restrictions in some parts of the world, we
+ are unable to supply the OpenSSL Toolkit with Qt packages. Developers wishing
+ to use SSL communication in their deployed applications should either ensure
+ that their users have the appropriate libraries installed, or they should
+ consult a suitably qualified legal professional to ensure that applications
+ using code from the OpenSSL project are correctly certified for import
+ and export in relevant regions of the world.
+
+ When the QtNetwork module is built with SSL support, the library is linked
+ against OpenSSL in a way that requires OpenSSL license compliance.
+*/
diff --git a/doc/src/object.qdoc b/doc/src/object.qdoc
deleted file mode 100644
index 35d2ba3de..000000000
--- a/doc/src/object.qdoc
+++ /dev/null
@@ -1,132 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page object.html
- \title Qt Object Model
- \ingroup architecture
- \brief A description of the powerful features made possible by Qt's dynamic object model.
-
- The standard C++ object model provides very efficient runtime
- support for the object paradigm. But its static nature is
- inflexibile in certain problem domains. Graphical user interface
- programming is a domain that requires both runtime efficiency and
- a high level of flexibility. Qt provides this, by combining the
- speed of C++ with the flexibility of the Qt Object Model.
-
- Qt adds these features to C++:
-
- \list
- \o a very powerful mechanism for seamless object
- communication called \l{signals and slots}
- \o queryable and designable \l{Qt's Property System}{object
- properties}
- \o powerful \l{events and event filters}
- \o contextual \l{i18n}{string translation for internationalization}
- \o sophisticated interval driven \l timers that make it possible
- to elegantly integrate many tasks in an event-driven GUI
- \o hierarchical and queryable \l{Object Trees and Object Ownership}{object
- trees} that organize object ownership in a natural way
- \o guarded pointers (QPointer) that are automatically
- set to 0 when the referenced object is destroyed, unlike normal C++
- pointers which become dangling pointers when their objects are destroyed
- \o a \l{metaobjects.html#qobjectcast}{dynamic cast} that works across
- library boundaries.
- \endlist
-
- Many of these Qt features are implemented with standard C++
- techniques, based on inheritance from QObject. Others, like the
- object communication mechanism and the dynamic property system,
- require the \l{Meta-Object System} provided
- by Qt's own \l{moc}{Meta-Object Compiler (moc)}.
-
- The meta-object system is a C++ extension that makes the language
- better suited to true component GUI programming. Although
- templates can be used to extend C++, the meta-object system
- provides benefits using standard C++ that cannot be achieved with
- templates; see \l{Why Doesn't Qt Use Templates for Signals and
- Slots?}
-
- \target Identity vs Value
- \section1 Qt Objects: Identity vs Value
-
- Some of the added features listed above for the Qt Object Model,
- require that we think of Qt Objects as identities, not values.
- Values are copied or assigned; identities are cloned. Cloning
- means to create a new identity, not an exact copy of the old
- one. For example, twins have different identities. They may look
- identical, but they have different names, different locations, and
- may have completely different social networks.
-
- Then cloning an identity is a more complex operation than copying
- or assigning a value. We can see what this means in the Qt Object
- Model.
-
- \bold{A Qt Object...}
-
- \list
-
- \o might have a unique \l{QObject::objectName()}. If we copy a Qt
- Object, what name should we give the copy?
-
- \o has a location in an \l{Object Trees and Object Ownership}
- {object hierarchy}. If we copy a Qt Object, where should the copy
- be located?
-
- \o can be connected to other Qt Objects to emit signals to them or
- to receive signals emitted by them. If we copy a Qt Object, how
- should we transfer these connections to the copy?
-
- \o can have \l{Qt's Property System} {new properties} added to it
- at runtime that are not declared in the C++ class. If we copy a Qt
- Object, should the copy include the properties that were added to
- the original?
-
- \endlist
-
- For these reasons, Qt Objects should be treated as identities, not
- as values. Identities are cloned, not copied or assigned, and
- cloning an identity is a more complex operation than copying or
- assigning a value. Therefore, QObject and all subclasses of
- QObject (direct or indirect) have their \l{No copy constructor}
- {copy constructor and assignment operator} disabled.
-
- */
diff --git a/doc/src/objectmodel/metaobjects.qdoc b/doc/src/objectmodel/metaobjects.qdoc
new file mode 100644
index 000000000..825f8a636
--- /dev/null
+++ b/doc/src/objectmodel/metaobjects.qdoc
@@ -0,0 +1,148 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 metaobjects.html
+ \title Meta-Object System
+ \brief An overview of Qt's meta-object system and introspection capabilities.
+ \keyword meta-object
+
+ Qt's meta-object system provides the signals and slots mechanism for
+ inter-object communication, run-time type information, and the dynamic
+ property system.
+
+ The meta-object system is based on three things:
+
+ \list 1
+ \o The \l QObject class provides a base class for objects that can
+ take advantage of the meta-object system.
+ \o The Q_OBJECT macro inside the private section of the class
+ declaration is used to enable meta-object features, such as
+ dynamic properties, signals, and slots.
+ \o The \l{moc}{Meta-Object Compiler} (\c moc) supplies each
+ QObject subclass with the necessary code to implement
+ meta-object features.
+ \endlist
+
+ The \c moc tool reads a C++ source file. If it finds one or more
+ class declarations that contain the Q_OBJECT macro, it
+ produces another C++ source file which contains the meta-object
+ code for each of those classes. This generated source file is
+ either \c{#include}'d into the class's source file or, more
+ usually, compiled and linked with the class's implementation.
+
+ In addition to providing the \l{signals and slots} mechanism for
+ communication between objects (the main reason for introducing
+ the system), the meta-object code provides the following
+ additional features:
+
+ \list
+ \o QObject::metaObject() returns the associated
+ \l{QMetaObject}{meta-object} for the class.
+ \o QMetaObject::className() returns the class name as a
+ string at run-time, without requiring native run-time type information
+ (RTTI) support through the C++ compiler.
+ \o QObject::inherits() function returns whether an object is an
+ instance of a class that inherits a specified class within the
+ QObject inheritance tree.
+ \o QObject::tr() and QObject::trUtf8() translate strings for
+ \l{Internationalization with Qt}{internationalization}.
+ \o QObject::setProperty() and QObject::property()
+ dynamically set and get properties by name.
+ \o QMetaObject::newInstance() constructs a new instance of the class.
+ \endlist
+
+ \target qobjectcast
+ It is also possible to perform dynamic casts using qobject_cast()
+ on QObject classes. The qobject_cast() function behaves similarly
+ to the standard C++ \c dynamic_cast(), with the advantages
+ that it doesn't require RTTI support and it works across dynamic
+ library boundaries. It attempts to cast its argument to the pointer
+ type specified in angle-brackets, returning a non-zero pointer if the
+ object is of the correct type (determined at run-time), or 0
+ if the object's type is incompatible.
+
+ For example, let's assume \c MyWidget inherits from QWidget and
+ is declared with the Q_OBJECT macro:
+
+ \snippet doc/src/snippets/qtcast/qtcast.cpp 0
+
+ The \c obj variable, of type \c{QObject *}, actually refers to a
+ \c MyWidget object, so we can cast it appropriately:
+
+ \snippet doc/src/snippets/qtcast/qtcast.cpp 1
+
+ The cast from QObject to QWidget is successful, because the
+ object is actually a \c MyWidget, which is a subclass of QWidget.
+ Since we know that \c obj is a \c MyWidget, we can also cast it to
+ \c{MyWidget *}:
+
+ \snippet doc/src/snippets/qtcast/qtcast.cpp 2
+
+ The cast to \c MyWidget is successful because qobject_cast()
+ makes no distinction between built-in Qt types and custom types.
+
+ \snippet doc/src/snippets/qtcast/qtcast.cpp 3
+ \snippet doc/src/snippets/qtcast/qtcast.cpp 4
+
+ The cast to QLabel, on the other hand, fails. The pointer is then
+ set to 0. This makes it possible to handle objects of different
+ types differently at run-time, based on the type:
+
+ \snippet doc/src/snippets/qtcast/qtcast.cpp 5
+ \snippet doc/src/snippets/qtcast/qtcast.cpp 6
+
+ While it is possible to use QObject as a base class without the
+ Q_OBJECT macro and without meta-object code, neither signals
+ and slots nor the other features described here will be available
+ if the Q_OBJECT macro is not used. From the meta-object
+ system's point of view, a QObject subclass without meta code is
+ equivalent to its closest ancestor with meta-object code. This
+ means for example, that QMetaObject::className() will not return
+ the actual name of your class, but the class name of this
+ ancestor.
+
+ Therefore, we strongly recommend that all subclasses of QObject
+ use the Q_OBJECT macro regardless of whether or not they
+ actually use signals, slots, and properties.
+
+ \sa QMetaObject, {Qt's Property System}, {Signals and Slots}
+*/
diff --git a/doc/src/objectmodel/object.qdoc b/doc/src/objectmodel/object.qdoc
new file mode 100644
index 000000000..dc05542b5
--- /dev/null
+++ b/doc/src/objectmodel/object.qdoc
@@ -0,0 +1,139 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 object.html
+ \title Qt Object Model
+ \brief A description of the powerful features made possible by Qt's dynamic object model.
+
+ \ingroup frameworks-technologies
+
+ The standard C++ object model provides very efficient runtime
+ support for the object paradigm. But its static nature is
+ inflexibile in certain problem domains. Graphical user interface
+ programming is a domain that requires both runtime efficiency and
+ a high level of flexibility. Qt provides this, by combining the
+ speed of C++ with the flexibility of the Qt Object Model.
+
+ Qt adds these features to C++:
+
+ \list
+ \o a very powerful mechanism for seamless object
+ communication called \l{signals and slots}
+ \o queryable and designable \l{Qt's Property System}{object
+ properties}
+ \o powerful \l{events and event filters}
+ \o contextual \l{i18n}{string translation for internationalization}
+ \o sophisticated interval driven \l timers that make it possible
+ to elegantly integrate many tasks in an event-driven GUI
+ \o hierarchical and queryable \l{Object Trees and Object Ownership}{object
+ trees} that organize object ownership in a natural way
+ \o guarded pointers (QPointer) that are automatically
+ set to 0 when the referenced object is destroyed, unlike normal C++
+ pointers which become dangling pointers when their objects are destroyed
+ \o a \l{metaobjects.html#qobjectcast}{dynamic cast} that works across
+ library boundaries.
+ \endlist
+
+ Many of these Qt features are implemented with standard C++
+ techniques, based on inheritance from QObject. Others, like the
+ object communication mechanism and the dynamic property system,
+ require the \l{Meta-Object System} provided
+ by Qt's own \l{moc}{Meta-Object Compiler (moc)}.
+
+ The meta-object system is a C++ extension that makes the language
+ better suited to true component GUI programming. Although
+ templates can be used to extend C++, the meta-object system
+ provides benefits using standard C++ that cannot be achieved with
+ templates; see \l{Why Doesn't Qt Use Templates for Signals and
+ Slots?}
+
+ \section1 Important Classes
+
+ These classes form the basis of the Qt Object Model.
+
+ \annotatedlist objectmodel
+
+ \target Identity vs Value
+ \section1 Qt Objects: Identity vs Value
+
+ Some of the added features listed above for the Qt Object Model,
+ require that we think of Qt Objects as identities, not values.
+ Values are copied or assigned; identities are cloned. Cloning
+ means to create a new identity, not an exact copy of the old
+ one. For example, twins have different identities. They may look
+ identical, but they have different names, different locations, and
+ may have completely different social networks.
+
+ Then cloning an identity is a more complex operation than copying
+ or assigning a value. We can see what this means in the Qt Object
+ Model.
+
+ \bold{A Qt Object...}
+
+ \list
+
+ \o might have a unique \l{QObject::objectName()}. If we copy a Qt
+ Object, what name should we give the copy?
+
+ \o has a location in an \l{Object Trees and Object Ownership}
+ {object hierarchy}. If we copy a Qt Object, where should the copy
+ be located?
+
+ \o can be connected to other Qt Objects to emit signals to them or
+ to receive signals emitted by them. If we copy a Qt Object, how
+ should we transfer these connections to the copy?
+
+ \o can have \l{Qt's Property System} {new properties} added to it
+ at runtime that are not declared in the C++ class. If we copy a Qt
+ Object, should the copy include the properties that were added to
+ the original?
+
+ \endlist
+
+ For these reasons, Qt Objects should be treated as identities, not
+ as values. Identities are cloned, not copied or assigned, and
+ cloning an identity is a more complex operation than copying or
+ assigning a value. Therefore, QObject and all subclasses of
+ QObject (direct or indirect) have their \l{No copy constructor}
+ {copy constructor and assignment operator} disabled.
+
+ */
diff --git a/doc/src/objectmodel/objecttrees.qdoc b/doc/src/objectmodel/objecttrees.qdoc
new file mode 100644
index 000000000..7ab13ff41
--- /dev/null
+++ b/doc/src/objectmodel/objecttrees.qdoc
@@ -0,0 +1,115 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 objecttrees.html
+ \title Object Trees and Object Ownership
+ \brief Information about the parent-child pattern used to describe
+ object ownership in Qt.
+
+ \section1 Overview
+
+ \link QObject QObjects\endlink organize themselves in object trees.
+ When you create a QObject with another object as parent, it's added to
+ the parent's \link QObject::children() children() \endlink list, and
+ is deleted when the parent is. It turns out that this approach fits
+ the needs of GUI objects very well. For example, a \l QShortcut
+ (keyboard shortcut) is a child of the relevant window, so when the
+ user closes that window, the shorcut is deleted too.
+
+ \l QWidget, the base class of everything that appears on the screen,
+ extends the parent-child relationship. A child normally also becomes a
+ child widget, i.e. it is displayed in its parent's coordinate system
+ and is graphically clipped by its parent's boundaries. For example,
+ when the application deletes a message box after it has been
+ closed, the message box's buttons and label are also deleted, just as
+ we'd want, because the buttons and label are children of the message
+ box.
+
+ You can also delete child objects yourself, and they will remove
+ themselves from their parents. For example, when the user removes a
+ toolbar it may lead to the application deleting one of its \l QToolBar
+ objects, in which case the tool bar's \l QMainWindow parent would
+ detect the change and reconfigure its screen space accordingly.
+
+ The debugging functions \l QObject::dumpObjectTree() and \l
+ QObject::dumpObjectInfo() are often useful when an application looks or
+ acts strangely.
+
+ \target note on the order of construction/destruction of QObjects
+ \section1 Construction/Destruction Order of QObjects
+
+ When \l {QObject} {QObjects} are created on the heap (i.e., created
+ with \e new), a tree can be constructed from them in any order, and
+ later, the objects in the tree can be destroyed in any order. When any
+ QObject in the tree is deleted, if the object has a parent, the
+ destructor automatically removes the object from its parent. If the
+ object has children, the destructor automatically deletes each
+ child. No QObject is deleted twice, regardless of the order of
+ destruction.
+
+ When \l {QObject} {QObjects} are created on the stack, the same
+ behavior applies. Normally, the order of destruction still doesn't
+ present a problem. Consider the following snippet:
+
+ \snippet doc/src/snippets/code/doc_src_objecttrees.qdoc 0
+
+ The parent, \c window, and the child, \c quit, are both \l {QObject}
+ {QObjects} because QPushButton inherits QWidget, and QWidget inherits
+ QObject. This code is correct: the destructor of \c quit is \e not
+ called twice because the C++ language standard \e {(ISO/IEC 14882:2003)}
+ specifies that destructors of local objects are called in the reverse
+ order of their constructors. Therefore, the destructor of
+ the child, \c quit, is called first, and it removes itself from its
+ parent, \c window, before the destructor of \c window is called.
+
+ But now consider what happens if we swap the order of construction, as
+ shown in this second snippet:
+
+ \snippet doc/src/snippets/code/doc_src_objecttrees.qdoc 1
+
+ In this case, the order of destruction causes a problem. The parent's
+ destructor is called first because it was created last. It then calls
+ the destructor of its child, \c quit, which is incorrect because \c
+ quit is a local variable. When \c quit subsequently goes out of scope,
+ its destructor is called again, this time correctly, but the damage has
+ already been done.
+*/
diff --git a/doc/src/objectmodel/properties.qdoc b/doc/src/objectmodel/properties.qdoc
new file mode 100644
index 000000000..47270058b
--- /dev/null
+++ b/doc/src/objectmodel/properties.qdoc
@@ -0,0 +1,278 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 properties.html
+ \title Qt's Property System
+ \brief An overview of Qt's property system.
+
+ Qt provides a sophisticated property system similar to the ones
+ supplied by some compiler vendors. However, as a compiler- and
+ platform-independent library, Qt does not rely on non-standard
+ compiler features like \c __property or \c [property]. The Qt
+ solution works with \e any standard C++ compiler on every platform
+ Qt supports. It is based on the \l {Meta-Object System} that also
+ provides inter-object communication via \l{signals and slots}.
+
+ \section1 Requirements for Declaring Properties
+
+ To declare a property, use the \l {Q_PROPERTY()} {Q_PROPERTY()}
+ macro in a class that inherits QObject.
+
+ \snippet doc/src/snippets/code/doc_src_properties.qdoc 0
+
+ Here are some typical examples of property declarations taken from
+ class QWidget.
+
+ \snippet doc/src/snippets/code/doc_src_properties.qdoc 1
+
+ A property behaves like a class data member, but it has additional
+ features accessible through the \l {Meta-Object System}.
+
+ \list
+
+ \o A \c READ accessor function is required. It is for reading the
+ property value. Ideally, a const function is used for this purpose,
+ and it must return either the property's type or a pointer or
+ reference to that type. e.g., QWidget::focus is a read-only property
+ with \c READ function, QWidget::hasFocus().
+
+ \o A \c WRITE accessor function is optional. It is for setting the
+ property value. It must return void and must take exactly one
+ argument, either of the property's type or a pointer or reference
+ to that type. e.g., QWidget::enabled has the \c WRITE function
+ QWidget::setEnabled(). Read-only properties do not need \c WRITE
+ functions. e.g., QWidget::focus has no \c WRITE function.
+
+ \o A \c RESET function is optional. It is for setting the property
+ back to its context specific default value. e.g., QWidget::cursor
+ has the typical \c READ and \c WRITE functions, QWidget::cursor()
+ and QWidget::setCursor(), and it also has a \c RESET function,
+ QWidget::unsetCursor(), since no call to QWidget::setCursor() can
+ mean \e {reset to the context specific cursor}. The \c RESET
+ function must return void and take no parameters.
+
+ \o A \c NOTIFY signal is optional. If defined, the signal will be
+ emitted whenever the value of the property changes. The signal must
+ take one parameter, which must be of the same type as the property; the
+ parameter will take the new value of the property.
+
+ \o The \c DESIGNABLE attribute indicates whether the property
+ should be visible in the property editor of GUI design tool (e.g.,
+ \l {Qt Designer}). Most properties are \c DESIGNABLE (default
+ true). Instead of true or false, you can specify a boolean
+ member function.
+
+ \o The \c SCRIPTABLE attribute indicates whether this property
+ should be accessible by a scripting engine (default true).
+ Instead of true or false, you can specify a boolean member
+ function.
+
+ \o The \c STORED attribute indicates whether the property should
+ be thought of as existing on its own or as depending on other
+ values. It also indicates whether the property value must be saved
+ when storing the object's state. Most properties are \c STORED
+ (default true), but e.g., QWidget::minimumWidth() has \c STORED
+ false, because its value is just taken from the width component
+ of property QWidget::minimumSize(), which is a QSize.
+
+ \o The \c USER attribute indicates whether the property is
+ designated as the user-facing or user-editable property for the
+ class. Normally, there is only one \c USER property per class
+ (default false). e.g., QAbstractButton::checked is the user
+ editable property for (checkable) buttons. Note that QItemDelegate
+ gets and sets a widget's \c USER property.
+
+ \o The presence of the \c CONSTANT attibute indicates that the property
+ value is constant. For a given object instance, the READ method of a
+ constant property must return the same value every time it is called. This
+ constant value may be different for different instances of the object. A
+ constant property cannot have a WRITE method or a NOTIFY signal.
+
+ \o The presence of the \c FINAL attribute indicates that the property
+ will not be overridden by a derived class. This can be used for performance
+ optimizations in some cases, but is not enforced by moc. Care must be taken
+ never to override a \c FINAL property.
+
+ \endlist
+
+ The \c READ, \c WRITE, and \c RESET functions can be inherited.
+ They can also be virtual. When they are inherited in classes where
+ multiple inheritance is used, they must come from the first
+ inherited class.
+
+ The property type can be any type supported by QVariant, or it can
+ be a user-defined type. In this example, class QDate is considered
+ to be a user-defined type.
+
+ \snippet doc/src/snippets/code/doc_src_properties.qdoc 2
+
+ Because QDate is user-defined, you must include the \c{<QDate>}
+ header file with the property declaration.
+
+ For QMap, QList, and QValueList properties, the property value is
+ a QVariant whose value is the entire list or map. Note that the
+ Q_PROPERTY string cannot contain commas, because commas separate
+ macro arguments. Therefore, you must use \c QMap as the property
+ type instead of \c QMap<QString,QVariant>. For consistency, also
+ use \c QList and \c QValueList instead of \c QList<QVariant> and
+ \c QValueList<QVariant>.
+
+ \section1 Reading and Writing Properties with the Meta-Object System
+
+ A property can be read and written using the generic functions
+ QObject::property() and QObject::setProperty(), without knowing
+ anything about the owning class except the property's name. In
+ the code snippet below, the call to QAbstractButton::setDown() and
+ the call to QObject::setProperty() both set property "down".
+
+ \snippet doc/src/snippets/code/doc_src_properties.qdoc 3
+
+ Accessing a property through its \c WRITE accessor is the better
+ of the two, because it is faster and gives better diagnostics at
+ compile time, but setting the property this way requires that you
+ know about the class at compile time. Accessing properties by name
+ lets you access classes you don't know about at compile time. You
+ can \e discover a class's properties at run time by querying its
+ QObject, QMetaObject, and \l {QMetaProperty} {QMetaProperties}.
+
+ \snippet doc/src/snippets/code/doc_src_properties.qdoc 4
+
+ In the above snippet, QMetaObject::property() is used to get \l
+ {QMetaProperty} {metadata} about each property defined in some
+ unknown class. The property name is fetched from the metadata and
+ passed to QObject::property() to get the \l {QVariant} {value} of
+ the property in the current \l {QObject}{object}.
+
+ \section1 A Simple Example
+
+ Suppose we have a class MyClass, which is derived from QObject and
+ which uses the Q_OBJECT macro in its private section. We want to
+ declare a property in MyClass to keep track of a priorty
+ value. The name of the property will be \e priority, and its type
+ will be an enumeration type named \e Priority, which is defined in
+ MyClass.
+
+ We declare the property with the Q_PROPERTY() macro in the private
+ section of the class. The required \c READ function is named \c
+ priority, and we include a \c WRITE function named \c setPriority.
+ The enumeration type must be registered with the \l {Meta-Object
+ System} using the Q_ENUMS() macro. Registering an enumeration type
+ makes the enumerator names available for use in calls to
+ QObject::setProperty(). We must also provide our own declarations
+ for the \c READ and \c WRITE functions. The declaration of MyClass
+ then might look like this:
+
+ \snippet doc/src/snippets/code/doc_src_properties.qdoc 5
+
+ The \c READ function is const and returns the property type. The
+ \c WRITE function returns void and has exactly one parameter of
+ the property type. The meta-object compiler enforces these
+ requirements.
+
+ Given a pointer to an instance of MyClass or a pointer to an
+ instance of QObject that happens to be an instance of MyClass, we
+ have two ways to set its priority property.
+
+ \snippet doc/src/snippets/code/doc_src_properties.qdoc 6
+
+ In the example, the enumeration type used for the property type
+ was locally declared in MyClass. Had it been declared in another
+ class, its fully qualified name (i.e., OtherClass::Priority) would
+ be required. In addition, that other class must also inherit
+ QObject and register the enum type using Q_ENUMS().
+
+ A similar macro, Q_FLAGS(), is also available. Like Q_ENUMS(), it
+ registers an enumeration type, but it marks the type as being a
+ set of \e flags, i.e. values that can be OR'd together. An I/O
+ class might have enumeration values \c Read and \c Write and then
+ QObject::setProperty() could accept \c{Read | Write}. Q_FLAGS()
+ should be used to register this enumeration type.
+
+ \section1 Dynamic Properties
+
+ QObject::setProperty() can also be used to add \e new properties
+ to an instance of a class at runtime. When it is called with a
+ name and a value, if a property with the given name exists in the
+ QObject, and if the given value is compatible with the property's
+ type, the value is stored in the property, and true is returned.
+ If the value is \e not compatible with the property's type, the
+ property is \e not changed, and false is returned. But if the
+ property with the given name doesn't exist in the QObject (i.e.,
+ if it wasn't declared with Q_PROPERTY(), a new property with the
+ given name and value is automatically added to the QObject, but
+ false is still returned. This means that a return of false can't
+ be used to determine whether a particular property was actually
+ set, unless you know in advance that the property already exists
+ in the QObject.
+
+ Note that \e dynamic properties are added on a per instance basis,
+ i.e., they are added to QObject, not QMetaObject. A property can
+ be removed from an instance by passing the property name and an
+ invalid QVariant value to QObject::setProperty(). The default
+ constructor for QVariant constructs an invalid QVariant.
+
+ Dynamic properties can be queried with QObject::property(), just
+ like properties declared at compile time with Q_PROPERTY().
+
+ \sa {Meta-Object System}, {Signals and Slots}
+
+ \section1 Properties and Custom Types
+
+ Custom types used by properties need to be registered using the
+ Q_DECLARE_METATYPE() macro so that their values can be stored in
+ QVariant objects. This makes them suitable for use with both
+ static properties declared using the Q_PROPERTY() macro in class
+ definitions and dynamic properties created at run-time.
+
+ \sa Q_DECLARE_METATYPE(), QMetaType, QVariant
+
+ \section1 Adding Additional Information to a Class
+
+ Connected to the property system is an additional macro,
+ Q_CLASSINFO(), that can be used to attach additional
+ \e{name}--\e{value} pairs to a class's meta-object, for example:
+
+ \snippet doc/src/snippets/code/doc_src_properties.qdoc 7
+
+ Like other meta-data, class information is accessible at run-time
+ through the meta-object; see QMetaObject::classInfo() for details.
+*/
diff --git a/doc/src/objectmodel/signalsandslots.qdoc b/doc/src/objectmodel/signalsandslots.qdoc
new file mode 100644
index 000000000..951590474
--- /dev/null
+++ b/doc/src/objectmodel/signalsandslots.qdoc
@@ -0,0 +1,421 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 signalsandslots.html
+ \title Signals and Slots
+ \brief An overview of Qt's signals and slots inter-object
+ communication mechanism.
+
+ Signals and slots are used for communication between objects. The
+ signals and slots mechanism is a central feature of Qt and
+ probably the part that differs most from the features provided by
+ other frameworks.
+
+ \tableofcontents
+
+ \section1 Introduction
+
+ In GUI programming, when we change one widget, we often want
+ another widget to be notified. More generally, we want objects of
+ any kind to be able to communicate with one another. For example,
+ if a user clicks a \gui{Close} button, we probably want the
+ window's \l{QWidget::close()}{close()} function to be called.
+
+ Older toolkits achieve this kind of communication using
+ callbacks. A callback is a pointer to a function, so if you want
+ a processing function to notify you about some event you pass a
+ pointer to another function (the callback) to the processing
+ function. The processing function then calls the callback when
+ appropriate. Callbacks have two fundamental flaws: Firstly, they
+ are not type-safe. We can never be certain that the processing
+ function will call the callback with the correct arguments.
+ Secondly, the callback is strongly coupled to the processing
+ function since the processing function must know which callback
+ to call.
+
+ \section1 Signals and Slots
+
+ In Qt, we have an alternative to the callback technique: We use
+ signals and slots. A signal is emitted when a particular event
+ occurs. Qt's widgets have many predefined signals, but we can
+ always subclass widgets to add our own signals to them. A slot
+ is a function that is called in response to a particular signal.
+ Qt's widgets have many pre-defined slots, but it is common
+ practice to subclass widgets and add your own slots so that you
+ can handle the signals that you are interested in.
+
+ \img abstract-connections.png
+ \omit
+ \caption An abstract view of some signals and slots connections
+ \endomit
+
+ The signals and slots mechanism is type safe: The signature of a
+ signal must match the signature of the receiving slot. (In fact a
+ slot may have a shorter signature than the signal it receives
+ because it can ignore extra arguments.) Since the signatures are
+ compatible, the compiler can help us detect type mismatches.
+ Signals and slots are loosely coupled: A class which emits a
+ signal neither knows nor cares which slots receive the signal.
+ Qt's signals and slots mechanism ensures that if you connect a
+ signal to a slot, the slot will be called with the signal's
+ parameters at the right time. Signals and slots can take any
+ number of arguments of any type. They are completely type safe.
+
+ All classes that inherit from QObject or one of its subclasses
+ (e.g., QWidget) can contain signals and slots. Signals are emitted by
+ objects when they change their state in a way that may be interesting
+ to other objects. This is all the object does to communicate. It
+ does not know or care whether anything is receiving the signals it
+ emits. This is true information encapsulation, and ensures that the
+ object can be used as a software component.
+
+ Slots can be used for receiving signals, but they are also normal
+ member functions. Just as an object does not know if anything receives
+ its signals, a slot does not know if it has any signals connected to
+ it. This ensures that truly independent components can be created with
+ Qt.
+
+ You can connect as many signals as you want to a single slot, and a
+ signal can be connected to as many slots as you need. It is even
+ possible to connect a signal directly to another signal. (This will
+ emit the second signal immediately whenever the first is emitted.)
+
+ Together, signals and slots make up a powerful component programming
+ mechanism.
+
+ \section1 A Small Example
+
+ A minimal C++ class declaration might read:
+
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.h 0
+
+ A small QObject-based class might read:
+
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.h 1
+ \codeline
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.h 2
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.h 3
+
+ The QObject-based version has the same internal state, and provides
+ public methods to access the state, but in addition it has support
+ for component programming using signals and slots. This class can
+ tell the outside world that its state has changed by emitting a
+ signal, \c{valueChanged()}, and it has a slot which other objects
+ can send signals to.
+
+ All classes that contain signals or slots must mention
+ Q_OBJECT at the top of their declaration. They must also derive
+ (directly or indirectly) from QObject.
+
+ Slots are implemented by the application programmer.
+ Here is a possible implementation of the \c{Counter::setValue()}
+ slot:
+
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 0
+
+ The \c{emit} line emits the signal \c valueChanged() from the
+ object, with the new value as argument.
+
+ In the following code snippet, we create two \c Counter objects
+ and connect the first object's \c valueChanged() signal to the
+ second object's \c setValue() slot using QObject::connect():
+
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 1
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 2
+ \codeline
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 3
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 4
+
+ Calling \c{a.setValue(12)} makes \c{a} emit a
+ \c{valueChanged(12)} signal, which \c{b} will receive in its
+ \c{setValue()} slot, i.e. \c{b.setValue(12)} is called. Then
+ \c{b} emits the same \c{valueChanged()} signal, but since no slot
+ has been connected to \c{b}'s \c{valueChanged()} signal, the
+ signal is ignored.
+
+ Note that the \c{setValue()} function sets the value and emits
+ the signal only if \c{value != m_value}. This prevents infinite
+ looping in the case of cyclic connections (e.g., if
+ \c{b.valueChanged()} were connected to \c{a.setValue()}).
+
+ By default, for every connection you make, a signal is emitted;
+ two signals are emitted for duplicate connections. You can break
+ all of these connections with a single disconnect() call.
+ If you pass the Qt::UniqueConnection \a type, the connection will only
+ be made if it is not a duplicate. If there is already a duplicate
+ (exact same signal to the exact same slot on the same objects),
+ the connection will fail and connect will return false
+
+ This example illustrates that objects can work together without needing to
+ know any information about each other. To enable this, the objects only
+ need to be connected together, and this can be achieved with some simple
+ QObject::connect() function calls, or with \c{uic}'s
+ \l{Using a Designer UI File in Your Application#Automatic Connections}
+ {automatic connections} feature.
+
+ \section1 Building the Example
+
+ The C++ preprocessor changes or removes the \c{signals},
+ \c{slots}, and \c{emit} keywords so that the compiler is
+ presented with standard C++.
+
+ By running the \l moc on class definitions that contain signals
+ or slots, a C++ source file is produced which should be compiled
+ and linked with the other object files for the application. If
+ you use \l qmake, the makefile rules to automatically invoke \c
+ moc will be added to your project's makefile.
+
+ \section1 Signals
+
+ Signals are emitted by an object when its internal state has changed
+ in some way that might be interesting to the object's client or owner.
+ Only the class that defines a signal and its subclasses can emit the
+ signal.
+
+ When a signal is emitted, the slots connected to it are usually
+ executed immediately, just like a normal function call. When this
+ happens, the signals and slots mechanism is totally independent of
+ any GUI event loop. Execution of the code following the \c emit
+ statement will occur once all slots have returned. The situation is
+ slightly different when using \l{Qt::ConnectionType}{queued
+ connections}; in such a case, the code following the \c emit keyword
+ will continue immediately, and the slots will be executed later.
+
+ If several slots are connected to one signal, the slots will be
+ executed one after the other, in the order they have been connected,
+ when the signal is emitted.
+
+ Signals are automatically generated by the \l moc and must not be
+ implemented in the \c .cpp file. They can never have return types
+ (i.e. use \c void).
+
+ A note about arguments: Our experience shows that signals and slots
+ are more reusable if they do not use special types. If
+ QScrollBar::valueChanged() were to use a special type such as the
+ hypothetical QScrollBar::Range, it could only be connected to
+ slots designed specifically for QScrollBar. Connecting different
+ input widgets together would be impossible.
+
+ \section1 Slots
+
+ A slot is called when a signal connected to it is emitted. Slots are
+ normal C++ functions and can be called normally; their only special
+ feature is that signals can be connected to them.
+
+ Since slots are normal member functions, they follow the normal C++
+ rules when called directly. However, as slots, they can be invoked
+ by any component, regardless of its access level, via a signal-slot
+ connection. This means that a signal emitted from an instance of an
+ arbitrary class can cause a private slot to be invoked in an instance
+ of an unrelated class.
+
+ You can also define slots to be virtual, which we have found quite
+ useful in practice.
+
+ Compared to callbacks, signals and slots are slightly slower
+ because of the increased flexibility they provide, although the
+ difference for real applications is insignificant. In general,
+ emitting a signal that is connected to some slots, is
+ approximately ten times slower than calling the receivers
+ directly, with non-virtual function calls. This is the overhead
+ required to locate the connection object, to safely iterate over
+ all connections (i.e. checking that subsequent receivers have not
+ been destroyed during the emission), and to marshall any
+ parameters in a generic fashion. While ten non-virtual function
+ calls may sound like a lot, it's much less overhead than any \c
+ new or \c delete operation, for example. As soon as you perform a
+ string, vector or list operation that behind the scene requires
+ \c new or \c delete, the signals and slots overhead is only
+ responsible for a very small proportion of the complete function
+ call costs.
+
+ The same is true whenever you do a system call in a slot; or
+ indirectly call more than ten functions. On an i586-500, you can
+ emit around 2,000,000 signals per second connected to one
+ receiver, or around 1,200,000 per second connected to two
+ receivers. The simplicity and flexibility of the signals and
+ slots mechanism is well worth the overhead, which your users
+ won't even notice.
+
+ Note that other libraries that define variables called \c signals
+ or \c slots may cause compiler warnings and errors when compiled
+ alongside a Qt-based application. To solve this problem, \c
+ #undef the offending preprocessor symbol.
+
+ \section1 Meta-Object Information
+
+ The meta-object compiler (\l moc) parses the class declaration in
+ a C++ file and generates C++ code that initializes the
+ meta-object. The meta-object contains the names of all the signal
+ and slot members, as well as pointers to these functions.
+
+ The meta-object contains additional information such as the
+ object's \link QObject::className() class name\endlink. You can
+ also check if an object \link QObject::inherits()
+ inherits\endlink a specific class, for example:
+
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 5
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 6
+
+ The meta-object information is also used by qobject_cast<T>(), which
+ is similar to QObject::inherits() but is less error-prone:
+
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 7
+
+ See \l{Meta-Object System} for more information.
+
+ \section1 A Real Example
+
+ Here is a simple commented example of a widget.
+
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 0
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 1
+ \codeline
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 2
+ \codeline
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 3
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 4
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 5
+
+ \c LcdNumber inherits QObject, which has most of the signal-slot
+ knowledge, via QFrame and QWidget. It is somewhat similar to the
+ built-in QLCDNumber widget.
+
+ The Q_OBJECT macro is expanded by the preprocessor to declare
+ several member functions that are implemented by the \c{moc}; if
+ you get compiler errors along the lines of "undefined reference
+ to vtable for \c{LcdNumber}", you have probably forgotten to
+ \l{moc}{run the moc} or to include the moc output in the link
+ command.
+
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 6
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 7
+
+ It's not obviously relevant to the moc, but if you inherit
+ QWidget you almost certainly want to have the \c parent argument
+ in your constructor and pass it to the base class's constructor.
+
+ Some destructors and member functions are omitted here; the \c
+ moc ignores member functions.
+
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 8
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 9
+
+ \c LcdNumber emits a signal when it is asked to show an impossible
+ value.
+
+ If you don't care about overflow, or you know that overflow
+ cannot occur, you can ignore the \c overflow() signal, i.e. don't
+ connect it to any slot.
+
+ If on the other hand you want to call two different error
+ functions when the number overflows, simply connect the signal to
+ two different slots. Qt will call both (in arbitrary order).
+
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 10
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 11
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 12
+ \codeline
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 13
+
+ A slot is a receiving function used to get information about
+ state changes in other widgets. \c LcdNumber uses it, as the code
+ above indicates, to set the displayed number. Since \c{display()}
+ is part of the class's interface with the rest of the program,
+ the slot is public.
+
+ Several of the example programs connect the
+ \l{QScrollBar::valueChanged()}{valueChanged()} signal of a
+ QScrollBar to the \c display() slot, so the LCD number
+ continuously shows the value of the scroll bar.
+
+ Note that \c display() is overloaded; Qt will select the
+ appropriate version when you connect a signal to the slot. With
+ callbacks, you'd have to find five different names and keep track
+ of the types yourself.
+
+ Some irrelevant member functions have been omitted from this
+ example.
+
+ \section1 Advanced Signals and Slots Usage
+
+ For cases where you may require information on the sender of the
+ signal, Qt provides the QObject::sender() function, which returns
+ a pointer to the object that sent the signal.
+
+ The QSignalMapper class is provided for situations where many
+ signals are connected to the same slot and the slot needs to
+ handle each signal differently.
+
+ Suppose you have three push buttons that determine which file you
+ will open: "Tax File", "Accounts File", or "Report File".
+
+ In order to open the correct file, you use QSignalMapper::setMapping() to
+ map all the clicked() signals to a QSignalMapper object. Then you connect
+ the file's QPushButton::clicked() signal to the QSignalMapper::map() slot.
+
+ \snippet doc/src/snippets/signalmapper/filereader.cpp 0
+
+ Then, you connect the \l{QSignalMapper::}{mapped()} signal to
+ \c{readFile()} where a different file will be opened, depending on
+ which push button is pressed.
+
+ \snippet doc/src/snippets/signalmapper/filereader.cpp 1
+
+ \sa {Meta-Object System}, {Qt's Property System}
+
+ \target 3rd Party Signals and Slots
+ \section2 Using Qt with 3rd Party Signals and Slots
+
+ It is possible to use Qt with a 3rd party signal/slot mechanism.
+ You can even use both mechanisms in the same project. Just add the
+ following line to your qmake project (.pro) file.
+
+ \snippet doc/src/snippets/code/doc_src_containers.qdoc 22
+
+ It tells Qt not to define the moc keywords \c{signals}, \c{slots},
+ and \c{emit}, because these names will be used by a 3rd party
+ library, e.g. Boost. Then to continue using Qt signals and slots
+ with the \c{no_keywords} flag, simply replace all uses of the Qt
+ moc keywords in your sources with the corresponding Qt macros
+ Q_SIGNALS (or Q_SIGNAL), Q_SLOTS (or Q_SLOT), and Q_EMIT.
+*/
diff --git a/doc/src/objecttrees.qdoc b/doc/src/objecttrees.qdoc
deleted file mode 100644
index 183f7cd3b..000000000
--- a/doc/src/objecttrees.qdoc
+++ /dev/null
@@ -1,117 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
-\page objecttrees.html
-\title Object Trees and Object Ownership
-\ingroup architecture
-\brief Information about the parent-child pattern used to describe
-object ownership in Qt.
-
-\section1 Overview
-
-\link QObject QObjects\endlink organize themselves in object trees.
-When you create a QObject with another object as parent, it's added to
-the parent's \link QObject::children() children() \endlink list, and
-is deleted when the parent is. It turns out that this approach fits
-the needs of GUI objects very well. For example, a \l QShortcut
-(keyboard shortcut) is a child of the relevant window, so when the
-user closes that window, the shorcut is deleted too.
-
-\l QWidget, the base class of everything that appears on the screen,
-extends the parent-child relationship. A child normally also becomes a
-child widget, i.e. it is displayed in its parent's coordinate system
-and is graphically clipped by its parent's boundaries. For example,
-when the application deletes a message box after it has been
-closed, the message box's buttons and label are also deleted, just as
-we'd want, because the buttons and label are children of the message
-box.
-
-You can also delete child objects yourself, and they will remove
-themselves from their parents. For example, when the user removes a
-toolbar it may lead to the application deleting one of its \l QToolBar
-objects, in which case the tool bar's \l QMainWindow parent would
-detect the change and reconfigure its screen space accordingly.
-
-The debugging functions \l QObject::dumpObjectTree() and \l
-QObject::dumpObjectInfo() are often useful when an application looks or
-acts strangely.
-
-\target note on the order of construction/destruction of QObjects
-\section1 Construction/Destruction Order of QObjects
-
-When \l {QObject} {QObjects} are created on the heap (i.e., created
-with \e new), a tree can be constructed from them in any order, and
-later, the objects in the tree can be destroyed in any order. When any
-QObject in the tree is deleted, if the object has a parent, the
-destructor automatically removes the object from its parent. If the
-object has children, the destructor automatically deletes each
-child. No QObject is deleted twice, regardless of the order of
-destruction.
-
-When \l {QObject} {QObjects} are created on the stack, the same
-behavior applies. Normally, the order of destruction still doesn't
-present a problem. Consider the following snippet:
-
-\snippet doc/src/snippets/code/doc_src_objecttrees.qdoc 0
-
-The parent, \c window, and the child, \c quit, are both \l {QObject}
-{QObjects} because QPushButton inherits QWidget, and QWidget inherits
-QObject. This code is correct: the destructor of \c quit is \e not
-called twice because the C++ language standard \e {(ISO/IEC 14882:2003)}
-specifies that destructors of local objects are called in the reverse
-order of their constructors. Therefore, the destructor of
-the child, \c quit, is called first, and it removes itself from its
-parent, \c window, before the destructor of \c window is called.
-
-But now consider what happens if we swap the order of construction, as
-shown in this second snippet:
-
-\snippet doc/src/snippets/code/doc_src_objecttrees.qdoc 1
-
-In this case, the order of destruction causes a problem. The parent's
-destructor is called first because it was created last. It then calls
-the destructor of its child, \c quit, which is incorrect because \c
-quit is a local variable. When \c quit subsequently goes out of scope,
-its destructor is called again, this time correctly, but the damage has
-already been done.
-
-*/
diff --git a/doc/src/overviews.qdoc b/doc/src/overviews.qdoc
index f4085f511..e4c2c7e3d 100644
--- a/doc/src/overviews.qdoc
+++ b/doc/src/overviews.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -46,3 +46,28 @@
\generatelist overviews
*/
+
+/*!
+ \group frameworks-technologies
+ \title Frameworks and Technologies
+
+ \brief Documentation about the frameworks and technologies in Qt
+
+ These documents dive into the frameworks of classes that Qt provides,
+ and provide background information about the technical solutions used
+ in Qt's architecture.
+
+ \generatelist{related}
+*/
+
+/*!
+ \group best-practices
+ \title How-To's and Best Practices
+
+ \brief How-To Guides and Best Practices
+
+ These documents provide guidelines and best practices explaining
+ how to use Qt to solve specific technical problems.
+
+ \generatelist{related}
+*/
diff --git a/doc/src/painting-and-printing/coordsys.qdoc b/doc/src/painting-and-printing/coordsys.qdoc
new file mode 100644
index 000000000..08b0ae732
--- /dev/null
+++ b/doc/src/painting-and-printing/coordsys.qdoc
@@ -0,0 +1,477 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 coordsys.html
+ \title The Coordinate System
+ \brief Information about the coordinate system used by the paint
+ system.
+
+ \previouspage Drawing and Filling
+ \contentspage The Paint System
+ \nextpage Reading and Writing Image Files
+
+ The coordinate system is controlled by the QPainter
+ class. Together with the QPaintDevice and QPaintEngine classes,
+ QPainter form the basis of Qt's painting system, Arthur. QPainter
+ is used to perform drawing operations, QPaintDevice is an
+ abstraction of a two-dimensional space that can be painted on
+ using a QPainter, and QPaintEngine provides the interface that the
+ painter uses to draw onto different types of devices.
+
+ The QPaintDevice class is the base class of objects that can be
+ painted: Its drawing capabilities are inherited by the QWidget,
+ QPixmap, QPicture, QImage, and QPrinter classes. The default
+ coordinate system of a paint device has its origin at the top-left
+ corner. The \e x values increase to the right and the \e y values
+ increase downwards. The default unit is one pixel on pixel-based
+ devices and one point (1/72 of an inch) on printers.
+
+ The mapping of the logical QPainter coordinates to the physical
+ QPaintDevice coordinates are handled by QPainter's transformation
+ matrix, viewport and "window". The logical and physical coordinate
+ systems coincide by default. QPainter also supports coordinate
+ transformations (e.g. rotation and scaling).
+
+ \tableofcontents
+
+ \section1 Rendering
+
+ \section2 Logical Representation
+
+ The size (width and height) of a graphics primitive always
+ correspond to its mathematical model, ignoring the width of the
+ pen it is rendered with:
+
+ \table
+ \row
+ \o \inlineimage coordinatesystem-rect.png
+ \o \inlineimage coordinatesystem-line.png
+ \row
+ \o QRect(1, 2, 6, 4)
+ \o QLine(2, 7, 6, 1)
+ \endtable
+
+ \section2 Aliased Painting
+
+ When drawing, the pixel rendering is controlled by the
+ QPainter::Antialiasing render hint.
+
+ The \l {QPainter::RenderHint}{RenderHint} enum is used to specify
+ flags to QPainter that may or may not be respected by any given
+ engine. The QPainter::Antialiasing value indicates that the engine
+ should antialias edges of primitives if possible, i.e. smoothing
+ the edges by using different color intensities.
+
+ But by default the painter is \e aliased and other rules apply:
+ When rendering with a one pixel wide pen the pixels will be
+ rendered to the \e {right and below the mathematically defined
+ points}. For example:
+
+ \table
+ \row
+ \o \inlineimage coordinatesystem-rect-raster.png
+ \o \inlineimage coordinatesystem-line-raster.png
+
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_coordsys.qdoc 0
+
+ \o
+ \snippet doc/src/snippets/code/doc_src_coordsys.qdoc 1
+ \endtable
+
+ When rendering with a pen with an even number of pixels, the
+ pixels will be rendered symetrically around the mathematical
+ defined points, while rendering with a pen with an odd number of
+ pixels, the spare pixel will be rendered to the right and below
+ the mathematical point as in the one pixel case. See the QRectF
+ diagrams below for concrete examples.
+
+ \table
+ \header
+ \o {3,1} QRectF
+ \row
+ \o \inlineimage qrect-diagram-zero.png
+ \o \inlineimage qrectf-diagram-one.png
+ \row
+ \o Logical representation
+ \o One pixel wide pen
+ \row
+ \o \inlineimage qrectf-diagram-two.png
+ \o \inlineimage qrectf-diagram-three.png
+ \row
+ \o Two pixel wide pen
+ \o Three pixel wide pen
+ \endtable
+
+ Note that for historical reasons the return value of the
+ QRect::right() and QRect::bottom() functions deviate from the true
+ bottom-right corner of the rectangle.
+
+ QRect's \l {QRect::right()}{right()} function returns \l
+ {QRect::left()}{left()} + \l {QRect::width()}{width()} - 1 and the
+ \l {QRect::bottom()}{bottom()} function returns \l
+ {QRect::top()}{top()} + \l {QRect::height()}{height()} - 1. The
+ bottom-right green point in the diagrams shows the return
+ coordinates of these functions.
+
+ We recommend that you simply use QRectF instead: The QRectF class
+ defines a rectangle in the plane using floating point coordinates
+ for accuracy (QRect uses integer coordinates), and the
+ QRectF::right() and QRectF::bottom() functions \e do return the
+ true bottom-right corner.
+
+ Alternatively, using QRect, apply \l {QRect::x()}{x()} + \l
+ {QRect::width()}{width()} and \l {QRect::y()}{y()} + \l
+ {QRect::height()}{height()} to find the bottom-right corner, and
+ avoid the \l {QRect::right()}{right()} and \l
+ {QRect::bottom()}{bottom()} functions.
+
+ \section2 Anti-aliased Painting
+
+ If you set QPainter's \l {QPainter::Antialiasing}{anti-aliasing}
+ render hint, the pixels will be rendered symetrically on both
+ sides of the mathematically defined points:
+
+ \table
+ \row
+ \o \inlineimage coordinatesystem-rect-antialias.png
+ \o \inlineimage coordinatesystem-line-antialias.png
+ \row
+ \o
+
+ \snippet doc/src/snippets/code/doc_src_coordsys.qdoc 2
+
+ \o
+ \snippet doc/src/snippets/code/doc_src_coordsys.qdoc 3
+ \endtable
+
+ \section1 Transformations
+
+ By default, the QPainter operates on the associated device's own
+ coordinate system, but it also has complete support for affine
+ coordinate transformations.
+
+ You can scale the coordinate system by a given offset using the
+ QPainter::scale() function, you can rotate it clockwise using the
+ QPainter::rotate() function and you can translate it (i.e. adding
+ a given offset to the points) using the QPainter::translate()
+ function.
+
+ \table
+ \row
+ \o \inlineimage qpainter-clock.png
+ \o \inlineimage qpainter-rotation.png
+ \o \inlineimage qpainter-scale.png
+ \o \inlineimage qpainter-translation.png
+ \row
+ \o nop
+ \o \l {QPainter::rotate()}{rotate()}
+ \o \l {QPainter::scale()}{scale()}
+ \o \l {QPainter::translate()}{translate()}
+ \endtable
+
+ You can also twist the coordinate system around the origin using
+ the QPainter::shear() function. See the \l {demos/affine}{Affine
+ Transformations} demo for a visualization of a sheared coordinate
+ system. All the transformation operations operate on QPainter's
+ transformation matrix that you can retrieve using the
+ QPainter::worldTransform() function. A matrix transforms a point
+ in the plane to another point.
+
+ If you need the same transformations over and over, you can also
+ use QTransform objects and the QPainter::worldTransform() and
+ QPainter::setWorldTransform() functions. You can at any time save the
+ QPainter's transformation matrix by calling the QPainter::save()
+ function which saves the matrix on an internal stack. The
+ QPainter::restore() function pops it back.
+
+ One frequent need for the transformation matrix is when reusing
+ the same drawing code on a variety of paint devices. Without
+ transformations, the results are tightly bound to the resolution
+ of the paint device. Printers have high resolution, e.g. 600 dots
+ per inch, whereas screens often have between 72 and 100 dots per
+ inch.
+
+ \table 100%
+ \header
+ \o {2,1} Analog Clock Example
+ \row
+ \o \inlineimage coordinatesystem-analogclock.png
+ \o
+ The Analog Clock example shows how to draw the contents of a
+ custom widget using QPainter's transformation matrix.
+
+ Qt's example directory provides a complete walk-through of the
+ example. Here, we will only review the example's \l
+ {QWidget::paintEvent()}{paintEvent()} function to see how we can
+ use the transformation matrix (i.e. QPainter's matrix functions)
+ to draw the clock's face.
+
+ We recommend compiling and running this example before you read
+ any further. In particular, try resizing the window to different
+ sizes.
+
+ \row
+ \o {2,1}
+
+ \snippet examples/widgets/analogclock/analogclock.cpp 9
+
+ First, we set up the painter. We translate the coordinate system
+ so that point (0, 0) is in the widget's center, instead of being
+ at the top-left corner. We also scale the system by \c side / 100,
+ where \c side is either the widget's width or the height,
+ whichever is shortest. We want the clock to be square, even if the
+ device isn't.
+
+ This will give us a 200 x 200 square area, with the origin (0, 0)
+ in the center, that we can draw on. What we draw will show up in
+ the largest possible square that will fit in the widget.
+
+ See also the \l {Window-Viewport Conversion} section.
+
+ \snippet examples/widgets/analogclock/analogclock.cpp 18
+
+ We draw the clock's hour hand by rotating the coordinate system
+ and calling QPainter::drawConvexPolygon(). Thank's to the
+ rotation, it's drawn pointed in the right direction.
+
+ The polygon is specified as an array of alternating \e x, \e y
+ values, stored in the \c hourHand static variable (defined at the
+ beginning of the function), which corresponds to the four points
+ (2, 0), (0, 2), (-2, 0), and (0, -25).
+
+ The calls to QPainter::save() and QPainter::restore() surrounding
+ the code guarantees that the code that follows won't be disturbed
+ by the transformations we've used.
+
+ \snippet examples/widgets/analogclock/analogclock.cpp 24
+
+ We do the same for the clock's minute hand, which is defined by
+ the four points (1, 0), (0, 1), (-1, 0), and (0, -40). These
+ coordinates specify a hand that is thinner and longer than the
+ minute hand.
+
+ \snippet examples/widgets/analogclock/analogclock.cpp 27
+
+ Finally, we draw the clock face, which consists of twelve short
+ lines at 30-degree intervals. At the end of that, the painter is
+ rotated in a way which isn't very useful, but we're done with
+ painting so that doesn't matter.
+ \endtable
+
+ For a demonstation of Qt's ability to perform affine
+ transformations on painting operations, see the \l
+ {demos/affine}{Affine Transformations} demo which allows the user
+ to experiment with the transformation operations. See also the \l
+ {painting/transformations}{Transformations} example which shows
+ how transformations influence the way that QPainter renders
+ graphics primitives. In particular, it shows how the order of
+ transformations affects the result.
+
+ For more information about the transformation matrix, see the
+ QTransform documentation.
+
+ \section1 Window-Viewport Conversion
+
+ When drawing with QPainter, we specify points using logical
+ coordinates which then are converted into the physical coordinates
+ of the paint device.
+
+ The mapping of the logical coordinates to the physical coordinates
+ are handled by QPainter's world transformation \l
+ {QPainter::worldTransform()}{worldTransform()} (described in the \l
+ Transformations section), and QPainter's \l
+ {QPainter::viewport()}{viewport()} and \l
+ {QPainter::window()}{window()}. The viewport represents the
+ physical coordinates specifying an arbitrary rectangle. The
+ "window" describes the same rectangle in logical coordinates. By
+ default the logical and physical coordinate systems coincide, and
+ are equivalent to the paint device's rectangle.
+
+ Using window-viewport conversion you can make the logical
+ coordinate system fit your preferences. The mechanism can also be
+ used to make the drawing code independent of the paint device. You
+ can, for example, make the logical coordinates extend from (-50,
+ -50) to (50, 50) with (0, 0) in the center by calling the
+ QPainter::setWindow() function:
+
+ \snippet doc/src/snippets/code/doc_src_coordsys.qdoc 4
+
+ Now, the logical coordinates (-50,-50) correspond to the paint
+ device's physical coordinates (0, 0). Independent of the paint
+ device, your painting code will always operate on the specified
+ logical coordinates.
+
+ By setting the "window" or viewport rectangle, you perform a
+ linear transformation of the coordinates. Note that each corner of
+ the "window" maps to the corresponding corner of the viewport, and
+ vice versa. For that reason it normally is a good idea to let the
+ viewport and "window" maintain the same aspect ratio to prevent
+ deformation:
+
+ \snippet doc/src/snippets/code/doc_src_coordsys.qdoc 5
+
+ If we make the logical coordinate system a square, we should also
+ make the viewport a square using the QPainter::setViewport()
+ function. In the example above we make it equivalent to the
+ largest square that fit into the paint device's rectangle. By
+ taking the paint device's size into consideration when setting the
+ window or viewport, it is possible to keep the drawing code
+ independent of the paint device.
+
+ Note that the window-viewport conversion is only a linear
+ transformation, i.e. it does not perform clipping. This means that
+ if you paint outside the currently set "window", your painting is
+ still transformed to the viewport using the same linear algebraic
+ approach.
+
+ \image coordinatesystem-transformations.png
+
+ The viewport, "window" and transformation matrix determine how
+ logical QPainter coordinates map to the paint device's physical
+ coordinates. By default the world transformation matrix is the
+ identity matrix, and the "window" and viewport settings are
+ equivalent to the paint device's settings, i.e. the world,
+ "window" and device coordinate systems are equivalent, but as we
+ have seen, the systems can be manipulated using transformation
+ operations and window-viewport conversion. The illustration above
+ describes the process.
+
+ \omit
+ \section1 Related Classes
+
+ Qt's paint system, Arthur, is primarily based on the QPainter,
+ QPaintDevice, and QPaintEngine classes:
+
+ \table
+ \header \o Class \o Description
+ \row
+ \o QPainter
+ \o
+ The QPainter class performs low-level painting on widgets and
+ other paint devices. QPainter can operate on any object that
+ inherits the QPaintDevice class, using the same code.
+ \row
+ \o QPaintDevice
+ \o
+ The QPaintDevice class is the base class of objects that can be
+ painted. Qt provides several devices: QWidget, QImage, QPixmap,
+ QPrinter and QPicture, and other devices can also be defined by
+ subclassing QPaintDevice.
+ \row
+ \o QPaintEngine
+ \o
+ The QPaintEngine class provides an abstract definition of how
+ QPainter draws to a given device on a given platform. Qt 4
+ provides several premade implementations of QPaintEngine for the
+ different painter backends we support; it provides one paint
+ engine for each supported window system and painting
+ frameworkt. You normally don't need to use this class directly.
+ \endtable
+
+ The 2D transformations of the coordinate system are specified
+ using the QTransform class:
+
+ \table
+ \header \o Class \o Description
+ \row
+ \o QTransform
+ \o
+ A 3 x 3 transformation matrix. Use QTransform to rotate, shear,
+ scale, or translate the coordinate system.
+ \endtable
+
+ In addition Qt provides several graphics primitive classes. Some
+ of these classes exist in two versions: an \c{int}-based version
+ and a \c{qreal}-based version. For these, the \c qreal version's
+ name is suffixed with an \c F.
+
+ \table
+ \header \o Class \o Description
+ \row
+ \o \l{QPoint}(\l{QPointF}{F})
+ \o
+ A single 2D point in the coordinate system. Most functions in Qt
+ that deal with points can accept either a QPoint, a QPointF, two
+ \c{int}s, or two \c{qreal}s.
+ \row
+ \o \l{QSize}(\l{QSizeF}{F})
+ \o
+ A single 2D vector. Internally, QPoint and QSize are the same, but
+ a point is not the same as a size, so both classes exist. Again,
+ most functions accept either QSizeF, a QSize, two \c{int}s, or two
+ \c{qreal}s.
+ \row
+ \o \l{QRect}(\l{QRectF}{F})
+ \o
+ A 2D rectangle. Most functions accept either a QRectF, a QRect,
+ four \c{int}s, or four \c {qreal}s.
+ \row
+ \o \l{QLine}(\l{QLineF}{F})
+ \o
+ A 2D finite-length line, characterized by a start point and an end
+ point.
+ \row
+ \o \l{QPolygon}(\l{QPolygonF}{F})
+ \o
+ A 2D polygon. A polygon is a vector of \c{QPoint(F)}s. If the
+ first and last points are the same, the polygon is closed.
+ \row
+ \o QPainterPath
+ \o
+ A vectorial specification of a 2D shape. Painter paths are the
+ ultimate painting primitive, in the sense that any shape
+ (rectange, ellipse, spline) or combination of shapes can be
+ expressed as a path. A path specifies both an outline and an area.
+ \row
+ \o QRegion
+ \o
+ An area in a paint device, expressed as a list of
+ \l{QRect}s. In general, we recommend using the vectorial
+ QPainterPath class instead of QRegion for specifying areas,
+ because QPainterPath handles painter transformations much better.
+ \endtable
+ \endomit
+
+ \sa {Analog Clock Example}, {Transformations Example}
+*/
diff --git a/doc/src/painting-and-printing/paintsystem.qdoc b/doc/src/painting-and-printing/paintsystem.qdoc
new file mode 100644
index 000000000..df5033de6
--- /dev/null
+++ b/doc/src/painting-and-printing/paintsystem.qdoc
@@ -0,0 +1,570 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group painting
+ \title Painting Classes
+ \ingroup groups
+
+ \brief Classes that provide support for painting.
+
+ See also this introduction to the \link coordsys.html Qt
+ coordinate system. \endlink
+*/
+
+/*!
+ \group painting-3D
+ \title Rendering in 3D
+ \ingroup groups
+
+ \brief Classes that provide support for rendering in 3D.
+*/
+
+/*!
+ \page paintsystem.html
+ \title The Paint System
+ \ingroup frameworks-technologies
+
+ Qt's paint system enables painting on screen and print devices
+ using the same API, and is primarily based on the QPainter,
+ QPaintDevice, and QPaintEngine classes.
+
+ QPainter is used to perform drawing operations, QPaintDevice is an
+ abstraction of a two-dimensional space that can be painted on
+ using a QPainter, and QPaintEngine provides the interface that the
+ painter uses to draw onto different types of devices. The
+ QPaintEngine class is used internally by QPainter and
+ QPaintDevice, and is hidden from application programmers unless
+ they create their own device type.
+
+ \image paintsystem-core.png
+
+ The main benefit of this approach is that all painting follows the
+ same painting pipeline making it easy to add support for new
+ features and providing default implementations for unsupported
+ ones.
+
+ \section1 Topics
+ \list
+ \o \l{Classes for Painting}
+ \o \l{Paint Devices and Backends}
+ \o \l{Drawing and Filling}
+ \o \l{The Coordinate System}
+ \o \l{Reading and Writing Image Files}
+ \o \l{Styling}
+ \o \l{Printing with Qt}
+ \endlist
+
+ \section1 Classes for Painting
+
+ These classes provide support for painting onto a paint device.
+
+ \annotatedlist painting
+
+ Alternatively, Qt provides the QtOpenGL module, offering classes
+ that makes it easy to use OpenGL in Qt applications. Among others,
+ the module provides an OpenGL widget class that can be used just
+ like any other Qt widget, except that it opens an OpenGL display
+ buffer where the OpenGL API can be used to render the contents.
+*/
+
+
+/*!
+ \page paintsystem-devices.html
+ \title Paint Devices and Backends
+
+ \contentspage The Paint System
+ \nextpage Drawing and Filling
+
+ \section1 Creating a Paint Device
+
+ The QPaintDevice class is the base class of objects that can be
+ painted, i.e. QPainter can draw on any QPaintDevice
+ subclass. QPaintDevice's drawing capabilities are currently
+ implemented by the QWidget, QImage, QPixmap, QGLWidget,
+ QGLPixelBuffer, QPicture and QPrinter subclasses.
+
+ \image paintsystem-devices.png
+
+ \table 100%
+ \row \o \bold Widget
+
+ The QWidget class is the base class of all user interface
+ objects. The widget is the atom of the user interface: it receives
+ mouse, keyboard and other events from the window system, and
+ paints a representation of itself on the screen.
+
+ \row \o \bold Image
+
+ The QImage class provides a hardware-independent image
+ representation which is designed and optimized for I/O, and for
+ direct pixel access and manipulation. QImage supports several
+ image formats including monochrome, 8-bit, 32-bit and
+ alpha-blended images.
+
+ One advantage of using QImage as a paint device is that it is
+ possible to guarantee the pixel exactness of any drawing operation
+ in a platform-independent way. Another benefit is that the
+ painting can be performed in another thread than the current GUI
+ thread.
+
+ \row \o \bold Pixmap
+
+ The QPixmap class is an off-screen image representation which is
+ designed and optimized for showing images on screen. Unlike
+ QImage, the pixel data in a pixmap is internal and is managed by
+ the underlying window system, i.e. pixels can only be accessed
+ through QPainter functions or by converting the QPixmap to a
+ QImage.
+
+ To optimize drawing with QPixmap, Qt provides the QPixmapCache
+ class which can be used to store temporary pixmaps that are
+ expensive to generate without using more storage space than the
+ cache limit.
+
+ Qt also provides the QBitmap convenience class, inheriting
+ QPixmap. QBitmap guarantees monochrome (1-bit depth) pixmaps, and
+ is mainly used for creating custom QCursor and QBrush objects,
+ constructing QRegion objects, and for setting masks for pixmaps
+ and widgets.
+
+ \row \o \bold {OpenGL Widget}
+
+ As mentioned previously, Qt provides the QtOpenGL module offering
+ classes that makes it easy to use OpenGL in Qt applications. For
+ example, the QGLWidget enables the OpenGL API for
+ rendering.
+
+ But QGLWidget is also a QWidget subclass, and can be used by
+ QPainter as any other paint device. One huge benefit from this is
+ that it enables Qt to utilize the high performance of OpenGL for
+ most drawing operations, such as transformations and pixmap
+ drawing.
+
+ \row \o \bold {Pixel Buffer}
+
+ The QtOpenGL module also provides the QGLPixelBuffer class which
+ inherits QPaintDevice directly.
+
+ QGLPixelBuffer encapsulates an OpenGL pbuffer. Rendering into a
+ pbuffer is normally done using full hardware acceleration which
+ can be significantly faster than rendering into a QPixmap.
+
+ \row \o \bold {Framebuffer Object}
+
+ The QtOpenGL module also provides the QGLFramebufferObject class
+ which inherits QPaintDevice directly.
+
+ QGLFramebufferObject encapsulates an OpenGL framebuffer object.
+ Framebuffer objects can also be used for off-screen rendering, and
+ offer several advantages over pixel buffers for this purpose.
+ These are described in the QGLFramebufferObject class documentation.
+
+ \row \o \bold {Picture}
+
+ The QPicture class is a paint device that records and replays
+ QPainter commands. A picture serializes painter commands to an IO
+ device in a platform-independent format. QPicture is also
+ resolution independent, i.e. a QPicture can be displayed on
+ different devices (for example svg, pdf, ps, printer and screen)
+ looking the same.
+
+ Qt provides the QPicture::load() and QPicture::save() functions
+ as well as streaming operators for loading and saving pictures.
+
+ \row \o \bold {Printer}
+
+ The QPrinter class is a paint device that paints on a printer. On
+ Windows or Mac OS X, QPrinter uses the built-in printer
+ drivers. On X11, QPrinter generates postscript and sends that to
+ lpr, lp, or another print program. QPrinter can also print to any
+ other QPrintEngine object.
+
+ The QPrintEngine class defines an interface for how QPrinter
+ interacts with a given printing subsystem. The common case when
+ creating your own print engine, is to derive from both
+ QPaintEngine and QPrintEngine.
+
+ The output format is by default determined by the platform the
+ printer is running on, but by explicitly setting the output format
+ to QPrinter::PdfFormat, QPrinter will generate its output as a PDF
+ file.
+
+ \row \o \bold {Custom Backends}
+
+ Support for a new backend can be implemented by deriving from the
+ QPaintDevice class and reimplementing the virtual
+ QPaintDevice::paintEngine() function to tell QPainter which paint
+ engine should be used to draw on this particular device. To
+ actually be able to draw on the device, this paint engine must be
+ a custom paint engine created by deriving from the QPaintEngine
+ class.
+
+ \endtable
+
+ \section1 Selecting the Painting Backend
+
+ Since Qt 4.5, it is possible to replace the paint engines and paint
+ devices used for widgets, pixmaps and the offscreen double buffer. By
+ default the backends are:
+
+ \table
+ \row
+ \o Windows
+ \o Software Rasterizer
+ \row
+ \o X11
+ \o X11
+ \row
+ \o Mac OS X
+ \o CoreGraphics
+ \row
+ \o Embedded
+ \o Software Rasterizer
+ \endtable
+
+ Passing a command line parameter to the application, such as,
+ \c{-graphicssystem raster}, specifies that Qt should use the software
+ rasterizer for this application. The Software rasterizer is fully
+ supported on all platforms.
+
+ \code
+ > analogclock -graphicssystem raster
+ \endcode
+
+ There is also a \c{-graphicssystem opengl} mode that uses OpenGL for
+ all drawing. Currently, this engine is experimental as it does not draw
+ everything correctly.
+
+ Qt also supports being configured using \c {-graphicssystem
+ raster|opengl} in which case all applications will use the
+ specified graphics system for its graphics.
+*/
+
+/*!
+ \page paintsystem-drawing.html
+ \title Drawing and Filling
+
+ \previouspage Paint Devices and Backends
+ \contentspage The Paint System
+ \nextpage The Coordinate System
+
+ \section1 Drawing
+
+ QPainter provides highly optimized functions to do most of the
+ drawing GUI programs require. It can draw everything from simple
+ graphical primitives (represented by the QPoint, QLine, QRect,
+ QRegion and QPolygon classes) to complex shapes like vector
+ paths. In Qt vector paths are represented by the QPainterPath
+ class. QPainterPath provides a container for painting operations,
+ enabling graphical shapes to be constructed and reused.
+
+ \table 100%
+ \row
+ \o \image paintsystem-painterpath.png
+ \o \bold QPainterPath
+
+ A painter path is an object composed of lines and curves. For
+ example, a rectangle is composed by lines and an ellipse is
+ composed by curves.
+
+ The main advantage of painter paths over normal drawing operations
+ is that complex shapes only need to be created once; then they can
+ be drawn many times using only calls to the QPainter::drawPath()
+ function.
+
+ A QPainterPath object can be used for filling, outlining, and
+ clipping. To generate fillable outlines for a given painter path,
+ use the QPainterPathStroker class.
+
+ \endtable
+
+ Lines and outlines are drawn using the QPen class. A pen is
+ defined by its style (i.e. its line-type), width, brush, how the
+ endpoints are drawn (cap-style) and how joins between two
+ connected lines are drawn (join-style). The pen's brush is a
+ QBrush object used to fill strokes generated with the pen,
+ i.e. the QBrush class defines the fill pattern.
+
+ QPainter can also draw aligned text and pixmaps.
+
+ When drawing text, the font is specified using the QFont class. Qt
+ will use the font with the specified attributes, or if no matching
+ font exists, Qt will use the closest matching installed font. The
+ attributes of the font that is actually used can be retrieved
+ using the QFontInfo class. In addition, the QFontMetrics class
+ provides the font measurements, and the QFontDatabase class
+ provides information about the fonts available in the underlying
+ window system.
+
+ Normally, QPainter draws in a "natural" coordinate system, but it
+ is able to perform view and world transformations using the
+ QTransform class. For more information, see \l {The Coordinate
+ System} documentation which also describes the rendering process,
+ i.e. the relation between the logical representation and the
+ rendered pixels, and the benefits of anti-aliased painting.
+
+ \table 100%
+ \row \o
+ \bold {Anti-Aliased Painting}
+
+ When drawing, the pixel rendering is controlled by the
+ QPainter::Antialiasing render hint. The QPainter::RenderHint enum
+ is used to specify flags to QPainter that may or may not be
+ respected by any given engine.
+
+ The QPainter::Antialiasing value indicates that the engine should
+ antialias edges of primitives if possible, i.e. smoothing the
+ edges by using different color intensities.
+
+ \o \image paintsystem-antialiasing.png
+
+ \endtable
+
+ \section1 Filling
+
+ Shapes are filled using the QBrush class. A brush is defined
+ by its color and its style (i.e. its fill pattern).
+
+ Any color in Qt is represented by the QColor class which supports
+ the RGB, HSV and CMYK color models. QColor also support
+ alpha-blended outlining and filling (specifying the transparency
+ effect), and the class is platform and device independent (the
+ colors are mapped to hardware using the QColormap class). For more
+ information, see the QColor class documentation.
+
+ When creating a new widget, it is recommend to use the colors in
+ the widget's palette rather than hard-coding specific colors. All
+ widgets in Qt contain a palette and use their palette to draw
+ themselves. A widget's palette is represented by the QPalette
+ class which contains color groups for each widget state.
+
+ The available fill patterns are described by the Qt::BrushStyle
+ enum. These include basic patterns spanning from uniform color to
+ very sparse pattern, various line combinations, gradient fills and
+ textures. Qt provides the QGradient class to define custom
+ gradient fills, while texture patterns are specified using the
+ QPixmap class.
+
+ \table 100%
+ \row
+ \o \image paintsystem-fancygradient.png
+ \o \bold QGradient
+
+ The QGradient class is used in combination with QBrush to specify
+ gradient fills.
+
+ \image paintsystem-gradients.png
+
+ Qt currently supports three types of gradient fills: Linear
+ gradients interpolate colors between start and end points, radial
+ gradients interpolate colors between a focal point and end points
+ on a circle surrounding it, and conical gradients interpolate
+ colors around a center point.
+
+ \endtable
+*/
+
+/*!
+ \page paintsystem-images.html
+ \title Reading and Writing Image Files
+
+ \previouspage The Coordinate System
+ \contentspage The Paint System
+ \nextpage Styling
+
+ The most common way to read images is through QImage and QPixmap's
+ constructors, or by calling the QImage::load() and QPixmap::load()
+ functions. In addition, Qt provides the QImageReader class which
+ gives more control over the process. Depending on the underlying
+ support in the image format, the functions provided by the class
+ can save memory and speed up loading of images.
+
+ Likewise, Qt provides the QImageWriter class which supports
+ setting format specific options, such as the gamma level,
+ compression level and quality, prior to storing the image. If you
+ do not need such options, you can use QImage::save() or
+ QPixmap::save() instead.
+
+ \table 100%
+ \row
+ \o \bold QMovie
+
+ QMovie is a convenience class for displaying animations, using the
+ QImageReader class internally. Once created, the QMovie class
+ provides various functions for both running and controlling the
+ given animation.
+
+ \o \image paintsystem-movie.png
+ \endtable
+
+ The QImageReader and QImageWriter classes rely on the
+ QImageIOHandler class which is the common image I/O interface for
+ all image formats in Qt. QImageIOHandler objects are used
+ internally by QImageReader and QImageWriter to add support for
+ different image formats to Qt.
+
+ A list of the supported file formats are available through the
+ QImageReader::supportedImageFormats() and
+ QImageWriter::supportedImageFormats() functions. Qt supports
+ several file formats by default, and in addition new formats can
+ be added as plugins. The currently supported formats are listed in
+ the QImageReader and QImageWriter class documentation.
+
+ Qt's plugin mechanism can also be used to write a custom image
+ format handler. This is done by deriving from the QImageIOHandler
+ class, and creating a QImageIOPlugin object which is a factory for
+ creating QImageIOHandler objects. When the plugin is installed,
+ QImageReader and QImageWriter will automatically load the plugin
+ and start using it.
+
+ \section1 Rendering SVG files
+
+ \table 100%
+ \row
+ \o \image paintsystem-svg.png
+ \o \bold {SVG Rendering}
+
+ Scalable Vector Graphics (SVG) is a language for describing two-dimensional
+ graphics and graphical applications in XML. SVG 1.1 is a W3C Recommendation
+ and forms the core of the current SVG developments in Qt. SVG 1.2 is the
+ specification currently being developed by the \l{SVG Working Group}, and it
+ is \l{http://www.w3.org/TR/SVG12/}{available in draft form}.
+ The \l{Mobile SVG Profiles} (SVG Basic and SVG Tiny) are aimed at
+ resource-limited devices and are part of the 3GPP platform for third generation
+ mobile phones. You can read more about SVG at \l{About SVG}.
+
+ Qt supports the \l{SVG 1.2 Tiny Static Features}{static features} of
+ \l{SVG 1.2 Tiny}. ECMA scripts and DOM manipulation are currently not
+ supported.
+
+ SVG drawings can be rendered onto any QPaintDevice subclass. This
+ approach gives developers the flexibility to experiment, in order
+ to find the best solution for each application.
+
+ The easiest way to render SVG files is to construct a QSvgWidget and
+ load an SVG file using one of the QSvgWidget::load() functions.
+
+ QSvgRenderer is the class responsible for rendering SVG files for
+ QSvgWidget, and it can be used directly to provide SVG support for
+ custom widgets.
+ To load an SVG file, construct a QSvgRenderer with a file name or the
+ contents of a file, or call QSvgRenderer::load() on an existing
+ renderer. If the SVG file has been loaded successfully the
+ QSvgRenderer::isValid() will return true.
+
+ Once you have loaded the SVG file successfully, you can render it
+ with the QSvgRenderer::render() function. Note that this scheme allows
+ you to render SVG files on all paint devices supported by Qt, including
+ QWidget, QGLWidget, and QImage. See the \l{SVG Viewer Example}{SVG Viewer}
+ example for more details.
+
+ \endtable
+*/
+
+/*!
+ \page paintsystem-styling.html
+ \title Styling
+
+ \previouspage Reading and Writing Image Files
+ \contentspage The Paint System
+ \nextpage Printing with Qt
+
+ Qt's built-in widgets use the QStyle class to perform nearly all
+ of their drawing. QStyle is an abstract base class that
+ encapsulates the look and feel of a GUI, and can be used to make
+ the widgets look exactly like the equivalent native widgets or to
+ give the widgets a custom look.
+
+ Qt provides a set of QStyle subclasses that emulate the native
+ look of the different platforms supported by Qt (QWindowsStyle,
+ QMacStyle, QMotifStyle, etc.). These styles are built into the
+ QtGui library, other styles can be made available using Qt's
+ plugin mechansim.
+
+ Most functions for drawing style elements take four arguments:
+
+ \list
+ \o an enum value specifying which graphical element to draw
+ \o a QStyleOption object specifying how and where to render that element
+ \o a QPainter object that should be used to draw the element
+ \o a QWidget object on which the drawing is performed (optional)
+ \endlist
+
+ The style gets all the information it needs to render the
+ graphical element from the QStyleOption class. The widget is
+ passed as the last argument in case the style needs it to perform
+ special effects (such as animated default buttons on Mac OS X),
+ but it isn't mandatory. In fact, QStyle can be used to draw on any
+ paint device (not just widgets), in which case the widget argument
+ is a zero pointer.
+
+ \image paintsystem-stylepainter.png
+
+ The paint system also provides the QStylePainter class inheriting
+ from QPainter. QStylePainter is a convenience class for drawing
+ QStyle elements inside a widget, and extends QPainter with a set
+ of high-level drawing functions implemented on top of QStyle's
+ API. The advantage of using QStylePainter is that the parameter
+ lists get considerably shorter.
+
+ \table 100%
+ \row
+ \o \inlineimage paintsystem-icon.png
+ \o \bold QIcon
+
+ The QIcon class provides scalable icons in different modes and states.
+
+ QIcon can generate pixmaps reflecting an icon's state, mode and
+ size. These pixmaps are generated from the set of pixmaps
+ made available to the icon, and are used by Qt widgets to show an
+ icon representing a particular action.
+
+ The rendering of a QIcon object is handled by the QIconEngine
+ class. Each icon has a corresponding icon engine that is
+ responsible for drawing the icon with a requested size, mode and
+ state.
+
+ \endtable
+
+ For more information about widget styling and appearance, see the
+ documentation about \l{Implementing Styles and Style Aware Widgets}.
+*/
diff --git a/doc/src/painting-and-printing/printing.qdoc b/doc/src/painting-and-printing/printing.qdoc
new file mode 100644
index 000000000..1d1e87bc7
--- /dev/null
+++ b/doc/src/painting-and-printing/printing.qdoc
@@ -0,0 +1,191 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group printing
+ \title Printer and Printing APIs
+ \brief Classes for producing printed output
+ \ingroup groups
+*/
+
+/*!
+ \page printing.html
+ \title Printing with Qt
+
+ \previouspage Styling
+ \contentspage The Paint System
+
+ \brief A guide to producing printed output with Qt's paint system and widgets.
+
+ Qt provides extensive cross-platform support for printing. Using the printing
+ systems on each platform, Qt applications can print to attached printers and
+ across networks to remote printers. Qt's printing system also enables PostScript
+ and PDF files to be generated, providing the foundation for basic report
+ generation facilities.
+
+ \tableofcontents
+
+ \section1 Classes Supporting Printing
+
+ The following classes support the selecting and setting up of printers and
+ printing output.
+
+ \annotatedlist printing
+
+ \section1 Paint Devices and Printing
+
+ In Qt, printers are represented by QPrinter, a paint device that provides
+ functionality specific to printing, such as support for multiple pages and
+ double-sided output. As a result, printing involves using a QPainter to paint
+ onto a series of pages in the same way that you would paint onto a custom
+ widget or image.
+
+ \section2 Creating a QPrinter
+
+ Although QPrinter objects can be constructed and set up without requiring user
+ input, printing is often performed as a result of a request by the user;
+ for example, when the user selects the \gui{File|Print...} menu item in a GUI
+ application. In such cases, a newly-constructed QPrinter object is supplied to
+ a QPrintDialog, allowing the user to specify the printer to use, paper size, and
+ other printing properties.
+
+ \snippet examples/richtext/orderform/mainwindow.cpp 18
+
+ It is also possible to set certain default properties by modifying the QPrinter
+ before it is supplied to the print dialog. For example, applications that
+ generate batches of reports for printing may set up the QPrinter to
+ \l{QPrinter::setOutputFileName()}{write to a local file} by default rather than
+ to a printer.
+
+ \section2 Painting onto a Page
+
+ Once a QPrinter object has been constructed and set up, a QPainter can be used
+ to perform painting operations on it. We can construct and set up a painter in
+ the following way:
+
+ \snippet doc/src/snippets/printing-qprinter/object.cpp 0
+
+ Since the QPrinter starts with a blank page, we only need to call the
+ \l{QPrinter::}{newPage()} function after drawing each page, except for the
+ last page.
+
+ The document is sent to the printer, or written to a local file, when we call
+ \l{QPainter::}{end()}.
+
+ \section2 Coordinate Systems
+
+ QPrinter provides functions that can be used to obtain information about the
+ dimensions of the paper (the paper rectangle) and the dimensions of the
+ printable area (the page rectangle). These are given in logical device
+ coordinates that may differ from the physical coordinates used by the device
+ itself, indicating that the printer is able to render text and graphics at a
+ (typically higher) resolution than the user's display.
+
+ Although we do not need to handle the conversion between logical and physical
+ coordinates ourselves, we still need to apply transformations to painting
+ operations because the pixel measurements used to draw on screen are often
+ too small for the higher resolutions of typical printers.
+
+ \table
+ \row \o \bold{Printer and Painter Coordinate Systems}
+
+ The \l{QPrinter::}{paperRect()} and \l{QPrinter::}{pageRect()} functions
+ provide information about the size of the paper used for printing and the
+ area on it that can be painted on.
+
+ The rectangle returned by \l{QPrinter::}{pageRect()} usually lies inside
+ the rectangle returned by \l{QPrinter::}{paperRect()}. You do not need to
+ take the positions and sizes of these area into account when using a QPainter
+ with a QPrinter as the underlying paint device; the origin of the painter's
+ coordinate system will coincide with the top-left corner of the page
+ rectangle, and painting operations will be clipped to the bounds of the
+ drawable part of the page.
+
+ \o \inlineimage printer-rects.png
+ \endtable
+
+ The paint system automatically uses the correct device metrics when painting
+ text but, if you need to position text using information obtained from
+ font metrics, you need to ensure that the print device is specified when
+ you construct QFontMetrics and QFontMetricsF objects, or ensure that each QFont
+ used is constructed using the form of the constructor that accepts a
+ QPaintDevice argument.
+
+ \section1 Printing from Complex Widgets
+
+ Certain widgets, such as QTextEdit and QGraphicsView, display rich content
+ that is typically managed by instances of other classes, such as QTextDocument
+ and QGraphicsScene. As a result, it is these content handling classes that
+ usually provide printing functionality, either via a function that can be used
+ to perform the complete task, or via a function that accepts an existing
+ QPainter object. Some widgets provide convenience functions to expose underlying
+ printing features, avoiding the need to obtain the content handler just to call
+ a single function.
+
+ The following table shows which class and function are responsible for
+ printing from a selection of different widgets. For widgets that do not expose
+ printing functionality directly, the content handling classes containing this
+ functionality can be obtained via a function in the corresponding widget's API.
+
+ \table
+ \header \o Widget \o Printing function \o Accepts
+ \row \o QGraphicsView \o QGraphicsView::render() \o QPainter
+ \row \o QSvgWidget \o QSvgRenderer::render() \o QPainter
+ \row \o QTextEdit \o QTextDocument::print() \o QPrinter
+ \row \o QTextLayout \o QTextLayout::draw() \o QPainter
+ \row \o QTextLine \o QTextLine::draw() \o QPainter
+ \endtable
+
+ QTextEdit requires a QPrinter rather than a QPainter because it uses information
+ about the configured page dimensions in order to insert page breaks at the most
+ appropriate places in printed documents.
+*/
+
+/*!
+ \page pdf-licensing.html
+ \title Notes about PDF Licensing
+ \ingroup licensing
+ \brief Details of restrictions on the use of PDF-related trademarks.
+
+ Please note that Adobe\reg places restrictions on the use of its trademarks
+ (including logos) in conjunction with PDF; e.g. "Adobe PDF". Please refer
+ to \l{http://www.adobe.com}{www.adobe.com} for guidelines.
+*/
diff --git a/doc/src/paintsystem.qdoc b/doc/src/paintsystem.qdoc
deleted file mode 100644
index 23b56852c..000000000
--- a/doc/src/paintsystem.qdoc
+++ /dev/null
@@ -1,483 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page paintsystem.html
-
- \title The Paint System
-
- Qt's paint system enables painting on screen and print devices
- using the same API, and is primarily based on the QPainter,
- QPaintDevice, and QPaintEngine classes.
-
- QPainter is used to perform drawing operations, QPaintDevice is an
- abstraction of a two-dimensional space that can be painted on
- using a QPainter, and QPaintEngine provides the interface that the
- painter uses to draw onto different types of devices. The
- QPaintEngine class is used internally by QPainter and
- QPaintDevice, and is hidden from application programmers unless
- they create their own device type.
-
- \image paintsystem-core.png
-
- The main benefit of this approach is that all painting follows the
- same painting pipeline making it easy to add support for new
- features and providing default implementations for unsupported
- ones.
-
- Alternatively, Qt provides the QtOpenGL module, offering classes
- that makes it easy to use OpenGL in Qt applications. Among others,
- the module provides an OpenGL widget class that can be used just
- like any other Qt widget, except that it opens an OpenGL display
- buffer where the OpenGL API can be used to render the contents.
-
- \tableofcontents section1
-
- \section1 Drawing
-
- QPainter provides highly optimized functions to do most of the
- drawing GUI programs require. It can draw everything from simple
- graphical primitives (represented by the QPoint, QLine, QRect,
- QRegion and QPolygon classes) to complex shapes like vector
- paths. In Qt vector paths are represented by the QPainterPath
- class. QPainterPath provides a container for painting operations,
- enabling graphical shapes to be constructed and reused.
-
- \table 100%
- \row
- \o \image paintsystem-painterpath.png
- \o \bold QPainterPath
-
- A painter path is an object composed of lines and curves. For
- example, a rectangle is composed by lines and an ellipse is
- composed by curves.
-
- The main advantage of painter paths over normal drawing operations
- is that complex shapes only need to be created once; then they can
- be drawn many times using only calls to the QPainter::drawPath()
- function.
-
- A QPainterPath object can be used for filling, outlining, and
- clipping. To generate fillable outlines for a given painter path,
- use the QPainterPathStroker class.
-
- \endtable
-
- Lines and outlines are drawn using the QPen class. A pen is
- defined by its style (i.e. its line-type), width, brush, how the
- endpoints are drawn (cap-style) and how joins between two
- connected lines are drawn (join-style). The pen's brush is a
- QBrush object used to fill strokes generated with the pen,
- i.e. the QBrush class defines the fill pattern.
-
- QPainter can also draw aligned text and pixmaps.
-
- When drawing text, the font is specified using the QFont class. Qt
- will use the font with the specified attributes, or if no matching
- font exists, Qt will use the closest matching installed font. The
- attributes of the font that is actually used can be retrieved
- using the QFontInfo class. In addition, the QFontMetrics class
- provides the font measurements, and the QFontDatabase class
- provides information about the fonts available in the underlying
- window system.
-
- Normally, QPainter draws in a "natural" coordinate system, but it
- is able to perform view and world transformations using the
- QTransform class. For more information, see \l {The Coordinate
- System} documentation which also describes the rendering process,
- i.e. the relation between the logical representation and the
- rendered pixels, and the benefits of anti-aliased painting.
-
- \table 100%
- \row \o
- \bold {Anti-Aliased Painting}
-
- When drawing, the pixel rendering is controlled by the
- QPainter::Antialiasing render hint. The QPainter::RenderHint enum
- is used to specify flags to QPainter that may or may not be
- respected by any given engine.
-
- The QPainter::Antialiasing value indicates that the engine should
- antialias edges of primitives if possible, i.e. smoothing the
- edges by using different color intensities.
-
- \o \image paintsystem-antialiasing.png
-
- \endtable
-
- \section1 Filling
-
- Shapes are filled using the QBrush class. A brush is defined
- by its color and its style (i.e. its fill pattern).
-
- Any color in Qt is represented by the QColor class which supports
- the RGB, HSV and CMYK color models. QColor also support
- alpha-blended outlining and filling (specifying the transparency
- effect), and the class is platform and device independent (the
- colors are mapped to hardware using the QColormap class). For more
- information, see the QColor class documentation.
-
- When creating a new widget, it is recommend to use the colors in
- the widget's palette rather than hard-coding specific colors. All
- widgets in Qt contain a palette and use their palette to draw
- themselves. A widget's palette is represented by the QPalette
- class which contains color groups for each widget state.
-
- The available fill patterns are described by the Qt::BrushStyle
- enum. These include basic patterns spanning from uniform color to
- very sparse pattern, various line combinations, gradient fills and
- textures. Qt provides the QGradient class to define custom
- gradient fills, while texture patterns are specified using the
- QPixmap class.
-
- \table 100%
- \row
- \o \image paintsystem-fancygradient.png
- \o \bold QGradient
-
- The QGradient class is used in combination with QBrush to specify
- gradient fills.
-
- \image paintsystem-gradients.png
-
- Qt currently supports three types of gradient fills: Linear
- gradients interpolate colors between start and end points, radial
- gradients interpolate colors between a focal point and end points
- on a circle surrounding it, and conical gradients interpolate
- colors around a center point.
-
- \endtable
-
- \section1 Creating a Paint Device
-
- The QPaintDevice class is the base class of objects that can be
- painted, i.e. QPainter can draw on any QPaintDevice
- subclass. QPaintDevice's drawing capabilities are currently
- implemented by the QWidget, QImage, QPixmap, QGLWidget,
- QGLPixelBuffer, QPicture and QPrinter subclasses.
-
- \image paintsystem-devices.png
-
- \table 100%
- \row \o \bold {Custom Backends}
-
- Support for a new backend can be implemented by deriving from the
- QPaintDevice class and reimplementing the virtual
- QPaintDevice::paintEngine() function to tell QPainter which paint
- engine should be used to draw on this particular device. To
- actually be able to draw on the device, this paint engine must be
- a custom paint engine created by deriving from the QPaintEngine
- class.
-
- \endtable
-
- \section2 Widget
-
- The QWidget class is the base class of all user interface
- objects. The widget is the atom of the user interface: it receives
- mouse, keyboard and other events from the window system, and
- paints a representation of itself on the screen.
-
- \section2 Image
-
- The QImage class provides a hardware-independent image
- representation which is designed and optimized for I/O, and for
- direct pixel access and manipulation. QImage supports several
- image formats including monochrome, 8-bit, 32-bit and
- alpha-blended images.
-
- One advantage of using QImage as a paint device is that it is
- possible to guarantee the pixel exactness of any drawing operation
- in a platform-independent way. Another benefit is that the
- painting can be performed in another thread than the current GUI
- thread.
-
- \section2 Pixmap
-
- The QPixmap class is an off-screen image representation which is
- designed and optimized for showing images on screen. Unlike
- QImage, the pixel data in a pixmap is internal and is managed by
- the underlying window system, i.e. pixels can only be accessed
- through QPainter functions or by converting the QPixmap to a
- QImage.
-
- To optimize drawing with QPixmap, Qt provides the QPixmapCache
- class which can be used to store temporary pixmaps that are
- expensive to generate without using more storage space than the
- cache limit.
-
- Qt also provides the QBitmap convenience class, inheriting
- QPixmap. QBitmap guarantees monochrome (1-bit depth) pixmaps, and
- is mainly used for creating custom QCursor and QBrush objects,
- constructing QRegion objects, and for setting masks for pixmaps
- and widgets.
-
- \section2 OpenGL Widget
-
- As mentioned above, Qt provides the QtOpenGL module offering
- classes that makes it easy to use OpenGL in Qt applications. For
- example, the QGLWidget enables the OpenGL API for
- rendering.
-
- But QGLWidget is also a QWidget subclass, and can be used by
- QPainter as any other paint device. One huge benefit from this is
- that it enables Qt to utilize the high performance of OpenGL for
- most drawing operations, such as transformations and pixmap
- drawing.
-
- \section2 Pixel Buffer
-
- The QtOpenGL module also provides the QGLPixelBuffer class which
- inherits QPaintDevice directly.
-
- QGLPixelBuffer encapsulates an OpenGL pbuffer. Rendering into a
- pbuffer is normally done using full hardware acceleration which
- can be significantly faster than rendering into a QPixmap.
-
- \section2 Framebuffer Object
-
- The QtOpenGL module also provides the QGLFramebufferObject class
- which inherits QPaintDevice directly.
-
- QGLFramebufferObject encapsulates an OpenGL framebuffer object.
- Framebuffer objects can also be used for off-screen rendering, and
- offer several advantages over pixel buffers for this purpose.
- These are described in the QGLFramebufferObject class documentation.
-
- \section2 Picture
-
- The QPicture class is a paint device that records and replays
- QPainter commands. A picture serializes painter commands to an IO
- device in a platform-independent format. QPicture is also
- resolution independent, i.e. a QPicture can be displayed on
- different devices (for example svg, pdf, ps, printer and screen)
- looking the same.
-
- Qt provides the QPicture::load() and QPicture::save() functions
- as well as streaming operators for loading and saving pictures.
-
- \section2 Printer
-
- The QPrinter class is a paint device that paints on a printer. On
- Windows or Mac OS X, QPrinter uses the built-in printer
- drivers. On X11, QPrinter generates postscript and sends that to
- lpr, lp, or another print program. QPrinter can also print to any
- other QPrintEngine object.
-
- The QPrintEngine class defines an interface for how QPrinter
- interacts with a given printing subsystem. The common case when
- creating your own print engine, is to derive from both
- QPaintEngine and QPrintEngine.
-
- The output format is by default determined by the platform the
- printer is running on, but by explicitly setting the output format
- to QPrinter::PdfFormat, QPrinter will generate its output as a PDF
- file.
-
- \section1 Reading and Writing Image Files
-
- The most common way to read images is through QImage and QPixmap's
- constructors, or by calling the QImage::load() and QPixmap::load()
- functions. In addition, Qt provides the QImageReader class which
- gives more control over the process. Depending on the underlying
- support in the image format, the functions provided by the class
- can save memory and speed up loading of images.
-
- Likewise, Qt provides the QImageWriter class which supports
- setting format specific options, such as the gamma level,
- compression level and quality, prior to storing the image. If you
- do not need such options, you can use QImage::save() or
- QPixmap::save() instead.
-
- \table 100%
- \row
- \o \bold QMovie
-
- QMovie is a convenience class for displaying animations, using the
- QImageReader class internally. Once created, the QMovie class
- provides various functions for both running and controlling the
- given animation.
-
- \o \image paintsystem-movie.png
- \endtable
-
- The QImageReader and QImageWriter classes rely on the
- QImageIOHandler class which is the common image I/O interface for
- all image formats in Qt. QImageIOHandler objects are used
- internally by QImageReader and QImageWriter to add support for
- different image formats to Qt.
-
- A list of the supported file formats are available through the
- QImageReader::supportedImageFormats() and
- QImageWriter::supportedImageFormats() functions. Qt supports
- several file formats by default, and in addition new formats can
- be added as plugins. The currently supported formats are listed in
- the QImageReader and QImageWriter class documentation.
-
- Qt's plugin mechanism can also be used to write a custom image
- format handler. This is done by deriving from the QImageIOHandler
- class, and creating a QImageIOPlugin object which is a factory for
- creating QImageIOHandler objects. When the plugin is installed,
- QImageReader and QImageWriter will automatically load the plugin
- and start using it.
-
- \table 100%
- \row
- \o \image paintsystem-svg.png
- \o \bold {SVG Rendering}
-
- Scalable Vector Graphics (SVG) is an language for describing both
- static and animated two-dimensional vector graphics. Qt includes
- support for the static features of SVG 1.2 Tiny.
-
- SVG drawings can be rendered onto any QPaintDevice subclass. This
- approach gives developers the flexibility to experiment, in order
- to find the best solution for each application.
-
- The easiest way to render SVG files is to construct a QSvgWidget
- and load an SVG file using one of the QSvgWidget::load()
- functions. The rendering is performed by the QSvgRenderer class
- which also can be used directly to provide SVG support for custom
- widgets.
-
- For more information, see the QtSvg module documentation.
-
- \endtable
-
- \section1 Styling
-
- Qt's built-in widgets use the QStyle class to perform nearly all
- of their drawing. QStyle is an abstract base class that
- encapsulates the look and feel of a GUI, and can be used to make
- the widgets look exactly like the equivalent native widgets or to
- give the widgets a custom look.
-
- Qt provides a set of QStyle subclasses that emulate the native
- look of the different platforms supported by Qt (QWindowsStyle,
- QMacStyle, QMotifStyle, etc.). These styles are built into the
- QtGui library, other styles can be made available using Qt's
- plugin mechansim.
-
- Most functions for drawing style elements take four arguments:
-
- \list
- \o an enum value specifying which graphical element to draw
- \o a QStyleOption object specifying how and where to render that element
- \o a QPainter object that should be used to draw the element
- \o a QWidget object on which the drawing is performed (optional)
- \endlist
-
- The style gets all the information it needs to render the
- graphical element from the QStyleOption class. The widget is
- passed as the last argument in case the style needs it to perform
- special effects (such as animated default buttons on Mac OS X),
- but it isn't mandatory. In fact, QStyle can be used to draw on any
- paint device (not just widgets), in which case the widget argument
- is a zero pointer.
-
- \image paintsystem-stylepainter.png
-
- The paint system also provides the QStylePainter class inheriting
- from QPainter. QStylePainter is a convenience class for drawing
- QStyle elements inside a widget, and extends QPainter with a set
- of high-level drawing functions implemented on top of QStyle's
- API. The advantage of using QStylePainter is that the parameter
- lists get considerably shorter.
-
- \table 100%
- \row
- \o \inlineimage paintsystem-icon.png
- \o \bold QIcon
-
- The QIcon class provides scalable icons in different modes and states.
-
- QIcon can generate pixmaps reflecting an icon's state, mode and
- size. These pixmaps are generated from the set of pixmaps
- made available to the icon, and are used by Qt widgets to show an
- icon representing a particular action.
-
- The rendering of a QIcon object is handled by the QIconEngine
- class. Each icon has a corresponding icon engine that is
- responsible for drawing the icon with a requested size, mode and
- state.
-
- \endtable
-
- \section1 Selecting the Painting Backend
-
- Since Qt 4.5, it is possible to replace the paint engines and paint
- devices used for widgets, pixmaps and the offscreen double buffer. By
- default the backends are:
-
- \table
- \row
- \o Windows
- \o Software Rasterizer
- \row
- \o X11
- \o X11
- \row
- \o Mac OS X
- \o CoreGraphics
- \row
- \o Embedded
- \o Software Rasterizer
- \endtable
-
- Passing a command line parameter to the application, such as,
- \c{-graphicssystem raster}, specifies that Qt should use the software
- rasterizer for this application. The Software rasterizer is fully
- supported on all platforms.
-
- \code
- > analogclock -graphicssystem raster
- \endcode
-
- There is also a \c{-graphicssystem opengl} mode that uses OpenGL for
- all drawing. Currently, this engine is experimental as it does not draw
- everything correctly.
-
- Qt also supports being configured using \c {-graphicssystem
- raster|opengl} in which case all applications will use the
- specified graphics system for its graphics.
-
- */
-
diff --git a/doc/src/phonon.qdoc b/doc/src/phonon.qdoc
deleted file mode 100644
index 610ad30ed..000000000
--- a/doc/src/phonon.qdoc
+++ /dev/null
@@ -1,643 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page phonon-overview.html
- \title Phonon Overview
- \ingroup multimedia
-
- \tableofcontents
-
- \section1 Introduction
-
- Qt uses the Phonon multimedia framework to provide functionality
- for playback of the most common multimedia formats. The media can
- be read from files or streamed over a network, using a QURL to a
- file.
-
- In this overview, we take a look at the main concepts of Phonon.
- We also explain the architecture, examine the
- core API classes, and show examples on how to use the classes
- provided.
-
- \section1 Architecture
-
- Phonon has three basic concepts: media objects, sinks, and paths.
- A media object manages a media source, for instance, a music file;
- it provides simple playback control, such as starting, stopping,
- and pausing the playback. A sink outputs the media from Phonon,
- e.g., by rendering video on a widget, or by sending audio to a
- sound card. Paths are used to connect Phonon objects, i.e., a
- media object and a sink, in a graph - called a media graph in
- Phonon.
-
- As an example, we show a media graph for an audio stream:
-
- \image conceptaudio.png
-
- The playback is started and managed by the media object, which
- send the media stream to any sinks connected to it by a path. The
- sink then plays the stream back, usually though a sound card.
-
- \omit Not sure if this goes here, or anywhere...
- All nodes in the graph are synchronized by the framework,
- meaning that if more than one sink is connected to the same
- media object, the framework will handle the synchronization
- between the sinks; this happens for instance when a media
- source containing video with sound is played back. More on
- this later.
- \endomit
-
- \section2 Media Objects
-
- The media object, an instance of the \l{Phonon::}{MediaObject}
- class, lets you start, pause, and stop the playback of a media
- stream, i.e., it provided basic control over the playback. You may
- think of the object as a simple media player.
-
- The media data is provided by a media source, which is
- kept by the media object. The media source is a separate
- object - an instance of \l{Phonon::}{MediaSource} - in Phonon, and
- not part of the graph itself. The source will supply the media
- object with raw data. The data can be read from files and streamed
- over a network. The contents of the source will be interpreted by
- the media object.
-
- A media object is always instantiated with the default constructor
- and then supplied with a media source. Concrete code examples are
- given later in this overview.
-
- As a complement to the media object, Phonon also provides
- \l{Phonon::}{MediaController}, which provides control over
- features that are optional for a given media. For instance, for
- chapters, menus, and titles of a VOB (DVD) file will be features
- managed by a \l{Phonon::}{MediaController}.
-
- \section2 Sinks
-
- A sink is a node that can output media from the graph, i.e., it
- does not send its output to other nodes. A sink is usually a
- rendering device.
-
- The input of sinks in a Phonon media graph comes from a
- \l{Phonon::}{MediaObject}, though it might have been processed
- through other nodes on the way.
-
- While the \l{Phonon::}{MediaObject} controls the playback, the
- sink has basic controls for manipulation of the media. With an
- audio sink, for instance, you can control the volume and mute the
- sound, i.e., it represents a virtual audio device. Another example
- is the \l{Phonon::}{VideoWidget}, which can render video on a
- QWidget and alter the brightness, hue, and scaling of the video.
-
- As an example we give an image of a graph used for playing back a
- video file with sound.
-
- \image conceptvideo.png
-
- \section2 Processors
-
- Phonon does not allow manipulation of media streams directly,
- i.e., one cannot alter a media stream's bytes programmatically
- after they have been given to a media object. We have other nodes
- to help with this: processors, which are placed in the graph on
- the path somewhere between the media object and its sinks. In
- Phonon, processors are of the \l{Phonon::}{Effect} class.
-
- When inserted into the rendering process, the processor will
- alter the media stream, and will be active as long as it is part
- of the graph. To stop, it needs to be removed.
-
- \omit \image conceptprocessor.png \endomit
-
- The \c {Effect}s may also have controls that affect how the media
- stream is manipulated. A processor applying a depth effect to
- audio, for instance, can have a value controlling the amount of
- depth. An \c Effect can be configured at any point in time.
-
- \section1 Playback
-
- In some common cases, it is not necessary to build a graph
- yourself.
-
- Phonon has convenience functions for building common graphs. For
- playing an audio file, you can use the
- \l{Phonon::}{createPlayer()} function. This will set up the
- necessary graph and return the media object node; the sound can
- then be started by calling its \l{Phonon::MediaObject::}{play()}
- function.
-
- \snippet snippets/phonon.cpp 0
-
- We have a similar solution for playing video files, the
- \l{Phonon::}{VideoPlayer}.
-
- \snippet snippets/phonon.cpp 1
-
- The VideoPlayer is a widget onto which the video will be drawn.
-
- The \c .pro file for a project needs the following line to be added:
-
- \snippet doc/src/snippets/code/doc_src_phonon.qdoc 0
-
- Phonon comes with several widgets that provide functionality
- commonly associated with multimedia players - notably SeekSlider
- for controlling the position of the stream, VolumeSlider for
- controlling sound volume, and EffectWidget for controlling the
- parameters of an effect. You can learn about them in the API
- documentation.
-
- \section1 Building Graphs
-
- If you need more freedom than the convenience functions described
- in the previous section offers you, you can build the graphs
- yourself. We will now take a look at how some common graphs are
- built. Starting a graph up is a matter of calling the
- \l{Phonon::MediaObject::}{play()} function of the media object.
-
- If the media source contains several types of media, for instance, a
- stream with both video and audio, the graph will contain two
- output nodes: one for the video and one for the audio.
-
- We will now look at the code required to build the graphs discussed
- previously in the \l{Architecture} section.
-
- \section2 Audio
-
- When playing back audio, you create the media object and connect
- it to an audio output node - a node that inherits from
- AbstractAudioOutput. Currently, AudioOutput, which outputs audio
- to the sound card, is provided.
-
- The code to create the graph is straight forward:
-
- \snippet snippets/phonon.cpp 2
-
- Notice that the type of media an input source has is resolved by
- Phonon, so you need not be concerned with this. If a source
- contains multiple media formats, this is also handled
- automatically.
-
- The media object is always created using the default constructor
- since it handles all multimedia formats.
-
- The setting of a Category, Phonon::MusicCategory in this case,
- does not affect the actual playback; the category can be used by
- KDE to control the playback through, for instance, the control
- panel.
-
- \omit Not sure about this
- Users of KDE can often also choose to send sound with the
- CommunicationCategory, e.g., given to VoIP, to their headset,
- while sound with MusicCategory is sent to the sound card.
- \endomit
-
- The AudioOutput class outputs the audio media to a sound card,
- that is, one of the audio devices of the operating system. An
- audio device can be a sound card or a intermediate technology,
- such as \c DirectShow on windows. A default device will be chosen
- if one is not set with \l{Phonon::AudioOutput::}{setOutputDevice()}.
-
- The AudioOutput node will work with all audio formats supported by
- the back end, so you don't need to know what format a specific
- media source has.
-
- For a an extensive example of audio playback, see the \l{Music
- Player Example}{Phonon Music Player}.
-
- \section3 Audio Effects
-
- Since a media stream cannot be manipulated directly, the backend
- can produce nodes that can process the media streams. These nodes
- are inserted into the graph between a media object and an output
- node.
-
- Nodes that process media streams inherit from the Effect class.
- The effects available depends on the underlying system. Most of
- these effects will be supported by Phonon. See the \l{Querying
- Backends for Support} section for information on how to resolve
- the available effects on a particular system.
-
- We will now continue the example from above using the Path
- variable \c path to add an effect. The code is again trivial:
-
- \snippet snippets/phonon.cpp 3
-
- Here we simply take the first available effect on the system.
-
- The effect will start immediately after being inserted into the
- graph if the media object is playing. To stop it, you have to
- detach it again using \l{Phonon::Path::}{removeEffect()} of the Path.
-
- \section2 Video
-
- For playing video, VideoWidget is provided. This class functions
- both as a node in the graph and as a widget upon which it draws
- the video stream. The widget will automatically choose an available
- device for playing the video, which is usually a technology
- between the Qt application and the graphics card, such as \c
- DirectShow on Windows.
-
- The video widget does not play the audio (if any) in the media
- stream. If you want to play the audio as well, you will need
- an AudioOutput node. You create and connect it to the graph as
- shown in the previous section.
-
- The code for creating this graph is given below, after which
- one can play the video with \l{Phonon::MediaObject::}{play()}.
-
- \snippet snippets/phonon.cpp 4
-
- The VideoWidget does not need to be set to a Category, it is
- automatically classified to \l{Phonon::}{VideoCategory}, we only
- need to assure that the audio is also classified in the same
- category.
-
- The media object will split files with different media content
- into separate streams before sending them off to other nodes in
- the graph. It is the media object that determines the type of
- content appropriate for nodes that connect to it.
-
- \omit This section is from the future
-
- \section2 Multiple Audio Sources and Graph Outputs
-
- In this section, we take a look at a graph that contains multiple
- audio sources in addition to video. We have a video camera with
- some embarrassing home footage from last weekend's party, a
- microphone with which we intend to add commentary, and an audio
- music file to set the correct mood. It would be an advantage to
- write the graph output to a file for later viewing, but since this
- is not yet supported by Qt backends, we will play it back
- directly.
-
- <image of party graph>
-
- <code>
-
- <code walkthrough>
-
- \endomit
-
- \section1 Backends
-
- The multimedia functionality is not implemented by Phonon itself,
- but by a back end - often also referred to as an engine. This
- includes connecting to, managing, and driving the underlying
- hardware or intermediate technology. For the programmer, this
- implies that the media nodes, e.g., media objects, processors, and
- sinks, are produced by the back end. Also, it is responsible for
- building the graph, i.e., connecting the nodes.
-
- The backends of Qt use the media systems DirectShow (which
- requires DirectX) on Windows, QuickTime on Mac, and GStreamer on
- Linux. The functionality provided on the different platforms are
- dependent on these underlying systems and may vary somewhat, e.g.,
- in the media formats supported.
-
- Backends expose information about the underlying system. It can
- tell which media formats are supported, e.g., \c AVI, \c mp3, or
- \c OGG.
-
- A user can often add support for new formats and filters to the
- underlying system, by, for instance, installing the DivX codex. We
- can therefore not give an exact overview of which formats are
- available with the Qt backends.
-
- \omit Not sure I want a separate section for this
- \section2 Communication with the Backends
-
- We cooperate with backends through static functions in the
- Phonon namespace. We have already seen some of these functions
- in code examples. Their two main responsibilities are creating
- graph nodes and supplying information about the capabilities
- of the various nodes. The nodes uses the backend internally
- when created, so it is only connecting them in the graph that
- you need to use the backend directly.
-
- The main functions for graph building are:
-
- \list
- \o createPath(): This function creates a path between to
- nodes, which it takes as arguments.
- \o
- \endlist
-
- For more detailed information, please consult the API
- documentation.
-
- \endomit
-
- \section2 Querying Backends for Support
-
- As mentioned, Phonon depends on the backend to provide its
- functionality. Depending on the individual backend, full support
- of the API may not be in place. Applications therefore need to
- check with the backend if functionality they require is
- implemented. In this section, we take look at how this is done.
-
- The backend provides the
- \l{Phonon::BackendCapabilities::}{availableMimeTypes()} and
- \l{Phonon::BackendCapabilities::}{isMimeTypeAvailable()} functions
- to query which MIME types the backend can produce nodes for. The
- types are listed as strings, which for any type is equal for any
- backend or platform.
-
- The backend will emit a signal -
- \l{Phonon::BackendCapabilities::}{Notifier::capabilitiesChanged()}
- - if its abilities have changed. If the available audio devices
- have changed, the
- \l{Phonon::BackendCapabilities::}{Notifier::availableAudioOutputDevicesChanged()}
- signal is emitted instead.
-
- To query the actual audio devices possible, we have the
- \l{Phonon::BackendCapabilities::}{availableAudioOutputDevices()} as
- mentioned in the \l{#Sinks}{Sinks} section. To query information
- about the individual devices, you can examine its \c name(); this
- string is dependent on the operating system, and the Qt backends
- does not analyze the devices further.
-
- The sink for playback of video does not have a selection of
- devices. For convenience, the \l{Phonon::}{VideoWidget} is both a
- node in the graph and a widget on which the video output is
- rendered. To query the various video formats available, use
- \l{Phonon::BackendCapabilities::}{isMimeTypeAvailable()}. To add
- it to a path, you can use the Phonon::createPath() as usual. After
- creating a media object, it is also possible to call its
- \l{Phonon::MediaObject::}{hasVideo()} function.
-
- See also the \l{Capabilities Example}.
-
- \section1 Installing Phonon
-
- When running the Qt configure script, you will be notified whether
- Phonon support is available on your system. As mentioned
- previously, to use develop and run Phonon applications, you also
- need to link to a backend, which provides the multimedia
- functionality.
-
- Note that Phonon applications will compile and run without a
- working backend, but will, of course, not work as expected.
-
- The following sections explains requirements for each backend.
-
- \section2 Windows
-
- On Windows, building Phonon requires DirectX and DirectShow
- version 9 or higher. You'll need additional SDKs you can download
- from Microsoft.
-
- \section3 Windows XP and later Windows versions
-
- If you develop for Windows XP and up, you should download the Windows SDK
- \l{http://www.microsoft.com/downloads/details.aspx?FamilyID=e6e1c3df-a74f-4207-8586-711ebe331cdc&amp;DisplayLang=en}{here}.
- Before building Qt, just call the script: \c {C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin\setenv.cmd}
-
- \note Visual C++ 2008 already contains the Windows SDK and doesn't
- need that package and has already the environment set up for a
- smooth compilation of phonon.
-
- \section3 Earlier Windows versions than Windows XP
-
- If you want to support previous Windows versions, you should download and install the Platform SDK. You find it
- \l{http://www.microsoft.com/downloads/details.aspx?FamilyId=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB&amp;displaylang=en}{here}.
-
- \note The platform SDK provided with Visual C++ is not
- complete and
- you'll need this one to have DirectShow 9.0 support. You can download the DirectX SDK
- \l{http://www.microsoft.com/downloads/details.aspx?familyid=09F7578C-24AA-4E0A-BF91-5FEC24C8C7BF&amp;displaylang=en}{here}.
-
- \section3 Setting up the environment
-
- Once the SDKs are installed, please make sure to set your
- environment variables LIB and INCLUDE correctly. The paths to the
- include and lib directory of the SDKs should appear first.
- Typically, to setup your environment, you would execute the
- following script:
-
- \code
- Set DXSDK_DIR=C:\Program Files\Microsoft DirectX SDK (February 2007)
- %DXSDK_DIR%\utilities\bin\dx_setenv.cmd
- C:\program files\Microsoft Platform SDK\setenv.cmd
- \endcode
-
- If your environment is setup correctly, executing configure.exe on
- your Qt installation should automatically activate Phonon.
-
- \warning The MinGW version of Qt does not support building the
- Qt backend.
-
- \section2 Linux
-
- The Qt backend on Linux uses GStreamer (minimum version is 0.10),
- which must be installed on the system. At a minimum, you need the
- GStreamer library and base plugins, which provides support for \c
- .ogg files. The package names may vary between Linux
- distributions; on Mandriva, they have the following names:
-
- \table
- \header
- \o Package
- \o Description
- \row
- \o libgstreamer0.10_0.10
- \o The GStreamer base library.
- \row
- \o libgstreamer0.10_0.10-devel
- \o Contains files for developing applications with
- GStreamer.
- \row
- \o libgstreamer-plugins-base0.10
- \o Contains the basic plugins for audio and video
- playback, and will enable support for \c ogg files.
- \row
- \o libgstreamer-plugins-base0.10-devel
- \o Makes it possible to develop applications using the
- base plugins.
- \endtable
-
- \omit Should go in troubleshooting (in for example README)
- alsasink backend for GStreamer
- \table
- \header
- \o Variable
- \o Description
- \row
- \o PHONON_GST_AUDIOSINK
- \o Sets the audio sink to be used. Possible values are
- ... alsasink.
- \row
- \o PHONON_GSTREAMER_DRIVER
- \o Sets the driver for GStreamer. This driver will
- usually be configured automatically when
- installing.
- \row
- \o PHONON_GST_VIDEOWIDGET
- \o This variable can be set to the name of a widget to
- use as the video widget??
- \row
- \o PHONON_GST_DEBUG
- \o Phonon will give debug information while running if
- this variable is set to a number between 1 and 3.
- \row
- \o PHONON_TESTURL
- \o ...
- \endtable
- \endomit
-
- \section2 Mac OS X
-
- On Mac OS X, Qt uses QuickTime for its backend. The minimum
- supported version is 7.0.
-
- \section1 Deploying Phonon Applications on Windows and Mac OS X
-
- On Windows and Mac OS X, the Qt backend makes use of the
- \l{QtOpenGL Module}{QtOpenGL} module. You therefore need to deploy
- the QtOpenGL shared library. If this is not what you want, it is
- possible to configure Qt without OpenGL support. In that case, you
- need to run \c configure with the \c -no-opengl option.
-
- \section1 Work in Progress
-
- Phonon and its Qt backends, though fully functional for
- multimedia playback, are still under development. Functionality to
- come is the possibility to capture media and more processors for
- both music and video files.
-
- Another important consideration is to implement support for
- storing media to files; i.e., not playing back media directly.
-
- We also hope in the future to be able to support direct
- manipulation of media streams. This will give the programmer more
- freedom to manipulate streams than just through processors.
-
- Currently, the multimedia framework supports one input source. It will be
- possible to include several sources. This is useful in, for example, audio
- mixer applications where several audio sources can be sent, processed and
- output as a single audio stream.
-*/
-
-/*!
- \namespace Phonon
- \brief The Phonon namespace contains classes and functions for multimedia applications.
- \since 4.4
-
- This namespace contains classes to access multimedia functions for
- audio and video playback. Those classes are not dependent on any specific
- framework, but rather use exchangeable backends to do the work.
-
- See the \l{Phonon Module} page for general information about the
- framework and the \l{Phonon Overview} for an introductory tour of its
- features.
-*/
-
-/*!
- \page phonon-module.html
- \module Phonon
- \title Phonon Module
- \contentspage Qt's Modules
- \previouspage QtXmlPatterns
- \nextpage Qt3Support
- \ingroup modules
-
- \brief The Phonon module contains namespaces and classes for multimedia functionality.
-
- \generatelist{classesbymodule Phonon}
-
- Phonon is a cross-platform multimedia framework that enables the use of
- audio and video content in Qt applications. The \l{Phonon Overview}
- document provides an introduction to the architecture and features included
- in Phonon. The \l{Phonon} namespace contains a list of all classes, functions
- and namespaces provided by the module.
-
- Applications that use Phonon's classes need to
- be configured to be built against the Phonon module.
- The following declaration in a \c qmake project file ensures that
- an application is compiled and linked appropriately:
-
- \snippet doc/src/snippets/code/doc_src_phonon.qdoc 1
-
- The Phonon module is part of the \l{Qt Full Framework Edition} and the
- \l{Open Source Versions of Qt}.
-
- \section1 Qt Backends
-
- Qt Backends are currently developed for Phonon version 4.1. The Phonon
- project has moved on and introduced new features that the Qt Backends do not
- implement. We have chosen not to document the part of Phonon that we do not
- support. Any class or function not appearing in our documentation can be
- considered unsupported.
-
- \section1 License Information
-
- Qt Commercial Edition licensees that wish to distribute applications that
- use the Phonon module need to be aware of their obligations under the
- GNU Lesser General Public License (LGPL).
-
- Developers using the Open Source Edition can choose to redistribute
- the module under the appropriate version of the GNU LGPL; version 2.1
- for applications and libraries licensed under the GNU GPL version 2,
- or version 3 for applications and libraries licensed under the GNU
- GPL version 2.
-
- \legalese
- This file is part of the KDE project
-
- Copyright (C) 2005-2007 Matthias Kretz <kretz@kde.org> \BR
- Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
- Contact: Nokia Corporation (qt-info@nokia.com)
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License version 2 as published by the Free Software Foundation.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
- \endlegalese
-*/
diff --git a/doc/src/platform-notes-rtos.qdoc b/doc/src/platform-notes-rtos.qdoc
deleted file mode 100644
index 8a52d84fb..000000000
--- a/doc/src/platform-notes-rtos.qdoc
+++ /dev/null
@@ -1,220 +0,0 @@
-/*!
- \page platform-notes-vxworks.html
- \title Platform Notes - VxWorks
- \contentspage Platform Notes
- \target VxWorks
-
- \note VxWorks is a community supported platform. See the
- \l{Supported Platforms} page for more information.
-
- This page contains information about the Qt for VxWorks port. More
- information about the combinations of platforms and compilers supported
- by Qt can be found on the \l{Supported Platforms} page.
-
- \tableofcontents
-
- \section1 Supported Versions
-
- Qt has been tested on WindRiver VxWorks 6.7 in kernel mode using the
- vendor supplied GCC compiler, targetting both the x86 simulator
- (simpentium) and Power-PC devices (ppc).
- VxWorks' RTP mode is currently not supported.
-
- \section1 Limitations
-
- The VxWorks kernel has an optional POSIX compatibility layer, but this
- layer does not implement all POSIX functionality needed for a complete
- Qt port.
-
- \table
- \header \o Function \o Notes
- \row \o QProcess
- \o Not available - VxWorks has no concept of processes.
- \row \o QSharedMemory
- \o Not available - VxWorks has only a global, flat address space.
- \row \o QSystemSemaphore
- \o Not available - VxWorks has no concept of processes.
- \row \o QLibrary
- \o QLibrary is only a small stub to make it possible to build
- static plugins.
- \row \o QCoreApplication
- \o Can only be instantiated once. Qt's Q(CoreE)Application is
- tightly coupled to one address space and process, while VxWorks
- only supports one global address space and has no concept of
- processes.
- \row \o Phonon
- \o There is no standard audio backend, which could be integrated into Phonon.
- \row \o Qt3Support
- \o The Qt3Support library is not available on QNX.
-
- \endtable
-
- \section1 Build Instructions
-
- Qt for VxWorks needs to be \l{Cross-Compiling Qt for Embedded Linux
- Applications}{cross-compiled} on a Linux host. \c configure and \c make
- the build like you would with a standard \l{Cross-Compiling Qt for
- Embedded Linux Applications}{embedded Linux cross build}. Building the
- VxWorks simulator would be done like this:
-
- \code
- <path/to/qt/sources>/configure -xplatform unsupported/vxworks-simpentium-g++ -embedded vxworks -exceptions -no-gfx-linuxfb -no-mouse-linuxtp -no-mouse-pc -no-kbd-tty
- make
- \endcode
-
- \list
- \o \c{-xplatform unsupported/qws/vxworks-simpentium-g++} - selects the x86 simulator mkspec for VxWorks
- \o \c{-embedded vxworks} - builds the embedded version of Qt and sets the architecture to VxWorks
- \o \c{-exceptions} - see General Notes below
- \o \c{-no-gfx-linuxfb}, \c{-no-mouse-linuxtp}, \c{-no-mouse-pc} and \c{-no-kbd-tty} are Linux specific and won't work on VxWorks
- \endlist
-
- \section1 General Notes
-
- \list
-
- \o Configuring with \c{-exceptions} is necessary, because the VxWorks
- 6.7 g++ headers require exceptions to be enabled when compiling C++
- code.
-
- \o Configure's \c{-xplatform} can be any of
- \c{unsupported/vxworks-(simpentium|ppc)-(g++|dcc)}, but \c{dcc}
- (WindRiver DIAB compiler) has not yet tested been tested with Qt 4.6 and
- VxWorks 6.7.
-
- \o Building shared libraries with \c{-shared} (the default) doesn't
- really build shared libraries, like e.g. on Linux, since these are not
- supported by VxWorks. Instead, qmake will created partially linked
- objects, that can be loaded at runtime with \c{ld}.
-
- \o Creating static builds with \c{-static} is fully supported.
-
- \o "Munching" (generating constructors/destructors for static C++
- objects) is done automatically by a special qmake extension (for both
- shared libraries and executables)
-
- \o VxWorks does not have a file system layer, but the low level storage
- drivers have to supply a file system like interface to the applications.
- Since each driver implements a different subset of the functionality
- supported by this interface, Qt's file system auto-tests show wildly
- differing results running on different "file systems". The best results
- can be achieved when running on a (writable) NFS mount, since that
- provides the most Unix-ish interface. The worst results come from the
- FTP file system driver, which may crash when accessed by a
- \c{QFileInfo}.
-
- \o Keep in mind that VxWorks doesn't call your \c{main()} function with
- the standard \c{argc}/\c{argv} parameters. So either add a special
- \c{vxmain()} function or use a tool like \c{callmain} to translate
- VxWorks' commandline arguments to an \c{argc}/\c{argv} array.
-
- \o Some example will fail to build, due to some missing dependencies
- (e.g. shared memory) - this will be fixed in a later release.
-
- \endlist
-*/
-
-/*!
- \page platform-notes-qnx.html
- \title Platform Notes - QNX
- \contentspage Platform Notes
- \target QNX
-
- \note QNX is a community supported platform. See the
- \l{Supported Platforms} page for more information.
-
- This page contains information about the Qt for QNX port. More
- information about the combinations of platforms and compilers supported
- by Qt can be found on the \l{Supported Platforms} page.
-
- Note that Qt for QNX is currently based on \l{Qt for Embedded Linux}, which
- contains its own windowing system. Mixing QNX's Photon environment with
- Qt for QNX is currently not possible. Building Qt for QNX with Photon's
- X11 embedded server is not recommended due to missing support for X11 extensions,
- resulting in poor rendering quality.
-
- Qt for QNX contains experimental screen and input drivers based on QNX's
- \c devi-hid and \c io-display. For more information, check the class documentation
- for QQnxScreen, QWSQnxKeyboardHandler and QQnxMouseHandler. See the
- \l{Porting Qt for Embedded Linux to a New Architecture} document for information
- on how to add custom screen or input drivers.
-
- \tableofcontents
-
- \section1 Supported Versions
-
- Qt has been tested on QNX 6.4 on i386 and PowerPC targets with QNX's default
- gcc compiler.
-
- \section1 Limitations
-
- Some of Qt's functionality is currently not available on QNX:
-
- \table
- \header \o Function \o Notes
- \row \o QProcess
- \o Not available - QNX doesn't support mixing threads and processes.
- \row \o QSharedMemory
- \o Not available - QNX doesn't support SYSV style shared memory.
- \row \o QSystemSemaphore
- \o Not available - QNX doesn't support SYSV style system semaphores.
- \row \o QWS Multi Process
- \o QT_NO_QWS_MULTIPROCESS is always on due to missing shared memory support.
- \row \o Phonon
- \o There is no standard audio backend, which could be integrated into Phonon.
- \row \o Qt3Support
- \o The Qt3Support library is not available on QNX.
- \endtable
-
- \section1 Build Instructions
-
- Qt for QNX needs to be built either on a QNX system, or \l{Cross-Compiling Qt
- for Embedded Linux Applications}{cross-compiled} on a Linux host. In either
- case, The QNX Software Development Platform must be installed.
-
- Example configure line for cross-compiling Qt for QNX on a Linux host for an
- i386 QNX target:
-
- \code
- configure -xplatform unsupported/qws/qnx-i386-g++ -embedded i386 -no-gfx-linuxfb -no-mouse-linuxtp -no-kbd-tty -no-qt3support -qt-gfx-qnx -qt-mouse-qnx -qt-kbd-qnx -no-exceptions
- \endcode
-
- \list
- \o \c{-xplatform unsupported/qws/qnx-i386-g++} - selects the i386-g++ mkspec for QNX
- \o \c{-embedded i386} - builds the embedded version of Qt and sets the architecture to i386
- \o \c{-no-gfx-linuxfb}, \c{-no-mouse-linuxtp} and \c{-no-kbd-tty} are Linux specific and won't work on QNX
- \o \c{-no-qt3support} - required since the Qt3 support classes are not supported on QNX
- \o \c{-no-exceptions} - reduces the size of the library by disabling exception support
- \o \c{-qt-gfx-qnx} - enables the experimental \c{io-graphics} based display driver
- \o \c{-qt-mouse-qnx} - enables the experimental \c{devi-hig} based mouse driver
- \o \c{-qt-kbd-qnx} - enables the experimental \c{devi-hig} based keyboard driver
- \endlist
-
- \section1 General Notes
-
- \list
- \o To enable the experimental QNX display and input drivers, \c{io-display} needs to be
- up and running. The \c devi-hid based Qt input drivers require \c devi-hid to run
- in resource mode without Photon support. To enable a standard mouse and keyboard
- combination, run \c devi-hid as follows: \c{/usr/photon/bin/devi-hid -Pr kbd mouse}.
- Note that your current shell will not accept keyboard and mouse input anymore after
- running that command, so run it either from a script that launches a Qt application
- afterwards, or make sure to have remote login available to launch a Qt application.
- In addition, the \c QWS_DISPLAY, \c QWS_MOUSE_PROTO and \c QWS_KEYBOARD environment
- variables should all be set to \c{qnx} before running a Qt application.
-
- \o The 3rd party TIFF library currently doesn't build due to the missing \c inflateSync
- symbol from QNX's \c{libz.so.2}. Workarounds would be to manually replace QNX's libz
- with a newer version, or disable the TIFF plugin entierly by appending
- \c{QT_CONFIG += no-tiff} to \c{.qmake.cache} after configuring Qt.
-
- \o Some of the tools, examples and demos do not compile due to dependencies on QProcess
- or other classes that are not available on QNX.
- \endlist
-
- \section1 Platform Regressions
-
- Qt for QNX's behavior is mostly identical with \l{Qt for Embedded Linux}. However,
- some regressions were spotted in QDateTime computation around year 0 and year 1970,
- which have been tracked back to faulty time zone data on some QNX versions.
-*/
diff --git a/doc/src/platform-notes.qdoc b/doc/src/platform-notes.qdoc
deleted file mode 100644
index fc829f72e..000000000
--- a/doc/src/platform-notes.qdoc
+++ /dev/null
@@ -1,401 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page platform-notes-platforms.html
- \ingroup platform-notes
- \title Platform Notes
- \brief Information about the platforms on which Qt can be used.
-
- This page contains information about the platforms Qt is currently known
- to run on, with links to platform-specific notes, including any known bugs
- or incompatibilities.
-
- \list
- \o \l{Platform Notes - X11}
- \tableofcontents{1 Platform Notes - X11}
- \o \l{Platform Notes - Windows}
- \tableofcontents{1 Platform Notes - Windows}
- \o \l{Platform Notes - Mac OS X}
- \tableofcontents{1 Platform Notes - Mac OS X}
- \o \l{Platform Notes - Embedded Linux}
- \tableofcontents{1 Platform Notes - Embedded Linux}
- \o \l{Platform Notes - Windows CE}
- \tableofcontents{1 Platform Notes - Windows CE}
- \o \l{Platform Notes - QNX}
- \tableofcontents{1 Platform Notes - QNX}
- \o \l{Platform Notes - VxWorks}
- \tableofcontents{1 Platform Notes - VxWorks}
- \endlist
-
- See also the \l{Compiler Notes} for information about compiler-specific
- build issues. Information about the combinations of platforms and compilers
- supported by Qt can be found on the \l{Supported Platforms} page.
-
- If you have anything to add to this list or any of the platform or
- compiler-specific pages, please submit it via the \l{Bug Report Form}
- or through the \l{Public Qt Repository}.
-*/
-
-/*!
- \page platform-notes-x11.html
- \title Platform Notes - X11
- \contentspage Platform Notes
-
- This page contains information about the X11 platforms Qt is currently
- known to run on, with links to platform-specific notes. More information
- about the combinations of platforms and compilers supported by Qt can be
- found on the \l{Supported Platforms} page.
-
- \tableofcontents
-
- \target AIX
- \section1 AIX - 5.2
-
- Qt has been tested on AIX 5.2, using the
- \l{Compiler Notes#IBM xlC (AIX)}{xlC} compiler.
-
- \table
- \header \o Compiler \o Notes
- \row \o xlC
- \o If Qt is built correctly but all symbols are reported to be missing
- when you link an application, your makeC++SharedLib script might be out
- of date. Make sure you have the latest version from the
- \l{http://www-306.ibm.com/software/awdtools/vacpp/support/}{IBM website}.
- \row \o GCC
- \o We have tested earlier versions of Qt 4 successfully with GCC version
- 3.3 and above. Some versions of GCC may fail to link Qt with a "TOC overflow"
- message.
- Fix this by upgrading to the latest maintenance release of the dynamic
- linker. On AIX this is bos.rte.bind_cmds.4.1.5.3 or later.
- Some versions of GCC may fail to build Qt with STL and large-file support
- enabled, due to
- \l{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9551}{a bug in GCC}.
- Fix this by upgrading to the latest maintenance release of the compiler.
- It is also possible to work around this problem by running configure with
- either \c{-no-stl} or \c{-no-largefile}.
- \endtable
-
- \target FreeBSD
- \section1 FreeBSD - 6.0-RELEASE
-
- \note FreeBSD is a community supported platform. See the
- \l{Supported Platforms} page for more information.
-
- The system compiler on FreeBSD 4.x is gcc 2.95.4, which is not
- officially supported by Qt 4. We develop using and recommend
- ports/lang/gcc34. You will need to run configure with the
- \c{-platform freebsd-g++34} arguments. Optionally, you may use
- ports/lang/icc.
-
- The system compiler on FreeBSD 5.x and 6.x is GCC 3.4.4, which should be
- sufficient to build Qt. You do not need to add any special arguments when
- running configure. Optionally, you may use ports/lang/icc.
-
- Note that we do not actively test FreeBSD 4.x and 5.x. Our developers
- migrated to 6.x after the Qt 4 launch. FreeBSD-CURRENT is not supported.
-
- \target HP-UX
- \section1 HP-UX
-
- Qt supports HP-UX on both PA-RISC and the Itanium (IA64) architectures.
-
- \section2 PA-RISC - B.11.11 or later
-
- You can configure Qt for aCC in 32 and 64 bit mode (hpux-acc-64 or
- hpux-acc-32), or gcc in 32 bit mode (hpux-g++). The default platform is
- hpux-acc-32. The minimum required version for aCC (HP ANSI C++) on PA-RISC
- is A.03.57. The supported gcc compiler is gcc 3.4.3.
-
- \section2 Itanium - B.11.23 or later
-
- You can configure Qt for aCC in 32 and 64 bit mode (hpuxi-acc-64 or
- hpuxi-acc-32). gcc is currently unsupported. The default platform is
- hpuxi-acc-64. The minimum required version for aCC (HP ANSI C++) on
- Itanium is A.06.12.
-
- \section2 OpenGL Support
-
- Qt's \l{QtOpenGL}{OpenGL} module requires GLX 1.3 or later to be installed.
- This is available for HP-UX 11i - see the
- \l{http://docs.hp.com/en/5992-2331/ch04s02.html}{Graphics and Technical Computing Software}
- section of the release notes for more information.
-
- \target IRIX
- \section1 IRIX - 6.5.x
-
- \bold{IRIX is an unsupported platform - please see Qt's online
- \l{Platform Support Policy} for details.}
-
- Unpackaging and IRIX tar:
- Because of long filenames some files will be cut off incorrectly with IRIX
- tar. Please use GNU tar to unpack Qt packages.
-
- \section1 Linux
-
- There are no known problems with using Qt on production versions of
- Linux/x86, Linux/ppc, Linux/amd64 and Linux/ia64 (including Altix(R)).
-
- For the gcc/g++ compiler, please also see the relevant
- \l{Compiler Notes#GCC}{compiler page}.
-
- \section2 Installation problems
-
- See also the \l{Installation FAQ}.
-
- If you experience problems when installing new open source versions of Qt
- versions, try to use the open source Qt archives (e.g., RPM)
- provided by your Linux distribution. If you need to install the source (.tgz)
- archive, be aware that you will probably end up with two different
- versions of the Qt library installed on your system, which will probably
- lead to link errors, like this:
- \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 0
- Fix this by removing the old version of the library.
-
- If you have problems installing open source versions of Qt
- provided by your Linux distribution (e.g., RPM), please consult the
- maintainers of the distribution, not us.
-
- Some RPM versions have problems installing some of the Qt RPM archives
- where installation stops with an error message warning about a
- "Failed Dependency". Use the \c{--nodeps} option to \c rpm to workaround
- this problem.
-
- \target Solaris
- \section1 Solaris - 9 or later
-
- \section2 Unpackaging and Solaris tar
-
- On some Solaris systems, both Solaris tar and GNU tar have been reported
- to truncate long filenames. We recommend using star instead
- (http://star.berlios.de).
-
- \section2 CC on Solaris
-
- Be sure to check our \l{Compiler Notes#Sun Studio}{Forte Developer / Sun Studio}
- notes.
-
- \section2 GCC on Solaris
-
- Be sure to check the installation notes for \l{GCC on Solaris}.
- Do not use GCC with Sun's assembler/linker, this will result in link-time
- errors in shared libraries. Use GNU binutils instead.
-
- GCC 3.2.* is known to miscompile Qt due to an optimizer bug that will
- cause the resulting binaries to hang. Please use GCC 3.4.2 or later.
-*/
-
-/*!
- \page platform-notes-windows.html
- \title Platform Notes - Windows
- \contentspage Platform Notes
-
- This page contains information about the Windows platforms Qt is currently
- known to run on, with links to platform-specific notes. More information
- about the combinations of platforms and compilers supported by Qt can be
- found on the \l{Supported Platforms} page.
-
- \tableofcontents
-
- \section1 Windows Vista
-
- At the time Qt %VERSION% was released, there were no known Vista-specific issues.
-
- \target Windows NT
- \section1 Windows XP, Windows 2000 and Windows NT
-
- \section2 Installation location
-
- Installing Qt into a directory with spaces, e.g. C:\\Program Files, may
- cause linker errors like the following:
- \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 2
-
- Install Qt into a subdirectory without spaces to avoid this problem.
-
- \section2 AccelGALAXY graphic card
-
- When you use a NT 4.0 machine with the driver number
- 4,00,1381,1000,021,4.0.0 there is a problem with drag an drop and icons.
- The computer freezes, and you have to reset. The problem disappears with
- the newest version of the driver, available at
- \l{http://www.es.com/}{www.es.com}.
-
- \section2 Possible GL conflict
-
- There is a known issue with running Microsoft NetMeeting, Lotus SameTime
- and other applications that require screen grabbing while direct
- rendering is enabled. Other GL-applications may not work as expected,
- unless direct rendering is disabled.
-*/
-
-/*!
- \page platform-notes-mac.html
- \title Platform Notes - Mac OS X
- \contentspage Platform Notes
-
- This page contains information about the Mac OS X versions Qt is currently
- known to run on, with links to platform-specific notes. More information
- about the combinations of platforms and compilers supported by Qt can be
- found on the \l{Supported Platforms} page.
-
- \tableofcontents
-
- \section1 General Information
-
- Qt 4.4 and Qt 4.5 development is only supported on Mac OS X 10.4 and up.
- Applications built against these version of Qt can be deployed on Mac OS X
- 10.3, but cannot be developed on that version of the operating system due
- to compiler issues.
-
- Qt 4.3 has been tested to run on Mac OS X 10.3.9 and up. See notes on
- the binary package for more information.
-
- Qt 4.1 has been tested to run on Mac OS X 10.2.8 and up. Qt 4.1.4 is the
- last release to work with Mac OS X 10.2.
-
- \section2 Required GCC version
-
- Apple's gcc 4 that is shipped with the Xcode Tools for both Mac OS X 10.4
- and 10.5 will compile Qt. There is preliminary support for gcc 4.2 which
- is included with Xcode Tools 3.1+ (configurable with
- \c{-platform macx-g++42}).
-
- \section2 Binary Package
-
- The binary package requires that you have your .qt-license file in your
- home directory. Installer.app cannot complete without a valid .qt-license
- file. Evaluation users of Qt will have information about how to create
- this file in the email they receive.
-
- The binary package was built on Mac OS X 10.4 with Xcode Tools 2.1
- (gcc 4.0.0) for Qt 4.1.0, Xcode Tools 2.2 (gcc 4.0.1) for Qt 4.1.1-4.1.4
- and Xcode Tools 2.3 for 4.2.0. It will only link executables built
- against 10.4 (or a 10.4 SDK). You should be able to run applications
- linked against these frameworks on Mac OS X 10.3.9 and Mac OS X 10.4+.
- If you require a different configuration, you will have to use the
- source package and build with GCC 3.3.
-
- \section2 Mac OS X on Intel hardware
-
- Qt 4 fully supports both the Intel and PowerPC architectures on the Mac.
- As of Qt 4.1 it is possible to support the Intel architecture by
- creating Universal Binaries with qmake. As of Qt 4.1 it is possible to
- build Qt as a set of universal binaries and frameworks from configure by
- adding these extra flags:
-
- \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 3
-
- If you are building on Intel hardware you can omit the sdk parameter, but
- PowerPC hardware requires it.
-
- You can also generate universal binaries using qmake. Simply add these
- lines to your .pro file:
-
- \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 4
-
- \section2 Build Issues
-
- If Qt does not build upon executing make, and fails with an error message
- such as
-
- \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 5
-
- this could be an indication you have upgraded your version of Mac OS X
- (e.g. 10.3 to 10.4), without upgrading your Developer Tools (Xcode Tools).
- These must match in order to successfully compile files.
-
- Please be sure to upgrade both simultaneously. If problems still occur,
- contact support.
-
- \section2 Fink
-
- If you have installed the Qt for X11 package from \l{Fink},
- it will set the QMAKESPEC environment variable to darwin-g++. This will
- cause problems when you build the Qt for Mac OS X package. To fix this, simply
- unset your QMAKESPEC or set it to macx-g++ before you run configure.
- You need to have a fresh Qt distribution (make confclean).
-
- \section2 MySQL and Mac OS X
-
- There seems to be a issue when both -prebind and -multi_module are
- defined when linking static C libraries into dynamic library. If you
- get the following error message when linking Qt:
-
- \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 6
-
- re-link Qt using -single_module. This is only a problem when building the
- MySQL driver into Qt. It does not affect plugins or static builds.
-
- \section2 Qt and Precompiled Headers (PCH)
-
- Starting with Qt 3.3.0 it is possible to use precompiled headers. They
- are not enabled by default as it appears that some versions of Apple's
- GCC and make have problems with this feature. If you want to use
- precompiled headers when building the Qt source package, specify the
- -pch option to configure. If, while using precompiled headers, you
- encounter an internal compile error, try removing the -include header
- statement from the compile line and trying again. If this solves the
- problem, it probably is a good idea to turn off precompiled headers.
- Also, consider filing a bug report with Apple so that they can
- improve support for this feature.
-*/
-
-/*!
- \page platform-notes-windows-ce.html
- \title Platform Notes - Windows CE
- \contentspage Platform Notes
-
- This page contains information about the Windows CE and Windows Mobile
- platforms Qt is currently known to run on, with links to platform-specific
- notes. More information about the combinations of platforms and compilers
- supported by Qt can be found on the \l{Supported Platforms} page.
-*/
-
-/*!
- \page platform-notes-embedded-linux.html
- \title Platform Notes - Embedded Linux
- \contentspage Platform Notes
-
- This page contains information about the Embedded Linux platforms Qt is
- currently known to run on, with links to platform-specific notes. More
- information about the combinations of platforms and compilers supported
- by Qt can be found on the \l{Supported Platforms} page.
-*/
diff --git a/doc/src/platforms/atomic-operations.qdoc b/doc/src/platforms/atomic-operations.qdoc
new file mode 100644
index 000000000..5bc6968a1
--- /dev/null
+++ b/doc/src/platforms/atomic-operations.qdoc
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 atomic-operations.html
+ \title Implementing Atomic Operations
+ \brief A guide to implementing atomic operations on new architectures.
+
+ \ingroup best-practices
+ \ingroup qt-embedded-linux
+
+ Qt uses an optimization called \l {Implicitly Shared
+ Classes}{implicit sharing} for many of its value classes.
+
+ Starting with Qt 4, all of Qt's implicitly shared classes can
+ safely be copied across threads like any other value classes,
+ i.e., they are fully \l {Reentrancy and Thread-Safety}{reentrant}.
+ This is accomplished by implementing reference counting
+ operations using atomic hardware instructions on all the
+ different platforms supported by Qt.
+
+ To support a new architecture, it is important to ensure that
+ these platform-specific atomic operations are implemented in a
+ corresponding header file (\c qatomic_ARCH.h), and that this file
+ is located in Qt's \c src/corelib/arch directory. For example, the
+ Intel 80386 implementation is located in \c
+ src/corelib/arch/qatomic_i386.h.
+
+ Currently, Qt provides two classes providing several atomic
+ operations, QAtomicInt and QAtomicPointer. These classes inherit
+ from QBasicAtomicInt and QBasicAtomicPointer, respectively.
+
+ When porting Qt to a new architecture, the QBasicAtomicInt and
+ QBasicAtomicPointer classes must be implemented, \e not QAtomicInt
+ and QAtomicPointer. The former classes do not have constructors,
+ which makes them POD (plain-old-data). Both classes only have a
+ single member variable called \c _q_value, which stores the
+ value. This is the value that all of the atomic operations read
+ and modify.
+
+ All of the member functions mentioned in the QAtomicInt and
+ QAtomicPointer API documentation must be implemented. Note that
+ these the implementations of the atomic operations in these
+ classes must be atomic with respect to both interrupts and
+ multiple processors.
+
+ \warning The QBasicAtomicInt and QBasicAtomicPointer classes
+ mentioned in this document are used internally by Qt and are not
+ part of the public API. They may change in future versions of
+ Qt. The purpose of this document is to aid people interested in
+ porting Qt to a new architecture.
+*/
diff --git a/doc/src/platforms/compiler-notes.qdoc b/doc/src/platforms/compiler-notes.qdoc
new file mode 100644
index 000000000..8f1202dbd
--- /dev/null
+++ b/doc/src/platforms/compiler-notes.qdoc
@@ -0,0 +1,311 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 compiler-notes.html
+ \ingroup platform-specific
+ \title Compiler Notes
+ \brief Information about the C++ compilers and tools used to build Qt.
+
+ This page contains information about the C++ compilers and tools used
+ to build Qt on various platforms.
+
+ \tableofcontents
+
+ Please refer to the \l{Platform Notes} for information on the platforms
+ Qt is currently known to run on, and see the \l{Supported Platforms}
+ page for information about the status of each platform.
+
+ If you have anything to add to this list or any of the platform or
+ compiler-specific pages, please submit it via the \l{Bug Report Form}
+ or through the \l{Public Qt Repository}.
+
+ \section1 Supported Features
+
+ Not all compilers used to build Qt are able to compile all modules. The following table
+ shows the compiler support for five modules that are not uniformly available for all
+ platforms and compilers.
+
+ \table
+ \header \o Compiler \o{5,1} Features
+ \header \o \o Concurrent \o XmlPatterns \o WebKit \o CLucene \o Phonon
+ \row \o g++ 3.3 \o \o \bold{X} \o \o \bold{X} \o \bold{X}
+ \row \o g++ 3.4 and up \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
+ \row
+ \row \o SunCC 5.5 \o \o \o \o \bold{X} \o \bold{X}
+ \row
+ \row \o aCC series 3 \o \o \o \o \bold{X} \o \bold{X}
+ \row \o aCC series 6 \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
+ \row \o xlC 6 \o \o \o \o \bold{X} \o \bold{X}
+ \row \o Intel CC 10 \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
+ \row
+ \row \o MSVC 2003 \o \bold{X} \o \bold{X} \o \o \bold{X} \o \bold{X}
+ \row \o MSVC 2005 and up \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
+ \endtable
+
+ \target GCC
+ \section1 GCC
+
+ \section2 GCC on Windows (MinGW)
+
+ We have tested Qt with this compiler on Windows XP.
+ The minimal version of MinGW supported is:
+
+ \list
+ \o GCC 3.4.2
+ \o MinGW runtime 3.7
+ \o win32api 3.2
+ \o binutils 2.15.91
+ \o mingw32-make 3.80.0-3
+ \endlist
+
+ \note For users of the MinGW binary package: This package is now
+ based on MinGW 4.4. The installer no longer offers to download
+ MinGW for you, but rather offers to use a version of MinGW that
+ you already have installed on your machine. You just tell the
+ installer which directory MinGW is installed in. If you don't
+ already have MinGW 4.4 installed, you can download a .zip archive
+ from our \l{ftp://ftp.trolltech.com/misc/MinGW-gcc440_1.zip} {ftp
+ site}. This archive provides fixes to MinGW and support for
+ missing API, See the _patches directory in the archive for
+ details.
+
+ \note A MinGW installation is only needed to build against the
+ binary pacakge, not to run the pre-compiled binaries that are in
+ the package.
+
+ \section2 GCC 4.0.0
+
+ The released package of the compiler has some bugs that lead to
+ miscompilations. We recommend using GCC 4.0.1 or later, or to use
+ a recent CVS snapshot of the GCC 4.0 branch. The version of GCC
+ 4.0.0 that is shipped with Mac OS X 10.4 "Tiger" is known to work
+ with Qt for Mac OS X.
+
+ \section2 HP-UX
+
+ The hpux-g++ platform is tested with GCC 3.4.4.
+
+ \section2 Solaris
+
+ Please use GCC 3.4.2 or later.
+
+ \section2 Mac OS X
+
+ Please use the latest GCC 3.3 from Apple or a later version of GCC 3.
+ The gcc 3.3 that is provided with Xcode 1.5 is known to generate bad code.
+ Use the November 2004 GCC 3.3 updater \l{http://connect.apple.com}{available from Apple}.
+
+ \section2 GCC 3.4.6 (Debian 3.4.6-5) on AMD64 (x86_64)
+
+ This compiler is known to miscompile some parts of Qt when doing a
+ release build. There are several workarounds:
+
+ \list 1
+ \o Use a debug build instead.
+ \o For each miscompilation encountered, recompile the file, removing the -O2 option.
+ \o Add -fno-gcse to the QMAKE_CXXFLAGS_RELEASE.
+ \endlist
+
+ \section1 HP ANSI C++ (aCC)
+
+ The hpux-acc-32 and hpux-acc-64 platforms are tested with aCC A.03.57. The
+ hpuxi-acc-32 and hpuxi-acc-64 platforms are tested with aCC A.06.10.
+
+ \section1 Intel C++ Compiler
+
+ Qt supports the Intel C++ compiler on both Windows and Linux.
+ However, there are a few issues on Linux (see the following
+ section).
+
+ \section2 Intel C++ Compiler for Linux
+
+ Nokia currently tests the following compilers:
+
+ \list
+
+ \o Intel(R) C++ Compiler for applications running on IA-32,
+ Version 10.1 Build 20080602 Package ID: l_cc_p_10.1.017
+
+ \o Intel(R) C++ Compiler for applications running on Intel(R) 64,
+ Version 10.1 Build 20080602 Package ID: l_cc_p_10.1.017
+
+ \endlist
+
+ We do not currently test the IA-64 (Itanium) compiler.
+
+ \section2 Known Issues with Intel C++ Compiler for Linux
+
+ \list
+
+ \o Precompiled header support does not work in version 10.0.025
+ and older. For these compilers, you should configure Qt with
+ -no-pch. Precompiled header support works properly in version
+ 10.0.026 and later.
+ \o Version 10.0.026 for Intel 64 is known to miscompile qmake when
+ building in release mode. For now, configure Qt with
+ -debug. Version 10.1.008 and later can compile qmake in release
+ mode.
+ \o Versions 10.1.008 to 10.1.015 for both IA-32 and Intel 64 are
+ known crash with "(0): internal error: 0_47021" when compiling
+ QtXmlPatterns, QtWebKit, and Designer in release mode. Version
+ 10.1.017 compiles these modules correctly in release mode.
+ \endlist
+
+ \section2 Intel C++ Compiler (Windows, Altix)
+
+ Qt 4 has been tested successfully with:
+
+ \list
+ \o Windows - Intel(R) C++ Compiler for 32-bit applications,
+ Version 9.1.040.
+ \o Altix - Intel(R) C++ Itanium(R) Compiler for Itanium(R)-based
+ applications Version 8.1 Build 20050406 Package ID: l_cc_pc_8.1.030
+ \endlist
+
+ We currently only test the Intel compiler on 32-bit Windows versions.
+
+ \section1 MIPSpro (IRIX)
+
+ \bold{IRIX is an unsupported platform. See the \l{Supported Platforms} page
+ and Qt's Software's online \l{Platform Support Policy} page for details.}
+
+ Qt 4.4.x requires MIPSpro version 7.4.2m.
+
+ Note that MIPSpro version 7.4.4m is currently not supported, since it has
+ introduced a number of problems that have not yet been resolved.
+ We recommend using 7.4.2m for Qt development. However, please note the
+ unsupported status of this platform.
+
+ \target Sun Studio
+ \section1 Forte Developer / Sun Studio (Solaris)
+
+ \section2 Sun Studio
+
+ Qt is tested using Sun Studio 12 (Sun CC 5.9). Go to
+ \l{Sun Studio Patches} page on Sun's Web site to download
+ the latest patches for your Sun compiler.
+
+ Please note that Qt 4.6 is stricter in its STL requirements and
+ that the default STL implementation used by Sun CC does not pass
+ those requirements. This does not affect binary compatibility and
+ you can continue to use STL in your own code, but Qt's
+ STL-compatibility functions will be disabled.
+
+ Sun CC ships with a secondary STL implementation (called stlport4)
+ which is standards-compliant and can be used by Qt. You can enable
+ it by passing the -library=stlport4 option to the compiler. Note
+ that this does not affect Qt's binary compatibility, but it may
+ affect that of other libraries and programs that use STL.
+
+ \section2 Sun WorkShop 5.0
+
+ Sun WorkShop 5.0 is not supported with Qt 4.
+
+ \section1 Visual Studio (Windows)
+
+ We do most of our Windows development on Windows XP, using Microsoft
+ Visual Studio .NET 2005 and Visual Studio 2008 (both the 32- and 64-bit
+ versions).
+
+ Qt works with the Standard Edition, the Professional Edition and Team
+ System Edition of Visual Studio 2005.
+
+ We also test Qt 4 on Windows XP with Visual Studio .NET and Visual Studio 2003.
+
+ In order to use Qt with the Visual Studio 2005/2008 Express Edition you need
+ to download and install the platform SDK. Due to limitations in the
+ Express Edition it is not possible for us to install the Qt Visual
+ Studio Integration. You will need to use our command line tools to
+ build Qt applications with this edition.
+
+ The Visual C++ Linker doesn't understand filenames with spaces (as in
+ \c{C:\Program files\Qt\}) so you will have to move it to another place,
+ or explicitly set the path yourself; for example:
+
+ \snippet doc/src/snippets/code/doc_src_compiler-notes.qdoc 0
+
+ If you are experiencing strange problems with using special flags that
+ modify the alignment of structure and union members (such as \c{/Zp2})
+ then you will need to recompile Qt with the flags set for the
+ application as well.
+
+ If you're using Visual Studio .NET (2002) Standard Edition, you should be
+ using the Qt binary package provided, and not the source package.
+ As the Standard Edition does not optimize compiled code, your compiled
+ version of Qt would perform suboptimally with respect to speed.
+
+ With Visual Studio 2005 Service Pack 1 a bug was introduced which
+ causes Qt not to compile, this has been fixed with a hotfix available
+ from Microsoft. See this
+ \l{http://qt.nokia.com/developer/faqs/faq.2006-12-18.3281869860}{Knowledge Base entry}
+ for more information.
+
+ \section1 IBM xlC (AIX)
+
+ The makeC++SharedLib utility must be in your PATH and be up to date to
+ build shared libraries. From IBM's
+ \l{http://www.redbooks.ibm.com/abstracts/sg245674.html}{C and C++ Application Development on AIX}
+ Redbook:
+
+ \list
+ \o "The second step is to use the makeC++SharedLib command to create the
+ shared object. The command has many optional arguments, but in its
+ simplest form, can be used as follows:"
+ \snippet doc/src/snippets/code/doc_src_compiler-notes.qdoc 1
+ \o "The full path name to the command is not required; however, to avoid
+ this, you will have to add the directory in which it is located to
+ your PATH environment variable. The command is located in the
+ /usr/vacpp/bin directory with the VisualAge C++ Professional for AIX,
+ Version 5 compiler."
+ \endlist
+
+ \section2 VisualAge C++ for AIX, Version 6.0
+
+ Make sure you have the
+ \l{http://www-1.ibm.com/support/search.wss?rs=32&amp;tc=SSEP5D&amp;dc=D400}{latest upgrades}
+ installed.
+
+ \section2 GCCE (Symbian)
+
+ GCCE cannot be used to compile Qt libaries for the Symbian platform, but GCCE is supported
+ when compiling Qt applications for Symbian platform.
+*/
diff --git a/doc/src/platforms/emb-HwAcc-LinuxEmbedded.qdoc b/doc/src/platforms/emb-HwAcc-LinuxEmbedded.qdoc
new file mode 100644
index 000000000..a9bd167b1
--- /dev/null
+++ b/doc/src/platforms/emb-HwAcc-LinuxEmbedded.qdoc
@@ -0,0 +1,105 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embeddedLinux-accel.html
+
+ \target Hardware Acceleration with Qt for Embedded Linux
+
+ \title Qt for Embedded Linux Hardware Accelerated Graphics
+ \ingroup qt-embedded-linux
+
+
+ \input platforms/emb-hardwareacceleration.qdocinc
+
+ \section1 Windowing on Embedded Linux with Hardware Accelerated Graphics
+
+ Qt for Embedded Linux includes its own windowing system, QWS. QWS was
+ designed in 1999, well before graphics acceleration was available for
+ embedded devices. It does a great job providing a lightweight window
+ manager including all the expected functionality such as arbitrary
+ windows that can be moved, resized, minimized, etc. Getting QWS to work
+ with GPUs is very challenging, particularly with OpenGL and OpenVG
+ because there is no standard way in Linux to share textures across
+ processes. Some silicon vendors provide private APIs to allow texture
+ sharing, others do not. These limitations are documented under the
+ sections describing each type of accelerated hardware APIs. The simplest
+ most generic support for accelerated graphics is a full screen single
+ process single window.
+
+ \section2 General options
+ \list
+ \o QWS, not accelerated, allows arbitrary windowing with multiple
+ processes drawing on the screen.
+ \o X11 with an accelerated X11 driver provided by the silicon
+ vendor. Like QWS, this allows arbitrary windows with multiple
+ processes drawing on the screen. Our experience is that there is
+ some overhead from X11 which will adversely affect framerates.
+ Additionally, our experience is that the drivers from silicon
+ vendors are still maturing.
+ \o Full screen single process single window. This will always work.
+ Some additional capabilities are available and are documented in
+ the acceleration specific API sections.
+ \endlist
+
+ \section1 Supported Hardware Accelerated Graphics APIs
+
+ This table shows which Hardware Accelerated Graphics APIs currently
+ supported by Qt.
+
+ \table
+ \header
+ \o Supported APIs
+ \o API Version
+ \row
+ \o \l {Qt for Embedded Linux and OpenGL}{OpenGL ES}
+ \o 1.x and 2.x
+ \row
+ \o \l {Qt for Embedded Linux and OpenVG}{OpenVG }
+ \o 1.1
+ \row
+ \o \l {Qt for Embedded Linux and DirectFB}{DirectFB}
+ \o 2.0
+ \endtable
+
+
+*/
diff --git a/doc/src/platforms/emb-HwAcc-WinCE.qdoc b/doc/src/platforms/emb-HwAcc-WinCE.qdoc
new file mode 100644
index 000000000..b7789f103
--- /dev/null
+++ b/doc/src/platforms/emb-HwAcc-WinCE.qdoc
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embeddedWinCE-accel.html
+
+ \target Hardware Acceleration with Qt for Windows CE
+
+ \title Qt for Windows CE Hardware Accelerated Graphics
+ \ingroup qtce
+
+ \input platforms/emb-hardwareacceleration.qdocinc
+
+ \section1 Supported Hardware Accelerated Graphics APIs
+
+ This list shows which Hardware Accelerated Graphics APIs currently
+supported by Qt.
+
+ \table
+ \header
+ \o Supported Hardware Accelerated Graphics APIs
+ \row
+ \o \l {Qt for Windows CE and OpenGL ES}{OpenGL ES}
+ \row
+ \o \l {Qt for Windows CE and OpenVG}{OpenVG}
+ \endtable
+
+
+
+*/
diff --git a/doc/src/platforms/emb-accel.qdoc b/doc/src/platforms/emb-accel.qdoc
new file mode 100644
index 000000000..97c51143d
--- /dev/null
+++ b/doc/src/platforms/emb-accel.qdoc
@@ -0,0 +1,143 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embedded-accel.html
+
+ \target add your graphics driver to Qt for Embedded Linux
+
+ \title Adding an Accelerated Graphics Driver to Qt for Embedded Linux
+ \ingroup qt-embedded-linux
+
+ In \l{Qt for Embedded Linux}, painting is a pure software implementation
+ normally performed in two steps. First, each window is rendered
+ onto a QWSWindowSurface using QPaintEngine. Second, the server
+ composes the surface images and copies the composition to the
+ screen (see \l{Qt for Embedded Linux Architecture} for details).
+ \l{Qt for Embedded Linux} uses QRasterPaintEngine (a raster-based implementation of
+ QPaintEngine) to implement painting operations, and uses QScreen
+ to implement window composition.
+
+ It is possible to add an accelerated graphics driver to take
+ advantage of available hardware resources. This is described in
+ detail in the \l {Accelerated Graphics Driver Example} which uses
+ the following approach:
+
+ \tableofcontents
+
+ \warning This feature is under development and is subject to
+ change.
+
+ \section1 Step 1: Create a Custom Screen
+
+ Create a custom screen by deriving from the QScreen class.
+
+ The \l {QScreen::}{connect()}, \l {QScreen::}{disconnect()}, \l
+ {QScreen::}{initDevice()} and \l {QScreen::}{shutdownDevice()}
+ functions are declared as pure virtual functions in QScreen and
+ must be implemented. These functions are used to configure the
+ hardware, or query its configuration. The \l
+ {QScreen::}{connect()} and \l {QScreen::}{disconnect()} are called
+ by both the server and client processes, while the \l
+ {QScreen::}{initDevice()} and \l {QScreen::}{shutdownDevice()}
+ functions are only called by the server process.
+
+ You might want to accelerate the final copying to the screen by
+ reimplementing the \l {QScreen::}{blit()} and \l
+ {QScreen::}{solidFill()} functions.
+
+ \section1 Step 2: Implement a Custom Raster Paint Engine
+
+ Implement the painting operations by subclassing the
+ QRasterPaintEngine class.
+
+ To accelerate a graphics primitive, simply reimplement the
+ corresponding function in your custom paint engine. If there is
+ functionality you do not want to reimplement (such as certain
+ pens, brushes, modes, etc.), you can just call the corresponding
+ base class implementation.
+
+ \section1 Step 3: Make the Paint Device Aware of Your Paint Engine
+
+ To activate your paint engine you must create a subclass of the
+ QCustomRasterPaintDevice class and reimplement its \l
+ {QCustomRasterPaintDevice::}{paintEngine()} function. Let this
+ function return a pointer to your paint engine. In addition, the
+ QCustomRasterPaintDevice::memory() function must be reimplemented
+ to return a pointer to the buffer where the painting should be
+ done.
+
+ \table
+ \header \o Acceleration Without a Memory Buffer
+ \row
+ \o
+
+ By default the QRasterPaintEngine draws into a memory buffer (this can
+ be local memory, shared memory or graphics memory mapped into
+ application memory).
+ In some cases you might want to avoid using a memory buffer directly,
+ e.g if you want to use an accelerated graphic controller to handle all
+ the buffer manipulation. This can be implemented by reimplementing
+ the QCustomRasterPaintDevice::memory() function to return 0 (meaning
+ no buffer available). Then, whenever a color or image buffer normally
+ would be written into paint engine buffer, the paint engine will call the
+ QRasterPaintEngine::drawColorSpans() and
+ QRasterPaintEngine::drawBufferSpan() functions instead.
+
+ Note that the default implementations of these functions only
+ calls qFatal() with an error message; reimplement the functions
+ and let them do the appropriate communication with the accelerated
+ graphics controller.
+
+ \endtable
+
+ \section1 Step 4: Make the Window Surface Aware of Your Paint Device
+
+ Derive from the QWSWindowSurface class and reimplement its \l
+ {QWSWindowSurface::}{paintDevice()} function. Make this function
+ return a pointer to your custom raster paint device.
+
+ \section1 Step 5: Enable Creation of an Instance of Your Window Surface
+
+ Finally, reimplement QScreen's \l {QScreen::}{createSurface()}
+ function and make this function able to create an instance of your
+ QWSWindowSurface subclass.
+*/
diff --git a/doc/src/platforms/emb-architecture.qdoc b/doc/src/platforms/emb-architecture.qdoc
new file mode 100644
index 000000000..94f8384ff
--- /dev/null
+++ b/doc/src/platforms/emb-architecture.qdoc
@@ -0,0 +1,338 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embedded-architecture.html
+
+ \title Qt for Embedded Linux Architecture
+ \ingroup qt-embedded-linux
+
+ A \l{Qt for Embedded Linux} application requires a server
+ application to be running, or to be the server application itself.
+ Any \l{Qt for Embedded Linux} application can act as the server.
+ When more than one application is running, the subsequent
+ applications connect to the existing server application as clients.
+
+ The server and client processes have different responsibilities:
+ The server process manages pointer handling, character input, and
+ screen output. In addition, the server controls the appearance of
+ the screen cursor and the screen saver. The client process
+ performs all application specific operations.
+
+ The server application is represented by an instance of the
+ QWSServer class, while the client applications are represented by
+ instances of the QWSClient class. On each side, there are several
+ classes performing the various operations.
+
+ \image qt-embedded-architecture2.png
+
+ All system generated events, including keyboard and mouse events,
+ are passed to the server application which then propagates the
+ event to the appropriate client.
+
+ When rendering, the default behavior is for each client to render
+ its widgets into memory while the server is responsible for
+ putting the contents of the memory onto the screen. But when the
+ hardware is known and well defined, as is often the case with
+ software for embedded devices, it may be useful for the clients to
+ manipulate and control the underlying hardware directly.
+ \l{Qt for Embedded Linux} provides two different approaches to
+ achieve this behavior, see the graphics rendering section below for
+ details.
+
+ \tableofcontents
+
+ \section1 Client/Server Communication
+
+ The running applications continuously alter the appearance of the
+ screen by adding and removing widgets. The server maintains
+ information about each top-level window in a corresponding
+ QWSWindow object.
+
+ Whenever the server receives an event, it queries its stack of
+ top-level windows to find the window containing the event's
+ position. Each window can identify the client application that
+ created it, and returns its ID to the server upon
+ request. Finally, the server forwards the event, encapsulated by
+ an instance of the QWSEvent class, to the appropriate client.
+
+ \image qt-embedded-clientservercommunication.png
+
+ If an input method is installed, it is used as a filter between
+ the server and the client application. Derive from the
+ QWSInputMethod class to implement custom input methods, and use
+ the server's \l {QWSServer::}{setCurrentInputMethod()} function to
+ install it. In addition, it is possible to implement global,
+ low-level filters on key events using the
+ QWSServer::KeyboardFilter class; this can be used to implement
+ things like advanced power management suspended from a button
+ without having to filter for it in all applications.
+
+ \table 100%
+ \header \o UNIX Domain Socket
+ \row
+ \o
+
+ \image qt-embedded-client.png
+
+ The server communicates with the client applications over the UNIX
+ domain socket. You can retrieve direct access to all the events a
+ client receives from the server, by reimplementing QApplication's
+ \l {QApplication::}{qwsEventFilter()} function.
+
+ \endtable
+
+ The clients (and the server) communicate with each other using the
+ QCopChannel class. QCOP is a many-to-many communication protocol
+ for transferring messages on various channels. A channel is
+ identified by a name, and anyone who wants to can listen to
+ it. The QCOP protocol allows clients to communicate both within
+ the same address space and between different processes.
+
+ \section1 Pointer Handling Layer
+
+ \list
+ \o QWSMouseHandler
+ \o QMouseDriverPlugin
+ \o QMouseDriverFactory
+ \endlist
+
+ The mouse driver (represented by an instance of the
+ QWSMouseHandler class) is loaded by the server application when it
+ starts running, using Qt's \l {How to Create Qt Plugins}{plugin
+ system}.
+
+ \image qt-embedded-pointerhandlinglayer.png
+
+ A mouse driver receives mouse events from the device and
+ encapsulates each event with an instance of the QWSEvent class
+ which it then passes to the server.
+
+ \l{Qt for Embedded Linux} provides ready-made drivers for several mouse
+ protocols, see the \l{Qt for Embedded Linux Pointer Handling}{pointer
+ handling} documentation for details. Custom mouse drivers can be
+ implemented by subclassing the QWSMouseHandler class and creating
+ a mouse driver plugin. The default implementation of the
+ QMouseDriverFactory class will automatically detect the plugin,
+ loading the driver into the server application at runtime.
+
+ In addition to the generic mouse handler, \l{Qt for Embedded Linux}
+ provides a calibrated mouse handler. Use the
+ QWSCalibratedMouseHandler class as the base class when the system
+ device does not have a fixed mapping between device and screen
+ coordinates and/or produces noisy events, e.g. a touchscreen.
+
+ See also: \l{Qt for Embedded Linux Pointer Handling} and
+ \l{How to Create Qt Plugins}.
+
+ \section1 Character Input Layer
+
+ \list
+ \o QWSKeyboardHandler
+ \o QKbdDriverPlugin
+ \o QKbdDriverFactory
+ \endlist
+
+ The keyboard driver (represented by an instance of the
+ QWSKeyboardHandler class) is loaded by the server application when
+ it starts running, using Qt's \l {How to Create Qt Plugins}{plugin
+ system}.
+
+ \image qt-embedded-characterinputlayer.png
+
+ A keyboard driver receives keyboard events from the device and
+ encapsulates each event with an instance of the QWSEvent class
+ which it then passes to the server.
+
+ \l{Qt for Embedded Linux} provides ready-made drivers for several keyboard
+ protocols, see the \l {Qt for Embedded Linux Character Input}{character
+ input} documentation for details. Custom keyboard drivers can be
+ implemented by subclassing the QWSKeyboardHandler class and
+ creating a keyboard driver plugin. The default implementation of the
+ QKbdDriverFactory class will automatically detect the plugin, loading the
+ driver into the server application at run-time.
+
+ See also: \l{Qt for Embedded Linux Character Input} and \l {How to Create
+ Qt Plugins}.
+
+ \section1 Graphics Rendering
+
+ \list
+ \o QApplication
+ \o QDecoration
+ \o QDecorationPlugin
+ \o QDecorationFactory
+ \endlist
+
+ The default behavior is for each client to render its widgets as well
+ as its decorations into memory, while the server copies the memory content
+ to the device's framebuffer.
+
+ Whenever a client receives an event that alters any of its
+ widgets, the application updates the relevant parts of its memory
+ buffer:
+
+ \image qt-embedded-clientrendering.png
+
+ The decoration is loaded by the client application when it starts
+ running (using Qt's \l {How to Create Qt Plugins}{plugin system}),
+ and can be customized by deriving from the QDecoration class and
+ creating a decoration plugin. The default implementation of
+ the QDecorationFactory class will automatically detect the plugin,
+ loading the decoration into the application at runtime. Call the
+ QApplication::qwsSetDecoration() function to actually apply the
+ given decoration to an application.
+
+ \table 100%
+ \header \o Direct Painting \target Direct Painting
+ \row
+ \o
+
+ It is possible for the clients to manipulate and control the
+ underlying hardware directly. There are two ways of achieving
+ this: The first approach is to set the Qt::WA_PaintOnScreen window
+ attribute for each widget, the other is to use the QDirectPainter
+ class to reserve a region of the framebuffer.
+
+ \image qt-embedded-setwindowattribute.png
+
+ By setting the Qt::WA_PaintOnScreen attribute, the application
+ renders the widget directly onto the screen and the affected
+ region will not be modified by the screen driver \e unless another
+ window with a higher focus requests (parts of) the same
+ region. Note that if you want to render all of an application's
+ widgets directly on screen, it might be easier to set the
+ QT_ONSCREEN_PAINT environment variable.
+
+ \image qt-embedded-reserveregion.png
+
+ Using QDirectPainter, on the other hand, provides a complete
+ control over the reserved region, i.e., the screen driver will
+ never modify the given region.
+
+ To draw on a region reserved by a QDirectPainter instance, the
+ application must get hold of a pointer to the framebuffer. In
+ general, a pointer to the framebuffer can be retrieved using the
+ QDirectPainter::frameBuffer() function. But note that if the
+ current screen has subscreens, you must query the screen driver
+ instead to identify the correct subscreen. A pointer to the
+ current screen driver can always be retrieved using the static
+ QScreen::instance() function. Then use QScreen's \l
+ {QScreen::}{subScreenIndexAt()} and \l {QScreen::}{subScreens()}
+ functions to access the correct subscreen, and the subscreen's \l
+ {QScreen::}{base()} function to retrieve a pointer to the
+ framebuffer.
+
+ Note that \l{Qt for Embedded Linux} also provides the QWSEmbedWidget class,
+ making it possible to embed the reserved region (i.e., the
+ QDirectPainter object) in a regular widget.
+
+ \endtable
+
+ \section1 Drawing on Screen
+
+ \list
+ \o QScreen
+ \o QScreenDriverPlugin
+ \o QScreenDriverFactory
+ \endlist
+
+ When a screen update is required, the server runs through all the
+ top-level windows that intersect with the region that is about to
+ be updated, and ensures that the associated clients have updated
+ their memory buffer. Then the server uses the screen driver
+ (represented by an instance of the QScreen class) to copy the
+ content of the memory to the screen.
+
+ The screen driver is loaded by the server application when it
+ starts running, using Qt's plugin system. \l{Qt for Embedded Linux}
+ provides ready-made drivers for several screen protocols, see the
+ \l{Qt for Embedded Linux Display Management}{display management}
+ documentation for details. Custom screen drivers can be
+ implemented by subclassing the QScreen class and creating a screen
+ driver plugin. The default implementation of the QScreenDriverFactory
+ class will automatically detect the plugin, loading the driver into
+ the server application at run-time.
+
+ \image qt-embedded-drawingonscreen.png
+
+ To locate the relevant parts of memory, the driver is provided
+ with the list of top-level windows that intersect with the given
+ region. Associated with each of the top-level windows there is an
+ instance of the QWSWindowSurface class representing the drawing
+ area of the window. The driver uses these objects to retrieve
+ pointers to the various memory blocks. Finally, the screen driver
+ composes the surface images before copying the updated region to
+ the framebuffer.
+
+ \table 100%
+ \header \o Accelerated Graphics
+ \row
+ \o
+
+ In \l{Qt for Embedded Linux}, painting is a pure software implementation,
+ but (starting with Qt 4.2) it is possible to add an accelerated
+ graphics driver to take advantage of available hardware resources.
+
+ \image qt-embedded-accelerateddriver.png
+
+ The clients render each window onto a corresponding window surface
+ object using Qt's paint system, and then store the surface in
+ memory. The screen driver accesses the memory and composes the
+ surface images before it copies them to the screen as explained
+ above.
+
+ To add an accelerated graphics driver you must create a custom
+ screen and implement a custom raster paint engine
+ (\l{Qt for Embedded Linux} uses a raster-based paint engine to
+ implement the painting operations). Then you must create a custom
+ paint device that is aware of your paint engine, a custom window
+ surface that knows about your paint device, and make your screen
+ able to recognize your window surface.
+
+ See the \l{Adding an Accelerated Graphics Driver to Qt for Embedded Linux}
+ {accelerated graphics driver} documentation for details.
+
+ \endtable
+
+ See also: \l{Qt for Embedded Linux Display Management} and
+ \l{How to Create Qt Plugins}.
+*/
diff --git a/doc/src/platforms/emb-charinput.qdoc b/doc/src/platforms/emb-charinput.qdoc
new file mode 100644
index 000000000..52342f2c6
--- /dev/null
+++ b/doc/src/platforms/emb-charinput.qdoc
@@ -0,0 +1,164 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embedded-charinput.html
+
+ \title Qt for Embedded Linux Character Input
+ \ingroup qt-embedded-linux
+
+ When running a \l {Qt for Embedded Linux} application, it either runs as a
+ server or connects to an existing server. The keyboard driver is
+ loaded by the server application when it starts running, using
+ Qt's \l {How to Create Qt Plugins}{plugin system}.
+
+ Internally in the client/server protocol, all system generated
+ events, including key events, are passed to the server application
+ which then propagates the event to the appropriate client. Note
+ that key events do not always come from a keyboard device, they
+ can can also be generated by the server process using input
+ widgets.
+
+ \table
+ \header \o Input Widgets
+ \row
+ \o
+
+ The server process may call the static QWSServer::sendKeyEvent()
+ function at any time. Typically, this is done by popping up a
+ widget that enables the user specify characters with the pointer
+ device.
+
+ Note that the key input widget should not take focus since the
+ server would then just send the key events back to the input
+ widget. One way to make sure that the input widget never takes
+ focus is to set the Qt::Tool widget flag in the QWidget
+ constructor.
+
+ The \l{Qt Extended} environment contains various input widgets such as
+ Handwriting Recognition and Virtual Keyboard.
+
+ \endtable
+
+ \tableofcontents
+
+ \section1 Available Keyboard Drivers
+
+ \l {Qt for Embedded Linux} provides ready-made drivers for the console
+ (TTY) and the standard Linux Input Subsystem (USB, PS/2, ...). Run the
+ \c configure script to list the available drivers:
+
+ \snippet doc/src/snippets/code/doc_src_emb-charinput.qdoc 0
+
+ Note that only the console (TTY) keyboard driver handles console
+ switching (\bold{Ctrl+Alt+F1}, ..., \bold{Ctrl+Alt+F10}) and
+ termination (\bold{Ctrl+Alt+Backspace}).
+
+ In the default Qt configuration, only the "TTY" driver is
+ enabled. The various drivers can be enabled and disabled using the
+ \c configure script. For example:
+
+ \snippet doc/src/snippets/code/doc_src_emb-charinput.qdoc 1
+
+ Custom keyboard drivers can be implemented by subclassing the
+ QWSKeyboardHandler class and creating a keyboard driver plugin
+ (derived from the QKbdDriverPlugin class). The default
+ implementation of the QKbdDriverFactory class will automatically
+ detect the plugin, loading the driver into the server application
+ at run-time.
+
+ \section1 Keymaps
+
+ Starting with 4.6, \l {Qt for Embedded Linux} has gained support for
+ user defined keymaps. Keymap handling is supported by the built-in
+ keyboard drivers \c TTY and \c LinuxInput. Custom keyboard drivers can
+ use the existing keymap handling code via
+ QWSKeyboardHandler::processKeycode().
+
+ By default Qt will use an internal, compiled-in US keymap.
+ See the options below for how to load a different keymap.
+
+ \section1 Specifying a Keyboard Driver
+
+ To specify which driver to use, set the QWS_KEYBOARD environment
+ variable. For example (if the current shell is bash, ksh, zsh or
+ sh):
+
+ \snippet doc/src/snippets/code/doc_src_emb-charinput.qdoc 2
+
+ The \c <driver> arguments are \c TTY, \c LinuxInput and \l
+ {QKbdDriverPlugin::keys()}{keys} identifying custom drivers, and the
+ driver specific options are typically a device, e.g., \c /dev/tty0.
+
+ Multiple keyboard drivers can be specified in one go:
+
+ \snippet doc/src/snippets/code/doc_src_emb-charinput.qdoc 3
+
+ Input will be read from all specified drivers.
+
+ Currently the following options are supported by both the \c TTY and \c
+ LinuxInput driver:
+
+ \table
+ \header \o Option \o Description
+ \row \o \c /dev/xxx \o
+ Open the specified device, instead of the driver's default device.
+ \row \o \c repeat-delay=<d> \o
+ Time (in milliseconds) until auto-repeat kicks in.
+ \row \o \c repeat-rate=<r> \o
+ Time (in milliseconds) specifying the interval between auto-repeats.
+ \row \o \c keymap=xx.qmap \o
+ File name of a keymap file in Qt's \c qmap format. See \l {kmap2qmap}
+ for instructions on how to create thoes files.\br Note that the file
+ name can of course also be the name of a QResource.
+ \row \o \c disable-zap \o
+ Disable the QWS server "Zap" shortcut \bold{Ctrl+Alt+Backspace}
+ \row \o \c enable-compose \o
+ Activate Latin-1 composing features in the built-in US keymap. You can
+ use the right \c AltGr or right \c Alt is used as a dead key modifier,
+ while \c AltGr+. is the compose key. For example:
+ \list
+ \o \c AltGr + \c " + \c u = \uuml (u with diaeresis / umlaut u)
+ \o \c AltGr + \c . + \c / + \c o = \oslash (slashed o)
+ \endlist
+ \endtable
+
+*/
diff --git a/doc/src/platforms/emb-crosscompiling.qdoc b/doc/src/platforms/emb-crosscompiling.qdoc
new file mode 100644
index 000000000..a36c7eb2c
--- /dev/null
+++ b/doc/src/platforms/emb-crosscompiling.qdoc
@@ -0,0 +1,185 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embedded-crosscompiling.html
+
+ \title Cross-Compiling Qt for Embedded Linux Applications
+ \ingroup qt-embedded-linux
+
+ Cross-compiling is the process of compiling an application on one
+ machine, producing executable code for a different machine or
+ device. To cross-compile a \l{Qt for Embedded Linux} application,
+ use the following approach:
+
+ \tableofcontents
+
+ \note The cross-compiling procedure has the configuration
+ process in common with the installation procedure; i.e., you might
+ not necessarily have to perform all the mentioned actions
+ depending on your current configuration.
+
+ \section1 Step 1: Set the Cross-Compiler's Path
+
+ Specify which cross-compiler to use by setting the \c PATH
+ environment variable. For example, if the current shell is bash,
+ ksh, zsh or sh:
+
+ \snippet doc/src/snippets/code/doc_src_emb-crosscompiling.qdoc 0
+
+ \section1 Step 2: Create a Target Specific qmake Specification
+
+ The qmake tool requires a platform and compiler specific \c
+ qmake.conf file describing the various default values, to generate
+ the appropriate Makefiles. The standard \l{Qt for Embedded Linux}
+ distribution provides such files for several combinations of
+ platforms and compilers. These files are located in the
+ distribution's \c mkspecs/qws subdirectory.
+
+ Each platform has a default specification. \l{Qt for Embedded Linux} will
+ use the default specification for the current platform unless told
+ otherwise. To override this behavior, you can use the \c configure
+ script's \c -platform option to change the specification for the host
+ platform (where compilation will take place).
+
+ The \c configure script's \c -xplatform option is used to provide a
+ specification for the target architecture (where the library will be
+ deployed).
+
+ For example, to cross-compile an application to run on a device with
+ an ARM architecture, using the GCC toolchain, run the configure
+ script at the command line in the following way:
+
+ \snippet doc/src/snippets/code/doc_src_emb-crosscompiling.qdoc 1
+
+ If neither of the provided specifications fits your target device,
+ you can create your own. To create a custom \c qmake.conf file,
+ just copy and customize an already existing file. For example:
+
+ \snippet doc/src/snippets/code/doc_src_emb-crosscompiling.qdoc 2
+
+ \note When defining a mkspec for a Linux target, the directory must
+ be prefixed with "linux-". We recommend that you copy the entire
+ directory.
+
+ Note also that when providing you own qmake specifcation, you must
+ use the \c configure script's \c -xplatform option to make
+ \l{Qt for Embedded Linux} aware of the custom \c qmake.conf file.
+
+ \section1 Step 3: Provide Architecture Specific Files
+
+ Starting with Qt 4, all of Qt's implicitly shared classes can
+ safely be copied across threads like any other value classes,
+ i.e., they are fully reentrant. This is accomplished by
+ implementing reference counting operations using atomic hardware
+ instructions on all the different platforms supported by Qt.
+
+ To support a new architecture, it is important to ensure that
+ these platform-specific atomic operations are implemented in a
+ corresponding header file (\c qatomic_ARCH.h), and that this file
+ is located in Qt's \c src/corelib/arch directory. For example, the
+ Intel 80386 implementation is located in \c
+ src/corelib/arch/qatomic_i386.h.
+
+ See the \l {Implementing Atomic Operations} documentation for
+ details.
+
+ \section1 Step 4: Provide Hardware Drivers
+
+ Without the proper mouse and keyboard drivers, you will not be
+ able to give any input to your application when it is installed on
+ the target device. You must also ensure that the appropriate
+ screen driver is present to make the server process able to put
+ the application's widgets on screen.
+
+ \l{Qt for Embedded Linux} provides several ready-made mouse, keyboard and
+ screen drivers, see the \l{Qt for Embedded Linux Pointer Handling}{pointer
+ handling}, \l{Qt for Embedded Linux Character Input}{character input} and
+ \l{Qt for Embedded Linux Display Management}{display management}
+ documentation for details.
+
+ In addition, custom drivers can be added by deriving from the
+ QWSMouseHandler, QWSKeyboardHandler and QScreen classes
+ respectively, and by creating corresponding plugins to make use of
+ Qt's plugin mechanism (dynamically loading the drivers into the
+ server application at runtime). Note that the plugins must be
+ located in a location where Qt will look for plugins, e.g., the
+ standard \c plugin directory.
+
+ See the \l {How to Create Qt Plugins} documentation and the \l
+ {tools/plugandpaint}{Plug & Paint} example for details.
+
+ \section1 Step 5: Build the Target Specific Executable
+
+ Before building the executable, you must specify the target
+ architecture as well as the target specific hardware drivers by
+ running the \c configure script:
+
+ \snippet doc/src/snippets/code/doc_src_emb-crosscompiling.qdoc 3
+
+ It is also important to make sure that all the third party
+ libraries that the application and the Qt libraries require, are
+ present in the tool chain. In particular, if the zlib and jpeg
+ libraries are not available, they must be included by running the
+ \c configure script with the \c -L and \c -I options. For example:
+
+ \snippet doc/src/snippets/code/doc_src_emb-crosscompiling.qdoc 4
+
+ The JPEG source can be downloaded from \l http://www.ijg.org/. The
+ \l{Qt for Embedded Linux} distribution includes a version of the zlib source
+ that can be compiled into the Qt for Embedded Linux library. If integrators
+ wish to use a later version of the zlib library, it can be
+ downloaded from the \l http://www.gzip.org/zlib/ website.
+
+ Then build the executable:
+
+ \snippet doc/src/snippets/code/doc_src_emb-crosscompiling.qdoc 5
+
+ That's all. Your target specific executable is ready for deployment.
+
+ \table 100%
+ \row
+ \o \bold {See also:}
+
+ \l{Qt for Embedded Linux Architecture} and \l{Deploying Qt for Embedded Linux
+ Applications}.
+ \endtable
+*/
diff --git a/doc/src/platforms/emb-deployment.qdoc b/doc/src/platforms/emb-deployment.qdoc
new file mode 100644
index 000000000..48ecf3a7e
--- /dev/null
+++ b/doc/src/platforms/emb-deployment.qdoc
@@ -0,0 +1,111 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embedded-deployment.html
+
+ \title Deploying Qt for Embedded Linux Applications
+ \ingroup qt-embedded-linux
+
+ The procedure of deploying an Qt application on \l{Qt for Embedded Linux}
+ is essentially the same as the deployment procedure on X11 platforms
+ which is described in detail in the \l {Deploying an Application
+ on X11 Platforms} documentation. See also the \l {Deploying Qt
+ applications}{general remarks} about deploying Qt applications.
+
+ In addition, there is a couple of Qt for Embedded Linux specific issues to
+ keep in mind:
+
+ \tableofcontents
+
+ \section1 Fonts
+
+ When Qt for Embedded Linux applications run, they look for a file called
+ \c fontdir in Qt's \c /lib/fonts/ directory defining the
+ fonts that are available to the application (i.e. the fonts
+ located in the mentioned directory).
+
+ For that reason, the preferred fonts must be copied to the \c
+ /lib/fonts/ directory, and the \c fontdir file must be customized
+ accordingly. See the \l {Qt for Embedded Linux Fonts}{fonts} documentation
+ for more details about the supported font formats.
+
+ Note that the application will look for the \c /lib/fonts/
+ directory relative to the path set using the \c -prefix parameter
+ when running the \c configure script; ensure that this is a
+ sensible path in the target device environment. See the
+ \l {Installing Qt on Embedded Linux#Step 3: Building the
+ Library}{installation} documentation for more details.
+
+ \section1 Environment Variables
+
+ In general, any variable value that differs from the provided
+ default values must be set explicitly in the target device
+ environment. Typically, these include the QWS_MOUSE_PROTO,
+ QWS_KEYBOARD and QWS_DISPLAY variables specifying the drivers for
+ pointer handling, character input and display management,
+ respectively.
+
+ For example, without the proper mouse and keyboard drivers, there
+ is no way to give any input to the application when it is
+ installed on the target device. By running the \c configure script
+ using the \c -qt-kbd-<keyboarddriver> and \c
+ -qt-mouse-<mousedriver> options, the drivers are enabled, but in
+ addition the drivers and the preferred devices must be specified
+ as the ones to use in the target environment, by setting the
+ environment variables.
+
+ See the \l{Qt for Embedded Linux Pointer Handling}{pointer handling},
+ \l{Qt for Embedded Linux Character Input}{character input} and
+ \l{Qt for Embedded Linux Display Management}{display management}
+ documentation for more information.
+
+ \section1 Framebuffer Support
+
+ No particular actions are required to enable the framebuffer on
+ target devices: The Linux framebuffer is enabled by default on all
+ modern Linux distributions. For information on older versions, see
+ \l http://en.tldp.org/HOWTO/Framebuffer-HOWTO.html.
+
+ To test that the Linux framebuffer is set up correctly, and that
+ the device permissions are correct, use the program provided by
+ the \l {Testing the Linux Framebuffer} document.
+*/
diff --git a/doc/src/platforms/emb-differences.qdoc b/doc/src/platforms/emb-differences.qdoc
new file mode 100644
index 000000000..0ad13be40
--- /dev/null
+++ b/doc/src/platforms/emb-differences.qdoc
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embedded-differences.html
+
+ \title Porting Qt Applications to Qt for Embedded Linux
+ \ingroup porting
+ \ingroup qt-embedded-linux
+
+ Existing Qt applications should require no porting provided there is no
+ platform dependent code.
+
+ \table 100%
+ \header \o Platform Dependent Code
+
+ \row
+ \o
+ Platform dependent code includes system calls, calls to the
+ underlying window system (Windows or X11), and Qt platform
+ specific methods such as QApplication::x11EventFilter().
+
+ For cases where it is necessary to use platform dependent code
+ there are macros defined that can be used to enable and disable
+ code for each platform using \c #ifdef directives:
+
+ \list
+ \o Qt for Embedded Linux: Q_WS_QWS
+ \o Qt for Mac OS X: Q_WS_MAC
+ \o Qt for Windows: Q_WS_WIN
+ \o Qt for X11: Q_WS_X11
+ \endlist
+ \endtable
+*/
diff --git a/doc/src/platforms/emb-directfb-EmbLinux.qdoc b/doc/src/platforms/emb-directfb-EmbLinux.qdoc
new file mode 100644
index 000000000..38782be41
--- /dev/null
+++ b/doc/src/platforms/emb-directfb-EmbLinux.qdoc
@@ -0,0 +1,330 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embeddedLinux-directfb.html
+
+\title Qt for Embedded Linux and DirectFB
+
+\ingroup qt-embedded-linux
+
+\section1 Introduction
+
+DirectFB is an open source LGPL licensed project founded by Denis Oliver Kropp
+and generally chip vendors start out with the official version and
+implement their own plugins to optimize the operations their hardware
+supports.
+
+We recommend using Qt 4.6 with DirectFB. DirectFB support was introduced
+already into Qt for Embedded Linux as a labs project for Qt 4.3 and folded
+into Qt as a screen driver for Qt 4.4, but not supported fully. In Qt 4.5,
+major changes were made to make it work with the optimized raster paint
+engine. And in Qt 4.6 these have been further improved.
+
+\tableofcontents
+
+\section1 Using DirectFB with Qt
+DirectFB is centered around \l{DirectFB - IDirectFBSurface}{Surfaces}
+which is the equivalent of a QPaintDevice. In the Qt/DirectFB plugin,
+DirectFB maps onto either a QPixmap or a QWindowSurface which essentially
+means that drawing onto QPixmap or a QWidget can be accelerated and drawing
+onto any other paint device (e.g. QImage) cannot.
+
+\section2 Configure
+
+When configuring Qt there are two options, from which you can choose:
+
+\code
+ ./configure -plugin-gfx-directfb
+ ./configure -qt-gfx-directfb
+
+\endcode
+
+With either mode, Qt will try the following to look for the DirectFB
+includes/libs.
+
+\list
+ \o Use pkg-config
+ \o Use directfb-config
+ \o Check in your qmake.conf
+\endlist
+
+Often the values returned from pkg-config/directfb-config indicates the
+locations of the libs/headers on the target rootfs, rather than their
+location on your host. The safest option is usually to explicitly populate
+these variables in your qmake.conf like this:
+
+\code
+QT_CFLAGS_DIRECTFB =
+/opt/toolchain/gcc4.3_mipsel_linux/usr/include/directfb -D_REENTRANT
+QT_LIBS_DIRECTFB = -L/opt/toolchain/gcc4.3_mipsel_linux/usr/lib/-ldirect
+-ldirectfb -lfusion
+\endcode
+
+\note While DirectFB supports a multi-process setup through a
+kernel-extension called Fusion this setup is not well tested with Qt.
+
+\section2 Supported graphics operations
+
+IDirectFBSurface supports blitting, filling, drawing lines rects etc, but
+it does not support everything Qt allows you to do. E.g. painter paths,
+polygons, complex transformations, antialiasing, gradients. Some of these
+things are handled in newer versions of DirectFB and could be supported by
+Qt. They are seemingly optional at the driver level, so you need to have
+fall back code paths for older drivers and drivers on which this is not
+implemented.
+
+The QDirectFBPaintEngine is a subclass of the QRasterPaintEngine, thus
+essentially supporting everything QRasterPaintEngine supports. This means
+that it supports all graphical operations that Qt supports, but certain
+operations will have to fall back to software rendering and that should be
+avoided due to performance issues. Instead, these operations should be
+rendered into a QPixmap once, and then reuse the pixmap.
+
+Note: Fallbacks to software rendering should be avoided. If unsupported
+operations are used, the paint engine must fallback to the
+QRasterPaintEngine engine. A good debugging tip is to make Qt warn you when
+such fall backs occur, and to disable the fall back and only return.
+Debugging options are listed below.
+
+\section2 DirectFB driver
+DirectFB also provides an abstraction for keyboard and mouse drivers. This
+simplifies the process of getting the target hardware up and running. It
+also brings us to a feature fragmentation issue between different versions
+of DirectFB.
+
+The Qt DirectFB driver currently supports DirectFB versions >= 0.9. Still,
+there are large differences in what each actual implementation handles
+correctly. It is relatively common not to properly support
+\l{DirectFB - IDirectFBWindow}{DirectFB windows}, so Qt needs to handle
+this case with a different code path. In addition, certain drivers do not
+properly support DirectFB's cursor handling. This means Qt has to have a
+code path for rendering the cursor itself when this is the case.
+Some drivers do not let us create
+\l{DirectFB - DFBSurfaceDescription}{preallocated surfaces} which means we
+have to have a conditional code path for that case.
+
+\section2 Optimize performance using define options
+
+Qt/DirectFB comes with a number of defines that can be either
+uncommented in directfb.pri or added to the QT_DEFINES_DIRECTFB variable in
+your qmake.conf.
+
+\note The defines have been moved from
+\e{src/plugins/gfxdrivers/directfb/directfb.pro} to
+\e{src/gui/embedded/directfb.pri}
+
+\code
+#DIRECTFB_DRAWINGOPERATIONS=DRAW_RECTS|DRAW_LINES|DRAW_IMAGE|DRAW_PIXMAP|
+ DRAW_TILED_PIXMAP|STROKE_PATH|DRAW_PATH|DRAW_POINTS|DRAW_ELLIPSE|DRAW_POLYGON|
+ DRAW_TEXT|FILL_PATH|FILL_RECT|DRAW_COLORSPANS|DRAW_ROUNDED_RECT
+
+ #DEFINES += \"QT_DIRECTFB_WARN_ON_RASTERFALLBACKS=$$DIRECTFB_DRAWINGOPERATIONS\"
+ #DEFINES += \"QT_DIRECTFB_DISABLE_RASTERFALLBACKS=$$DIRECTFB_DRAWINGOPERATIONS\"
+\endcode
+
+As demonstrated above, you need to Qt which drawing operations you want to
+warn/disable. Since there are varying implementations of DirectFB from
+manufacturer to manufacture, different operations will be optimized. This
+require you to define the operations you want to warn about or disable.
+These are listed above in the DIRECTFB_DRAWINGOPERATIONS variable.
+
+Following is a table showing which options you have.
+
+\table
+ \header
+ \o Define option
+ \o Description
+ \row
+ \o QT_DIRECTFB_IMAGECACHE
+ \o Defining this means that Qt will cache an IDirectFBSurface per
+QImage you draw based on its \l{QImage::}{cacheKey()}.
+Use this define if your application draws many QImages that
+remain the same. Note that if you in this situation draw an image and then
+change it, by calling bits() or opening a QPainter on it, the cache will
+not benefit you. You can control the cache size with the imageCacheSize
+connect option.
+
+ \row
+ \o QT_NO_DIRECTFB_WM
+ \o If your DirectFB implementation does not support windows, you
+have to define this to make Qt work properly. You can test this by checking
+if the \l{DirectFB - df_window example}{df_window example} runs well.
+This means that all drawing operations onto a QWidget involves
+an extra blitting step since Qt essentially first has to draw into an
+off-screen buffer and then blit this buffer to the back buffer of the
+primary surface. Finally, Qt must flip the back buffer to the front buffer,
+which usually involves another blit. Still, blits are usually very fast
+with DirectFB.
+
+To work around this you can make your widget paint on screen, \l
+Qt::WA_PaintOnScreen but this comes with other limitations. This should be
+avoided if you want more than one full-screen window in your application.
+In addition, it will not work without proper DirectFB mouse support from the
+layer. Also, see QT_NO_DIRECTFB_LAYER for more.
+
+ \row
+ \o QT_NO_DIRECTFB_LAYER
+ \o If your DirectFB display layer cannot be used for e.g. drawing
+mouse cursor, creating windows you have to define this. Defining this also
+requires defining QT_NO_DIRECTFB_WM and involves making Qt render the
+cursor rather than letting DirectFB do it.
+
+ \row
+ \o QT_NO_DIRECTFB_PALETTE
+ \o Define this if your DirectFB driver does not support surfaces
+with \l{DirectFB - IDirectFBPalette}{color tables}.
+The effect of defining this is that Qt will have to convert
+images with \l QImage::Format_Indexed8 format to another format before
+rendering them.
+
+ \row
+ \o QT_NO_DIRECTFB_PREALLOCATED
+ \o Define this if your DirectFB driver does not support creating a
+surface with preallocated data. This will make a more frequent use of
+\l{C++ Reference - memcpy}{memcpy()}
+when drawing images. If you define this, you might want to consider
+defining QT_DIRECTFB_IMAGECACHE for better image rendering performance.
+
+ \row
+ \o QT_NO_DIRECTFB_MOUSE and QT_NO_DIRECTFB_KEYBOARD
+ \o Define this if your driver does not provide keyboard/mouse
+events through \l{DirectFB - CreateInputEventBuffer}{CreateInputEventBuffer}.
+This means that Qt cannot use DirectFB to receive keyboard/mouse events and
+if you want such events in your application, you will have to provide
+another driver. For more info see \l {Qt for Embedded Linux Pointer
+Handling}{Qt for Embedded Linux Pointer Handling} and \l{Qt for Embedded
+Linux Character Input}{Qt for Embedded Linux Character Input}
+
+ \row
+ \o QT_DIRECTFB_TIMING
+ \o Define this when debugging to get output on stderr about the
+frames per second.
+
+ \row
+ \o QT_NO_DIRECTFB_OPAQUE_DETECTION
+ \o When blitting a surface Qt has to decide whether to set the
+\l{DirectFB - DFBSurfaceBlittingFlags}{DSBLIT_BLEND_ALPHACHANNEL}
+flag. If you load an image from file or network data that has a format that
+includes an alpha channel, the image might still be completely opaque.
+Normally Qt runs through every pixel to check if there really is an alpha
+channel there. This involves some overhead but usually pays off in the end
+because blitting is cheaper than blending. If you define this Qt will
+assume that an image with a format that has alpha channel contains at least
+one pixel with an alpha value != 255.
+
+ \row
+ \o QT_DIRECTFB_SUBSURFACE
+ \o Defining this enables a mode that tries to minimize overhead from
+locking/unlocking surfaces. Note that this currently is experimental.
+
+ \row
+ \o QT_DIRECTFB_WINDOW_AS_CURSOR
+ \o Define this if your DirectFB implementation supports windows but
+can not render the cursor properly. This involves creating a small top level
+window and moving it around when the cursor moves. It does not always
+perform well.
+
+ \row
+ \o QT_NO_DIRECTFB_IMAGEPROVIDER
+ \o By default Qt will use DirectFB to load QPixmaps from disk/memory. If
+your DirectFB implementation does not support this it might make sense to
+define this.
+
+ \row
+ \o QT_DIRECTFB_IMAGEPROVIDER_KEEPALIVE
+ \o Define this to make sure Qt always keeps at least one
+\l{DirectFB - IDirectFBImageProvider}{IDirectFBImageProvider}
+object alive. This is to avoid considerable overhead when the first
+IDirectFBImageProvider is created, the last IDirectFBImageProvider is
+removed.
+
+\endtable
+
+\section2 Unsupported graphics operations
+
+There are a number of unsupported operations causing fallbacks. DirectFB
+does not support the following functions.
+
+
+
+\table
+ \header
+ \o Functions
+ \row
+ \o QPainter::strokePath(const QPainterPath & path, const QPen & pen)
+ \row
+ \o QPainter::drawPath(const QPainterPath & path)
+ \row
+ \o QPainter::fillPath(const QPainterPath & path, const QBrush & brush)
+ \row
+ \o QPainter::drawPoints(const QPointF * points, int pointCount)
+ \row
+ \o QPainter::drawEllipse(const QRectF & rectangle)
+ \row
+ \o QPainter::drawPolygon(const QPointF * points, int pointCount,
+ Qt::FillRule fillRule = Qt::OddEvenFill)
+ \row
+ \o QPainter::drawText(const QPointF & position, const QString & text)
+ \row
+ \o QGradient
+ \endtable
+
+\section2 Avoiding fallbacks
+To avoid fallbacks make sure that the following points are true:
+
+\list
+ \o QPen::isSolid() returns true and uses a color with a one pixel
+width. (QPen::width() returns 1.
+ \o QTransform::TransformationType() <= QTransform::TxScale are not
+supported.
+ \o Clipping must be a simple rectangle or a QRegion.
+\endlist
+
+\section2 When painting images
+\note You should use QPixmap instead of QImage. QImages are drawn by
+the QRasterPaintEngine. To get a warning for every fallback to the
+QRasterPaintEngine, use QT_DIRECTFB_WARN_ON_RASTERFALLBACKS. If
+QT_DIRECTFB_DISABLE_RASTERFALLBACKS is defined, DirectFB will only return
+instead of falling back to QRasterPaintEngine. Please note that these
+defines should only be used when optimizing the application.
+
+*/
diff --git a/doc/src/platforms/emb-displaymanagement.qdoc b/doc/src/platforms/emb-displaymanagement.qdoc
new file mode 100644
index 000000000..4b06f14d9
--- /dev/null
+++ b/doc/src/platforms/emb-displaymanagement.qdoc
@@ -0,0 +1,205 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embedded-displaymanagement.html
+
+ \title Qt for Embedded Linux Display Management
+ \ingroup qt-embedded-linux
+
+ When rendering, the default behavior for each Qt for Embedded Linux
+ client is to render its widgets into memory, while the server is
+ responsible for putting the contents of the memory onto the
+ screen. The server uses the screen driver to copy the content of
+ the memory to the display.
+
+ The screen driver is loaded by the server application when it
+ starts running, using Qt's \l {How to Create Qt Plugins}{plugin
+ system}.
+
+ Contents:
+
+ \tableofcontents
+
+ \section1 Available Drivers
+
+ \l{Qt for Embedded Linux} provides drivers for the Linux framebuffer, the
+ virtual framebuffer, transformed screens, VNC servers and multi
+ screens. Run the \c configure script to list the available
+ drivers:
+
+ \if defined(QTOPIA_DOCS)
+ \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 0
+ \else
+ \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 1
+ \endif
+
+ \if defined(QTOPIA_DOCS)
+ In the default Qt Extended configuration, only an unaccelerated Linux
+ framebuffer driver (\c /dev/fb0) is enabled. The various drivers
+ can be enabled and disabled using the \c configure script. For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 2
+ \else
+ In the default Qt configuration, only an unaccelerated Linux
+ framebuffer driver (\c /dev/fb0) is enabled. The various drivers
+ can be enabled and disabled using the \c configure script. For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 3
+ \endif
+
+ Custom screen drivers can be implemented by subclassing the
+ QScreen class and creating a screen driver plugin (derived from
+ the QScreenDriverPlugin class). The default implementation
+ of the QScreenDriverFactory class will automatically detect the
+ plugin, loading the driver into the server application at run-time.
+
+ \section1 Specifying a Driver
+
+ To specify which driver to use, set the QWS_DISPLAY environment
+ variable. For example (if the current shell is bash, ksh, zsh or
+ sh):
+
+ \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 4
+
+ The valid values for the \c <driver> argument are \c LinuxFb, \c
+ QVFb, \c VNC, \c Transformed, \c Multi and \l
+ {QScreenDriverPlugin::keys()}{keys} identifying custom drivers,
+ and the \c {<display num>} argument is used to separate screens
+ that are using the same screen driver and to enable multiple
+ displays (see the \l {Running Qt for Embedded Linux Applications}
+ documentation for more details). The driver specific options are
+ described in the table below.
+
+ \table
+ \header
+ \o Driver Specific Option \o Available For \o Description
+ \row
+ \o \c tty=<device>
+ \o LinuxFb
+ \o Passes the device file to the console the application is
+ running on.
+ \row
+ \o \c nographicsmodeswitch
+ \o LinuxFb
+ \o Ensures that the application is not in graphics mode.
+ \row
+ \o \c littleendian
+ \o LinuxFb
+ \o Tells the driver it must handle a little-endian frame
+ buffer in a big-endian system.
+ \row
+ \o \c mmWidth=<value> \target mmWidth
+ \o LinuxFb, QVFb
+ \o The screen's physical width (used to calculate DPI).
+ \row
+ \o \c mmHeight=<value> \target mmHeight
+ \o LinuxFb, QVFb
+ \o The screen's physical height (used to calculate DPI).
+ \row
+ \o \c <device>
+ \o LinuxFb
+ \o
+ \row
+ \o \c <subdriver>
+ \o VNC, Transformed, Multi
+ \o Specifies a subdriver.
+ \row
+ \o \c <RotX>
+ \o Transformed
+ \o Specifies the rotation of the screen. The valid values of
+ \c X are 90, 180 and 270.
+ \row
+ \o \c offset=<x,y>
+ \o Multi
+ \o Specifies the coordinates of a subscreen's top-left corner
+ (by default 0,0).
+
+ \endtable
+
+ The QWS_DISPLAY environment variable can also be set using the \c
+ -display option when running an application. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 5
+
+ \section1 Subdrivers and Multiple Drivers
+
+ The VNC, Transformed and Multi screen drivers depend on
+ subdrivers. The general syntax for specifying a driver is as
+ follows:
+
+ \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 6
+
+ In the case of subdrivers, it is important to add a space between
+ each subdriver and before the display number to separate the
+ various drivers and displays. Note that \c Multi screen drivers
+ can have several subdrivers. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 7
+
+ Note also that the VNC screen driver defaults to a virtual screen
+ driver if no subdriver is specified. In this case the VNC driver accepts a
+ few additional (optional) arguments specifying the size and depth
+ of the default virtual screen:
+
+ \list
+ \o \c {size=<width x height>}
+ \o \c {depth=<value>}
+ \o \c {mmHeight=<physical height in millimeters>}
+ \o \c {mmWidth=<physical width in millimeters>}
+ \endlist
+
+ Example running the VNC screen driver with a virtual screen of size
+ 720x480 with 32 bits per pixel:
+
+ \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 8
+
+ Example running the VNC screen driver on top of the Linux framebuffer
+ driver:
+
+ \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 9
+
+ In this last example, Qt is using two screen drivers simultaneously,
+ displaying output on both the device's screen and across a network on
+ VNC client displays.
+*/
diff --git a/doc/src/platforms/emb-envvars.qdoc b/doc/src/platforms/emb-envvars.qdoc
new file mode 100644
index 000000000..18d1c6da3
--- /dev/null
+++ b/doc/src/platforms/emb-envvars.qdoc
@@ -0,0 +1,168 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embedded-envvars.html
+
+ \title Qt for Embedded Linux Environment Variables
+ \ingroup qt-embedded-linux
+
+ These environment variables are relevant to \l{Qt for Embedded Linux}
+ users.
+
+ \table
+ \header \o Variable \o Description
+
+ \row
+ \o \bold POINTERCAL_FILE \target POINTERCAL_FILE
+
+ \o Specifies the file containing the data used to calibrate the
+ pointer device.
+
+ See also QWSCalibratedMouseHandler and \l{Qt for Embedded Linux Pointer
+ Handling}.
+
+ \row
+ \o \bold QT_ONSCREEN_PAINT \target QT_ONSCREEN_PAINT
+
+ \o If defined, the application will render its widgets directly on
+ screen. The affected regions of the screen will not be modified by
+ the screen driver unless another window with a higher focus
+ requests (parts of) the same region.
+
+ Setting this environment variable is equivalent to setting the
+ Qt::WA_PaintOnScreen attribute for all the widgets in the
+ application.
+
+ See also the Qt for Embedded Linux \l{Qt for Embedded Linux Architecture#Graphics
+ Rendering}{graphics rendering} documentation.
+
+ \row
+ \o \bold QWS_SW_CURSOR \target QWS_SW_CURSOR
+ \o If defined, the software mouse cursor is always used (even when using an
+ accelerated driver that supports a hardware cursor).
+
+ \row
+ \o \bold QWS_DISPLAY \target QWS_DISPLAY
+ \o
+
+ Specifies the display type and framebuffer. For example, if the
+ current shell is bash, ksh, zsh or sh:
+
+ \snippet doc/src/snippets/code/doc_src_emb-envvars.qdoc 0
+
+ The valid values for the \c <driver> argument are \c LinuxFb, \c
+ QVFb, \c VNC, \c Transformed, \c Multi and \l
+ {QScreenDriverPlugin::keys()}{keys} identifying custom drivers,
+ and the \c {<display num>} argument is used to separate screens
+ that are using the same screen driver and to enable multiple
+ displays (see the \l {Running Qt for Embedded Linux Applications}
+ documentation for more details).
+
+ The driver specific options are described in the \l{Qt for Embedded Linux
+ Display Management}{display management} documentation.
+
+ \row
+ \o \bold QWS_SIZE \target QWS_SIZE
+ \o
+
+ Specifies the size of the \l{Qt for Embedded Linux} window which is centered
+ within the screen. For example, if the current shell is bash, ksh,
+ zsh or sh:
+
+ \snippet doc/src/snippets/code/doc_src_emb-envvars.qdoc 1
+
+ \row
+ \o \bold QWS_MOUSE_PROTO \target QWS_MOUSE_PROTO
+ \o
+
+ Specifies the driver for pointer handling. For example, if the
+ current shell is bash, ksh, zsh or sh:
+
+ \snippet doc/src/snippets/code/doc_src_emb-envvars.qdoc 2
+
+ The valid values for the \c <driver> argument are \c MouseMan, \c
+ IntelliMouse, \c Microsoft, \c VR41xx, \c LinuxTP, \c Yopy. \c
+ Tslib and \l {QMouseDriverPlugin::keys()}{keys} identifying
+ custom drivers, and the driver specific options are typically a
+ device, e.g., \c /dev/mouse for mouse devices and \c /dev/ts for
+ touch panels.
+
+ Multiple keyboard drivers can be specified in one go:
+
+ \snippet doc/src/snippets/code/doc_src_emb-envvars.qdoc 3
+
+ Input will be read from all specified drivers.
+ Note that the \c Vr41xx driver also accepts two optional
+ arguments: \c press=<value> defining a mouseclick (the default
+ value is 750) and \c filter=<value> specifying the length of the
+ filter used to eliminate noise (the default length is 3). For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_emb-envvars.qdoc 4
+
+ See also \l {Qt for Embedded Linux Pointer Handling}.
+
+ \row
+ \o \bold QWS_KEYBOARD \target QWS_KEYBOARD
+ \o
+
+ Specifies the driver and device for character input. For example, if the
+ current shell is bash, ksh, zsh or sh:
+
+ \snippet doc/src/snippets/code/doc_src_emb-envvars.qdoc 5
+
+ The valid values for the \c <driver> argument are \c SL5000, \c
+ Yopy, \c VR41xx, \c TTY, \c USB and \l
+ {QKbdDriverPlugin::keys()}{keys} identifying custom drivers,
+ and the driver specific options are typically a device, e.g., \c
+ /dev/tty0.
+
+ Multiple keyboard drivers can be specified in one go:
+
+ \snippet doc/src/snippets/code/doc_src_emb-envvars.qdoc 6
+
+ Input will be read from all specified drivers.
+
+ See also \l {Qt for Embedded Linux Character Input}.
+
+ \endtable
+*/
diff --git a/doc/src/platforms/emb-features.qdoc b/doc/src/platforms/emb-features.qdoc
new file mode 100644
index 000000000..cdf87eed6
--- /dev/null
+++ b/doc/src/platforms/emb-features.qdoc
@@ -0,0 +1,147 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 fine-tuning-features.html
+ \title Fine-Tuning Features in Qt
+ \ingroup qtce
+ \ingroup qt-embedded-linux
+ \brief Describes how to reduce the size of Qt libraries by selecting only
+ the features that are needed.
+
+ In many cases, only a fixed set of applications are deployed on an
+ embedded device, making it possible to save resources by minimizing
+ the size of the associated libraries. The Qt installation can easily
+ be optimized by avoiding to compile in the features that are not
+ required.
+
+ \tableofcontents
+
+ A wide range of features are defined, covering classes and technologies
+ provided by several of Qt's modules.
+ You can look up the different feature definitions in the
+ \c{src/corelib/global/qfeatures.txt} file within the Qt source
+ distribution.
+
+ \section1 Simple Customization
+
+ \section2 Embedded Linux
+
+ To disable a particular feature, just run the \c configure script
+ for Qt for Embedded Linux with the \c -no-feature-<feature> option.
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_emb-features.qdoc 1
+
+ The feature can easily be enabled again by running \c configure
+ with the \c -feature-<feature> option.
+
+ See also \l{Qt Performance Tuning}.
+
+ \section2 Windows CE
+
+ To disable a particular feature, just run the \c configure script
+ with the set of required \c -D<feature> options. For example,
+ you can use the \c -D option to define \c{QT_NO_THREAD}:
+
+ \snippet doc/src/snippets/code/doc_src_emb-features.qdoc 0
+
+ The \c -D option only creates a Qt internal define. If you get linker
+ errors you have to define \c QT_NO_THREAD also for your project.
+ You can do this by adding \c DEFINES += \c QT_NO_THREAD to your
+ \c .pro file.
+
+ See also \l{Qt Performance Tuning}.
+
+ \section1 Managing Large Numbers of Features
+
+ If you want to disable a lot of features, it is more comfortable
+ to use the \c qconfig tool.
+ You can disable a \e set of features by creating a custom
+ configuration file that defines the preferred subset of Qt's
+ functionality. Such a file uses macros to disable the unwanted
+ features, and can be created manually or by using the \c qconfig
+ tool located in the \c{tools/qconfig} directory of the Qt source
+ distribution.
+
+ \note The \c qconfig tool is intended to be built against Qt on
+ desktop platforms.
+
+ \bold{Windows CE:} The Qt for Windows CE package contains a \c qconfig
+ executable that you can run on a Windows desktop to configure the build.
+
+ \image qt-embedded-qconfigtool.png
+
+ The \c qconfig tool's interface displays all of Qt's
+ functionality, and allows the user to both disable and enable
+ features. The user can open and edit any custom configuration file
+ located in the \c{src/corelib/global} directory. When creating a
+ custom configuration file manually, a description of the currently
+ available Qt features can be found in the
+ \c{src/corelib/global/qfeatures.txt} file.
+
+ Note that some features depend on others; disabling any feature
+ will automatically disable all features depending on it. The
+ feature dependencies can be explored using the \c qconfig tool,
+ but they are also described in the \c{src/corelib/global/qfeatures.h}
+ file.
+
+ To be able to apply the custom configuration, it must be saved in
+ a file called \c qconfig-myfile.h in the \c{src/corelib/global}
+ directory. Then use the \c configure tool's \c -qconfig option
+ and pass the configuration's file name without the \c qconfig-
+ prefix and \c .h extension, as argument.
+ The following examples show how this is invoked on each of the
+ embedded platforms for a file called \c{qconfig-myfile.h}:
+
+ \bold{Embedded Linux:}
+
+ \snippet doc/src/snippets/code/doc_src_emb-features.qdoc 3
+
+ \bold{Windows CE:}
+
+ \snippet doc/src/snippets/code/doc_src_emb-features.qdoc 2
+
+ Qt provides several ready-made custom configuration files,
+ defining minimal, small, medium and large installations,
+ respectively. These files are located in the
+ \c{/src/corelib/global} directory in the Qt source distribution.
+*/
diff --git a/doc/src/platforms/emb-fonts.qdoc b/doc/src/platforms/emb-fonts.qdoc
new file mode 100644
index 000000000..0425285bc
--- /dev/null
+++ b/doc/src/platforms/emb-fonts.qdoc
@@ -0,0 +1,201 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embedded-fonts.html
+
+ \title Qt for Embedded Linux Fonts
+ \ingroup qt-embedded-linux
+
+ \l {Qt for Embedded Linux} uses the
+ \l{http://freetype.sourceforge.net/freetype2/index.html}{FreeType 2}
+ font engine to produce font output. The formats supported depends on
+ the locally installed version of the FreeType library. In addition,
+ \l{Qt for Embedded Linux} supports the Qt Prerendered Font formats (\l QPF and \l QPF2):
+ light-weight non-scalable font formats specific to \l {Qt for Embedded Linux}.
+ QPF2 is the native format of \l{Qt for Embedded Linux}. QPF is the legacy
+ format used by Qt/Embedded 2.x and 3.x. Several of the formats may be rendered
+ using anti-aliasing for improved readability.
+
+ When \l{Qt for Embedded Linux} applications run, they look for fonts in
+ Qt's \c lib/fonts/ directory. \l {Qt for Embedded Linux} will automatically detect
+ prerendered fonts and TrueType fonts. For compatibility, it will also read the
+ legacy \c lib/fonts/fontdir file.
+
+ Support for other font formats can be added. To make a suggestion,
+ please create a task in our bug tracker at \l
+ {http://bugreports.qt.nokia.com}{http://bugreports.qt.nokia.com}.
+
+ \tableofcontents
+
+ \table 100%
+ \row
+ \o
+ \bold {Optimization}
+
+ The \l FreeType, \l QPF2 and \l QPF formats are features that can be
+ disabled using the
+ \l{Fine-Tuning Features in Qt}{feature definition system},
+ reducing the size of Qt and saving resources.
+
+ Note that at least one font format must be defined.
+
+ See the \l {Fine-Tuning Features in Qt} documentation for
+ details.
+
+ \o
+ \inlineimage qt-embedded-fontfeatures.png
+ \endtable
+
+ All supported fonts use the Unicode character encoding. Most fonts
+ available today do, but they usually don't contain \e all the
+ Unicode characters. A complete 16-point Unicode font uses over 1
+ MB of memory.
+
+ \target FreeType
+ \section1 FreeType Formats
+
+ The \l {http://freetype.sourceforge.net/freetype2/index.html}{FreeType 2}
+ library (and therefore \l{Qt for Embedded Linux}) can support the following font formats:
+
+ \list
+ \o TrueType (TTF)
+ \o PostScript Type1 (PFA/PFB)
+ \o Bitmap Distribution Format (BDF)
+ \o CID-keyed Type1
+ \o Compact Font Format (CFF)
+ \o OpenType fonts
+ \o SFNT-based bitmap fonts
+ \o Portable Compiled Format (PCF)
+ \o Microsoft Windows Font File Format (Windows FNT)
+ \o Portable Font Resource (PFR)
+ \o Type 42 (limited support)
+ \endlist
+
+ It is possible to add modules to the \l
+ {http://freetype.sourceforge.net/freetype2/index.html}{FreeType 2}
+ font engine to support other types of font files. For more
+ information, see the font engine's own website: \l
+ http://freetype.sourceforge.net/freetype2/index.html.
+
+ Glyphs rendered using FreeType are shared efficiently between applications,
+ reducing memory requirements and speeding up text rendering.
+
+ \omit
+ \l {Qt for Embedded Linux} will by default use the system FreeType library if it exists.
+ Otherwise it will use a copy of the FreeType library in Qt, which by default only
+ supports TrueType fonts to reduce footprint.
+ \endomit
+
+ \target QPF2
+ \section1 Qt Prerendered Font (QPF2)
+
+ The Qt Prerendered Font (QPF2) is an architecture-independent,
+ light-weight and non-scalable font format specific to \l{Qt for Embedded Linux}.
+
+ Nokia provides the cross-platform \l makeqpf tool, included in the
+ \c tools directory of both \l {Qt} and \l{Qt for Embedded Linux}, which allows
+ generation of QPF2 files from system fonts.
+
+ QPF2 supports anti-aliasing and complex writing systems, using information
+ from the corresponding TrueType font, if present on the system. The format
+ is designed to be mapped directly to memory. The same format is used to
+ share glyphs from non-prerendered fonts between applications.
+
+ \target QPF
+ \section1 Legacy Qt Prerendered Font (QPF)
+
+ Nokia provides support for the legacy QPF format for compatibility
+ reasons. QPF is based on the internal font engine data structure of Qt/Embedded
+ versions 2 and 3.
+
+ Note that the file name describes the font, for example \c helvetica_120_50.qpf
+ is 12 point Helvetica while \c helvetica_120_50i.qpf is 12 point Helvetica \e italic.
+
+ \omit
+ \section1 Memory Requirements
+
+ Taking advantage of the way the QPF format is structured, Qt for
+ Embedded Linux memory-maps the data rather than reading and parsing it.
+ This reduces RAM consumption even further.
+
+ Scalable fonts use a larger amount of memory per font, but
+ these fonts provide a memory saving if many different sizes of each
+ font are needed.
+ \endomit
+
+ \section1 The Legacy \c fontdir File
+
+ For compatibility reasons \l{Qt for Embedded Linux} supports the \c fontdir
+ file, if present. The file defines additional fonts available to the
+ application, and has the following format:
+
+ \snippet doc/src/snippets/code/doc_src_emb-fonts.qdoc 0
+
+ \table 100%
+ \header \o Field \o Description
+ \row \o \bold name
+ \o The name of the font format, e.g.,\c Helvetica, \c Times, etc.
+ \row \o \bold file
+ \o The name of the file containing the font, e.g., \c
+ helvR0810.bdf, \c verdana.ttf, etc.
+ \row \o \bold renderer
+ \o Specifies the font engine that should be used to render the
+ font, currently only the FreeType font engine (\c FT) is
+ supported.
+ \row \o \bold italic
+ \o Specifies whether the font is italic or not; the accepted
+ values are \c y or \c n.
+ \row \o \bold weight
+ \o Specifies the font's weight: \c 50 is normal, \c 75 is bold,
+ etc.
+ \row \o \bold size
+ \o Specifies the font size, i.e., point size * 10. For example, a
+ value of 120 means 12pt. A value of 0 means that the font is
+ scalable.
+ \row \o \bold flags
+ \o The following flag is supported:
+ \list
+ \o \c s: smooth (anti-aliased)
+ \endlist
+ All other flags are ignored.
+ \endtable
+*/
diff --git a/doc/src/platforms/emb-framebuffer-howto.qdoc b/doc/src/platforms/emb-framebuffer-howto.qdoc
new file mode 100644
index 000000000..21a028354
--- /dev/null
+++ b/doc/src/platforms/emb-framebuffer-howto.qdoc
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embedded-testingframebuffer.html
+
+ \title Testing the Linux Framebuffer
+ \subtitle for Qt for Embedded Linux
+ \ingroup qt-embedded-linux
+
+ To test that the Linux framebuffer is set up correctly, and that
+ the device permissions are correct, use the program found in
+ \c examples/qws/framebuffer which opens the frame buffer and draws
+ three squares of different colors.
+*/
diff --git a/doc/src/platforms/emb-hardwareacceleration.qdocinc b/doc/src/platforms/emb-hardwareacceleration.qdocinc
new file mode 100644
index 000000000..fb00e09c2
--- /dev/null
+++ b/doc/src/platforms/emb-hardwareacceleration.qdocinc
@@ -0,0 +1,140 @@
+ \section1 Hardware Acceleration
+
+ When designing applications for embedded devices there is often a
+ compromise between graphics effects and performance. On most
+ devices, you cannot have both simply because the hardware needed
+ for such operations just is not there. With a growing number of
+ devices that use hardware dedicated to graphics operations there is
+ less need to compromise.
+
+ In addition to enabling dynamic graphics effects, there are two
+ other benefits to using graphics acceleration. One is that graphics
+ acceleration hardware is more power efficient than using the CPU.
+ The reason for this is that the CPU might require a clock speed
+ that is up to 20 times higher than the GPU, achieving the same
+ results. E.g. a typical hardware accelerated mobile graphics unit
+ can rasterize one or two bilinear texture fetches in one cycle,
+ while a software implementation takes easily more than 20 cycles.
+ Typical \e {System-on-a-chip} (SoC) graphics hardware generally have
+ a much lower clock speed and memory bandwidth, and different level
+ of acceleration than desktop GPUs. One example is that many GPUs
+ leave out transformation and lighting from the graphics pipeline
+ and only implements rasterization.
+
+ Another reason to use a GPU is to offload the main CPU, either for
+ power saving or to perform other operations in parallel. Often
+ drawing speed with a GPU is not that much faster than a CPU but
+ the clear benefit of using the GPU is to free up the CPU to perform
+ other tasks which can be used to create a more responsive use
+ experience.
+
+ The key to writing good applications for devices is therefore to
+ limit the wow factor down to what the target hardware can handle,
+ and to take advantage of any graphics dedicated hardware. Qt
+ provides several ways to both render advanced effects on the screen
+ and speed up your application using hardware accelerated graphics.
+
+ \tableofcontents
+
+ \section2 Qt for Embedded Graphics pipeline
+
+ Qt uses QPainter for all graphics operations. By using the same API
+ regardless of platform, the code can be reused on different devices.
+ QPainter use different paint engines implemented in the QPaintEngine API to
+ do the actual painting.
+
+ The QPaintEngine API provides paint engines for each window system and
+ painting framework supported by Qt. In regards to Qt for Embedded, this
+ also includes implementations for OpenGL ES versions 1.1 and 2.0, as well
+ as OpenVG and DirectFB(Embedded Linux only).
+
+ By using one of these paint engines, you will be able to improve the
+ graphics performance of your Qt application. However, if the graphics
+ operations used are not supported, this might as well be a trap, slowing
+ down your application significantly. This all depends on what kind of
+ graphics operations that are supported by the target devices hardware
+ configuration.
+
+ \image platformHWAcc.png
+
+ The paint engine will direct all graphics operations supported by the
+ devices hardware to the GPU, and from there they are sent to the
+ framebuffer. Unsupported graphics operations falls back to the
+ QRasterPaintEngine and are handled by the CPU before sent to the
+ framebuffer. In the end, the operating system sends the paint updates off
+ to the screen/display. The fallback operation is quite expensive in regards
+ to memory consumption, and should be avoided.
+
+ \section2 Hardware configuration requirements
+
+ Before implementing any application using hardware acceleration, it is wise
+ to get an overview of what kind of hardware accelerated graphics operations
+ that are available for the target device.
+
+ \note On devices with no hardware acceleration, Qt will use
+ QRasterPaintEngine, which handles the acceleration using software. On
+ devices supporting OpenGL ES, OpenVG or DirectFB(not supported by Windows
+ CE), Qt will use the
+ respective paint engines to accelerate painting. However, hardware
+ configurations that only support a limited set of hardware acceleration
+ features, might slow the application graphics down rather than speeding it
+ up when using unsupported operations that must fall back to the raster
+ engine.
+
+ \section3 Different architectures
+
+ Based on the architecture used in a device we can make a recommendation on
+ which hardware acceleration techniques to use. There are mainly two
+ different architectures on embedded devices. These are devices with a
+ Unified Memory Architecture (UMA), and devices with dedicated graphics
+ memory. Generally, high-end devices will have dedicated graphics memory.
+ Low-end devices will just use system memory, sometimes reserving a memory
+ region and sometimes not.
+
+ In addition to this, we can categorize the devices into five types based on
+ the different graphics operations supported by their hardware.
+
+ \list 1
+ \o No support for graphics acceleration.
+ \o Support for blitter and alpha blending.
+ \o Support for path based 2D vector graphics.
+ \o Support for fixed function 3D graphics.
+ \o Support for programmable 3D graphics.
+ \endlist
+
+ Based on these characteristics the table below recommends which paint
+ engines to use with the different types of hardware configurations.
+
+ \section3 Recommended use of hardware acceleration based on hardware
+
+ \table
+ \header
+ \o Type
+ \o UMA
+ \o Non-UMA
+ \row
+ \o \bold {None}
+ \o Qt Raster Engine
+ \o Qt Raster Engine
+ \row
+ \o \bold {Blitter}
+ \o DirectFB
+ \o DirectFB
+ \row
+ \o \bold {2D Vector}
+ \o OpenVG
+ \o OpenVG
+ \row
+ \o \bold {Fixed 3D}
+ \o OpenGL (ES) 1.x
+ \o OpenGL (ES) 1.x
+ \row
+ \o \bold {Programmable 3D}
+ \o OpenGL (ES) 2.x
+ \o OpenGL (ES) 2.x
+ \endtable
+
+ \note Since the DirectFB API is quite primitive, the raster paint engine
+ handles most of the operations.
+
+ \note Blitter and Alpha blending is currently not supported on Windows CE.
diff --git a/doc/src/platforms/emb-install.qdoc b/doc/src/platforms/emb-install.qdoc
new file mode 100644
index 000000000..d58239fcc
--- /dev/null
+++ b/doc/src/platforms/emb-install.qdoc
@@ -0,0 +1,197 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embedded-install.html
+
+ \title Installing Qt on Embedded Linux
+ \ingroup qt-embedded-linux
+ \ingroup installation
+ \brief How to install Qt on Embedded Linux.
+
+ This document describes how to install \l{Qt for Embedded Linux} in your
+ development environment:
+
+ \tableofcontents
+
+ Please see the \l{Cross-Compiling Qt for Embedded Linux Applications}{cross
+ compiling} and \l{Deploying Qt for Embedded Linux Applications}{deployment}
+ documentation for details on how to install \l{Qt for Embedded Linux} on
+ your target device.
+
+ Note also that this installation procedure is written for Linux,
+ and that it may need to be modified for other platforms.
+
+ \section1 Step 1: Installing the License File (commercial editions only)
+
+ If you have the commercial edition of \l{Qt for Embedded Linux}, the first step
+ is to install your license file as \c $HOME/.qt-license.
+
+ For the open source version you do not need a license file.
+
+ \section1 Step 2: Unpacking the Archive
+
+ First uncompress the archive in the preferred location, then
+ unpack it:
+
+ \snippet doc/src/snippets/code/doc_src_emb-install.qdoc 0
+
+ This document assumes that the archive is unpacked in the
+ following directory:
+
+ \snippet doc/src/snippets/code/doc_src_emb-install.qdoc 1
+
+ \section1 Step 3: Building the Library
+
+ Before building the \l{Qt for Embedded Linux} library, run the \c
+ ./configure script to configure the library for your development
+ architecture. You can list all of the configuration system's
+ options by typing \c {./configure -help}.
+
+ Note that by default, \l{Qt for Embedded Linux} is configured for
+ installation in the \c{/usr/local/Trolltech/QtEmbedded-%VERSION%}
+ directory, but this can be changed by using the \c{-prefix}
+ option. Alternatively, the \c{-prefix-install} option can be used
+ to specify a "local" installation within the source directory.
+
+ The configuration system is also designed to allow you to specify
+ your platform architecture:
+
+ \snippet doc/src/snippets/code/doc_src_emb-install.qdoc 2
+
+ In general, all Linux systems which have framebuffer support can
+ use the \c generic architecture. Other typical architectures are
+ \c x86, \c arm and \c mips.
+
+ \note If you want to build Qt for Embedded Linux for use with a virtual
+ framebuffer, pass the \c{-qvfb} option to the \c configure
+ script.
+
+ To create the library and compile all the demos, examples, tools,
+ and tutorials, type:
+
+ \snippet doc/src/snippets/code/doc_src_emb-install.qdoc 3
+
+ On some systems the \c make utility is named differently, e.g. \c
+ gmake. The \c configure script tells you which \c make utility to
+ use.
+
+ If you did not configure \l{Qt for Embedded Linux} using the \c{-prefix-install}
+ option, you need to install the library, demos, examples, tools,
+ and tutorials in the appropriate place. To do this, type:
+
+ \snippet doc/src/snippets/code/doc_src_emb-install.qdoc 4
+
+ and enter the root password.
+
+ \note You can use the \c INSTALL_ROOT environment variable to specify
+ the location of the installed files when invoking \c{make install}.
+
+ \section1 Step 4: Adjusting the Environment Variables
+
+ In order to use \l{Qt for Embedded Linux}, the \c PATH variable must be extended
+ to locate \c qmake, \c moc and other \l{Qt for Embedded Linux} tools, and the \c
+ LD_LIBRARY_PATH must be extended for compilers that do not support
+ \c rpath.
+
+ To set the \c PATH variable, add the following lines to your \c
+ .profile file if your shell is bash, ksh, zsh or sh:
+
+ \snippet doc/src/snippets/code/doc_src_emb-install.qdoc 5
+
+ In case your shell is csh or tcsh, add the following line to the
+ \c .login file instead:
+
+ \snippet doc/src/snippets/code/doc_src_emb-install.qdoc 6
+
+ If you use a different shell, please modify your environment
+ variables accordingly.
+
+ For compilers that do not support \c rpath you must also extend
+ the \c LD_LIBRARY_PATH environment variable to include
+ \c /usr/local/Trolltech/QtEmbedded-%VERSION%/lib. Note that on Linux
+ with GCC, this step is not needed.
+
+ \section1 Step 5: Building the Virtual Framebuffer
+
+ For development and debugging, \l{Qt for Embedded Linux} provides a virtual
+ framebuffer as well as the option of running \l{Qt for Embedded Linux} as a VNC
+ server. For a description of how to install the virtual
+ framebuffer and how to use the VNC protocol, please consult the
+ documentation at:
+
+ \list
+ \o \l {The Virtual Framebuffer}
+ \o \l {The VNC Protocol and Qt for Embedded Linux}
+ \endlist
+
+ Note that the virtual framebuffer requires a Qt for X11
+ installation. See \l {Installing Qt on X11 Platforms} for details.
+
+ The Linux framebuffer, on the other hand, is enabled by default on
+ all modern Linux distributions. For information on older versions,
+ see \l http://en.tldp.org/HOWTO/Framebuffer-HOWTO.html. To test
+ that the Linux framebuffer is set up correctly, use the program
+ provided by the \l {Testing the Linux Framebuffer} document.
+
+ That's all. \l{Qt for Embedded Linux} is now installed.
+
+ \table 100%
+ \row
+ \o
+ \bold {Customizing the Qt for Embedded Linux Library}
+
+ When building embedded applications on low-powered devices,
+ reducing the memory and CPU requirements is important.
+
+ A number of options tuning the library's performance are
+ available. But the most direct way of saving resources is to
+ fine-tune the set of Qt features that is compiled. It is also
+ possible to make use of accelerated graphics hardware.
+
+ \list
+ \o \l {Fine-Tuning Features in Qt}
+ \o \l {Qt Performance Tuning}
+ \o \l {Adding an Accelerated Graphics Driver to Qt for Embedded Linux}
+ \endlist
+
+ \endtable
+*/
diff --git a/doc/src/platforms/emb-kmap2qmap.qdoc b/doc/src/platforms/emb-kmap2qmap.qdoc
new file mode 100644
index 000000000..740df0d25
--- /dev/null
+++ b/doc/src/platforms/emb-kmap2qmap.qdoc
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embedded-kmap2qmap.html
+ \title kmap2qmap
+ \ingroup qt-embedded-linux
+
+ \c kmap2qmap is a tool to generate keymaps for use on Embedded Linux.
+ The source files have to be in standard Linux \c kmap format that is
+ e.g. understood by the kernel's \c loadkeys command. This means you
+ can use the following sources to generate \c qmap files:
+
+ \list
+ \o The \l {http://lct.sourceforge.net/}{Linux Console Tools (LCT)} project.
+ \o \l {http://www.x.org/}{Xorg} X11 keymaps can be converted to the \c
+ kmap format with the \c ckbcomp utility.
+ \o Since \c kmap files are plain text files, they can also be hand crafted.
+ \endlist
+
+ The generated \c qmap files are size optimized binary files.
+
+ \c kmap2qmap is a command line program, that needs at least 2 files as
+ parameters. The last one will be the generated \c .qmap file, while all
+ the others will be parsed as input \c .kmap files. For example:
+
+ \code
+ kmap2qmap i386/qwertz/de-latin1-nodeadkeys.kmap include/compose.latin1.inc de-latin1-nodeadkeys.qmap
+ \endcode
+
+ \c kmap2qmap does not support all the (pseudo) symbols that the Linux
+ kernel supports. If you are converting a standard keymap you will get a
+ lot of warnings for things like \c Show_Registers, \c Hex_A, etc.: you
+ can safely ignore those.
+
+ It also doesn't support numeric symbols (e.g. \c{keycode 1 = 4242},
+ instead of \c{keycode 1 = colon}), since these are deprecated and can
+ change from one kernel version to the other.
+
+ On the other hand, \c kmap2qmap supports one additional, Qt specific,
+ symbol: \c QtZap. The built-in US keymap has that symbol mapped tp
+ \c{Ctrl+Alt+Backspace} and it serves as a shortcut to kill your QWS
+ server (similiar to the X11 server).
+
+ See also \l {Qt for Embedded Linux Character Input}
+*/
diff --git a/doc/src/platforms/emb-makeqpf.qdoc b/doc/src/platforms/emb-makeqpf.qdoc
new file mode 100644
index 000000000..b8851b309
--- /dev/null
+++ b/doc/src/platforms/emb-makeqpf.qdoc
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embedded-makeqpf.html
+ \title makeqpf
+ \ingroup qt-embedded-linux
+
+ \c makeqpf is a tool to generate pre-rendered fonts in QPF2 format for use on Embedded Linux.
+
+ Qt 4 can read files in QPF2 format in addition to QPF files generated by older versions of
+ \c makeqpf from Qt 2 or 3.
+
+ \sa {Qt for Embedded Linux Fonts}
+*/
diff --git a/doc/src/platforms/emb-opengl-EmbLinux.qdoc b/doc/src/platforms/emb-opengl-EmbLinux.qdoc
new file mode 100644
index 000000000..bede2ca46
--- /dev/null
+++ b/doc/src/platforms/emb-opengl-EmbLinux.qdoc
@@ -0,0 +1,164 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embeddedLinux-opengl.html
+
+\title Qt for Embedded Linux and OpenGL
+
+\ingroup qt-embedded-linux
+
+\input platforms/emb-opengl.qdocinc
+
+\section1 Using OpenGL with Qt for Embedded Linux
+Qt for Embedded Linux provides support for integrating OpenGL ES for
+drawing into a QGLWidget. The current implementation supports OpenGL and 2D
+painting within a QGLWidget. Using OpenGL to accelerate regular widgets and
+compositing top-level windows with OpenGL are not currently supported.
+
+\note OpenGL rendering only works with QGLWidget under QWS. Regular
+widgets cannot currently support it.
+
+\section2 Configure
+
+It is recommended that Qt for Embedded Linux is configured with the
+\c{-DQT_QWS_CLIENTBLIT} and \c{-DQT_NO_QWS_CURSOR} options for optimum
+performance. OpenGL is rendered direct to the screen and these options
+prevent Qt for Embedded Linux from trying to do its own non-OpenGL
+compositing on the QGLWidget contents.
+
+\section2 Using OpenGL to Implement Window Compositing and Effects
+
+Compositing effects can be simulated by adjusting the opacity and other
+parameters of the items within a QGraphicsView canvas on a QGLWidget
+viewport.
+
+While Qt for Embedded Linux does include a complete windowing system,
+using OpenGL to composite regular window surfaces can be quite difficult.
+Most of Qt for Embedded Linux assumes that the window surface is a plain
+raster memory buffer, with QGLWidget being the sole exception.
+The need to constantly re-upload the raster memory buffers into OpenGL
+textures for compositing can have a significant impact on performance,
+which is why we do not recommend implementing that form of compositing.
+We intend to address this problem in future versions of Qt.
+
+\section1 Integrating OpenGL/ES into Qt for Embedded Linux
+\section2 Reference Integration
+The reference integration for OpenGL into Qt for Embedded Linux is for the
+PowerVR chipset from \l{http://www.imgtec.com/}{Imagination Technologies}.
+It consists of two components: \c{pvreglscreen}, which provides the Qt for
+Embedded Linux screen driver, and \c{QWSWSEGL}, which implements a plug-in
+to the PowerVR EGL implementation to implement low-level OpenGL drawing
+surfaces.
+
+\section2 Integrating Other Chipsets
+In this section, we discuss the essential features of the reference
+integration that need to be provided for any other chipset integration.
+
+The QtOpenGL module assumes that a QGLWidget can be represented
+by an \c EGLNativeWindowType value in some underlying window system
+implementation, and that \c{eglSwapBuffers()} is sufficient to copy
+the contents of the native window to the screen when requested.
+
+However, many EGL implementations do not have a pre-existing window system.
+Usually only a single full-screen window is provided, and everything else
+must be simulated some other way. This can be a problem because
+of QtOpenGL's assumptions. We intend to address these assumptions in a
+future version of Qt, but for now, it is the responsibility of the integrator
+to provide a rudimentary window system within the EGL implementation.
+This is the purpose of \c{QWSWSEGL} in the reference integration.
+
+If it isn't possible for the EGL implementation to provide a rudimentary
+window system, then full-screen windows using QGLWidget can be supported,
+but very little else.
+
+The screen driver needs to inherit from QGLScreen and perform the
+following operations in its constructor:
+
+\snippet src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.cpp 0
+
+The \c{setSurfaceFunctions()} call supplies an object that takes care
+of converting Qt paint devices such as widgets and pixmaps into
+\c EGLNativeWindowType and \c EGLNativePixmapType values. Here we
+only support native windows. Because OpenGL rendering is direct to
+the screen, we also indicate that client blit is supported.
+
+Next, we override the \c{createSurface()} functions in QGLScreen:
+
+\snippet src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.cpp 1
+
+Even if Qt for Embedded Linux is used in single-process mode, it is
+necessary to create both client-side and server-side versions of the
+window surface. In our case, the server-side is just a stub because
+the client side directly renders to the screen.
+
+Note that we only create a \c{PvrEglWindowSurface} if the widget is a
+QGLWidget. All other widgets use the normal raster processing.
+It can be tempting to make \c{createSurface()} create an OpenGL
+window surface for other widget types as well. This has not been
+extensively tested and we do not recommend its use at this time.
+
+The other main piece is the creation of the \c EGLNativeWindowType
+value for the widget. This is done in the \c{createNativeWindow()}
+override:
+
+\snippet src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglscreen.cpp 2
+
+The details of what needs to be placed in this function will vary
+from chipset to chipset. The simplest is to return the native window
+handle corresponding to the "root" full-screen window:
+
+\code
+*native = rootWindowHandle;
+return true;
+\endcode
+
+The most common value for \c rootWindowHandle is zero, but this may
+not always be the case. Consult the chipset documentation for the
+actual value to use. The important thing is that whatever value is
+returned must be suitable for passing to the \c{eglCreateWindowSurface()}
+function of the chipset's EGL implementation.
+
+In the case of PowerVR, the rudimentary window system in \c{QWSWSEGL}
+provides a \c PvrQwsDrawable object to represent the \c EGLNativeWindowType
+value for the widget.
+
+*/
diff --git a/doc/src/platforms/emb-opengl.qdocinc b/doc/src/platforms/emb-opengl.qdocinc
new file mode 100644
index 000000000..dac537946
--- /dev/null
+++ b/doc/src/platforms/emb-opengl.qdocinc
@@ -0,0 +1,85 @@
+\section1 Introduction
+
+\l {http://www.opengl.org}{OpenGL} is an industry standard API for
+2D/3D graphics. It provides a powerful, low-level interface between
+software and acceleration hardware, and it is operating system and
+window system independent. \l {http://www.khronos.org/opengles}{OpenGL ES}
+is a subset of the \l {http://www.opengl.org}{OpenGL} standard. Because it
+is designed for use with embedded systems, it has a smaller, more
+constrained API.
+
+\l {http://www.khronos.org/opengles/1_X}{OpenGL ES version 1.x} is designed for
+fixed function hardware, while its successor \l
+{http://www.khronos.org/opengles/2_X}{OpenGL ES version 2.x} is designed for
+programmable hardware. It is worth noting that there is a significant
+difference between the two, and that they are not compatible with each
+other. OpenGL ES 1.x limits processing to a pre-defined set of fixed
+options for drawing and lighting objects. OpenGL 2.x has a significantly
+shorter graphics pipeline than 1.x. Instead of using function
+transformation and a fragment pipeline, 2.x uses the \l
+{http://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf}{OpenGL
+ES Shading Language (GLSL ES)}. Instead of using the pre-defined functions,
+the programmer writes small shader programs telling the hardware in detail
+how to render each object.
+
+The \l {QtOpenGL module} offers classes that make it easy to draw 3D
+graphics in GUI applications using OpenGL ES. Qt provides a plugin that
+integrates both OpenGL ES versions \l
+{http://www.khronos.org/opengles/1_X}{1.x} and \l
+{http://www.khronos.org/opengles/2_X}{2.x} with Qt for Embedded. However,
+Qt for Embedded can be adapted to a wide range of OpenGL versions.
+
+To translate QPainter operations into OpenGL ES calls (there are actually
+two subclasses, one for OpenGL/ES 1.1 and another for OpenGL/ES 2.0), Qt
+uses a subclass of QPaintEngine. This specialized paint engine can be used
+to improve 2D rendering performance on appropriate hardware. It can also
+overlay controls and decorations onto 3D scenes drawn using OpenGL.
+
+\tableofcontents
+
+\section1 Using OpenGL ES with Qt
+To use OpenGL-enabled widgets in a Qt for Embedded application, all that is
+required is to subclass QGLWidget and draw into instances of the subclass
+with standard OpenGL functions. The current implementation only
+supports OpenGL ES and 2D painting within a QGLWidget. Using OpenGL ES to
+accelerate regular widgets as well as compositing top-level windows with
+OpenGL ES are not currently supported. These issues will be addressed in
+future versions of Qt.
+
+\note The OpenGL paint engine is not currently supported in regular
+widgets. However, any application that uses QGraphicsView can set a
+QGLWidget as the viewport and obtain access to the OpenGL paint engine that
+way:
+
+\code
+ QGraphicsView view(&scene);
+ view.setViewport(new QGLWidget());
+ view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ view.setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
+ view.setFrameStyle(0);
+ view.showFullScreen();
+\endcode
+
+It is recommended that the QGraphicsView::FullViewportUpdate flag
+be set because the default double-buffered behavior of QGLWidget
+does not support partial updates. It is also recommended that the
+window be shown full-screen because that usually has the best
+performance on current OpenGL ES implementations.
+
+Once a QGraphicsView has been initialized as above, regular widgets
+can be added to the canvas using QGraphicsProxyWidget if the
+application requires them.
+
+\note OpenGL ES 2.X does not support PBuffers, so QGLPixelBuffer will not
+work. In this case, QGLFramebufferObject should be used instead. However,
+OpenGL ES 1.X does not support Framebuffer objects, with the exception of
+some OpenGL ES 1.X extensions. In this case, please use QGLPixelBuffer.
+
+\note On most embedded hardware, the OpenGL implementation is
+actually \l{http://www.khronos.org/opengles/1_X/}{OpenGL/ES 1.1} or
+\l{http://www.khronos.org/opengles/2_X/}{OpenGL/ES 2.0}. When painting
+within a QGLWidget::paintGL() override, it is necessary to limit the
+application to only the features that are present in the OpenGL/ES
+implementation.
+
diff --git a/doc/src/platforms/emb-openvg-EmbLinux.qdoc b/doc/src/platforms/emb-openvg-EmbLinux.qdoc
new file mode 100644
index 000000000..abdb6174c
--- /dev/null
+++ b/doc/src/platforms/emb-openvg-EmbLinux.qdoc
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embeddedLinux-openvg.html
+
+\title Qt for Embedded Linux and OpenVG
+
+\ingroup qt-embedded-linux
+
+\input platforms/emb-openvg.qdocinc
+
+
+
+*/
diff --git a/doc/src/platforms/emb-openvg.qdocinc b/doc/src/platforms/emb-openvg.qdocinc
new file mode 100644
index 000000000..37ccb9c1d
--- /dev/null
+++ b/doc/src/platforms/emb-openvg.qdocinc
@@ -0,0 +1,288 @@
+\section1 Introduction
+
+\l {http://www.khronos.org/openvg}{OpenVG} is a standard API from the
+\l{http://www.khronos.org/openvg}{Khronos Group} for accelerated 2D vector
+graphics and raster graphics. It is a dedicated API for 2D graphics on
+mobile devices. It is therefore more likely to be a better alternative for
+2D acceleration than OpenGL/ES.
+
+\tableofcontents
+
+\section1 Using OpenVG with Qt
+The QtOpenVG plugin provides support for OpenVG painting. OpenVG is
+optimized for 2D vector operations, and closely matches the functionality
+in QPainter. To translate QPainter operations into OpenVG calls, Qt uses a
+subclass of QPaintEngine. Unlike with OpenGL ES, OpenVG can be used for
+acceleration of regular widgets. It can therefore be an excellent substitute
+for the default raster-based QPaintEngine on hardware that supports the
+OpenVG API.
+
+\section2 Configure
+OpenVG support can be enabled by passing the \c{-openvg} option to
+configure. It is assumed that the following qmake variables are set to
+appropriate values in the qmake.conf file for your platform:
+
+ \list
+ \o QMAKE_INCDIR_OPENVG
+ \o QMAKE_LIBDIR_OPENVG
+ \o QMAKE_LIBS_OPENVG
+ \endlist
+
+Most OpenVG implementations are based on EGL, so the following variables
+may also need to be set:
+
+ \list
+ \o QMAKE_INCDIR_EGL
+ \o QMAKE_LIBDIR_EGL
+ \o QMAKE_LIBS_EGL
+ \endlist
+
+See \l{qmake Variable Reference} for more information on these variables.
+
+\section2 Supported OpenVG Engines
+
+Two kinds of OpenVG engines are currently supported: EGL based, and engines
+built on top of OpenGL such as
+\l{http://sourceforge.net/projects/shivavg}{ShivaVG}. EGL based engines are
+preferred.
+
+It is assumed that the EGL implementation has some way to turn a
+QWidget::winId() into an EGL rendering surface with
+\c{eglCreateWindowSurface()}. If this is not the case, then modifications
+may be needed to the code under \c{src/gui/egl} and
+\c{src/plugins/graphicssystems/openvg} to accomodate the EGL
+implementation.
+
+The ShivaVG graphics system under \c{src/plugins/graphicssystems/shivavg}
+is an example of how to integrate a non-EGL implementation of OpenVG into
+Qt. It is currently only supported with Qt/X11 and being an example only,
+the resulting screen output may not be as good as with other OpenVG
+engines.
+
+\section1 Using the OpenVG graphics system
+
+Once the graphics system plugin has been built and installed, applications
+can be run as follows to use the plugin:
+
+ \code
+ app -graphicssystem OpenVG
+ \endcode
+
+If ShivaVG is being used, then substitute \c ShivaVG instead of \c OpenVG
+in the line above.
+
+If the plugin fails to load, try setting the \c QT_DEBUG_PLUGINS
+environment variable to 1 and try again. Usually the plugin cannot be
+loaded because Qt cannot locate it in the directory
+\c{plugins/graphicssystems} within the Qt installation, or the dynamic
+library path does not include the directory containing the system's \c
+libOpenVG.so library.
+
+\section2 Supported features
+
+\table
+ \header
+ \o Feature
+ \o Description
+
+ \row
+ \o Context modes
+ \o The default configuration is "single-context" mode, where a single
+EGLContext object is used for all drawing, regardless of the surface.
+Multiple EGLSurfaces are created, one for each window surface or pixmap.
+eglMakeCurrent() is called with the same EGLContext every time, but a
+different EGLSurface.
+
+Single-context mode is necessary for QPixmapData to be implemented in terms
+of a VGImage. If single-context mode is not enabled, then QPixmapData will
+use the fallback QRasterPixmapData implementation, which is less efficient
+performance-wise.
+
+Single-context mode can be disabled with the QVG_NO_SINGLE_CONTEXT
+define if the OpenVG engine does not support one context with multiple
+surfaces.
+
+ \row
+ \o Transformation matrices
+ \o All affine and projective transformation matrices are supported.
+
+QVGPaintEngine will use the engine to accelerate affine transformation
+matrices only. When a projective transformation matrix is used,
+QVGPaintEngine will transform the coordinates before passing them to the
+engine. This will probably incur a performance penalty.
+
+Pixmaps and images are always transformed by the engine, because OpenVG
+specifies that projective transformations must work for images.
+
+It is recommended that client applications should avoid using projective
+transformations for non-image elements in performance critical code.
+
+ \row
+ \o Composition modes
+ \o The following composition modes are supported:
+
+\list
+\o QPainter::CompositionMode_SourceOver
+\o QPainter::CompositionMode_DestinationOver
+\o QPainter::CompositionMode_Source
+\o QPainter::CompositionMode_SourceIn
+\o QPainter::CompositionMode_DestinationIn
+\o QPainter::CompositionMode_Plus
+\o QPainter::CompositionMode_Multiply
+\o QPainter::CompositionMode_Screen
+\o QPainter::CompositionMode_Darken
+\o QPainter::CompositionMode_Lighten
+\endlist
+
+The other members of QPainter::CompositionMode are not supported
+because OpenVG 1.1 does not have an equivalent in its \c VGBlendMode
+enumeration. Any attempt to set an unsupported mode will result in
+the actual mode being set to QPainter::CompositionMode_SourceOver.
+Client applications should avoid using unsupported modes.
+
+ \row
+ \o Pens and brushes
+ \o All pen styles are supported, including cosmetic pens.
+
+All brush styles are supported except for conical gradients, which are not
+supported by OpenVG 1.1. Conical gradients will be converted into a solid
+color brush corresponding to the first color in the gradient's color ramp.
+
+Affine matrices are supported for brush transforms, but not projective
+matrices.
+
+
+ \row
+ \o Rectangles, lines, and points
+ \o Rectangles, lines, and rounded rectangles use cached VGPath
+objects to try to accelerate drawing operations. vgModifyPathCoords() is
+used to modify the co-ordinates in the cached VGPath object each time
+fillRect(), drawRects(), drawLines(), or drawRoundedRect() is called.
+
+If the engine does not implement vgModifyPathCoords() properly, then the
+QVG_NO_MODIFY_PATH define can be set to disable path caching. This will
+incur a performance penalty.
+
+Points are implemented as lines from the point to itself. The cached line
+drawing VGPath object is used when drawing points.
+
+ \row
+ \o Polygons and Ellipses
+ \o Polygon and ellipse drawing creates a new VGPath object every
+time drawPolygon() or drawEllipse() is called. If the client application
+is making heavy use of these functions, the constant creation and
+destruction of VGPath objects could have an impact on performance.
+
+If a projective transformation is active, ellipses are converted into cubic
+curves prior to transformation, which may further impact performance.
+
+Client applications should avoid polygon and ellipse drawing in performance
+critical code if possible.
+
+ \row
+ \o Other Objects
+ \o Most other objects (arcs, pies, etc) use drawPath(), which takes
+a QPainterPath argument. The default implementation in QPainterEngineEx
+converts the QPainterPath into a QVectorPath and then calls draw(), which
+in turn converts the QVectorPath into a VGPath for drawing.
+
+To reduce the overhead, we have overridden drawPath() in QVGPaintEngine to
+convert QPainterPath's directly into VGPath's. This should help improve
+performance compared to the default implementation.
+
+Client applications should try to avoid these types of objects in
+performance critical code because of the QPainterPath to VGPath conversion
+cost.
+
+ \row
+ \o Clipping
+ \o Clipping with QRect, QRectF, and QRegion objects is supported on
+all OpenVG engines with vgMask() if the transformation matrix is the
+identity or a simple origin translation.
+
+Clipping with an arbitrary QPainterPath, or setting the clip region when
+the transformation matrix is simple, is supported only if the OpenVG engine
+has the vgRenderToMask() function (OpenVG 1.1 and higher).
+
+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.
+
+The QVG_SCISSOR_CLIP define should only be used if the OpenVG engine does
+not support vgMask() or vgRenderToMask().
+
+ \row
+ \o Opacity
+ \o Opacity is supported for all drawing operations. Solid color
+pens, solid color brushes, gradient brushes, and image drawing with
+drawPixmap() and drawImage() will probably have the best performance
+compared to other kinds of pens and brushes.
+
+ \row
+ \o Text Drawing
+ \o If OpenVG 1.1 is used, the paint engine will use VG fonts to
+cache glyphs while drawing. If the engine does not support VG fonts
+correctly, QVG_NO_DRAW_GLYPHS can be defined to disable this mode. Text
+drawing performance will suffer if VG fonts are not used.
+
+By default, image-based glyphs are used. If QVG_NO_IMAGE_GLYPHS is defined,
+then path-based glyphs will be used instead. QVG_NO_IMAGE_GLYPHS is ignored
+if QVG_NO_DRAW_GLYPHS is defined.
+
+If path-based glyphs are used, then the OpenVG engine will need to support
+hinting to render text with good results. Image-based glyphs avoids the
+need for hinting and will usually give better results than path-based
+glyphs.
+
+ \row
+ \o Pixmaps
+ \o In single-context mode, pixmaps will be implemented using
+VGImage unless QVG_NO_PIXMAP_DATA is defined.
+
+QVGPixmapData will convert QImage's into VGImage's when the application
+calls drawPixmap(), and the pixmap will be kept in VGImage form for the
+lifetime of the QVGPixmapData object. When the application tries to paint
+into a QPixmap with QPainter, the data will be converted back into a QImage
+and the raster paint engine will be used to render into the QImage.
+
+This arrangement optimizes for the case of drawing the same static pixmap
+over and over (e.g. for icons), but does not optimize the case of drawing
+into pixmaps.
+
+Bitmaps must use QRasterPixmapData. They are not accelerated with VGImage
+at present.
+
+ \row
+ \o Pixmap filters
+ \o Convolution, colorize, drop shadow, and blur filters are
+accelerated using OpenVG operations.
+
+\endtable
+
+\section2 Known issues
+
+Performance of copying the contents of an OpenVG-rendered window to the
+screen needs platform-specific work in the QVGWindowSurface class.
+
+Clipping with arbitrary non-rectangular paths only works on engines that
+support vgRenderToMask(). Simple rectangular paths are supported on all
+engines that correctly implement vgMask().
+
+The paint engine is not yet thread-safe, so it is not recommended for use
+in threaded Qt applications that draw from multiple threads. Drawing should
+be limited to the main GUI thread.
+
+Performance of projective matrices for non-image drawing is not as good
+as for affine matrices.
+
+QPixmap's are implemented as VGImage objects so that they can be quickly
+rendered with drawPixmap(). Rendering into a QPixmap using QPainter will
+use the default Qt raster paint engine on a QImage copy of the QPixmap, and
+will not be accelerated. This issue may be addressed in a future version
+of the engine.
+
+ShivaVG support is highly experimental and limited to Qt/X11. It is
+provided as an example of how to integrate a non-EGL engine.
+
diff --git a/doc/src/platforms/emb-performance.qdoc b/doc/src/platforms/emb-performance.qdoc
new file mode 100644
index 000000000..ed290db00
--- /dev/null
+++ b/doc/src/platforms/emb-performance.qdoc
@@ -0,0 +1,152 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-performance.html
+ \title Qt Performance Tuning
+ \ingroup qtce
+ \ingroup qt-embedded-linux
+ \brief Ways to improve performance on embedded platforms.
+
+ When building embedded applications on low-powered devices,
+ \l{Qt for Windows CE} and \l{Qt for Embedded Linux} provide
+ a number of options that reduce the memory and/or CPU requirements
+ by making various trade-offs. These options range from variations
+ in programming style, to linking and memory allocation.
+
+ Note that the most direct way of saving resources, is to avoid compiling
+ in features that are not required. See the \l{Fine-Tuning Features in Qt}
+ {fine tuning features} documentation for details.
+
+ \tableofcontents
+
+ \section1 Programming Style
+
+ Rather than creating dialogs and widgets every time they are
+ needed, and delete them when they are no longer required, create
+ them once and use the QWidget::hide() and QWidget::show()
+ functions whenever appropriate. To avoid a slow startup of the
+ application, delay the creation of dialogs and widgets until they
+ are requested. All this will improve the CPU performance, it
+ requires a little more memory, but will be much faster.
+
+ \section1 Static vs. Dynamic Linking
+
+ A lot of CPU and memory is used by the ELF (Executable and Linking
+ Format) linking process. Significant savings can be achieved by
+ using a static build of the application suite; rather than having
+ a collection of executables which link dynamically to Qt's
+ libraries, all the applications is built into into a single
+ executable which is statically linked to Qt's libraries.
+
+ This improves the start-up time and reduces memory usage at the
+ expense of flexibility (to add a new application, you must
+ recompile the single executable) and robustness (if one
+ application has a bug, it might harm other applications).
+
+ \table 100%
+ \row
+ \o \bold {Creating a Static Build}
+
+ To compile Qt as a static library, use the \c -static option when
+ running configure:
+
+ \snippet doc/src/snippets/code/doc_src_emb-performance.qdoc 0
+
+ To build the application suite as an all-in-one application,
+ design each application as a stand-alone widget (or set of
+ widgets) with only minimal code in the \c main() function. Then,
+ write an application that provides a means of switching between
+ the applications. The \l Qt Extended platform is an example using this
+ approach: It can be built either as a set of dynamically linked
+ executables, or as a single static application.
+
+ Note that the application still should link dynamically against
+ the standard C library and any other libraries which might be used
+ by other applications on the target device.
+
+ \endtable
+
+ When installing end-user applications, this approach may not be an
+ option, but when building a single application suite for a device
+ with limited CPU power and memory, this option could be very
+ beneficial.
+
+ \section1 Alternative Memory Allocation
+
+ The libraries shipped with some C++ compilers on some platforms
+ have poor performance in the built-in "new" and "delete"
+ operators. Improved memory allocation and performance may be
+ gained by re-implementing these functions:
+
+ \snippet doc/src/snippets/code/doc_src_emb-performance.qdoc 1
+
+ The example above shows the necessary code to switch to the plain
+ C memory allocators.
+
+ \section1 Bypassing the Backing Store
+
+ When rendering, Qt uses the concept of a backing store; i.e., a
+ paint buffer, to reduce flicker and to support graphics operations
+ such as blending.
+
+ The default behavior is for each client to render
+ its widgets into memory while the server is responsible for
+ putting the contents of the memory onto the screen. But when the
+ hardware is known and well defined, as is often the case with
+ software for embedded devices, it might be useful to bypass the
+ backing store, allowing the clients to manipulate the underlying
+ hardware directly.
+ \if defined(qtce)
+ This is achieved by setting the Qt::WA_PaintOnScreen window attribute
+ for each widget.
+ \else
+
+ There are two approaches to direct painting: The first approach is
+ to set the Qt::WA_PaintOnScreen window attribute for each widget,
+ the other is to use the QDirectPainter class to reserve a region
+ of the framebuffer.
+ For more information, see the
+ \l{Qt for Embedded Linux Architecture#Direct Painting}{direct painting}
+ section of the \l{Qt for Embedded Linux Architecture}{architecture}
+ documentation.
+ \endif
+*/
diff --git a/doc/src/platforms/emb-pointer.qdoc b/doc/src/platforms/emb-pointer.qdoc
new file mode 100644
index 000000000..538711818
--- /dev/null
+++ b/doc/src/platforms/emb-pointer.qdoc
@@ -0,0 +1,209 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embedded-pointer.html
+
+ \title Qt for Embedded Linux Pointer Handling
+ \ingroup qt-embedded-linux
+
+ When running a \l{Qt for Embedded Linux} application, it either runs as a
+ server or connects to an existing server. The mouse driver is
+ loaded by the server application when it starts running, using
+ Qt's \l {How to Create Qt Plugins}{plugin system}.
+
+ Internally in the client/server protocol, all system generated
+ events, including pointer events, are passed to the server
+ application which then propagates the event to the appropriate
+ client. Note that pointer handling in \l{Qt for Embedded Linux} works for
+ both mouse and mouse-like devices such as touch panels and
+ trackballs.
+
+ Contents:
+
+ \tableofcontents
+
+ \section1 Available Drivers
+
+ \l{Qt for Embedded Linux} provides ready-made drivers for the MouseMan,
+ IntelliMouse, Microsoft and Linux Touch Panel protocols, for the
+ standard Linux Input Subsystem as well as the universal touch screen
+ library, tslib. Run the \c configure script to list the available
+ drivers:
+
+ \if defined(QTOPIA_PHONE)
+
+ \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 0
+
+ \bold{Note:} By default only the PC mouse driver is enabled.
+
+ The various drivers can be enabled and disabled using the \c
+ configure script. For example:
+
+ \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 1
+
+ \else
+
+ \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 2
+
+ In the default Qt configuration, only the "pc" mouse driver is
+ enabled. The various drivers can be enabled and disabled using
+ the \c configure script. For example:
+
+ \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 3
+ \endif
+
+ Custom mouse drivers can be implemented by subclassing the
+ QWSMouseHandler class and creating a mouse driver plugin (derived
+ from the QMouseDriverPlugin class). The default implementation of the
+ QMouseDriverFactory class will automatically detect the plugin,
+ loading the driver into the server application at run-time.
+
+ If you are creating a driver for a device that needs calibration
+ or noise reduction, such as a touchscreen, derive from the
+ QWSCalibratedMouseHandler subclass instead to take advantage of
+ its calibration functionality.
+
+ \if defined(QTOPIA_PHONE)
+ For a tutorial on how to add a new keyboard driver plug-in
+ see: \l {Tutorial: Implementing a Device Plug-in}.
+ \endif
+
+ \section1 Specifying a Driver
+
+ Provided that the "pc" mouse driver is enabled, \l{Qt for Embedded Linux} will
+ try to auto-detect the mouse device if it is one of the supported
+ types on \c /dev/psaux or one of the \c /dev/ttyS? serial
+ lines. If multiple mice are detected, all may be used
+ simultaneously.
+
+ Note that \l{Qt for Embedded Linux} does not support auto-detection of \e
+ {touch panels} in which case the driver must be specified
+ explicitly to determine which device to use.
+
+ To manually specify which driver to use, set the QWS_MOUSE_PROTO
+ environment variable. For example (if the current shell is bash,
+ ksh, zsh or sh):
+
+ \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 4
+
+ The valid values for the \c <driver> argument are \c MouseMan, \c
+ IntelliMouse, \c Microsoft, \c LinuxTP, \c LinuxInput, \c
+ Tslib and \l {QMouseDriverPlugin::keys()}{keys} identifying custom
+ drivers, and the driver specific options are typically a device,
+ e.g., \c /dev/mouse for mouse devices and \c /dev/ts for touch
+ panels.
+
+ Multiple mouse drivers can be specified in one go:
+
+ \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 5
+
+ Input will be read from all specified drivers.
+
+ \table
+ \header \o The Tslib Mouse Driver
+ \row
+ \o
+
+ The tslib mouse driver inherits the QWSCalibratedMouseHandler
+ class, providing calibration and noise reduction functionality in
+ addition to generating mouse events for devices using the
+ Universal Touch Screen Library.
+
+ To be able to compile this mouse handler, \l{Qt for Embedded Linux} must be
+ configured with the \c -qt-mouse-tslib option as described
+ above. In addition, the tslib headers and library must be present
+ in the build environment.
+
+ The tslib sources can be downloaded from \l
+ http://tslib.berlios.de. Use the \c configure script's -L and
+ -I options to explicitly specify the location of the library and
+ its headers:
+
+ \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 7
+
+ In order to use this mouse driver, tslib must also be correctly
+ installed on the target machine. This includes providing a \c
+ ts.conf configuration file and setting the neccessary environment
+ variables (see the README file provided with tslib for details).
+
+ The \c ts.conf file will usually contain the following two lines:
+
+ \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 8
+
+ To make \l{Qt for Embedded Linux} explicitly choose the tslib mouse
+ handler, set the QWS_MOUSE_PROTO environment variable as explained
+ above.
+
+ \endtable
+
+ \section1 Troubleshooting
+
+ \section2 Device Files
+
+ Make sure you are using the correct device file.
+
+ As a first step, you can test whether the device file actually gives any
+ output. For instance, if you have specified the mouse driver with
+ \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 9
+ then try examining
+ the output from the device by entering the following command in a console:
+ \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 10
+
+ If you see output from the device printed on the console when you move
+ the mouse, you are probably using the correct device file; otherwise, you
+ will need to experiment to find the correct device file.
+
+ \section2 File Permissions
+
+ Make sure you have sufficient permissions to access the device file.
+
+ The Qt for Embedded Linux server process needs at least read permission for the
+ device file. Some drivers also require write access to the device file.
+ For instance, if you have specified the mouse driver with
+ \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 11
+ then examine the permissions of the device file by entering the following
+ command in a console:
+ \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 12
+
+ If the device file is actually a symbolic link to another file, you must
+ change the permissions of the actual file instead.
+*/
diff --git a/doc/src/platforms/emb-porting.qdoc b/doc/src/platforms/emb-porting.qdoc
new file mode 100644
index 000000000..e04fafebd
--- /dev/null
+++ b/doc/src/platforms/emb-porting.qdoc
@@ -0,0 +1,193 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embedded-porting-operatingsystem.html
+
+ \title Porting Qt for Embedded Linux to Another Operating System
+ \ingroup qt-embedded-linux
+
+ \l{Qt for Embedded Linux} is reasonably platform-independent, making use of
+ the standard C library and some POSIX functions, but only a Linux
+ implementation is publically available. If you are looking for a
+ non-Linux commercial implementation, it is worth contacting \l
+ {mailto:qt-info@nokia.com}{qt-info@nokia.com} to see if we can
+ help.
+
+ There are several issues to be aware of if you plan to do your own
+ port to another operating system. In particular you must resolve
+ \l{Qt for Embedded Linux}'s shared memory and semaphores (used to share
+ window regions), and you must provide something similar to
+ Unix-domain sockets for inter-application communication. You must
+ also provide a screen driver, and if you want to implement sound
+ you must provide your own sound server. Finally you must modify
+ the event dispatcher used by \l{Qt for Embedded Linux}.
+
+ Contents:
+
+ \tableofcontents
+
+ \section1 Shared Memory and Semaphores
+
+ \l{Qt for Embedded Linux} uses System V IPC (shared memory and semaphores)
+ to share window regions between client and server. When porting,
+ something similar must be provided; otherwise it will not be
+ possible to run multiple applications.
+
+ System V semaphores are also used for synchronizing access to the
+ framebuffer.
+
+ \list
+ \o Modify \c qsharedmemory_p.cpp
+ \o Modify \c qlock_qws.cpp
+ \o Modify \c qwslock.cpp
+ \endlist
+
+ \section1 Inter-Application Communication
+
+ To communicate between applications, \l{Qt for Embedded Linux} uses the
+ Unix-domain sockets. When porting, something similar must be
+ provided; otherwise it will not be possible to run multiple
+ applications.
+
+ It should be possible to use message queues or similar mechanisms
+ to achieve this. With the exception of QCOP messages, individual
+ messages should be no more than a few bytes in length (QCOP
+ messages are generated by the client applications and not Qt for
+ Embedded Linux).
+
+ \list
+ \o Modify \c qwssocket_qws.cpp
+ \endlist
+
+ \section1 Screen Management
+
+ When rendering, the default behavior in \l{Qt for Embedded Linux} is
+ for each client to render its widgets into memory while the server is
+ responsible for putting the contents of the memory onto the screen
+ using the screen driver.
+
+ When porting, a new screen driver must be implemented, providing a
+ byte pointer to a memory-mapped framebuffer and information about
+ width, height and bit depth (the latter information can most
+ likely be hard-coded).
+
+ \list
+ \o Reimplement \c qscreen_qws.cpp
+ \endlist
+
+ \section1 Sound Management
+
+ To implement sound, \l{Qt for Embedded Linux} uses a Linux style device (\c
+ /dev/dsp). If you want to use the \l{Qt for Embedded Linux} sound server on
+ another platform you must reimplement it.
+
+ \list
+ \o Reimplement \c qsoundqss_qws.cpp
+ \endlist
+
+ \section1 Event Dispatching
+
+ \l{Qt for Embedded Linux} uses an event dispatcher to pass events to and
+ from the \l{Qt for Embedded Linux} server application. Reimplement the \c
+ select() function to enable \l{Qt for Embedded Linux} to dispatch events on
+ your platform.
+
+ \list
+ \o Modify \c qeventdispatcher_qws.cpp
+ \endlist
+*/
+
+/*!
+ \page qt-embedded-porting-device.html
+
+ \title Porting Qt for Embedded Linux to a New Architecture
+ \ingroup qt-embedded-linux
+
+ When porting \l{Qt for Embedded Linux} to a new architecture there are
+ several issues to be aware of: You must provide suitable hardware
+ drivers, and you must ensure to implement platform dependent
+ atomic operations to enable multithreading on the new
+ architecture.
+
+ \section1 Hardware Drivers
+
+ When running a \l{Qt for Embedded Linux} application, it either runs as a
+ server or connects to an existing server. All system generated
+ events, including keyboard and mouse events, are passed to the
+ server application which then propagates the event to the
+ appropriate client. When rendering, the default behavior is for
+ each client to render its widgets into memory while the server is
+ responsible for putting the contents of the memory onto the
+ screen.
+
+ The various hardware drivers are loaded by the server
+ application when it starts running, using Qt's \l {How to Create
+ Qt Plugins}{plugin system}.
+
+ Derive from the QWSMouseHandler, QWSKeyboardHandler and QScreen
+ classes to create a custom mouse, keyboard and screen driver
+ respectively. To load the drivers into the server application at
+ runtime, you must also create corresponding plugins. See the
+ following documentation for more details:
+
+ \list
+ \o \l{Qt for Embedded Linux Pointer Handling}{Pointer Handling}
+ \o \l{Qt for Embedded Linux Character Input}{Character Input}
+ \o \l{Qt for Embedded Linux Display Management}{Display Management}
+ \endlist
+
+ \section1 Atomic Operations
+
+ Qt uses an optimization called \l {Implicitly Shared Classes}{implicit sharing}
+ for many of its value classes; implicitly shared classes can safely be
+ copied across threads. This technology is implemented using atomic
+ operations; i.e., \l{Qt for Embedded Linux} requires that platform-specific
+ atomic operations are implemented to support Linux.
+
+ When porting \l{Qt for Embedded Linux} to a new architecture, it is
+ important to ensure that the platform-specific atomic operations
+ are implemented in a corresponding header file, and that this file
+ is located in Qt's \c src/corelib/arch directory.
+
+ See the \l {Implementing Atomic Operations}{atomic operations}
+ documentation for more details.
+*/
diff --git a/doc/src/platforms/emb-qvfb.qdoc b/doc/src/platforms/emb-qvfb.qdoc
new file mode 100644
index 000000000..ae37c3aaa
--- /dev/null
+++ b/doc/src/platforms/emb-qvfb.qdoc
@@ -0,0 +1,296 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qvfb.html
+
+ \title The Virtual Framebuffer
+ \ingroup qt-embedded-linux
+
+ \l{Qt for Embedded Linux} applications write directly to the
+ framebuffer, eliminating the need for the X Window System and
+ saving memory. For development and debugging purposes, a virtual
+ framebuffer can be used, allowing \l{Qt for Embedded Linux}
+ programs to be developed on a desktop machine, without switching
+ between consoles and X11.
+
+ QVFb is an X11 application supplied with Qt for X11 that provides
+ a virtual framebuffer for Qt for Embedded Linux to use. To use it,
+ you need to \l{Installing Qt on X11 Platforms}{configure and
+ install Qt on X11 platforms} appropriately. Further requirements
+ can be found in the \l{Qt for Embedded Linux Requirements}
+ document.
+
+ \image qt-embedded-virtualframebuffer.png
+
+ The virtual framebuffer emulates a framebuffer using a shared
+ memory region and the \c qvfb tool to display the framebuffer in a
+ window. The \c qvfb tool also supports a feature known as a skin
+ which can be used to change the look and feel of the display. The
+ tool is located in Qt's \c tools/qvfb directory, and provides
+ several additional features accessible through its \gui File and
+ \gui View menus.
+
+ Please note that the virtual framebuffer is a development tool
+ only. No security issues have been considered in the virtual
+ framebuffer design. It should be avoided in a production
+ environment; i.e. do not configure production libraries with the
+ \c -qvfb option.
+
+ \tableofcontents
+
+ \section1 Displaying the Virtual Framebuffer
+
+ To run the \c qvfb tool displaying the virtual framebuffer, the
+ \l{Qt for Embedded Linux} library must be configured and compiled
+ with the \c -qvfb option:
+
+ \snippet doc/src/snippets/code/doc_src_emb-qvfb.qdoc 0
+
+ Ensure that you have all the
+ \l{Qt for Embedded Linux Requirements#Additional X11 Libraries for QVFb}
+ {necessary libraries} needed to build the tool, then compile and run the
+ \c qvfb tool as a normal Qt for X11 application (i.e., do \e not compile
+ it as a \l{Qt for Embedded Linux} application):
+
+ \snippet doc/src/snippets/code/doc_src_emb-qvfb.qdoc 1
+
+ The \c qvfb application supports the following command line
+ options:
+
+ \table
+ \header \o Option \o Description
+ \row
+ \o \c {-width <value>}
+ \o The width of the virtual framebuffer (default: 240).
+ \row
+ \o \c {-height <value>}
+ \o The height of the virtual framebuffer (default: 320).
+ \row
+ \o \c {-depth <value>}
+ \o The depth of the virtual framebuffer (1, 8 or 32; default: 8).
+ \row
+ \o \c -nocursor
+ \o Do not display the X11 cursor in the framebuffer window.
+ \row
+ \o \c {-qwsdisplay <:id>}
+ \o The \l{Qt for Embedded Linux} display ID (default: 0).
+ \row
+ \o \c {-skin <name>.skin}
+ \o The preferred skin. Note that the skin must be located in Qt's
+ \c /tools/qvfb/ directory.
+ \row
+ \o \c {-zoom <factor>}
+ \o Scales the application view with the given factor.
+
+ \endtable
+
+ \section2 Skins
+
+ A skin is a set of XML and pixmap files that tells the vitual
+ framebuffer what it should look like and how it should behave; a
+ skin can change the unrealistic default display into a display
+ that is similar to the target device. To access the \c qvfb tool's
+ menus when a skin is activated, right-click over the display.
+
+ Note that a skin can have buttons which (when clicked) send
+ signals to the Qt Extended application running inside the virtual
+ framebuffer, just as would happen on a real device.
+
+ \table 100%
+ \row
+ \o
+ \bold {Target Device Environment}
+
+ The \c qvfb tool provides various skins by default, allowing
+ the user to view their application in an environment similar
+ to their target device. The provided skins are:
+
+ \list
+ \o ClamshellPhone
+ \o pda
+ \o PDAPhone
+ \o Qt ExtendedPDA
+ \o Qt ExtendedPhone-Advanced
+ \o Qt ExtendedPhone-Simple
+ \o SmartPhone
+ \o SmartPhone2
+ \o SmartPhoneWithButtons
+ \o TouchscreenPhone
+ \o Trolltech-Keypad
+ \o Trolltech-Touchscreen
+ \endlist
+
+ In addition, it is possible to create custom skins.
+
+ \o \image qt-embedded-phone.png
+ \o \image qt-embedded-pda.png
+ \endtable
+
+ \bold {Creating Custom Skins}
+
+ The XML and pixmap files specifying a custom skin must be located
+ in subdirectory of the Qt's \c /tools/qvfb directory, called \c
+ /customskin.skin. See the ClamshellPhone skin for an example of the
+ file structure:
+
+ \snippet doc/src/snippets/code/doc_src_emb-qvfb.qdoc 2
+
+ The \c /ClamshellPhone.skin directory contains the following files:
+
+ \list
+ \o \c ClamshellPhone.skin
+ \o \c ClamshellPhone1-5.png
+ \o \c ClamshellPhone1-5-pressed.png
+ \o \c ClamshellPhone1-5-closed.png
+ \o \c defaultbuttons.conf (only necessary for \l Qt Extended)
+ \endlist
+
+ Note that the \c defaultbuttons.conf file is only necessary if the
+ skin is supposed to be used with \l Qt Extended (The file customizes
+ the launch screen applications, orders the soft keys and provides
+ input method hints). See the \l Qt Extended documentation for more
+ information.
+
+ \table 100%
+ \header
+ \o {3,1} The ClamshellPhone Skin
+ \row
+ \o {3,1}
+
+ \snippet doc/src/snippets/code/doc_src_emb-qvfb.qdoc 3
+
+ The \c ClamShellPhone.skin file quoted above, specifies three
+ pixmaps: One for the normal skin (\c Up), one for the activated
+ skin (\c Down) and one for the closed skin (\c Closed). In
+ addition, it is possible to specify a pixmap for the cursor (using
+ a \c Cursor variable).
+
+ The file also specifies the screen size (\c Screen) and the number
+ of available buttons (\c Areas). Then it describes the buttons
+ themselves; each button is specified by its name, keycode and
+ coordinates.
+
+ The coordinates are a list of at least 2 points in clockwise order
+ that define a shape for the button; a click inside this shape will
+ be treated as a click on that button. While pressed, the pixels
+ for the button are redrawn from the activated skin.
+
+ \row
+ \row
+ \o
+ \image qt-embedded-clamshellphone-closed.png The ClamshellPhone Skin (closed)
+ \o
+ \image qt-embedded-clamshellphone.png The ClamshellPhone Skin
+ \o
+ \image qt-embedded-clamshellphone-pressed.png The ClamshellPhone Skin (pressed)
+ \row
+ \o \c ClamshellPhone1-5-closed.png
+ \o \c ClamshellPhone1-5.png
+ \o \c ClamshellPhone1-5-pressed.png
+ \endtable
+
+ \section2 The File Menu
+
+ \image qt-embedded-qvfbfilemenu.png
+
+ The \gui File menu allows the user to configure the virtual
+ framebuffer display (\gui File|Configure...), save a snapshot of
+ the framebuffer contents (\gui {File|Save Image...}) and record
+ the movements in the framebuffer (\gui File|Animation...).
+
+ When choosing the \gui File|Configure menu item, the \c qvfb tool
+ provides a configuration dialog allowing the user to customize the
+ display of the virtual framebuffer. The user can modify the size
+ and depth as well as the Gamma values, and also select the
+ preferred skin (i.e. making the virtual framebuffer simulate the
+ target device environment). In addition, it is possible to emulate
+ a touch screen and a LCD screen.
+
+ Note that when configuring (except when changing the Gamma values
+ only), any applications using the virtual framebuffer will be
+ terminated.
+
+ \section2 The View Menu
+
+ \image qt-embedded-qvfbviewmenu.png
+
+ The \gui View menu allows the user to modify the target's refresh
+ rate (\gui {View|Refresh Rate...}), making \c qvfb check for
+ updated regions more or less frequently.
+
+ The regions of the display that have changed are updated
+ periodically, i.e. the virtual framebuffer is displaying discrete
+ snapshots of the framebuffer rather than each individual drawing
+ operation. For this reason drawing problems such as flickering may
+ not be apparent until the program is run using a real framebuffer.
+ If little drawing is being done, the framebuffer will not show any
+ updates between drawing events. If an application is displaying an
+ animation, the updates will be frequent, and the application and
+ \c qvfb will compete for processor time.
+
+ The \gui View menu also allows the user to zoom the view of the
+ application (\gui {View|Zoom *}).
+
+ \section1 Running Applications Using the Virtual Framebuffer
+
+ Once the virtual framebuffer (the \c qvfb application) is running,
+ it is ready for use: Start a server application (i.e. construct a
+ QApplication object with the QApplication::GuiServer flag or use
+ the \c -qws command line parameter. See the
+ \l {Running Qt for Embedded Linux Applications}{running applications}
+ documentation for details). For example:
+
+ \snippet doc/src/snippets/code/doc_src_emb-qvfb.qdoc 4
+
+ Note that as long as the virtual framebuffer is running and the
+ current \l{Qt for Embedded Linux} configuration supports \c qvfb,
+ \l{Qt for Embedded Linux} will automatically detect it and use it by
+ default. Alternatively, the \c -display option can be used to
+ specify the virtual framebuffer driver. For example:
+
+ \snippet doc/src/snippets/code/doc_src_emb-qvfb.qdoc 5
+
+ \warning If \c qvfb is not running (or the current
+ \l{Qt for Embedded Linux} configuration doesn't support it) and the
+ driver is not explicitly specified, \l{Qt for Embedded Linux} will
+ write to the real framebuffer and the X11 display will be corrupted.
+*/
diff --git a/doc/src/platforms/emb-running.qdoc b/doc/src/platforms/emb-running.qdoc
new file mode 100644
index 000000000..06ef2fc32
--- /dev/null
+++ b/doc/src/platforms/emb-running.qdoc
@@ -0,0 +1,210 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embedded-running.html
+
+ \title Running Qt for Embedded Linux Applications
+ \ingroup qt-embedded-linux
+
+ A \l{Qt for Embedded Linux} application requires a server application to be
+ running, or to be the server application itself. Any \l{Qt for Embedded Linux}
+ application can be the server application by constructing the QApplication
+ object with the QApplication::GuiServer type, or by running the application
+ with the \c -qws command line option.
+
+ Applications can run using both single and multiple displays, and
+ various command line options are available.
+
+ Note that this document assumes that you either are using the
+ \l{The Virtual Framebuffer} or that you are running \l{Qt for Embedded Linux}
+ using the \l {The VNC Protocol and Qt for Embedded Linux}{VNC} protocol,
+ \e or that you have the Linux framebuffer configured
+ correctly and that no server process is running. (To test that the
+ Linux framebuffer is set up correctly, use the program provided by
+ the \l {Testing the Linux Framebuffer} document.)
+
+ \tableofcontents
+
+ \section1 Using a Single Display
+
+ To run the application using a single display, change to a Linux
+ console and select an application to run, e.g. \l {Text
+ Edit}{demos/textedit}. Run the application with the \c -qws
+ option:
+
+ \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 0
+
+ \table 100%
+ \row
+ \o
+ Provided that the environment variables are adjusted properly
+ during the \l {Installing Qt on Embedded Linux}{installation process}, you
+ should see the \l {Text Edit} demo appear.
+
+ It might be that the hardware drivers must be specified explicitly
+ to make everything work properly. For more information, please
+ consult the following documentation:
+
+ \list
+ \o \l{Qt for Embedded Linux Pointer Handling}{Pointer Handling}
+ \o \l{Qt for Embedded Linux Character Input}{Character Input}
+ \o \l{Qt for Embedded Linux Display Management}{Display Management}
+ \endlist
+
+ \o
+ \inlineimage qt-embedded-runningapplication.png
+ \endtable
+
+ Additional applications can be run as clients, i.e., by running
+ these applications \e without the \c -qws option they will connect
+ to the existing server as clients. You can exit the server
+ application at any time using \gui{Ctrl+Alt+Backspace}.
+
+ \section1 Using Multiple Displays
+
+ Qt for Embedded Linux also allows multiple displays to be used
+ simultaneously. There are two ways of achieving this: Either run
+ multiple Qt for Embedded Linux server processes, or use the
+ ready-made \c Multi screen driver.
+
+ When running multiple server processes, the screen driver (and
+ display number) must be specified for each process using the \c
+ -display command line option or by setting the QWS_DISPLAY
+ environment variable. For example:
+
+ \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 1
+
+ See the \l {Qt for Embedded Linux Display Management}{display management}
+ documentation for more details on how to specify a screen
+ driver. Note that you must also specify the display (i.e., server
+ process) when starting client applications:
+
+ \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 2
+
+ There is no way of moving a client from one display to another
+ when running multiple server processes. Using the \c Multi screen
+ driver, on the other hand, applications can easiliy be moved
+ between the various screens.
+
+ The \c Multi screen driver can be specified just like any other
+ screen driver by using the \c -display command line option or by
+ setting the QWS_DISPLAY environment variable. For example:
+
+ \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 3
+
+ See the \l {Qt for Embedded Linux Display Management}{display management}
+ documentation for details regarding arguments.
+
+ \section1 Command Line Options
+
+ \table 100%
+ \header
+ \o Option \o Description
+ \row
+ \o \bold -fn <font>
+ \o
+ Defines the application font. For example:
+ \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 4
+ The font should be specified using an X logical font description.
+ \row
+ \o \bold -bg <color>
+ \o
+ Sets the default application background color. For example:
+ \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 5
+ The color-name must be one of the names recognized by the QColor constructor.
+ \row
+ \o \bold -btn <color> \o
+ Sets the default button color. For example:
+ \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 6
+ The color-name must be one of the names recognized by the QColor constructor.
+ \row
+ \o \bold -fg <color> \o
+ Sets the default application foreground color. For example:
+ \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 7
+ The color-name must be one of the names recognized by the QColor constructor.
+ \row
+ \o \bold -name <objectname> \o
+ Sets the application name, i.e. the application object's object name. For example:
+ \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 8
+ \row
+ \o \bold -title <title> \o
+ Sets the application's title. For example:
+ \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 9
+ \row
+ \o \bold -geometry <width>x<height>+<Xoffset>+<Yoffset> \o
+ Sets the client geometry of the first window that is shown. For example:
+ \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 10
+ \row
+ \o \bold -keyboard \o
+ Enables the keyboard.
+
+ See also: \l {Qt for Embedded Linux Character Input}.
+ \row
+ \o \bold -nokeyboard \o
+ Disables the keyboard.
+ \row
+ \o \bold -mouse \o
+ Enables the mouse cursor.
+
+ See also: \l {Qt for Embedded Linux Pointer Handling}.
+ \row
+ \o \bold -nomouse \o
+ Disables the mouse cursor.
+ \row
+ \o \bold -qws \o
+ Runs the application as a server application, i.e. constructs a
+ QApplication object of the QApplication::GuiServer type.
+ \row
+ \o \bold -display \o
+ Specifies the screen driver.
+
+ See also: \l {Qt for Embedded Linux Display Management}.
+ \row
+ \o \bold -decoration <style>\o
+ Sets the application decoration. For example:
+ \snippet doc/src/snippets/code/doc_src_emb-running.qdoc 11
+ The supported styles are \c windows, \c default and \c styled.
+
+ See also QDecoration.
+
+ \endtable
+*/
diff --git a/doc/src/platforms/emb-vnc.qdoc b/doc/src/platforms/emb-vnc.qdoc
new file mode 100644
index 000000000..4fa5b6139
--- /dev/null
+++ b/doc/src/platforms/emb-vnc.qdoc
@@ -0,0 +1,141 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-embedded-vnc.html
+ \brief A guide to using Qt for Embedded Linux applications as VNC servers
+ and clients.
+
+ \title The VNC Protocol and Qt for Embedded Linux
+ \ingroup qt-embedded-linux
+
+ VNC (Virtual Network Computing) software makes it possible to view
+ and interact with one computer (the "server") from any other
+ computer or mobile device (the "viewer") anywhere on a network.
+
+ \image qt-embedded-vnc-screen.png
+
+ VNC clients are available for a vast array of display systems, including
+ X11, Mac OS X and Windows.
+
+ \section1 Configuring Qt with VNC Capabilities
+
+ To run a \l{Qt for Embedded Linux} application using the VNC protocol, the
+ \l{Qt for Embedded Linux} library must be configured and compiled with the
+ \c -qt-gfx-vnc option:
+
+ \snippet doc/src/snippets/code/doc_src_emb-vnc.qdoc 0
+
+ \section1 Running a Server Application
+
+ Start a server application by specifying the \c -qws command
+ line option when running the application. (This can also be
+ specified in the application's source code.)
+ Use the \c -display command line option to specify the VNC server's
+ driver and the virtual screen to use. For example:
+
+ \snippet doc/src/snippets/code/doc_src_emb-vnc.qdoc 1
+
+ The application will act as a VNC server which can be accessed using
+ an ordinary VNC client, either on the development machine or from a
+ different machine on a network.
+
+ For example, using the X11 VNC client to view the application from the
+ same machine:
+
+ \snippet doc/src/snippets/code/doc_src_emb-vnc.qdoc 2
+
+ To interact with the application from another machine on the network,
+ run a VNC client pointing to the machine that is running the server
+ application.
+
+ \l{Qt for Embedded Linux} will create a 640 by 480 pixel display by
+ default. Alternatively, the \c QWS_SIZE environment variable can be
+ used to set another size; e.g., \c{QWS_SIZE=240x320}.
+
+ \section1 Running Client Applications
+
+ If you want to run more than one application on the same display, you
+ only need to start the first one as a server application, using the
+ \c -qws command line option to indicate that it will manage other
+ windows.
+
+ \snippet doc/src/snippets/code/doc_src_emb-vnc.qdoc Starting server
+
+ Subsequent client applications can be started \e without the \c -qws
+ option, but will each require the same \c -display option and argument
+ as those used for the server.
+
+ \snippet doc/src/snippets/code/doc_src_emb-vnc.qdoc Starting clients
+
+ However, for the clients, this option will not cause a new VNC server
+ to be started, but only indicates that their windows will appear on the
+ virtual screen managed by the server application.
+
+ \section1 Related Resources
+
+ It is not always necessary to specify the \c -qws command line option
+ when running a server application as long as the QApplication object
+ used by the application has been constructed with the
+ QApplication::GuiServer flag.
+
+ See the \l{Running Qt for Embedded Linux Applications}{running applications}
+ documentation for more details about server and client applications.
+
+ \table
+ \row
+ \o \bold {The Virtual Framebuffer}
+
+ The \l{The Virtual Framebuffer}{virtual framebuffer} is
+ an alternative technique recommended for development and debugging
+ purposes.
+
+ The virtual framebuffer emulates a framebuffer using a shared
+ memory region and the \c qvfb tool to display the framebuffer in a
+ window.
+
+ Its use of shared memory makes the virtual framebuffer much faster
+ and smoother than using the VNC protocol, but it does not operate
+ over a network.
+
+ \o \inlineimage qt-embedded-virtualframebuffer.png
+ \endtable
+*/
diff --git a/doc/src/platforms/mac-differences.qdoc b/doc/src/platforms/mac-differences.qdoc
new file mode 100644
index 000000000..5e15a75b5
--- /dev/null
+++ b/doc/src/platforms/mac-differences.qdoc
@@ -0,0 +1,339 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 mac-differences.html
+ \title Qt for Mac OS X - Specific Issues
+ \brief A description of issues with Qt that are specific to Mac OS X.
+ \ingroup platform-specific
+
+ This file outlines known issues and possible workarounds when
+ using Qt on Mac OS X. Contact Qt's technical support team if you find
+ additional issues which are not covered here. (See also the
+ document \l{qtmac-as-native.html} {Qt is Mac OS X Native}.)
+
+ \tableofcontents
+
+ \section1 GUI Applications
+
+ Mac OS X handles most applications as "bundles". A bundle is a
+ directory structure that groups related files together (e.g.,
+ widgets.app/). GUI applications in particular must be run from a
+ bundle or by using the open(1), because Mac OS X needs the bundle
+ to dispatch events correctly, as well as for accessing the menu
+ bar.
+
+ If you are using older versions of GDB you must run with the full
+ path to the executable. Later versions allow you to pass the
+ bundle name on the command line.
+
+ \section1 Painting
+
+ Mac OS X always double buffers the screen so the
+ Qt::WA_PaintOnScreen attribute has no effect. Also it is
+ impossible to paint outside of a paint event so
+ Qt::WA_PaintOutsidePaintEvent has no effect either.
+
+ \section1 Library Support
+
+ \section2 Qt libraries as frameworks
+
+ By default, Qt is built as a set of frameworks. Frameworks is the
+ Mac OS X "preferred" way of distributing libraries. There are
+ definite advantages to using them. See
+ \l{http://developer.apple.com/documentation/MacOSX/Conceptual/BPFrameworks/index.html}
+ {Apple's Framework Programming Guide} for more information.
+
+ In general, this shouldn't be an issue because qmake takes care of
+ the specifics for you. The
+ \l{http://developer.apple.com/documentation/MacOSX/Conceptual/BPFrameworks/index.html}
+ {Framework Programming Guide} discusses issues to keep in mind
+ when choosing frameworks over the more typical, dynamic libraries.
+ However, one point to remember is: \bold {Frameworks always link
+ with "release" versions of libraries}.
+
+ If you actually want to use a \e{debug} version of a Qt framework,
+ you must ensure that your application actually loads that debug
+ version. This is often done by using the DYLD_IMAGE_SUFFIX
+ environment variables, but that way often doesn't work so well.
+ Instead, you can temporarily swap your debug and release versions,
+ which is documented in
+ \l{http://developer.apple.com/technotes/tn2004/tn2124.html#SECJUSTONELIB}
+ {Apple's "Debugging Magic" technical note}.
+
+ If you don't want to use frameworks, simply configure Qt with
+ \c{-no-framework}.
+
+ \section2 Bundle-Based Libraries
+
+ If you want to use some dynamic libraries in your Mac OS X
+ application bundle (the application directory), create a
+ subdirectory named "Frameworks" in the application bundle
+ directory and place your dynamic libraries there. The application
+ will find a dynamic library if it has the install name
+ \e{@executable_path/../Frameworks/libname.dylib}.
+
+ If you use \c qmake and Makefiles, use the \c QMAKE_LFLAGS_SONAME setting:
+
+ \snippet doc/src/snippets/code/doc_src_mac-differences.qdoc 0
+
+ Alternatively, you can modify the install name using the
+ install_name_tool(1) on the command line. See its manpage for more
+ information.
+
+ Note that the \c DYLD_LIBRARY_PATH environment variable will
+ override these settings, and any other default paths, such as a
+ lookup of dynamic libraries inside \c /usr/lib and similar default
+ locations.
+
+ \section2 Combining Libraries
+
+ If you want to build a new dynamic library combining the Qt 4
+ dynamic libraries, you need to introduce the \c{ld -r} flag. Then
+ relocation information is stored in the output file, so that
+ this file could be the subject of another \c ld run. This is done
+ by setting the \c -r flag in the \c .pro file, and the \c LFLAGS
+ settings.
+
+ \section2 Initialization Order
+
+ dyld(1) calls global static initializers in the order they are
+ linked into your application. If a library links against Qt and
+ references globals in Qt (from global initializers in your own
+ library), be sure to link your application against Qt before
+ linking it against the library. Otherwise the result will be
+ undefined because Qt's global initializers have not been called
+ yet.
+
+ \section1 Compile-Time Flags
+
+ The follewing flags are helpful when you want to define Mac OS X specific
+ code:
+
+ \list
+
+ \o Q_OS_DARWIN is defined when Qt detects you are on a
+ Darwin-based system (including the Open Source version)
+
+ \o Q_WS_MAC is defined when the Mac OS X GUI is present.
+
+ \o QT_MAC_USE_COCOA is defined when Qt is built to use the Cocoa framework.
+ If it is not present, then Qt is using Carbon.
+
+ \endlist
+
+ A additional flag, Q_OS_MAC, is defined as a convenience whenever
+ Q_OS_DARWIN is defined.
+
+ If you want to define code for specific versions of Mac OS X, use
+ the availability macros defined in /usr/include/AvailabilityMacros.h.
+
+ See QSysInfo for information on runtime version checking.
+
+ \section1 Mac OS X Native API Access
+
+ \section2 Accessing the Bundle Path
+
+ The Mac OS X application is actually a directory (ending with \c
+ .app). This directory contains sub-directories and files. It may
+ be useful to place items (e.g. plugins, online-documentation,
+ etc.) inside this bundle. You might then want to find out where
+ the bundle resides on the disk. The following code returns the
+ path of the application bundle:
+
+ \snippet doc/src/snippets/code/doc_src_mac-differences.qdoc 1
+
+ Note: When OS X is set to use Japanese, a bug causes this sequence
+ to fail and return an empty string. Therefore, always test the
+ returned string.
+
+ For more information about using the CFBundle API, see
+ \l{http://developer.apple.com/documentation/CoreFoundation/Reference/CFBundleRef/index.html}
+ {Apple's Developer Website}.
+
+ \section2 Translating the Application Menu and Native Dialogs
+
+ The items in the Application Menu will be merged correctly for
+ your localized application, but they will not show up translated
+ until you
+ \l{http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFBundles/Concepts/BundleAnatomy.html#//apple_ref/doc/uid/20001119-105003-BAJFDAAG}
+ {add a localized resource folder} to the application bundle.
+ The main thing you need to do is create a file called
+ locversion.plist. Here is an example for Norwegian:
+
+ \snippet doc/src/snippets/code/doc_src_mac-differences.qdoc 2
+
+ Now when you run the application with your preferred language set
+ to Norwegian, you should see menu items like "Avslutt" instead of
+ "Quit".
+
+ \section1 User Interface
+
+ \section2 Right-Mouse Clicks
+
+ If you want to provide right-mouse click support for Mac OS X, use
+ the QContextMenuEvent class. This will map to a context menu
+ event, i.e., a menu that will display a pop-up selection. This is
+ the most common use of right-mouse clicks, and maps to a
+ control-click with the Mac OS X one-button mouse support.
+
+ \section2 Menu Bar
+
+ Qt will automatically detect your menu bars for you and turn
+ them into Mac native menu bars. Fitting this into your existing Qt
+ application will normally be automatic. However, if you have
+ special needs, the Qt implementation currently selects a menu
+ bar by starting at the active window
+ (i.e. QApplication::activeWindow()) and applying the following
+ tests:
+
+ \list 1
+
+ \i If the window has a QMenuBar, then it is used.
+
+ \i If the window is modal, then its menu bar is used. If no menu
+ bar is specified, then a default menu bar is used (as
+ documented below).
+
+ \i If the window has no parent, then the default menu bar is used
+ (as documented below).
+
+ \endlist
+
+ These tests are followed all the way up the parent window chain
+ until one of the above rules is satisifed. If all else fails, a
+ default menu bar will be created. Note the default menu bar on
+ Qt is an empty menu bar. However, you can create a different
+ default menu bar by creating a parentless QMenuBar. The first one
+ created will be designated the default menu bar and will be used
+ whenever a default menu bar is needed.
+
+ Note that using native menu bars introduces certain limitations on
+ Qt classes. See the \l{#Limitations}{list of limitations} below
+ for more information about these.
+
+ \section2 Special Keys
+
+ To provide the expected behavior for Qt applications on Mac OS X,
+ the Qt::Meta, Qt::MetaModifier, and Qt::META enum values
+ correspond to the Control keys on the standard Macintosh keyboard,
+ and the Qt::Control, Qt::ControlModifier, and Qt::CTRL enum values
+ correspond to the Command keys.
+
+ \section1 Limitations
+
+ \section2 Menu Actions
+
+ \list
+
+ \o Actions in a QMenu with accelerators that have more than one
+ keystroke (QKeySequence) will not display correctly, when the
+ QMenu is translated into a Mac native menu bar. The first key
+ will be displayed. However, the shortcut will still be
+ activated as on all other platforms.
+
+ \o QMenu objects used in the native menu bar are not able to
+ handle Qt events via the normal event handlers.
+ For Carbon, you will have to install a Carbon event handler on
+ the menu bar in order to receive Carbon events that are similar
+ to \l{QMenu::}{showEvent()}, \l{QMenu::}{hideEvent()}, and
+ \l{QMenu::}{mouseMoveEvent()}. For Cocoa, you will have to
+ install a delegate on the menu itself to be notified of these
+ changes. Alternatively, consider using the QMenu::aboutToShow()
+ and QMenu::aboutToHide() signals to keep track of menu visibility;
+ these provide a solution that should work on all platforms
+ supported by Qt.
+
+ \endlist
+
+ \section2 Native Widgets
+
+ Qt has support for sheets and drawers, represented in the
+ window flags by Qt::Sheet and Qt::Drawer respectiviely. Brushed
+ metal windows can also be created by using the
+ Qt::WA_MacMetalStyle window attribute.
+
+*/
+
+/*!
+ \page qt-mac-cocoa-licensing.html
+
+ \title Contributions to the Following QtGui Files: qapplication_cocoa_p.h, qapplication_mac.mm, qdesktopwidget_mac.mm qeventdispatcher_mac.mm qeventdispatcher_mac_p.h qmacincludes_mac.h qt_cocoa_helpers.mm qt_cocoa_helpers_p.h qwidget_mac.mm qsystemtrayicon_mac.mm
+
+ \contentspage {Other Licenses Used in Qt}{Contents}
+
+ \ingroup licensing
+ \brief License information for contributions by Apple, Inc. to specific parts of the Qt/Mac Cocoa port.
+
+ \legalese
+
+ Copyright (C) 2007-2008, Apple, Inc.
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ \list
+ \o Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ \o 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.
+ \o Neither the name of Apple, Inc. nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+ \endlist
+
+ 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.
+
+ \endlegalese
+*/
diff --git a/doc/src/platforms/platform-notes-rtos.qdoc b/doc/src/platforms/platform-notes-rtos.qdoc
new file mode 100644
index 000000000..6bb247ef9
--- /dev/null
+++ b/doc/src/platforms/platform-notes-rtos.qdoc
@@ -0,0 +1,261 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 platform-notes-vxworks.html
+ \title Platform Notes - VxWorks
+ \contentspage Platform Notes
+ \target VxWorks
+
+ \note VxWorks is a community supported platform. See the
+ \l{Supported Platforms} page for more information.
+
+ This page contains information about the Qt for VxWorks port. More
+ information about the combinations of platforms and compilers supported
+ by Qt can be found on the \l{Supported Platforms} page.
+
+ \tableofcontents
+
+ \section1 Supported Versions
+
+ Qt has been tested on WindRiver VxWorks 6.7 in kernel mode using the
+ vendor supplied GCC compiler, targetting both the x86 simulator
+ (simpentium) and Power-PC devices (ppc).
+ VxWorks' RTP mode is currently not supported.
+
+ \section1 Limitations
+
+ The VxWorks kernel has an optional POSIX compatibility layer, but this
+ layer does not implement all POSIX functionality needed for a complete
+ Qt port.
+
+ \table
+ \header \o Function \o Notes
+ \row \o QProcess
+ \o Not available - VxWorks has no concept of processes.
+ \row \o QSharedMemory
+ \o Not available - VxWorks has only a global, flat address space.
+ \row \o QSystemSemaphore
+ \o Not available - VxWorks has no concept of processes.
+ \row \o QLibrary
+ \o QLibrary is only a small stub to make it possible to build
+ static plugins.
+ \row \o QCoreApplication
+ \o Can only be instantiated once. Qt's Q(CoreE)Application is
+ tightly coupled to one address space and process, while VxWorks
+ only supports one global address space and has no concept of
+ processes.
+ \row \o Phonon
+ \o There is no standard audio backend, which could be integrated into Phonon.
+ \row \o Qt3Support
+ \o The Qt3Support library is not available on VxWorks.
+
+ \endtable
+
+ \section1 Build Instructions
+
+ Qt for VxWorks needs to be \l{Cross-Compiling Qt for Embedded Linux
+ Applications}{cross-compiled} on a Linux host. \c configure and \c make
+ the build like you would with a standard \l{Cross-Compiling Qt for
+ Embedded Linux Applications}{embedded Linux cross build}. Building the
+ VxWorks simulator would be done like this:
+
+ \code
+ <path/to/qt/sources>/configure -xplatform unsupported/vxworks-simpentium-g++ -embedded vxworks -exceptions -no-gfx-linuxfb -no-mouse-linuxtp -no-mouse-pc -no-kbd-tty
+ make
+ \endcode
+
+ \list
+ \o \c{-xplatform unsupported/qws/vxworks-simpentium-g++} - selects the x86 simulator mkspec for VxWorks
+ \o \c{-embedded vxworks} - builds the embedded version of Qt and sets the architecture to VxWorks
+ \o \c{-exceptions} - see General Notes below
+ \o \c{-no-gfx-linuxfb}, \c{-no-mouse-linuxtp}, \c{-no-mouse-pc} and \c{-no-kbd-tty} are Linux specific and won't work on VxWorks
+ \endlist
+
+ \section1 General Notes
+
+ \list
+
+ \o Configuring with \c{-exceptions} is necessary, because the VxWorks
+ 6.7 g++ headers require exceptions to be enabled when compiling C++
+ code.
+
+ \o Configure's \c{-xplatform} can be any of
+ \c{unsupported/vxworks-(simpentium|ppc)-(g++|dcc)}, but \c{dcc}
+ (WindRiver DIAB compiler) has not yet tested been tested with Qt 4.6 and
+ VxWorks 6.7.
+
+ \o Building shared libraries with \c{-shared} (the default) doesn't
+ really build shared libraries, like e.g. on Linux, since these are not
+ supported by VxWorks. Instead, qmake will created partially linked
+ objects, that can be loaded at runtime with \c{ld}.
+
+ \o Creating static builds with \c{-static} is fully supported.
+
+ \o "Munching" (generating constructors/destructors for static C++
+ objects) is done automatically by a special qmake extension (for both
+ shared libraries and executables)
+
+ \o VxWorks does not have a file system layer, but the low level storage
+ drivers have to supply a file system like interface to the applications.
+ Since each driver implements a different subset of the functionality
+ supported by this interface, Qt's file system auto-tests show wildly
+ differing results running on different "file systems". The best results
+ can be achieved when running on a (writable) NFS mount, since that
+ provides the most Unix-ish interface. The worst results come from the
+ FTP file system driver, which may crash when accessed by a
+ \c{QFileInfo}.
+
+ \o Keep in mind that VxWorks doesn't call your \c{main()} function with
+ the standard \c{argc}/\c{argv} parameters. So either add a special
+ \c{vxmain()} function or use a tool like \c{callmain} to translate
+ VxWorks' commandline arguments to an \c{argc}/\c{argv} array.
+
+ \o Some example will fail to build, due to some missing dependencies
+ (e.g. shared memory) - this will be fixed in a later release.
+
+ \endlist
+*/
+
+/*!
+ \page platform-notes-qnx.html
+ \title Platform Notes - QNX
+ \contentspage Platform Notes
+ \target QNX
+
+ \note QNX is a community supported platform. See the
+ \l{Supported Platforms} page for more information.
+
+ This page contains information about the Qt for QNX port. More
+ information about the combinations of platforms and compilers supported
+ by Qt can be found on the \l{Supported Platforms} page.
+
+ Note that Qt for QNX is currently based on \l{Qt for Embedded Linux}, which
+ contains its own windowing system. Mixing QNX's Photon environment with
+ Qt for QNX is currently not possible. Building Qt for QNX with Photon's
+ X11 embedded server is not recommended due to missing support for X11 extensions,
+ resulting in poor rendering quality.
+
+ Qt for QNX contains experimental screen and input drivers based on QNX's
+ \c devi-hid and \c io-display. For more information, check the class documentation
+ for QQnxScreen, QWSQnxKeyboardHandler and QQnxMouseHandler. See the
+ \l{Porting Qt for Embedded Linux to a New Architecture} document for information
+ on how to add custom screen or input drivers.
+
+ \tableofcontents
+
+ \section1 Supported Versions
+
+ Qt has been tested on QNX 6.4 on i386 and PowerPC targets with QNX's default
+ gcc compiler.
+
+ \section1 Limitations
+
+ Some of Qt's functionality is currently not available on QNX:
+
+ \table
+ \header \o Function \o Notes
+ \row \o QProcess
+ \o Not available - QNX doesn't support mixing threads and processes.
+ \row \o QSharedMemory
+ \o Not available - QNX doesn't support SYSV style shared memory.
+ \row \o QSystemSemaphore
+ \o Not available - QNX doesn't support SYSV style system semaphores.
+ \row \o QWS Multi Process
+ \o QT_NO_QWS_MULTIPROCESS is always on due to missing shared memory support.
+ \row \o Phonon
+ \o There is no standard audio backend, which could be integrated into Phonon.
+ \row \o Qt3Support
+ \o The Qt3Support library is not available on QNX.
+ \endtable
+
+ \section1 Build Instructions
+
+ Qt for QNX needs to be built either on a QNX system, or \l{Cross-Compiling Qt
+ for Embedded Linux Applications}{cross-compiled} on a Linux host. In either
+ case, The QNX Software Development Platform must be installed.
+
+ Example configure line for cross-compiling Qt for QNX on a Linux host for an
+ i386 QNX target:
+
+ \code
+ configure -xplatform unsupported/qws/qnx-i386-g++ -embedded i386 -no-gfx-linuxfb -no-mouse-linuxtp -no-kbd-tty -no-qt3support -qt-gfx-qnx -qt-mouse-qnx -qt-kbd-qnx -no-exceptions
+ \endcode
+
+ \list
+ \o \c{-xplatform unsupported/qws/qnx-i386-g++} - selects the i386-g++ mkspec for QNX
+ \o \c{-embedded i386} - builds the embedded version of Qt and sets the architecture to i386
+ \o \c{-no-gfx-linuxfb}, \c{-no-mouse-linuxtp} and \c{-no-kbd-tty} are Linux specific and won't work on QNX
+ \o \c{-no-qt3support} - required since the Qt3 support classes are not supported on QNX
+ \o \c{-no-exceptions} - reduces the size of the library by disabling exception support
+ \o \c{-qt-gfx-qnx} - enables the experimental \c{io-graphics} based display driver
+ \o \c{-qt-mouse-qnx} - enables the experimental \c{devi-hig} based mouse driver
+ \o \c{-qt-kbd-qnx} - enables the experimental \c{devi-hig} based keyboard driver
+ \endlist
+
+ \section1 General Notes
+
+ \list
+ \o To enable the experimental QNX display and input drivers, \c{io-display} needs to be
+ up and running. The \c devi-hid based Qt input drivers require \c devi-hid to run
+ in resource mode without Photon support. To enable a standard mouse and keyboard
+ combination, run \c devi-hid as follows: \c{/usr/photon/bin/devi-hid -Pr kbd mouse}.
+ Note that your current shell will not accept keyboard and mouse input anymore after
+ running that command, so run it either from a script that launches a Qt application
+ afterwards, or make sure to have remote login available to launch a Qt application.
+ In addition, the \c QWS_DISPLAY, \c QWS_MOUSE_PROTO and \c QWS_KEYBOARD environment
+ variables should all be set to \c{qnx} before running a Qt application.
+
+ \o The 3rd party TIFF library currently doesn't build due to the missing \c inflateSync
+ symbol from QNX's \c{libz.so.2}. Workarounds would be to manually replace QNX's libz
+ with a newer version, or disable the TIFF plugin entierly by appending
+ \c{QT_CONFIG += no-tiff} to \c{.qmake.cache} after configuring Qt.
+
+ \o Some of the tools, examples and demos do not compile due to dependencies on QProcess
+ or other classes that are not available on QNX.
+ \endlist
+
+ \section1 Platform Regressions
+
+ Qt for QNX's behavior is mostly identical with \l{Qt for Embedded Linux}. However,
+ some regressions were spotted in QDateTime computation around year 0 and year 1970,
+ which have been tracked back to faulty time zone data on some QNX versions.
+*/
diff --git a/doc/src/platforms/platform-notes.qdoc b/doc/src/platforms/platform-notes.qdoc
new file mode 100644
index 000000000..85b9ff84b
--- /dev/null
+++ b/doc/src/platforms/platform-notes.qdoc
@@ -0,0 +1,531 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group platform-specific
+ \title Platform-Specific Documentation
+ \brief Documents describing platform-specific features of Qt.
+
+ These documents describe platform-specific features provided by Qt, and
+ discuss issues related to particular platforms and environments.
+
+ \generatelist{related}
+*/
+
+/*!
+ \page platform-notes.html
+ \ingroup platform-specific
+ \title Platform Notes
+ \brief Information about the platforms on which Qt can be used.
+
+ This page contains information about the platforms Qt is currently known
+ to run on, with links to platform-specific notes, including any known bugs
+ or incompatibilities.
+
+ \list
+ \o \l{Platform Notes - X11}
+ \tableofcontents{1 Platform Notes - X11}
+ \o \l{Platform Notes - Windows}
+ \tableofcontents{1 Platform Notes - Windows}
+ \o \l{Platform Notes - Mac OS X}
+ \tableofcontents{1 Platform Notes - Mac OS X}
+ \o \l{Platform Notes - Symbian}
+ \tableofcontents{1 Platform Notes - Symbian}
+ \o \l{Platform Notes - Embedded Linux}
+ \tableofcontents{1 Platform Notes - Embedded Linux}
+ \o \l{Platform Notes - Windows CE}
+ \tableofcontents{1 Platform Notes - Windows CE}
+ \o \l{Platform Notes - QNX}
+ \tableofcontents{1 Platform Notes - QNX}
+ \o \l{Platform Notes - VxWorks}
+ \tableofcontents{1 Platform Notes - VxWorks}
+ \endlist
+
+ See also the \l{Compiler Notes} for information about compiler-specific
+ build issues. Information about the combinations of platforms and compilers
+ supported by Qt can be found on the \l{Supported Platforms} page.
+
+ If you have anything to add to this list or any of the platform or
+ compiler-specific pages, please submit it via the \l{Bug Report Form}
+ or through the \l{Public Qt Repository}.
+*/
+
+/*!
+ \page platform-notes-x11.html
+ \title Platform Notes - X11
+ \contentspage Platform Notes
+
+ This page contains information about the X11 platforms Qt is currently
+ known to run on, with links to platform-specific notes. More information
+ about the combinations of platforms and compilers supported by Qt can be
+ found on the \l{Supported Platforms} page.
+
+ \tableofcontents
+
+ \target AIX
+ \section1 AIX - 5.2
+
+ Qt has been tested on AIX 5.2, using the
+ \l{Compiler Notes#IBM xlC (AIX)}{xlC} compiler.
+
+ \table
+ \header \o Compiler \o Notes
+ \row \o xlC
+ \o If Qt is built correctly but all symbols are reported to be missing
+ when you link an application, your makeC++SharedLib script might be out
+ of date. Make sure you have the latest version from the
+ \l{http://www-306.ibm.com/software/awdtools/vacpp/support/}{IBM website}.
+ \row \o GCC
+ \o We have tested earlier versions of Qt 4 successfully with GCC version
+ 3.3 and above. Some versions of GCC may fail to link Qt with a "TOC overflow"
+ message.
+ Fix this by upgrading to the latest maintenance release of the dynamic
+ linker. On AIX this is bos.rte.bind_cmds.4.1.5.3 or later.
+ Some versions of GCC may fail to build Qt with STL and large-file support
+ enabled, due to
+ \l{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9551}{a bug in GCC}.
+ Fix this by upgrading to the latest maintenance release of the compiler.
+ It is also possible to work around this problem by running configure with
+ either \c{-no-stl} or \c{-no-largefile}.
+ \endtable
+
+ \target FreeBSD
+ \section1 FreeBSD - 6.0-RELEASE
+
+ \note FreeBSD is a community supported platform. See the
+ \l{Supported Platforms} page for more information.
+
+ The system compiler on FreeBSD 4.x is gcc 2.95.4, which is not
+ officially supported by Qt 4. We develop using and recommend
+ ports/lang/gcc34. You will need to run configure with the
+ \c{-platform freebsd-g++34} arguments. Optionally, you may use
+ ports/lang/icc.
+
+ The system compiler on FreeBSD 5.x and 6.x is GCC 3.4.4, which should be
+ sufficient to build Qt. You do not need to add any special arguments when
+ running configure. Optionally, you may use ports/lang/icc.
+
+ Note that we do not actively test FreeBSD 4.x and 5.x. Our developers
+ migrated to 6.x after the Qt 4 launch. FreeBSD-CURRENT is not supported.
+
+ \target HP-UX
+ \section1 HP-UX
+
+ Qt supports HP-UX on both PA-RISC and the Itanium (IA64) architectures.
+
+ \section2 PA-RISC - B.11.11 or later
+
+ You can configure Qt for aCC in 32 and 64 bit mode (hpux-acc-64 or
+ hpux-acc-32), or gcc in 32 bit mode (hpux-g++). The default platform is
+ hpux-acc-32. The minimum required version for aCC (HP ANSI C++) on PA-RISC
+ is A.03.57. The supported gcc compiler is gcc 3.4.3.
+
+ \section2 Itanium - B.11.23 or later
+
+ You can configure Qt for aCC in 32 and 64 bit mode (hpuxi-acc-64 or
+ hpuxi-acc-32). gcc is currently unsupported. The default platform is
+ hpuxi-acc-64. The minimum required version for aCC (HP ANSI C++) on
+ Itanium is A.06.12.
+
+ \section2 OpenGL Support
+
+ Qt's \l{QtOpenGL}{OpenGL} module requires GLX 1.3 or later to be installed.
+ This is available for HP-UX 11i - see the
+ \l{http://docs.hp.com/en/5992-2331/ch04s02.html}{Graphics and Technical Computing Software}
+ section of the release notes for more information.
+
+ \target IRIX
+ \section1 IRIX - 6.5.x
+
+ \bold{IRIX is an unsupported platform - please see Qt's online
+ \l{Platform Support Policy} for details.}
+
+ Unpackaging and IRIX tar:
+ Because of long filenames some files will be cut off incorrectly with IRIX
+ tar. Please use GNU tar to unpack Qt packages.
+
+ \section1 Linux
+
+ There are no known problems with using Qt on production versions of
+ Linux/x86, Linux/ppc, Linux/amd64 and Linux/ia64 (including Altix(R)).
+
+ For the gcc/g++ compiler, please also see the relevant
+ \l{Compiler Notes#GCC}{compiler page}.
+
+ \section2 Installation problems
+
+ See also the \l{Installation FAQ}.
+
+ If you experience problems when installing new open source versions of Qt
+ versions, try to use the open source Qt archives (e.g., RPM)
+ provided by your Linux distribution. If you need to install the source (.tgz)
+ archive, be aware that you will probably end up with two different
+ versions of the Qt library installed on your system, which will probably
+ lead to link errors, like this:
+ \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 0
+ Fix this by removing the old version of the library.
+
+ If you have problems installing open source versions of Qt
+ provided by your Linux distribution (e.g., RPM), please consult the
+ maintainers of the distribution, not us.
+
+ Some RPM versions have problems installing some of the Qt RPM archives
+ where installation stops with an error message warning about a
+ "Failed Dependency". Use the \c{--nodeps} option to \c rpm to workaround
+ this problem.
+
+ \target Solaris
+ \section1 Solaris - 9 or later
+
+ \section2 Unpackaging and Solaris tar
+
+ On some Solaris systems, both Solaris tar and GNU tar have been reported
+ to truncate long filenames. We recommend using star instead
+ (http://star.berlios.de).
+
+ \section2 CC on Solaris
+
+ Be sure to check our \l{Compiler Notes#Sun Studio}{Forte Developer / Sun Studio}
+ notes.
+
+ \section2 GCC on Solaris
+
+ Be sure to check the installation notes for \l{GCC on Solaris}.
+ Do not use GCC with Sun's assembler/linker, this will result in link-time
+ errors in shared libraries. Use GNU binutils instead.
+
+ GCC 3.2.* is known to miscompile Qt due to an optimizer bug that will
+ cause the resulting binaries to hang. Please use GCC 3.4.2 or later.
+*/
+
+/*!
+ \page platform-notes-windows.html
+ \title Platform Notes - Windows
+ \contentspage Platform Notes
+
+ This page contains information about the Windows platforms Qt is currently
+ known to run on, with links to platform-specific notes. More information
+ about the combinations of platforms and compilers supported by Qt can be
+ found on the \l{Supported Platforms} page.
+
+ \tableofcontents
+
+ \section1 Windows Vista
+
+ At the time Qt %VERSION% was released, there were no known Vista-specific issues.
+
+ \target Windows NT
+ \section1 Windows XP, Windows 2000 and Windows NT
+
+ \section2 Installation location
+
+ Installing Qt into a directory with spaces, e.g. C:\\Program Files, may
+ cause linker errors like the following:
+ \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 2
+
+ Install Qt into a subdirectory without spaces to avoid this problem.
+
+ \section2 AccelGALAXY graphic card
+
+ When you use a NT 4.0 machine with the driver number
+ 4,00,1381,1000,021,4.0.0 there is a problem with drag an drop and icons.
+ The computer freezes, and you have to reset. The problem disappears with
+ the newest version of the driver, available at
+ \l{http://www.es.com/}{www.es.com}.
+
+ \section2 Possible GL conflict
+
+ There is a known issue with running Microsoft NetMeeting, Lotus SameTime
+ and other applications that require screen grabbing while direct
+ rendering is enabled. Other GL-applications may not work as expected,
+ unless direct rendering is disabled.
+*/
+
+/*!
+ \page platform-notes-mac.html
+ \title Platform Notes - Mac OS X
+ \contentspage Platform Notes
+
+ This page contains information about the Mac OS X versions Qt is currently
+ known to run on, with links to platform-specific notes. More information
+ about the combinations of platforms and compilers supported by Qt can be
+ found on the \l{Supported Platforms} page.
+
+ \tableofcontents
+
+ \section1 General Information
+
+ Qt 4.4 and Qt 4.5 development is only supported on Mac OS X 10.4 and up.
+ Applications built against these version of Qt can be deployed on Mac OS X
+ 10.3, but cannot be developed on that version of the operating system due
+ to compiler issues.
+
+ Qt 4.3 has been tested to run on Mac OS X 10.3.9 and up. See notes on
+ the binary package for more information.
+
+ Qt 4.1 has been tested to run on Mac OS X 10.2.8 and up. Qt 4.1.4 is the
+ last release to work with Mac OS X 10.2.
+
+ \section2 Required GCC version
+
+ Apple's gcc 4 that is shipped with the Xcode Tools for both Mac OS X 10.4
+ and 10.5 will compile Qt. There is preliminary support for gcc 4.2 which
+ is included with Xcode Tools 3.1+ (configurable with
+ \c{-platform macx-g++42}).
+
+ \section2 Binary Package
+
+ The binary package requires that you have your .qt-license file in your
+ home directory. Installer.app cannot complete without a valid .qt-license
+ file. Evaluation users of Qt will have information about how to create
+ this file in the email they receive.
+
+ The binary package was built on Mac OS X 10.4 with Xcode Tools 2.1
+ (gcc 4.0.0) for Qt 4.1.0, Xcode Tools 2.2 (gcc 4.0.1) for Qt 4.1.1-4.1.4
+ and Xcode Tools 2.3 for 4.2.0. It will only link executables built
+ against 10.4 (or a 10.4 SDK). You should be able to run applications
+ linked against these frameworks on Mac OS X 10.3.9 and Mac OS X 10.4+.
+ If you require a different configuration, you will have to use the
+ source package and build with GCC 3.3.
+
+ \section2 Mac OS X on Intel hardware
+
+ Qt 4 fully supports both the Intel and PowerPC architectures on the Mac.
+ As of Qt 4.1 it is possible to support the Intel architecture by
+ creating Universal Binaries with qmake. As of Qt 4.1 it is possible to
+ build Qt as a set of universal binaries and frameworks from configure by
+ adding these extra flags:
+
+ \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 3
+
+ If you are building on Intel hardware you can omit the sdk parameter, but
+ PowerPC hardware requires it.
+
+ You can also generate universal binaries using qmake. Simply add these
+ lines to your .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 4
+
+ \section2 Build Issues
+
+ If Qt does not build upon executing make, and fails with an error message
+ such as
+
+ \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 5
+
+ this could be an indication you have upgraded your version of Mac OS X
+ (e.g. 10.3 to 10.4), without upgrading your Developer Tools (Xcode Tools).
+ These must match in order to successfully compile files.
+
+ Please be sure to upgrade both simultaneously. If problems still occur,
+ contact support.
+
+ \section2 Fink
+
+ If you have installed the Qt for X11 package from \l{Fink},
+ it will set the QMAKESPEC environment variable to darwin-g++. This will
+ cause problems when you build the Qt for Mac OS X package. To fix this, simply
+ unset your QMAKESPEC or set it to macx-g++ before you run configure.
+ You need to have a fresh Qt distribution (make confclean).
+
+ \section2 MySQL and Mac OS X
+
+ There seems to be a issue when both -prebind and -multi_module are
+ defined when linking static C libraries into dynamic library. If you
+ get the following error message when linking Qt:
+
+ \snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 6
+
+ re-link Qt using -single_module. This is only a problem when building the
+ MySQL driver into Qt. It does not affect plugins or static builds.
+
+ \section2 Qt and Precompiled Headers (PCH)
+
+ Starting with Qt 3.3.0 it is possible to use precompiled headers. They
+ are not enabled by default as it appears that some versions of Apple's
+ GCC and make have problems with this feature. If you want to use
+ precompiled headers when building the Qt source package, specify the
+ -pch option to configure. If, while using precompiled headers, you
+ encounter an internal compile error, try removing the -include header
+ statement from the compile line and trying again. If this solves the
+ problem, it probably is a good idea to turn off precompiled headers.
+ Also, consider filing a bug report with Apple so that they can
+ improve support for this feature.
+*/
+
+/*!
+ \page platform-notes-windows-ce.html
+ \title Platform Notes - Windows CE
+ \contentspage Platform Notes
+
+ This page contains information about the Windows CE and Windows Mobile
+ platforms Qt is currently known to run on, with links to platform-specific
+ notes. More information about the combinations of platforms and compilers
+ supported by Qt can be found on the \l{Supported Platforms} page.
+*/
+
+/*!
+ \page platform-notes-symbian.html
+ \title Platform Notes - Symbian
+ \contentspage Platform Notes
+ \ingroup platform-specific
+ \brief Information about the state of support for the Symbian platform.
+
+ As with any port, the maturity for Qt for Symbian has not yet reached the
+ same level as other established Qt ports. This page documents the current
+ notes for the Symbian port.
+
+ \section1 Source Compatibility
+
+ Qt for Symbian provides the same level of source compatibility guarantee as
+ given for other platforms.  That is, a program which compiles against a given
+ version of Qt for Symbian will also compile against all future versions of the
+ same major release.
+
+ \section1 Binary Compatibility
+
+ As with every supported platform, we will strive to maintain
+ application behavior and binary compatibility throughout the lifetime of
+ the Qt 4.x series. However, due to the fact that Symbian support is newly
+ added in 4.6.0, there is a slight possibility that minor corrections to the
+ application binary interface (ABI) might be required in 4.6.1, in order to
+ ensure compatibility going forward. Any such change will be clearly
+ documented in the release notes for 4.6.1.
+
+ \section1 Supported Devices
+
+ Qt is designed to work on any device which runs one of the following
+ versions of Symbian:
+
+ \table
+ \header \o Symbian Version
+ \row \o S60 3.1
+ \row \o S60 3.2
+ \row \o S60 5.0 (Symbian ^1)
+ \endtable
+
+ Qt has received \l{Tier 1 Platforms}{Tier 1} testing on the following phone models:
+
+ \table
+ \header \o Phone
+ \row \o Nokia 5800
+ \row \o Nokia E71
+ \row \o Nokia E72
+ \row \o Nokia N78
+ \row \o Nokia N95
+ \row \o Nokia N97
+ \row \o Samsung i8910
+ \endtable
+
+ \section1 Supported Functionality
+
+ The following technologies and classes are not currently supported:
+
+ \table
+ \header \o Technology
+ \o Note
+ \row \o QtConcurrent
+ \o Planned for future release.
+ \row \o QtDBus
+ \o No current plans to support this feature.
+ \row \o QtOpenGL ES
+ \o Planned for future release.
+ \row \o Printing support
+ \o No current plans to support this feature.
+ \row \o Qt3Support
+ \o No current plans to support this feature.
+ \endtable
+
+ The following technologies have limited support:
+
+ \table
+ \header \o Technology
+ \o Note
+ \row \o QtSql
+ \o The only driver supported is SQLite.
+ \row \o QtMultimedia
+ \o Although the module itself is supported, no backend for Symbian
+ is currently available. However, there is a backend available
+ for Phonon.
+ \endtable
+
+ \section1 Known Issues
+
+ Known issues can be found by visiting the
+ \l{http://qt.gitorious.org/qt/pages/Qt460KnownIssues}{wiki page} with an
+ up-to-date list of known issues, and the list of bugs can be found by
+ \l{http://bugreports.qt.nokia.com/browse/QTBUG/component/19171}{browsing} the
+ S60 component in Qt's public task tracker, located at
+ \l{http://bugreports.qt.nokia.com/}{http://bugreports.qt.nokia.com/}.
+
+ For information about mixing exceptions with Symbian leaves, see
+ \l{Exception Safety with Symbian}.
+
+ \section1 Multimedia and Phonon Support
+
+ Qt provides a backend for Qt's Phonon module, which supports
+ video and sound playback through Symbian's Multimedia Framework, MMF.
+
+ In this release the support is experimental. Video playback may have
+ flickering issues, and support for effects and playback queueing is
+ incomplete.
+
+ The audio and video formats that Phonon supports depends on what support
+ the platform provides for MMF. The emulator is known to have limited
+ codec support.
+
+ In addition, there exists a backend for the Helix framework. However, due
+ to it not shipping with Qt, its availability depends on the Symbian
+ platform in use. If available, it is loaded in preference over the MMF
+ plugin. If the Helix plugin fails to load, the MMF plugin, if present on
+ the device, will be loaded instead.
+*/
+
+/*!
+ \page platform-notes-embedded-linux.html
+ \title Platform Notes - Embedded Linux
+ \contentspage Platform Notes
+
+ This page contains information about the Embedded Linux platforms Qt is
+ currently known to run on, with links to platform-specific notes. More
+ information about the combinations of platforms and compilers supported
+ by Qt can be found on the \l{Supported Platforms} page.
+*/
diff --git a/doc/src/platforms/qt-embedded-linux.qdoc b/doc/src/platforms/qt-embedded-linux.qdoc
new file mode 100644
index 000000000..a6524d77c
--- /dev/null
+++ b/doc/src/platforms/qt-embedded-linux.qdoc
@@ -0,0 +1,126 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group qws
+ \title Qt for Embedded Linux Classes
+ \ingroup groups
+ \ingroup qt-embedded-linux
+ \ingroup platform-specific
+
+ \brief Classes that are specific to Qt for Embedded Linux.
+
+ These classes are relevant to \l{Qt for Embedded Linux} users.
+*/
+
+
+/*!
+ \group qt-embedded-linux
+ \ingroup qt-embedded
+ \title Qt for Embedded Linux
+ \brief Documents specifically about Qt for Embedded Linux.
+
+ Qt for Embedded Linux is a C++ framework for GUI and application development
+ for embedded devices. It runs on a variety of processors, usually
+ with Embedded Linux. Qt for Embedded Linux provides the standard Qt API for
+ embedded devices with a lightweight window system.
+
+ \image qt-embedded-linux-architecture.png
+
+ Qt for Embedded Linux applications write directly to the framebuffer,
+ eliminating the need for the X Window System and saving memory.
+ The Linux framebuffer is enabled by default on all modern Linux
+ distributions. For information on older versions, please refer to
+ the \l{Framebuffer HOWTO} document. For development
+ and debugging purposes, Qt for Embedded Linux provides a \l {The
+ Virtual Framebuffer}{virtual framebuffer}. It is also possible to
+ run an application using the
+ \l{The VNC Protocol and Qt for Embedded Linux}{VNC protocol}.
+
+ \table 100%
+ \header \o Getting Started \o Reference \o Features
+ \row
+ \o
+ \list
+ \o \l {Qt for Embedded Linux Architecture}{Architecture Overview}
+ \o \l {Installing Qt on Embedded Linux}{Installation}
+ \o \l {Running Qt for Embedded Linux Applications}{Running Applications}
+ \o \l {Qt for Embedded Linux Examples}{Examples}
+ \endlist
+ \o
+ \list
+ \o \l {Qt for Embedded Linux Classes}{Classes}
+ \o \l {Qt for Embedded Linux Environment Variables}{Environment Variables}
+ \o \l {Licenses for Fonts Used in Qt for Embedded Linux}{Font Licenses}
+ \endlist
+ \o
+ \list
+ \o \l {Qt for Embedded Linux Pointer Handling}{Pointer Handling}
+ \o \l {Qt for Embedded Linux Character Input}{Character Input}
+ \o \l {Qt for Embedded Linux Display Management}{Display Management}
+ \o \l {Qt for Embedded Linux Hardware Accelerated Graphics}{Hardware Accelerated Graphics}
+ \o \l {Qt for Embedded Linux Fonts}{Fonts}
+ \endlist
+
+ \header \o Development \o Porting \o Optimization
+ \row
+ \o
+ \list
+ \o \l {The Virtual Framebuffer}{Virtual Framebuffer}
+ \o \l {The VNC Protocol and Qt for Embedded Linux}{VNC Protocol}
+ \o \l {Testing the Linux Framebuffer}
+ \o \l {Cross Compiling Qt for Embedded Linux Applications}{Cross Compiling Applications}
+ \o \l {Deploying Qt for Embedded Linux Applications}{Deploying Applications}
+ \endlist
+ \o
+ \list
+ \o \l {Porting Qt Applications to Qt for Embedded Linux}
+ \o \l {Porting Qt for Embedded Linux to a New Architecture}
+ \o \l {Porting Qt for Embedded Linux to Another Operating System}
+ \endlist
+ \o
+ \list
+ \o \l {Qt Performance Tuning}
+ \o \l {Fine-Tuning Features in Qt}
+ \o \l {Adding an Accelerated Graphics Driver to Qt for Embedded Linux}{Adding an Accelerated Graphics Driver}
+ \endlist
+ \endtable
+*/
diff --git a/doc/src/platforms/qt-embedded.qdoc b/doc/src/platforms/qt-embedded.qdoc
new file mode 100644
index 000000000..afed54069
--- /dev/null
+++ b/doc/src/platforms/qt-embedded.qdoc
@@ -0,0 +1,75 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group qt-embedded
+ \title Qt for Embedded Platforms
+ \brief Documents related to Qt for Embedded Platforms.
+ \ingroup platform-specific
+
+ Qt is available for embedded platforms and devices as well as for a number
+ of desktop platforms. The features provided for each platform depend on the
+ capabilities and architecture of the operating system.
+
+ \image qt-embedded-architecture.png
+
+ Currently, three embedded platforms are supported by Qt:
+
+ \table 90%
+ \header \o Embedded Linux \o Windows CE \o Symbian platform
+ \row
+ \o \l{Qt for Embedded Linux} is designed to be used on Linux devices
+ without X11 or existing graphical environments. This flavor of
+ Qt includes a framework for creating both applications and an
+ environment for them. As a result, it includes features for
+ window management, inter-process communication and facilities
+ for handling input and display devices.
+ \o \l{Qt for Windows CE} is used to create applications running in
+ existing Windows CE and Windows Mobile environments.
+ Applications use the appropriate style for the embedded
+ environment and use native features, such as menus, to conform
+ to the native style guidelines.
+ \o \l{Qt for the Symbian platform} is used to create applications running
+ in existing Symbian platform environments. Applications use the appropriate
+ style for the embedded environment and use native features, such as menus,
+ to conform to the native style guidelines.
+ \endtable
+*/
diff --git a/doc/src/platforms/qtmac-as-native.qdoc b/doc/src/platforms/qtmac-as-native.qdoc
new file mode 100644
index 000000000..c0f8bfbba
--- /dev/null
+++ b/doc/src/platforms/qtmac-as-native.qdoc
@@ -0,0 +1,159 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qtmac-as-native.html
+ \title Qt is Mac OS X Native
+ \brief An explanation of Qt's native features on Mac OS X.
+ \ingroup platform-specific
+
+ This document explains what makes an application native on Mac OS X.
+ It shows the areas where Qt is compliant, and the grey areas where
+ compliance is more questionable. (See also the document
+ \l{mac-differences.html}{Qt for Mac OS X - Specific Issues}.)
+
+ Normally when referring to a native Mac application, one really means an
+ application that talks directly to the underlying window system, rather
+ than one that uses some intermediary (for example Apple's X11 server, or a
+ web browser). Qt applications run as first class citizens, just like
+ Cocoa, and Carbon applications. In fact, we use Carbon and HIView
+ internally to communicate with OS X.
+
+ When an application is running as a first class citizen, it means that
+ it can interact with specific components of the Mac OS X experience:
+
+ \tableofcontents
+
+ \section1 The Global Menu Bar
+
+ Qt does this via the QMenuBar abstraction. Mac users expect to
+ have a menu bar at the top of the screen and Qt honors this.
+
+ Additionally, users expect certain conventions to be respected, for
+ example the application menu should contain About, Preferences,
+ Quit, etc. Qt handles this automatically, although it does not
+ provide a means of interacting directly with the application menu.
+ (By doing this automatically, Qt makes it easier to port Qt
+ applications to other platforms.)
+
+ \section1 Aqua
+
+ This is a critical piece of Mac OS X (documentation can be found at
+ \l{http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html}).
+ It is a huge topic, but the most important guidelines for GUI
+ design are probably these:
+
+ \list
+ \i \e{Aqua look}
+
+ As with Cocoa/Carbon, Qt provides widgets that look like those
+ described in the Human Interface Descriptions. Qt's widgets use
+ Appearance Manager on Mac OS X 10.2 and the new HIThemes on Mac OS X 10.3
+ and higher to implement the look, in other words we use Apple's own API's
+ for doing the rendering.
+
+ \i \e{Aqua feel}
+
+ This is a bit more subjective, but certainly Qt strives to
+ provide the same feel as any Mac OS X application (and we
+ consider situations where it doesn't achieve this to be bugs).
+ Of course Qt has other concerns to bear in mind, especially
+ remaining cross-platform. Some "baggage" that Qt carries is in
+ an effort to provide a widget on a platform for which an
+ equivelant doesn't exist, or so that a single API can be used to
+ do something, even if the API doesn't make entire sense for a
+ specific widget.
+
+ \i \e{Aqua guides}
+
+ This is the most subjective, but there are many suggestions and
+ guidelines in the Aqua style guidelines. This is the area where Qt is
+ of least assistance. The decisions that must be made to conform (widget
+ sizes, widget layouts with respect to other widgets, window margins,
+ placement of OK and Cancel, etc) must be made based on the user
+ experience demanded by your application. If your user base is small or
+ mostly comes from the Windows or Unix worlds, these are minor issues much
+ less important than trying to make a mass market product. Qt for Mac OS X
+ is fully API compatible with Qt for Windows and X11, but Mac OS X is a
+ significantly different platform to Windows and some special
+ considerations must be made based on your audience.
+
+ \endlist
+
+ \section1 Dock
+
+ Interaction with the dock is possible. The icon can be set by calling
+ QWidget::setWindowIcon() on the main window in your application. The
+ setWindowIcon() call can be made as often as necessary, providing an
+ icon that can be easily updated.
+ \omit
+ It is also possible to set a QMenu as the dock menu through the use of the
+ qt_mac_set_dock_menu() function.
+ \endomit
+
+ \section1 Accessiblity
+
+ Although many users never use this, some users will only interact with your
+ applications via assistive devices. With Qt the aim is to make this
+ automatic in your application so that it conforms to accepted practice on
+ its platform. Qt uses Apple's accessibility framework to provide access
+ to users with diabilities.
+
+ \section1 Development Tools
+
+ Mac OS X developers expect a certain level of interopability
+ between their development toolkit and the platform's developer
+ tools (for example Visual Studio, gmake, etc). Qt supports both Unix
+ style Makefiles, and ProjectBuilder/Xcode project files by using
+ the \l qmake tool. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qtmac-as-native.qdoc 0
+
+ will generate an Xcode project file from project.pro. With \l qmake
+ you do not have to worry about rules for Qt's preprocessors (\l moc
+ and \l uic) since \l qmake automatically handles them and ensures that
+ everything necessary is linked into your application.
+
+ Qt does not entirely interact with the development environment (for
+ example plugins to set a file to "mocable" from within the Xcode
+ user interface). Nokia is actively working on improving Qt's
+ interoperability with various IDEs.
+*/
diff --git a/doc/src/platforms/supported-platforms.qdoc b/doc/src/platforms/supported-platforms.qdoc
new file mode 100644
index 000000000..d0334f5aa
--- /dev/null
+++ b/doc/src/platforms/supported-platforms.qdoc
@@ -0,0 +1,175 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 supported-platforms.html
+ \title Supported Platforms
+ \brief The platforms supported by Nokia for Qt.
+ \ingroup platform-specific
+
+ The Qt team strives to provide support for the platforms most
+ frequently used by Qt users. We have designed our internal testing procedure to
+ divide platforms into three test categories (Tier 1, Tier 2 and Tier 3) in order
+ to prioritize internal testing and development resources so that the most
+ frequently used platforms are subjected to our most rigorous testing processes.
+
+ Qt is supported on a variety of 32-bit and 64-bit platforms, and can
+ usually be built on each platform with GCC, a vendor-supplied compiler, or
+ a third party compiler. Although Qt may be built on a range of platform-compiler
+ combinations, only a subset of these are actively supported by Nokia.
+
+ \tableofcontents
+
+ Information about the specific platforms Qt runs on can be found on the
+ \l{Platform Notes} page. Information about the compilers used on each platform
+ can be found on the \l{Compiler Notes} page.
+
+ \section1 Tier 1 Platforms
+
+ All Tier 1 platforms are subjected to our unit test suite and other internal
+ testing tools on a frequent basis (prior to new version releases, source tree
+ branching, and at other significant period points in the development process).
+ Errors or bugs discovered in these platforms are prioritized for correction
+ by the development team. Significant errors discovered in Tier 1 platforms can
+ impact release dates and Qt Development Frameworks strives to resolve all known
+ high priority errors in Tier 1 platforms prior to new version releases.
+
+ \table
+ \header \o Platform
+ \o Compilers
+ \row \o Linux (32 and 64-bit)
+ \o gcc 4.2
+ \row \o Microsoft Windows XP
+ \o gcc 4.4 (MinGW) (32-bit), MSVC 2003, 2005 (32 and 64-bit)
+ \row \o Microsoft Windows Vista
+ \o MSVC 2005, 2008
+ \row \o Microsoft Windows Vista 64bit
+ \o MSVC 2008
+ \row \o Apple Mac OS X 10.5 "Leopard" x86_64 (Carbon, Cocoa 32 and 64bit)
+ \o As provided by Apple
+ \row \o Embedded Linux QWS (ARM)
+ \o gcc (\l{http://www.codesourcery.com/}{Codesourcery version)}
+ \row \o Windows CE 5.0 (ARMv4i, x86, MIPS)
+ \o MSVC 2005 WinCE 5.0 Standard (x86, pocket, smart, mipsii)
+ \row \o Symbian (Symbian/S60 3.1, 3.2 and 5.0)
+ \o RVCT 2.2 [build 686 or later], WINSCW 3.2.5 [build 482 or later], GCCE (for applications)
+ \endtable
+
+ \section1 Tier 2 Platforms
+
+ Tier 2 platforms are subjected to our unit test suite and other internal testing
+ tools prior to release of new product versions. Qt users should note, however,
+ that errors may be present in released product versions for Tier 2 platforms and,
+ subject to resource availability, known errors in Tier 2 platforms may or may not
+ be corrected prior to new version releases.
+
+ \table
+ \header \o Platform
+ \o Compilers
+ \row \o Windows XP, Vista
+ \o gcc 3.4.2 (MinGW)
+ \row \o Windows 7
+ \o MSVC 2008
+ \row \o Apple Mac OS X 10.6 "Snow Leopard"
+ \o As provided by Apple
+ \row \o Apple Mac OS X 10.4 "Tiger"
+ \o As provided by Apple
+ \row \o HPUXi 11.11
+ \o aCC 3.57, gcc 3.4
+ \row \o HPUXi 11.23
+ \o aCC 6.10
+ \row \o Solaris 10 UltraSparc
+ \o Sun Studio 12
+ \row \o AIX 6
+ \o Power5 xlC 7
+ \row \o Microsoft Windows XP
+ \o Intel Compiler
+ \row \o Linux
+ \o Intel Compiler
+ \row \o Embedded Linux QWS (Mips, PowerPC)
+ \o gcc (\l{http://www.codesourcery.com/}{Codesourcery version)}
+ \row \o Embedded Linux X11 (ARM)
+ \o gcc (\l{http://www.scratchbox.org/}{Scratchbox)}
+ \row \o Windows CE 6.0 (ARMv4i, x86, MIPS)
+ \o MSVC 2008 WinCE 6.0 Professional
+ \endtable
+
+ \section1 Tier 3 Platforms (Not supported by Nokia)
+
+ All platforms not specifically listed above are not supported by Nokia. Nokia does
+ not run its unit test suite or perform any other internal tests on platforms not
+ listed above.
+
+ Even though some Tier 3 platforms are available under the Qt Commercial License,
+ technical support is not included in that license.
+ However, \l{How to Order}{contact our sales team} to find out about the
+ availability of other services for those platforms.
+
+ Qt users should note, however, that there may be various open source
+ projects, community users and/or Qt partners who are able to provide assistance with
+ platforms not supported by Nokia.
+
+ \section1 General Legal Disclaimer
+
+ Please note that Qt is offered on an "as is" basis without warranty
+ of any kind and that our products are not error or bug free. To the maximum extent
+ permitted by applicable law, Nokia on behalf of itself and its suppliers, disclaims all
+ warranties and conditions, either express or implied, including, but not limited to,
+ implied warranties of merchantability, fitness for a particular purpose, title and
+ non-infringement with regard to the Licensed Software.
+
+ \section1 Planned Changes for Qt 4.7
+
+ The following changes to the list of supported platforms are at time of publishing
+ planned for Qt 4.7:
+
+ \list
+ \o Upgrade Windows 7 to Tier 1
+ \o Upgrade Mac OS X 10.6 to Tier 1
+ \o Add support for Visual Studio 2010 (Tier 2)
+ \o Move support for Carbon implementation of Qt on Mac OS X from Tier 1 to Tier 2
+ \o Drop support for MinGW 3.4
+ \o Drop support for Visual Studio 2003
+ \o Drop support for HP-UX on PA-RISC
+ \o Drop support for Windows Mobile 5
+ \o Drop support for OpenGL ES Common Lite 1.0
+ \endlist
+*/
diff --git a/doc/src/platforms/symbian-exceptionsafety.qdoc b/doc/src/platforms/symbian-exceptionsafety.qdoc
new file mode 100644
index 000000000..99bd2d87b
--- /dev/null
+++ b/doc/src/platforms/symbian-exceptionsafety.qdoc
@@ -0,0 +1,241 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 symbianexceptionsafety.html
+ \title Exception Safety with Symbian
+ \ingroup qtsymbian
+ \brief A guide to integrating exception safety in Qt with Symbian.
+
+ The following sections describe how Qt code can interoperate with Symbian's
+ exception safety system.
+
+ \tableofcontents
+
+ \section1 What the problem is
+
+ Qt and Symbian have different exception systems. Qt works with standard C++
+ exceptions, whereas Symbian has its TRAP/Leave/CleanupStack system. So, what would
+ happen if you mix the two systems? It could go wrong in a number of ways.
+
+ Clean-up ordering would be different between the two. When Symbian code
+ leaves, the clean-up stack is cleaned up before anything else happens. After
+ that, the objects on the call stack would be cleaned up as with a normal
+ exception. So if there are any dependencies between stack-based and
+ objects owned by the clean-up stack, there could be problems due to this
+ ordering.
+
+ Symbian's \c XLeaveException, which is used when Symbian implements leaves as
+ exceptions, is not derived from \c std::exception, so would not be caught in
+ Qt catch statements designed to catch \c std::exception.
+
+ Qt's and standard C++'s \c std::exception derived exceptions result in program
+ termination if they fall back to a Symbian TRAP.
+
+ These problems can be solved with barrier macros and helper functions that
+ will translate between the two exception systems. Use them, in Qt code,
+ whenever calling into or being called from Symbian code.
+
+ \section1 Qt calls to Symbian
+
+ When calling Symbian leaving functions from Qt code, we want to translate
+ Symbian leaves to standard C++ exceptions. The following help is provided:
+
+ \list
+ \o \l qt_symbian_throwIfError() takes a Symbian
+ error code and throws an appropriate exception to represent it.
+ This will do nothing if the error code is not in fact an error. The
+ function is equivalent to Symbian's \c User::LeaveIfError.
+ \o \l q_check_ptr() takes a pointer and throws a std::bad_alloc
+ exception if it is 0, otherwise the pointer is returned. This can be
+ used to check the success of a non-throwing allocation, eg from
+ \c malloc(). The function is equivalent to Symbian's \c
+ User::LeaveIfNull.
+ \o \l QT_TRAP_THROWING() takes a Symbian leaving
+ code fragment f and runs it under a trap harness converting any resulting
+ error into an exception.
+ \o \c TRAP and \c TRAPD from the Symbian libraries can be used to convert
+ leaves to error codes.
+ \endlist
+
+ \code
+ HBufC* buf=0;
+ // this will throw a std::bad_alloc because we've asked for too much memory
+ QT_TRAP_THROWING(buf = HBufC::NewL(100000000));
+
+ _LIT(KStr,"abc");
+ TInt pos = KStr().Locate('c');
+ // pos is a good value, >= 0, so no exception is thrown
+ qt_symbian_throwIfError(pos);
+
+ pos = KStr().Locate('d');
+ // pos == KErrNotFound, so this throws an exception
+ qt_symbian_throwIfError(pos);
+
+ // we are asking for a lot of memory, HBufC::New may return NULL, so check it
+ HBufC *buffer = q_check_ptr(HBufC::New(1000000));
+ \endcode
+
+ \section2 Be careful with new and CBase
+
+ When writing Qt code, \c new will normally throw a \c std::bad_alloc if the
+ allocation fails. However this may not happen if the object being created
+ has its own \c {operator new}. For example, CBase and derived classes have
+ their own \c {operator new} which returns 0 and the \c {new(ELeave)}
+ overload for a leaving \c {operator new}, neither of which does what we want.
+ When using 2-phase construction of CBase derived objects, use \c new and
+ \l q_check_ptr().
+
+ \oldcode
+ CFbsBitmap* fbsBitmap = new(ELeave) CFbsBitmap;
+ \newcode
+ CFbsBitmap* fbsBitmap = q_check_ptr(new CFbsBitmap);
+ \endcode
+
+ \section1 Qt called from Symbian
+
+ When Qt code is called from Symbian, we want to translate standard C++
+ exceptions to Symbian leaves or error codes. The following help is
+ provided:
+
+ \list
+ \o \l qt_symbian_exception2Error() -
+ this takes a standard exception and gives an appropriate Symbian
+ error code. If no mapping is known for the exception type,
+ \c KErrGeneral is returned.
+ \o \l qt_symbian_exception2LeaveL() -
+ this takes a standard exception and generates an appropriate Symbian
+ leave.
+ \o \l QT_TRYCATCH_ERROR() - this macro
+ takes the standard C++ code fragment \c f, catches any std::exceptions
+ thrown from it, and sets err to the corresponding Symbian error code.
+ err is set to \c KErrNone otherwise.
+ \o \l QT_TRYCATCH_LEAVING() - this macro takes the
+ standard C++ code fragment \c f, catches any std::exceptions thrown from
+ it, and throws a corresponding Symbian leave.
+ \endlist
+
+ \code
+ TInt DoTickL() // called from an active object RunL, ie Symbian leaves expected
+ {
+ // without the translation to Symbian Leave, we get a USER:0 panic
+ QT_TRYCATCH_LEAVING({
+ int* x = new int[100000000]; // compiled as Qt code, will throw std::bad_alloc
+ delete [] x;
+ });
+ return 0;
+ }
+ \endcode
+
+ \section1 Common sense things
+
+ Try to minimise the interleaving of Symbian and Qt code, every switch
+ requires a barrier. Grouping the code styles in different blocks will
+ minimise the problems. For instance, examine the following code.
+
+ \code
+ 1. TRAPD(err, m_playUtility = CMdaAudioPlayerUtility::NewL(*this);
+ 2. QString filepath = QFileInfo( m_sound->fileName() ).absoluteFilePath();
+ 3. filepath = QDir::toNativeSeparators(filepath);
+ 4. m_playUtility->OpenFileL(qt_QString2TPtrC(filepath)));
+ \endcode
+
+ Line 1 starts a Symbian leave handling block, which is good because it
+ also uses a Symbian leave generating function.
+
+ Line 2 creates a \l QString, uses \l QFileInfo and various member functions.
+ These could all throw exceptions, which is not good inside a \c TRAP block.
+
+ Line 3 is unclear as to whether it might throw an exception, but since
+ it's dealing with strings it probably does, again bad.
+
+ Line 4 is tricky, it calls a leaving function which is ok within a \c TRAP,
+ but it also uses a helper function to convert string types. In this case
+ the helper function may cause an unwelcome exception.
+
+ We could rewrite this with nested exception translations, but it's much
+ easier to refactor it.
+
+ \code
+ QString filepath = QFileInfo( m_sound->fileName() ).absoluteFilePath();
+ filepath = QDir::toNativeSeparators(filepath);
+ TPtrC filepathPtr(qt_QString2TPtrC(filepath));
+ TRAPD(err, m_playUtility = CMdaAudioPlayerUtility::NewL(*this);
+ m_playUtility->OpenFileL(filepathPtr));
+ \endcode
+
+ Now the exception generating functions are separated from the leaving
+ functions.
+
+ \section1 Advanced technique
+ When using Symbian APIs in Qt code, you may find that Symbian leaving
+ code and Qt exception throwing code are just too mixed up to have
+ them interoperate through barriers. In some circumstances you can allow
+ code to both leave and throw exceptions. But you must be aware of the
+ following issues:
+
+ \list
+ \o Depending on whether a leave or exception is thrown, or a normal
+ exit happens, the cleanup order will vary. If the code leaves,
+ cleanup stack cleanup will happen first. On an exception however,
+ cleanup stack cleanup will happen last.
+ \o There must not be any destructor dependencies between different
+ code styles. That is, you must not have symbian objects using Qt
+ objects in their destructors, and vice versa. This is because the
+ cleanup order varies, and may result in objects being used after
+ they are deleted.
+ \o The cleanup stack must not refer to any stack based object. For
+ instance, in Symbian you may use \c CleanupClosePushL() to push
+ stack based R-classes onto the cleanup stack. However if the
+ stack has unwound due to an exception before the cleanup stack
+ cleanup happens, stack based objects will now be invalid.
+ Instead of using the cleanup stack, consider Symbian's new
+ \c LManagedHandle<> (or a custom cleanup object) to tie R-class
+ cleanup to the stack.
+ \o Mixed throwing code must be called within both a TRAP and a
+ try/catch harness. Standard exceptions must not propagate to
+ the TRAP and cleanup stack cleanup will only happen if a leave
+ is thrown, so the correct pattern is either \c {TRAPD(err,
+ QT_TRYCATCH_LEAVING( f ));} or \c {QT_TRAP_THROWING(
+ QT_TRYCATCH_LEAVING( f ));}, depending if you want an error
+ code or exception as a result.
+ \endlist
+*/
diff --git a/doc/src/platforms/symbian-introduction.qdoc b/doc/src/platforms/symbian-introduction.qdoc
new file mode 100644
index 000000000..c0c4fb30c
--- /dev/null
+++ b/doc/src/platforms/symbian-introduction.qdoc
@@ -0,0 +1,197 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group qtsymbian
+ \title Qt for the Symbian platform
+ \ingroup qt-embedded
+ \brief Documents related to Qt on the Symbian platform
+
+ Qt for Symbian is a C++ framework for GUI and application development
+ for embedded devices running Symbian. Qt for Symbian provides all
+ functionality required to develop rich end-user applications for devices
+ running S60 3.1 and later.
+
+ \table 100%
+ \header \o Getting Started \o Reference \o Development
+ \row
+ \o
+ \list
+ \o \l {Qt for the Symbian platform Requirements}
+ \o \l {Installing Qt on the Symbian platform from a Binary Package}
+ \o \l {Installing Qt on the Symbian platform}
+ \o \l {The Symbian platform - Introduction to Qt}{Introduction to using Qt}
+ \endlist
+ \o
+ \list
+ \o \l {Exception Safety with Symbian}
+ \o \l {Platform Notes - Symbian} {Qt for the Symbian platform - state of support}
+ \o \l {qmake Platform Notes#Symbian platform} {Qt for Symbian extensions for qmake}
+ \endlist
+ \o
+ \list
+ \o \l {Deploying an Application on the Symbian platform}{Deploying Applications}
+ \endlist
+ \endtable
+*/
+
+/*!
+ \page symbian-with-qt-introduction.html
+
+ \title The Symbian platform - Introduction to Qt
+ \brief An introduction to Qt for the Symbian platform developers.
+ \ingroup howto
+ \ingroup qtsymbian
+
+ \tableofcontents
+
+ \section1 Required tools
+
+ See \l{Qt for the Symbian platform Requirements} to see what tools are
+ required to use Qt for the Symbian platform.
+
+ \section1 Installing Qt and running demos
+
+ Follow the instructions found in \l{Installing Qt on the Symbian platform from a Binary Package}
+ to learn how to install Qt using a binary package and how to build and run Qt demos.
+
+ Follow the instructions found in \l{Installing Qt on the Symbian platform} to learn how to install Qt using
+ using source package and how to build and run the Qt demos.
+
+ \section1 Building your own applications
+
+ If you are new to Qt development, have a look at \l{How to Learn Qt}.
+ In general, the difference between developing a
+ Qt application on the Symbian platform compared to any of the other platforms supported
+ by Qt is not that big.
+
+ Once you have created a \c .pro file for your project, generate the
+ Symbian specific \c Bld.inf and \c .mmp files this way:
+
+ \snippet doc/src/snippets/code/doc_src_symbian-introduction.qdoc 0
+
+ For more information on how to use qmake have a look at the \l
+ {qmake Tutorial}.
+
+ Now you can build the Qt for the Symbian platform application with
+ standard build tools. By default, running \c make will produce binaries for
+ the emulator. However, the Symbian platform comes with several alternative
+ build targets, as shown in the table below:
+
+ \table
+ \row \o \c debug-winscw \o Build debug binaries for the emulator (default).
+ It is currently not possible to build release
+ binaries for the emulator.
+ \row \o \c debug-gcce \o Build debug binaries for hardware using GCCE.
+ \row \o \c release-gcce \o Build release binaries for hardware using GCCE.
+ \row \o \c debug-armv5 \o Build debug binaries for hardware using RVCT.
+ \row \o \c release-armv5 \o Build release binaries for hardware using RVCT.
+ \row \o \c run \o Run the emulator binaries from the build directory.
+ \row \o \c sis \o Create signed \c .sis file for project.
+ \endtable
+
+ The following lines perform a debug build for the emulator
+ and deploy all the needed files:
+
+ \snippet doc/src/snippets/code/doc_src_symbian-introduction.qdoc 1
+
+ To work on your project in Carbide, simply import the \c .pro file
+ by right clicking on the project explorer and executing "Import...".
+
+ \section1 Installing your own applications
+
+ To install your own applications on hardware, you need a signed \c .sis file.
+ (Refer to the \l{http://developer.symbian.org/wiki/index.php/Platform_Security_%28Fundamentals_of_Symbian_C%2B%2B%29#Self-Signed_Applications}
+ {Platform Security Article} for more informations about self-signing.)
+ The signed \c .sis file can be created with \c make \c sis target. \c sis target
+ is only supported for executables or projects with \c DEPLOYMENT statements.
+ By default the \c sis target will create signed \c .sis file for last build
+ target. For example, the following sequence will generate the needed makefiles,
+ build the project for \c debug-winscw and \c release-armv5, and create
+ self-signed \c .sis file for \c release-armv5 target:
+
+ \snippet doc/src/snippets/code/doc_src_symbian-introduction.qdoc 2
+
+ If you want to use different certificate information or override the default
+ target for \c .sis file creation you can use the environment variables as
+ shown in the table below:
+
+ \table
+ \row \o \c QT_SIS_OPTIONS \o Options accepted by \c .sis creation. See
+ \l{Supported options for QT_SIS_OPTIONS}{Supported options}
+ below. By default no otions are given.
+ \row \o \c QT_SIS_TARGET \o Target for which \c .sis file is created.
+ Accepted values are build targets listed in
+ previous table. By default last build target.
+ \row \o \c QT_SIS_CERTIFICATE \o The certificate file used for signing.
+ By default self-signed certificate.
+ \row \o \c QT_SIS_KEY \o The certificate's private key file.
+ By default key is associated to self-signed certificate.
+ \row \o \c QT_SIS_PASSPHRASE \o The certificate's private key file's passphrase.
+ By default empty.
+ \endtable
+
+ The suppported options for \c QT_SIS_OPTIONS:
+
+ \target Supported options for QT_SIS_OPTIONS
+ \table
+ \row \o -i \o Install the package right away using PC suite.
+ \row \o -p \o Only preprocess the template \c .pkg file.
+ \row \o -c=<file> \o Read certificate information from a file.
+ \endtable
+
+ Execute the \c{createpackage.pl} script without any
+ parameters for detailed information about options. By default no otions are given.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_symbian-introduction.qdoc 4
+
+ The environment variables for \c make can also be given as parameters:
+
+ \snippet doc/src/snippets/code/doc_src_symbian-introduction.qdoc 3
+
+ If you want to install the program immediately, make sure that the device
+ is connected to the computer in "PC Suite" mode, and run \c sis target
+ with the \c QT_SIS_OPTIONS=-i, like this:
+
+ \snippet doc/src/snippets/code/doc_src_symbian-introduction.qdoc 5
+*/
diff --git a/doc/src/platforms/wince-customization.qdoc b/doc/src/platforms/wince-customization.qdoc
new file mode 100644
index 000000000..fec3dc05f
--- /dev/null
+++ b/doc/src/platforms/wince-customization.qdoc
@@ -0,0 +1,264 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 windowsce-customization.html
+ \ingroup qtce
+ \title Windows CE - Working with Custom SDKs
+ \brief How to set up Qt for use with custom Windows CE SDKs.
+
+ When working with a custom SDK for Windows CE, Qt provides an easy way
+ to add support for it to your development environment. The following is
+ a tutorial that covers how to create a specification for Qt on Windows
+ CE platforms.
+
+ \tableofcontents
+
+ \section1 Creating a Custom Build Specification
+
+ Create a subdirectory in the \c mkspecs folder of the Qt directory.
+ New specifications for Qt for Windows CE following this naming convention:
+
+ \snippet doc/src/snippets/code/doc_src_wince-customization.qdoc 0
+
+ Using this convention makes it possible for \l{qmake} to identify that
+ you are building Qt for Windows CE, and will customize the compilation
+ process accordingly.
+
+ Create the files \c qmake.conf and \c qplatformdefs.h inside the new
+ specification directory. Take a look at the implementation of the other
+ Windows CE specifications included in the \c mkspecs directory to see
+ what is required to build Qt for Windows CE successfully.
+
+
+ \section1 Fine-Tuning Options
+
+ Compared to the desktop versions, Qt for Windows CE needs two additional
+ options:
+
+ \list
+ \o \bold{CE_SDK} specifies the name of the SDK.
+ \o \bold{CE_ARCH} specifies information about the target architecture.
+ \endlist
+
+ Following is an example configuration for the Windows Mobile 5 for
+ Pocket PC SDK:
+
+ \snippet doc/src/snippets/code/doc_src_wince-customization.qdoc 1
+
+ \note \l{qmake} uses this information to build a valid Visual Studio
+ project file. You need to ensure that they are identical to the
+ configuration of the custom SDK, otherwise you might not be able to compile
+ or debug your project with Visual Studio.
+
+ Additionally, most Windows CE SDKs use extra compiler options. These
+ can be specified by expanding the \c DEFINES value.
+
+ For example, with Windows Mobile 5 for Pocket PC, the \c DEFINES variable
+ is expanded in the following way:
+
+ \snippet doc/src/snippets/code/doc_src_wince-customization.qdoc 2
+
+ The mkspec may require additional configuration to be used inside of Visual
+ Studio, depending on the Windows CE SDK. The above example defines
+ \c _M_ARM. This definition is available internally in Visual Studio. Hence,
+ the compiler will warn you about redefinition during the build step. These
+ warnings can be disabled by adding a \c default_post.prf file containing
+ the following lines, within the subdirectory.
+
+ \snippet doc/src/snippets/code/doc_src_wince-customization.qdoc 8
+
+
+ \section1 Cross-compilation Environment for a Custom SDK
+
+ Qt for Windows CE supports a convenience script, \c{setcepaths.bat}, that
+ prepares the environment in a command prompt for cross-compilation.
+ However, on custom SDKs, the \c checksdk tool is provided to identify the
+ environment, so Qt compiles successfully.
+
+ \c checksdk is generated during the \c configure step and allows for the
+ following options:
+
+ \list
+ \o \c list: Returns a list of available Windows CE SDKs. (This list
+ may contain one or more SDKs not supported on Qt for Windows CE,
+ e.g., Pocket PC 2003.)
+ \o \c sdk: The parameter to specify an SDK. Returns a setup of
+ environment variables that must be set to cross-compile Qt.
+ \o \c script: Stores your setup in a \c{.bat} file. This simplifies
+ the process of switching environments when you load a command
+ prompt in future.
+ \endlist
+
+
+ \section1 Compiling Qt for a Custom SDK
+
+ Windows CE is highly customizable, hence it is possible that some SDKs have
+ feature-stripped setups. Depending on the SDK's configuration, Qt may not
+ compile in its standard configuration, as Qt for Windows CE is designed to
+ be compatible with the Standard SDK setup.
+
+ However, it is possible to exclude features of Qt and create a version that
+ compiles for the desired SDK.
+
+ Further information on stripping features can be found in the
+ \l{Fine-Tuning Features in Qt}{QFeatures} documentation.
+
+
+ \section1 Making Qt Applications Start on a Custom Device
+
+ Sometimes, a Windows CE device has been created with a configuration
+ different from the corresponding SDK's configuration. In this case, symbols
+ that were available at linking stage will be missing from the run-time
+ libraries.
+
+ Unfortunately, the operating system will not provide an error message that
+ mentions which symbols are absent. Instead, a message box with the following
+ message will appear:
+
+ \c{app.exe is not a valid CE application!}
+
+ To identify the missing symbols, you need to create a temporary
+ application that attempts to dynamically load the Qt for Windows CE
+ libraries using \c LoadLibrary. The following code can be used for this:
+
+ \snippet doc/src/snippets/code/doc_src_wince-customization.qdoc 9
+
+ Once you have compiled and deployed the application as well as the Qt
+ libraries, start a remote debugger. The debugger will then print the
+ ordinal number of the unresolved symbol.
+
+ Search for parts of Qt that rely on these functions and disable them using
+ the \l{Fine-Tuning Features in Qt}{QFeatures} functionality.
+
+ In our experience, when Qt applications do not start on Windows CE, it is
+ usually the result of missing symbols for the following classes or
+ features:
+ \list
+ \o \l{Drag and Drop}
+ \o \l{QClipboard}
+ \o \l{QCursor}
+ \endlist
+
+ Please refer to the Microsoft documentation
+ \l{http://msdn.microsoft.com/en-us/library/e7tsx612.aspx}{here} for
+ information on what ordinals are and how you can create them. Information
+ on accessing the corresponding symbol name to a given ordinal value can
+ also be found in the Microsoft documentation.
+
+*/
+
+/*!
+ \page shadow builds-wince.html
+ \ingroup qtce
+ \title Windows CE - Using shadow builds
+ \brief How to create a shadow build for Qt for Windows CE.
+
+ \tableofcontents
+
+ While developing for Windows CE you might want to compile a
+ version of Qt for several different platforms and SDKs. In order
+ to create those different builds of Qt you do not have to copy the
+ whole Qt package or the Qt source. You are able to create multiple
+ Qt builds from a single source tree. Such builds are called shadow
+ builds.
+
+ Basically a shadow build is created by calling configure.exe from a
+ different directory.
+
+ To make sure that the shadow build compiles correctly it is important
+ that you following these guidelines:
+
+ \list
+ \o The original Qt source package must be left untouched - configure must
+ never have been run in the source tree directory.
+
+ \o The shadow build directory must be on the same level as the Qt source
+ package.\br
+ If the Qt package is in \c{C:\Qt\%VERSION%} the shadow build directory
+ could be \c{C:\Qt\shadowbuild}. A shadow build from a directory like
+ \c{C:\shadowbuild} will not compile.
+ \o Avoid using "release" and "debug" in the path to the shadow build
+ directory. (This is an internal limitation of the build system.)
+ \o The \c{\bin} directory of the shadow build directory must be added to the
+ \c PATH environment variable.
+ \o Perl has been installed on your system. (\l{ActivePerl} is a popular
+ distribution of Perl on Windows.)
+ \endlist
+
+ So lets assume you have installed Qt in \c{C:\Qt\%VERSION%} and you want
+ to create a shadow build in \c{C:\Qt\mobile5-shadow}:
+
+ \list
+ \o First add \c{C:\Qt\mobile5-shadow\bin} to the \c PATH variable.
+
+ \snippet doc/src/snippets/code/doc_src_wince-customization.qdoc 3
+
+ \o Make sure the enviroment variables for your compiler are set.
+
+ Visual Studio includes \c{vcvars32.bat} for that purpose - or simply use
+ the "Visual Studio Command Prompt" from the Start menu.
+
+ \o Now navigate to your shadow build directory and run configure:
+
+ \snippet doc/src/snippets/code/doc_src_wince-customization.qdoc 4
+
+ \o To build Qt, you have to update your \c{PATH, INCLUDE} and \c LIB paths
+ to point to your target platforms.
+
+ For a default installation of the Windows Mobile 5.0 Pocket PC SDK, you
+ can do the following:
+
+ \snippet doc/src/snippets/code/doc_src_wince-customization.qdoc 5
+
+ We have provided a convenience script for this called \c{setcepaths}. Simply
+ type:
+
+ \snippet doc/src/snippets/code/doc_src_wince-customization.qdoc 6
+
+ \o Finally, to build the shadow build type:
+
+ \snippet doc/src/snippets/code/doc_src_wince-customization.qdoc 7
+
+ \o That's all. You have successfully created a shadow build of Qt in
+ \c{C:\Qt\mobile5-shadow}.
+ \endlist
+*/
diff --git a/doc/src/platforms/wince-introduction.qdoc b/doc/src/platforms/wince-introduction.qdoc
new file mode 100644
index 000000000..886b0840b
--- /dev/null
+++ b/doc/src/platforms/wince-introduction.qdoc
@@ -0,0 +1,145 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group qtce
+ \title Qt for Windows CE
+ \ingroup qt-embedded
+ \brief Documents related to Qt on Windows CE
+
+ Qt for Windows CE is a C++ framework for GUI and application development
+ for embedded devices running Windows CE. It runs on a variety of processors,
+ including ARM, Intel x86, MIPS and SH-4.
+
+ \table 100%
+ \header \o Getting Started \o Reference \o Performance and Optimization
+ \row
+ \o
+ \list
+ \o \l {Qt for Windows CE Requirements}
+ \o \l {Installing Qt on Windows CE}
+ \o \l {Windows CE - Introduction to using Qt}{Introduction to using Qt}
+ \endlist
+ \o
+ \list
+ \o \l {Windows CE - Using shadow builds}{Using shadow builds}
+ \o \l {Windows CE - Working with Custom SDKs}{Working with Custom SDKs}
+ \endlist
+ \o
+ \list
+ \o \l {Qt for Windows CE Hardware Accelerated Graphics}{Hardware Accelerated Graphics}
+ \o \l {Qt Performance Tuning}
+ \o \l {Fine-Tuning Features in Qt}
+ \endlist
+ \endtable
+*/
+
+/*!
+ \page wince-with-qt-introduction.html
+
+ \title Windows CE - Introduction to using Qt
+ \brief An introduction to Qt for Windows CE developers.
+ \ingroup qtce
+
+ \tableofcontents
+
+ \section1 Required tools
+
+ In order to use Qt for Windows CE you need to have Visual Studio
+ 2005 or 2008 and at least one of the supported Windows
+ CE/Mobile SDKs installed.
+ Note, that the Visual Studio 2008 Standard Edition doesn't come
+ with Windows CE support. You will need the Professional Edition,
+ if you're using Visual Studio 2008.
+
+ We recommend the \e{Windows Mobile 5.0 SDK for Pocket PC} SDK available
+ \l{http://www.microsoft.com/downloads/details.aspx?FamilyID=83a52af2-f524-4ec5-9155-717cbe5d25ed&amp;DisplayLang=en}{here}.
+
+ \section1 Installing Qt
+
+ Follow the instructions found in \l{Installing Qt on Windows CE}.
+
+ \section1 Building your own applications
+
+ If you are new to Qt development, have a look at \l{How to Learn Qt}
+ and \l{Tutorials}. In general there is little or no difference in
+ developing Qt applications for Windows CE compared to any of the
+ other platforms supported by Qt.
+
+ Once you have a \c .pro file, there are two ways of building your
+ application. You can either do it on the command line or inside of
+ Visual Studio. To do it on the command line, simply write:
+
+ \snippet doc/src/snippets/code/doc_src_wince-introduction.qdoc 0
+
+ To build the project inside of Visual Studio, on the command line write:
+
+ \snippet doc/src/snippets/code/doc_src_wince-introduction.qdoc 1
+
+ then start Visual Studio with the generated \c .vcproj or \c .sln file and
+ select \e{Build project}.
+
+ For more information on how to use qmake have a look at the \l
+ {qmake Tutorial}.
+
+ \section1 Running the application
+
+ In order to run the application, it needs to be deployed on the
+ Windows CE/Mobile device you want to test it for. This can either
+ be done manually or automated using Visual Studio.
+
+ To do it manually, simply copy the executable, the Qt \c{.dll}
+ files needed for the application to run, and the C-runtime library
+ into a folder on the device, and then click on the executable to
+ start the program. You can either use the \e Explorer found in
+ ActiveSync or the \e{Remote File Viewer} found in Visual Studio to do
+ this.
+
+ Visual Studio can do this step automatically for you as well. If you have
+ built the project inside Visual Studio, simply select \e Deploy and then
+ \e Debug to deploy and then run the application. You can change the
+ device type by changing the \e{Target Device} specified in the
+ Visual Studio toolbar.
+
+ Further information on deploying Qt applications for Windows can
+ be found in the \l{Deploying an Application on Windows}
+ {deployment document}.
+*/
diff --git a/doc/src/platforms/wince-opengl.qdoc b/doc/src/platforms/wince-opengl.qdoc
new file mode 100644
index 000000000..0ea2ec65e
--- /dev/null
+++ b/doc/src/platforms/wince-opengl.qdoc
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 windowsce-opengl.html
+ \title Qt for Windows CE and OpenGL ES
+ \ingroup qtce
+ \brief Information about support for OpenGL ES with Qt for Windows CE.
+
+ \input platforms/emb-opengl.qdocinc
+
+\section1 Using OpenGL with Qt for Windows CE
+Qt for Windows CE uses EGL 1.1 to embed OpenGL ES windows within the
+Windows CE window manager.
+
+\section2 Configure
+
+To configure Qt for Windows Mobile 5.0 and OpenGL ES Common Lite support
+you can run \c{configure} like this:
+
+ \snippet doc/src/snippets/code/doc_src_wince-opengl.qdoc 0
+
+OpenGL ES includes profiles for floating-point and fixed-point arithmetic.
+The floating point profile is called OpenGL ES CM (Common) and the
+fixed-point profile is called OpenGL ES CL (Common Lite).
+
+You can run \c{configure} with the \c{-opengl-es-cm} option for the Common
+profile or \c{-opengl-es-cl} for the Common Lite profile. In both cases,
+ensure that the \c{lib} and \c{includes} paths include the OpenGL ES
+headers and libararies from your SDK. The OpenGL ES lib should be called
+either \c{libGLES_CM.lib} for the Common profile or \c{libGLES_CL.lib} for
+the Common Lite profile.
+
+The distinction between the Common and Common Lite profiles is important,
+because the Common Lite profile has less functionality and only supports a
+fixed-point vertex format.
+
+To start programming with Qt and OpenGL ES on Windows CE, you can start
+with the \l{Hello GL ES Example}. This example shows how to use QGLWidget
+and QGLPainter with OpenGL ES. It also provides some hints on how to port
+OpenGL code to OpenGL ES.
+
+\section2 Using OpenGL to Accelerate Normal 2D Painting
+
+Qt provides QOpenGLPaintEngine, a subclass of QPaintEngine that translates
+QPainter operations into OpenGL calls. This is especially convenient for
+drawing text or QImage objects in an OpenGL ES context. For further
+details, refer to the \l{Hello GL ES Example}.
+
+*/
diff --git a/doc/src/platforms/wince-openvg.qdoc b/doc/src/platforms/wince-openvg.qdoc
new file mode 100644
index 000000000..047c6553a
--- /dev/null
+++ b/doc/src/platforms/wince-openvg.qdoc
@@ -0,0 +1,65 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 windowsce-openvg.html
+ \title Qt for Windows CE and OpenVG
+ \ingroup qtce
+ \brief Information about support for OpenVG with Qt for Windows CE.
+
+ \input platforms/emb-openvg.qdocinc
+
+\section1 Using OpenVG with Qt for Windows CE
+Qt for Windows CE uses EGL 1.1 to embed OpenVG windows within the Windows
+CE window manager.
+
+\note Make sure that your Windows CE SDK have a working EGL implementation.
+If not, OpenVG will not work.
+
+\note There is currently no support for Blitting and Alpha blending in Qt
+for Windows CE.
+
+\note To configure Qt for Windows Mobile 5.0 and OpenVG support you can run
+\c{configure} like this:
+
+ \snippet doc/src/snippets/code/doc_src_wince-opengl.qdoc 0
+
+*/
diff --git a/doc/src/platforms/wince-signing.qdoc b/doc/src/platforms/wince-signing.qdoc
new file mode 100644
index 000000000..fa383b34e
--- /dev/null
+++ b/doc/src/platforms/wince-signing.qdoc
@@ -0,0 +1,96 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 windowsce-signing.html
+ \ingroup qtce
+ \title Windows CE - Signing
+ \brief How to sign Qt projects for use with Windows CE.
+
+ \section1 Signing on Windows CE
+
+Windows CE provides a security mechanism to ask the user to confirm
+that they want to use an application/library that is unknown to the
+system. This process gets repeated for each dependency of an
+application, meaning each library the application links to, which is
+not recognized yet.
+
+To simplify this process you can use signatures and certificates. A
+certificate gets installed on the device and each file which is
+signed with the according certificate can be launched without the
+security warning.
+
+If you want to use signatures for your project written in Qt,
+configure provides the \c -signature option. You need to specify the
+location of the .pfx file and qmake adds the signing step to the
+build rules.
+
+If you need to select a separate signature for a specific project,
+or you only want to sign a single project, you can use the
+"SIGNATURE_FILE = foo.pfx" rule inside the project file.
+
+The above described rules apply for command line makefiles as well as
+Visual Studio projects generated by qmake.
+
+Microsoft usually ships development signatures inside the SDK packages.
+You can find them in the Tools subdirectory of the SDK root folder.
+
+Example:
+
+\list
+\o Calling configure with signing enabled:
+\code
+configure.exe -platform win32-msvc2005 -xplatform wincewm50pocket-msvc2005 -signature C:\some\path\SDKSamplePrivDeveloper.pfx
+\endcode
+
+\o Using pro file to specify signature
+\code
+...
+TARGET = foo
+
+wince*: {
+ SIGNATURE_FILE = somepath\customSignature.pfx
+}
+...
+\endcode
+\endlist
+
+*/
diff --git a/doc/src/platforms/winsystem.qdoc b/doc/src/platforms/winsystem.qdoc
new file mode 100644
index 000000000..2f43a74c0
--- /dev/null
+++ b/doc/src/platforms/winsystem.qdoc
@@ -0,0 +1,110 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 winsystem.html
+ \title Window System Specific Notes
+ \ingroup platform-specific
+ \brief Collections of notes about Qt implementations on different window systems.
+
+ Qt is a cross-platform GUI toolkit, so almost the entire API is the
+ same on all platforms and window systems. If you wish to use
+ platform-specific features, and still maintain a platform-independent
+ source tree, you should protect the platform-specific code using the
+ appropriate \c{#ifdef} directives (see below).
+
+ Qt provides a few low-level global functions for fine-tuning
+ applications on specific platforms. See \l{Platform-Specific
+ Functions} for details.
+
+ \tableofcontents
+
+ For information about which platforms are supported by Qt, see the
+ \l{Platform Notes}. For information on distributing Qt applications, see
+ \l{Deploying Qt Applications}.
+
+ \target x11
+ \section1 Qt for X11
+
+ When compiling for this platform, the macro \c{Q_WS_X11} is defined.
+
+ \e{Not documented here. Please contact Qt's technical support team
+ if you have queries.}
+
+ See the \l{Qt for X11 Requirements} page for more information about the
+ libraries required to build Qt with as many features as possible.
+
+ \target win
+ \section1 Qt for Windows
+
+ When compiling for this platform, the macro \c{Q_WS_WIN} is defined.
+
+ \e{Not documented here. Please contact Qt's technical support team
+ if you have queries.}
+
+ \target macosx
+ \section1 Qt for Mac OS X
+
+ When compiling for this platform, the macro \c{Q_WS_MAC} is defined.
+
+ \list
+ \i \l{Qt for Mac OS X - Specific Issues}
+ \i \l{Qt is Mac OS X Native}
+ \endlist
+
+ \target qws
+ \section1 Qt for Embedded Linux
+
+ When compiling for this platform, the macro \c{Q_WS_QWS} is
+ defined (the window system is literally the Qt Window System). See
+ the \l{Qt for Embedded Linux} documentation for more information.
+
+ \section1 Qt for Windows CE
+
+ When compiling for this platform, the macro \c{Q_WS_WINCE} is defined.
+ See the \l{Qt for Windows CE} documentation for more information.
+
+ \section1 Qt for the Symbian platform
+
+ When compiling for this platform, the macro \c{Q_WS_S60} is defined.
+ See the \l{The Symbian platform - Introduction to Qt} documentation for
+ more information.
+*/
diff --git a/doc/src/platforms/x11overlays.qdoc b/doc/src/platforms/x11overlays.qdoc
new file mode 100644
index 000000000..8e3196b3a
--- /dev/null
+++ b/doc/src/platforms/x11overlays.qdoc
@@ -0,0 +1,98 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 x11overlays.html
+ \title How to Use X11 Overlays with Qt
+
+ X11 overlays are a powerful mechanism for drawing
+ annotations etc., on top of an image without destroying it, thus saving
+ a great deal of image rendering time. For more information, see the highly
+ recommended book \e{OpenGL Programming for the X Window System} (Mark
+ Kilgard, Addison Wesley Developers Press 1996).
+
+ \warning The Qt OpenGL Extension includes direct support for the
+ use of OpenGL overlays. For many uses of overlays, this makes the
+ technique described below redundant. The following is a discussion
+ on how to use non-QGL widgets in overlay planes.
+
+ In the typical case, X11 overlays can easily be used together with the
+ current version of Qt and the Qt OpenGL Extension. The following
+ requirements apply:
+
+ \list 1
+ \i Your X server and graphics card/hardware must support overlays.
+ For many X servers, overlay support can be turned on with
+ a configuration option; consult your X server installation
+ documentation.
+
+ \i Your X server must (be configured to) use an overlay visual as the
+ default visual. Most modern X servers do this, since this has the
+ added advantage that pop-up menus, overlapping windows etc., will
+ \e not affect underlying images in the main plane, thereby
+ avoiding expensive redraws.
+
+ \i The best (deepest) visual for OpenGL rendering is in the main
+ plane. This is the normal case. Typically, X servers that support
+ overlays provide a 24-bit \c TrueColor visual in the main plane,
+ and an 8-bit \c PseudoColor (default) visual in the overlay plane.
+ \endlist
+
+ Assuming that the requirements mentioned above are met, a
+ QGLWidget will default to using the main plane visual, while all
+ other widgets will use the overlay visual. Thus, we can place a
+ normal widget on top of the QGLWidget, and do drawing on it,
+ without affecting the image in the OpenGL window. In other words,
+ we can use all the drawing capabilities of QPainter to draw
+ annotations, rubberbands, etc. For the typical use of overlays,
+ this is much easier than using OpenGL for rendering annotations.
+
+ An overlay plane has a specific color called the transparent
+ color. Pixels drawn in this color will not be visible; instead
+ the underlying OpenGL image will show through.
+
+ To use this technique, you must not use the
+ QApplication::ManyColor or QApplication::TrueColor color
+ specification for QApplication, because this will force the
+ normal Qt widgets to use a \c TrueColor visual, which will
+ typically be in the main plane, not in the overlay plane as
+ desired.
+*/
diff --git a/doc/src/plugins-howto.qdoc b/doc/src/plugins-howto.qdoc
deleted file mode 100644
index 2a099bc0a..000000000
--- a/doc/src/plugins-howto.qdoc
+++ /dev/null
@@ -1,470 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page plugins-howto.html
- \title How to Create Qt Plugins
- \brief A guide to creating plugins to extend Qt applications and functionality provided by Qt.
- \ingroup howto
-
- \keyword QT_DEBUG_PLUGINS
- \keyword QT_NO_PLUGIN_CHECK
-
- Qt provides two APIs for creating plugins:
-
- \list
- \o A higher-level API for writing extensions to Qt itself: custom database
- drivers, image formats, text codecs, custom styles, etc.
- \o A lower-level API for extending Qt applications.
- \endlist
-
- For example, if you want to write a custom QStyle subclass and
- have Qt applications load it dynamically, you would use the
- higher-level API.
-
- Since the higher-level API is built on top of the lower-level API,
- some issues are common to both.
-
- If you want to provide plugins for use with \QD, see the QtDesigner
- module documentation.
-
- Topics:
-
- \tableofcontents
-
- \section1 The Higher-Level API: Writing Qt Extensions
-
- Writing a plugin that extends Qt itself is achieved by
- subclassing the appropriate plugin base class, implementing a few
- functions, and adding a macro.
-
- There are several plugin base classes. Derived plugins are stored
- by default in sub-directories of the standard plugin directory. Qt
- will not find plugins if they are not stored in the right
- directory.
-
- \table
- \header \o Base Class \o Directory Name \o Key Case Sensitivity
- \row \o QAccessibleBridgePlugin \o \c accessiblebridge \o Case Sensitive
- \row \o QAccessiblePlugin \o \c accessible \o Case Sensitive
- \row \o QDecorationPlugin \o \c decorations \o Case Insensitive
- \row \o QFontEnginePlugin \o \c fontengines \o Case Insensitive
- \row \o QIconEnginePlugin \o \c iconengines \o Case Insensitive
- \row \o QImageIOPlugin \o \c imageformats \o Case Sensitive
- \row \o QInputContextPlugin \o \c inputmethods \o Case Sensitive
- \row \o QKbdDriverPlugin \o \c kbddrivers \o Case Insensitive
- \row \o QMouseDriverPlugin \o \c mousedrivers \o Case Insensitive
- \row \o QScreenDriverPlugin \o \c gfxdrivers \o Case Insensitive
- \row \o QScriptExtensionPlugin \o \c script \o Case Sensitive
- \row \o QSqlDriverPlugin \o \c sqldrivers \o Case Sensitive
- \row \o QStylePlugin \o \c styles \o Case Insensitive
- \row \o QTextCodecPlugin \o \c codecs \o Case Sensitive
- \endtable
-
- But where is the \c{plugins} directory? When the application
- is run, Qt will first treat the application's executable directory
- as the \c{pluginsbase}. For example if the application is in
- \c{C:\Program Files\MyApp} and has a style plugin, Qt will look in
- \c{C:\Program Files\MyApp\styles}. (See
- QCoreApplication::applicationDirPath() for how to find out where
- the application's executable is.) Qt will also look in the
- directory specified by
- QLibraryInfo::location(QLibraryInfo::PluginsPath), which typically
- is located in \c QTDIR/plugins (where \c QTDIR is the directory
- where Qt is installed). If you want Qt to look in additional
- places you can add as many paths as you need with calls to
- QCoreApplication::addLibraryPath(). And if you want to set your
- own path or paths you can use QCoreApplication::setLibraryPaths().
- You can also use a \c qt.conf file to override the hard-coded
- paths that are compiled into the Qt library. For more information,
- see the \l {Using qt.conf} documentation. Yet another possibility
- is to set the \c QT_PLUGIN_PATH environment variable before running
- the application. If set, Qt will look for plugins in the
- paths (separated by the system path separator) specified in the variable.
-
- Suppose that you have a new style class called \c MyStyle that you
- want to make available as a plugin. The required code is
- straightforward, here is the class definition (\c
- mystyleplugin.h):
-
- \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 0
-
- Ensure that the class implementation is located in a \c .cpp file
- (including the class definition):
-
- \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 1
-
- (Note that QStylePlugin is case insensitive, and the lower-case
- version of the key is used in our
- \l{QStylePlugin::create()}{create()} implementation; most other
- plugins are case sensitive.)
-
- For database drivers, image formats, text codecs, and most other
- plugin types, no explicit object creation is required. Qt will
- find and create them as required. Styles are an exception, since
- you might want to set a style explicitly in code. To apply a
- style, use code like this:
-
- \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 2
-
- Some plugin classes require additional functions to be
- implemented. See the class documentation for details of the
- virtual functions that must be reimplemented for each type of
- plugin.
-
- Qt applications automatically know which plugins are available,
- because plugins are stored in the standard plugin subdirectories.
- Because of this applications don't require any code to find and load
- plugins, since Qt handles them automatically.
-
- The default directory for plugins is \c{QTDIR/plugins} (where \c
- QTDIR is the directory where Qt is installed), with each type of
- plugin in a subdirectory for that type, e.g. \c styles. If you
- want your applications to use plugins and you don't want to use
- the standard plugins path, have your installation process
- determine the path you want to use for the plugins, and save the
- path, e.g. using QSettings, for the application to read when it
- runs. The application can then call
- QCoreApplication::addLibraryPath() with this path and your
- plugins will be available to the application. Note that the final
- part of the path (e.g., \c styles) cannot be changed.
-
- The normal way to include a plugin with an application is either
- to \l{Static Plugins}{compile it in with the application} or to
- compile it into a dynamic library and use it like any other
- library.
-
- If you want the plugin to be loadable then one approach is to
- create a subdirectory under the application and place the plugin
- in that directory. If you distribute any of the plugins that come
- with Qt (the ones located in the \c plugins directory), you must
- copy the sub-directory under \c plugins where the plugin is
- located to your applications root folder (i.e., do not include the
- \c plugins directory).
-
- For more information about deployment,
- see the \l {Deploying Qt Applications} documentation.
-
- The \l{Style Plugin Example} shows how to implement a plugin
- that extends the QStylePlugin base class.
-
- \section1 The Lower-Level API: Extending Qt Applications
-
- Not only Qt itself but also Qt application can be extended
- through plugins. This requires the application to detect and load
- plugins using QPluginLoader. In that context, plugins may provide
- arbitrary functionality and are not limited to database drivers,
- image formats, text codecs, styles, and the other types of plugin
- that extend Qt's functionality.
-
- Making an application extensible through plugins involves the
- following steps:
-
- \list 1
- \o Define a set of interfaces (classes with only pure virtual
- functions) used to talk to the plugins.
- \o Use the Q_DECLARE_INTERFACE() macro to tell Qt's
- \l{meta-object system} about the interface.
- \o Use QPluginLoader in the application to load the plugins.
- \o Use qobject_cast() to test whether a plugin implements a given
- interface.
- \endlist
-
- Writing a plugin involves these steps:
-
- \list 1
- \o Declare a plugin class that inherits from QObject and from the
- interfaces that the plugin wants to provide.
- \o Use the Q_INTERFACES() macro to tell Qt's \l{meta-object
- system} about the interfaces.
- \o Export the plugin using the Q_EXPORT_PLUGIN2() macro.
- \o Build the plugin using a suitable \c .pro file.
- \endlist
-
- For example, here's the definition of an interface class:
-
- \snippet examples/tools/plugandpaint/interfaces.h 2
-
- Here's the definition of a plugin class that implements that
- interface:
-
- \snippet examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.h 0
-
- The \l{tools/plugandpaint}{Plug & Paint} example documentation
- explains this process in detail. See also \l{Creating Custom
- Widgets for Qt Designer} for information about issues that are
- specific to \QD. You can also take a look at the \l{Echo Plugin
- Example} is a more trivial example on how to implement a plugin
- that extends Qt applications. Please note that a QCoreApplication
- must have been initialized before plugins can be loaded.
-
- \section1 Loading and Verifying Plugins Dynamically
-
- When loading plugins, the Qt library does some sanity checking to
- determine whether or not the plugin can be loaded and used. This
- provides the ability to have multiple versions and configurations of
- the Qt library installed side by side.
-
- \list
- \o Plugins linked with a Qt library that has a higher version number
- will not be loaded by a library with a lower version number.
-
- \br
- \bold{Example:} Qt 4.3.0 will \e{not} load a plugin built with Qt 4.3.1.
-
- \o Plugins linked with a Qt library that has a lower major version
- number will not be loaded by a library with a higher major version
- number.
-
- \br
- \bold{Example:} Qt 4.3.1 will \e{not} load a plugin built with Qt 3.3.1.
- \br
- \bold{Example:} Qt 4.3.1 will load plugins built with Qt 4.3.0 and Qt 4.2.3.
-
- \o The Qt library and all plugins are built using a \e {build
- key}. The build key in the Qt library is examined against the build
- key in the plugin, and if they match, the plugin is loaded. If the
- build keys do not match, then the Qt library refuses to load the
- plugin.
-
- \br \bold{Rationale:} See the \l{#The Build Key}{The Build Key} section below.
- \endlist
-
- When building plugins to extend an application, it is important to ensure
- that the plugin is configured in the same way as the application. This means
- that if the application was built in release mode, plugins should be built
- in release mode, too.
-
- If you configure Qt to be built in both debug and release modes,
- but only build applications in release mode, you need to ensure that your
- plugins are also built in release mode. By default, if a debug build of Qt is
- available, plugins will \e only be built in debug mode. To force the
- plugins to be built in release mode, add the following line to the plugin's
- project file:
-
- \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 3
-
- This will ensure that the plugin is compatible with the version of the library
- used in the application.
-
- \section2 The Build Key
-
- When loading plugins, Qt checks the build key of each plugin against its
- own configuration to ensure that only compatible plugins are loaded; any
- plugins that are configured differently are not loaded.
-
- The build key contains the following information:
- \list
- \o Architecture, operating system and compiler.
-
- \e {Rationale:}
- In cases where different versions of the same compiler do not
- produce binary compatible code, the version of the compiler is
- also present in the build key.
-
- \o Configuration of the Qt library. The configuration is a list
- of the missing features that affect the available API in the
- library.
-
- \e {Rationale:}
- Two different configurations of the same version of
- the Qt library are not binary compatible. The Qt library that
- loads the plugin uses the list of (missing) features to
- determine if the plugin is binary compatible.
-
- \e {Note:} There are cases where a plugin can use features that are
- available in two different configurations. However, the
- developer writing plugins would need to know which features are
- in use, both in their plugin and internally by the utility
- classes in Qt. The Qt library would require complex feature
- and dependency queries and verification when loading plugins.
- Requiring this would place an unnecessary burden on the developer, and
- increase the overhead of loading a plugin. To reduce both
- development time and application runtime costs, a simple string
- comparision of the build keys is used.
-
- \o Optionally, an extra string may be specified on the configure
- script command line.
-
- \e {Rationale:}
- When distributing binaries of the Qt library with an
- application, this provides a way for developers to write
- plugins that can only be loaded by the library with which the
- plugins were linked.
- \endlist
-
- For debugging purposes, it is possible to override the run-time build key
- checks by configuring Qt with the \c QT_NO_PLUGIN_CHECK preprocessor macro
- defined.
-
- \section1 Static Plugins
-
- Plugins can be linked statically against your application. If you
- build the static version of Qt, this is the only option for
- including Qt's predefined plugins.
-
- When compiled as a static library, Qt provides the following
- static plugins:
-
- \table
- \header \o Plugin name \o Type \o Description
- \row \o \c qtaccessiblecompatwidgets \o Accessibility \o Accessibility for Qt 3 support widgets
- \row \o \c qtaccessiblewidgets \o Accessibility \o Accessibility for Qt widgets
- \row \o \c qdecorationdefault \o Decorations (Qt Extended) \o Default style
- \row \o \c qdecorationwindows \o Decorations (Qt Extended) \o Windows style
- \row \o \c qgif \o Image formats \o GIF
- \row \o \c qjpeg \o Image formats \o JPEG
- \row \o \c qmng \o Image formats \o MNG
- \row \o \c qico \o Image formats \o ICO
- \row \o \c qsvg \o Image formats \o SVG
- \row \o \c qtiff \o Image formats \o TIFF
- \row \o \c qimsw_multi \o Input methods (Qt Extended) \o Input Method Switcher
- \row \o \c qwstslibmousehandler \o Mouse drivers (Qt Extended) \o \c tslib mouse
- \row \o \c qgfxtransformed \o Graphic drivers (Qt Extended) \o Transformed screen
- \row \o \c qgfxvnc \o Graphic drivers (Qt Extended) \o VNC
- \row \o \c qscreenvfb \o Graphic drivers (Qt Extended) \o Virtual frame buffer
- \row \o \c qsqldb2 \o SQL driver \o IBM DB2 \row \o \c qsqlibase \o SQL driver \o Borland InterBase
- \row \o \c qsqlite \o SQL driver \o SQLite version 3
- \row \o \c qsqlite2 \o SQL driver \o SQLite version 2
- \row \o \c qsqlmysql \o SQL driver \o MySQL
- \row \o \c qsqloci \o SQL driver \o Oracle (OCI)
- \row \o \c qsqlodbc \o SQL driver \o Open Database Connectivity (ODBC)
- \row \o \c qsqlpsql \o SQL driver \o PostgreSQL
- \row \o \c qsqltds \o SQL driver \o Sybase Adaptive Server (TDS)
- \row \o \c qcncodecs \o Text codecs \o Simplified Chinese (People's Republic of China)
- \row \o \c qjpcodecs \o Text codecs \o Japanese
- \row \o \c qkrcodecs \o Text codecs \o Korean
- \row \o \c qtwcodecs \o Text codecs \o Traditional Chinese (Taiwan)
- \endtable
-
- To link statically against those plugins, you need to use the
- Q_IMPORT_PLUGIN() macro in your application and you need to add
- the required plugins to your build using \c QTPLUGIN.
- For example, in your \c main.cpp:
-
- \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 4
-
- In the \c .pro file for your application, you need the following
- entry:
-
- \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 5
-
- It is also possible to create your own static plugins, by
- following these steps:
-
- \list 1
- \o Add \c{CONFIG += static} to your plugin's \c .pro file.
- \o Use the Q_IMPORT_PLUGIN() macro in your application.
- \o Link your application with your plugin library using \c LIBS
- in the \c .pro file.
- \endlist
-
- See the \l{tools/plugandpaint}{Plug & Paint} example and the
- associated \l{tools/plugandpaintplugins/basictools}{Basic Tools}
- plugin for details on how to do this.
-
- \note If you are not using qmake to build your application you need
- to make sure that the \c{QT_STATICPLUGIN} preprocessor macro is
- defined.
-
- \sa QPluginLoader, QLibrary, {Plug & Paint Example}
-
- \section1 The Plugin Cache
-
- In order to speed up loading and validation of plugins, some of
- the information that is collected when plugins are loaded is cached
- through QSettings. This includes information about whether or not
- a plugin was successfully loaded, so that subsequent load operations
- don't try to load an invalid plugin. However, if the "last modified"
- timestamp of a plugin has changed, the plugin's cache entry is
- invalidated and the plugin is reloaded regardless of the values in
- the cache entry, and the cache entry itself is updated with the new
- result.
-
- This also means that the timestamp must be updated each time the
- plugin or any dependent resources (such as a shared library) is
- updated, since the dependent resources might influence the result
- of loading a plugin.
-
- Sometimes, when developing plugins, it is necessary to remove entries
- from the plugin cache. Since Qt uses QSettings to manage the plugin
- cache, the locations of plugins are platform-dependent; see
- \l{QSettings#Platform-Specific Notes}{the QSettings documentation}
- for more information about each platform.
-
- For example, on Windows the entries are stored in the registry, and the
- paths for each plugin will typically begin with either of these two strings:
-
- \snippet doc/src/snippets/code/doc_src_plugins-howto.qdoc 6
-
- \section1 Debugging Plugins
-
- There are a number of issues that may prevent correctly-written plugins from
- working with the applications that are designed to use them. Many of these
- are related to differences in the way that plugins and applications have been
- built, often arising from separate build systems and processes.
-
- The following table contains descriptions of the common causes of problems
- developers experience when creating plugins:
-
- \table
- \header \o Problem \o Cause \o Solution
- \row \o Plugins sliently fail to load even when opened directly by the
- application. \QD shows the plugin libraries in its
- \gui{Help|About Plugins} dialog, but no plugins are listed under each
- of them.
- \o The application and its plugins are built in different modes.
- \o Either share the same build information or build the plugins in both
- debug and release modes by appending the \c debug_and_release to
- the \l{qmake Variable Reference#CONFIG}{CONFIG} variable in each of
- their project files.
- \row \o A valid plugin that replaces an invalid (or broken) plugin fails to load.
- \o The entry for the plugin in the plugin cache indicates that the original
- plugin could not be loaded, causing Qt to ignore the replacement.
- \o Either ensure that the plugin's timestamp is updated, or delete the
- entry in the \l{#The Plugin Cache}{plugin cache}.
- \endtable
-
- You can also use the \c QT_DEBUG_PLUGINS environment variable to obtain
- diagnostic information from Qt about each plugin it tries to load. Set this
- variable to a non-zero value in the environment from which your application is
- launched.
-*/
diff --git a/doc/src/porting-qsa.qdoc b/doc/src/porting-qsa.qdoc
deleted file mode 100644
index d22e2db89..000000000
--- a/doc/src/porting-qsa.qdoc
+++ /dev/null
@@ -1,475 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \title Moving from QSA to Qt Script
- \page porting-qsa.html
- \ingroup porting
-
- The purpose of this document is to map the differences between Qt
- Script for Applications (QSA) and Qt Script, the ECMAScript compatible
- engine supplied with Qt 4.3. This document is not supposed to be a
- complete function by function porting guide, but will cover the most
- obvious aspects.
-
- First of all it is important to realize that Qt Script is only an
- interpreter, it does not provide an editor, completion or script project
- management, like QSA does. Qt Script however does provides almost full
- compliance with the ECMAScript standard and performs significantly
- better than the script engine provided by QSA.
-
- \tableofcontents
-
- \section1 The Scripting Language
-
- The scripting language used in QSA, from here on referred to as QSA,
- was derived from ECMAScript 3.0 and 4.0 and is a hybrid of these
- standards. Most of the run-time logic, such as classes and scoping
- rules, is based on the ECMAScript 4.0 proposal, while the library
- implementation is based on the ECMAScript 3.0 standard.
- Qt Script on the other hand is solely based on the ECMAScript 3.0
- standard. Though the languages look identical at first glance,
- there are a few differences that we'll cover in the sections below.
-
-
- \section2 Classes vs. Objects and Properties
-
- QSA implements classes and inheritance much in a familiar way to users
- of other object oriented languages, like C++ and Java. However, the
- ECMAScript 3.0 standard defines that everything is an object, and objects
- can have named properties. For instance to create an point object with
- the properties x and y one would write the following Qt Script code:
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 0
-
- The object \c point in this case is constructed as a plain object and
- we assign two properties, \c x and \c y, to it with the values 12 and
- 35. The \c point object is assigned to the "Global Object" as the
- named property \c{point}. The global object can be considered the
- global namespace of the script engine. Similarly, global functions are
- named properties of the global object; for example:
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 1
-
- An equivalent construction that illustrates that the function is a
- property of the global object is the following assignment:
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 2
-
- Since functions are objects, they can be assigned to objects as
- properties, becoming member functions:
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 3
-
- In the code above, we see the first subtle difference between
- QSA and Qt Script. In QSA one would write the point class like this:
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 4
-
- where in the \c manhattanLength() function we access \c x and \c y
- directly because, when the function is called, the \c this object is
- implicitly part of the current scope, as in C++. In Qt Script,
- however, this is not the case, and we need to explicitly access
- the \c x and \c y values via \c{this}.
-
- All the code above runs with QSA except the assignment of a function
- to \c{point.manhattanLength}, which we repeat here for clarity:
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 5
-
- This is because, in QSA, the value of \c this is decided based on
- the location of the declaration of the function it is used in. In the
- code above, the function is assigned to an object, but it is declared
- in the global scope, hence there will be no valid \c this value.
- In Qt Script, the value of \c this is decided at run-time,
- hence you could have assigned the \c manhattanLength() function to any
- object that had \c x and \c y values.
-
-
- \section2 Constructors
-
- In the code above, we use a rather awkward method for constructing
- the objects, by first instantiating them, then manually
- assigning properties to them. In QSA, the proper way to solve this
- is to implement a constructor in the class:
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 6
-
- The equivalent in Qt Script is to create a constructor function:
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 7
-
- As we can see, the constructor is just a normal function. What is
- special with is how we call it, namely prefixed with the \c new
- keyword. This will create a new object and call the \c Car()
- function with the newly created object as the \c this pointer.
- So, in a sense, it is equivalent to:
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 8
-
- This is similar to the manhattenLength() example above. Again, the
- main difference between QSA and Qt Script is that one has to
- explicitly use the keyword \c this to access the members and that
- instead of declaring the variable, \c regNumber, we just extend the
- \c this object with the property.
-
-
- \section2 Member Functions and Prototypes
-
- As we saw above, one way of creating member functions of a Qt Script
- object is to assign the member function to the object as a property
- and use the \c this object inside the functions. So, if we add a
- \c toString function to the \c Car class
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 9
-
- one could write this in Qt Script as:
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 10
-
- In QSA, the member functions were part of the class declaration,
- and were therefore shared between all instances of a given class.
- In Qt Script, each instance has a instance member for each function.
- This means that more memory is used when multiple instances are used.
- Qt Script uses prototypes to remedy this.
-
- The basic prototype-based inheritance mechanism works as follows.
- Each Qt Script object has an internal link to another object, its
- prototype. When a property is looked up in an object, and the object
- itself does not have the property, the interpreter searches for the
- property in the prototype object instead; if the prototype has the
- property then that property is returned. If the prototype object does
- not have the property, the interpreter searches for the property in
- the prototype of the prototype object, and so on.
-
- This chain of objects constitutes a prototype chain. The chain of
- prototype objects is followed until the property is found or the end
- of the chain is reached.
-
- To make the \c toString() function part of the prototype, we write
- code like this:
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 11
-
- Here, we made the \c toString() function part of the prototype so
- that, when we call \c{car.toString()} it will be resolved via the
- internal prototype object of the car object. Note, however, that the
- \c this object is still the original object that the function was
- called on, namely \c{car}.
-
-
- \section2 Inheritance
-
- Now that we've seen how to use prototypes to create a "class" members
- in Qt Script, let's see how we can use prototypes to create
- polymorphism. In QSA you would write
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 12
-
- With Qt Script, we acheive the same effect by creating a prototype
- chain. The default prototype of an object is a plain \c Object
- without any special members, but it is possible to replace this
- object with another prototype object.
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 13
-
- In the code above, we have a constructor, \c{GasolineCar}, which
- calls the "base class" implementation of the constructor to
- initialize the \c this object with the property \c{regNumber},
- based on the values passed in the constructor. The interesting line
- in this case is the line after the constructor where we change the
- default prototype for \c GasolineCar to be an instance of type
- \c{Car}. This means that all members available in a \c Car object
- are now available in all \c GasolineCar objects. In the last line,
- we replace the \c toString() function in the prototype with our own,
- thus overriding the \c toString() for all instances of
- \c{GasolineCar}.
-
-
- \section2 Static Members
-
- QSA allowed users to declare static members in classes, and these
- could be accessed both through instances of the class and through
- the class itself. For example, the following variable is accessed
- through the \c Car class:
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 14
-
- The equivalent in Qt Script is to assign variables that should appear
- as static members as properties of the constructor function. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 15
-
- Note that in QSA, static member variables were also accessible in
- instances of the given class. In Qt Script, with the approach
- illustrated above, the variable is a member of the constructor
- object only, and thus only accessible through \c{Car.globalCount}.
-
-
- \section1 The Built-in Functions and Library
-
- The built-in functions in QSA are based on those defined in the
- ECMAScript 3.0 standard, the same standard used for Qt Script, but
- QSA adds some extensions to this, specifically for the \c String
- and \c RegExp types. QSA also lacked some functions from the
- standard, most notably the \c Date type. Below we list all the
- differences. All changes made to Qt Script are to increase
- compliance with ECMAScript 3.0.
-
- \table
- \header \o QSA Function \o Notes about Equivalent Qt Script Functions
- \row \o eval()
- \o The eval function in QSA opened a new scope for code being
- executed in the eval function, so locally declared variables were not
- accessible outside. In Qt Script, the eval() function shares the
- current scope, making locally declared variables accessible outside
- the eval() call.
-
- \row \o debug()
- \o This function is not available in Qt Script. Use print() instead.
-
- \row \o connect()
- \o QSA had closures, meaning that a member function
- reference implicitly contained its \c this object. Qt Script does not
- support this. See the Qt Script documentation for details on using the
- connect function.
-
- \row \o String.arg()
- \o This function is not available in Qt Script. Use replace() or concat() instead.
-
- \row \o String.argDec()
- \o This function is not available in Qt Script. Use replace() or concat() instead.
-
- \row \o String.argInt()
- \o This function is not available in Qt Script. Use replace() or concat() instead.
-
- \row \o String.argStr()
- \o This function is not available in Qt Script. Use replace() or concat() instead.
-
- \row \o String.endsWith()
- \o This function is not available in Qt Script. Use lastIndexOf() instead.
-
- \row \o String.find()
- \o This function is not available in Qt Script. Use indexOf() instead.
-
- \row \o String.findRev()
- \o This function is not available in Qt Script. Use lastIndexOf() and length instead.
-
- \row \o String.isEmpty()
- \o This function is not available in Qt Script. Use length == 0 instead.
-
- \row \o String.left()
- \o This function is not available in Qt Script. Use substring() instead.
-
- \row \o String.lower()
- \o This function is not available in Qt Script. Use toLowerCase() instead.
-
- \row \o String.mid()
- \o This function is not available in Qt Script. Use substring() instead.
-
- \row \o String.right()
- \o This function is not available in Qt Script. Use substring() instead.
-
- \row \o String.searchRev()
- \o This function is not available in Qt Script. Use search() / match() instead.
-
- \row \o String.startsWith()
- \o This function is not available in Qt Script. Use indexOf() == 0 instead.
-
- \row \o String.upper()
- \o This function is not available in Qt Script. Use toUpperCase() instead.
-
- \row \o RegExp.valid
- \o This property is not available in Qt Script because it is not
- required; a \c SyntaxError exception is thrown for bad \c RegExp objects.
-
- \row \o RegExp.empty
- \o This property is not available in Qt Script. Use \c{toString().length == 0} instead.
-
- \row \o RegExp.matchedLength
- \o This property is not available in Qt Script. RegExp.exec() returns an
- array whose size is the matched length.
-
- \row \o RegExp.capturedTexts
- \o This property is not available in Qt Script. RegExp.exec() returns an
- array of captured texts.
-
- \row \o RegExp.search()
- \o This function is not available in Qt Script. Use RegExp.exec() instead.
-
- \row \o RegExp.searchRev()
- \o This function is not available in Qt Script. Use RegExp.exec() or
- String.search()/match() instead.
-
- \row \o RegExp.exactMatch()
- \o This function is not available in Qt Script. Use RegExp.exec() instead.
-
- \row \o RegExp.pos()
- \o This function is not available in Qt Script. Use String.match() instead.
-
- \row \o RegExp.cap()
- \o This function is not available in Qt Script. RegExp.exec() returns an
- array of captured texts.
- \endtable
-
- QSA also defined some internal Qt API which is not present in Qt
- Script. The types provided by QSA which are not provided by Qt Script are:
-
- \list
- \o Rect
- \o Point
- \o Size
- \o Color
- \o Palette
- \o ColorGroup
- \o Font
- \o Pixmap
- \o ByteArray
- \endlist
-
-
- \section1 The C++ API of QSA vs Qt Script
-
- QSA is more than just a scripting engine. It provides project
- management, an editor with completion and a minimalistic IDE to edit
- scriptable projects. Qt Script on the other hand is just a scripting
- engine. This means that equivalents to the classes \c QSEditor,
- \c QSScript, \c QSProject and \c QSWorkbench do not exist in Qt Script.
- QSA also provides some extension APIs through the \c QSUtilFactory and
- \c QSInputDialogFactory. There is also no equivalent to these classes
- in the Qt Script API.
-
-
- \section2 Making QObjects Accessible from Scripts
-
- There are two different ways of making \l{QObject}s accessible from
- scripts in QSA. The first method is via the
- \c QSInterpreter::addTransientObject() and \c QSProject::addObject()
- functions. In this case objects are added to the global namespace of
- the interpreter using their object names as the names of the
- variables.
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 16
-
- The code above adds the button to the global namespace under the name
- "button". One obvious limitation here is that there is potential for
- either unnamed \l{QObject}s or objects whose names conflict. Qt Script
- provides a more flexible way of adding QObjects to the scripting
- environment.
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 17
-
- In the code above we create a QPushButton and wrap it in a script
- value using the function, QScriptEngine::newQObject(). This gives us
- a script value that we put into the global object using the name
- "button". The concept of objects and properties discussed above is
- quite visible here in the public C++ API as well. We have no
- dependency on the object's name and we can also resolve name conflicts
- more gracefully. Here, we operate directly on QScriptValue objects.
- This is the actual object that is being passed around inside
- the script engine, so we actually have low-level access to the
- internal script data structures, far beyond that which is possible
- in QSA. Properties, signals and slots of the QObject are accessible
- to the scripter in Qt Script, just like in QSA.
-
- The other way to expose \l{QObject}s in QSA was to create a
- \c QSObjectFactory that made it possible to instantiate QObjects from
- scripts.
-
- Below is listed some code from the filter example in the QSA
- package.
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 18
-
- The equivalent in Qt Script is written in much the same way as
- constructors are written in scripts. We register a callback C++
- function under the name "ImageSource" in the global namespace and
- return the QObject from this function:
-
- \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 19
-
- In the Qt Script case we use the same approach that we use to expose
- a QObject, namely via QScriptEngine::newQObject(). This function also
- has the benefit that it is possible to specify if the QObject should
- expose properties and slots of its base class. It is also possible to
- specify custom ownership rules.
-
- The reader might question why we don't add the constructor function
- directly into the namespace, but create a meta-object script value for
- it in addition. The plain function would certainly be good enough,
- but by creating a QMetaObject based constructor we get the enums on
- QPushButton for free in the QPushButton function object. Exposing
- enums in QSA is rather painful in comparison.
-
- If we want to add more "static" data to the QPushButton type in Qt
- Script, we're free to add properties, similar to how we did for
- the script. It is also possible to add custom functions to a Qt Script
- QPushButton instance by setting more properties on it, such as making
- the \l{QPushButton::}{setText()} C++ function available. It is also
- possible to acheive this by installing a custom prototype, and be
- memory efficient, as discussed in the script example above.
-
-
- \section2 Accessing Non-QObjects
-
- In QSA, it was possible to expose non-QObjects to QSA by wrapping them
- in a QObject and using either \c QSWrapperFactory or \c QSObjectFactory
- to expose them. Deciding when to use each of these classes could be
- confusing, as one was used for script based construction and the other
- for wrapping function parameters and return values, but in essence they
- did exactly the same thing.
-
- In Qt Script, providing access to QObjects and non-QObjects is done in
- the same way as shown above, by creating a constructor function, and
- by adding properties or a custom prototype to the constructed object.
-
-
- \section2 Data Mapping
-
- QSA supported a hardcoded set of type mappings which covered most
- of the QVariant types, QObjects and primitives. For more complex type
- signatures, such as the template-based tool classes, it had rather
- limited support. Qt Script is significantly better at type mapping
- and will convert lists of template types into arrays of the
- appropriate types, given that all the types are declared to the
- meta-type system.
-*/
diff --git a/doc/src/porting/porting-qsa.qdoc b/doc/src/porting/porting-qsa.qdoc
new file mode 100644
index 000000000..af90e1d14
--- /dev/null
+++ b/doc/src/porting/porting-qsa.qdoc
@@ -0,0 +1,475 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \title Moving from QSA to Qt Script
+ \page porting-qsa.html
+ \ingroup porting
+
+ The purpose of this document is to map the differences between Qt
+ Script for Applications (QSA) and Qt Script, the ECMAScript compatible
+ engine supplied with Qt 4.3. This document is not supposed to be a
+ complete function by function porting guide, but will cover the most
+ obvious aspects.
+
+ First of all it is important to realize that Qt Script is only an
+ interpreter, it does not provide an editor, completion or script project
+ management, like QSA does. Qt Script however does provides almost full
+ compliance with the ECMAScript standard and performs significantly
+ better than the script engine provided by QSA.
+
+ \tableofcontents
+
+ \section1 The Scripting Language
+
+ The scripting language used in QSA, from here on referred to as QSA,
+ was derived from ECMAScript 3.0 and 4.0 and is a hybrid of these
+ standards. Most of the run-time logic, such as classes and scoping
+ rules, is based on the ECMAScript 4.0 proposal, while the library
+ implementation is based on the ECMAScript 3.0 standard.
+ Qt Script on the other hand is solely based on the ECMAScript 3.0
+ standard. Though the languages look identical at first glance,
+ there are a few differences that we'll cover in the sections below.
+
+
+ \section2 Classes vs. Objects and Properties
+
+ QSA implements classes and inheritance much in a familiar way to users
+ of other object oriented languages, like C++ and Java. However, the
+ ECMAScript 3.0 standard defines that everything is an object, and objects
+ can have named properties. For instance to create an point object with
+ the properties x and y one would write the following Qt Script code:
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 0
+
+ The object \c point in this case is constructed as a plain object and
+ we assign two properties, \c x and \c y, to it with the values 12 and
+ 35. The \c point object is assigned to the "Global Object" as the
+ named property \c{point}. The global object can be considered the
+ global namespace of the script engine. Similarly, global functions are
+ named properties of the global object; for example:
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 1
+
+ An equivalent construction that illustrates that the function is a
+ property of the global object is the following assignment:
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 2
+
+ Since functions are objects, they can be assigned to objects as
+ properties, becoming member functions:
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 3
+
+ In the code above, we see the first subtle difference between
+ QSA and Qt Script. In QSA one would write the point class like this:
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 4
+
+ where in the \c manhattanLength() function we access \c x and \c y
+ directly because, when the function is called, the \c this object is
+ implicitly part of the current scope, as in C++. In Qt Script,
+ however, this is not the case, and we need to explicitly access
+ the \c x and \c y values via \c{this}.
+
+ All the code above runs with QSA except the assignment of a function
+ to \c{point.manhattanLength}, which we repeat here for clarity:
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 5
+
+ This is because, in QSA, the value of \c this is decided based on
+ the location of the declaration of the function it is used in. In the
+ code above, the function is assigned to an object, but it is declared
+ in the global scope, hence there will be no valid \c this value.
+ In Qt Script, the value of \c this is decided at run-time,
+ hence you could have assigned the \c manhattanLength() function to any
+ object that had \c x and \c y values.
+
+
+ \section2 Constructors
+
+ In the code above, we use a rather awkward method for constructing
+ the objects, by first instantiating them, then manually
+ assigning properties to them. In QSA, the proper way to solve this
+ is to implement a constructor in the class:
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 6
+
+ The equivalent in Qt Script is to create a constructor function:
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 7
+
+ As we can see, the constructor is just a normal function. What is
+ special with is how we call it, namely prefixed with the \c new
+ keyword. This will create a new object and call the \c Car()
+ function with the newly created object as the \c this pointer.
+ So, in a sense, it is equivalent to:
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 8
+
+ This is similar to the manhattenLength() example above. Again, the
+ main difference between QSA and Qt Script is that one has to
+ explicitly use the keyword \c this to access the members and that
+ instead of declaring the variable, \c regNumber, we just extend the
+ \c this object with the property.
+
+
+ \section2 Member Functions and Prototypes
+
+ As we saw above, one way of creating member functions of a Qt Script
+ object is to assign the member function to the object as a property
+ and use the \c this object inside the functions. So, if we add a
+ \c toString function to the \c Car class
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 9
+
+ one could write this in Qt Script as:
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 10
+
+ In QSA, the member functions were part of the class declaration,
+ and were therefore shared between all instances of a given class.
+ In Qt Script, each instance has a instance member for each function.
+ This means that more memory is used when multiple instances are used.
+ Qt Script uses prototypes to remedy this.
+
+ The basic prototype-based inheritance mechanism works as follows.
+ Each Qt Script object has an internal link to another object, its
+ prototype. When a property is looked up in an object, and the object
+ itself does not have the property, the interpreter searches for the
+ property in the prototype object instead; if the prototype has the
+ property then that property is returned. If the prototype object does
+ not have the property, the interpreter searches for the property in
+ the prototype of the prototype object, and so on.
+
+ This chain of objects constitutes a prototype chain. The chain of
+ prototype objects is followed until the property is found or the end
+ of the chain is reached.
+
+ To make the \c toString() function part of the prototype, we write
+ code like this:
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 11
+
+ Here, we made the \c toString() function part of the prototype so
+ that, when we call \c{car.toString()} it will be resolved via the
+ internal prototype object of the car object. Note, however, that the
+ \c this object is still the original object that the function was
+ called on, namely \c{car}.
+
+
+ \section2 Inheritance
+
+ Now that we've seen how to use prototypes to create a "class" members
+ in Qt Script, let's see how we can use prototypes to create
+ polymorphism. In QSA you would write
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 12
+
+ With Qt Script, we acheive the same effect by creating a prototype
+ chain. The default prototype of an object is a plain \c Object
+ without any special members, but it is possible to replace this
+ object with another prototype object.
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 13
+
+ In the code above, we have a constructor, \c{GasolineCar}, which
+ calls the "base class" implementation of the constructor to
+ initialize the \c this object with the property \c{regNumber},
+ based on the values passed in the constructor. The interesting line
+ in this case is the line after the constructor where we change the
+ default prototype for \c GasolineCar to be an instance of type
+ \c{Car}. This means that all members available in a \c Car object
+ are now available in all \c GasolineCar objects. In the last line,
+ we replace the \c toString() function in the prototype with our own,
+ thus overriding the \c toString() for all instances of
+ \c{GasolineCar}.
+
+
+ \section2 Static Members
+
+ QSA allowed users to declare static members in classes, and these
+ could be accessed both through instances of the class and through
+ the class itself. For example, the following variable is accessed
+ through the \c Car class:
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 14
+
+ The equivalent in Qt Script is to assign variables that should appear
+ as static members as properties of the constructor function. For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 15
+
+ Note that in QSA, static member variables were also accessible in
+ instances of the given class. In Qt Script, with the approach
+ illustrated above, the variable is a member of the constructor
+ object only, and thus only accessible through \c{Car.globalCount}.
+
+
+ \section1 The Built-in Functions and Library
+
+ The built-in functions in QSA are based on those defined in the
+ ECMAScript 3.0 standard, the same standard used for Qt Script, but
+ QSA adds some extensions to this, specifically for the \c String
+ and \c RegExp types. QSA also lacked some functions from the
+ standard, most notably the \c Date type. Below we list all the
+ differences. All changes made to Qt Script are to increase
+ compliance with ECMAScript 3.0.
+
+ \table
+ \header \o QSA Function \o Notes about Equivalent Qt Script Functions
+ \row \o eval()
+ \o The eval function in QSA opened a new scope for code being
+ executed in the eval function, so locally declared variables were not
+ accessible outside. In Qt Script, the eval() function shares the
+ current scope, making locally declared variables accessible outside
+ the eval() call.
+
+ \row \o debug()
+ \o This function is not available in Qt Script. Use print() instead.
+
+ \row \o connect()
+ \o QSA had closures, meaning that a member function
+ reference implicitly contained its \c this object. Qt Script does not
+ support this. See the Qt Script documentation for details on using the
+ connect function.
+
+ \row \o String.arg()
+ \o This function is not available in Qt Script. Use replace() or concat() instead.
+
+ \row \o String.argDec()
+ \o This function is not available in Qt Script. Use replace() or concat() instead.
+
+ \row \o String.argInt()
+ \o This function is not available in Qt Script. Use replace() or concat() instead.
+
+ \row \o String.argStr()
+ \o This function is not available in Qt Script. Use replace() or concat() instead.
+
+ \row \o String.endsWith()
+ \o This function is not available in Qt Script. Use lastIndexOf() instead.
+
+ \row \o String.find()
+ \o This function is not available in Qt Script. Use indexOf() instead.
+
+ \row \o String.findRev()
+ \o This function is not available in Qt Script. Use lastIndexOf() and length instead.
+
+ \row \o String.isEmpty()
+ \o This function is not available in Qt Script. Use length == 0 instead.
+
+ \row \o String.left()
+ \o This function is not available in Qt Script. Use substring() instead.
+
+ \row \o String.lower()
+ \o This function is not available in Qt Script. Use toLowerCase() instead.
+
+ \row \o String.mid()
+ \o This function is not available in Qt Script. Use substring() instead.
+
+ \row \o String.right()
+ \o This function is not available in Qt Script. Use substring() instead.
+
+ \row \o String.searchRev()
+ \o This function is not available in Qt Script. Use search() / match() instead.
+
+ \row \o String.startsWith()
+ \o This function is not available in Qt Script. Use indexOf() == 0 instead.
+
+ \row \o String.upper()
+ \o This function is not available in Qt Script. Use toUpperCase() instead.
+
+ \row \o RegExp.valid
+ \o This property is not available in Qt Script because it is not
+ required; a \c SyntaxError exception is thrown for bad \c RegExp objects.
+
+ \row \o RegExp.empty
+ \o This property is not available in Qt Script. Use \c{toString().length == 0} instead.
+
+ \row \o RegExp.matchedLength
+ \o This property is not available in Qt Script. RegExp.exec() returns an
+ array whose size is the matched length.
+
+ \row \o RegExp.capturedTexts
+ \o This property is not available in Qt Script. RegExp.exec() returns an
+ array of captured texts.
+
+ \row \o RegExp.search()
+ \o This function is not available in Qt Script. Use RegExp.exec() instead.
+
+ \row \o RegExp.searchRev()
+ \o This function is not available in Qt Script. Use RegExp.exec() or
+ String.search()/match() instead.
+
+ \row \o RegExp.exactMatch()
+ \o This function is not available in Qt Script. Use RegExp.exec() instead.
+
+ \row \o RegExp.pos()
+ \o This function is not available in Qt Script. Use String.match() instead.
+
+ \row \o RegExp.cap()
+ \o This function is not available in Qt Script. RegExp.exec() returns an
+ array of captured texts.
+ \endtable
+
+ QSA also defined some internal Qt API which is not present in Qt
+ Script. The types provided by QSA which are not provided by Qt Script are:
+
+ \list
+ \o Rect
+ \o Point
+ \o Size
+ \o Color
+ \o Palette
+ \o ColorGroup
+ \o Font
+ \o Pixmap
+ \o ByteArray
+ \endlist
+
+
+ \section1 The C++ API of QSA vs Qt Script
+
+ QSA is more than just a scripting engine. It provides project
+ management, an editor with completion and a minimalistic IDE to edit
+ scriptable projects. Qt Script on the other hand is just a scripting
+ engine. This means that equivalents to the classes \c QSEditor,
+ \c QSScript, \c QSProject and \c QSWorkbench do not exist in Qt Script.
+ QSA also provides some extension APIs through the \c QSUtilFactory and
+ \c QSInputDialogFactory. There is also no equivalent to these classes
+ in the Qt Script API.
+
+
+ \section2 Making QObjects Accessible from Scripts
+
+ There are two different ways of making \l{QObject}s accessible from
+ scripts in QSA. The first method is via the
+ \c QSInterpreter::addTransientObject() and \c QSProject::addObject()
+ functions. In this case objects are added to the global namespace of
+ the interpreter using their object names as the names of the
+ variables.
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 16
+
+ The code above adds the button to the global namespace under the name
+ "button". One obvious limitation here is that there is potential for
+ either unnamed \l{QObject}s or objects whose names conflict. Qt Script
+ provides a more flexible way of adding QObjects to the scripting
+ environment.
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 17
+
+ In the code above we create a QPushButton and wrap it in a script
+ value using the function, QScriptEngine::newQObject(). This gives us
+ a script value that we put into the global object using the name
+ "button". The concept of objects and properties discussed above is
+ quite visible here in the public C++ API as well. We have no
+ dependency on the object's name and we can also resolve name conflicts
+ more gracefully. Here, we operate directly on QScriptValue objects.
+ This is the actual object that is being passed around inside
+ the script engine, so we actually have low-level access to the
+ internal script data structures, far beyond that which is possible
+ in QSA. Properties, signals and slots of the QObject are accessible
+ to the scripter in Qt Script, just like in QSA.
+
+ The other way to expose \l{QObject}s in QSA was to create a
+ \c QSObjectFactory that made it possible to instantiate QObjects from
+ scripts.
+
+ Below is listed some code from the filter example in the QSA
+ package.
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 18
+
+ The equivalent in Qt Script is written in much the same way as
+ constructors are written in scripts. We register a callback C++
+ function under the name "ImageSource" in the global namespace and
+ return the QObject from this function:
+
+ \snippet doc/src/snippets/code/doc_src_porting-qsa.qdoc 19
+
+ In the Qt Script case we use the same approach that we use to expose
+ a QObject, namely via QScriptEngine::newQObject(). This function also
+ has the benefit that it is possible to specify if the QObject should
+ expose properties and slots of its base class. It is also possible to
+ specify custom ownership rules.
+
+ The reader might question why we don't add the constructor function
+ directly into the namespace, but create a meta-object script value for
+ it in addition. The plain function would certainly be good enough,
+ but by creating a QMetaObject based constructor we get the enums on
+ QPushButton for free in the QPushButton function object. Exposing
+ enums in QSA is rather painful in comparison.
+
+ If we want to add more "static" data to the QPushButton type in Qt
+ Script, we're free to add properties, similar to how we did for
+ the script. It is also possible to add custom functions to a Qt Script
+ QPushButton instance by setting more properties on it, such as making
+ the \l{QPushButton::}{setText()} C++ function available. It is also
+ possible to acheive this by installing a custom prototype, and be
+ memory efficient, as discussed in the script example above.
+
+
+ \section2 Accessing Non-QObjects
+
+ In QSA, it was possible to expose non-QObjects to QSA by wrapping them
+ in a QObject and using either \c QSWrapperFactory or \c QSObjectFactory
+ to expose them. Deciding when to use each of these classes could be
+ confusing, as one was used for script based construction and the other
+ for wrapping function parameters and return values, but in essence they
+ did exactly the same thing.
+
+ In Qt Script, providing access to QObjects and non-QObjects is done in
+ the same way as shown above, by creating a constructor function, and
+ by adding properties or a custom prototype to the constructed object.
+
+
+ \section2 Data Mapping
+
+ QSA supported a hardcoded set of type mappings which covered most
+ of the QVariant types, QObjects and primitives. For more complex type
+ signatures, such as the template-based tool classes, it had rather
+ limited support. Qt Script is significantly better at type mapping
+ and will convert lists of template types into arrays of the
+ appropriate types, given that all the types are declared to the
+ meta-type system.
+*/
diff --git a/doc/src/porting/porting4-canvas.qdoc b/doc/src/porting/porting4-canvas.qdoc
new file mode 100644
index 000000000..d92c03e2a
--- /dev/null
+++ b/doc/src/porting/porting4-canvas.qdoc
@@ -0,0 +1,702 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 graphicsview-porting.html
+ \title Porting to Graphics View
+ \contentspage {Porting Guides}{Contents}
+ \previouspage Porting UI Files to Qt 4
+ \nextpage qt3to4 - The Qt 3 to 4 Porting Tool
+ \ingroup porting
+ \brief Hints and tips to assist with porting canvas applications to the
+ Graphics View framework.
+
+ \keyword QGraphicsView GraphicsView Porting Graphics Canvas
+ \since 4.2
+
+ Graphics View provides a surface for managing and interacting with a large
+ number of custom-made 2D graphical items, and a view widget for
+ visualizing the items, with support for zooming and rotation. Graphics
+ View was introduced in Qt 4.2, replacing its predecessor, QCanvas. For
+ more on Graphics View, see \l{The Graphics View Framework}.
+
+ This document walks through the steps needed, class by class and function
+ by function, to port a QCanvas application to Graphics View.
+
+ \tableofcontents
+
+ Qt 4.2 provides two complete examples of Q3Canvas applications ported to
+ Graphics View:
+
+ \list
+ \o \l{Ported Canvas Example}, the canvas example from Qt 3.
+ \o \l{Ported Asteroids Example}, the Asteroids game from the Qt 3 demo.
+ \endlist
+
+ \section1 Introduction
+
+ Conceptually, the Graphics View classes from Qt 4 and the Canvas
+ classes from Qt 3 provide similar functionality using a similar
+ design. Instead of "canvas", we use the term "scene". Otherwise, the
+ class names and functions are almost the same as in Qt 3. The easiest
+ classes to port will be QCanvas and QCanvasView. Experience shows that
+ most time is spent porting the item classes, depending on the
+ complexity of the QCanvasItem classes you have been using before.
+
+ This porting guide will assume you have already ported your
+ application to Qt 4, by making use of Q3Canvas. If you have not done
+ so already, as a first step, run the \l qt3to4 tool on your
+ project. This tool will automate the most tedious part of the porting
+ effort.
+
+ Some additional steps are usually required before your application
+ will compile and run. You can read more about the porting process in
+ \l{Porting to Qt 4}.
+
+ \section1 Porting from Q3Canvas
+
+ QGraphicsScene is the closest equivalent to Q3Canvas. There
+ are some noticable differences in this new API: Whereas the
+ Q3Canvas classes use integer precision, QGraphicsScene is
+ entirely based on double coordinates, with graphical
+ primitives such as QPointF instead of QPoint, QRectF instead
+ of QRect, and QPolygonF and QPainterPath. The canvas area is
+ defined by a scene rectangle, allowing negative coordinates,
+ as opposed to Q3Canvas, which only defines a size (QSize), and
+ whose top-left corner is always (0, 0).
+
+ In addition, there is no explicit support for canvas tiles
+ anymore; see \l{Porting scenes with tiles} for more
+ information. The chunks-based indexing system has been
+ replaced with an implicitly maintained internal BSP tree.
+
+ \section2 Porting table
+
+ \table
+ \header \o Q3Canvas \o QGraphicsScene
+
+ \row \o Q3Canvas::Q3Canvas() \o There is no QPixmap based
+ constructor, and the concept of tiles is gone. You can use
+ QGraphicsScene::backgroundBrush to set a brush pattern for
+ the background, or reimplement
+ QGraphicsScene::drawBackground() in a QGraphicsScene
+ subclass (see \l{Porting scenes with tiles}). In addition,
+ the QGraphicsScene geometry is provided as a full
+ QRectF. Instead of Q3Canvas(int width, int height), you can
+ use QGraphicsScene(int top, int left, int width, int
+ height).
+
+ \row \o Q3Canvas::allItems() \o QGraphicsScene::items()
+ returns a list of all items on the scene.
+
+ \row \o Q3Canvas::backgroundColor() \o You can assign a color for the
+ background through the QGraphicsScene::backgroundBrush
+ or QGraphicsView::backgroundBrush properties.
+
+ \row \o Q3Canvas::backgroundPixmap() \o You can set a tiled
+ pixmap for the background through
+ QGraphicsScene::backgroundBrush or
+ QGraphicsView::backgroundBrush. For more control on the pixmap
+ positioning, you can reimplement
+ QGraphicsScene::drawBackground() or
+ QGraphicsView::drawBackground().
+
+ \row \o Q3Canvas::chunkSize() \o The closest equivalent to the
+ chunks size in Q3Canvas is the depth of QGraphicsScene's BSP
+ tree. QGraphicsScene assigns a depth automatically, and the
+ size of each scene segment depends on this depth, and
+ QGraphicsScene::sceneRect(). See
+ QGraphicsScene::itemIndexMethod.
+
+ \row \o Q3Canvas::collisions() \o QGraphicsScene provides
+ several means to detect item collisions. The
+ QGraphicsScene::items() overloads return items that collide
+ with a point, a rectangle, a polygon, or an arbitrary vector
+ path (QPainterPath). You can also call
+ QGraphicsScene::collidingItems() to determine collision with
+ an item.
+
+ \row \o Q3Canvas::drawArea() \o The QGraphicsScene::render()
+ function provides the original behavior
+ Q3Canvas::drawArea(). In addition, you can pass a source
+ rectangle for rendering only parts of the scene, and a
+ destination rectangle for rendering onto designated area of
+ the destination device. QGraphicsScene::render() can
+ optionally transform the source rectangle to fit into the
+ destination rectangle. See \l{Printing}
+
+ \row \o Q3Canvas::onCanvas() \o The is no equivalent to this
+ function in Graphics View. However, you can combine
+ QGraphicsScene::sceneRect() and QRectF::intersects():
+ \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 0
+
+ \row \o Q3Canvas::rect() \o The equivalent,
+ QGraphicsScene::sceneRect(), returns a QRectF (double
+ precision coordinates). Its top-left corner can be an
+ arbitrary coordinate (Q3Canvas::rect().topLeft() is always (0,
+ 0)).
+
+ \row \o Q3Canvas::resize() \o You can call
+ QGraphicsScene::setSceneRect(0, 0, width, height) instead.
+
+ \row \o Q3Canvas::retune() \o See
+ QGraphicsScene::itemIndexMethod. You can tune the indexing by
+ setting a suitable sceneRect(). The optimal depth of
+ QGraphicsScene's BSP tree is determined automatically.
+
+ \row \o Q3Canvas::setAdvancePeriod() \o There is no concept of
+ an advance period in the new API; instead, you can connect
+ QTimer::timeout() to the QGraphicsScene::advance() slot to
+ obtain similar functionality. This will cause all items'
+ QGraphicsItem::advance() function to be called. See also
+ QGraphicsItemAnimation.
+
+ \row \o Q3Canvas::setAllChanged() \o You can call
+ QGraphicsScene::update() with no arguments.
+
+ \row \o Q3Canvas::setChanged() \o QGraphicsScene::update()
+ will trigger a repaint of the whole scene, or parts of the
+ scene.
+
+ \row \o Q3Canvas::setDoubleBuffering() \o Q3Canvas' double
+ buffering enabled cacheing of the scene contents in device
+ (i.e., viewport) coordinates. This cache layer has been moved
+ to the view instead; you can cache QGraphicsScene's background
+ through
+ QGraphicsView::setCacheMode(). QGraphicsView::resetCachedContent()
+ will reset the areas of the cache that has changed.
+
+ \row \o Q3Canvas::tile() \o See \l{Porting scenes with tiles}.
+
+ \row \o Q3Canvas::setTiles() \o See \l{Porting scenes with tiles}.
+
+ \row \o Q3Canvas::setUnchanged() \o There is no equivalent in
+ Graphics View. This call can usually be removed with no side
+ effects.
+
+ \row \o Q3Canvas::setUpdatePeriod() \o There is no concept of an
+ update period in the new API; instead, you can connect
+ QTimer::timeout() to the QGraphicsScene::update() slot to obtain
+ similar functionality. See also QGraphicsItemAnimation.
+
+ \row \o Q3Canvas::size() \o
+ \tt{QGraphicsScene::sceneRect().size()} returns a QSizeF, with
+ double precision coordinates.
+
+ \row \o Q3Canvas::validChunk() \o To determine if an area is
+ inside the scene area or not, you can combine
+ QRectF::intersects() with QGraphicsScene::sceneRect().
+
+ \row \o Q3Canvas::resized() \o QGraphicsScene emits
+ \l{QGraphicsScene::sceneRectChanged()}{sceneRectChanged()}
+ whenever the scene rect changes.
+
+ \row \o Q3Canvas::drawBackground() \o You can reimplement
+ QGraphicsScene::drawBackground() to render the scene
+ background. You can also reimplement
+ QGraphicsView::drawBackground() to override this background if
+ you need different backgrounds for different views.
+
+ \row \o Q3Canvas::drawForeground() \o You can reimplement
+ QGraphicsScene::drawForeground() to render the scene
+ foreground. You can also reimplement
+ QGraphicsView::drawForeground() to override this foreground if
+ you need different foregrounds for different views.
+
+ \endtable
+
+ \section2 Porting scenes with tiles
+
+ QGraphicsScene does not provide an API for tiles. However, you
+ can achieve similar behavior by drawing pixmaps in a reimplementation of
+ QGraphicsScene::drawBackground().
+
+ Q3Canvas' tile support is based on providing one pixmap
+ containing tiles of a fixed width and height, and then
+ accessing them (reading and replacing tiles) by index. The
+ tiles in the pixmap are arranged from the left to right, top
+ to bottom.
+
+ \table
+ \row \i 0 \i 1 \i 2 \i 3
+ \row \i 4 \i 5 \i 6 \i 7
+ \endtable
+
+ With Graphics View, this pixmap can be stored as a member of a
+ subclass of QGraphicsScene. The three main functions that make
+ out the public tile API can then be declared as new members of
+ this class. Here is one example of how to implement tile support:
+
+ \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 1
+
+ Depending on how your scene uses tiles, you may be able to
+ simplify this approach. In this example, we will try to mimic the behavior
+ of the Q3Canvas functions.
+
+ We start by creating a subclass of QGraphicsScene ("TileScene").
+ In this class, we declare two of the tile
+ functions from Q3Canvas, and we then add two helper function that returns the
+ rectangle for a certain tile in our tile pixmap. We will use a
+ two-dimensional vector of ints to keep track of what tiles should
+ be used at what parts of the scene.
+
+ \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 2
+
+ In setTiles(), we store the pixmap and tile properties as
+ members of the class. Then we resize the tiles vector
+ to match the width and height of our tile grid.
+
+ \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 3
+
+ The setTile() function updates the tiles index, and then
+ updates the corresponding rect in the scene by calling
+ tileRect().
+
+ \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 4
+
+ The first tileRect() function returns a QRect for the tile at
+ position (x, y).
+
+ \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 5
+
+ The second tileRect() function returns a QRect for a tile number.
+ With these functions in place, we can implement the drawBackground()
+ function.
+
+ \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 6
+
+ In drawBackground(), we redraw all tiles that have been
+ exposed by intersecting each tile rect with the exposed background
+ area.
+
+ \section1 Porting from Q3CanvasView
+
+ The closest equivalent to Q3CanvasView in Graphics View is
+ called QGraphicsView. In most cases, this is the easiest
+ class to port. In addition to providing all of Q3CanvasView's
+ functionality, QGraphicsView includes some useful new features. You
+ can read more about this in QGraphicsView's documentation.
+
+ \section2 Porting table
+
+ \table
+ \header \o Q3CanvasView \o QGraphicsView
+
+ \row \o Q3CanvasView::Q3CanvasView() \o QGraphicsView provides
+ the same constructors as Q3CanvasView, but without the name
+ and flags arguments. You can set the name by calling
+ \l{QWidget::setObjectName()}{setObjectName()}, and the flags by
+ calling \l{QWidget::setWindowFlags()}{setWindowFlags()}.
+
+ \row \o Q3CanvasView::canvas() \o QGraphicsView::scene()
+ returns the scene that is currently associated with the
+ view. QGraphicsScene also provides the opposite function,
+ QGraphicsScene::views(), which returns a list of views
+ observing the scene.
+
+ \row \o Q3CanvasView::inverseWorldMatrix() \o You can call
+ QGraphicsView::matrix() and QMatrix::inverted().
+ QGraphicsView::mapToScene() and QGraphicsView::mapFromScene()
+ allow transforming of viewport shapes to scene shapes, and
+ vice versa.
+
+ \row \o Q3CanvasView::setCanvas() \o QGraphicsView::setScene().
+
+ \row \o Q3CanvasView::setWorldMatrix() \o
+ QGraphicsView::setMatrix(), QGraphicsView::rotate(),
+ QGraphicsView::scale(), QGraphicsView::shear() and
+ QGraphicsView::translate().
+
+ \row \o Q3CanvasView::worldMatrix() \o QGraphicsView::matrix()
+
+ \row \o Q3CanvasView::drawContents() \o The
+ QGraphicsView::drawBackground() function draws the background,
+ QGraphicsView::drawItems() draws the items, and
+ QGraphicsView::drawForeground() draws the foreground of the
+ scene in scene coordinates. You can also reimplement these
+ functions in QGraphicsScene.
+
+ \endtable
+
+ \section2 Other differences
+
+ QGraphicsView can cache the visible contents of the scene,
+ similar to how Q3Canvas::setDoubleBuffering() could cache the
+ entire scene contents. You can call
+ QGraphicsView::setCacheMode() to configure cacheing, and
+ QGraphicsView::resetCachedContent() invalidates the cache.
+
+ For improved navigation support, you can set a resize or
+ transformation anchor through QGraphicsView::resizeAnchor and
+ QGraphicsView::transformationAnchor. This allows you to easily
+ rotate and zoom the view while keeping the center fixed, or
+ zooming towards the position under the mouse cursor. In
+ addition, if you set the QGraphicsView::dragMode of the view,
+ QGraphicsView will provide rubber band selection or
+ click-and-pull navigation using the
+ \l{Qt::OpenHandCursor}{OpenHandCursor} and
+ \l{Qt::ClosedHandCursor}{ClosedHandCursor} cursors.
+
+ \section1 Porting from Q3CanvasItem
+
+ The closest equivalent to Q3CanvasItem in Graphics View is
+ called QGraphicsItem. Deriving from this class is very common,
+ and because of that, porting from Q3CanvasItem often involves
+ more work than Q3Canvas and Q3CanvasView.
+
+ Q3CanvasItem has become easier to use, easier to subclass, and more
+ powerful with QGraphicsItem. The key difference from Q3CanvasItem lies
+ in event propagation and item groups, but you will also find several
+ convenient new features, such as support for tooltips, cursors, item
+ transformation and drag and drop. You can read all about QGraphicsItem
+ in its own class documentation.
+
+ This section starts with a table that shows how to port each function
+ from Q3CanvasItem to QGraphicsItem. Immediately after that, each of
+ Q3CanvasItem's standard subclasses have a section of their own.
+
+ \table
+ \header \o Q3CanvasItem \o QGraphicsItem
+
+ \row \o Q3CanvasItem::advance() \o QGraphicsItem::advance() is
+ provided for compatibility. QGraphicsScene::advance() calls
+ QGraphicsItem::advance() for all items. See also QTimeLine and
+ QGraphicsItemAnimation.
+
+ \row \o Q3CanvasItem::animated() \o No equivalent; all items
+ are advanced by QGraphicsScene::advance().
+
+ \row \o Q3CanvasItem::boundingRectAdvanced() \o No
+ equivalent. You can translate QGraphicsItem::boundingRect()
+ instead (see QRectF::translate()).
+
+ \row \o Q3CanvasItem::canvas() \o QGraphicsItem::scene()
+
+ \row \o Q3CanvasItem::collidesWith() \o
+ QGraphicsItem::collidesWithItem() and
+ QGraphicsItem::collidesWithPath().
+
+ \row \o Q3CanvasItem::collisions() \o
+ QGraphicsItem::collidingItems() returns a list of all items
+ that collide with an item. You can specify whether you want
+ fast, rough estimate collision between bounding rectangles, or
+ the slower, more accurate shapes.
+
+ \row \o Q3CanvasItem::draw() \o QGraphicsItem::paint(). See
+ also QStyleOptionGraphicsItem, QGraphicsScene::drawItems() and
+ QGraphicsView::drawItems().
+
+ \row \o Q3CanvasItem::hide() \o QGraphicsItem::hide() or
+ QGraphicsItem::setVisible(). \l{QGraphicsItem}s are \e visible by
+ default; \l{Q3CanvasItem}s, however, are not.
+
+ \row \o Q3CanvasItem::isActive() \o No equivalent. To achieve
+ similar behavior, you can add this property in a custom
+ subclass of QGraphicsItem.
+
+ \row \o Q3CanvasItem::isVisible() \o
+ QGraphicsItem::isVisible(). \l{QGraphicsItem}s are \e visible by
+ default; \l{Q3CanvasItem}s, however, are not.
+
+ \row \o Q3CanvasItem::move() \o You can call
+ QGraphicsItem::setPos() to change the position of the item.
+
+ \row \o Q3CanvasItem::rtti() \o QGraphicsItem::type() and qgraphicsitem_cast().
+
+ \row \o Q3CanvasItem::setActive() \o No equivalent.
+
+ \row \o Q3CanvasItem::setAnimated() \o No equivalent; all
+ items are by default "animated" (i.e.,
+ QGraphicsScene::advance() advances all items on the scene).
+
+ \row \o Q3CanvasItem::setCanvas() \o You can call
+ QGraphicsScene::addItem(), or pass a pointer to the canvas to
+ QGraphicsItem's constructor.
+
+ \row \o Q3CanvasItem::setVelocity() \o No equivalent. You can
+ add x and y velocity as member data of your class, and call
+ QGraphicsItem::moveBy(x, y) from inside
+ QGraphicsItem::advance(). See also QTimeLine and
+ QGraphicsItemAnimation.
+
+ \row \o Q3CanvasItem::setVisible() \o
+ QGraphicsItem::setVisible(). \l{QGraphicsItem}s are \e visible by
+ default; \l{Q3CanvasItem}s, however, are not.
+
+ \row \o Q3CanvasItem::setX() \o QGraphicsItem::setPos()
+ \row \o Q3CanvasItem::setY() \o QGraphicsItem::setPos()
+
+ \row \o Q3CanvasItem::setXVelocity() \o No equivalent.
+ \row \o Q3CanvasItem::setYVelocity() \o No equivalent.
+
+ \row \o Q3CanvasItem::setZ() \o QGraphicsItem::setZValue()
+
+ \row \o Q3CanvasItem::show() \o QGraphicsItem::show() or
+ QGraphicsItem::setVisible(). \l{QGraphicsItem}s are \e visible by
+ default; \l{Q3CanvasItem}s, however, are not.
+
+ \row \o Q3CanvasItem::xVelocity() \o No equivalent.
+ \row \o Q3CanvasItem::yVelocity() \o No equivalent.
+
+ \endtable
+
+ Note that some virtual functions that have passed on to
+ QGraphicsItem have lost their virtuality. An example is
+ Q3CanvasItem::moveBy(), which was often used to track movement of
+ items. In this case, the virtual QGraphicsItem::itemChange() has
+ taken over as a substitute.
+
+ \section2 Q3CanvasPolygonalItem
+
+ The closest equivalent to Q3CanvasPolygonalItem in
+ Graphics View is called QAbstractGraphicsShapeItem. Unlike
+ Q3CanvasPolygonalItem, it does not define area points
+ (Q3CanvasPolygonalItem::areaPoints()); instead, each
+ item's geometry is stored as a member of the subclasses.
+
+ The Q3CanvasPolygonalItem::drawShape() function is no longer
+ available; instead, you can set the brush and pen from inside
+ QGraphicsItem::paint().
+
+ \table
+ \header \o Q3CanvasPolygonalItem \o QAbstractGraphicsShapeItem
+
+ \row \o Q3CanvasPolygonalItem::areaPoints() \o No equivalent; each
+ item's geometry is stored in the respective subclass.
+
+ \row \o Q3CanvasPolygonalItem::areaPointsAdvanced() \o No
+ equivalent; you can use QPolygonF::translate() or
+ QPainterPath::translate() instead.
+
+ \row \o Q3CanvasPolygonalItem::drawShape() \o
+ QGraphicsItem::paint(). You can set the pen and brush from inside
+ this function.
+
+ \row \o Q3CanvasPolygonalItem::invalidate() \o Call
+ QGraphicsItem::prepareGeometryChange() before changing the
+ item's geometry.
+
+ \row \o Q3CanvasPolygonalItem::isValid() \o No equivalent;
+ items' geometry is always in a valid state.
+
+ \row \o Q3CanvasPolygonalItem::winding() \o This function is only
+ useful for polygon items and path items; see
+ QGraphicsPolygonItem::fillRule(), and QPainterPath::fillRule() for
+ QGraphicsPathItem.
+
+ \endtable
+
+ \section2 Q3CanvasEllipse
+
+ The closest equivalent to Q3CanvasEllipse in Graphics View
+ is called QGraphicsEllipseItem. The most noticable
+ difference to QGraphicsEllipseItem is that the ellipse is
+ not longer drawn centered around its position; rather, it
+ is drawn using a bounding QRectF, just like
+ QPainter::drawEllipse().
+
+ For compatibility, you may want to shift the ellipse up and to the
+ left to keep the ellipse centered. Example:
+
+ \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 7
+
+ Note: QGraphicsEllipseItem uses QAbstractGraphicsShapeItem::pen()
+ for outlines, whereas Q3CanvasEllipse did not use
+ Q3CanvasPolygonalItem::pen().
+
+ \table
+ \header \o Q3CanvasEllipse \o QGraphicsEllipseItem
+
+ \row \o Q3CanvasEllipse::angleLength() \o QGraphicsEllipseItem::spanAngle()
+
+ \row \o Q3CanvasEllipse::angleStart() \o QGraphicsEllipseItem::startAngle()
+
+ \row \o Q3CanvasEllipse::setAngles() \o
+ QGraphicsEllipseItem::setStartAngle() and
+ QGraphicsEllipseItem::setSpanAngle()
+
+ \row \o Q3CanvasEllipse::setSize() \o QGraphicsEllipseItem::setRect()
+
+ \endtable
+
+ \section2 Q3CanvasLine
+
+ The closest equivalent to Q3CanvasLine in Graphics View is
+ called QGraphicsLineItem.
+
+ \table
+ \header \o Q3CanvasLine \o QGraphicsLineItem
+
+ \row \o Q3CanvasLine::endPoint() \o QGraphicsLineItem::line() and QLineF::p2()
+
+ \row \o Q3CanvasLine::setPoints() \o QGraphicsLineItem::setLine()
+
+ \row \o Q3CanvasLine::startPoint() \o QGraphicsLineItem::line()
+ and QLineF::p1()
+
+ \endtable
+
+ \section2 Q3CanvasPolygon
+
+ The closest equivalent to Q3CanvasPolygon in Graphics View
+ is called QGraphicsPolygonItem.
+
+ \table
+ \header \o Q3CanvasPolygon \o QGraphicsPolygonItem
+
+ \row \o Q3CanvasPolygon::areaPoints() \o
+ QGraphicsPolygonItem::polygon() and QGraphicsItem::mapToParent()
+
+ \row \o Q3CanvasPolygon::points() \o QGraphicsPolygonItem::polygon()
+
+ \row \o Q3CanvasPolygon::setPoints() \o QGraphicsPolygonItem::setPolygon()
+
+ \endtable
+
+ \section2 Q3CanvasSpline
+
+ The closest equivalent to Q3CanvasSpline in Graphics View
+ is called QGraphicsPathItem. This item can be used to
+ describe any type of path supported by QPainter.
+
+ Q3CanvasSpline takes its control points as a Q3PointArray, but
+ QPainterPath operates on a sequence of calls to
+ QPainterPath::moveTo() and QPainterPath::cubicTo(). Here is how
+ you can convert a bezier curve Q3PointArray to a QPainterPath:
+
+ \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 8
+
+ Note: QGraphicsPathItem uses QAbstractGraphicsShapeItem::pen() for
+ outlines, whereas Q3CanvasSpline did not use
+ Q3CanvasPolygonalItem::pen().
+
+ \table
+ \header \o Q3CanvasSpline \o QGraphicsPathItem
+
+ \row \o Q3CanvasSpline::closed() \o No equivalent. You can call
+ QPainterPath::closeSubPath() to close a subpath explicitly.
+
+ \endtable
+
+ \section2 Q3CanvasRectangle
+
+ The closest equivalent to Q3CanvasRectangle in Graphics
+ View is called QGraphicsRectItem.
+
+ \table
+ \header \o Q3CanvasRectangle \o QGraphicsRectItem
+
+ \row \o Q3CanvasRectangle::height() \o QGraphicsRectItem::rect()
+ and QRectF::height()
+
+ \row \o Q3CanvasRectangle::setSize() \o QGraphicsRectItem::setRect()
+
+ \row \o Q3CanvasRectangle::size() \o QGraphicsRectItem::rect() and QRectF::size()
+
+ \row \o Q3CanvasRectangle::width() \o QGraphicsRectItem::rect() and QRectF::width()
+
+ \row \o Q3CanvasRectangle::chunks() \o No equivalent.
+
+ \endtable
+
+ \section2 Q3CanvasSprite
+
+ Q3CanvasSprite is the item class that differs the most from its
+ Q3Canvas predecessor. The closest resemblance of Q3CanvasSprite in
+ Graphics View is QGraphicsPixmapItem.
+
+ Q3CanvasSprite supports animated pixmaps; QGraphicsPixmapItem,
+ however, is a simple single-frame pixmap item. If all you need is
+ a pixmap item, porting is straight-forward. If you do need the
+ animation support, extra work is required; there is no direct
+ porting approach.
+
+ For the \l{Ported Asteroids Example}, a subclass of
+ QGraphicsPixmapItem is used to replace Q3CanvasSprite, storing a
+ list of pixmaps and a frame counter. The animation is advanced in
+ QGraphicsItem::advance().
+
+ \section3 Q3CanvasPixmap, Q3CanvasPixmapArray
+
+ These classes have been removed from the API. You can use
+ QPixmap instead of Q3CanvasPixmap, and QList instead of
+ Q3CanvasPixmapArray.
+
+ Q3CanvasPixmapArray included convenience for loading a
+ sequence of pixmaps or masks using a path with a wildcard (see
+ Q3CanvasPixmapArray::readPixmaps() and
+ Q3CanvasPixmapArray::readCollisionMasks()). To achieve similar
+ functionality using Graphics View, you can load the images by
+ using QDir:
+
+ \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 9
+
+ \section2 Q3CanvasText
+
+ Q3CanvasText has been split into two classes in Graphics View:
+ QGraphicsSimpleTextItem and QGraphicsTextItem. For porting,
+ QGraphicsSimpleTextItem should be adequate. QGraphicsTextItem
+ provides advanced document structuring features similar to that of
+ QTextEdit, and it also allows interaction (e.g., editing and
+ selection).
+
+ \table
+ \header \o Q3CanvasText \o QGraphicsSimpleTextItem
+
+ \row \o Q3CanvasText::color() \o QGraphicsSimpleTextItem::pen().
+
+ \row \o Q3CanvasText::setColor() \o QGraphicsSimpleTextItem::setPen().
+
+ \row \o Q3CanvasText::textFlags() \o Use QGraphicsTextItem instead.
+
+ \endtable
+
+
+ \section2 Q3CanvasItemList
+
+ Use QList instead.
+
+ \section1 Other Resources
+
+ The \l{Porting to Qt 4.2's Graphics View} article in Qt Quarterly 21 covered the
+ process of porting the Qt 3 canvas example to Qt 4.
+ The result of this is the \l{Ported Canvas Example}{Ported Canvas} example.
+*/
diff --git a/doc/src/porting/porting4-designer.qdoc b/doc/src/porting/porting4-designer.qdoc
new file mode 100644
index 000000000..af056e7e4
--- /dev/null
+++ b/doc/src/porting/porting4-designer.qdoc
@@ -0,0 +1,349 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 porting4-designer.html
+ \title Porting UI Files to Qt 4
+ \contentspage {Porting Guides}{Contents}
+ \previouspage Porting to Qt 4 - Drag and Drop
+ \nextpage Porting to Graphics View
+ \ingroup porting
+ \brief Information about changes to the UI file format in Qt 4.
+
+ Qt Designer has changed significantly in the Qt 4 release. We
+ have moved away from viewing Qt Designer as an IDE and
+ concentrated on creating a robust form builder which can be
+ extended and embedded in existing IDEs. Our efforts are ongoing
+ and include the \l{Visual Studio Integration},
+ as well as integrating Designer with KDevelop and possibly other
+ IDEs.
+
+ The most important changes in Qt Designer 4 which affect porting
+ for UI files are summarized below:
+
+ \list
+ \o \bold{Removed project manager.}
+ Qt Designer now only reads and edits UI
+ files. It has no notion of a project file (\c .pro).
+
+ \o \bold{Removed code editor.}
+ Qt Designer can no longer be used to edit source files.
+
+ \o \bold{Changed format of UI files.}
+ Qt Designer 4 cannot read files created by Qt Designer 3 and
+ vice versa. However, we provide the tool \c uic3 to generate Qt
+ 4 code out of Qt 3 UI files, and to convert old UI files
+ into a format readable by Qt Designer 4.
+
+ \o \bold{Changed structure of the code generated by \c uic.}
+ The \c myform.ui file containing the form \c MyForm is now
+ converted into a single header file \c ui_myform.h, which
+ contains the declaration and inline definition of a POD class
+ \c Ui::MyForm.
+
+ \o \bold{New resource file system.} Icon data is no longer
+ stored in the UI file. Instead, icons are put into resource
+ files (\c .qrc).
+ \endlist
+
+ The rest of this document explains how to deal with the main
+ differences between Qt Designer 3 and Qt Designer 4:
+
+ \tableofcontents
+
+ See \l{Porting to Qt 4} and \l{qt3to4 - The Qt 3 to 4 Porting
+ Tool} for more information about porting from Qt 3 to Qt 4. See
+ also the \l{Qt Designer Manual}.
+
+ \section1 uic Output
+
+ In Qt 3, \c uic generated a header file and an implementation for
+ a class, which inherited from one of Qt's widgets. To use the
+ form, the programmer included the generated sources into the
+ application and created an instance of the class.
+
+ In Qt 4, \c uic creates a header file containing a POD class. The
+ name of this class is the object name of the main container,
+ qualified with the \c Ui namespace (e.g., \c Ui::MyForm). The
+ class is implemented using inline functions, removing the need of
+ a separate \c .cpp file. Just as in Qt 3, this class contains
+ pointers to all the widgets inside the form as public members. In
+ addition, the generated class provides the public method \c
+ setupUi().
+
+ The class generated by \c uic is not a QWidget; in fact, it's not
+ even a QObject. Instead, it is a class which knows how to
+ populate an instance of a main container with the contents of the
+ form. The programmer creates the main container himself, then
+ passes it to \c setupUi().
+
+ For example, here's the \c uic output for a simple \c
+ helloworld.ui form (some details were removed for simplicity):
+
+ \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 0
+
+ In this case, the main container was specified to be a QWidget
+ (or any subclass of QWidget). Had we started with a QMainWindow
+ template in Qt Designer, \c setupUi()'s parameter would be of
+ type QMainWindow.
+
+ There are two ways to create an instance of our form. One
+ approach is to create an instance of the \c Ui::HelloWorld class,
+ an instance of the main container (a plain QWidget), and call \c
+ setupUi():
+
+ \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 1
+
+ The second approach is to inherit from both the \c Ui::HelloWorld
+ class and the main container, and to call \c setupUi() in the
+ constructor of the subclass. In that case, QWidget (or one of
+ its subclasses, e.g. QDialog) must appear first in the base class
+ list so that \l{moc} picks it up correctly. For example:
+
+ \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 2
+
+ This second method is useful when porting Qt 3 forms to Qt 4. \c
+ HelloWorldWidget is a class whose instance is the actual form
+ and which contains public pointers to all the widgets in it. It
+ therefore has an interface identical to that of a class generated
+ by \c uic in Qt 3.
+
+ Creating POD classes from UI files is more flexible and
+ generic than the old approach of creating widgets. Qt Designer
+ does not need to know anything about the main container apart from
+ the base widget class it inherits. Indeed, \c Ui::HelloWorld can
+ be used to populate any container that inherits QWidget.
+ Conversely, all non-GUI aspects of the main container may be
+ implemented by the programmer in the application's sources
+ without reference to the form.
+
+ \section1 Working with uic3
+
+ Qt 4 comes with the tool \c uic3 for working with old \c .ui
+ files. It can be used in two ways:
+
+ \list 1
+ \o To generate headers and source code for a widget to implement any
+ custom signals and slots added using Qt Designer 3.
+ \o To generate a new UI file that can be used with Qt Designer 4.
+ \endlist
+
+ You can use both these methods in combination to obtain UI, header
+ and source files that you can use as a starting point when porting
+ your user interface to Qt 4.
+
+ The first method generates a Qt 3 style header and implementation
+ which uses Qt 4 widgets (this includes the Qt 3 compatibility classes
+ present in the Qt3Support library). This process should be familiar to
+ anyone used to working with Qt Designer 3:
+
+ \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 3
+
+ The resulting files \c myform.h and \c myform.cpp implement the
+ form in Qt 4 using a QWidget that will include custom signals,
+ slots and connections specified in the UI file. However,
+ see below for the \l{#Limitations of uic3}{limitations} of this
+ method.
+
+ The second method is to use \c uic3 to convert a Qt Designer 3 \c .ui
+ file to the Qt Designer 4 format:
+
+ \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 4
+
+ The resulting file \c myform4.ui can be edited in Qt Designer 4. The
+ header file for the form is generated by Qt 4's \c uic. See the
+ \l{Using a Designer UI File in Your Application} chapter of the
+ \l{Qt Designer Manual} for information about the preferred ways to
+ use forms created with Qt Designer 4.
+
+ \c uic3 tries very hard to map Qt 3 classes and their properties to
+ Qt 4. However, the behavior of some classes changed significantly
+ in Qt 4. To keep the form working, some Qt 3 classes are mapped
+ to classes in the Qt3Support library. Table 1 shows a list of
+ classes this applies to.
+
+ \table
+ \header \o Qt 3 class \o Qt 4 class
+ \row \o \c QButtonGroup \o Q3ButtonGroup
+ \row \o \c QDateEdit \o Q3DateEdit
+ \row \o \c QDateTimeEdit \o Q3DateTimeEdit
+ \row \o \c QGroupBox \o Q3GroupBox
+ \row \o \c QListBox \o Q3ListBox
+ \row \o \c QListView \o Q3ListView
+ \row \o \c QMainWindow \o Q3MainWindow
+ \row \o \c QTextEdit \o Q3TextEdit
+ \row \o \c QTextView \o Q3TextView
+ \row \o \c QTimeEdit \o Q3TimeEdit
+ \row \o \c QWidgetStack \o Q3WidgetStack
+ \row \o \c QWizard \o Q3Wizard
+ \endtable
+
+ \section1 Limitations of uic3
+
+ Converting Qt 3 UI files to Qt 4 has some limitations. The
+ most noticeable limitation is the fact that since \c uic no
+ longer generates a QObject, it's not possible to define custom
+ signals or slots for the form. Instead, the programmer must
+ define these signals and slots in the main container and connect
+ them to the widgets in the form after calling \c setupUi(). For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 5
+
+ A quick and dirty way to port forms containing custom signals and
+ slots is to generate the code using \c uic3, rather than \c uic. Since
+ \c uic3 does generate a QWidget, it will populate it with custom
+ signals, slots and connections specified in the UI file.
+ However, \c uic3 can only generate code from Qt 3 UI files, which
+ implies that the UI files never get translated and need to be
+ edited using Qt Designer 3.
+
+ Note also that it is possible to create implicit connections
+ between the widgets in a form and the main container. After \c
+ setupUi() populates the main container with child widgets it
+ scans the main container's list of slots for names with the form
+ \tt{on_\e{objectName}_\e{signalName}().}
+
+ If the form contains a widget whose object name is
+ \tt{\e{objectName}}, and if that widget has a signal called
+ \tt{\e{signalName}}, then this signal will be connected to the
+ main container's slot. For example:
+
+ \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 6
+
+ Because of the naming convention, \c setupUi() automatically
+ connects \c pushButton's \c clicked() signal to \c
+ HelloWorldWidget's \c on_pushButton_clicked() slot.
+
+ \section1 Icons
+
+ In Qt 3, the binary data for the icons used by a form was stored
+ in the UI file. In Qt 4 icons and any other external files
+ can be compiled into the application by listing them in a \l{The
+ Qt Resource System}{resource file} (\c .qrc). This file is
+ translated into a C++ source file using Qt's resource compiler
+ (\c rcc). The data in the files is then available to any Qt class
+ which takes a file name argument.
+
+ Imagine that we have two icons, \c yes.png and \c no.png. We
+ create a resource file called \c icons.qrc with the following
+ contents:
+
+ \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 7
+
+ Next, we add the resource file to our \c .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 8
+
+ When \c qmake is run, it will create the appropriate Makefile
+ rules to call \c rcc on the resource file, and compile and link
+ the result into the application. The icons may be accessed as
+ follows:
+
+ \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 9
+
+ In each case, the leading colon tells Qt to look for the file in
+ the virtual file tree defined by the set of resource files
+ compiled into the application instead of the file system.
+
+ In the \c .qrc file, the \c qresource tag's \c prefix attribute
+ is used to arrange the files into categories and set a virtual
+ path where the files will be accessed.
+
+ Caveat: If the resource file was not linked directly into the
+ application, but instead into a dynamic or static library that
+ was later linked with the application, its virtual file tree will
+ not be available to QFile and friends until the Q_INIT_RESOURCE()
+ macro is called. This macro takes one argument, which is the name
+ of the \c .qrc file, without the path or the file extension. A
+ convenient place to initialize resources is at the top of the
+ application's \c main() function.
+
+ In Qt Designer 4, we can associate any number of resource files
+ with a form using the resource editor tool. The widgets in the
+ form can access all icons specified in its associated resource
+ files.
+
+ In short, porting of icons from a Qt 3 to a Qt 4 form involves
+ the following steps:
+
+ \list 1
+ \o Use \c{uic3 -convert} to obtain a UI file understood by
+ Qt Designer 4.
+
+ \o Create a \c .qrc file with a list of all the icon files.
+
+ \o Add the resource file to the \c .pro file.
+
+ \o Open the form in Qt Designer 4 and add the resource file to the
+ form's resource editor.
+
+ \o Set the icon properties for the appropriate widgets.
+ \endlist
+
+ \section1 Custom Widgets
+
+ Qt Designer 3 supported defining custom widgets by specifying
+ their name, header file and methods. In Qt Designer 4, a custom
+ widget is always created by "promoting" an existing Qt widget to
+ a custom class. Qt Designer 4 assumes that the custom widget will
+ inherit from the widget that has been promoted. In the form
+ editor, the custom widget will retain the looks, behavior,
+ properties, signals and slots of the base widget. It is not
+ currently possible to tell Qt Designer 4 that the custom widget
+ will have additional signals or slots.
+
+ \c{uic3 -convert} handles the conversion of custom widgets to the
+ new \c .ui format, however all custom signals and slots are lost.
+ Furthermore, since Qt Designer 3 never knew the base widget class
+ of a custom widget, it is taken to be QWidget. This is often
+ sufficient. If not, the custom widgets have to be inserted
+ manually into the form.
+
+ Custom widget plugins, which contain custom widgets to be used in
+ Qt Designer, must themselves be ported before they can be used in
+ forms ported with \c{uic3}.
+ The \l{Porting to Qt 4} document contains information about general
+ porting issues that may apply to the custom widget code itself, and
+ the \l{Creating Custom Widgets for Qt Designer} chapter of the
+ \l{Qt Designer Manual} describes how the ported widget should be
+ built in order to work in Qt Designer 4.
+*/
diff --git a/doc/src/porting/porting4-dnd.qdoc b/doc/src/porting/porting4-dnd.qdoc
new file mode 100644
index 000000000..2851399ab
--- /dev/null
+++ b/doc/src/porting/porting4-dnd.qdoc
@@ -0,0 +1,152 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 porting4-dnd.html
+ \title Porting to Qt 4 - Drag and Drop
+ \contentspage {Porting Guides}{Contents}
+ \previouspage Porting to Qt 4 - Virtual Functions
+ \nextpage Porting UI Files to Qt 4
+ \ingroup porting
+ \brief An overview of the porting process for applications that use drag and drop.
+
+ Qt 4 introduces a new set of classes to handle drag and drop operations
+ that aim to be easier to use than their counterparts in Qt 3. As a result,
+ the way that drag and drop is performed is quite different to the way
+ developers of Qt 3 applications have come to expect. In this guide, we
+ show the differences between the old and new APIs and indicate where
+ applications need to be changed when they are ported to Qt 4.
+
+ \tableofcontents
+
+ \section1 Dragging
+
+ In Qt 3, drag operations are encapsulated by \c QDragObject (see Q3DragObject)
+ and its subclasses. These objects are typically constructed on the heap in
+ response to mouse click or mouse move events, and ownership of them is
+ transferred to Qt so that they can be deleted when the corresponding drag and
+ drop operations have been completed. The drag source has no control over how
+ the drag and drop operation is performed once the object's
+ \l{Q3DragObject::}{drag()} function is called, and it receives no information
+ about how the operation ended.
+
+ \snippet doc/src/snippets/code/doc_src_dnd.qdoc 0
+
+ Similarly, in Qt 4, drag operations are also initiated when a QDrag object
+ is constructed and its \l{QDrag::}{exec()} function is called. In contrast,
+ these objects are typically constructed on the stack rather than the heap
+ since each drag and drop operation is performed synchronously as far as the
+ drag source is concerned. One key benefit of this is that the drag source
+ can receive information about how the operation ended from the value returned
+ by \l{QDrag::}{exec()}.
+
+ \snippet doc/src/snippets/porting4-dropevents/window.cpp 2
+ \snippet doc/src/snippets/porting4-dropevents/window.cpp 3
+ \dots 8
+ \snippet doc/src/snippets/porting4-dropevents/window.cpp 4
+ \snippet doc/src/snippets/porting4-dropevents/window.cpp 5
+
+ A key difference in the above code is the use of the QMimeData class to hold
+ information about the data that is transferred. Qt 3 relies on subclasses
+ of \c QDragObject to provide support for specific MIME types; in Qt 4, the
+ use of QMimeData as a generic container for data makes the relationship
+ between MIME type and data more tranparent. QMimeData is described in more
+ detail later in this document.
+
+ \section1 Dropping
+
+ In both Qt 3 and Qt 4, it is possible to prepare a custom widget to accept
+ dropped data by enabling the \l{QWidget::}{acceptDrops} property of a widget,
+ usually in the widget's constructor. As a result, the widget will receive
+ drag enter events that can be handled by its \l{QWidget::}{dragEnterEvent()}
+ function.
+ As in Qt 3, custom widgets in Qt 4 handle these events by determining
+ whether the data supplied by the drag and drop operation can be dropped onto
+ the widget. Since the classes used to encapsulate MIME data are different in
+ Qt 3 and Qt 4, the exact implementations differ.
+
+ In Qt 3, the drag enter event is handled by checking whether each of the
+ standard \c QDragObject subclasses can decode the data supplied, and
+ indicating success or failure of these checks via the event's
+ \l{QDragEnterEvent::}{accept()} function, as shown in this simple example:
+
+ \snippet doc/src/snippets/code/doc_src_dnd.qdoc 1
+
+ In Qt 4, you can examine the MIME type describing the data to determine
+ whether the widget should accept the event or, for common data types, you
+ can use convenience functions:
+
+ \snippet doc/src/snippets/porting4-dropevents/window.cpp 0
+
+ The widget has some control over the type of drag and drop operation to be
+ performed. In the above code, the action proposed by the drag source is
+ accepted, but
+ \l{Drag and Drop#Overriding Proposed Actions}{this can be overridden} if
+ required.
+
+ In both Qt 3 and Qt 4, it is necessary to accept a given drag event in order
+ to receive the corresponding drop event. A custom widget in Qt 3 that can
+ accept dropped data in the form of text or images might provide an
+ implementation of \l{QWidget::}{dropEvent()} that looks like the following:
+
+ \snippet doc/src/snippets/code/doc_src_dnd.qdoc 2
+
+ In Qt 4, the event is handled in a similar way:
+
+ \snippet doc/src/snippets/porting4-dropevents/window.cpp 1
+
+ It is also possible to extract data stored for a particular MIME type if it
+ was specified by the drag source.
+
+ \section1 MIME Types and Data
+
+ In Qt 3, data to be transferred in drag and drop operations is encapsulated
+ in instances of \c QDragObject and its subclasses, representing specific
+ data formats related to common MIME type and subtypes.
+
+ In Qt 4, only the QMimeData class is used to represent data, providing a
+ container for data stored in multiple formats, each associated with
+ a relevant MIME type. Since arbitrary MIME types can be specified, there is
+ no need for an extensive class hierarchy to represent different kinds of
+ information. Additionally, QMimeData it provides some convenience functions
+ to allow the most common data formats to be stored and retrieved with less
+ effort than for arbitrary MIME types.
+*/
diff --git a/doc/src/porting4-modifiedvirtual.qdocinc b/doc/src/porting/porting4-modifiedvirtual.qdocinc
index 1164238f5..1164238f5 100644
--- a/doc/src/porting4-modifiedvirtual.qdocinc
+++ b/doc/src/porting/porting4-modifiedvirtual.qdocinc
diff --git a/doc/src/porting4-obsoletedmechanism.qdocinc b/doc/src/porting/porting4-obsoletedmechanism.qdocinc
index 584b91039..584b91039 100644
--- a/doc/src/porting4-obsoletedmechanism.qdocinc
+++ b/doc/src/porting/porting4-obsoletedmechanism.qdocinc
diff --git a/doc/src/porting/porting4-overview.qdoc b/doc/src/porting/porting4-overview.qdoc
new file mode 100644
index 000000000..830dd928f
--- /dev/null
+++ b/doc/src/porting/porting4-overview.qdoc
@@ -0,0 +1,373 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 porting4-overview.html
+ \title Moving from Qt 3 to Qt 4
+ \ingroup porting
+ \brief Porting advice for authors of new and existing Qt 3 applications.
+
+ This document describes which parts of Qt should be used when
+ writing an application with Qt 3, so that it can be upgraded to
+ use Qt 4 later with a minimum of effort. However, the advice may
+ also be useful to developers who are porting existing applications
+ from Qt 3 to Qt 4.
+
+ For a detailed overview
+ of the porting process for existing Qt 3 applications, see the
+ \l{Porting to Qt 4} document.
+
+ \tableofcontents
+
+ Since Qt 4 provides important new functionality at the cost of
+ some compatibility with Qt 3, it is useful for developers of
+ Qt 3-based applications to learn how to take advantage of
+ Qt 3's API now while preparing for future changes that will be
+ needed when upgrading to Qt 4.
+
+ Certain advanced Qt 3 features were moved to the Qt 3 support
+ library (\l{Qt3Support}) in Qt 4.0, and have been gradually
+ replaced in subsequent releases of Qt 4.
+
+ Making Qt 3 applications as portable to Qt 4 as possible
+ enables a smooth transition between versions of Qt in the
+ long term, and allows for a stable development process
+ throughout.
+
+ \section1 Qt 3 Features to Avoid
+
+ Although we are proud of the level of stability we have achieved
+ with Qt, it is important to realise that, for Qt 4 to be a
+ substantial improvement over Qt 3, certain features have
+ been revised to make the framework more maintainable for us
+ and more usable for developers. It is therefore useful to
+ know which features of Qt 3 should be avoided to help save
+ time during a later porting effort to Qt 4. Note that it is
+ still possible to use many of the following classes and
+ features through the use of the \l{Qt3Support} module.
+
+ \section2 Painting Outside Paint Events
+
+ In Qt 3, under certain circumstances, it was possible to use
+ QPainter to draw on a given custom widget outside its
+ \l{QWidget::}{paintEvent()} reimplementation. In Qt 4, in most
+ situations, painting must occur within a widget's paint event
+ handler.
+
+ On X11, it is possible to set the \l{Qt::WA_PaintOutsidePaintEvent}
+ attribute on widgets to keep existing code, but we recommend
+ restricting the use of painting code to within paint event handlers
+ where possible.
+
+ More information about this change can be found in the
+ \l{Porting to Qt 4#Painting and Redrawing Widgets}{Painting and Redrawing Widgets}
+ section of the \l{Porting to Qt 4} document.
+
+ \section2 Qt Designer
+
+ The version of Qt Designer supplied with Qt 3 provided
+ extensive code editing and project management features
+ (control over \c{.ui.h} and \c{.pro} files), and encouraged
+ users to design main window applications from within the
+ Qt Designer environment.
+
+ The version of Qt Designer supplied with Qt 4 is intended
+ to be integrated with other software development tools (such
+ as integrated development environments), and does not
+ support these project-level features.
+
+ We recommend using one of the
+ \l{Using a Designer UI File in Your Application}{form subclassing approaches}
+ with forms created using Qt Designer. This avoids the need
+ to use \c{.ui.h} files and special purpose code editors.
+
+ Existing Qt 3 forms created using Qt Designer can be gradually
+ ported to Qt 4 by following the advice in the
+ \l{Porting UI Files to Qt 4} guide. However, some extra effort
+ will be required to move application logic from \c{.ui.h} files
+ into the main body of a Qt 4 application.
+
+ \section2 Menu Items (QMenuItem)
+
+ The old-style construction of menus by creating individual
+ menu items has been superseded in Qt 4 by the use of
+ generic actions which can be used in menus, toolbars, and
+ as keyboard shortcuts.
+
+ Qt 3 also supports this action-based approach, so, by using
+ QAction throughout your application, less work will be
+ required to adapt your application to Qt 4.
+
+ \section2 Pointer-Based Classes (QPtr*)
+
+ Qt 3 provides a group of pointer-based classes (\c QPtrList,
+ \c QPtrDict, \c QPtrVector, etc.) that help manage collections
+ of pointers to objects (usually QObject subclasses) in an
+ application. In addition, the value-based collection classes
+ (\c QValueList, \c QValueDict, \c QValueVector, etc.) provide
+ a way to store standard value types which cannot be easily stored
+ in pointer-based collections.
+
+ Qt 4 introduces a single set of collection classes which
+ does not require developers to pay as much attention to
+ memory allocation and object ownership issues. As a result,
+ Qt 3's pointer-based classes have no direct equivalent
+ classes in Qt 4.
+
+ To ease migration, use Qt 3's value-based classes to store
+ most objects, including pointers; for example, use
+ \c QValueVector<QWidget *> rather than
+ \c QPtrVector<QWidget *>. These can be replaced by
+ Qt 4's QVector, QLinkedList, and QList later.
+
+ \section2 Other Collection Classes (QStrList, Q*Dict)
+
+ Some collection classes in Qt 3 have been deprecated in
+ favor of easier to use, higher level alternatives. These
+ include the dictionary classes (\c QAsciiDict, \c QDict,
+ \c QIntDict, \c QPtrDict) and \c QStrList.
+
+ \c QStrList can usually replaced by the higher level QStringList
+ class in Qt 3; this is also available in Qt 4. It is
+ recommended that you use the QMap class instead of the \c QDict
+ classes. In Qt 4, QMap is also complemented by the QHash
+ class.
+
+ \section2 Memory Arrays (QMemArray)
+
+ In Qt 3, the \c QMemArray class is used as a simple array
+ container for simple data types. This class is deprecated in
+ Qt 4 in favor of the QVector and QVarLengthVector classes
+ which provide more powerful and consistent array objects.
+
+ Qt 3's closest equivalent class to Qt 4's QVector is the
+ \c QValueVector class. For many purposes, this can be used
+ instead of \c QMemArray.
+
+ \section2 URL Operations (QUrlOperator)
+
+ The URL operator in Qt 3 provides an abstract way to
+ handle files via HTTP, FTP, and on the local file system.
+ However, Qt 4 only provides this functionality through the
+ use of the Q3UrlOperator.
+
+ From Qt 4.4, the Network Access API provides a subset of the features
+ provided by \c QUrlOperator that are mostly intended for use with
+ applications that use the HTTP and FTP protocols. See the
+ QNetworkRequest, QNetworkReply, and QNetworkAccessManager documentation
+ for further details.
+
+ It is also possible to perform operations on remote files through
+ the QNetworkAccessManager and QFtp classes, and on local files
+ with the QFile class.
+
+ \section2 SQL Cursors (QSqlCursor)
+
+ In Qt 3, one of the preferred methods of working with SQL
+ is to use a cursor to manipulate the contents of a database.
+ In Qt 4, the preferred method of working with SQL is to use
+ the model/view architecture (QSqlQueryModel and QSqlTableModel)
+ and, as a result, the cursor interface is only supplied in the
+ Q3SqlCursor class.
+
+ The easiest way to ensure continuity between Qt 3 and Qt 4
+ is to use QSqlQuery rather than \c QSqlCursor,
+ and migrate to QSqlQueryModel later.
+
+ \section2 Domain Name Service (QDns)
+
+ The QDns class in Qt 4 provides a much simpler interface
+ than the QDns class in Qt 3, and is mainly used for host
+ name resolution.
+ As a result, many of the more complex features of Qt 3's
+ QDns class are only available through Qt 4's Q3Dns
+ compatibility class.
+
+ To resolve host names with Qt 3, it is recommended that you
+ use the higher level interface of QSocket rather than QDns.
+ The equivalent functionality is available in Qt 4 in the
+ QAbstractSocket and QHostInfo classes.
+
+ \section2 Wizard Dialogs (QWizard)
+
+ Qt 3 provides support for "wizard" dialogs in the form of
+ the \c QWizard class. Prior to Qt 4.3, this class was made
+ available as Q3Wizard, and provides the same interface for
+ creating relatively complex wizards.
+
+ In Qt 4.3 and later, a revised QWizard class can be used to
+ create this kind of dialog, but existing Qt 3 wizard
+ implementations may need to be redesigned to work with the
+ new QWizard API.
+
+ \section2 Abstract Grid Views (QGridView)
+
+ Before the introduction of the Qt 3 \c QTable class,
+ \c QGridView was the recommended way to create tables of
+ custom items.
+ With the introduction of \c QTable, the \c QGridView class was
+ effectively obsoleted, and the \c QTable class should now be
+ used to display tabular information in your Qt 3 application.
+ This approach allows you to use QTableWidget as a replacement
+ when later porting your application to Qt 4.
+
+ \section2 Specialized Scrolling Views
+
+ In Qt 3, the \c QScrollView class provides a viewport that can
+ be used to display part of a larger widget, and will
+ optionally provide scroll bars for navigation purposes.
+ In Qt 4, this functionality is superseded by classes such as
+ QScrollArea, which provides a more intuitive interface for
+ developers to use.
+ \c QScrollView is available in Qt 4 as the Q3ScrollView class.
+
+ In Qt 3, it is recommended that \c QScrollView should be
+ used with child widgets rather than subclassed. However, it
+ should be noted that this approach may not be appropriate if
+ you need to use extremely large scrolling areas in your
+ application, since Qt 3 widgets cannot be wider or taller
+ than 32767 pixels.
+
+ \section1 Significantly Changed Features
+
+ Some Qt 3 features have changed significantly for Qt 4.
+ and the recommended way of using them has therefore changed
+ significantly, too. This is most notably true for the drag
+ and drop API.
+
+ Additionally, some of the more specialized features in Qt 3 are
+ often used to help customize widgets and add extra polish to an
+ application.
+ Although these improvements make applications more presentable to
+ users, many of them are unnecessary with Qt 4, and may create
+ additional porting work.
+
+ \section2 Drag and Drop
+
+ Qt 4 introduces a simpler and more intuitive implementation
+ of drag and drop between widgets, and with other applications.
+ As a result, there is no simple approach that can be used to
+ make drag and drop in a Qt 3 application easier to port to
+ Qt 4.
+
+ \section2 Extensive Customization of Item Views
+
+ Each of the classes that are used to display list, tree,
+ and table items in Qt 3 can be subclassed for the purposes
+ of customizing their appearance. The item view framework
+ in Qt 4 is implemented according to a different paradigm
+ (model/view) which does not allow items to be customized
+ using this method.
+
+ Although Qt 4 provides compatibility classes (Q3ListBoxItem,
+ Q3ListViewItem, and Q3TableItem) that can be used in the same
+ way as their Qt 3 counterparts, these cannot be used within
+ the standard model/view framework. It is recommended that,
+ to minimize porting effort, extensive customization of item
+ classes should be avoided in Qt 3, if at all possible.
+
+ \section2 Double Buffering
+
+ Qt 3 applications often use double buffering for reducing
+ flicker when painting custom widgets. This approach is
+ unnecessary with Qt 4 because double buffering is
+ automatically performed by the paint engine.
+
+ It still makes sense to use double buffering in
+ Qt 4 in certain contexts. For example, in
+ Chapter 5 of \l{GUI Programming with Qt 3}, double buffering
+ was presented as a speed optimization and not just as a means
+ of reducing flicker.
+
+ \section2 Data-Aware Forms
+
+ The \c QDataTable, \c QDataBrowser, and \c QDataView classes
+ in Qt 3 allow integration between widgets and SQL-based
+ databases.
+
+ In Qt 4.1 and earlier, the preferred way to create a data-aware
+ widget is to connect an generic item view (such as a table view)
+ to a SQL model. In Qt 4.2 and later, the QDataWidgetMapper class
+ can be used to map data to widgets in a form-based user interface.
+
+ New applications written with Qt 3 should use QSqlQuery in
+ preference to an approach based on the old-style data-aware
+ widgets.
+ This offers a choice of porting strategies when later migrating
+ the application to Qt 4: You can either continue to use
+ QSqlQuery or take the opportunity to use the model/view
+ classes to handle database integration.
+
+ \section2 Dock Windows and Areas
+
+ In Qt 4, the way that dock windows are constructed and used
+ in main window applications differs significantly to the
+ pattern of use provided by Qt 3. As a result, the introduction
+ of a simpler and cleaner API means that Qt 3 applications that
+ make extensive use of dock window areas will require careful
+ examination when they are ported to Qt 4.
+
+ We recommend that the QMainWindow class be used in preference
+ to the Q3MainWindow compatibility class when an existing Qt 3
+ main window application is ported to Qt 4. Therefore, we
+ recommend that specialized use of dock window areas should
+ be avoided when writing a Qt 3 application with Qt 4 in mind.
+
+ \section2 Custom Styles
+
+ The style system used to provide consistent themes for Qt's
+ standard widgets has been revised for Qt 4. As a result,
+ custom styles for Qt 3 require some porting work to be done
+ before they can be used with Qt 4. To ease the porting process,
+ we recommend that you avoid implementing custom widget styles
+ for Qt 3 applications unless it is absolutely necessary for
+ your users.
+
+ In Qt 4.2 and later, \l{Qt Style Sheets} can be used to
+ implement many common modifications to existing styles, and
+ this may be sufficient for Qt 3 applications.
+
+ \section2 Events
+ In Qt 3, QCloseEvents were not accepted by default. In Qt 4,
+ the event handler QWidget::closeEvent() receives QCloseEvents,
+ and accepts them by default closing the application. To avoid
+ this, please reimplement QWidget::closeEvent().
+*/
diff --git a/doc/src/porting4-removedenumvalues.qdocinc b/doc/src/porting/porting4-removedenumvalues.qdocinc
index fe38d0ec1..fe38d0ec1 100644
--- a/doc/src/porting4-removedenumvalues.qdocinc
+++ b/doc/src/porting/porting4-removedenumvalues.qdocinc
diff --git a/doc/src/porting4-removedtypes.qdocinc b/doc/src/porting/porting4-removedtypes.qdocinc
index 9d7c5193d..9d7c5193d 100644
--- a/doc/src/porting4-removedtypes.qdocinc
+++ b/doc/src/porting/porting4-removedtypes.qdocinc
diff --git a/doc/src/porting4-removedvariantfunctions.qdocinc b/doc/src/porting/porting4-removedvariantfunctions.qdocinc
index dfaa8f35d..dfaa8f35d 100644
--- a/doc/src/porting4-removedvariantfunctions.qdocinc
+++ b/doc/src/porting/porting4-removedvariantfunctions.qdocinc
diff --git a/doc/src/porting4-removedvirtual.qdocinc b/doc/src/porting/porting4-removedvirtual.qdocinc
index 1af4fa62e..1af4fa62e 100644
--- a/doc/src/porting4-removedvirtual.qdocinc
+++ b/doc/src/porting/porting4-removedvirtual.qdocinc
diff --git a/doc/src/porting4-renamedclasses.qdocinc b/doc/src/porting/porting4-renamedclasses.qdocinc
index ef315a156..ef315a156 100644
--- a/doc/src/porting4-renamedclasses.qdocinc
+++ b/doc/src/porting/porting4-renamedclasses.qdocinc
diff --git a/doc/src/porting4-renamedenumvalues.qdocinc b/doc/src/porting/porting4-renamedenumvalues.qdocinc
index 9519da1bf..9519da1bf 100644
--- a/doc/src/porting4-renamedenumvalues.qdocinc
+++ b/doc/src/porting/porting4-renamedenumvalues.qdocinc
diff --git a/doc/src/porting4-renamedfunctions.qdocinc b/doc/src/porting/porting4-renamedfunctions.qdocinc
index 3e59a82c4..3e59a82c4 100644
--- a/doc/src/porting4-renamedfunctions.qdocinc
+++ b/doc/src/porting/porting4-renamedfunctions.qdocinc
diff --git a/doc/src/porting4-renamedstatic.qdocinc b/doc/src/porting/porting4-renamedstatic.qdocinc
index 156ab738e..156ab738e 100644
--- a/doc/src/porting4-renamedstatic.qdocinc
+++ b/doc/src/porting/porting4-renamedstatic.qdocinc
diff --git a/doc/src/porting4-renamedtypes.qdocinc b/doc/src/porting/porting4-renamedtypes.qdocinc
index fc8f604a7..fc8f604a7 100644
--- a/doc/src/porting4-renamedtypes.qdocinc
+++ b/doc/src/porting/porting4-renamedtypes.qdocinc
diff --git a/doc/src/porting/porting4.qdoc b/doc/src/porting/porting4.qdoc
new file mode 100644
index 000000000..20fd8a648
--- /dev/null
+++ b/doc/src/porting/porting4.qdoc
@@ -0,0 +1,4244 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group porting
+ \title Porting Guides
+ \brief Guides related to porting Qt applications and libraries.
+ \ingroup best-practices
+
+ A number of guides and documents are available that cover porting issues,
+ from detailed coverage of API differences between Qt 3 and Qt 4 to
+ platform and tool-specific documentation.
+
+ \generatelist{related}
+*/
+
+/*!
+ \page porting4.html
+ \title Porting to Qt 4
+ \contentspage {Porting Guides}{Contents}
+ \previouspage Porting Guides
+ \nextpage Porting to Qt 4 - Virtual Functions
+ \ingroup porting
+ \brief An overview of issues and techniques to consider when porting from Qt 3 to Qt 4.
+
+\omit
+ ### QFileInfo::PermissionSpec -> QFile::Permission(s?)
+ ### refer to porting4-renamedfunctions.qdoc
+ ### QApplication library mutex is gone
+ ### no integral conversion for containers? strings?
+ ### QVector etc. are initialized to 0 by default?
+ ### How to port from Qt 2.3 to Qt 4.
+ ### missing sort() functions?
+ ### QToolTipGroup
+ ### QServerSocket -> Q3ServerSocket
+
+ ### remove these when the classes are re-ported
+
+ ### QApplication::eventLoop()
+
+ \row \o void QCheckListItem::paintCell(QPainter *, const QColorGroup &, int, int, int)\row \o void Q3CheckListItem::paintCell(QPainter *, const QPalette &, int, int, int)
+ \row \o void QCheckListItem::paintFocus(QPainter *, const QColorGroup &, const QRect &) \o void Q3CheckListItem::paintFocus(QPainter *, const QPalette &, const QRect &)
+ \row \o QDataTable: a whole bunch of virtual functions have a different signature
+
+ < Function: void QIconViewItem::paintFocus(QPainter *, const QColorGroup &)
+ > Function: void QIconViewItem::paintFocus(QPainter *, const QPalette &)
+
+ < Function: void QIconViewItem::paintItem(QPainter *, const QColorGroup &)
+ > Function: void QIconViewItem::paintItem(QPainter *, const QPalette &)
+
+ < Function: bool QUrlOperator::checkValid()
+
+ < Function: void QWSInputMethod::setFont(const QFont &)
+
+ ### OpenMode or OpenMode
+
+ ### QWSDecoration
+\endomit
+
+ This document describes the process of porting applications from
+ Qt 3 to Qt 4.
+ If you haven't yet made the decision about porting, or are unsure
+ about whether it is worth it, take a look at the \l{What's New in
+ Qt 4}{key features} offered by Qt 4. See also
+ \l{Moving from Qt 3 to Qt 4} for tips on how to write Qt 3 code
+ that is easy to port to Qt 4.
+
+ \bold{Other porting guides:}
+
+ \list
+ \o \l{Moving from Qt 3 to Qt 4} \mdash covers some high level topics relevant
+ to developers porting from Qt 3 to Qt 4.
+ \o \l{Porting to Qt 4 - Drag and Drop} \mdash covers differences in the
+ way drag and drop is handled between Qt 3 and Qt 4.
+ \o \l{Porting UI Files to Qt 4} \mdash describes the new format used to
+ describe forms created with \QD.
+ \o \l{Porting to Graphics View} \mdash provides a class-by-class overview
+ of the differences between Qt 3's canvas API and Qt 4's Graphics
+ View framework.
+ \o \l{qt3to4 - The Qt 3 to 4 Porting Tool} \mdash provides an overview
+ of a tool aimed at helping developers start the process of porting an
+ application to Qt 4.
+ \endlist
+
+ The Qt 4 series is not binary compatible with the 3 series. This
+ means programs compiled for Qt 3 must be recompiled to work with
+ Qt 4. Qt 4 is also not completely \e source compatible with 3,
+ however nearly all points of incompatibility cause compiler
+ errors or run-time messages (rather than mysterious results). Qt
+ 4 includes many additional features and discards obsolete
+ functionality. Porting from Qt 3 to Qt 4 requires some effort,
+ but once completed the considerable additional power and
+ flexibility of Qt 4 is available for use in your applications.
+
+ To port code from Qt 3 to Qt 4:
+
+ \list 1
+
+ \o Briefly read the porting notes below to get an idea of what to expect.
+
+ \o Be sure that your code compiles and runs well on all your target
+ platforms with Qt 3.
+
+ \o Add the line \c{QT += qt3support} to your \c .pro file if you use
+ \c qmake; otherwise, edit your makefile or project file to
+ link against the Qt3Support library and add \c -DQT3_SUPPORT to your
+ compiler flags. (You might also need to specify other
+ libraries. See \l{What's New in Qt 4} for details.)
+
+ \o Run the \l qt3to4 porting tool. The tool will go through your
+ source code and adapt it to Qt 4.
+
+ \o Follow the instructions in the \l{Porting UI Files to Qt 4}
+ page to port Qt Designer files.
+
+ \o Recompile with Qt 4. For each error, search below for related
+ identifiers (e.g., function names, class names). This document
+ mentions all relevant identifiers to help you get the information
+ you need at the cost of being a little verbose.
+
+ \endlist
+
+ The \l qt3to4 porting tool replaces occurrences of Qt 3 classes
+ that don't exist anymore in Qt 4 with the corresponding Qt 3
+ support class; for example, \c QListBox is turned into \c
+ Q3ListBox.
+
+ At some point, you might want to stop linking against the Qt 3
+ support library (\l{Qt3Support}) and take advantage of Qt 4's
+ new features. The instructions below explain how to do that for
+ each compatibility class.
+
+ In addition to the Qt3Support classes (such as \c Q3Action, \c
+ Q3ListBox, and \c Q3ValueList), Qt 4 provides compatibility
+ functions when it's possible for an old API to cohabit with the
+ new one. For example, QString provides a
+ QString::simplifyWhiteSpace() compatibility function that's
+ implemented inline and that simply calls QString::simplified().
+ \bold{The compatibility functions are not documented here; instead,
+ they are documented for each class.}
+
+ If you have the line \c{QT += qt3support} in your \c .pro file, \c
+ qmake will automatically define the \c QT3_SUPPORT symbol, turning
+ on compatibility function support. You can also define the symbol
+ manually (e.g., if you don't want to link against the \c
+ Qt3Support library), or you can define \c QT3_SUPPORT_WARNINGS
+ instead, telling the compiler to emit a warning when a
+ compatibility function is called. (This works only with GCC 3.2+
+ and MSVC 7.)
+
+ If you get stuck, ask on the
+ \l{http://qt.nokia.com/lists/qt-interest/}{qt-interest}
+ mailing list. If you are a licensed customer, you can also contact
+ Qt's technical support team.
+
+\omit
+ ### what to do with slots that aren't slots anymore
+ ### what to do with virtual functions that aren't virtual anymore
+ ### what to do with virtual functions that changed signature
+\endomit
+
+\omit
+ ### <qtl.h> -- stuff that vanished?
+ ### implicit sharing
+ ### uint -> int indexes
+\endomit
+
+ Table of contents:
+
+ \tableofcontents{4}
+
+\omit
+ \section1 Header Files
+
+ ### New style of headers
+
+ \table
+ \header \o Old header \o New header
+ \row \o \c{<qtl.h>} \o \c{<qalgorithms.h>} or \c{<QtAlgorithms>}
+ \endtable
+
+ ### Some headers don't include each other anymore...
+\endomit
+
+ \section1 Casting and Object Types
+
+ In Qt 3, it was possible to use the \c qt_cast() function to determine
+ whether instances of QObject subclasses could be safely cast to derived
+ types of those subclasses. For example, if a QFrame instance is passed
+ to a function whose signature specifies a QWidget pointer as its argument,
+ \c qt_cast() could be used to obtain a QFrame pointer so that the
+ instance's functions can be accessed.
+
+ In Qt 4, much of this functionality is provided by the qobject_cast()
+ function, and additional functions also provide similar functionality for
+ certain non-QObject types:
+
+ \table
+ \header \o Qt 3 function \o Qt 4 function
+ \row \o T *qt_cast<T *>(QObject *) \o \l{qobject_cast()}{T *qobject_cast<T *>(QObject *)}
+ \row \o \o \l{qgraphicsitem_cast()}{T qgraphicsitem_cast<T>(QGraphicsItem *)}
+ \row \o \o \l{qstyleoption_cast()}{T qstyleoption_cast<T>(QStyleOption *)}
+ \row \o \o \l{qvariant_cast()}{T qvariant_cast<T>(const QVariant &)}
+ \row \o \o \l{qdbus_cast()}{T qdbus_cast(const QDBusArgument &)}
+ \endtable
+
+\omit
+ \section1 Global Functions
+
+ \table
+ \header \o Qt 3 function \o Qt 4 function
+ \row \o cstrcmp() \o strcmp()
+ \row \o cstrcpy() \o strcpy()
+ \row \o cstrlen() \o strlen()
+ \row \o cstrncmp() \o strncmp()
+ \row \o qmemmove() \o memmove()
+ \endtable
+
+ qGLVersion() ###
+
+ copyBlt() ###
+ bitBlt()
+
+ #ifdef compat classes:
+ * QLayoutIterator
+ * QColorGroup
+ * QMenuItem
+
+ QWidget visibleRect property compat
+ QWidget::BackgroundOrigin compat
+\endomit
+
+ \section1 Type Names
+
+ The table below lists the classes that have been renamed in Qt 4.
+ If you compile your applications with \c QT3_SUPPORT defined, the
+ old names will be available.
+
+ Whenever you see an occurrence of the name on the left, you can
+ safely replace it with the Qt 4 equivalent in your program. The
+ \l qt3to4 tool performs the conversion automatically.
+
+ \table
+ \header \o Qt 3 class name \o Qt 4 class name
+ \input porting/porting4-renamedclasses.qdocinc
+ \endtable
+
+ The table below lists the enums and typedefs that have been
+ renamed in Qt 4. If you compile your applications with \c
+ QT3_SUPPORT defined, the old names will be available.
+
+ Whenever you see an occurrence of the name on the left, you can
+ safely replace it with the Qt 4 equivalent in your program. The
+ \l qt3to4 tool performs the conversion
+ automatically.
+
+ \table
+ \header \o Qt 3 type name \o Qt 4 type name
+ \input porting/porting4-renamedtypes.qdocinc
+ \endtable
+
+ \omit
+ ###
+ \row \o QButton::ToggleState \o Use QCheckBox::ToggleState instead.
+ \endomit
+
+ \section1 Enum Values
+
+ The table below lists the enum values that have been renamed in
+ Qt 4. If you compile your applications with \c QT3_SUPPORT defined,
+ the old names will be available.
+
+ Whenever you see an occurrence of the name on the left, you can
+ safely replace it with the Qt 4 equivalent in your program. The
+ \l qt3to4 tool performs the conversion automatically.
+
+ \table
+ \header \o Qt 3 enum value name \o Qt 4 enum value name
+ \input porting/porting4-renamedenumvalues.qdocinc
+ \endtable
+
+ In addition, the following \l{Qt::WindowFlags}{window flags} have
+ been either replaced with \l{Qt::WidgetAttribute}{widget
+ attributes} or have been deprecated:
+
+ \table
+ \header \o Qt 3 type \o Qt 4 equivalent
+ \row \o Qt::WDestructiveClose \o Use QWidget::setAttribute(Qt::WA_DeleteOnClose) instead.
+ \row \o Qt::WStaticContents \o{1,2} Use QWidget::setAttribute(Qt::WA_StaticContents) instead.
+ \row \o Qt::WNorthWestGravity
+ \row \o Qt::WNoAutoErase \o{1,3} Use QWidget::setAttribute(Qt::WA_NoBackground) instead.
+ \row \o Qt::WResizeNoErase
+ \row \o Qt::WRepaintNoErase
+ \row \o Qt::WPaintClever \o Unnecessary in Qt 4.
+ \omit ### Check with Matthias \endomit
+ \row \o Qt::WMacNoSheet \o Unnecessary in Qt 4.
+ \omit ### Check with Sam \endomit
+ \endtable
+
+ In Qt 4.1, the widget flags used to determine window modality were
+ replaced by a single enum that can be used to specify the modal
+ behavior of top-level widgets:
+
+ \table
+ \header \o Qt 3 type \o Qt 4 equivalent
+ \row \o Qt::WShowModal \o Use QWidget::setWindowModality(Qt::ApplicationModal) instead.
+ \row \o Qt::WGroupLeader \o Use QWidget::setWindowModality(Qt::WindowModal)
+ for each child dialog of the group leader, but do not change the modality
+ of the group leader itself.
+ \endtable
+
+ \target properties
+ \section1 Properties
+
+ Some properties have been renamed in Qt 4, to make Qt's API more
+ consistent and more intuitive. For example, QWidget's \c caption
+ property has been renamed \c windowTitle to make it clear that it
+ refers to the title shown in the window's title bar.
+
+ In addition, the property system has been extended to allow
+ properties to be redefined in subclasses with the \l Q_PROPERTY()
+ macro, removing the need for a \c Q_OVERRIDE() macro.
+
+ The table below lists the Qt properties that have been renamed in
+ Qt 4. Occurrences of these in \e{Qt Designer} UI files are
+ automatically converted to the new name by \c uic.
+
+ \table
+ \header \o Qt 3 name \o Qt 4 name
+ \row \o QButton::accel \o QButton::shortcut
+ \row \o QButton::on \o QButton::checked
+ \row \o QButton::toggleButton \o QAbstractButton::checkable
+ \row \o QDial::lineStep \o QDial::singleStep
+ \row \o QDial::maxValue \o QDial::maximum
+ \row \o QDial::minValue \o QDial::minimum
+ \row \o QDialog::modal \o QDialog::isModal
+ \row \o QLineEdit::edited \o QLineEdit::modified
+ \row \o QLineEdit::hasMarkedText \o QLineEdit::hasSelectedText
+ \row \o QLineEdit::markedText \o QLineEdit::selectedText
+ \row \o QObject::name \o QObject::objectName
+ \row \o QProgressDialog::progress \o QProgressDialog::value
+ \row \o QProgressDialog::totalSteps \o QProgressDialog::maximum
+ \row \o QProgressDialog::wasCancelled \o QProgressDialog::wasCanceled
+ \row \o QPushButton::iconSet \o QPushButton::icon
+ \row \o QScrollBar::draggingSlider \o QScrollBar::sliderDown
+ \row \o QScrollBar::lineStep \o QScrollBar::singleStep
+ \row \o QScrollBar::maxValue \o QScrollBar::maximum
+ \row \o QScrollBar::minValue \o QScrollBar::minimum
+ \row \o QSlider::lineStep \o QSlider::singleStep
+ \row \o QSlider::maxValue \o QSlider::maximum
+ \row \o QSlider::minValue \o QSlider::minimum
+ \row \o QSpinBox::lineStep \o QSpinBox::singleStep
+ \row \o QSpinBox::maxValue \o QSpinBox::maximum
+ \row \o QSpinBox::minValue \o QSpinBox::minimum
+ \row \o QTabBar::currentTab \o QTabBar::currentIndex
+ \row \o QTabWidget::currentPage \o QTabWidget::currentWidget
+ \row \o QToolButton::iconSet \o QToolButton::icon
+ \row \o QToolButton::textLabel \o QToolButton::text
+ \row \o QWidget::caption \o QWidget::windowTitle
+ \row \o QWidget::icon \o QWidget::windowIcon
+ \row \o QWidget::iconText \o QWidget::windowIconText
+ \endtable
+
+ A handful of properties in Qt 3 are no longer properties in Qt 4,
+ but the access functions still exist as part of the Qt 4 API.
+ These are not used by \e{Qt Designer}; the only case where you
+ need to worry about them is in highly dynamic applications that
+ use Qt's meta-object system to access properties. Here's the list
+ of these properties with the read and write functions that you
+ can use instead:
+
+ \table
+ \header \o Qt 3 property \o Qt 4 read function \o Qt 4 write function
+ \row \o QSqlDatabase::connectOptions \o QSqlDatabase::connectOptions() \o QSqlDatabase::setConnectOptions()
+ \row \o QSqlDatabase::databaseName \o QSqlDatabase::databaseName() \o QSqlDatabase::setDatabaseName()
+ \row \o QSqlDatabase::hostName \o QSqlDatabase::hostName() \o QSqlDatabase::setHostName()
+ \row \o QSqlDatabase::password \o QSqlDatabase::password() \o QSqlDatabase::setPassword()
+ \row \o QSqlDatabase::port \o QSqlDatabase::port() \o QSqlDatabase::setPort()
+ \row \o QSqlDatabase::userName \o QSqlDatabase::userName() \o QSqlDatabase::setUserName()
+ \endtable
+
+ Some properties have been removed from Qt 4, but the associated
+ access functions are provided if \c QT3_SUPPORT is defined to help
+ porting to Qt 4. When converting Qt 3 UI files to Qt 4, \c uic
+ generates calls to the Qt 3 compatibility functions. Note that
+ this only applies to the properties of the Qt3Support library,
+ i.e. \c QT3_SUPPORT properties of the other libraries must be
+ ported manually when converting Qt 3 UI files to Qt 4.
+
+ The table below lists these properties with the read and write
+ functions that you can use instead. The documentation for the
+ individual functions explains how to replace them with
+ non-compatibility Qt 4 functions.
+
+ \table
+ \header \o Qt 3 property \o Qt 4 read function (\c QT3_SUPPORT)\o Qt 4 write function (\c QT3_SUPPORT)
+ \row \o QMenuBar::separator \o QMenuBar::separator() \o QMenuBar::setSeparator()
+ \row \o QPushButton::menuButton \o QPushButton::isMenuButton() \o N/A
+ \row \o QTabWidget::margin \o QTabWidget::margin() \o QTabWidget::setMargin()
+ \row \o QTextEdit::textFormat \o QTextEdit::textFormat() \o QTextEdit::setTextFormat()
+ \row \o QWidget::backgroundBrush \o QWidget::backgroundBrush() \o N/A
+ \row \o QWidget::backgroundMode \o QWidget::backgroundMode() \o QWidget::setBackgroundMode()
+ \row \o QWidget::backgroundOrigin \o QWidget::backgroundOrigin() \o QWidget::setBackgroundOrigin()
+ \row \o QWidget::colorGroup \o QWidget::colorGroup() \o QWidget::setColorGroup()
+ \row \o QWidget::customWhatsThis \o QWidget::customWhatsThis() \o QWidget::setCustomWhatsThis()
+ \row \o QWidget::inputMethodEnabled \o QWidget::inputMethodEnabled() \o QWidget::setInputMethodEnabled()
+ \row \o QWidget::ownCursor \o QWidget::ownCursor() \o N/A
+ \row \o QWidget::ownFont \o QWidget::ownFont() \o N/A
+ \row \o QWidget::ownPalette \o QWidget::ownPalette() \o N/A
+ \row \o QWidget::paletteBackgroundColor \o QWidget::paletteBackgroundColor() \o QWidget::setPaletteBackgroundColor()
+ \row \o QWidget::paletteBackgroundPixmap \o QWidget::paletteBackgroundPixmap() \o QWidget::setPaletteBackgroundPixmap()
+ \row \o QWidget::paletteForegroundColor \o QWidget::paletteForegroundColor() \o QWidget::setPaletteForegroundColor()
+ \row \o QWidget::underMouse \o QWidget::underMouse() \o N/A
+ \endtable
+
+ The following Qt 3 properties and their access functions are no
+ longer available in Qt 4. In most cases, Qt 4 provides similar
+ functionality.
+
+ \table
+ \header \o Qt 3 property \o Qt 4 equivalent
+ \row \o QButton::autoRepeat \o N/A
+ \row \o QButton::autoResize \o Call QWidget:setFixedSize(QWidget::sizeHint()) whenever you change the contents.
+ \row \o QButton::exclusiveToggle \o See \l QAbstractButton::autoExclusive.
+ \row \o QButton::pixmap \o Use QAbstractButton::icon instead.
+ \row \o QButton::toggleState \o Use QCheckBox::setState() and QCheckBox::state() instead.
+ \row \o QButton::toggleType \o Use QCheckBox::setTristate() instead.
+ \row \o QComboBox::autoResize \o Call QWidget:setFixedSize(QWidget::sizeHint()) whenever you change the contents.
+ \row \o QFrame::contentsRect \o Use Q3Frame::contentsRect() instead.
+ \row \o QFrame::margin \o Use QWidget::setContentsMargins() instead.
+ \row \o QTabBar::keyboardFocusTab \o N/A
+ \row \o QToolButton::offIconSet \o Use the \l{QIcon::Off}{off component} of QAbstractButton::icon instead.
+ \row \o QToolButton::onIconSet \o Use the \l{QIcon::On}{on component} of QAbstractButton::icon instead.
+ \row \o QWidget::microFocusHint \o N/A
+ \row \o QMimeSource::serialNumber () \o N/A
+ \endtable
+
+\omit
+ \section1 Inheritance Chain
+
+ ### QMenuBar, etc.
+
+ \section1 Null vs. Empty
+
+ ###
+\endomit
+
+ \section1 Explicit Sharing
+
+ Qt 4 is the first version of Qt that contains no \link
+ http://qt.nokia.com/doc/3.3/shclass.html explicitly shared
+ \endlink classes. All classes that were explicitly shared in Qt 3
+ are \e implicitly shared in Qt 4:
+
+ \list
+ \o QImage
+ \o QBitArray
+ \o QByteArray
+ \o Q3PointArray
+ \endlist
+
+ This means that if you took a copy of an instance of the class
+ (using operator=() or the class's copy constructor), any
+ modification to the copy would affect the original and vice
+ versa. Needless to say, this behavior is rarely desirable.
+
+ Fortunately, nearly all Qt 3 applications don't rely on explicit
+ sharing. When porting, you typically only need to remove calls to
+ detach() and/or copy(), which aren't necessary anymore.
+
+ If you deliberately rely on explicit sharing in your application,
+ you can use pointers or references to achieve the same result in
+ Qt 4.
+
+ \oldcode
+ void asciify(QByteArray array)
+ {
+ for (int i = 0; i < (int)array.size(); ++i) {
+ if ((uchar)array[i] >= 128)
+ array[i] = '?';
+ }
+ }
+ \newcode
+ void asciify(QByteArray &array)
+ {
+ for (int i = 0; i < array.size(); ++i) {
+ if ((uchar)array[i] >= 128)
+ array[i] = '?';
+ }
+ }
+ \endcode
+
+ (Notice the \c & in the parameter declaration.)
+
+\omit
+ \section1 Qt Designer UI Files
+
+ ###
+\endomit
+
+ \section1 Painting and Redrawing Widgets
+
+ When implementing custom widgets in Qt 3, it was possible to use
+ QPainter to draw on a widget outside paint events. This made it
+ possible to integrate Qt applications with third party libraries
+ and tools that impose their own rendering models. For example,
+ a widget might be repainted in a slot using data obtained from
+ an external source.
+
+ In Qt 4, it is only possible to paint on a widget from within its
+ \l{QWidget::}{paintEvent()} handler function. This restriction simplifies
+ Qt's interaction with native window systems, improves the performance
+ of applications by reducing the number of redraw operations, and
+ also enables features to be implemented to improve the appearance of
+ widgets, such as a backing store.
+
+ Generally, we recommend redesigning applications to perform all
+ painting operations in \l{QWidget::}{paintEvent()} functions, deferring
+ actual painting until the next time this function is called.
+ Applications can post paint events to trigger repaints, and it may be
+ possible to examine your widget's internal state to determine which
+ part of the widget needs to be repainted.
+
+ If asynchronous repaints are used extensively by your application,
+ and it is not practical to redesign the rendering model to perform
+ all painting operations from within a widget's \l{QWidget::}{paintEvent()}
+ function, it may be necessary to consider using an intermediate painting
+ step. In this approach, one or more images can be updated asynchronously
+ and painted on the widget in the paint event. To avoid excessive
+ buffering, it may be worthwhile disabling the backing store by setting
+ the widget's Qt::WA_PaintOnScreen widget attribute.
+
+ On certain platforms, the Qt::WA_PaintOutsidePaintEvent widget attribute
+ can be set to allow a widget to be painted from outside paint events.
+
+ \note Setting widget attributes to disable key features of Qt's widget
+ rendering model may also cause other features to be disabled.
+
+ \section1 Compatibility Signals and Slots
+
+ When \c QT3_SUPPORT is defined, the default connection type for signals
+ and slots is the Qt::AutoCompatConnection type. This allows so-called
+ \e compatibility signals and slots (defined in Qt 3 support mode to provide
+ Qt 3 compatibility features) to be connected to other signals and
+ slots.
+
+ However, if Qt is compiled with debugging output enabled, and the
+ developer uses other connection types to connect to compatibility
+ signals and slots (perhaps by building their application without Qt 3
+ support enabled), then Qt will output warnings to the console to
+ indicate that compatibility connections are being made. This is intended
+ to be used as an aid in the process of porting a Qt 3 application to Qt 4.
+
+ \section1 QAccel
+
+ The \c QAccel class has been renamed Q3Accel and moved to the
+ Qt3Support module. In new applications, you have three options:
+
+ \list 1
+ \o You can use QAction and set a key sequence using QAction::setShortcut().
+ \o You can use QShortcut, a class that provides similar
+ functionality to Q3Accel.
+ \o You can use QWidget::grabShortcut() and process "shortcut"
+ events by reimplementing QWidget::event().
+ \endlist
+
+ The Q3Accel class also supports multiple accelerators using the
+ same object, by calling Q3Accel::insertItem() multiple times. In
+ Qt 4, the solution is to create multiple QShortcut objects.
+
+ \section1 QAccessibleInterface
+
+ The QAccessibleInterface class has undergone some API changes in
+ Qt 4, to make it more consistent with the rest of the Qt API.
+
+ If you have classes that inherit QAccessibleInterface or one of
+ its subclasses (QAccessibleObject, QAccessibleWidget, etc.), you
+ must port them the new QAccessibleInterface API.
+
+ See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions}
+ for a list of QAccessibleInterface virtual member functions in
+ Qt 3 that are no longer virtual in Qt 4.
+
+ \section1 QAccessibleTitleBar
+
+ The \c QAccessibleTitleBar has been renamed Q3AccessibleTitleBar
+ and moved to the Qt3Support library.
+
+ \target qaction.section
+ \section1 QAction
+
+ The QAction class has been redesigned in Qt 4 to integrate better
+ with the rest of the menu system. It unifies the old \c QMenuItem
+ class and the old \c QAction class into one class, avoiding
+ unnecessary data duplication and the need to learn two different
+ APIs.
+
+ The old \c QAction and \c QActionGroup classes have been renamed
+ Q3Action and Q3ActionGroup and moved to Qt3Support. In addition,
+ the new QAction class has compatibility functions to ease
+ transition to Qt 4. Note that when using Q3ToolBar and
+ Q3PopupMenu, their actions must be \l {Q3Action}s.
+
+ See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions}
+ for a list of QAction virtual member functions in Qt 3 that are
+ no longer virtual in Qt 4.
+
+ \section1 QActionGroup
+
+ The QAction class has been completely redesigned in Qt 4 to
+ integrate better with the rest of the menu system. See the
+ \l{#qaction.section}{section on QAction} for details.
+
+ \section1 QApplication
+
+ The QApplication class has been split into two classes:
+ QCoreApplication and QApplication. The new QApplication class
+ inherits QCoreApplication and adds GUI-related functionality. In
+ practice, this has no consequences for existing Qt applications.
+
+ In addition, the following API changes were made:
+
+ \list 1
+ \o QApplication::allWidgets() and QApplication::topLevelWidgets()
+ used to return a pointer to a QWidgetList. Now they return a
+ QWidgetList.
+
+ Also, QWidgetList has changed from being a typedef for
+ QPtrList<QWidget> to being a typedef for QList<QWidget *>.
+ See the \l{#qwidgetlist.section}{section on QWidgetList} below
+ for details.
+
+ \oldcode
+ QWidgetList *list = QApplication::topLevelWidgets();
+ QWidgetListIt it(*list);
+ QWidget *widget;
+ while ((widget = it.current())) {
+ if (widget->inherits("MainWindow"))
+ ((MainWindow *)widget)->updateRecentFileItems();
+ ++it;
+ }
+ delete list;
+ \newcode
+ QWidgetList list = QApplication::topLevelWidgets();
+ for (int i = 0; i < list.size(); ++i) {
+ if (MainWindow *mainWin = qobject_cast<MainWindow *>(list.at(i)))
+ mainWin->updateRecentFileItems();
+ }
+ \endcode
+ \o QApplication::setMainWidget() is no longer used. When all an application's
+ windows are closed, the application will exit normally.
+ \endlist
+
+ \section1 QAquaStyle
+
+ The \c QAquaStyle class first appeared in Qt 3.0, when the Qt for
+ Mac OS X port was first released. It emulated Apple's "Aqua" theme.
+ In Qt 3.1, QAquaStyle was obsoleted by QMacStyle, which uses Appearance
+ Manager to perform its drawing.
+
+ The \c QAquaStyle class is no longer provided in Qt 4. Use
+ QMacStyle instead.
+
+ \target qasciidict.section
+ \section1 QAsciiCache<T>
+
+ \c QAsciiCache<T> has been renamed Q3AsciiCache<T> and moved to
+ the Qt3Support library. It has been replaced by
+ QCache<QByteArray, T>.
+
+ For details, read the \l{#qcache.section}{section on QCache<T>},
+ mentally substituting QByteArray for QString.
+
+ \section1 QAsciiDict<T>
+
+ QAsciiDict<T> and QAsciiDictIterator<T> have been renamed
+ Q3AsciiDict<T> and Q3AsciiDictIterator<T> and moved to the
+ Qt3Support library. They have been replaced by the
+ more modern QHash<Key, T> and QMultiHash<Key, T> classes and
+ their associated iterator classes.
+
+ When porting old code that uses Q3AsciiDict<T> to Qt 4, there are
+ four classes that you can use:
+
+ \list
+ \o QMultiHash<QByteArray, T *>
+ \o QMultiHash<QByteArray, T>
+ \o QHash<QByteArray, T *>
+ \o QHash<QByteArray, T>
+ \endlist
+
+ For details, read the \l{#qdict.section}{section on QDict<T>},
+ mentally substituting QByteArray for QString.
+
+ \section1 QAsyncIO
+
+ The \c QAsyncIO class was used internally in Qt 2.x in
+ conjunction with QImageConsumer. It was obsoleted in Qt 3.0.
+
+ \input porting/porting4-obsoletedmechanism.qdocinc
+
+ \section1 QBackInsertIterator
+
+ The undocumented \c QBackInsertIterator class has been removed
+ from the Qt library. If you need it in your application, feel
+ free to copy the source code from the Qt 3 \c <qtl.h> header
+ file.
+
+ \section1 QBitArray
+
+ In Qt 3, QBitArray inherited from QByteArray. In Qt 4, QBitArray
+ is a totally independent class. This makes very little difference
+ to the user, except that the new QBitArray doesn't provide any of
+ QByteArray's byte-based API anymore. These calls will result in a
+ compile-time error, except calls to QBitArray::truncate(), whose
+ parameter was a number of \e bytes in Qt 3 and a number of bits
+ in Qt 4.
+
+ QBitArray was an explicitly shared class in Qt 3. See \l{Explicit
+ Sharing} for more information.
+
+ The \c QBitVal class has been renamed QBitRef.
+
+ \section1 QButton
+
+ The \c QButton class has been replaced by QAbstractButton in Qt
+ 4. Classes like QPushButton and QRadioButton inherit from
+ QAbstractButton. As a help when porting older Qt applications,
+ the Qt3Support library contains a Q3Button class
+ implemented in terms of the new QAbstractButton.
+
+ If you used the \c QButton class as a base class for your own
+ button type and want to port your code to the newer
+ QAbstractButton, you need to be aware that QAbstractButton has no
+ equivalent for the Q3Button::drawButton(QPainter *) virtual
+ function. The solution is to reimplement QWidget::paintEvent() in
+ your QAbstractButton subclass as follows:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 0
+
+ \table
+ \header \o Q3Button function \o QAbstractButton equivalent
+ \row \o Q3Button::autoResize() \o Call QWidget:setFixedSize(QWidget::sizeHint()) whenever you change the contents.
+ \row \o Q3Button::isExclusiveToggle() \o Use QAbstractButton::group() or QAbstractButton::autoExclusive() instead.
+ \row \o Q3Button::pixmap() const \o QAbstractButton::icon()
+ \row \o Q3Button::setAutoResize() \o N/A
+ \row \o Q3Button::setPixmap(const QPixmap &) \o QAbstractButton::setIcon(const QIcon &)
+ \row \o Q3Button::setState(ToggleState) \o See remark below
+ \row \o Q3Button::setToggleType(ToggleType) \o See remark below
+ \row \o Q3Button::state() \o See remark below
+ \row \o Q3Button::stateChanged(int) \o See remark below
+ \row \o Q3Button::toggleType() \o See remark below
+ \endtable
+
+ Remarks:
+
+ \list 1
+ \o In Qt 3, \c QButton had a "toggle type", which could be
+ QButton::SingleShot, QButton::Toggle, or QButton::Tristate.
+ The new QAbstractButton class doesn't support "tristate"
+ directly; this feature is implemented in QCheckBox instead.
+ The two other "toggle types" (\c QButton::SingleShot and \c
+ QButton::Toggle) are replaced by a QAbstractButton::checkable
+ property.
+ \o In Qt 3, QButton had a "toggle state", which could be \c
+ QButton::Off, \c QButton::NoChange, or \c QButton::On. In Qt
+ 4, this mechanism has been moved to QCheckBox.
+ \endlist
+
+ See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
+ a list of \c QButton virtual member functions in Qt 3 that aren't
+ virtual in Qt 4.
+
+ See \l{#properties}{Properties} for a list of \c QButton properties
+ in Qt 3 that have changed in Qt 4.
+
+ \section1 QButtonGroup
+
+ The \c QButtonGroup class has been completely redesigned in Qt 4.
+ For compatibility, the old \c QButtonGroup class has been renamed
+ Q3ButtonGroup and has been moved to Qt3Support.
+ Likewise, the \c QHButtonGroup and \c QVButtonGroup convenience
+ subclasses have been renamed \c Q3HButtonGroup and \c Q3VButtonGroup and
+ moved to the Qt3Support library.
+
+ The old \c QButtonGroup, as well as Q3ButtonGroup, can be used in two ways:
+
+ \list 1
+ \o The button group is the parent widget of a number of buttons,
+ i.e. the button group is the parent argument in the button
+ constructor. The buttons are assigned identifiers 0, 1, 2, etc.,
+ in the order they are created. A Q3ButtonGroup can display a frame
+ and a title because it inherits Q3GroupBox.
+ \o The button group is an invisible widget and the contained
+ buttons have some other parent widget. In this usage, each
+ button must be manually inserted, using
+ Q3ButtonGroup::insert(), into the button group and given an
+ ID number.
+ \endlist
+
+ Unlike Q3ButtonGroup, the new QButtonGroup doesn't inherit
+ QWidget. It is very similar to a "hidden Q3ButtonGroup".
+
+ If you use a Q3ButtonGroup, Q3HButtonGroup, or Q3VButtonGroup as
+ a widget and want to port to Qt 4, you can replace it with
+ QGroupBox. In Qt 4, radio buttons with the same parent are
+ automatically part of an exclusive group, so you normally don't
+ need to do anything else. See also the
+ \l{#qgroupbox.section}{section on QGroupBox} below.
+
+ See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
+ a list of QButtonGroup virtual member functions in Qt 3 that are no
+ longer virtual in Qt 4.
+
+ \target qbytearray.section
+ \section1 QByteArray
+
+ In Qt 3, QByteArray was simply a typedef for QMemArray<char>. In
+ Qt 4, QByteArray is a class in its own right, with a higher-level
+ API in the style of QString.
+
+ Here are the main issues to be aware of when porting to Qt 4:
+
+ \list 1
+ \o The QMemArray(int size) constructor has been replaced with
+ QByteArray(int size, char ch). The second argument specifies
+ which character should be used for initializing the array;
+ pass '\\0' if you have no specific needs.
+
+ \oldcode
+ QByteArray ba(64);
+ \newcode
+ QByteArray ba(64, '\0');
+ \endcode
+
+ \o QMemArray::at() returned a non-const reference, whereas the
+ new QByteArray::at() returns a const value. Code like
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 1
+
+ will no longer compile. Instead, use QByteArray::operator[]:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 2
+
+ \o The QMemArray::contains(char) function has been renamed
+ QByteArray::count(char). In addition, there now exists a
+ QByteArray::contains(char) function that returns a boolean
+ value. Replace old calls to contains() with either count() or
+ contains(), depending on whether you care about the specific
+ number of occurrences of a character in the byte array or
+ only care about whether the array contains that character or
+ not.
+
+ \o The new QByteArray has no assign() function. Calls to
+ QMemArray::assign(const QMemArray &) can be replaced by calls
+ to QByteArray::operator=(). Calls to QMemArray::assign(const
+ T *, uint) have no equivalent in Qt 4; if you use it, the
+ solution is either to use QByteArray::fromRawData() and to
+ call free() yourself to avoid a memory leak, or to use the
+ QByteArray(const char *, int) constructor, which will take a
+ deep copy of the data.
+
+ \o QMemArray::bsearch() and QMemArray::sort() have no equivalent
+ in the new QByteArray class. Use \l qBinaryFind() and \l qSort()
+ if you need that functionality.
+ \endlist
+
+ QByteArray was an explicitly shared class in Qt 3. See
+ \l{Explicit Sharing} for more information.
+
+ \target qcache.section
+ \section1 QCache<T>
+
+ QCache<T> has been renamed Q3Cache<T> and moved to Qt3Support.
+ The new QCache class has a different API, and takes different
+ template parameters: QCache<Key, T>.
+
+ When porting to Qt 4, QCache<QString, T> is the obvious
+ substitute for Q3Cache<T>. The following table summarizes the API
+ differences.
+
+ \table
+ \header \o Q3Cache<T> function \o QCache<QString, T> equivalent
+ \row \o Q3Cache::Q3Cache(int maxCost, int size, bool caseSensitive) \o See remark below
+ \row \o Q3Cache::autoDelete() \o N/A
+ \row \o Q3Cache::count() \o QCache::count() or QCache::size() (equivalent)
+ \row \o Q3Cache::setAutoDelete() \o See remark below
+ \row \o Q3Cache::size() \o N/A
+ \row \o Q3Cache::statistics() \o N/A
+ \row \o Q3Cache::operator=() \o See remark below
+ \endtable
+
+ Remarks:
+
+ \list 1
+ \o Q3Cache requires the user to allocate a specific number of
+ buckets by passing a prime number (17 by default) to the
+ constructor. In contrast, the new QCache's hash table
+ automatically grows and shrinks as needed, and the
+ constructor doesn't take a prime number.
+
+ \o Q3Cache supportes case-insensitive lookups by passing false as
+ second argument to the constructor. This feature has no
+ equivalent in QMultiHash. Instead, call QString::toLower()
+ before you insert or lookup a key in the hash.
+
+ \o The Q3Cache::insert() function returns a \c bool value that
+ indicates whether or not the item actually was inserted in
+ the cache. If the item wasn't inserted, it was the caller's
+ responsibility to delete the item. The new QCache::insert()
+ function returns \c void and either adds it to the cache or
+ deletes it right away. Old code like
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 3
+
+ becomes
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 4
+
+ \o The new QCache class \e always takes ownership of the items
+ it stores (i.e. auto-delete is always on). If you use Q3Cache
+ with auto-delete turned off (the rarely useful default), you
+ cannot use QCache as a direct substitute. One unelegant trick
+ that works well in practice is to use QCache<QString, T *>
+ instead of QCache<QString, T>. In that case, QCache owns the
+ pointers, not the objects that the pointers refer to. For
+ example,
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 5
+
+ becomes
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 6
+
+ An alternative is to stick to using Q3Cache.
+ \endlist
+
+ QCacheIterator<T> has been renamed Q3CacheIterator<T> and moved
+ to the Qt3Support library. The new QCache class
+ doesn't offer any iterator types.
+
+ \section1 QCanvas
+
+ The canvas module classes have been
+ renamed and moved to the Qt3Support library.
+
+ \table
+ \header \o Qt 3 class name \o Compatibility class in Qt 4
+ \row \o \c QCanvas \o Q3Canvas
+ \row \o \c QCanvasEllipse \o Q3CanvasEllipse
+ \row \o \c QCanvasItem \o Q3CanvasItem
+ \row \o \c QCanvasItemList \o Q3CanvasItemList
+ \row \o \c QCanvasLine \o Q3CanvasLine
+ \row \o \c QCanvasPixmap \o Q3CanvasPixmap
+ \row \o \c QCanvasPixmapArray \o Q3CanvasPixmapArray
+ \row \o \c QCanvasPolygon \o Q3CanvasPolygon
+ \row \o \c QCanvasPolygonalItem \o Q3CanvasPolygonalItem
+ \row \o \c QCanvasRectangle \o Q3CanvasRectangle
+ \row \o \c QCanvasSpline \o Q3CanvasSpline
+ \row \o \c QCanvasSprite \o Q3CanvasSprite
+ \row \o \c QCanvasText \o Q3CanvasText
+ \row \o \c QCanvasView \o Q3CanvasView
+ \endtable
+
+ \l{The Graphics View Framework} replaces QCanvas. For more on porting to
+ Graphics View, see \l{Porting to Graphics View}.
+
+ \section1 QColor
+
+ In Qt 4, QColor is a value type like QPoint or QRect. Graphics
+ system-specific code has been implemented in QColormap.
+
+ The \c QColor::maxColors() function has been replaced
+ by QColormap::size().
+
+ The \c QColor::numBitPlanes() function has been replaced
+ by QColormap::depth().
+
+ The \c QColor::setNamedColor() function no longer supports
+ the named color in the same way as Qt 3. Qt 4's
+ \l{QColor::}{setNamedColor()} uses the new W3C convention
+ as stated
+ \l{http://www.w3.org/TR/SVG/types.html#ColorKeywords}{here}.
+
+ \table
+ \header \o{4,1} Predefined Qt Colors
+ \row \o Qt::color0 \o Qt::color1 \o Qt::black \o Qt::white
+ \row \o Qt::darkGray \o Qt::gray \o Qt::lightGray \o Qt::red
+ \row \o Qt::green \o Qt::blue \o Qt::cyan \o Qt::magenta
+ \row \o Qt::yellow \o Qt::darkRed \o Qt::darkGreen \o Qt::darkBlue
+ \row \o Qt::darkCyan \o Qt::darkMagenta \o Qt::darkYellow \o Qt::transparent
+ \endtable
+
+ The predefined colors listed in the table above were static
+ QColor objects in Qt 3. In Qt 4, they are enum values of type
+ Qt::GlobalColor. Thanks to the implicit QColor(Qt::GlobalColor)
+ constructor, the enum values are automatically converted to
+ \l{QColor}s in most contexts. Occasionally, you might need a
+ cast.
+
+ \oldcode
+ QColor lightCyan = Qt::cyan.light(180);
+ \newcode
+ QColor lightCyan = QColor(Qt::cyan).light(180);
+ \endcode
+
+ \section1 QColorGroup
+
+ In Qt 3, a QPalette consisted of three QColorGroup objects. In Qt
+ 4, the (rarely used) QColorGroup abstraction has been eliminated.
+ For source compatibility, a QColorGroup class is available when
+ \c QT3_SUPPORT is defined.
+
+ The new QPalette still works in terms of color groups, specified
+ through enum values (QPalette::Active, QPalette::Disabled, and
+ QPalette::Inactive). It also has the concept of a \e current
+ color group, which you can set using
+ QPalette::setCurrentColorGroup().
+
+ The QPalette object returned by QWidget::palette() returns a
+ QPalette initialized with the correct current color group for the
+ widget. This means that if you had code like
+
+ \badcode
+ painter.setBrush(colorGroup().brush(QColorGroup::Text));
+ \endcode
+
+ you can simply replace colorGroup() with palette():
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 7
+
+ \section1 QColorDrag
+
+ The \c QColorDrag class has been renamed Q3ColorDrag and moved to
+ the Qt3Support library. In Qt 4, use QMimeData
+ instead and call QMimeData::setColor() to set the color.
+
+ \section1 QComboBox
+
+ In Qt 3, the list box used to display the contents of a \c QComboBox
+ widget could be accessed by using the \c listBox() function. In Qt 4,
+ the standard list box is provided by a QListView widget, and can be
+ accessed with the \l{QComboBox::view()}{view()} function.
+
+ \omit ### \endomit
+
+ See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
+ a list of QComboBox virtual member functions in Qt 3 that are no longer
+ virtual in Qt 4.
+
+ \section1 QCString
+
+ In Qt 3, QCString inherited from QByteArray. The main drawback
+ of this approach is that the user had the responsibility of
+ ensuring that the string is '\\0'-terminated. Another important
+ issue was that conversions between \c QCString and QByteArray often
+ gave confusing results. (See the
+ \l{http://qt.nokia.com/doc/qq/qq05-achtung.html#qcstringisastringofchars}{Achtung!
+ Binary and Character Data} article in \e{Qt Quarterly} for an
+ overview of the pitfalls.)
+
+ Qt 4 solves that problem by merging the QByteArray and \c QCString
+ classes into one class called QByteArray. Most functions that
+ were in \c QCString previously have been moved to QByteArray. The
+ '\\0' issue is handled by having QByteArray allocate one extra
+ byte that it always sets to '\\0'. For example:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 8
+
+ The Qt3Support library contains a class called
+ Q3CString that inherits from the new QByteArray class and that
+ extends it to provide an API that is as close to the old \c QCString
+ class as possible. Note that the following functions aren't
+ provided by Q3CString:
+
+ \list
+ \o QCString::find(const QRegExp &, int)
+ \o QCString::findRev(const QRegExp &, int)
+ \o QCString::contains(const QRegExp &)
+ \o QCString::replace(const QRegExp &, const char *)
+ \endlist
+
+ The following functions have lost their last parameter, which
+ specified whether the search was case sensitive or not:
+
+ \list
+ \o QByteArray::find(char, int)
+ \o QByteArray::find(const char *, int)
+ \o QByteArray::findRev(char, int)
+ \o QByteArray::findRev(const char *, int)
+ \o QByteArray::contains(char)
+ \o QByteArray::contains(const char *)
+ \endlist
+
+ In both cases, the solution is to convert the \c QCString to a
+ QString and use the corresponding QString functions instead.
+
+ Also be aware that \c QCString::size() (inherited from
+ QByteArray) used to return the size of the character data \e
+ including the '\\0'-terminator, whereas the new
+ QByteArray::size() is just a synonym for QByteArray::length().
+ This brings QByteArray in line with QString.
+
+ When porting to Qt 4, occurrences of \c QCString should be
+ replaced with QByteArray or QString. The following table
+ summarizes the API differences between the Q3CString
+ class and the Qt 4 QByteArray and QString classes:
+
+ \table
+ \header \o Q3CString function \o Qt 4 equivalent
+ \row \o Q3CString::Q3CString(const char *, uint) \o See remark below
+ \row \o Q3CString::Q3CString(int) \o QByteArray::QByteArray(int, char)
+ \row \o Q3CString::leftJustify() \o QString::leftJustified()
+ \row \o Q3CString::length() \o QByteArray::length() or QByteArray::size() (equivalent)
+ \row \o Q3CString::lower() \o QByteArray::toLower()
+ \row \o Q3CString::rightJustify() \o QString::rightJustified()
+ \row \o Q3CString::setExpand() \o See remark below
+ \row \o Q3CString::simplifyWhiteSpace() \o QByteArray::simplified()
+ \row \o Q3CString::sprintf() \o QString::sprintf()
+ \row \o Q3CString::stripWhiteSpace() \o QByteArray::trimmed()
+ \row \o Q3CString::toDouble() \o QString::toDouble()
+ \row \o Q3CString::toFloat() \o QString::toFloat()
+ \row \o Q3CString::toInt() \o QString::toInt()
+ \row \o Q3CString::toLong() \o QString::toLong()
+ \row \o Q3CString::toShort() \o QString::toShort()
+ \row \o Q3CString::toUInt() \o QString::toUInt()
+ \row \o Q3CString::toULong() \o QString::toULong()
+ \row \o Q3CString::toUShort() \o QString::toUShort()
+ \row \o Q3CString::upper() \o QByteArray::toUpper()
+ \endtable
+
+ Remarks:
+
+ \list 1
+ \o Q3CString(const char *str, uint max) constructs a string of
+ length strlen(str) or \e max - 1, whichever is shorter.
+ QByteArray(const char *data, int size) constructs a byte
+ array containing exactly \e size bytes.
+
+ \oldcode
+ QCString str1("Hello", 4); // "Hel"
+ QCString str2("Hello world!", n);
+ \newcode
+ QByteArray str1("Hello", 3);
+ QByteArray str2("Hello world!");
+ str2.truncate(n - 1);
+ \endcode
+
+ \o Q3CString::setExpand(uint index, char ch) has no equivalent in
+ Qt 4.
+
+ \oldcode
+ QCString str("Hello world");
+ str.setExpand(16, '\n'); // "Hello world \n"
+ \newcode
+ QByteArray str("Hello world");
+ while (str.size() < 16)
+ str += ' ';
+ str += '\n';
+ \endcode
+ \endlist
+
+ Since the old \c QCString class inherited from QByteArray,
+ everything that is said in the \l{#qbytearray.section}{QByteArray
+ section} applies for \c QCString as well.
+
+ \section1 QCustomEvent
+
+ In Qt 3, developers could create a custom event by constructing
+ a new QCustomEvent, and send relevant data to other components in
+ the application by passing a void pointer, either on construction or
+ using the setData() function. Objects could receive custom events
+ by reimplementing the \l{QObject::customEvent()}{customEvent()}
+ function, and access the stored data using the event's data()
+ function.
+
+ In Qt 4, custom events are created by subclassing
+ QEvent. Event-specific data can be stored in a way that is
+ appropriate for your application. Custom events are still
+ delivered to each object's
+ \l{QObject::customEvent()}{customEvent()} handler function, but as
+ QEvent objects rather than as deprecated QCustomEvent objects.
+
+ \section1 QDataBrowser
+
+ The \c QDataBrowser class has been renamed Q3DataBrowser and
+ moved to the Qt3Support library. In Qt 4.2, you should use the
+ QDataWidgetMapper class to create data-aware forms.
+
+ See \l{QtSql Module} for an overview of the new SQL
+ classes.
+
+ \section1 QDataPump
+
+ The \c QDataPump class was used internally in Qt 2.x in
+ conjunction with QImageConsumer. It was obsoleted in Qt 3.0.
+
+ \input porting/porting4-obsoletedmechanism.qdocinc
+
+ \section1 QDataSink
+
+ The \c QDataSink class was used internally in Qt 2.x in conjunction
+ with QImageConsumer. It was obsoleted in Qt 3.0.
+
+ \input porting/porting4-obsoletedmechanism.qdocinc
+
+ \section1 QDataSource
+
+ The \c QDataSource class was used internally in Qt 2.x in
+ conjunction with QImageConsumer. It was obsoleted in Qt 3.0.
+ \input porting/porting4-obsoletedmechanism.qdocinc
+
+ \section1 QDataTable
+
+ The \c QDataTable class has been renamed Q3DataTable and moved to
+ the Qt3Support library. In Qt 4.2, you should use the
+ QDataWidgetMapper class to create data-aware forms.
+
+ See \l{QtSql Module} for an overview of the new SQL classes.
+
+ \section1 QDataView
+
+ The \c QDataView class has been renamed Q3DataView and moved to
+ the Qt3Support library. In Qt 4.2, you should use the
+ QDataWidgetMapper class to create data-aware forms.
+
+ See \l{QtSql Module} for an overview of the new SQL classes.
+
+ \section1 QDateEdit
+
+ The QDateEdit class in Qt 4 is a convenience class based on
+ QDateTimeEdit. The old class has been renamed Q3DateEdit and moved
+ to the Qt3Support library.
+
+ See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
+ a list of \c QDateEdit virtual member functions in Qt 3 that are
+ no longer virtual in Qt 4.
+
+ \section1 QDateTimeEditBase
+
+ The \c QDateTimeEditBase class has been renamed
+ Q3DateTimeEditBase and moved to Qt3Support. Use QDateTimeEdit or
+ QAbstractSpinBox instead.
+
+ \section1 QDateTimeEdit
+
+ The old \c QDateTimeEdit class has been renamed
+ Q3DateTimeEditBase and moved to Qt3Support. The new QDateTimeEdit
+ in Qt 4 has been rewritten from scratch to provide a more
+ flexible and powerful API.
+
+ See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
+ a list of QDateTimeEdit virtual member functions in Qt 3 that are no
+ longer virtual in Qt 4.
+
+ \section1 QDeepCopy<T>
+
+ The \c QDeepCopy<T> class in Qt 3 provided a means of ensuring that
+ implicitly shared and explicitly shared classes referenced unique
+ data. This was necessary because the reference counting in Qt's
+ container classes was done in a thread-unsafe manner.
+
+ With Qt 4, \c QDeepCopy<T> has been renamed Q3DeepCopy<T> and
+ moved to the Qt3Support library. Removing it from
+ existing code is straightforward.
+
+ \oldcode
+ QString str1 = "I am a string";
+ QDeepCopy<QString> str2 = str1;
+ QString str3 = QDeepCopy<QString>(str2);
+ \newcode
+ QString str1 = "I am a string";
+ QString str2 = str1;
+ QString str3 = str2;
+ \endcode
+
+ \section1 QDial
+
+ See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
+ a list of QDial virtual member functions in Qt 3 that are no longer
+ virtual in Qt 4.
+
+ See \l{#properties}{Properties} for a list of QDial properties in
+ Qt 3 that have changed in Qt 4.
+
+ \target qdict.section
+ \section1 QDict<T>
+
+ \c QDict<T> has been renamed Q3Dict<T> and moved to Qt3Support.
+ It has been replaced by the more modern QHash<Key, T> and
+ QMultiHash<Key, T> classes.
+
+ When porting old code that uses QDict<T> to Qt 4, there are four
+ classes that you can use:
+
+ \table
+ \header \o Qt 4 class \o When to use it
+ \row \o QMultiHash<QString, T *>
+
+ \o Since Q3Dict<T> is pointer-based and allows duplicate
+ keys, this is usually the most straightforward conversion.
+
+ \row \o QMultiHash<QString, T>
+
+ \o If type \c T is an \l{assignable data type}, you can use
+ \c T as the value type rather than \c{T *}. This often
+ leads to nicer code.
+
+ \row \o QHash<QString, T *>
+
+ \o{1,2} If you don't use duplicate keys, you can use QHash
+ instead of QMultiHash. QMultiHash inherits from QHash.
+
+ \row \o QHash<QString, T>
+ \endtable
+
+ The APIs of Q3Dict<T> and QMultiHash<QString, T *> are quite
+ similar. The main issue is that Q3Dict supports auto-delete
+ whereas QMultiHash doesn't.
+
+ \omit
+ (See \l{What's Wrong with
+ Auto-Delete} for an explanation of why the Qt 4 containers don't
+ offer that feature.)
+ \endomit
+
+ The following table summarizes the API differences between the
+ two classes:
+
+ \table
+ \header \o Q3Dict function \o QMultiHash equivalent
+ \row \o Q3Dict::Q3Dict(int size, bool caseSensitive) \o See remarks below
+ \row \o Q3Dict::autoDelete() \o N/A
+ \row \o Q3Dict::count() \o QMultiHash::count() or QMultiHash::size() (equivalent)
+ \row \o Q3Dict::find(const QString &) \o QMultiHash::value(const QString &)
+ \row \o Q3Dict::remove(const QString &) \o QMultiHash::take(const QString &)
+ \row \o Q3Dict::resize(uint) \o QMultiHash::reserve(int)
+ \row \o Q3Dict::setAutoDelete() \o See discussion below
+ \row \o Q3Dict::size() \o QMultiHash::capacity()
+ \row \o Q3Dict::statistics() \o N/A
+ \row \o Q3Dict::operator[](const QString &) \o See remark below
+ \endtable
+
+ Remarks:
+
+ \list 1
+ \o Q3Dict requires the user to allocate a specific number of
+ buckets by passing a prime number (17 by default) to the
+ constructor and/or calling Q3Dict::resize() later on. In
+ contrast, QMultiHash's hash table automatically grows and
+ shrinks as needed, and the constructor doesn't take a prime
+ number.
+
+ \o Q3Dict supportes case-insensitive lookups by passing false as
+ second argument to the constructor. This feature has no
+ equivalent in QMultiHash. Instead, call QString::toLower()
+ before you insert or lookup a key in the hash.
+
+ \o Q3Dict::size() and QMultiHash::size() have different semantics.
+ The former returns the number of buckets in the container, whereas
+ the latter returns the number of \e items in the container.
+
+ \o If there are multiple items with the same key,
+ Q3Dict::remove() removes only the most recently inserted item,
+ whereas QMultiHash::remove() removes all items that share a
+ particular key. To remove only the most recently inserted item,
+ call QMultiHash::take().
+
+ \o Q3Dict has only one [] operator (Q3Dict::operator[]()),
+ providing const access to an item's value. QMultiHash also
+ has a non-const overload that can be used on the left side of
+ the assignment operator. If you use the [] operator on a
+ non-const QHash with an unexisting item, QHash will created
+ an element and initialize it to be a null pointer. For that
+ reason, Q3Dict::operator[] should be converted to
+ QMultiHash::value(), not QMultiHash::operator[].
+
+ \endlist
+
+ If you use Q3Dict's auto-delete feature (by calling
+ Q3Dict::setAutoDelete(true)), you need to do some more work. You
+ have two options: Either you call \c delete yourself whenever you
+ remove an item from the container, or you use
+ QMultiHash<QString, T> instead of QMultiHash<QString, T *> (i.e.
+ store values directly instead of pointers to values). Here, we'll
+ see when to call \c delete.
+
+ The following table summarizes the idioms that you need to watch
+ out for if you want to call \c delete yourself.
+
+ \table
+ \header \o Q3Dict idiom \o QMultiHash idiom
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 9
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 10
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 11
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 12
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 13
+
+ (also called from Q3Dict's destructor)
+
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 14
+
+ In 99% of cases, the following idiom also works:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 15
+
+ However, it may lead to crashes if \c hash is referenced from
+ the value type's destructor, because \c hash contains
+ dangling pointers until clear() is called.
+ \endtable
+
+ Be aware that Q3Dict's destructor automatically calls clear(). If
+ you have a Q3Dict data member in a custom class and use the
+ auto-delete feature, you will need to call \c delete on all the
+ items in the container from your class destructor to avoid a
+ memory leak.
+
+ Finally, \c QDictIterator<T> (renamed Q3DictIterator<T>) must
+ also be ported. There are no fewer than four iterator classes
+ that can be used as a replacement: QHash::const_iterator,
+ QHash::iterator, QHashIterator, and QMutableHashIterator. The
+ most straightforward class to use when porting is
+ QHashIterator<QString, T *>. The following table summarizes the
+ API differences:
+
+ \table
+ \header \o Q3DictIterator functions \o Qt 4 equivalent
+ \row \o Q3DictIterator::count() \o QHash::count() or QHash::size()
+ \row \o Q3DictIterator::current() \o QHashIterator::value()
+ \row \o Q3DictIterator::currentKey() \o QHashIterator::key()
+ \row \o Q3DictIterator::isEmpty() \o QHash::isEmpty()
+ \row \o Q3DictIterator::toFirst() \o QHashIterator::toFront()
+ \row \o Q3DictIterator::operator()() \o QHashIterator::value()
+ \row \o Q3DictIterator::operator*() \o QHashIterator::value()
+ \row \o Q3DictIterator::operator++() \o See remark below
+ \endtable
+
+ Be aware that QHashIterator has a different way of iterating than
+ Q3DictIterator. A typical loop with Q3DictIterator looks like this:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 16
+
+ Here's the equivalent QHashIterator loop:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 17
+
+ See \l{Java-style iterators} for details.
+
+ \section1 QDir
+
+ The following functions used to have a boolean \c{acceptAbsPath}
+ parameter that defaulted to true:
+
+ \list
+ \i QDir::filePath()
+ \i QDir::absFilePath()
+ \i QDir::cd()
+ \i QDir::mkdir()
+ \i QDir::rmdir()
+ \i QDir::remove()
+ \i QDir::rename()
+ \i QDir::exists()
+ \endlist
+
+ In Qt 3, if \c acceptAbsPath is true, a file name starting with
+ '/' is be returned without change; if \c acceptAbsPath is false,
+ an absolute path is prepended to the file name. For example:
+
+ \table
+ \header \i Current directory \i File name \i \c acceptAbsPath \i File path
+ \row \i{1,2} /home/tsmith \i{1,2} index.html \i true \i /home/tsmith/index.html
+ \row \i false \i /home/tsmith/index.html
+ \row \i{1,2} /home/tsmith \i{1,2} /index.html \i true \i /index.html
+ \row \i false \i /home/tsmith/index.html
+ \endtable
+
+ In Qt 4, this parameter is no longer available. If you use it
+ in your code, you can check that QDir::isRelativePath() returns
+ false instead.
+
+ \oldcode
+ QDir dir("/home/tsmith");
+ QString path = dir.filePath(fileName, false);
+ \newcode
+ QDir dir("/home/tsmith");
+ QString path;
+ if (dir.isRelativePath(fileName))
+ path = dir.filePath(fileName);
+ else
+ path = fileName;
+ \endcode
+
+ QDir::encodedEntryList() has been removed.
+
+ fileInfoList(), entryInfoList(), and drives() now return a QList<QFileInfo>
+ and not a QPtrList<QFileInfo> *. Code using these methods will not work with
+ the Qt3Support library and must be adapted instead.
+
+ See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
+ a list of QDir virtual member functions in Qt 3 that are no longer
+ virtual in Qt 4.
+
+ QDir::match() now always matches case insensitively.
+
+ QDir::homeDirPath() has been removed. Use QDir::home() instead, and
+ extract the path separately.
+
+ \section1 QDns
+
+ Qt 3 used its own implementation of the DNS protocol and provided
+ a low-level \c QDns class. Qt 4's QHostInfo class uses the system's \c
+ gethostbyname() function from a thread instead.
+
+ The old \c QDns class has been renamed Q3Dns and moved to the
+ Qt3Support library. The new QHostInfo class has a
+ radically different API: It consists mainly of two static
+ functions, one of which is blocking (QHostInfo::fromName()), the
+ other non-blocking (QHostInfo::lookupHost()). See the QHostInfo
+ class documentation for details.
+
+ \section1 QDockArea
+
+ The \c QDockArea class has been renamed Q3DockArea and moved to
+ the Qt3Support library. In Qt 4, QMainWindow handles
+ the dock and toolbar areas itself. See the QMainWindow
+ documentation for details.
+
+ \section1 QDockWindow
+
+ The old \c QDockWindow class has been renamed Q3DockWindow and
+ moved to the Qt3Support library. In Qt 4, there is a
+ new QDockWidget class with a different API. See the class
+ documentation for details.
+
+ See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
+ a list of QDockWidget virtual member functions in Qt 3 that are no
+ longer virtual in Qt 4.
+
+ \note \l{Q3DockWindow}'s
+ \l{Q3DockWindow::setHorizontallyStretchable()}{horizontallyStretchable}
+ property can be achieved in QDockWidget with
+ \l{QWidget#Size Hints and Size Policies}{size policies}.
+
+ \section1 QDragObject
+
+ The \c QDragObject class has been renamed Q3DragObject and
+ moved to the Qt3Support library. In Qt 4, it has been
+ replaced by the QMimeData class. See the class documentation for
+ details.
+
+ Note that the Q3DragObject::DragCopyOrMove drag and drop mode is
+ interpreted differently to Qt 3's QDragObject::DragCopyOrMove mode.
+ In Qt 3, a move operation was performed by default, and the user had
+ to hold down the \key{Ctrl} key to perform a copy operation.
+ In Qt 4, a copy operation is performed by default; the user has to
+ hold down the \key{Shift} key to perform a move operation.
+
+ See \l{Porting to Qt 4 - Drag and Drop} for a comparison between
+ the drag and drop APIs in Qt 3 and Qt 4.
+
+ \section1 QDropSite
+
+ The \c QDropSite class has been renamed Q3DropSite and moved to
+ the Qt3Support library.
+
+ The QDropSite class has been obsolete ever since Qt 2.0. The only
+ thing it does is call QWidget::setAcceptDrops(true).
+
+ \oldcode
+ class MyWidget : public QWidget, public QDropSite
+ {
+ public:
+ MyWidget(const QWidget *parent)
+ : QWidget(parent), QDropSite(this)
+ {
+ }
+ ...
+ }
+ \newcode
+ class MyWidget : public QWidget
+ {
+ public:
+ MyWidget(const QWidget *parent)
+ : QWidget(parent)
+ {
+ setAcceptDrops(true);
+ }
+ ...
+ }
+ \endcode
+
+ See \l{Porting to Qt 4 - Drag and Drop} for a comparison between
+ the drag and drop APIs in Qt 3 and Qt 4.
+
+ \section1 QEditorFactory
+
+ The \c QEditorFactory class has been renamed Q3EditorFactory and
+ moved to the Qt3Support library.
+
+ See \l{QtSql Module} for an overview of the new SQL classes.
+
+ \section1 QEventLoop
+
+ In Qt 3, \c QEventLoop combined the Qt event loop and the event
+ dispatching. In Qt 4, these tasks are now assigned to two
+ distinct classes: QEventLoop and QAbstractEventDispatcher.
+
+ If you subclassed QEventLoop to integrate with another library's
+ event loop, you must subclass QAbstractEventDispatcher instead. See
+ the class documentation for details.
+
+ Developers using \c{QEventLoop::loopLevel()} in Qt 3 should use
+ QCoreApplication::loopLevel() instead. Note that this function is
+ marked as obsolete, but it is expected to be available for the
+ lifetime of Qt 4.
+ \omit ### mention virtual functions that aren't virtual anymore \endomit
+
+ \omit
+ \section1 QFile
+
+ The QFile::readLine(QString&, Q_ULONG) method from qt3 has been removed
+ in qt4, but this change in the QFile interface is not documented in the
+ porting documentation as of qt-4.0.0-b1.
+ \endomit
+
+ \section1 QFileDialog
+
+ The QFileDialog class in Qt 4 has been totally rewritten. It
+ provides most of the functionality of the old \c QFileDialog
+ class, but with a different API. Some functionality, such as the
+ ability to preview files, is expected to be added in a later Qt 4
+ release.
+
+ The old \c QFileDialog, \c QFileIconProvider, and \c QFilePreview
+ classes has been renamed Q3FileDialog, Q3FileIconProvider, and
+ Q3FilePreview and have been moved to Qt3Support. You can use them
+ if you need some functionality not provided yet by the new
+ QFileDialog class.
+
+ The following table lists which functions have been renamed or
+ removed in Qt 4.
+
+ \table
+ \header \o Old function \o Qt 4 equivalent
+ \row \o Q3FileDialog::addFilter(const QString &) \o See remark below
+ \row \o Q3FileDialog::addLeftWidget(QWidget *) \o N/A
+ \row \o Q3FileDialog::addRightWidget(QWidget *) \o N/A
+ \row \o Q3FileDialog::addToolButton(QAbstractButton *, bool separator) \o N/A
+ \row \o Q3FileDialog::addWidgets(QLabel *, QWidget *, QPushButton *) \o N/A
+ \row \o Q3FileDialog::dir() \o QFileDialog::directory()
+ \row \o Q3FileDialog::dirPath() \o QFileDialog::directory().path()
+ \row \o Q3FileDialog::iconProvider() \o N/A
+ \row \o Q3FileDialog::isContentsPreviewEnabled() \o N/A
+ \row \o Q3FileDialog::isInfoPreviewEnabled() \o N/A
+ \row \o Q3FileDialog::previewMode() \o N/A
+ \row \o Q3FileDialog::rereadDir() \o N/A
+ \row \o Q3FileDialog::resortDir() \o N/A
+ \row \o Q3FileDialog::selectAll(bool) \o N/A
+ \row \o Q3FileDialog::setContentsPreview(QWidget *, Q3FilePreview *) \o N/A
+ \row \o Q3FileDialog::setContentsPreviewEnabled(bool) \o N/A
+ \row \o Q3FileDialog::setDir(const QString &) \o QFileDialog::setDirectory(const QString &)
+ \row \o Q3FileDialog::setFilters(const char **) \o Q3FileDialog::setFilters(const QStringList &)
+ \row \o Q3FileDialog::setIconProvider(Q3FileIconProvider *) \o N/A
+ \row \o Q3FileDialog::setInfoPreview(QWidget *, Q3FilePreview *) \o N/A
+ \row \o Q3FileDialog::setInfoPreviewEnabled(bool) \o N/A
+ \row \o Q3FileDialog::setPreviewMode(PreviewMode) \o N/A
+ \row \o Q3FileDialog::setSelectedFilter(const QString &) \o QFileDialog::selectFilter(const QString &)
+ \row \o Q3FileDialog::setSelectedFilter(int) \o See remark below
+ \row \o Q3FileDialog::setSelection(const QString &) \o QFileDialog::selectFile(const QString &)
+ \row \o Q3FileDialog::setShowHiddenFiles(bool) \o showHidden()
+ \row \o Q3FileDialog::setUrl(const QUrlOperator &) \o N/A
+ \row \o Q3FileDialog::showHiddenFiles() \o N/A
+ \row \o Q3FileDialog::url() \o QUrl::fromLocalFile(QFileDialog::directory())
+ \header \o Old signals \o Qt 4 equivalent
+ \row \o Q3FileDialog::fileHighlighted(const QString &) \o N/A
+ \row \o Q3FileDialog::fileSelected(const QString &) \o QFileDialog::filesSelected(const QStringList &)
+ \row \o Q3FileDialog::dirEntered(const QString &) \o N/A
+ \row \o Q3FileDialog::filterSelected(const QString &) \o N/A
+ \endtable
+
+ Remarks:
+
+ \list 1
+ \o The Q3FileDialog::addFilter(const QString &) function has no
+ direct equivalent in the new QFileDialog. Use
+ QFileDialog::setFilters() instead.
+
+ \oldcode
+ fileDialog->addFilter(tr("JPEG files (*.jpg *.jpeg)"));
+ \newcode
+ QStringList filters = fileDialog->filters();
+ filters << tr("JPEG files (*.jpg *.jpeg)");
+ fileDialog->setFilters(filters);
+ \endcode
+
+ \o The Q3FileDialog::setSelectedFilter(int) overload has no direct
+ equivalent in the new QFileDialog. Use
+ QFileDialog::selectFilter(const QString &) instead.
+
+ \oldcode
+ fileDialog->setSelectedFilter(3);
+ \newcode
+ fileDialog->selectFilter(fileDialog->filters().at(3));
+ \endcode
+ \endlist
+
+ There are no equivalent virtual functions to the two
+ Q3FileDialog::setSelectedFilter() virtual functions in the QFileDialog
+ API. In addition, these functions have been renamed or removed, as
+ described above.
+
+ \section1 QFocusData
+
+ The QFocusData class is not available in Qt 4. Some of its
+ functionality is available via the QWidget::nextInFocusChain()
+ and QWidget::focusNextPrevChild() functions.
+
+ \section1 QFocusEvent
+
+ The setReason() function is no longer present in Qt 4. It is
+ necessary to define the reason when constructing a focus event.
+
+ \section1 QFont
+
+ \c QFont::Script has been moved to QFontDatabase::WritingSystem.
+
+ \section1 QFrame
+
+ The QFrame class has been made more lightweight in Qt 4, by
+ reducing the number of properties and virtual functions. The
+ reduction in the number of virtual functions is significant
+ because QFrame is the base class of many Qt classes.
+
+ Here's an overview of the changes:
+
+ \list
+ \o QFrame no longer has a \c margin property (which wasn't
+ honored by Qt's layout managers anyway).
+
+ \o QFrame no longer has a frameChanged() function, reimplement
+ QFrame::resizeEvent() instead.
+
+ \o QFrame used to have drawFrame(QPainter *) and
+ drawContents(QPainter *) virtual functions. These are now
+ gone. In Qt 4, the frame is drawn by the QFrame::paintEvent()
+ function. If you want to change the way QFrame paints itself,
+ reimplement this function. To draw the contents of the frame,
+ reimplement QFrame:paintEvent() and call the base class
+ implementation of the function before you use the
+ \l {QWidget::}{contentsRect()} function inherited from QWidget,
+ to retrieve the rectangle to paint on.
+
+ \endlist
+
+ To help with porting, the Qt3Support library contains a Q3Frame
+ class that inherits QFrame and provides a similar API to the old
+ QFrame class. If you derived from QFrame in your application, you
+ might want to use Q3Frame as a base class as a first step in the
+ porting process, and later move on to the new QFrame class.
+
+ See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
+ a list of QFrame virtual member functions in Qt 3 that are no longer
+ virtual in Qt 4.
+
+ \section1 QFtp
+
+ QFtp no longer inherits from QNetworkProtocol. See the
+ \l{#qnetworkprotocol.section}{section on QNetworkProtocol} for
+ details.
+
+ The old \c QFtp class has been renamed Q3Ftp and moved to the
+ Qt3Support library.
+
+ \target qglayoutiterator.section
+ \section1 QGLayoutIterator
+
+ The QGLayoutIterator class no longer exists in Qt 4. This makes
+ only a difference if you implemented custom layout managers
+ (i.e., QLayout subclasses).
+
+ The new approach is much simpler: It consists in reimplementing
+ QLayout::itemAt() and QLayout::takeAt(). These functions operate
+ on indexes, eliminating the need for a layout iterator class.
+
+ \section1 QGrid
+
+ The \c QGrid class is now only available as Q3Grid in Qt 4. You
+ can achieve the same result as \c QGrid by creating a QWidget
+ with a grid layout:
+
+ \oldcode
+ QGrid *grid = new QGrid(2, Qt::Horizontal);
+ QPushButton *child1 = new QPushButton(grid);
+ QPushButton *child2 = new QPushButton(grid);
+ QPushButton *child3 = new QPushButton(grid);
+ QPushButton *child4 = new QPushButton(grid);
+ \newcode
+ QWidget *grid = new QWidget;
+ QPushButton *child1 = new QPushButton(grid);
+ QPushButton *child2 = new QPushButton(grid);
+ QPushButton *child3 = new QPushButton(grid);
+ QPushButton *child4 = new QPushButton(grid);
+
+ QVBoxLayout *layout = new QVBoxLayout;
+ layout->addWidget(child1, 0, 0);
+ layout->addWidget(child2, 0, 1);
+ layout->addWidget(child3, 1, 0);
+ layout->addWidget(child4, 1, 1);
+ grid->setLayout(layout);
+ \endcode
+
+ \section1 QGridLayout
+
+ See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
+ a list of QGridLayout virtual member functions in Qt 3 that are no
+ longer virtual in Qt 4.
+
+ \section1 QGridView
+
+ The \c QGridView class has been renamed Q3GridView and moved to
+ the Qt3Support library. In Qt 4, we recommend that
+ you use QTableView or QAbstractItemView for presenting tabular
+ data.
+
+ See \l{Model/View Programming} for an overview of the new item
+ view classes.
+
+ \target qgroupbox.section
+ \section1 QGroupBox
+
+ The QGroupBox class has been redesigned in Qt 4. Many of the
+ features of the old \c QGroupBox class can be obtained by using
+ the Q3GroupBox class from the Qt3Support library.
+
+ The new QGroupBox is more lightweight. It doesn't attempt to
+ duplicate functionality already provided by QGridLayout, and it
+ does not inherit from QFrame. As a result, the following members
+ have been removed:
+
+ \list
+ \o Q3GroupBox::setColumns(), Q3GroupBox::columns()
+ \o Q3GroupBox::setOrientation(), Q3GroupBox::orientation()
+ \o Q3GroupBox::setInsideMargin(), Q3GroupBox::insideMargin()
+ \o Q3GroupBox::addSpace()
+ \endlist
+
+ Naturally, the \c columns and \c orientation properties have also
+ been removed.
+
+ If you rely on some of the missing functionality in your
+ application, you can use Q3GroupBox instead of QGroupBox as a
+ help to porting.
+
+ See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
+ a list of QGroupBox virtual member functions in Qt 3 that are no
+ longer virtual in Qt 4.
+
+ \section1 QHBox
+
+ The \c QHBox class is now only available as Q3HBox in Qt 4. You
+ can achieve the same result as \c QHBox by creating a QWidget
+ with an horizontal layout:
+
+ \oldcode
+ QHBox *hbox = new QHBox;
+ QPushButton *child1 = new QPushButton(hbox);
+ QPushButton *child2 = new QPushButton(hbox);
+ \newcode
+ QWidget *hbox = new QWidget;
+ QPushButton *child1 = new QPushButton;
+ QPushButton *child2 = new QPushButton;
+
+ QHBoxLayout *layout = new QHBoxLayout;
+ layout->addWidget(child1);
+ layout->addWidget(child2);
+ hbox->setLayout(layout);
+ \endcode
+
+ Note that child widgets are not automatically placed into the widget's
+ layout; you will need to manually add each widget to the QHBoxLayout.
+
+ \section1 QHeader
+
+ The \c QHeader class has been renamed Q3Header and moved to
+ the Qt3Support library. In Qt 4, it is replaced
+ by the QHeaderView class.
+
+ See \l{Model/View Programming} for an overview of the new item
+ view classes.
+
+ \section1 QHGroupBox
+
+ The \c QHGroupBox class has been renamed Q3HGroupBox and moved to
+ the Qt3Support library.
+ Qt 4 does not provide a specific replacement class for \c QHGroupBox
+ since QGroupBox is designed to be a generic container widget. As a
+ result, you need to supply your own layout for any child widgets.
+
+ See \l{#QGroupBox} for more information about porting code that uses
+ group boxes.
+
+ \section1 QHttp
+
+ QHttp no longer inherits from QNetworkProtocol. See the See the
+ \l{#qnetworkprotocol.section}{section on QNetworkProtocol} for
+ details.
+
+ The old \c QHttp, \c QHttpHeader, \c QHttpRequestHeader, and \c
+ QHttpResponseHeader classes have been renamed Q3Http,
+ Q3HttpHeader, Q3HttpRequestHeader, and Q3HttpResponseHeader and
+ have been moved to the Qt3Support library.
+
+ \section1 QIconFactory
+
+ The QIconFactory class is no longer part of Qt. It has been replaced by
+ the QIconEngine class.
+
+ \section1 QIconSet
+
+ The QIconSet class is no longer part of Qt. It has been replaced by
+ the QIcon class.
+
+ \section1 QIconView
+
+ The \c QIconView, \c QIconViewItem, \c QIconDrag, and \c
+ QIconDragItem classes has been renamed Q3IconView,
+ Q3IconViewItem, Q3IconDrag, and Q3IconDragItem and moved to the
+ Qt3Support library. New Qt applications should use
+ QListWidget or its base class QListView instead, and call
+ QListView::setViewMode(QListView::IconMode) to obtain an "icon
+ view" look.
+
+ See \l{Model/View Programming} for an overview of the new item
+ view classes.
+
+ \omit
+ ###
+
+ \section1 QImage
+
+ QImage::fromMimeSource(const QString &) -> qImageFromMimeSource(const QString &)
+ \endomit
+
+ \section1 QImageDrag
+
+ The \c QImageDrag class has been renamed Q3ImageDrag and moved to
+ the Qt3Support library. In Qt 4, use QMimeData
+ instead and call QMimeData::setImage() to set the image.
+
+ See \l{Porting to Qt 4 - Drag and Drop} for a comparison between
+ the drag and drop APIs in Qt 3 and Qt 4.
+
+ \section1 QImageIO
+
+ The \c QImageIO class has been split into two classes:
+ QImageReader and QImageWriter. The table below shows the
+ correspondance between the two APIs:
+
+ \table
+ \header \o Qt 3 function \o Qt 4 equivalents
+ \row \o QImageIO::description() \o QImageWriter::text()
+ \row \o QImageIO::fileName() \o QImageReader::fileName() and QImageWriter::fileName()
+ \row \o QImageIO::format() \o QImageReader::format() and QImageWriter::format()
+ \row \o QImageIO::gamma() \o QImageWriter::gamma()
+ \row \o QImageIO::image() \o Return value of QImageReader::read()
+ \row \o QImageIO::inputFormats() \o QImageReader::supportedImageFormats()
+ \row \o QImageIO::ioDevice() \o QImageReader::device() and QImageWriter::device()
+ \row \o QImageIO::outputFormats() \o QImageWriter::supportedImageFormats()
+ \row \o QImageIO::parameters() \o N/A
+ \row \o QImageIO::quality() \o QImageWriter::quality()
+ \row \o QImageIO::read() \o QImageReader::read()
+ \row \o QImageIO::setDescription() \o QImageWriter::setText()
+ \row \o QImageIO::setFileName() \o QImageReader::setFileName() and QImageWriter::setFileName()
+ \row \o QImageIO::setFormat() \o QImageReader::setFormat() and QImageWriter::setFormat()
+ \row \o QImageIO::setGamma() \o QImageWriter::setGamma()
+ \row \o QImageIO::setIODevice() \o QImageReader::setDevice() and QImageWriter::setDevice()
+ \row \o QImageIO::setImage() \o Argument to QImageWriter::write()
+ \row \o QImageIO::setParameters() \o N/A
+ \row \o QImageIO::setQuality() \o QImageWriter::setQuality()
+ \row \o QImageIO::setStatus() \o N/A
+ \row \o QImageIO::status() \o QImageReader::error() and QImageWriter::error()
+ \row \o QImageIO::write() \o QImageWriter::write()
+ \endtable
+
+ \section1 QIntCache<T>
+
+ QIntCache<T> has been moved to Qt3Support. It has been replaced
+ by QCache<int, T>.
+
+ For details, read the \l{#qcache.section}{section on QCache<T>},
+ mentally substituting \c int for QString.
+
+ \section1 QIntDict<T>
+
+ QIntDict<T> and QIntDictIterator<T> have been moved to
+ Qt3Support. They have been replaced by the more modern QHash<Key,
+ T> and QMultiHash<Key, T> classes and their associated iterator
+ classes.
+
+ When porting old code that uses QIntDict<T> to Qt 4, there are
+ four classes that you can use:
+
+ \list
+ \o QMultiHash<int, T *>
+ \o QMultiHash<int, T>
+ \o QHash<int, T *>
+ \o QHash<int, T>
+ \endlist
+
+ For details, read the \l{#qdict.section}{section on QDict<T>},
+ mentally substituting \c int for QString.
+
+ \target qiodevice.section
+ \section1 QIODevice
+
+ The QIODevice class's API has been simplified to make it easier
+ to subclass and to make it work more smoothly with asynchronous
+ devices such as QTcpSocket and QProcess.
+
+ The following virtual functions have changed name or signature:
+
+ \table
+ \header \o Qt 3 function \o Comment
+ \row \o QIODevice::at() const \o Renamed QIODevice::pos().
+ \row \o QIODevice::at(Offset) \o Renamed QIODevice::seek().
+ \row \o QIODevice::open(int) \o The parameter is now of type QIODevice::OpenMode.
+ \row \o QIODevice::readBlock(char *, Q_ULONG) \o QIODevice::read(char *, qint64)
+ \row \o QIODevice::writeBlock(const char *, Q_ULONG) \o QIODevice::write(const char *, qint64)
+ \endtable
+
+ \note QIODevice::open(QIODevice::OpenMode) is no longer pure virtual.
+
+ The following functions are no longer virtual or don't exist anymore:
+
+ \table
+ \row \o QIODevice::getch() \o Renamed QIODevice::getChar() and implemented in terms of QIODevice::readData().
+ \row \o QIODevice::putch(int) \o Renamed QIODevice::putChar() and implemented in terms of QIODevice::writeData().
+ \row \o QIODevice::readAll() \o Implemented in terms of QIODevice::readData().
+ \row \o QIODevice::readLine(char *, Q_ULONG) \o Implemented in terms of QIODevice::readData()
+ \row \o QIODevice::ungetch(int) \o Renamed QIODevice::ungetChar() and simulated using an internal unget buffer.
+ \endtable
+
+ The \c IO_xxx flags have been revised, and the protected setFlags()
+ function removed. Most of the flags have been
+ eliminated because errors are best handled by implementing certain
+ functions in QIODevice subclasses rather than through the base classes.
+ The file access flags, such as \c IO_ReadOnly and \c IO_WriteOnly, have
+ been moved to the QIODevice class to avoid polluting the global
+ namespace. The table below shows the correspondence between the
+ Qt 3 \c IO_xxx flags and the Qt 4 API:
+
+ \table
+ \header \o Qt 3 constant \o Qt 4 equivalent
+ \row \o IO_Direct \o Use !QIODevice::isSequential() instead (notice the \e not).
+ \row \o IO_Sequential \o Use QIODevice::isSequential() instead.
+ \row \o IO_Combined \o N/A
+ \row \o IO_TypeMask \o N/A
+ \row \o IO_Raw \o QIODevice::Unbuffered
+ \row \o IO_Async \o N/A
+ \row \o IO_ReadOnly \o QIODevice::ReadOnly
+ \row \o IO_WriteOnly \o QIODevice::WriteOnly
+ \row \o IO_ReadWrite \o QIODevice::ReadWrite
+ \row \o IO_Append \o QIODevice::Append
+ \row \o IO_Truncate \o QIODevice::Truncate
+ \row \o IO_Translate \o QIODevice::Text
+ \row \o IO_ModeMask \o N/A
+ \row \o IO_Open \o Use QIODevice::isOpen() instead.
+ \row \o IO_StateMask \o N/A
+ \row \o IO_Ok \o N/A
+ \row \o IO_ReadError \o N/A
+ \row \o IO_WriteError \o N/A
+ \row \o IO_FatalError \o N/A
+ \row \o IO_ResourceError \o N/A
+ \row \o IO_OpenError \o N/A
+ \row \o IO_ConnectError \o N/A
+ \row \o IO_AbortError \o N/A
+ \row \o IO_TimeOutError \o N/A
+ \row \o IO_UnspecifiedError \o N/A
+ \endtable
+
+ \section1 QIODeviceSource
+
+ The QIODeviceSource class was used internally in Qt 2.x in
+ conjunction with QImageConsumer. It was obsoleted in Qt 3.0.
+ \input porting/porting4-obsoletedmechanism.qdocinc
+
+ \section1 QLabel
+
+ QLabel doesn't enable word-wrap automatically anymore when rich
+ text is used. You can enable it by calling
+ QLabel::setWordWrap() or by setting the
+ \l{QLabel::wordWrap}{wordWrap} property. The reason for this
+ change is that the old behavior was confusing to many users.
+
+ Also, QLabel no longer offers an \c autoResize property. Instead,
+ you can call QWidget::setFixedSize() on the label, with
+ QLabel::sizeHint() as the argument, whenever you change the
+ contents of the QLabel.
+
+ See also \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions}
+ for a list of QLabel virtual member functions in Qt 3 that are no
+ longer virtual in Qt 4.
+
+ \section1 QLayout
+
+ In Qt 4, margins are always handled by layouts; there is no
+ QLayout::setSupportsMargin() function anymore.
+
+ The deleteAllItems() function is now only available if
+ \c QT3_SUPPORT is defined. If you maintain a QList of layout
+ items, you can use qDeleteAll() to remove all the items in one
+ go.
+
+ In Qt 3, it was possible to change the resizing behavior for layouts
+ in top-level widgets by adjusting the layout's \c resizeMode property.
+ In Qt 4, this property has been replaced by the QLayout::sizeConstraint
+ property which provides more control over how the layout behaves when
+ resized.
+
+ See also the \l{#qlayoutiterator.section}{section on
+ QLayoutIterator} and the \l{#qglayoutiterator.section}{section on
+ QGLayoutIterator}.
+
+ \target qlayoutiterator.section
+ \section1 QLayoutIterator
+
+ The QLayoutIterator class is obsoleted in Qt 4. It is available
+ only if \c QT3_SUPPORT is defined. It can be replaced by the
+ QLayout::itemAt() and QLayout::takeAt() functions, which operate
+ on indexes.
+
+ \oldcode
+ QLayoutIterator it = layout()->iterator();
+ QLayoutItem *child;
+ while ((child = it.current()) != 0) {
+ if (child->widget() == myWidget) {
+ it.takeCurrent();
+ return;
+ ++it;
+ }
+ \newcode
+ int i = 0;
+ QLayoutItem *child;
+ while ((child = layout()->itemAt(i)) != 0) {
+ if (child->widget() == myWidget) {
+ layout()->takeAt(i);
+ return;
+ }
+ ++i;
+ }
+ \endcode
+
+ \section1 QLineEdit
+
+ See \l{#properties}{Properties} for a list of QLineEdit
+ properties in Qt 3 that have changed in Qt 4.
+
+ The default value of QLineEdit's \l{QLineEdit::dragEnabled()}{dragEnabled}
+ property was \c true in Qt 3. In Qt 4, the default value is \c false.
+
+ Note that QLineEdit in Qt 4 is no longer a subclass of QFrame.
+ If you need to visually style a line edit with a frame, we recommend
+ either using a QFrame as a container for a QLineEdit or customizing
+ the line edit with a \l{Qt Style Sheets}{style sheet}.
+
+ \section1 QListBox
+
+ The \c QListBox, \c QListBoxItem, \c QListBoxText, and \c
+ QListBoxPixmap classes have been renamed Q3ListBox,
+ Q3ListBoxItem, Q3ListBoxText, and Q3ListBoxPixmap and have been
+ moved to the Qt3Support library. New Qt applications
+ should use QListWidget or its base class QListView instead.
+
+ See \l{Model/View Programming} for an overview of the new item
+ view classes.
+
+ \section1 QListView
+
+ The \c QListView, \c QListViewItem, \c QCheckListItem, and \c
+ QListViewItemIterator classes have been renamed Q3ListView,
+ Q3ListViewItem, Q3CheckListItem, and Q3ListViewItemIterator, and
+ have been moved to the Qt3Support library. New Qt
+ applications should use one of the following four classes
+ instead: QTreeView or QTreeWidget for tree-like structures;
+ QListWidget or the new QListView class for one-dimensional lists.
+
+ See \l{Model/View Programming} for an overview of the new item
+ view classes.
+
+ \section1 QLocalFs
+
+ The \c QLocalFs class is no longer part of the public Qt API. It
+ has been renamed Q3LocalFs and moved to Qt3Support. Use QDir,
+ QFileInfo, or QFile instead.
+
+ \section1 QMainWindow
+
+ The QMainWindow class has been redesigned in Qt 4 to provide a
+ more modern look and feel and more flexibility. The API has
+ changed to reflect that. The old \c QMainWindow class has been
+ renamed Q3MainWindow and moved to Qt3Support. See the QMainWindow
+ class documentation for details.
+
+ \omit ### More detail \endomit
+
+ \target qmemarray.section
+ \section1 QMemArray<T>
+
+ QMemArray<T> has been moved to Qt3Support. It has been replaced
+ by the QVector<T> class.
+
+ The following table summarizes the API differences between the
+ two classes.
+
+ \table
+ \row \o QMemArray::assign(const QMemArray<T> &) \o QVector::operator=()
+ \row \o QMemArray::assign(const T *, uint) \o See remark below
+ \row \o QMemArray::duplicate(const QMemArray &) \o QVector::operator=()
+ \row \o QMemArray::duplicate(const T *, uint) \o See remark below
+ \row \o QMemArray::setRawData(const T *, uint) \o N/A
+ \row \o QMemArray::resetRawData(const T *, uint) \o N/A
+ \row \o QMemArray::find(const T &, uint) \o QVector::indexOf(const T &, int)
+ \row \o QMemArray::contains(const T &) \o QVector::count(const T &)
+ \row \o QMemArray::sort() \o \l qSort()
+ \row \o QMemArray::bsearch(const T &d) \o \l qBinaryFind()
+ \row \o QMemArray::at(uint) \o QVector::operator[]()
+ \row \o QMemArray::operator const T *() \o QVector::constData()
+ \endtable
+
+ Remarks:
+
+ \list 1
+ \o QMemArray::assign(const T *, uint) and QMemArray::duplicate(const T *, uint)
+ can be replaced by QVector::resize() and qCopy().
+
+ \oldcode
+ QMemArray<QSize> array;
+ ...
+ array.assign(data, size);
+ \newcode
+ QVector<QSize> vector;
+ ...
+ vector.resize(size);
+ qCopy(data, data + size, vector.begin());
+ \endcode
+
+ \o QMemArray is an explicitly shared class, whereas QVector is
+ implicitly shared. See \l{Explicit Sharing} for more
+ information.
+ \endlist
+
+ \section1 QMenuBar
+
+ In Qt 3, QMenuBar inherited from QFrame and QMenuData; in Qt 4, it is
+ a direct subclass of QWidget. Applications that provided customized
+ menu bars will need to take advantage of the styling features described
+ in the \l{Qt Style Sheets} document.
+
+ It is not possible to add widgets to menu bars in Qt 4.
+
+ \section1 QMenuData
+
+ In Qt 4, the QMenu class provides a menu widget that can be used in all
+ the places where menus are used in an application. Unlike \c QMenuData,
+ QMenu is designed around the concept of actions, provided by the QAction
+ class, instead of the identifiers used in Qt 3.
+
+ In Qt 3, it was possible to insert widgets directly into menus by using
+ a specific \c QMenuData::insertItem() overload. In Qt 4.2 and later,
+ the QWidgetAction class can be used to wrap widgets for use in Qt 4's
+ action-based APIs.
+
+ \section1 QMessageBox
+
+ The QMessageBox::iconPixmap() function used to return a "const
+ QPixmap *". In Qt 4, it returns a QPixmap.
+
+ \section1 QMimeSourceFactory
+
+ The \c QMimeSourceFactory has been renamed Q3MimeSourceFactory
+ and moved to the Qt3Support library. New Qt applications should
+ use Qt 4's \l{Resource System} instead.
+
+ \section1 QMovie
+
+ The QMovie API has been revised in Qt 4 to make it more
+ consistent with the other Qt classes (notably QImageReader). The
+ table below summarizes the changes.
+
+ \table
+ \header \o Qt 3 function \o Qt 4 equivalent
+ \row \o QMovie::connectResize() \o Connect to QMovie::resized()
+ \row \o QMovie::connectStatus() \o Connect to QMovie::stateChanged()
+ \row \o QMovie::connectUpdate() \o Connect to QMovie::updated()
+ \row \o QMovie::disconnectResize() \o Disconnect from QMovie::resized()
+ \row \o QMovie::disconnectStatus() \o Disconnect from QMovie::stateChanged()
+ \row \o QMovie::disconnectUpdate() \o Disconnect from QMovie::updated()
+ \row \o QMovie::finished() \o Use QMovie::state() instead
+ \row \o QMovie::frameImage() \o Use QMovie::currentImage() instead
+ \row \o QMovie::frameNumber() \o Use QMovie::currentFrameNumber() instead
+ \row \o QMovie::framePixmap() \o Use QMovie::currentPixmap() instead
+ \row \o QMovie::getValidRect() \o Use frameRect() instead
+ \row \o QMovie::isNull() \o Use QMovie::isValid() instead
+ \row \o QMovie::pause() \o Use QMovie::setPaused(true) instead
+ \row \o QMovie::paused() \o Use QMovie::state() instead
+ \row \o QMovie::pushData() \o N/A
+ \row \o QMovie::pushSpace() \o N/A
+ \row \o QMovie::restart() \o Use QMovie::jumpToFrame(0) instead
+ \row \o QMovie::running() \o Use QMovie::state() instead
+ \row \o QMovie::step() \o Use QMovie::jumpToFrame() and QMovie::setPaused() instead
+ \row \o QMovie::step() \o Use QMovie::jumpToNextFrame() instead
+ \row \o QMovie::steps() \o Use QMovie::currentFrameNumber() and QMovie::frameCount() instead
+ \row \o QMovie::unpause() \o Use QMovie::setPaused(false) instead
+ \endtable
+
+ \section1 QMultiLineEdit
+
+ The \c QMultiLineEdit class in Qt 3 was a convenience QTextEdit
+ subclass that provided an interface compatible with Qt 2's
+ QMultiLineEdit class. In Qt 4, it is called Q3MultiLineEdit, it
+ inherits Q3TextEdit, and it is part of Qt3Support. Use QTextEdit
+ in new code.
+
+ \target qnetworkprotocol.section
+ \section1 QNetworkProtocol
+
+ The QNetworkProtocol, QNetworkProtocolFactoryBase,
+ QNetworkProtocolFactory<T>, and QNetworkOperation classes are no
+ longer part of the public Qt API. They have been renamed
+ Q3NetworkProtocol, Q3NetworkProtocolFactoryBase,
+ Q3NetworkProtocolFactory<T>, and Q3NetworkOperation and have been
+ moved to the Qt3Support library.
+
+ In Qt 4 applications, you can use classes like QFtp and
+ QNetworkAccessManager directly to perform file-related actions on
+ a remote host.
+
+ \section1 QObject
+
+ QObject::children() now returns a QObjectList instead of a
+ pointer to a QObjectList. See also the comments on QObjectList
+ below.
+
+ Use QObject::findChildren() (or qFindChildren() if you need MSVC 6
+ compatibility) instead of QObject::queryList(). For example:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 18
+
+ QObject::killTimers() has been removed because it was unsafe to
+ use in subclass. (A subclass normally doesn't know whether the
+ base class uses timers or not.)
+
+ The \c QObject::name property has been renamed
+ QObject::objectName.
+
+ \c QObject::objectTrees() has been removed. If you are primarly
+ interested in widgets, use QApplication::allWidgets() or
+ QApplication::topLevelWidgets().
+
+ \section1 QObjectDictionary
+
+ The QObjectDictionary class is a synonym for
+ QAsciiDict<QMetaObject>. See the \l{#qasciidict.section}{section
+ on QAsciiDict<T>}.
+
+ \section1 QObjectList
+
+ In Qt 3, the QObjectList class was a typedef for
+ QPtrList<QObject>. In Qt 4, it is a typedef for QList<QObject *>.
+ See the \l{#qptrlist.section}{section on QPtrList<T>}.
+
+ \section1 QPaintDevice
+
+ To reimplement painter backends one previously needed to reimplement
+ the virtual function QPaintDevice::cmd(). This function is taken out
+ and should is replaced with the function QPaintDevice::paintEngine()
+ and the abstract class QPaintEngine. QPaintEngine provides virtual
+ functions for all drawing operations that can be performed on a
+ painter backend.
+
+ bitBlt() and copyBlt() are now only compatibility functions. Use
+ QPainter::drawPixmap() instead.
+
+ \section1 QPaintDeviceMetrics
+
+ All functions that used to be provided by the \c
+ QPaintDeviceMetrics class have now been moved to QPaintDevice.
+
+ \oldcode
+ QPaintDeviceMetrics metrics(widget);
+ int deviceDepth = metrics.depth();
+ \newcode
+ int deviceDepth = widget->depth();
+ \endcode
+
+ For compatibility, the old \c QPaintDeviceMetrics class has been
+ renamed Q3PaintDeviceMetrics and moved to Qt3Support.
+
+ \section1 QPainter
+
+ The QPainter class has undergone some changes in Qt 4 because of
+ the way rectangles are drawn. In Qt 4, the result of drawing a
+ QRect with a pen width of 1 pixel is 1 pixel wider and 1 pixel
+ taller than in Qt 3.
+
+ For compatibility, we provide a Q3Painter class in Qt3Support
+ that provides the old semantics. See the Q3Painter documentation
+ for details and for the reasons why we had to make this change.
+
+ The \l{http://qt.nokia.com/doc/3.3/qpainter.html#CoordinateMode-enum}{QPainter::CoordinateMode}
+ enum has been removed in Qt 4. All clipping
+ operations are now defined using logical coordinates and are subject
+ to transformation operations.
+
+ The
+ \l{http://qt.nokia.com/doc/3.3/qpainter.html#RasterOP-enum}{QPainter::RasterOP}
+ enum has been replaced with QPainter::CompositionMode.
+
+ \section1 QPicture
+
+ In Qt 3, a QPicture could be saved in the SVG file format. In Qt
+ 4, the SVG support is provided by the QtSvg module, which
+ includes classes for \e displaying the contents of SVG files.
+
+ If you would like to generate SVG files, you can use the Q3Picture
+ compatibility class or the QSvgGenerator class introduced in Qt 4.3.
+
+ \section1 QPixmap
+
+ The mask() function has been changed to return a reference to a QBitmap
+ rather than a pointer. As a result, it is no longer possible simply to
+ test for a null pointer when determining whether a pixmap has a mask.
+ Instead, you need to explicitly test whether the mask bitmap is null or
+ not.
+
+ \oldcode
+ if (pixmap.mask())
+ widget->setMask(*pixmap.mask());
+ \newcode
+ if (!pixmap.mask().isNull())
+ widget->setMask(pixmap.mask());
+ \endcode
+
+ The \c QPixmap::setOptimization() and \c QPixmap::setDefaultOptimization()
+ mechanism is no longer available in Qt 4.
+
+\omit
+ QPixmap::fromMimeSource(const QString &) -> qPixmapFromMimeSource(const QString &)
+\endomit
+
+ \section1 QPointArray
+
+ The \c QPointArray class has been renamed QPolygon in Qt 4 and
+ has undergone significant changes. In Qt 3, \c QPointArray
+ inherited from QMemArray<QPoint>. In Qt 4, QPolygon inherits from
+ QVector<QPoint>. Everything mentioned in the
+ \l{#qmemarray.section}{section on QMemArray<T>} apply for
+ QPointArray as well.
+
+ The Qt3Support library contains a Q3PointArray class
+ that inherits from QPolygon and provides a few functions that
+ existed in \c QPointArray but no longer exist in QPolygon. These
+ functions include Q3PointArray::makeArc(),
+ Q3PointArray::makeEllipse(), and Q3PointArray::cubicBezier().
+ In Qt 4, we recommend that you use QPainterPath for representing
+ arcs, ellipses, and Bezier curves, rather than QPolygon.
+
+ The QPolygon::setPoints() and QPolygon::putPoints() functions
+ return \c void in Qt 4. The corresponding Qt 3 functions returned
+ a \c bool indicating whether the array was successfully resized
+ or not. This can now be checked by checking QPolygon::size()
+ after the call.
+
+\omit
+ X11 Specific:
+
+ ::appDisplay() -> QX11Info::display()
+ QPaintDevice::x11Display() -> QX11Info::display()
+ QPaintDevice::x11AppDisplay() -> QX11Info::display()
+ QPaintDevice::x11Screen() -> QX11Info::appScreen()
+ QPaintDevice::x11AppScreen() -> ???
+ QPaintDevice::x11Depth() -> QX11Info::appDepth()
+ QPaintDevice::x11ColorMap() -> QX11Info::appColorMap()
+ QPaintDevice::x11DefaultColorMap() -> ???
+ QPaintDevice::x11Visual() -> QX11Info::appVisual()
+ QPaintDevice::x11DefaultVisual() -> ???
+
+ QPaintDevice::x11AppDpiX() -> QX11Info::appDpiX()
+ QPaintDevice::x11AppDpiY() -> QX11Info::appDpiY()
+ QPaintDevice::x11SetAppDpiX() -> QX11Info::setAppDpiX()
+ QPaintDevice::x11SetAppDpiY() -> QX11Info::setAppDpiY()
+
+ QPaintDevice::x11AppDepth() -> ???
+ QPaintDevice::x11AppCells() -> ???
+ QPaintDevice::x11AppRootWindow() -> ???
+ QPaintDevice::x11AppColorMap() -> ???
+ QPaintDevice::x11AppDefaultColorMap() -> ???
+ QPaintDevice::x11AppVisual() -> ???
+ QPaintDevice::x11AppDefaultVisual() -> ???
+
+ End of X11 Specific
+\endomit
+
+ \section1 QPopupMenu
+
+ For most purposes, QPopupMenu has been replaced by QMenu in Qt
+ 4. For compatibility with older applications, Q3PopupMenu provides
+ the old API and features that are specific to pop-up menus. Note
+ that, when using Q3PopupMenu, the menu's actions must be \l
+ {Q3Action}s.
+
+ In Qt 3, it was common practice to add entries to pop-up menus using the
+ insertItem() function, maintaining identifiers for future use; for
+ example, to dynamically change menu items.
+ In Qt 4, menu entries are completely represented
+ by actions for consistency with other user interface components, such as
+ toolbar buttons. Create new menus with the QMenu class, and use the
+ overloaded QMenu::addAction() functions to insert new entries.
+ If you need to manage a set of actions created for a particular menu,
+ we suggest that you construct a QActionGroup and add them to that.
+
+ The \l{Main Window Examples} provided
+ show how to use Qt's action system to construct menus, toolbars, and other
+ common user interface elements.
+
+ \section1 QPrinter
+
+ The QPrinter class now expects printing to be set up from a
+ QPrintDialog.
+
+ \section1 QProcess
+
+ The QProcess class has undergone major improvements in Qt 4. It
+ now inherits QIODevice, which makes it possible to combine
+ QProcess with a QTextStream or a QDataStream.
+
+ The old \c QProcess class has been renamed Q3Process and moved to
+ the Qt3Support library.
+
+ \section1 QProgressBar
+
+ The QProgressBar API has been significantly improved in Qt 4. The
+ old \c QProgressBar API is available as Q3ProgressBar in the
+ Qt3Support library.
+
+ \section1 QProgressDialog
+
+ The QProgressDialog API has been significantly improved in Qt 4.
+ The old \c QProgressDialog API is available as Q3ProgressDialog
+ in the Qt3Support library.
+
+ See \l{#properties}{Properties} for a list of QProgressDialog
+ properties in Qt 3 that have changed in Qt 4.
+
+ \section1 QPtrCollection<T>
+
+ The \c QPtrCollection<T> abstract base class has been renamed
+ Q3PtrCollection<T> moved to the Qt3Support library.
+ There is no direct equivalent in Qt 4.
+
+ \omit
+ ###
+ The QPtrCollection entry is unsatisfactory. The xref is missing
+ its list and saying "no direct equivalent" with so suggestions
+ seems feeble.
+ \endomit
+
+ See \l{Generic Containers} for a list of Qt 4 containers.
+
+ \section1 QPtrDict<T>
+
+ \c QPtrDict<T> and \c QPtrDictIterator<T> have been renamed
+ Q3PtrDict<T> and Q3PtrDictIterator<T> and have been moved to the
+ Qt3Support library. They have been replaced by the
+ more modern QHash<Key, T> and QMultiHash<Key, T> classes and
+ their associated iterator classes.
+
+ When porting old code that uses Q3PtrDict<T> to Qt 4, there are
+ four classes that you can use:
+
+ \list
+ \o QMultiHash<void *, T *>
+ \o QMultiHash<void *, T>
+ \o QHash<void *, T *>
+ \o QHash<void *, T>
+ \endlist
+
+ (You can naturally use other types than \c{void *} for the key
+ type, e.g. \c{QWidget *}.)
+
+ To port Q3PtrDict<T> to Qt 4, read the \l{#qdict.section}{section
+ on QDict<T>}, mentally substituting \c{void *} for QString.
+
+ \target qptrlist.section
+ \section1 QPtrList<T>
+
+ QPtrList<T>, QPtrListIterator<T>, and QPtrListStdIterator<T> have
+ been moved to the Qt3Support library. They have been
+ replaced by the more modern QList and QLinkedList classes and
+ their associated iterator classes.
+
+ When porting to Qt 4, you have the choice of using QList<T> or
+ QLinkedList<T> as alternatives to QValueList<T>. QList<T> has an
+ index-based API and provides very fast random access
+ (QList::operator[]), whereas QLinkedList<T> has an iterator-based
+ API.
+
+ The following table summarizes the API differences between
+ QPtrList<T> and QList<T *>:
+
+ \table
+ \header \o QPtrList function \o QList equivalent
+ \row \o QPtrList::contains(const T *) \o QList::count(T *)
+ \row \o QPtrList::containsRef(const T *) \o QList::count(T *)
+ \row \o QPtrList::find(const T *) \o See remark below
+ \row \o QPtrList::findRef(const T *) \o See remark below
+ \row \o QPtrList::getFirst() \o QList::first()
+ \row \o QPtrList::getLast() \o QList::last()
+ \row \o QPtrList::inSort(const T *) \o N/A
+ \row \o QPtrList::remove(const T *) \o QList::removeAll(T *)
+ \row \o QPtrList::remove(uint) \o QList::removeAt(int)
+ \row \o QPtrList::removeNode(QLNode *) \o N/A
+ \row \o QPtrList::removeRef(const T *) \o QList::removeAll(T *)
+ \row \o QPtrList::sort() \o See remark below
+ \row \o QPtrList::takeNode(QLNode *) \o N/A
+ \row \o QPtrList::toVector(QGVector *) \o See remark below
+ \endtable
+
+ Remarks:
+
+ \list 1
+ \o QPtrList::toVector(QGVector *) can be replaced by
+ QVector::resize() and qCopy().
+
+ \oldcode
+ QPtrList<QWidget> list;
+ ...
+ QPtrVector<QWidget> vector;
+ list.toVector(&vector);
+ \newcode
+ QList<QWidget *> list;
+ ...
+ QVector<QWidget *> vector;
+ vector.resize(list.size());
+ qCopy(list.begin(), list.end(), vector.begin());
+ \endcode
+
+ \o QPtrList::sort() relied on the virtual compareItems() to
+ sort items. In Qt 4, you can use \l qSort() instead and pass
+ your "compare item" function as an argument.
+
+ \o QPtrList::find(const T *) returns an iterator, whereas
+ QList::indexOf(T *) returns an index. To convert an index
+ into an iterator, add the index to QList::begin().
+
+ \o QPtrList::removeFirst() and QPtrList::removeLast() return a \c
+ bool that indicates whether the element was removed or not.
+ The corresponding QList functions return \c void. You can
+ achieve the same result by calling QList::isEmpty() before
+ attempting to remove an item.
+ \endlist
+
+ If you use QPtrList's auto-delete feature (by calling
+ QPtrList::setAutoDelete(true)), you need to do some more work.
+ You have two options: Either you call \c delete yourself whenever
+ you remove an item from the container, or you can use QList<T>
+ instead of QList<T *> (i.e. store values directly instead of
+ pointers to values). Here, we'll see when to call \c delete.
+
+ \omit
+ (See \l{What's Wrong with Auto-Delete} for an explanation of why
+ the Qt 4 containers don't offer that feature.)
+ \endomit
+
+ The following table summarizes the idioms that you need to watch
+ out for if you want to call \c delete yourself.
+
+ \table
+ \header \o QPtrList idiom \o QList idiom
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 19
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 20
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 21
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 22
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 23
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 24
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 25
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 26
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 27
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 28
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 29
+ (removes the current item)
+
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 30
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 31
+
+ (also called from QPtrList's destructor)
+
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 32
+
+ In 99% of cases, the following idiom also works:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 33
+
+ However, it may lead to crashes if \c list is referenced from
+ the value type's destructor, because \c list contains
+ dangling pointers until clear() is called.
+ \endtable
+
+ Be aware that QPtrList's destructor automatically calls clear().
+ If you have a QPtrList data member in a custom class and use the
+ auto-delete feature, you will need to call \c delete on all the
+ items in the container from your class destructor to avoid a
+ memory leak.
+
+ QPtrList had the concept of a "current item", which could be used
+ for traversing the list without using an iterator. When porting
+ to Qt 4, you can use the Java-style QListIterator<T *> (or
+ QMutableListIterator<T *>) class instead. The following table
+ summarizes the API differences:
+
+ \table
+ \header \o QPtrList function \o QListIterator equivalent
+ \row \o QPtrList::at() \o N/A
+ \row \o QPtrList::current() \o QMutableListIterator::value()
+ \row \o QPtrList::currentNode() \o N/A
+ \row \o QPtrList::findNext(const T *) \o QListIterator::findNext(const T *)
+ \row \o QPtrList::findNextRef(const T *) \o QListIterator::findNext(const T *)
+ \row \o QPtrList::first() \o QPtrList::toFront()
+ \row \o QPtrList::last() \o QPtrList::toBack()
+ \row \o QPtrList::next() \o QPtrList::next()
+ \row \o QPtrList::prev() \o QPtrList::previous()
+ \row \o QPtrList::remove() \o QMutableListIterator::remove()
+ \row \o QPtrList::take() \o QMutableListIterator::remove()
+ \endtable
+
+ Be aware that QListIterator has a different way of iterating than
+ QPtrList. A typical loop with QPtrList looks like this:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 34
+
+ Here's the equivalent QListIterator loop:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 35
+
+ Finally, QPtrListIterator<T> must also be ported. There are no
+ fewer than four iterator classes that can be used as a
+ replacement: QList::const_iterator, QList::iterator,
+ QListIterator, and QMutableListIterator. The most straightforward
+ class to use when porting is QMutableListIterator<T *> (if you
+ modify the list through the iterator) or QListIterator<T *> (if
+ you don't). The following table summarizes the API differences:
+
+ \table
+ \header \o QPtrListIterator function \o Qt 4 equivalent
+ \row \o QPtrListIterator::atFirst() \o !QListIterator::hasPrevious() (notice the \c{!})
+ \row \o QPtrListIterator::atLast() \o !QListIterator::hasNext() (notice the \c{!})
+ \row \o QPtrListIterator::count() \o QList::count() or QList::size()
+ \row \o QPtrListIterator::current() \o QMutableListIterator::value()
+ \row \o QPtrListIterator::isEmpty() \o QList::isEmpty()
+ \row \o QPtrListIterator::toFirst() \o QListIterator::toFront()
+ \row \o QPtrListIterator::toLast() \o QListIterator::toBack()
+ \row \o QPtrListIterator::operator() \o QMutableListIterator::value()
+ \row \o QPtrListIterator::operator*() \o QMutableListIterator::value()
+ \endtable
+
+ Again, be aware that QListIterator has a different way of
+ iterating than QPtrList. A typical loop with QPtrList looks like
+ this:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 36
+
+ Here's the equivalent QListIterator loop:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 37
+
+ Finally, QPtrListStdIterator<T> must also be ported. This is
+ easy, because QList also provides STL-style iterators
+ (QList::iterator and QList::const_iterator).
+
+ \section1 QPtrQueue<T>
+
+ QPtrQueue has been moved to the Qt3Support library.
+ It has been replaced by the more modern QQueue class.
+
+ The following table summarizes the differences between
+ QPtrQueue<T> and QQueue<T *>:
+
+ \table
+ \header \o QPtrQueue function \o QQueue equivalent
+ \row \o QPtrQueue::autoDelete() \o See discussion below
+ \row \o QPtrQueue::count() \o QQueue::count() or QQueue::size() (equivalent)
+ \row \o QPtrQueue::current() \o QQueue::head()
+ \row \o QPtrQueue::remove() \o QQueue::dequeue()
+ \row \o QPtrQueue::setAutoDelete() \o See discussion below
+ \endtable
+
+ If you use QPtrQueue's auto-delete feature (by calling
+ QPtrQueue::setAutoDelete(true)), you need to do some more work.
+ You have two options: Either you call \c delete yourself whenever
+ you remove an item from the container, or you can use QQueue<T>
+ instead of QQueue<T *> (i.e. store values directly instead of
+ pointers to values). Here, we will show when to call \c delete.
+
+ \omit
+ (See \l{What's Wrong with Auto-Delete} for an explanation of why
+ the Qt 4 containers don't offer that feature.)
+ \endomit
+
+ \table
+ \header \o QPtrQueue idiom \o QQueue idiom
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 38
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 39
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 40
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 41
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 42
+
+ (also called from QPtrQueue's destructor)
+
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 43
+
+ In 99% of cases, the following idiom also works:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 44
+
+ However, it may lead to crashes if \c queue is referenced
+ from the value type's destructor, because \c queue contains
+ dangling pointers until clear() is called.
+ \endtable
+
+ \section1 QPtrStack<T>
+
+ QPtrStack has been moved to the Qt3Support library.
+ It has been replaced by the more modern QStack class.
+
+ The following table summarizes the differences between
+ QPtrStack<T> and QStack<T *>:
+
+ \table
+ \header \o QPtrStack function \o QStack equivalent
+ \row \o QPtrStack::autoDelete() \o See discussion below
+ \row \o QPtrStack::count() \o QStack::count() or QStack::size() (equivalent)
+ \row \o QPtrStack::current() \o QStack::top()
+ \row \o QPtrStack::remove() \o QStack::pop()
+ \row \o QPtrStack::setAutoDelete() \o See discussion below
+ \endtable
+
+ If you use QPtrStack's auto-delete feature (by calling
+ QPtrStack::setAutoDelete(true)), you need to do some more work.
+ You have two options: Either you call \c delete yourself whenever
+ you remove an item from the container, or you can use QStack<T>
+ instead of QStack<T *> (i.e. store values directly instead of
+ pointers to values). Here, we will show when to call \c delete.
+
+ \omit
+ (See \l{What's Wrong with Auto-Delete} for an explanation of why
+ the Qt 4 containers don't offer that feature.)
+ \endomit
+
+ \table
+ \header \o QPtrStack idiom \o QStack idiom
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 45
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 46
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 47
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 48
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 49
+
+ (also called from QPtrStack's destructor)
+
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 50
+
+ In 99% of cases, the following idiom also works:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 51
+
+ However, it may lead to crashes if \c stack is referenced
+ from the value type's destructor, because \c stack contains
+ dangling pointers until clear() is called.
+ \endtable
+
+ \section1 QPtrVector<T>
+
+ QPtrVector<T> has been moved to Qt3Support. It has been replaced
+ by the more modern QVector class.
+
+ When porting to Qt 4, you can use QVector<T *> as an alternative
+ to QPtrVector<T>. The APIs of QPtrVector<T> and QVector<T *> are
+ somewhat similar. The main issue is that QPtrVector supports
+ auto-delete whereas QVector doesn't.
+
+ \omit
+ (See \l{What's Wrong with Auto-Delete} for an explanation of why
+ the Qt 4 containers don't offer that feature.)
+ \endomit
+
+ The following table summarizes the API differences between the
+ two classes:
+
+ \table
+ \header \o QPtrVector function \o QVector equivalent
+ \row \o QPtrVector::autoDelete() \o See discussion below
+ \row \o QPtrVector::bsearch(const T *) \o \l qBinaryFind()
+ \row \o QPtrVector::contains(const T *) \o QVector::count(T *)
+ \row \o QPtrVector::containsRef(const T *) \o QVector::count(T *)
+ \row \o QPtrVector::count() \o See remark below
+ \row \o QPtrVector::insert(uint, T *) \o See remark below
+ \row \o QPtrVector::isNull() \o N/A
+ \row \o QPtrVector::remove(uint) \o See remark below
+ \row \o QPtrVector::setAutoDelete() \o See discussion below
+ \row \o QPtrVector::sort() \o \l qSort()
+ \row \o QPtrVector::take(uint) \o See remark below
+ \row \o QPtrVector::toList(QGList *) \o QList::QList(const QVector &)
+ \endtable
+
+ Remarks:
+
+ \list 1
+ \o QPtrVector::insert(uint, T *) sets an item to store a certain
+ pointer value. This is \e not the same as QVector::insert(int, T *),
+ which creates space for the item by moving following items by
+ one position. Use \c{vect[i] = ptr} to set a QVector item to
+ a particular value.
+ \o QPtrVector::remove(uint) sets an item to be 0. This is \e not
+ the same as QVector::removeAt(int), which entirely erases the
+ item, reducing the size of the vector. Use \c{vect[i] = 0} to
+ set a QVector item to 0.
+ \o Likewise, QPtrVector::take(uint) sets an item to be 0 and
+ returns the previous value of the item. Again, this is easy to
+ achieve using QVector::operator[]().
+ \o QPtrVector::count() returns the number of non-null items in
+ the vector, whereas QVector::count() (like QVector::size())
+ returns the number of items (null or non-null) in the vector.
+ Fortunately, it's not too hard to simulate QPtrVector::count().
+
+ \oldcode
+ int numValidItems = vect.count();
+ \newcode
+ int numValidItems = vect.size() - vect.count(0);
+ \endcode
+ \endlist
+
+ If you use QVector's auto-delete feature (by calling
+ QVector::setAutoDelete(true)), you need to do some more work. You
+ have two options: Either you call \c delete yourself whenever you
+ remove an item from the container, or you use QVector<T> instead
+ of QVector<T *> (i.e. store values directly instead of pointers
+ to values). Here, we'll see when to call \c delete.
+
+ The following table summarizes the idioms that you need to watch
+ out for if you want to call \c delete yourself.
+
+ \table
+ \header \o QPtrVector idiom \o QVector idiom
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 52
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 53
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 54
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 55
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 56
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 57
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 58
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 59
+ \row
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 60
+
+ (also called from QPtrVector's destructor)
+
+ \o
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 61
+
+ In 99% of cases, the following idiom also works:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 62
+
+ However, it may lead to crashes if \c vect is referenced from
+ the value type's destructor, because \c vect contains
+ dangling pointers until clear() is called.
+ \endtable
+
+ Be aware that QPtrVector's destructor automatically calls
+ clear(). If you have a QPtrVector data member in a custom class
+ and use the auto-delete feature, you will need to call \c delete
+ on all the items in the container from your class destructor to
+ avoid a memory leak.
+
+ \section1 QPushButton
+
+ See \l{#properties}{Properties} for a list of QPushButton
+ properties in Qt 3 that have changed in Qt 4.
+
+ \section1 QRangeControl
+
+ In Qt 3, various "range control" widgets (QDial, QScrollBar,
+ QSlider, and QSpin) inherited from both QWidget and
+ \c QRangeControl.
+
+ In Qt 4, \c QRangeControl has been replaced with the new
+ QAbstractSlider and QAbstractSpinBox classes, which inherit from
+ QWidget and provides similar functionality. Apart from eliminating
+ unnecessary multiple inheritance, the new design allows
+ QAbstractSlider to provide signals, slots, and properties.
+
+ The old \c QRangeControl class has been renamed Q3RangeControl
+ and moved to the Qt3Support library, together with
+ the (undocumented) \c QSpinWidget class.
+
+ If you use \c QRangeControl as a base class in your application,
+ you can switch to use QAbstractSlider or QAbstractSpinBox instead.
+
+ \oldcode
+ class VolumeControl : public QWidget, public QRangeControl
+ {
+ ...
+ protected:
+ void valueChange() {
+ update();
+ emit valueChanged(value());
+ }
+ void rangeChange() {
+ update();
+ }
+ void stepChange() {
+ update();
+ }
+ };
+ \newcode
+ class VolumeControl : public QAbstractSlider
+ {
+ ...
+ protected:
+ void sliderChange(SliderChange change) {
+ update();
+ if (change == SliderValueChange)
+ emit valueChanged(value());
+ }
+ };
+ \endcode
+
+ \section1 QRegExp
+
+ The search() and searchRev() functions have been renamed to indexIn()
+ and lastIndexIn() respectively.
+
+ \section1 QRegion
+
+ The following changes have been made to QRegion in Qt 4:
+
+ \list
+ \o There is no longer any difference between a \e null region and
+ an \e empty region. Use isEmpty() in most places where you
+ would have used a null QRegion.
+ \o QRegion::rects() used to return a QMemArray<QRect>. It now returns
+ a QVector<QRect>.
+ \endlist
+
+ \section1 QScrollBar
+
+ See \l{#properties}{Properties} for a list of QScrollBar
+ properties in Qt 3 that have changed in Qt 4.
+
+ \section1 QScrollView
+
+ The \c QScrollView class has been renamed Q3ScrollView and moved
+ to the Qt3Support library. It has been replaced by
+ the QAbstractScrollArea and QScrollArea classes.
+
+ Note that Qt 4 in general uses the QScrollArea::widget() function
+ where Qt 3 used QScrollView::viewport(). The rationale for this is
+ that it is no longer possible to draw directly on a scroll
+ area. The QScrollArea::widget() function returns the widget set on
+ the scroll area.
+
+ \c QScrollView was designed to work around the 16-bit limitation
+ on widget coordinates found on most window systems. In Qt 4, this
+ is done transparently for \e all widgets, so there is no longer a
+ need for such functionality in \c QScrollView. For that reason,
+ the new QAbstractScrollArea and QScrollArea classes are much more
+ lightweight, and concentrate on handling scroll bars.
+
+ \section1 QServerSocket
+
+ The \c QServerSocket class has been renamed Q3ServerSocket and
+ moved to the Qt3Support library. In Qt 4, it has been
+ replaced by QTcpServer.
+
+ With Q3ServerSocket, connections are accepted by reimplementing a
+ virtual function (Q3ServerSocket::newConnection()). With
+ QTcpServer, on the other hand, you don't need to subclass.
+ Instead, simply connect to the QTcpServer::newConnection()
+ signal.
+
+ \section1 QSettings
+
+ The QSettings class has been rewritten to be more robust and to
+ respect existing standards (e.g., the INI file format). The API
+ has also been extensively revised. The old API is still provided
+ when Qt 3 support is enabled.
+
+ Since the format and location of settings have changed between Qt
+ 3 and Qt 4, the Qt 4 version of your application won't recognize
+ settings written using Qt 3.
+
+ \section1 QShared
+
+ The \c QShared class has been obsoleted by the more powerful
+ QSharedData and QSharedDataPointer as a means of creating custom
+ implicitly shared classes. It has been renamed Q3Shared moved to
+ the Qt3Support library.
+
+ An easy way of porting to Qt 4 is to include this class into your
+ project and to use it instead of \c QShared:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 63
+
+ If possible, we recommend that you use QSharedData and
+ QSharedDataPointer instead. They provide thread-safe reference
+ counting and handle all the reference counting behind the scenes,
+ eliminating the risks of forgetting to increment or decrement the
+ reference count.
+
+ \section1 QSignal
+
+ The QSignal class has been renamed to Q3Signal and moved to the
+ Qt3Support library. The preferred approach is to create your own
+ QObject subclass with a signal that has the desired signature.
+ Alternatively, you can call QMetaObject::invokeMethod() if you
+ want to invoke a slot.
+
+ \section1 QSimpleRichText
+
+ QSimpleRichText has been obsoleted by QTextDocument. It has
+ bene renamed Q3SimpleRichText and moved to the Qt3Support
+ library.
+
+ Previously, you would do the following with Q3SimpleRichText:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 63a
+
+ However, with QTextDocument, you use the following code instead:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 63b
+
+ See \l{Rich Text Processing} for an overview of the Qt 4 rich
+ text classes.
+
+ \section1 QSlider
+
+ The QSlider::sliderStart() and QSlider::sliderRect() functions
+ have been removed.
+
+ The slider's rect can now be retrieved using the code snippet below:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 63c
+
+ In addition, the direction of a vertical QSlider has changed,
+ i.e. the bottom is now the minimum, and the top the maximum. You
+ can use the QAbstractSlider::invertedAppearance property to
+ control this behavior.
+
+ See \l{#properties}{Properties} for a list of QSlider properties
+ in Qt 3 that have changed in Qt 4.
+
+ \section1 QSocket
+
+ The \c QSocket class has been renamed Q3Socket and moved to the
+ Qt3Support library. In Qt 4, it has been replaced by
+ the QTcpSocket class, which inherits most of its functionality
+ from QAbstractSocket.
+
+ \section1 QSocketDevice
+
+ The \c QSocketDevice class has been renamed Q3SocketDevice and
+ moved to the Qt3Support library. In Qt 4, there is no
+ direct equivalent to Q3SocketDevice:
+
+ \list \o If you use Q3SocketDevice in a thread to perform blocking
+ network I/O (a technique encouraged by the \e{Qt Quarterly}
+ article \l{http://qt.nokia.com/doc/qq/qq09-networkthread.html}
+ {Unblocking Networking}), you can now use QTcpSocket, QFtp, or
+ QNetworkAccessManager, which can be used from non-GUI threads.
+
+ \o If you use Q3SocketDevice for UDP, you can now use QUdpSocket instead.
+
+ \o If you use Q3SocketDevice for other uses, Qt 4 offers no
+ alternative right now. However, there is a \c QAbstractSocketEngine
+ internal class that offers a low-level socket API similar to
+ Q3SocketDevice. Should the need for such functionality arise in
+ Qt 4 applications, we will consider making this class public in a
+ future release.
+ \endlist
+
+ \section1 QSortedList
+
+ The QSortedList<T> class has been deprecated since Qt 3.0. In Qt
+ 4, it has been moved to the Qt3Support library.
+
+ In new code, we recommend that you use QList<T> instead and use
+ \l qSort() to sort the items.
+
+ \section1 QSplitter
+
+ The function setResizeMode() has been moved into Qt3Support. Set
+ the stretch factor in the widget's size policy to get equivalent
+ functionality.
+
+ The obsolete function drawSplitter() has been removed. Use
+ QStyle::drawPrimitive() to acheive similar functionality.
+
+ \section1 QSpinBox
+
+ See \l{#properties}{Properties} for a list of QSpinBox properties
+ in Qt 3 that have changed in Qt 4.
+
+ \section1 QSqlCursor
+
+ The \c QSqlCursor class has been renamed Q3SqlCursor and moved to
+ the Qt3Support library. In Qt 4, you can use
+ QSqlQuery, QSqlQueryModel, or QSqlTableModel, depending on
+ whether you want a low-level or a high-level interface for
+ accessing databases.
+
+ See \l{QtSql Module} for an overview of the new SQL classes.
+
+ \section1 QSqlDatabase
+
+ QSqlDatabase is now a smart pointer that is passed around by
+ value. Simply replace all QSqlDatabase pointers by QSqlDatabase
+ objects.
+
+ \section1 QSqlEditorFactory
+
+ The \c QSqlEditorFactory class has been renamed
+ Q3SqlEditorFactory and moved to Qt3Support.
+
+ See \l{QtSql Module} for an overview of the new SQL classes.
+
+ \section1 QSqlError
+
+ The enum \c{Type} was renamed to \c{ErrorType}, The values were renamed as well:
+
+ \list
+ \o None - use NoError instead
+ \o Connection - use ConnectionError instead
+ \o Statement - use StatementError instead
+ \o Transaction - use TransactionError instead
+ \o Unknown - use UnknownError instead
+ \endlist
+
+ \section1 QSqlFieldInfo
+
+ The QSqlFieldInfo class has been moved to Qt3Support. Its
+ functionality is now provided by the QSqlField class.
+
+ See \l{QtSql Module} for an overview of the new SQL classes.
+
+ \section1 QSqlForm
+
+ The \c QSqlForm class has been renamed Q3SqlForm and moved to the
+ Qt3Support library.
+
+ See \l{QtSql Module} for an overview of the new SQL classes.
+
+ \section1 QSqlPropertyMap
+
+ The \c QSqlPropertyMap class has been renamed Q3SqlPropertyMap
+ moved to the Qt3Support library.
+
+ See \l{QtSql Module} for an overview of the new SQL classes.
+
+ \section1 QSqlQuery
+
+ QSqlQuery::prev() was renamed to QSqlQuery::previous().
+ QSqlQuery::prev() remains, but it just calls previous().
+ QSqlQuery no longer has any virtual methods, i.e., exec(),
+ value(), seek(), next(), prev(), first(), last(), and the
+ destructor are no longer virtual.
+
+ \section1 QSqlRecord
+
+ QSqlRecord behaves like a vector now, QSqlRecord::insert() will
+ actually insert a new field instead of replacing the existing
+ one.
+
+ \section1 QSqlRecordInfo
+
+ The QSqlRecordInfo class has been moved to Qt3Support. Its
+ functionality is now provided by the QSqlRecord class.
+
+ See \l{QtSql Module} for an overview of the new SQL classes.
+
+ \section1 QSqlSelectCursor
+
+ The \c QSqlSelectCursor class has been renamed Q3SqlSelectCursor
+ and moved to the Qt3Support library.
+
+ See \l{QtSql Module} for an overview of the new SQL classes.
+
+ \section1 QStoredDrag
+
+ The \c QStoredDrag class has been renamed Q3StoredDrag and moved
+ to the Qt3Support library. In Qt 4, use QMimeData
+ instead and call QMimeData::setData() to set the data.
+
+ See \l{Porting to Qt 4 - Drag and Drop} for a comparison between
+ the drag and drop APIs in Qt 3 and Qt 4.
+
+ \section1 QStr(I)List
+
+ The QStrList and QStrIList convenience classes have been
+ deprecated since Qt 2.0. In Qt 4, they have been moved to the
+ Qt3Support library. If you used any of these, we
+ recommend that you use QStringList or QList<QByteArray> instead.
+
+ \section1 QStr(I)Vec
+
+ The QStrVec and QStrIVec convenience classes have been deprecated
+ since Qt 2.0. In Qt 4, they have been moved to Qt3Support. If you
+ used any of these, we recommend that you use QStringList or
+ QList<QByteArray> instead.
+
+ \section1 QString
+
+ Here are the main issues to be aware of when porting QString to
+ Qt 4:
+
+ \list 1
+ \o The QString::QString(QChar) constructor performed implicit
+ conversion in Qt 3. Now, you will need a cast to convert a
+ QChar to a QString.
+
+ \o The QString::QString(const QByteArray &) constructor used to
+ stop at the first '\\0' it encountered, for compatibility
+ with Qt 1. This quirk has now been fixed; in Qt 4, the
+ resulting QString always has the same length as the
+ QByteArray that was passed to the constructor.
+
+ \o The QString::null static constant has been deprecated in Qt
+ 4. For compatibility, Qt 4 provides a QString::null symbol
+ that behaves more or less the same as the old constant. The
+ new idiom is to write QString() instead of QString::null, or
+ to call clear().
+
+ \oldcode
+ str1 = QString::null;
+ if (str2 == QString::null)
+ do_something(QString::null);
+ \newcode
+ str1.clear();
+ if (str2.isNull())
+ do_something(QString());
+ \endcode
+
+ In new code, we recommend that you don't rely on the
+ distinction between a null string and a (non-null) empty
+ string. See \l{Distinction Between Null and Empty Strings}
+ for details.
+
+ \o QString::latin1() and QString::ascii() have been replaced
+ with QString::toLatin1() and QString::toAscii(), which return
+ a QByteArray instead of a (non-reentrant) \c{const char *}.
+ For consistency, QString::utf8() and QString::local8Bit(),
+ which already returned a QByteArray (actually a \c QCString),
+ have been renamed QString::toUtf8() and
+ QString::toLocal8Bit().
+
+ To obtain a \c{const char *} pointer to ASCII or Latin-1 data,
+ use QString::toAscii() or QString::toLatin1() to obtain a
+ QByteArray containing the data, then call QByteArray::constData()
+ to access the character data directly. Note that the pointer
+ returned by this function is only valid for the lifetime of the
+ byte array; you should avoid taking a pointer to the data
+ contained in temporary objects.
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 64
+
+ In the above example, the \c goodData pointer is valid for the lifetime
+ of the \c asciiData byte array. If you need to keep a copy of the data
+ in a non-Qt data structure, use standard C memory allocation and string
+ copying functions to do so \e before destroying the byte array.
+
+ \o QString::at() returned a non-const reference, whereas the
+ new QString::at() returns a const value. Code like
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 65
+
+ will no longer compile. Instead, use QString::operator[]:
+
+ \snippet doc/src/snippets/code/doc_src_porting4.qdoc 66
+
+ \o The QString::contains(\e x) function (where \e x is a
+ character or a string) has been renamed QString::count(\e x).
+ In addition, there now exists a set of QString::contains()
+ functions that returns a boolean value. Replace old calls to
+ contains() with either count() or contains(), depending on
+ whether you care about the specific number of occurrences of
+ a character in the string or only care about whether the
+ string contains that character or not.
+
+ \o Many functions in QString had a \c bool parameter that
+ specified case sensitivity. In Qt 4, in the interest of code
+ readability and maintainability, the \c bool parameters have
+ been replaced by the Qt::CaseSensitivity enum, which can take
+ the values Qt::CaseSensitive and Qt::CaseInsensitive.
+
+ \oldcode
+ if (url.startsWith("http:", false))
+ ...
+ \newcode
+ if (url.startsWith("http:", Qt::CaseInsensitive))
+ ...
+ \endcode
+
+ \o The QString::setExpand(uint, QChar) function, which already
+ was obsolete in Qt 3, is no longer available. Use
+ QString::operator[] instead.
+
+ \oldcode
+ str.setExpand(32, '$');
+ \newcode
+ str[32] = '$';
+ \endcode
+
+ \o The \c QT_NO_ASCII_CAST and \c QT_NO_CAST_ASCII macros have
+ been renamed \c QT_NO_CAST_TO_ASCII and \c
+ QT_NO_CAST_FROM_ASCII, respectively.
+
+ \o The QString::data() used to return the same as
+ QString::ascii(). It now returns a pointer to the Unicode
+ data stored in the QString object. Call QString::ascii() if
+ you want the old behavior.
+
+ \o QString::arg() now converts two-digit place markers, allowing
+ up to 99 place markers to be used in any given string.
+
+ \o Comparisons between QStrings and \c NULL in order to determine
+ whether strings are empty are no longer allowed.
+ Use \l{QString::}{isEmpty()} instead.
+
+ \endlist
+
+ \section1 QStringList
+
+ QStringList now inherits from QList<QString> and can no longer be
+ converted to a QValueList<QString>. Since QValueList inherits QList a
+ cast will work as expected.
+
+ This change implies some API incompatibilities for QStringList.
+ For example, at() returns the string, not an iterator. See the
+ \l{#qvaluelist.section}{section on QValueList} for details.
+
+ The static QStringList::split() function for splitting strings into
+ lists of smaller strings has been replaced by QString::split(),
+ which returns a QStringList.
+
+ \section1 QStyle
+
+ The QStyle API has been overhauled and improved. Most of the information on
+ why this change was done is described in \l{The Qt 4 Style API}{the QStyle overview}.
+
+ Since QStyle is mostly used internally by Qt's widgets and styles and since
+ it is not essential to the good functioning of an application, there is no
+ compatibility path. This means that we have changed many enums and
+ functions and the qt3to4 porting tool will not change much in your qstyle
+ code. To ease the pain, we list some of the major changes here.
+
+ QStyleOption has taken on a more central role and is no longer an optional
+ argument, please see the QStyleOption documentation for more information.
+
+ The QStyle::StyleFlags have been renamed QStyle::StateFlags and are now prefixed State_
+ instead of Style_, in addition the Style_ButtonDefault flag has moved to
+ QStyleOptionButton.
+
+ The QStyle::PrimitiveElement enumeration has undergone extensive change.
+ Some of the enums were moved to QStyle::ControlElement, some were removed
+ and all were renamed. This renaming is not done by the qt3to4 porting tool,
+ so you must do it yourself. The table below shows how things look
+ now.
+
+ \table
+ \header \o Old name \o New name \o Remark
+ \row \o \c PE_ButtonCommand \o QStyle::PE_PanelButtonCommand
+ \row \o \c PE_ButtonDefault \o QStyle::PE_FrameDefaultButton
+ \row \o \c PE_ButtonBevel \o QStyle::PE_PanelButtonBevel
+ \row \o \c PE_ButtonTool \o QStyle::PE_PanelButtonTool
+ \row \o \c PE_ButtonDropDown \o QStyle::PE_IndicatorButtonDropDown
+ \row \o \c PE_FocusRect \o QStyle::PE_FrameFocusRect
+ \row \o \c PE_ArrowUp \o QStyle::PE_IndicatorArrowUp
+ \row \o \c PE_ArrowDown \o QStyle::PE_IndicatorArrowDown
+ \row \o \c PE_ArrowRight \o QStyle::PE_IndicatorArrowRight
+ \row \o \c PE_ArrowLeft \o QStyle::PE_IndicatorArrowLeft
+ \row \o \c PE_SpinBoxUp \o QStyle::PE_IndicatorSpinUp
+ \row \o \c PE_SpinBoxDown \o QStyle::PE_IndicatorSpinDown
+ \row \o \c PE_SpinBoxPlus \o QStyle::PE_IndicatorSpinPlus
+ \row \o \c PE_SpinBoxMinus \o QStyle::PE_IndicatorSpinMinus
+ \row \o \c PE_SpinBoxSlider \o QStyle::CE_SpinBoxSlider \o uses QStyle::drawControl()
+ \row \o \c PE_Indicator \o QStyle::PE_IndicatorCheckBox
+ \row \o \c PE_IndicatorMask \o N/A \o use QStyle::styleHint() to retrieve mask
+ \row \o \c PE_ExclusiveIndicator \o QStyle::PE_IndicatorRadioButton
+ \row \o \c PE_ExclusiveIndicatorMask \o N/A \o use QStyle::styleHint() to retrieve mask
+ \row \o \c PE_DockWindowHandle \o QStyle::PE_IndicatorToolBarHandle
+ \row \o \c PE_DockWindowSeparator \o QStyle::PE_Q3DockWindowSeparator
+ \row \o \c PE_DockWindowResizeHandle \o QStyle::PE_IndicatorDockWindowResizeHandle
+ \row \o \c PE_DockWindowTitle \o QStyle::CE_DockWindowTitle \o uses QStyle::drawControl()
+ \row \o \c PE_Splitter \o QStyle::CE_Splitter \o uses QStyle::drawControl()
+ \row \o \c PE_Panel \o QStyle::PE_Frame
+ \row \o \c PE_PanelMenu \o QStyle::PE_FrameMenu
+ \row \o \c PE_PanelMenuBar \o QStyle::PE_PanelMenuBar
+ \row \o \c PE_PanelDockWindow \o QStyle::PE_FrameDockWindow
+ \row \o \c PE_TabBarBase \o QStyle::PE_FrameTabBarBase
+ \row \o \c PE_HeaderSection \o QStyle::CE_HeaderSection \o uses QStyle::drawControl()
+ \row \o \c PE_HeaderArrow \o QStyle::PE_IndicatorHeaderArrow
+ \row \o \c PE_StatusBarSection \o QStyle::PE_FrameStatusBar
+ \row \o \c PE_Separator \o QStyle::PE_Q3Separator
+ \row \o \c PE_SizeGrip \o QStyle::CE_SizeGrip \o uses QStyle::drawControl()
+ \row \o \c PE_CheckMark \o QStyle::PE_IndicatorMenuCheckMark
+ \row \o \c PE_ScrollBarAddLine \o QStyle::CE_ScrollBarAddLine \o uses QStyle::drawControl()
+ \row \o \c PE_ScrollBarSubLine \o QStyle::CE_ScrollBarSubLine \o uses QStyle::drawControl()
+ \row \o \c PE_ScrollBarAddPage \o QStyle::CE_ScrollBarAddPage \o uses QStyle::drawControl()
+ \row \o \c PE_ScrollBarSubPage \o QStyle::CE_ScrollBarSubPage \o uses QStyle::drawControl()
+ \row \o \c PE_ScrollBarSlider \o QStyle::CE_ScrollBarSlider \o uses QStyle::drawControl()
+ \row \o \c PE_ScrollBarFirst \o QStyle::CE_ScrollBarFirst \o uses QStyle::drawControl()
+ \row \o \c PE_ScrollBarLast \o QStyle::CE_ScrollBarLast \o uses QStyle::drawControl()
+ \row \o \c PE_ProgressBarChunk \o QStyle::PE_IndicatorProgressChunk
+ \row \o \c PE_PanelLineEdit \o QStyle::PE_FrameLineEdit
+ \row \o \c PE_PanelTabWidget \o QStyle::PE_FrameTabWidget
+ \row \o \c PE_WindowFrame \o QStyle::PE_FrameWindow
+ \row \o \c PE_CheckListController \o QStyle::PE_Q3CheckListController
+ \row \o \c PE_CheckListIndicator \o QStyle::PE_Q3CheckListIndicator
+ \row \o \c PE_CheckListExclusiveIndicato\o QStyle::PE_Q3CheckListExclusiveIndicator
+ \row \o \c PE_PanelGroupBox \o QStyle::PE_FrameGroupBox
+ \row \o \c PE_TreeBranch \o QStyle::PE_IndicatorBranch
+ \row \o \c PE_RubberBand \o QStyle::CE_RubberBand \o uses QStyle::drawControl()
+ \row \o \c PE_PanelToolBar \o QStyle::PE_PanelToolBar
+ \row \o \c PE_ToolBarHandle \o QStyle::PE_IndicatorToolBarHandle
+ \row \o \c PE_ToolBarSeparator \o QStyle::PE_IndicatorToolBarSeparator
+ \endtable
+
+ The QStyle::drawControlMask() and QStyle::drawComplexControlMask()
+ functions have been removed. They are replaced with a style hint.
+
+ The QStyle::drawItem() overloads that took both a pixmap and a string have
+ been removed. Use QStyle::drawItemText() and QStyle::drawItemPixmap() directly.
+
+ The QStyle::itemRect() overload that took both a pixmap and a string is also removed, use
+ either QStyle::itemTextRect() or QStyle::itemPixmapRect() instead.
+
+ \section1 QStyleSheet
+
+ The QStyleSheet and QStyleSheetItem classes have been renamed
+ Q3StyleSheet and Q3StyleSheetItem, and have been moved to the
+ Qt3Support library.
+
+ See \l{Rich Text Processing} for an overview of the Qt 4 rich
+ text classes, and \l{Qt Style Sheets} for a description of
+ CSS-like style sheet support in Qt 4.2 and above.
+
+ \section1 QSyntaxHighlighter
+
+ The \c QSyntaxHighlighter class from Qt 3 has been renamed
+ Q3SyntaxHighlighter and moved to the Qt3Support library. Since Qt
+ 4.1, it has been replaced by a new QSyntaxHighlighter class based
+ on Qt 4's new rich text engine.
+
+ \section1 QTabBar
+
+ See \l{#properties}{Properties} for a list of QTabBar properties
+ in Qt 3 that have changed in Qt 4.
+
+ \section1 QTabDialog
+
+ The \c QTabDialog class is no longer part of the public Qt API.
+ It has been renamed Q3TabDialog and moved to Qt3Support. In Qt 4
+ applications, you can easily obtain the same result by combining
+ a QTabWidget with a QDialog and provide \l{QPushButton}s
+ yourself.
+
+ See also the \l{dialogs/tabdialog} example, which shows how to
+ implement tab dialogs in Qt 4.
+
+ \section1 QTabWidget
+
+ See \l{#properties}{Properties} for a list of QTabWidget
+ properties in Qt 3 that have changed in Qt 4.
+
+ \section1 QTable
+
+ The \c QTable, \c QTableItem, \c QComboTableItem, \c
+ QCheckTableItem, and \c QTableSelection classes have been renamed
+ Q3Table, Q3TableItem, Q3ComboTableItem, Q3CheckTableItem, and
+ Q3TableSelection and moved to the Qt3Support library.
+ New Qt applications should use the new QTableWidget or QTableView
+ class instead.
+
+ Some of these classes behave differently with respect to the way
+ they handle \c NULL pointers. For example, Q3TableItem::setPixmap()
+ no longer accepts \c NULL or 0 to indicate that the item should
+ contain a null pixmap; in this case, a null pixmap should be
+ constructed and passed explicitly to the function.
+
+ See \l{Model/View Programming} for an overview of the new item
+ view classes.
+
+ \section1 QTextCodec
+
+ The loadCharmap() and loadCharmapFromFile() functions are no longer
+ available in Qt 4. You need to create your own codec if you want to
+ create a codec based on a POSIX2 charmap definition.
+
+ \section1 QTextDrag
+
+ The \c QTextDrag class has been renamed Q3TextDrag and moved to
+ the Qt3Support library. In Qt 4, use QMimeData
+ instead and call QMimeData::setText() to set the data.
+
+ See \l{Porting to Qt 4 - Drag and Drop} for a comparison between
+ the drag and drop APIs in Qt 3 and Qt 4.
+
+ \section1 QTextEdit
+
+ The old QTextEdit and QTextBrowser classes have been renamed
+ Q3TextEdit and Q3TextBrowser, and have been moved to Qt3Support.
+ The new QTextEdit and QTextBrowser have a somewhat different API.
+
+ The \c QTextEdit::setWrapPolicy() function has been renamed to \l{QTextEdit::setWordWrapMode()}{setWordWrapMode()} and the
+ \c QTextEdit::setWrapColumnOrWidth() function has been renamed to \l{QTextEdit::setLineWrapColumnOrWidth()}
+ {setLineWrapColumnOrWidth()}. The Q3TextEdit::setWrapPolicy() and Q3TextEdit::setWrapColumnOrWidth() still provide this
+ functionality in the Q3TextEdit class.
+
+
+ See \l{Rich Text Processing} for an overview of the Qt 4 rich
+ text classes.
+
+ \section1 QTextIStream
+
+ The QTextIStream convenience class is no longer provided in Qt 4. Use
+ QTextStream directly instead.
+
+ \section1 QTextOStream
+
+ The QTextOStream convenience class is no longer provided in Qt 4. Use
+ QTextStream directly instead.
+
+ \section1 QTextOStreamIterator
+
+ The undocumented \c QTextOStreamIterator class has been removed
+ from the Qt library. If you need it in your application, feel
+ free to copy the source code from the Qt 3 \c <qtl.h> header
+ file.
+
+ \section1 QTextStream
+
+ QTextStream has undergone a number of API and implementation enhancements,
+ and some of the changes affect QTextStream's behavior:
+
+ \list
+ \o QTextStream now uses buffered writing, which means that you need to
+ call QTextStream::flush(), or use the streaming manipulators \c endl or
+ \c flush if you need QTextStream to flush its write buffer. The stream is
+ flushed automatically if QTextStream is deleted or when the device is
+ closed.
+ \o QTextStream now uses buffered reading, so if you read a line from the
+ stream, QTextStream will read as much as it can from the device to
+ fill up its internal read buffer. This speeds up reading significantly,
+ but Qt 3 code that mixed QTextStream access and direct device access
+ may need to be updated.
+ \o While QTextStream in Qt 3 always translated end-of-line characters from
+ Windows style ("\\r\\n") to Unix style ("\\n") on Windows, QTextStream in
+ Qt 4 only does this on devices opened with the \c{QIODevice::Text} mode
+ (formerly \c{IO_Translate}).
+ \endlist
+
+ Note that when using a QTextStream on a QFile in Qt 4, calling
+ QIODevice::reset() on the QFile will not have the expected result
+ because QTextStream now buffers the file. Use the
+ QTextStream::seek() function instead.
+
+ \section1 QTextView
+
+ The \c QTextView class has been renamed Q3TextView and moved to the
+ Qt3Support library.
+
+ \section1 QTimeEdit
+
+ The QTimeEdit class in Qt 4 is a convenience class based on
+ QDateTimeEdit. The old class has been renamed Q3TimeEdit and moved
+ to the Qt3Support library.
+
+ See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
+ a list of \c QTimeEdit virtual member functions in Qt 3 that are no
+ longer virtual in Qt 4.
+
+ \section1 QTimer
+
+ Windows restricts the granularity of timers, but starting with Qt 4,
+ we emulate a finer time resolution. On Windows XP we use the
+ multimedia timer API, which gives us 1 millisecond resolution for
+ QTimer.
+
+ Note that other versions of Windows have a lower timer resolution,
+ and that code relying on underlying system timer restrictions
+ encounters no such limitations using Qt 4 (e.g., setting an
+ interval of 0 millisecond results in Qt occupying all of the
+ processor time when no GUI events need processing).
+
+ \section1 QToolBar
+
+ The old \c QToolBar class, which worked with the old \c
+ QMainWindow and \c QDockArea classes and inherited from \c
+ QDockWindow, has been renamed Q3ToolBar and moved to
+ Qt3Support. Note that, when using Q3ToolBar, the toolbar's actions
+ must be \l {Q3Action}s.
+
+ Use the new QToolBar class in new applications.
+
+ \note \l{Q3ToolBar}'s
+ \l{Q3DockWindow::setHorizontallyStretchable()}{horizontallyStretchable}
+ property can be achieved in QToolBar with
+ \l{QWidget#Size Hints and Size Policies}{size policies}.
+
+ \section1 QToolButton
+
+ See \l{#properties}{Properties} for a list of QToolButton properties
+ in Qt 3 that have changed in Qt 4.
+
+ Note that many of the properties that could previously be set in
+ the constructor must now be set separately.
+
+ \section1 QToolTip
+
+ The QToolTip::setGloballyEnabled() function no longer exists.
+ Tooltips can be disabled by \l{QObject::installEventFilter()}{installing
+ an event filter} on qApp (the unique QApplication object) to block events
+ of type QEvent::ToolTip.
+
+ \section1 QUriDrag
+
+ The \c QUriDrag class has been renamed Q3UriDrag and moved to the
+ Qt3Support library. In Qt 4, use QMimeData instead
+ and call QMimeData::setUrl() to set the URL.
+
+ See \l{Porting to Qt 4 - Drag and Drop} for a comparison between
+ the drag and drop APIs in Qt 3 and Qt 4.
+
+ \section1 QUrl
+
+ The QUrl class has been rewritten from scratch in Qt 4 to be more
+ standard-compliant. The old QUrl class has been renamed Q3Url and
+ moved to the Qt3Support library.
+
+ The new QUrl class provides an extensive list of compatibility
+ functions to ease porting from Q3Url to QUrl. A few functions
+ require you to change your code:
+
+ \list
+ \o Q3Url::Q3Url(const Q3Url &, const QString &, bool) can be
+ simulated by combining the URLs manually (using
+ QString::operator+(), for example).
+ \o Q3Url::setEncodedPathAndQuery(const QString &) is replaced by
+ QUrl::setPath() and QUrl::setEncodedQuery().
+ \o Q3Url::encodedPathAndQuery() is replaced by QUrl::path() and
+ QUrl::encodedQuery().
+ \o Q3Url::isLocalFile() can be simulated by checking that
+ QUrl::protocol() is "file".
+ \o Q3Url::toString(bool, bool) is replaced by
+ QUrl::toString(int), where the \c int parameter specifies a
+ combination of \l{QUrl::FormattingOptions}{formatting
+ options}.
+ \endlist
+
+ \section1 QUrlOperator
+
+ The \c QUrlOperator class is no longer part of the public Qt API.
+ It has been renamed Q3UrlOperator and moved to Qt3Support.
+
+ From Qt 4.4, the Network Access API provides a subset of the features
+ provided by \c QUrlOperator that are mostly intended for use with
+ applications that use the HTTP and FTP protocols. See the
+ QNetworkRequest, QNetworkReply, and QNetworkAccessManager documentation
+ for further details.
+
+ \target qvaluelist.section
+ \section1 QValueList<T>
+
+ The QValueList<T> class has been replaced by QList<T> and
+ QLinkedList<T> in Qt 4. As a help when porting older Qt
+ applications, the Qt3Support library contains a
+ QValueList<T> class implemented in terms of the new
+ QLinkedList<T>. Similarly, it contains QValueListIterator<T> and
+ QValueListConstIterator<T> classes implemented in terms of
+ QLinkedList<T>::iterator and QLinkedList<T>::const_iterator.
+
+ When porting to Qt 4, you have the choice of using QList<T> or
+ QLinkedList<T> as alternatives to QValueList<T>. QList<T> has an
+ index-based API and provides very fast random access
+ (QList::operator[]), whereas QLinkedList<T> has an iterator-based
+ API.
+
+ Here's a list of problem functions:
+
+ \list
+ \o QValueList(const std::list<T> &) doesn't exist in QList or
+ QLinkedList. You can simulate it by calling
+ \l{QLinkedList::append()}{append()} in a loop.
+
+ \o QValueList::insert(iterator, size_type, const T& x) doesn't
+ exist in QList or QLinkedList. Call
+ \l{QLinkedList::insert()}{insert()} repeatedly instead.
+
+ \o QValueList::fromLast() doesn't exist in QList or QLinkedList. Use
+ QValueList::end() instead.
+
+ \oldcode
+ for (QValueList<T>::iterator i = list.fromLast(); i != list.begin(); --i)
+ do_something(*i);
+ \newcode
+ QLinkedList<T>::iterator i = list.end();
+ while (i != list.begin()) {
+ --i; // decrement i before using it
+ do_something(*i);
+ }
+ \endcode
+
+ \o QValueList::append() and QValueList::prepend() return an
+ iterator to the inserted item. QList's and QLinkedList's
+ corresponding functions don't, but it's not a problem because
+ QValueList::prepend() always returns begin() and append()
+ always returns QValueList::end() - 1.
+
+ \o QValueList::at(\e i) return an iterator to the item at index
+ \e i. This corresponds to QList::begin() + \e i.
+
+ \o QValueList::contains(const T &) corresponds to
+ QList::count(const T &) and QLinkedList::count(const T &).
+ \endlist
+
+ \section1 QValueVector<T>
+
+ The QValueVector<T> class has been replaced by QVector<T> in Qt
+ 4. As a help when porting older Qt applications, the Qt3Support
+ library contains a Q3ValueVector<T> class implemented in terms of
+ the new QVector<T>.
+
+ When porting from QValueVector<T> to QVector<T>, you might run
+ into the following incompatibilities:
+
+ \list
+ \o QValueVector(const std::vector<T> &) doesn't exist in QVector.
+ You can simulate it by calling QVector::append()} in a loop.
+ \o QValueVector::resize(int, const T &) doesn't exist in QVector.
+ If you want the new items to be initialized with a particular
+ value, use QVector::insert() instead.
+ \o QValueVector::at() on a non-const vector returns a non-const
+ reference. This corresponds to QVector::operator[]().
+ \o Both QValueVector::at() functions have an \e ok parameter of
+ type \c{bool *} that is set to true if the index is within
+ bounds. This functionality doesn't exist in QVector; instead,
+ check the index against QVector::size() yourself.
+ \endlist
+
+ See \l{Generic Containers} for an overview of the Qt 4 container
+ classes.
+
+ \section1 QVariant
+
+ Some changes to the rest of the Qt library have
+ implications on QVariant:
+
+ \list 1
+ \o The \c QVariant::ColorGroup enum value is defined only
+ if \c QT3_SUPPORT is defined.
+ \o The \c QVariant::IconSet enum value has been renamed
+ QVariant::Icon.
+ \o The \c QVariant::CString enum value is now a synonym for
+ QVariant::ByteArray.
+ \endlist
+
+ Also, the QVariant(bool, int) constructor has been replaced by QVariant(bool).
+ Old code like QVariant(true, 0) should be replaced with QVariant(true); otherwise,
+ the QVariant(int, void *) overload might accidentally be triggered.
+
+ Many of QVariant's convenience functions in Qt 3, such as toColor() and
+ toKeySequence(), have been removed to enable QVariant to be part of the
+ QtCore module. QVariant is still able to hold values of these types.
+
+ Types which are not supported by any of the QVariant constructors can be
+ stored as variants with the QVariant::fromValue() function. Types with no
+ suitable convenience function for unpacking can be retrieved with the
+ QVariant::value() function or passed directly to classes that implement
+ the QVariant() operator.
+
+ \table
+ \header \o Qt 3 function \o Qt 4 function
+ \input porting/porting4-removedvariantfunctions.qdocinc
+ \endtable
+
+ See the QVariant::Type enum for a list of types supported by QVariant.
+
+ \section1 QVBox
+
+ The \c QVBox class is now only available as Q3VBox in Qt 4. You
+ can achieve the same result as \c QVBox by creating a QWidget
+ with a vertical layout:
+
+ \oldcode
+ QVBox *vbox = new QVBox;
+ QPushButton *child1 = new QPushButton(vbox);
+ QPushButton *child2 = new QPushButton(vbox);
+ \newcode
+ QWidget *vbox = new QWidget;
+ QPushButton *child1 = new QPushButton;
+ QPushButton *child2 = new QPushButton;
+
+ QVBoxLayout *layout = new QVBoxLayout;
+ layout->addWidget(child1);
+ layout->addWidget(child2);
+ vbox->setLayout(layout);
+ \endcode
+
+ Note that child widgets are not automatically placed into the widget's
+ layout; you will need to manually add each widget to the QVBoxLayout.
+
+ \section1 QVGroupBox
+
+ The \c QVGroupBox class has been renamed Q3VGroupBox and moved to
+ the Qt3Support library.
+ Qt 4 does not provide a specific replacement class for \c QVGroupBox
+ since QGroupBox is designed to be a generic container widget. As a
+ result, you need to supply your own layout for any child widgets.
+
+ See \l{#QGroupBox} for more information about porting code that uses
+ group boxes.
+
+ \section1 QWhatsThis
+
+ The QWhatsThis class has been redesigned in Qt 4. The old \c
+ QWhatsThis class is available as Q3WhatsThis in Qt3Support.
+
+ \section1 QWidget
+
+ Widget background painting has been greatly improved, supporting
+ flicker-free updates and making it possible to have
+ semi-transparent widgets. This renders the following background
+ handling functions obsolete:
+
+ \list
+ \o QWidget::repaint(bool noErase) - the \c noErase boolean parameter is gone
+ \o QWidget::setBackgroundMode(BackgroundMode m)
+ \o QWidget::backgroundBrush() const
+ \o QWidget::setBackgroundPixmap(const QPixmap &pm)
+ \o QWidget::backgroundPixmap() const
+ \o QWidget::setBackgroundColor(const QColor &c)
+ \o QWidget::backgroundColor() const
+ \o QWidget::foregroundColor() const
+ \o QWidget::eraseColor() const
+ \o QWidget::setEraseColor(const QColor &c)
+ \o QWidget::erasePixmap() const
+ \o QWidget::setErasePixmap(const QPixmap &p)
+ \o QWidget::paletteForegroundColor()
+ \o QWidget::setPaletteForegroundColor(const QColor &c)
+ \o QWidget::paletteBackgroundColor()
+ \o QWidget::setPaletteBackgroundColor(const QColor &c)
+ \o QWidget::paletteBackgroundPixmap() const
+ \o QWidget::setPaletteBackgroundPixmap(const QPixmap &p)
+ \o QWidget::erase()
+ \o QWidget::erase(const QRect &r)
+ \o QWidget::setBackgroundOrigin( BackgroundOrigin )
+ \o QWidget::BackgroundOrigin backgroundOrigin() const
+ \o QWidget::backgroundOffset()
+ \endlist
+
+ Sample code on how to do obtain similar behavior from Qt 4, previously
+ handled by some of the above functions can be found in the
+ \l{http://qt.nokia.com/doc/qwidget-qt3.html}{Qt 3 Support Members for QWidget}
+ page.
+
+ A widget now receives change events in its QWidget::changeEvent()
+ handler. This makes the following virtual change handlers obsolete:
+
+ \list
+ \o QWidget::styleChange - use QEvent::StyleChange
+ \o QWidget::enabledChange - use QEvent::EnabledChange
+ \o QWidget::paletteChange - use QEvent::PaletteChange
+ \o QWidget::fontChange - use QEvent::FontChange
+ \o QWidget::windowActivationChange - use QEvent::ActivationChange
+ \o QWidget::languageChange - use QEvent::LanguageChange
+ \endlist
+
+ The following functions were slots, but are no more:
+ \list
+ \o QWidget::clearFocus()
+ \o QWidget::setMouseTracking()
+ \o QWidget::stackUnder(QWidget*)
+ \o QWidget::move(int x, int y)
+ \o QWidget::move(const QPoint &)
+ \o QWidget::resize(int w, int h)
+ \o QWidget::resize(const QSize &)
+ \o QWidget::setGeometry(int x, int y, int w, int h)
+ \o QWidget::setGeometry(const QRect &)
+ \o QWidget::adjustSize()
+ \o QWidget::update(int x, int y, int w, int h)
+ \o QWidget::update(const QRect&)
+ \o QWidget::repaint(bool erase)
+ \o QWidget::repaint(int x, int y, int w, int h, bool erase)
+ \o QWidget::repaint(const QRect &, bool erase)
+ \o QWidget::repaint(const QRegion &, bool erase)
+ \o QWidget::setCaption(const QString &)
+ \o QWidget::setIcon(const QPixmap &)
+ \o QWidget::setIconText(const QString &)
+ \endlist
+
+ The following functions were incorrectly marked as virtual:
+
+ \list
+ \o QWidget::close(bool alsoDelete)
+ \o QWidget::create(WId, bool, bool)
+ \o QWidget::destroy(bool)
+ \o QWidget::move(int x, int y)
+ \o QWidget::reparent(QWidget *parent, WFlags, const QPoint &, bool)
+ \o QWidget::resize(int w, int h)
+ \o QWidget::setAcceptDrops(bool on)
+ \o QWidget::setActiveWindow()
+ \o QWidget::setAutoMask(bool)
+ \o QWidget::setBackgroundColor(const QColor &)
+ \o QWidget::setBackgroundMode(BackgroundMode)
+ \o QWidget::setBackgroundOrigin(BackgroundOrigin)
+ \o QWidget::setBackgroundPixmap(const QPixmap &)
+ \o QWidget::setCaption(const QString &)
+ \o QWidget::setCursor(const QCursor &)
+ \o QWidget::setEnabled(bool)
+ \o QWidget::setEraseColor(const QColor &)
+ \o QWidget::setErasePixmap(const QPixmap &)
+ \o QWidget::setFocus()
+ \o QWidget::setFocusPolicy(FocusPolicy)
+ \o QWidget::setFocusProxy(QWidget *)
+ \o QWidget::setFont(const QFont &)
+ \o QWidget::setGeometry(const QRect &)
+ \o QWidget::setGeometry(int x, int y, int w, int h)
+ \o QWidget::setIcon(const QPixmap &)
+ \o QWidget::setIconText(const QString &)
+ \o QWidget::setKeyCompression(bool)
+ \o QWidget::setMask(const QBitmap &)
+ \o QWidget::setMask(const QRegion &)
+ \o QWidget::setMaximumSize(int maxw, int maxh)
+ \o QWidget::setMicroFocusHint(int x, int y, int w, int h, bool, QFont *f)
+ \o QWidget::setMinimumSize(int minw, int minh)
+ \o QWidget::setMouseTracking(bool enable)
+ \o QWidget::setPalette(const QPalette &)
+ \o QWidget::setPaletteBackgroundColor(const QColor &)
+ \o QWidget::setPaletteBackgroundPixmap(const QPixmap &)
+ \o QWidget::setSizeIncrement(int w, int h)
+ \o QWidget::setSizePolicy(QSizePolicy)
+ \o QWidget::setUpdatesEnabled(bool enable)
+ \o QWidget::setWState(uint)
+ \o QWidget::show()
+ \o QWidget::showFullScreen()
+ \o QWidget::showMaximized()
+ \o QWidget::showMinimized()
+ \o QWidget::showNormal()
+ \o QWidget::sizePolicy()
+ \o QWidget::unsetCursor()
+ \endlist
+
+ The internal clearWState() function was removed. Use
+ QWidget::setAttribute() instead.
+
+ setWFlags() was renamed QWidget::setWindowFlags().
+
+ clearWFlags() has no direct replacement. You can use
+ QWidget::setAttribute() instead. For example,
+ \c{setAttribute(..., false)} to clear an attribute. More information
+ is available \l{http://qt.nokia.com/doc/qwidget.html#setAttribute}{here}.
+
+ testWFlags() was renamed to \l{QWidget::testAttribute()}{testAttribute()}.
+
+ See \l{#properties}{Properties} for a list of QWidget properties
+ in Qt 3 that have changed in Qt 4.
+
+ \section1 QWidgetFactory
+
+ The \c QWidgetFactory class has been replaced by QFormBuilder in Qt 4.
+
+ \section1 QWidgetIntDict
+
+ The QWidgetIntDict class was a synonym for QIntDict<QWidget>. It
+ is no longer available in Qt 4. If you link against Qt3Support,
+ you can use Q3IntDict<QWidget> instead; otherwise, see the
+ \l{#qdict.section}{section on QDict<T>}.
+
+ \target qwidgetlist.section
+ \section1 QWidgetList
+
+ In Qt 3, the QWidgetList class was a typedef for
+ QPtrList<QWidget>. In Qt 4, it is a typedef for QList<QWidget *>.
+ See the \l{#qptrlist.section}{section on QPtrList<T>}.
+
+ \section1 QWidgetPlugin
+
+ The QWidgetPlugin class is no longer available in Qt 4. To create
+ custom widget plugins, subclass QDesignerCustomWidgetInterface to
+ provide information about the custom widget, and build a plugin in
+ the way described in the \l{designer/customwidgetplugin}{Custom
+ Widget Plugin} example.
+
+ \section1 QWidgetStack
+
+ The QWidgetStack class is no longer part of the Qt public API. It
+ has been renamed Q3WidgetStack and moved to Qt3Support. In Qt 4
+ applications, you can use QStackedWidget instead to obtain the
+ same results.
+
+ \section1 QWizard
+
+ The \c QWizard class was reintroduced in Qt 4.3. See the
+ \l{Trivial Wizard Example}, \l{License Wizard Example} and
+ \l{Class Wizard Example} for more details.
+
+ \section1 QWorkspace
+
+ The \c QWorkspace in Qt 4 class requires explicit adding of MDI
+ windows with QWorkspace::addWindow().
+*/
+
+/*!
+ \page porting4-virtual-functions.html
+ \title Porting to Qt 4 - Virtual Functions
+ \contentspage {Porting Guides}{Contents}
+ \previouspage Porting to Qt 4
+ \nextpage Porting to Qt 4 - Drag and Drop
+ \ingroup porting
+ \brief An overview of changes to virtual functions in Qt 4.
+
+ \section1 Virtual Functions
+
+ Virtual functions that changed their signature in Qt 4:
+
+ \table
+ \header \o Qt 3 function signature \o Qt 4 function signature
+ \input porting/porting4-modifiedvirtual.qdocinc
+ \endtable
+
+ Virtual functions that are not virtual in Qt 4:
+
+ \table
+ \header \o Qt 3 function \o Comment
+ \input porting/porting4-removedvirtual.qdocinc
+ \endtable
+*/
diff --git a/doc/src/porting/qt3to4.qdoc b/doc/src/porting/qt3to4.qdoc
new file mode 100644
index 000000000..a915e6bbb
--- /dev/null
+++ b/doc/src/porting/qt3to4.qdoc
@@ -0,0 +1,179 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt3to4.html
+ \title qt3to4 - The Qt 3 to 4 Porting Tool
+
+ \ingroup porting
+ \keyword qt3to4
+
+ The \c qt3to4 tool provides help when moving a project from Qt 3
+ to Qt 4. It is designed to automate the most tedious part of the
+ porting effort.
+
+ See \l{Porting to Qt 4} and \l{Porting UI Files to Qt 4} for
+ more information about porting Qt 3 applications to Qt 4.
+
+ \section1 Usage
+
+ \c qt3to4 can be run either on individual C++ source or header
+ files, or on an entire project specified by a \c qmake \c .pro
+ file:
+
+ \snippet doc/src/snippets/code/doc_src_qt3to4.qdoc 0
+
+ In project mode, \c qt3to4 reads the \c .pro file and converts
+ all files specified in it. The tool modifies the files in place.
+ You might want to make a copy of your project before you run the
+ tool.
+
+ \section1 Porting Rules
+
+ The Qt porting tool loads its porting rules from an XML file
+ called \c q3porting.xml located in Qt's \c tools/porting/src directory.
+ By editing this file, you can add your own rules or remove some
+ rules.
+
+ The standard \c q3porting.xml file specifies the following
+ conversions:
+
+ \list
+ \o Rename classes that are now part of the Qt 3 support
+ library (e.g., replace \c QFileDialog with \c{Q3FileDialog}).
+ \o Prefix or rename enum values that have been moved or
+ renamed (e.g., replace \c QButton::On with \c{QCheckBox::On}) or
+ members of the Qt namespace (e.g., replace \c QWidget::red with
+ \c{Qt::red}).
+ \o Add \c #include directives that might be needed in Qt 4.
+ \endlist
+
+ \section2 Location of the qt3porting.xml File
+
+ You can now specify the location of the \c qt3porting.xml file with the
+ \c{-f} command line option. This is useful if you want to use a modified
+ file with your own rules.
+
+ If you you don't want to maintain a modified \c qt3porting.xml it is
+ possible to create a "patch" file that includes the original file and adds
+ or disables rules. The syntax for this file looks like this:
+
+ \snippet doc/src/snippets/code/doc_src_qt3to4.qdoc 1
+
+ \section1 Logging
+
+ The porting tool logs all changes to a file called \c
+ portinglog.txt in the current directory. This file lists all
+ changes made to the source files.
+
+ \section1 Advanced Usage
+
+ When porting, \c qt3to4 parses the source files and ports the
+ contents according to the C++ language rules. This C++ parsing
+ step can be disabled with the \c -disableCppParsing option.
+
+ If C++ parsing is enabled, \c qt3to4 must be able to locate the
+ headers included from the source files. Necessary headers include
+ the public Qt headers and any headers that declares names that
+ may conflict with names in the public Qt headers. The standard
+ C++ headers and system headers are usually not needed.
+
+ You can tell \c qt3to4 where to look for headers by using the
+ \c{-I} command-line option. Qt 3.3 header information is built
+ in, so it is normaly not necessary to specify the location of the
+ Qt headers. If you are porting from a different version of Qt 3,
+ you may want to disable the built-in headers with
+ \c{-disableBuiltInQt3Headers}, and then add the path to the
+ actual headers with the \c{-I} option.
+
+ When porting a project, \c qt3to4 will read the \c INCLUDEPATH
+ and \c DEPENDPATH variables from the \c .pro file and add the
+ paths specified here to the list of include search directories.
+
+ To see which headers that are not found, use the \c{-missingFileWarnings}
+ option.
+
+ \section1 Limitations
+
+ In some cases, you might get compiler errors because of identifiers
+ in the global namespace (e.g., \c CTRL). Adding
+
+ \snippet doc/src/snippets/code/doc_src_qt3to4.qdoc 2
+
+ at the beginning of the source file that contains
+ the indentifier solves the problem.
+
+ \section1 Legal Notices
+
+ Some source code in \c qt3to4 is licensed under specific highly
+ permissive licenses from the original authors. Nokia gratefully
+ acknowledges these contributions to \c qt3to4 and all uses of
+ \c qt3to4 should also acknowledge these contributions and quote the
+ following license statements in an appendix to the documentation.
+
+ \list
+ \o \l{Contributions to the Following qt3to4 Files: treewalker.h,
+ treedump.cpp, treedump.h, treewalker.cpp}
+ \endlist
+*/
+
+/*!
+ \page qt3to4-treewalker.html
+ \title Contributions to the Following qt3to4 Files: treewalker.h, treedump.cpp, treedump.h, treewalker.cpp
+ \ingroup licensing
+ \brief License information for contributions to the qt3to4 source code.
+
+ \legalese
+ Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). \BR
+ Copyright (C) 2005 Roberto Raggi
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, modify, market, reproduce,
+ grant sublicenses and distribute subject to the following
+ conditions: The above copyright notice and this permission notice
+ shall be included in all copies or substantial portions of the
+ Software. These files are provided AS IS with NO WARRANTY OF ANY
+ KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTIBILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE.
+ \endlegalese
+*/
diff --git a/doc/src/porting/qt4-accessibility.qdoc b/doc/src/porting/qt4-accessibility.qdoc
new file mode 100644
index 000000000..9f8a9442c
--- /dev/null
+++ b/doc/src/porting/qt4-accessibility.qdoc
@@ -0,0 +1,162 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt4-accessibility.html
+ \title Cross-Platform Accessibility Support in Qt 4
+
+ \contentspage {What's New in Qt 4}{Home}
+ \previouspage The New Qt Designer
+ \nextpage The Qt 4 Database GUI Layer
+
+ Qt 4 allows developers to write cross-platform applications that
+ are usable by visually impaired users as well as by users with
+ other disabilities. Qt accessibility will make applications
+ accessible to more users and opens the governmental market, where
+ accessibility is often a requirement.
+
+ \section1 General Overview
+
+ The accessibility classes have been extended in
+ various ways since Qt 3. We added new functions and new enum
+ values, and revised the API to make it more consistent with the
+ rest of Qt. We also added two properties to QWidget,
+ \l{QWidget::accessibleName}{accessibleName} and
+ \l{QWidget::accessibleDescription}{accessibleDescription}, that
+ can be set in \e{Qt Designer} to provide basic help texts without
+ having to write any code.
+
+ Qt's accessibility architecture is as follows. Qt offers one
+ generic interface, QAccessibleInterface, that can be used to
+ wrap all widgets and objects (e.g., QPushButton). This single
+ interface provides all the metadata necessary for the assistive
+ technologies. Qt provides implementations of this interface for
+ its built-in widgets as plugins.
+
+ A more detailed overview of the accessibility support in Qt can
+ be found on the \l Accessibility page.
+
+ \section1 Enabling Accessibility Support
+
+ By default, Qt applications are run with accessibility support
+ enabled on Windows and Mac OS X. On Unix/X11 platforms, applications
+ must be launched in an environment with the \c QT_ACCESSIBILITY
+ variable set to 1. For example, this is set in the following way with
+ the bash shell:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-accessibility.qdoc environment
+
+ Accessibility features are built into Qt by default when the libraries
+ are configured and built.
+
+ \section1 Creating New Accessible Interfaces
+
+ When you develop custom widgets, you can create custom subclasses
+ of QAccessibleInterface and distribute them as plugins (using
+ QAccessiblePlugin) or compile them into the application.
+ Likewise, Qt's predefined accessibility support can be built as
+ plugin (the default) or directly into the Qt library. The main
+ advantage of using plugins is that the accessibility classes are
+ only loaded into memory if they are actually used; they don't
+ slow down the common case where no assistive technology is being
+ used.
+
+ In addition to QAccessibleInterface, Qt includes two convenience
+ classes, QAccessibleObject and QAccessibleWidget, that
+ provide the lowest common denominator of metadata (e.g., widget
+ geometry, window title, basic help text). You can use them as
+ base classes when wrapping your custom QObject or QWidget
+ subclasses.
+
+ Another new feature in Qt 4 is that Qt can now support other
+ backends in addition to the predefined ones. This is done by
+ subclassing QAccessibleBridge.
+
+ \omit
+ \section1 Software Layering
+
+ Qt Application
+ | links to
+ Qt Accessibility Module
+ | Plugin (in-process)
+ Qt ATK Bridge
+ | links to
+ ATK
+ | Plugin (in-process)
+ at-spi
+ | CORBA
+ assistive technologies
+
+ Windows:
+
+ Qt Application
+ | links to
+ Qt Accessibility Module
+ | COM (?)
+ MSAA
+ | ?
+ assistive technologies
+
+ Mac:
+
+ ?
+ \endomit
+
+ \section1 Example Code
+
+ The first example illustrates how to provide accessibility
+ information for a custom widget. We can use QAccessibleWidget as
+ a base class and reimplement various functions:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-accessibility.qdoc 0
+
+ Here's how we would implement the
+ \l{QAccessibleInterface::doAction()}{doAction()} function to call
+ a function named click() on the wrapped MyWidget object when the
+ user invokes the object's default action or "presses" it.
+
+ \snippet doc/src/snippets/code/doc_src_qt4-accessibility.qdoc 1
+
+ To export the widget interface as a plugin, we must subclass
+ QAccessibleFactory:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-accessibility.qdoc 2
+*/
diff --git a/doc/src/porting/qt4-arthur.qdoc b/doc/src/porting/qt4-arthur.qdoc
new file mode 100644
index 000000000..386888fff
--- /dev/null
+++ b/doc/src/porting/qt4-arthur.qdoc
@@ -0,0 +1,336 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt4-arthur.html
+ \title The Arthur Paint System
+
+ \contentspage {What's New in Qt 4}{Home}
+ \previouspage The Interview Framework
+ \nextpage The Scribe Classes
+
+ This document describes Qt 4's painting system, providing a
+ comparison between the approaches used by Qt when rendering
+ graphics in Qt 3 and Qt 4.
+
+ \tableofcontents
+
+ \section1 Architecture
+
+ The Qt 4 Paint System is primarily based on the classes
+ QPainter, QPaintDevice, and QPaintEngine. QPainter is the
+ class used to perform drawing operations, such as drawLine()
+ and drawRect(). QPaintDevice represents a device that can be
+ painted on using a QPainter; both QWidget and QPixmap are
+ QPaintDevices. QPaintEngine provides the interface that the
+ painter uses to draw onto different types of devices.
+
+ \section2 A Look Back at Qt 3
+
+ In Qt 3, QPainter could be used to draw on widgets and pixmaps.
+ (It could also be used to draw to printers on Windows and Mac OS
+ X.) When other paint devices needed to be supported, such as
+ QPrinter on X11, this was done by deriving from QPaintDevice and
+ reimplementing the virtual function QPaintDevice::cmd(). A
+ reimplemented paint device was treated as an external device.
+
+ QPainter was capable of recognizing external devices and could
+ serialize each paint operation to the reimplemented cmd()
+ function. This allowed reimplementation of arbitrary devices, but
+ the approach has some disadvantages which we have addressed in
+ Qt 4. One of these is that an external device could not reuse any
+ functionality implemented in QPainter since QPainter was tied to
+ widget/pixmap painting on that platform. Supporting multiple
+ device backends, such as OpenGL, was therefore inconvenient and
+ not very efficient.
+
+ This has led us to devise a more convenient and intuitive API for
+ Qt 4.
+
+ \section2 How Painting is Done in Qt 4
+
+ In Qt 4 we have introduced the QPaintEngine abstract class.
+ Implementations of this class provide the concrete functionality
+ needed to draw to specific device types. The QPaintEngine class
+ is only used internally by QPainter and QPaintDevice, and it is
+ hidden from application programmers unless they reimplement their own
+ device types for their own QPaintEngine subclasses. Qt currently
+ provides paint engines for the following platforms and APIs:
+
+ \list
+ \o A pixel-based engine for the Windows platform that is
+ also used to draw onto QImages on all platforms
+ \o OpenGL on all platforms
+ \o PostScript on Linux, Unix, and Mac OS X
+ \o QuickDraw and CoreGraphics on Mac OS X
+ \o X11 and the X Render Extension on Linux and Unix systems
+ \omit
+ \o QVFb, VNC, and LinuxFb for Qt for Embedded Linux
+ \endomit
+ \endlist
+
+ To implement support for a new backend, you must derive from
+ QPaintEngine and reimplement its virtual functions. You also need
+ to derive from QPaintDevice and reimplement the virtual function
+ QPaintDevice::paintEngine() to tell QPainter which paint engine
+ should be used to draw on this particular device.
+
+ The main benefit of this approach is that all painting follows the
+ same painting pipeline. This means that adding support for new features
+ and providing default implementations for unsupported ones has
+ become much simpler.
+
+ \section1 New Features in the Qt 4 Paint System
+
+ \section2 Gradient Brushes
+
+ With Qt 4 it is possible to fill shapes using gradient
+ brushes. A gradient in this case is used to describe the transition
+ from one color at a given point to different color at another point. A
+ gradient can span from one color to another or over a
+ number of colors by specifying multiple colors at positions in the
+ gradient area. Qt 4 supports linear, radial, and conical gradients.
+
+ Linear gradients are specified using two control points.
+ Setting a linear gradient brush is done by creating a QLinearGradient
+ object and setting it as a brush.
+
+ \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 0
+
+ The code shown above produces a pattern as show in the following
+ pixmap:
+
+ \img diagonalGradient.png
+
+ Radial gradients are specified using a center, a radius, and a
+ focal point. Setting a radial brush is done by creating a QRadialGradient
+ object and setting it as a brush.
+
+ \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 1
+
+ The code shown above produces a pattern as shown in the following
+ pixmap:
+
+ \img radialGradient.png
+
+ Conical gradients are specified using a center and a start
+ angle. Setting a conical brush is done by creating a
+ QConicalGradient object and setting it as a brush.
+
+ \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 2
+
+ The code shown above produces a pattern as shown in the following
+ pixmap:
+
+ \img conicalGradient.png
+
+ \section2 Alpha-Blended Drawing
+
+ With Qt 4 we support alpha-blended outlining and filling. The
+ alpha channel of a color is defined through QColor. The alpha
+ channel specifies the transparency effect, 0 represents a fully
+ transparent color, while 255 represents a fully opaque color. For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 3
+
+ The code shown above produces the following output:
+
+ \img alphafill.png
+
+ Alpha-blended drawing is supported on Windows, Mac OS X, and on
+ X11 systems that have the X Render extension installed.
+
+
+ \section2 QPainter and QGLWidget
+
+ It is now possible to open a QPainter on a QGLWidget as if it
+ were a normal QWidget. One huge benefit from this is that we
+ utilize the high performance of OpenGL for most drawing
+ operations, such as transformations and pixmap drawing.
+
+
+ \section2 Anti-Aliased Edges
+
+ On platforms where this is supported by the native drawing API, we
+ provide the option of turning on anti-aliased edges when drawing
+ graphics primitives.
+
+ \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 4
+
+ This produces the following output:
+
+ \img antialiased.png
+
+ Anti-aliasing is supported when drawing to a QImage and on all
+ systems, except on X11 when XRender is not present.
+
+
+ \section2 Extensive Use of Native Graphics Operations
+
+ Where this makes sense, Qt uses native graphics
+ operations. The benefit we gain from this is that these operations
+ can potentially be performed in hardware, giving significant
+ speed improvements over many pure-software implementations.
+
+ Among these are native transformations (Mac OS X and OpenGL),
+ making painting with a world matrix much faster. Some pixmap
+ operations have also been moved closer to the underlying
+ hardware implementations.
+
+
+ \section2 Painter Paths
+
+ A painter path is an object composed of a number of graphical
+ building blocks, such as rectangles, ellipses, lines, and curves.
+ A painter path can be used for filling, outlining, and for clipping.
+ The main advantage of painter paths over normal drawing operations
+ is that it is possible to build up non-linear shapes which can be
+ drawn later in one go.
+
+ Building blocks can be joined in closed subpaths, such as a
+ rectangle or an ellipse, or they can exist independently as unclosed
+ subpaths, although an unclosed path will not be filled.
+
+ Below is a code example on how a path can be used. The
+ painter in this case has a pen width of 3 and a light blue brush. We
+ first add a rectangle, which becomes a closed subpath. We then add
+ two bezier curves, and finally draw the entire path.
+
+ \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 5
+
+ The code above produces the following output:
+
+ \img pathexample.png
+
+
+ \section2 Widget Double-Buffering
+
+ In Qt 4, all widgets are double-buffered by default.
+
+ In previous versions of Qt double-buffering was achieved by
+ painting to an off-screen pixmap then copying the pixmap to the
+ screen. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 6
+
+ Since the double-buffering is handled by QWidget internally this
+ now becomes:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 7
+
+ Double-buffering is turned on by default, but can be turned off for
+ individual widgets by setting the widget attribute
+ Qt::WA_PaintOnScreen.
+
+ \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 8
+
+ \section2 Pen and Brush Transformation
+
+ In Qt 3, pens and brushes weren't affected by the painter's
+ transformation matrix. For example, if you drew a rectangle with a
+ pen width of 1 using a scaled painter, the resulting line width
+ would still be 1. This made it difficult to implement features
+ such as zooming and high-resolution printing.
+
+ In Qt 4, pens and brushes honor the painter's transformation
+ matrix.
+
+ Note that this feature is still in development and not yet
+ supported on all platforms.
+
+ \section2 Custom Filled Pens
+
+ In Qt 4, it is possible to specify how an outline should be
+ filled. It can be a solid color or a QBrush, which makes it
+ possible to specify both texture and gradient fills for both
+ text and outlines.
+
+ \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 9
+
+ The code above produces the following output:
+
+ \img gradientText.png
+
+ \section2 QImage as a Paint Device
+
+ A great improvement of Qt 4 over previous versions it that it now
+ provides a pixel-based raster paint engine which allows users to
+ open a painter on a QImage. The QImage paint engine supports the
+ full feature set of QPainter (paths, antialiasing, alphablending,
+ etc.) and can be used on all platforms.
+
+ One advantage of this is that it is possible to guarantee the
+ pixel exactness of any drawing operation in a platform-independent
+ way.
+
+ Painting on an image is as simple as drawing on any other paint device.
+
+ \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 10
+
+ \section2 SVG Rendering Support
+
+ \l{Scalable Vector Graphics} (SVG) is an language for describing both static
+ and animated two-dimensional vector graphics. Qt includes support for the
+ \l{SVG 1.2 Tiny Static Features}{static features} of \l{SVG 1.2 Tiny}, taking
+ advantage of the improved paint system in Qt 4. SVG drawings can be rendered
+ onto any QPaintDevice subclass, such as QWidget, QImage, and QGLWidget, to
+ take advantage of specific advantages of each device. This approach gives
+ developers the flexibility to experiment, in order to find the best solution
+ for each application.
+
+ \image svg-image.png
+
+ Since SVG is an XML-based format, the QtXml module is required to read SVG
+ files. For this reason, classes for SVG handling are provided separately in
+ the QtSvg module.
+
+ Displaying an SVG drawing in an application is as simple as displaying a
+ bitmap image. QSvgWidget is a display widget that can be placed in an
+ appropriate place in a user interface, and new content can be loaded as
+ required. For example, a predetermined file can be loaded and displayed in
+ a widget with little effort:
+
+ \snippet doc/src/snippets/qsvgwidget/main.cpp 0
+
+ For applications with more specialized requirements, the QSvgRenderer class
+ provides more control over the way SVG drawings are rendered and animated.
+*/
diff --git a/doc/src/porting/qt4-designer.qdoc b/doc/src/porting/qt4-designer.qdoc
new file mode 100644
index 000000000..01a18976c
--- /dev/null
+++ b/doc/src/porting/qt4-designer.qdoc
@@ -0,0 +1,298 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt4-designer.html
+
+ \title The New Qt Designer
+
+ \contentspage {What's New in Qt 4}{Home}
+ \previouspage The Qt 4 Main Window Classes
+ \nextpage Cross-Platform Accessibility Support in Qt 4
+
+ \QD has been completely re-written based on our experience with
+ the previous versions of the product for Qt 3. One of the main new
+ ideas behind this new version is to release the application as a
+ collection of interchangeable components that include the property
+ editor, the widget box, and other useful tools for creating
+ graphical user interfaces with Qt. These components can either be
+ used together in the \QD application, or independently integrated
+ into other systems. As a result, certain features such as the
+ project editor and code editor have been removed from the version
+ included with this release.
+
+ The current version of \QD is near feature complete and can be used for
+ many tasks. However, it is still under continuous development. This
+ document will explain what is already in place.
+
+ See also the \l{Qt Designer Manual}.
+
+ \tableofcontents
+
+ \section1 The Current State of Qt Designer
+
+ When used as a standalone application, \QD includes a number of
+ components that work together to provide a flexible GUI design
+ tool. Widgets and dialog windows can be composed using a
+ form-based interface that fully supports drag and drop, clipboard
+ operations, and an undo/redo stack.
+
+ This version of \QD introduces a number of editing modes to make
+ different types of editing more natural. Each editing mode
+ displays the form in an appropriate way for that mode, and
+ provides a specialized user interface for manipulating its
+ contents. The current editing modes are Widget Editing, Signals
+ and Slots Editing, Buddy Editing, and Tab Order Editing.
+
+ \section2 User Interface Features
+
+ \table
+ \row \i \inlineimage designer-main-window.png
+ \i \bold{Widget Box}
+
+ The Widget Box displays a categorized list of widgets and other
+ objects that can be placed on a form using drag and drop.
+
+ When \QD is in multi-window mode, the window containing the Widget
+ Box also holds the main menu and the tool bar. When in workbench
+ mode, the Widget Box becomes an independent window within the \QD
+ workspace.
+
+ The contents of the Widget Box are defined in an XML file that
+ holds a collection of .ui documents for standard Qt widgets. This
+ file can be extended, making it possible to add custom widgets to
+ the Widget Box.
+ \endtable
+
+ \table
+ \row \i \bold{Property Editor}
+
+ The Property Editor allows designers to edit most properties of
+ widgets and layout objects. The property names and values are
+ presented in an editable tree view that shows the properties of
+ the currently selected object.
+
+ Certain resources, such as icons, can be configured in the
+ Property Editor. Resources can be taken from any currently
+ installed resource files, making it easier to design
+ self-contained components.
+
+ \i \inlineimage designer-property-editor.png
+ \endtable
+
+ \section2 Editing Features
+
+ \QD allows form designers to work on different aspects of their forms by
+ switching between specialized editing modes. Tools for editing widget
+ properties, resources, and actions provide context-sensitive information
+ about the forms being edited.
+
+ \table
+ \row \i \inlineimage designer-choosing-form.png
+ \i \bold{Form Templates}
+
+ Form templates provide ready-to-use forms for various types of widgets,
+ such as QWidget, QDialog, and QMainWindow. Custom templates based on
+ these widgets can also be created.
+
+ Templates can contain child widgets and layouts. Designers can
+ save time by creating templates for the most common user interface
+ features for repeated use.
+ \endtable
+
+ \table
+ \row
+ \i \bold{Widget Editing Mode}
+
+ The new \QD allows widgets to be dropped into existing layouts on
+ the form. Previously, it was necessary to break layouts in order
+ to add new widgets to them.
+
+ \QD now supports more direct manipulation of widgets:
+ You can clone a widget by dragging it with the \key CTRL key held down, and
+ it is even possible to drag widgets between forms.
+
+ In-place widget editors provide specialized editing facilities for
+ the most-used widget properties.
+
+ \i \inlineimage designer-editing-mode.png
+ \endtable
+
+ \table
+ \row
+ \i \inlineimage designer-connection-mode.png
+ \i \bold{Signals and Slots Editing Mode}
+
+ \QD now employs a "wired" approach when representing and editing
+ connections between objects on a form. The Signal and Slots
+ Editing mode displays all the signal and slot connections on your
+ form as arrows. These arrows can be manipulated visually, and
+ provide the user with an overview of the form's connection logic.
+
+ Connections can be made between objects on a form and the form itself.
+ This is particularly useful when designing dialogs.
+ \endtable
+
+ \table
+ \row
+ \i \bold{Buddy Editing Mode}
+
+ Widgets that cannot accept keyboard input are often given buddy
+ widgets that will take the keyboard focus on their behalf.
+
+ In Buddy Editing mode, \QD provides a similar approach to that
+ used in the Signals and Slots Editing mode to show the
+ relationships between widgets and their buddies.
+
+ \i \inlineimage designer-buddy-mode.png
+ \endtable
+
+ \table
+ \row
+ \i \inlineimage designer-tab-order-mode.png
+ \i \bold{Tab Order Mode}
+
+ In this mode, users can specify the order in which input widgets accept
+ the keyboard focus.
+
+ The way that the tab order is defined follows the approach taken
+ in Qt 3's version of \QD; The default tab order is based on the
+ order in which widgets are constructed.
+
+ \endtable
+
+ \table
+ \row
+ \i \bold{The Resource Editor}
+
+ The new \QD fully supports The Qt Resource System, and provide the
+ Resource Editor to help designers and developers manage the
+ resources that are needed by their applications.
+
+ Using the Resource Editor, resources can be associated with a
+ given form, and also modified and extended throught the editor's
+ file browser style interface.
+
+ The Resource Editor uses files that are processed by various
+ components of the \l{The Qt Resource System}{Qt Resource System}
+ to ensure that all required resources are embedded in the
+ application.
+
+ \i \inlineimage designer-resources-editing.png
+ \endtable
+
+ \table
+ \row
+ \i \inlineimage designer-action-editor.png
+ \i \bold{The Action Editor}
+
+ With the release of Qt 4.1, \QD introduces the Action Editor
+ simplifying the management of actions when creating main window
+ applications.
+
+ When creating a main window, you can add a menu bar and toolbars
+ using \QD's context menu. Once you have the menu bar or a toolbar
+ in place, you can create and add actions using the Action Editor.
+
+ \endtable
+
+ \section2 Plugin Support
+
+ \table
+ \row
+ \i \inlineimage worldtimeclockplugin-example.png
+ \i \bold{Custom Widgets}
+
+ Plugins can be used to add new custom widgets, special editors, and
+ support for widgets from the Qt 3 support library.
+
+ Support for custom widget plugins allows user interface designers to
+ use application-specific widgets in their designs as early as possible
+ in the development process.
+
+ \QD handles custom widgets in the same way as standard Qt widgets,
+ and allows custom signals and slots to be connected to other objects
+ from within Signals and Slots Editing mode.
+ \endtable
+
+ \table
+ \row
+ \i \bold{The QtDesigner Module}
+
+ The new modular \QD is designed to be integrated into other environments
+ and extended with custom components.
+
+ The QtDesigner Module is a library that developers can use to
+ write extensions and plugins for \QD, and enables \QD components
+ to be embedded into Integrated Development Environments
+ (IDEs).
+
+ With the release of Qt 4.1 the QtDesigner Module is fully
+ documented. The release also provides several new examples using
+ the QtDesigner API to create task menu extensions and custom
+ multi-page widgets (i.e. container extensions).
+
+ \i \inlineimage designer-manual-taskmenuextension.png
+ \endtable
+
+ \section1 Run-Time Support for Forms
+
+ With the Qt 4.1 release, the new QtUiTools module is introduced to
+ provide classes handling forms created with \QD.
+
+ Currently the module only contains the QUiLoader class.
+
+ QUiLoader can be used by standalone applications to
+ dynamically create form-based user interfaces at run-time. This
+ library can be statically linked with applications and
+ redistributed under the same terms as Qt.
+
+ \table
+ \row
+ \i \inlineimage calculatorbuilder-example.png
+ \i \bold{Dynamic Form Creation}
+
+ The QtUiTools library lets developers dynamically construct user interfaces at
+ run-time using the same techniques as \QD. Since forms can contain custom
+ widget plugins, the loading mechanism can be customized to search for
+ third party or application-specific plugins.
+ \endtable
+*/
diff --git a/doc/src/porting/qt4-interview.qdoc b/doc/src/porting/qt4-interview.qdoc
new file mode 100644
index 000000000..fd3fb368d
--- /dev/null
+++ b/doc/src/porting/qt4-interview.qdoc
@@ -0,0 +1,293 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt4-interview.html
+ \title The Interview Framework
+
+ \contentspage {What's New in Qt 4}{Home}
+ \previouspage The Tulip Container Classes
+ \nextpage The Arthur Paint System
+
+ The Interview classes provide a model/view framework for Qt
+ applications based on the well known Model-View-Controller design
+ pattern. In this document, we will describe Qt's model/view
+ architecture, provide some examples, and show the improvements
+ offered over Qt 3's item view classes.
+
+ \tableofcontents
+
+ \section1 Overview of The Model/View Architecture
+
+ The model/view architecture is a variation of the Model-View-Controller
+ (MVC) design pattern, originating from Smalltalk, that is often used when
+ building user interfaces.
+
+ In the model/view architecture, the view and the controller objects are
+ combined. This still separates the way that data is stored from the way
+ that it is presented to the user, but provides a simpler framework based
+ on the same principles. This separation makes it possible to display the
+ same data in several different views, and to implement new types of views,
+ without changing the underlying data structures.
+
+ User input is handled by \e delegates. The advantage of this approach is
+ that it allows rendering and editing of individual items of data to be
+ customized to suit each data type in use.
+
+ \table
+ \row \i \inlineimage modelview-overview.png
+ \i \bold{The model/view architecture}
+
+ The model communicates with a source of data, providing an \e interface
+ for the other components in the architecture. The nature of the
+ communication depends on the type of data source, and the way the model
+ is implemented.
+
+ The view obtains \e{model indexes} from the model; these are references
+ to items of data. By supplying model indexes to the model, the view can
+ retrieve items of data from the data source.
+
+ In standard views, a \e delegate renders the items of data. When an item
+ is edited, the delegate communicates with the model directly using
+ model indexes.
+ \endtable
+
+ \section1 Model/View Classes
+
+ On a fundamental level, the Interview classes define the interfaces and
+ common functionality for models, views, and delegates. All implemented
+ components subclass QAbstractItemModel, QAbstractItemView, or
+ QAbstractItemDelegate. The use of a common API ensures a level of
+ interoperability between the components.
+
+ \image standard-views.png
+
+ Interview provides ready-to-use implementations of views for table,
+ tree, and list widgets: QTableView, QTreeView, and QListView.
+ These standard views are suitable for displaying the most common
+ types of data structures used in applications, and can be used with
+ the ready-made models supplied with Qt:
+
+ \list
+ \o QStandardItemModel is a minimal convenience model that developers
+ can use to manage items of data.
+ \o QFileSystemModel provides directory information for use with QListView
+ and QTreeView.
+ \o QStringListModel is a convenience model that can be used to hold
+ strings for views such as QListView and QComboBox.
+ \endlist
+
+ Two specialized abstract models are provided that can be subclassed
+ and extended (see the
+ \l{model-view-programming.html#related-examples}{Model/View Programming}
+ examples):
+
+ \list
+ \o QAbstractTableModel is a useful starting point for providing a custom
+ model that can be used with QTableView.
+ \o QAbstractListModel can be subclassed to produce a list-based model
+ for use with QListView.
+ \endlist
+
+ Operations on items, such as filtering and sorting, are handled by \e{proxy
+ models} that allow views to display processed data without having to
+ copy or modify data obtained from a source model. Interview provides
+ the QSortFilterProxyModel class to allow items of data from a source model
+ to be sorted and filtered before they are supplied to views.
+
+ Developers who are familiar with the conventional list, tree, and table
+ widgets may find QListWidget, QTreeWidget, and QTableWidget useful.
+ These present a simplified interface to the views that does not require a
+ knowledge of the underlying model/view architecture.
+
+ For details about how to use the model/view classes, see the
+ \l{Model/View Programming} document.
+
+ See also the \l{The Qt 4 Database GUI Layer}{Database GUI Layer} document
+ for information about Qt 4's database models.
+
+ \section1 Example Code
+
+ To illustrate how the Interview classes are used, we present two
+ examples that show different aspects of the model/view architecture.
+
+ \section2 Sharing a Model Between Views
+
+ In this example, we display the contents of a model using two
+ different views, and share the user's selection between
+ them. We will use the QFileSystemModel supplied with Qt because it
+ requires very little configuration, and provides existing data to
+ the views.
+
+ The main() function for this example demonstrates all the
+ principles involved in setting up a model and two views. We also
+ share the selection between the two views:
+
+ \snippet doc/src/snippets/shareddirmodel/main.cpp 1
+
+ In the above function, we construct a directory model to display
+ the contents of a default directory. The two views are constructed
+ and given the same model to work with. By default, each view will
+ maintain and display its own selection of items from the model,
+ so we explicitly create a new selection that is shared between the
+ tree view and the list view. As a result, changes to the selection
+ in either of these views will automatically cause the selection in
+ the other to change.
+
+ \image interview-shareddirmodel.png
+
+ The model/view architecture allows us to replace the QFileSystemModel in
+ this example with a completely different model, one that will perhaps
+ obtain data from a remote server, or from a database.
+
+ \section2 Creating a Custom Model
+
+ In this example, we display items of data obtained from a custom list
+ model using a standard view. The custom model is a subclass of
+ QAbstractListModel and provides implementations of a core set of
+ functions.
+
+ The complete declaration of our model is as follows:
+
+ \snippet doc/src/snippets/stringlistmodel/model.h 0
+ \snippet doc/src/snippets/stringlistmodel/model.h 1
+ \codeline
+ \snippet doc/src/snippets/stringlistmodel/model.h 5
+
+ The model takes a list of strings when constructed, and supplies these
+ to views as required. Since this is only a simple read-only model, we
+ only need to implement a few functions.
+
+ The underlying data structure used to hold the strings is a QStringList.
+ Since the model maps each item in the list to a row in the model, the
+ rowCount() function is quite simple:
+
+ \snippet doc/src/snippets/stringlistmodel/model.cpp 0
+
+ The data() function returns an item of data for each model index
+ supplied by a view:
+
+ \snippet doc/src/snippets/stringlistmodel/model.cpp 1
+
+ The data() function returns a QVariant containing the information
+ referred to by the model index. Items of data are returned to the view,
+ but only if a number of checks are satisfied; for example, if the view
+ specifies an invalid model index, the model indicates this by returning
+ an invalid QVariant.
+
+ Vertical and horizontal headers are supplied by the headerData()
+ function. In this model, the value returned for these items is the row
+ or column number, depending on the header:
+
+ \snippet doc/src/snippets/stringlistmodel/model.cpp 2
+
+ We only include an excerpt from the main() function for this short
+ example:
+
+ \snippet doc/src/snippets/stringlistmodel/main.cpp 1
+ \dots
+ \snippet doc/src/snippets/stringlistmodel/main.cpp 3
+
+ We create a string list to use with the model, and we supply it to the
+ model when it is constructed. The information in the string list is
+ made available to the view via the model.
+
+ \image stringlistmodel.png
+
+ This example shows that it can be easy to populate views with data
+ from a simple model. The standard models and views planned for
+ Qt 4 will make the process even easier, and the convenience widgets
+ supplied provide support for the classic item-based approach.
+
+ \section1 What's Changed Since Qt 3?
+
+ The table and item view classes in Qt 3 implemented widgets that
+ both stored data and presented it to the user. These classes were
+ designed to be easy-to-use and consistent, but were sometimes
+ difficult to customize and extend.
+
+ The equivalent classes in Qt 4 are designed to be extensible while
+ remaining easy-to-use; the introduction of the model/view
+ architecture ensures that they will be more consistent than their
+ predecessors. The view classes provided can be summarized in the
+ following way:
+
+ \list
+ \i QListView class provides a view widget that looks similar to
+ Qt 3's QListBox widget, but displays data provided by a model.
+ It can also be used to display icons in a similar way to Qt 3's
+ QIconView.
+ \i The QTableView class is a view widget that displays tabular data
+ like Qt 3's QTable widget, but uses data provided by a model.
+ \i The QTreeView class provides a view widget that behaves like
+ Qt 3's QListView widget, except that it displays data provided
+ by a model.
+ \endlist
+
+ Since the model takes responsibility for supplying items of data,
+ and the view takes care of their presentation to the user, we do
+ not require item classes to represent individual items.
+ Delegates handle the painting and editing of data obtained from
+ the model.
+
+ Qt continues to provide a number of classic item view widgets with
+ familiar item-based interfaces that are not based on compatibility
+ classes:
+
+ \list
+ \i The QListWidget class provides a widget to display a
+ list of items, as found in Qt 3's QListBox class.
+ \i The QTreeWidget class implements the equivalent of Qt 3's
+ QListView class.
+ \i The QTableWidget class provides comparable functionality to
+ Qt 3's QTable class.
+ \endlist
+
+ Each of the convenience classes have a corresponding item class:
+ QListWidgetItem, QTreeWidgetItem, and QTableWidgetItem are the Qt 4
+ equivalents of Qt 3's QListBoxItem, QListViewItem, and QTableItem
+ respectively.
+
+ The move towards a model/view architecture presents both challenges
+ and opportunities for developers. Although the approach may appear to
+ be rather powerful for simple applications, it encourages greater
+ reuse of components within applications.
+*/
diff --git a/doc/src/porting/qt4-mainwindow.qdoc b/doc/src/porting/qt4-mainwindow.qdoc
new file mode 100644
index 000000000..36ea18d7b
--- /dev/null
+++ b/doc/src/porting/qt4-mainwindow.qdoc
@@ -0,0 +1,250 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt4-mainwindow.html
+ \title The Qt 4 Main Window Classes
+
+ \contentspage {What's New in Qt 4}{Home}
+ \previouspage The Scribe Classes
+ \nextpage The New Qt Designer
+
+ Qt 4 introduces a new set of main window classes that supersede the
+ Qt 3 main window classes, providing a more efficient implementation
+ while remaining easy to use.
+
+ \tableofcontents
+
+ \section1 Overview of the Main Window Classes
+
+ The main window-related classes have been redesigned to satisfy a
+ number of requirements, addressing issues raised by our customers and
+ internal developers. The aim of this redesign is to provide a more
+ consistent and efficient framework for main window management.
+
+ \section1 The Main Window Classes
+
+ Qt 4 provides the following classes for managing main windows and
+ associated user interface components:
+
+ \list
+ \o QMainWindow remains the central class around which applications
+ can be built. The interface to this class has been simplified, and
+ much of the functionality previously included in this class is now
+ present in the companion QDockWidget and QToolBar classes.
+
+ \o QDockWidget provides a widget that can be used to create
+ detachable tool palettes or helper windows. Dock widgets keep track
+ of their own properties, and they can be moved, closed, and floated
+ as external windows.
+
+ \o QToolBar provides a generic toolbar widget that can hold a
+ number of different action-related widgets, such as buttons,
+ drop-down menus, comboboxes, and spin boxes. The emphasis on a
+ unified action model in Qt 4 means that toolbars cooperate well
+ with menus and keyboard shortcuts.
+ \endlist
+
+ \section1 Example Code
+
+ Using QMainWindow is straightforward. Generally, we subclass
+ QMainWindow and set up menus, toolbars, and dock widgets inside
+ the QMainWindow constructor.
+
+ To add a menu bar to the main window, we simply create the menus, and
+ add them to the main window's menu bar. Note that the
+ QMainWindow::menuBar() function will automatically create the menu bar
+ the first time it is called. You can also call
+ QMainWindow::setMenuBar() to use a custom menu bar in the main window.
+
+ \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 0
+ \dots
+ \snippet examples/mainwindows/menus/mainwindow.cpp 5
+ \dots
+
+ Once actions have been created, we can add them to the main window
+ components. To begin with, we add them to the pop-up menus:
+
+ \snippet examples/mainwindows/menus/mainwindow.cpp 10
+ \dots
+ \snippet examples/mainwindows/menus/mainwindow.cpp 11
+ \dots
+
+ The QToolBar and QMenu classes use Qt's action system to provide a
+ consistent API. In the above code, some existing actions were added to
+ the file menu with the QMenu::addAction() function. QToolBar also
+ provides this function, making it easy to reuse actions in different
+ parts of the main window. This avoids unnecessary duplication of work.
+
+ We create a toolbar as a child of the main window, and add the desired
+ actions to it:
+
+ \snippet examples/mainwindows/sdi/mainwindow.cpp 0
+ \dots
+ \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 1
+
+ In this example, the toolbar is restricted to the top and bottom
+ toolbar areas of the main window, and is initially placed in the
+ top tool bar area. We can see that the actions specified by \c
+ newAct and \c openAct will be displayed both on the toolbar and in
+ the file menu.
+
+ QDockWidget is used in a similar way to QToolBar. We create a
+ dock widget as a child of the main window, and add widgets as children
+ of the dock widget:
+
+ \snippet doc/src/snippets/dockwidgets/mainwindow.cpp 0
+
+ In this example, the dock widget can only be placed in the left and
+ right dock areas, and it is initially placed in the left dock area.
+
+ The QMainWindow API allows the programmer to customize which dock
+ widget areas occupy the four corners of the dock widget area. If
+ required, the default can be changed with the
+ QMainWindow::setCorner() function:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 2
+
+ The following diagram shows the configuration produced by the above code.
+ Note that the left and right dock widgets will occupy the top and bottom
+ corners of the main window in this layout.
+
+ \image mainwindow-docks-example.png
+
+ Once all of the main window components have been set up, the central widget
+ is created and installed by using code similar to the following:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 3
+
+ The central widget can be any subclass of QWidget.
+
+ \section1 What's Changed since Qt 3?
+
+ The main window classes in Qt 4 adds new functionality, mainly to
+ the dock widgets and toolbars. We have also made changes to the
+ design of the framework.
+
+ Although the QMainWindow class in Qt 3 provided support for
+ toolbars, dock widgets, and other standard user interface
+ components, its design meant that these items were managed
+ through a large number of QMainWindow member functions. In Qt 4,
+ the QMainWindow class delegates many of the management tasks to
+ QDockWidget and QToolBar (allowing more consistent behavior to be
+ defined and implemented).
+
+ The dock widget and toolbar classes are now separated into
+ independent classes. (write some more here)
+
+ (It is intended that these changes allow more consistent behavior
+ to be defined and implemented (which? example). In
+ response to feedback from customers, we hope to improve these classes
+ even further.)
+
+ \section2 New Functionality
+
+ Dock widgets are animated when docking or
+ detaching from a dock area. The dock areas will also adjust their
+ size to show where the dock widget will dock when it hovers over
+ it. This animation can be turned off with \c setAnimated().
+
+ By default, dock widgets are added to the dock areas in a single
+ row. By setting nesting enabled with \c setDockNestingEnabled(),
+ the widgets can be added both vertically and horizontally.
+
+ Two dock widgets can occupy the same space in a dock area. The user
+ can then choose which widget that is visible with a tab bar that
+ is located below the widgets. The QMainWindow::tabifyDockWidget()
+ joins two tab widgets in such a tabbed dock area. (revise the
+ entire paragraph)
+
+ \section2 Independent QDockWidget And QToolBar Classes
+
+ Toolbar and dock window functionality is provided by two independent
+ classes: QToolBar and QDockWidget. Toolbars and dock widgets
+ reside in separate areas, with toolbars outside the dock widget
+ area. This behavior differs from the Qt 3 behavior, where
+ QToolBar inherited functionality from QDockWidget, and both types of
+ component shared the same areas. The result is a more consistent
+ and predictable experience for users. Toolbars and dock widgets
+ provide feedback while being dragged into their new positions.
+
+ \image mainwindow-docks.png
+
+ The diagram above shows the layout of a main window that contains both
+ toolbars and dock widgets. Each corner area can be used by either
+ of the adjacent dock widget areas, allowing dock widget behavior and
+ main window layout to be specified precisely.
+
+ Toolbars and dock widgets are child widgets of the main window. They
+ are no longer reparented into a dock area widget by the main window.
+ Instead, layouts are used to manage the placement of toolbars and dock
+ widgets. One consequence is that the old QDockArea class is no
+ longer required in Qt 4.
+
+ \section2 Code Change Examples
+
+ QMainWindow retains the menuBar() function, but menus are always
+ constructed using QAction objects. All kinds of menus are
+ constructed using the general QMenu class.
+
+ Qt 3:
+ \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 4
+ Qt 4:
+ \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 5
+
+ Toolbars follow the same pattern as menus, with the new, more
+ consistent behavior:
+
+ Qt 3:
+ \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 6
+ Qt 4:
+ \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 7
+
+ The behavior of dock widgets is now configured through the member
+ functions of QDockWidget. For example, compare the old and new ways
+ of creating a dock widget in the dock area on the left hand side of the
+ main window.
+
+ In Qt 3:
+ \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 8
+ In Qt 4:
+ \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 9
+*/
diff --git a/doc/src/porting/qt4-network.qdoc b/doc/src/porting/qt4-network.qdoc
new file mode 100644
index 000000000..30f0af3e4
--- /dev/null
+++ b/doc/src/porting/qt4-network.qdoc
@@ -0,0 +1,243 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt4-network.html
+ \title The Network Module in Qt 4
+
+ \contentspage {What's New in Qt 4}{Home}
+ \previouspage The Qt 4 Database GUI Layer
+ \nextpage The Qt 4 Style API
+
+ The network module in Qt 4 provides some new features, such as
+ support for internationalized domain names, better IPv6 support,
+ and better performance. And since Qt 4 allows us to break binary
+ compatibility with previous releases, we took this opportunity to
+ improve the class names and API to make them more intuitive to
+ use.
+
+ \tableofcontents
+
+ \section1 General Overview
+
+ Compared to Qt 3, the network module in Qt 4 brings the following
+ benefits:
+
+ \list
+ \o The Qt 4 network classes have more intuitive names and APIs.
+ For example, QServerSocket has been renamed QTcpServer.
+ \o The entire network module is \l{reentrant}, making it
+ possible to use them simultaneously from multiple threads.
+ \o It is now possible to send and receive UDP datagrams and to
+ use synchronous (i.e., blocking) sockets without having to
+ use a low-level API (QSocketDevice in Qt 3).
+ \o QHostAddress and QHostInfo support internationalized domain names
+ (RFC 3492).
+ \o QUrl is more lightweight and fully supports the latest URI
+ specification draft.
+ \o UDP broadcasting is now supported.
+ \endlist
+
+ The Qt 4 network module provides fundamental classes for writing
+ TCP and UDP applications, as well as higher-level classes that
+ implement the client side of the HTTP and FTP protocols.
+
+ Here's an overview of the TCP and UDP classes:
+
+ \list
+ \o QTcpSocket encapsulates a TCP socket. It inherits from
+ QIODevice, so you can use QTextStream and QDataStream to read
+ or write data. It is useful for writing both clients and
+ servers.
+ \o QTcpServer allows you to listen on a certain port on a
+ server. It emits a
+ \l{QTcpServer::newConnection()}{newConnection()} signal every
+ time a client tries to connect to the server. Once the
+ connection is established, you can talk to the client using
+ QTcpSocket.
+ \o QUdpSocket is an API for sending and receiving UDP datagrams.
+ \endlist
+
+ QTcpSocket and QUdpSocket inherit most of their functionality
+ from QAbstractSocket. You can also use QAbstractSocket directly
+ as a wrapper around a native socket descriptor.
+
+ By default, the socket classes work asynchronously (i.e., they
+ are non-blocking), emitting signals to notify when data has
+ arrived or when the peer has closed the connection. In
+ multithreaded applications and in non-GUI applications, you also
+ have the opportunity of using blocking (synchronous) functions on
+ the socket, which often results in a more straightforward style
+ of programming, with the networking logic concentrated in one or
+ two functions instead of spread across multiple slots.
+
+ QFtp and QNetworkAccessManager and its associated classes use
+ QTcpSocket internally to implement the FTP and HTTP protocols. The
+ classes work asynchronously and can schedule (i.e., queue)
+ requests.
+
+ The network module contains four helper classes: QHostAddress,
+ QHostInfo, QUrl, and QUrlInfo. QHostAddress stores an IPv4 or IPv6
+ address, QHostInfo resolves host names into addresses, QUrl stores a
+ URL, and QUrlInfo stores information about a resource pointed to
+ by a URL, such as the file size and modification date. (Because
+ QUrl is used by QTextBrowser, it is part of the QtCore library and
+ not of QtNetwork.)
+
+ See the \l QtNetwork module overview for more information.
+
+ \section1 Example Code
+
+ All the code snippets presented here are quoted from
+ self-contained, compilable examples located in Qt's \c
+ examples/network directory.
+
+ \section2 TCP Client
+
+ The first example illustrates how to write a TCP client using
+ QTcpSocket. The client talks to a fortune server that provides
+ fortune to the user. Here's how to set up the socket:
+
+ \snippet examples/network/fortuneclient/client.cpp 1
+ \codeline
+ \snippet examples/network/fortuneclient/client.cpp 2
+ \snippet examples/network/fortuneclient/client.cpp 4
+
+ When the user requests a new fortune, the client establishes a
+ connection to the server:
+
+ \snippet examples/network/fortuneclient/client.cpp 7
+
+ When the server answers, the following code is executed to read
+ the data from the socket:
+
+ \snippet examples/network/fortuneclient/client.cpp 9
+
+ The server's answer starts with a \e size field (which we store
+ in \c blockSize), followed by \e size bytes of data. If the
+ client hasn't received all the data yet, it waits for the server
+ to send more.
+
+ An alternative approach is to use a blocking socket. The code can
+ then be concentrated in one function:
+
+ \snippet examples/network/blockingfortuneclient/fortunethread.cpp 7
+
+ \section2 TCP Server
+
+ The following code snippets illustrate how to write a TCP server
+ using QTcpServer and QTcpSocket. Here's how to set up a TCP
+ server:
+
+ \snippet examples/network/fortuneserver/server.cpp 0
+ \codeline
+ \snippet examples/network/fortuneserver/server.cpp 3
+
+ When a client tries to connect to the server, the following code
+ in the sendFortune() slot is executed:
+
+ \snippet examples/network/fortuneserver/server.cpp 5
+
+ \section2 UDP Senders and Receivers
+
+ Here's how to broadcast a UDP datagram:
+
+ \snippet examples/network/broadcastsender/sender.cpp 0
+ \snippet examples/network/broadcastsender/sender.cpp 1
+
+ Here's how to receive a UDP datagram:
+
+ \snippet examples/network/broadcastreceiver/receiver.cpp 0
+ \codeline
+ \snippet examples/network/broadcastreceiver/receiver.cpp 1
+
+ Then in the processPendingDatagrams() slot:
+
+ \snippet examples/network/broadcastreceiver/receiver.cpp 2
+
+ \section1 Comparison with Qt 3
+
+ The main difference between Qt 3 and Qt 4 is that the very high
+ level QNetworkProtocol and QUrlOperator abstraction has been
+ eliminated. These classes attempted the impossible (unify FTP and
+ HTTP under one roof), and unsurprisingly failed at that. Qt 4
+ still provides QFtp, and it also proveds the QNetworkAccessManager.
+
+ The QSocket class in Qt 3 has been renamed QTcpSocket. The new
+ class is reentrant and supports blocking. It's also easier to
+ handle closing than with Qt 3, where you had to connect to both
+ the QSocket::connectionClosed() and the
+ QSocket::delayedCloseFinished() signals.
+
+ The QServerSocket class in Qt 3 has been renamed QTcpServer. The
+ API has changed quite a bit. While in Qt 3 it was necessary to
+ subclass QServerSocket and reimplement the newConnection() pure
+ virtual function, QTcpServer now emits a
+ \l{QTcpServer::newConnection()}{newConnection()} signal that you
+ can connect to a slot.
+
+ The QHostInfo class has been redesigned to use the operating system's
+ getaddrinfo() function instead of implementing the DNS protocol.
+ Internally, QHostInfo simply starts a thread and calls getaddrinfo()
+ in that thread. This wasn't possible in Qt 3 because
+ getaddrinfo() is a blocking call and Qt 3 could be configured
+ without multithreading support.
+
+ The QSocketDevice class in Qt 3 is no longer part of the public
+ Qt API. If you used QSocketDevice to send or receive UDP
+ datagrams, use QUdpSocket instead. If you used QSocketDevice
+ because it supported blocking sockets, use QTcpSocket or
+ QUdpSocket instead and use the blocking functions
+ (\l{QAbstractSocket::waitForConnected()}{waitForConnected()},
+ \l{QAbstractSocket::waitForConnected()}{waitForReadyRead()},
+ etc.). If you used QSocketDevice from a non-GUI thread because it
+ was the only reentrant networking class in Qt 3, use QTcpSocket,
+ QTcpServer, or QUdpSocket instead.
+
+ Internally, Qt 4 has a class called QSocketLayer that provides a
+ cross-platform low-level socket API. It resembles the old
+ QSocketDevice class. We might make it public in a later release
+ if users ask for it.
+
+ As an aid to porting to Qt 4, the \l{Qt3Support}
+ library includes Q3Dns, Q3ServerSocket, Q3Socket, and Q3SocketDevice
+ classes.
+*/
diff --git a/doc/src/porting/qt4-scribe.qdoc b/doc/src/porting/qt4-scribe.qdoc
new file mode 100644
index 000000000..895c141da
--- /dev/null
+++ b/doc/src/porting/qt4-scribe.qdoc
@@ -0,0 +1,257 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt4-scribe.html
+ \title The Scribe Classes
+
+ \contentspage {What's New in Qt 4}{Home}
+ \previouspage The Arthur Paint System
+ \nextpage The Qt 4 Main Window Classes
+
+ \keyword Scribe
+
+ Scribe introduces a set of text layout classes to Qt 4. These classes
+ replace the old rich text engine found in Qt 3, and provide new features
+ for processing and laying out both plain and rich text.
+
+ \tableofcontents
+
+ For more details about how to use the Scribe classes, see the
+ \l{richtext.html}{Rich Text Processing} document.
+
+ \section1 Overview of Scribe
+
+ Support for text rendering and layout in Qt 4 has been redesigned
+ around a system that allows textual content to be represented in a more
+ flexible way than was possible with Qt 3. Qt 4 also provides a more
+ convenient programming interface for editing documents. These
+ improvements are made available through a reimplementation of the
+ existing text rendering engine, and the introduction of several new
+ classes.
+
+ The following sections provide a brief overview of the main concepts
+ behind Scribe.
+
+ \section2 The Document Interface
+
+ Text documents are represented by the QTextDocument class, rather
+ than by QString objects. Each QTextDocument object contains
+ information about the document's internal representation, its
+ structure, and keeps track of modifications to provide undo/redo
+ facilities.
+ This approach allows features such as layout management to be
+ delegated to specialized classes, but also provides a focus for the
+ framework.
+
+ Documents are either converted from external sources or created from
+ scratch using Qt. The creation process can done by an editor widget,
+ such as QTextEdit, or by explicit calls to the Scribe API.
+
+ Text documents can be accessed in two complementary ways: as a linear
+ buffer for editors to use, and as an object hierarchy that is useful to
+ layout engines.
+ In the hierarchical document model, objects generally correspond to
+ visual elements such as frames, tables, and lists. At a lower level,
+ these elements describe properties such as the text style and alignment.
+ The linear representation of the document is used for editing and
+ manipulation of the document's contents.
+
+ \section2 Document Structure
+
+ Each document contains a root frame into which all other structural
+ elements are placed. This frame contains other structural elements,
+ including tables, text blocks, and other frames; these can be nested to
+ an arbitrary depth.
+
+ Frames provide logical separation between parts of the document, but
+ also have properties that determine how they will appear when rendered.
+ A table is a specialized type of frame that consists of a number of
+ cells, arranged into rows and columns, each of which can contain
+ further structure and text. Tables provide management and layout
+ features that allow flexible configurations of cells to be created.
+
+ Text blocks contain text fragments, each of which specifies text and
+ character format information. Textual properties are defined both at
+ the character level and at the block level. At the character level,
+ properties such as font family, text color, and font weight can be
+ specified. The block level properties control the higher level
+ appearance and behavior of the text, such as the direction of text
+ flow, alignment, and background color.
+
+ The document structure is not manipulated directly. Editing is
+ performed through a cursor-based interface.
+
+ \section2 Editing and Content Creation
+
+ Documents can be edited via the interface provided by the QTextCursor
+ class; cursors are either created using a constructor or obtained from
+ an editor widget. The cursor is used to perform editing operations that
+ correspond exactly to those the user is able to make themselves in an
+ editor. As a result, information about the document structure is also
+ available through the cursor, and this allows the structure to be
+ modified. The use of a cursor-oriented interface for editing makes the
+ process of writing a custom editor simpler for developers, since the
+ editing operations can be easily visualized.
+
+ The QTextCursor class also maintains information about any text it
+ has selected in the document, again following a model that is
+ conceptually similar to the actions made by the user to select text
+ in an editor.
+
+ \section2 Document Layout
+
+ The layout of a document is only relevant when it is to be displayed on
+ a device, or when some information is requested that requires a visual
+ representation of the document. Until this occurs, the document does
+ not need to be formatted and prepared for a device.
+
+ Each document's layout is managed by a subclass of the
+ QAbstractTextDocumentLayout class. This class provides a common
+ interface for layout and rendering engines. The default rendering
+ behavior is currently implemented in a private class. This approach
+ makes it possible to create custom layouts, and provides the
+ mechanism used when preparing pages for printing or exporting to
+ Portable Document Format (PDF) files.
+
+ \section1 Example Code
+
+ Here we present two different ways in which the Scribe classes can be
+ used: for creating and manipulating rich text, and for laying out
+ plain text.
+
+
+ \section2 Manipulating Rich Text
+
+ Rich text is stored in text documents that can either be created by
+ importing HTML from an external source, or generated using a
+ QTextCursor. The easiest way to use a rich text document is through
+ the QTextEdit class, providing an editable view onto a document. The code
+ below imports HTML into a document, and displays the document using a
+ text edit widget.
+
+ \snippet doc/src/snippets/scribe-overview/main.cpp 1
+
+ You can retrieve the document from the text edit using the
+ document() function. The document can then be edited programmatically
+ using the QTextCursor class. This class is modeled after a screen
+ cursor, and editing operations follow the same semantics. The following
+ code changes the first line of the document to a bold font, leaving all
+ other font properties untouched. The editor will be automatically
+ updated to reflect the changes made to the underlying document data.
+
+ \snippet doc/src/snippets/scribe-overview/main.cpp 0
+
+ Note that the cursor was moved from the start of the first line to the
+ end, but that it retained an anchor at the start of the line. This
+ demonstrates the cursor-based selection facilities of the
+ QTextCursor class.
+
+ Rich text can be generated very quickly using the cursor-based
+ approach. The following example shows a simple calendar in a
+ QTextEdit widget with bold headers for the days of the week:
+
+ \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 0
+ \codeline
+ \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 1
+ \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 2
+ \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 3
+
+ The above example demonstrates how simple it is to quickly generate new
+ rich text documents using a minimum amount of code. Although we have
+ generated a crude fixed-pitch calendar to avoid quoting too much code,
+ Scribe provides much more sophisticated layout and formatting features.
+
+ \section2 Plain Text Layout
+
+ Sometimes it is important to be able to format plain text within an
+ irregularly-shaped region, perhaps when rendering a custom widget, for
+ example. Scribe provides generic features, such as those provided by
+ the QTextLayout class, to help developers perform word-wrapping and
+ layout tasks without the need to create a document first.
+
+ \img plaintext-layout.png
+
+ Formatting and drawing a paragraph of plain text is straightforward.
+ The example below will lay out a paragraph of text, using a single
+ font, around the right hand edge of a circle.
+
+ \snippet doc/src/snippets/plaintextlayout/window.cpp 0
+
+ We create a text layout, specifying the text string we want to display
+ and the font to use. We ensure that the text we supplied is formatted
+ correctly by obtaining text lines from the text format, and wrapping
+ the remaining text using the available space. The lines are positioned
+ as we move down the page.
+
+ The formatted text can be drawn onto a paint device; in the above code,
+ the text is drawn directly onto a widget.
+
+ \section2 Printing Features
+
+ The layout system used to display rich text documents also supports
+ paged layout of documents, and this is used by Qt to generate output for
+ printing. The printing process is performed by QPrinter and controlled by
+ the user via options displayed in a QPrintDialog:
+
+ \snippet doc/src/snippets/textdocument-printing/mainwindow.cpp 0
+
+ Rich text documents can also be exported as PDF files using QPrinter and
+ the appropriate print engine:
+
+ \snippet demos/textedit/textedit.cpp 0
+
+ \section1 Comparison with Qt 3
+
+ The cursor-based editing features, combined with the structural document
+ model, provide a powerful set of tools for manipulating and displaying
+ rich text documents. These provide features that were unavailable in
+ Qt 3's public API. The engine used is a complete rewrite and does not
+ use the rich text engine supplied with Qt 3.
+
+ The QTextEdit class in Qt 4 has also been completely rewritten with an
+ API that is quite different from its Qt 3 counterpart. Some compatibility
+ methods have been added to allow the widget to be used, for basic cases,
+ in a way that is familiar to users of Qt 3. This class is provided as a
+ working example of an editor widget that uses the new API, showing that
+ it is possible to completely implement a document editor based on the
+ QTextCursor editing interface.
+*/
diff --git a/doc/src/porting/qt4-sql.qdoc b/doc/src/porting/qt4-sql.qdoc
new file mode 100644
index 000000000..4880cfced
--- /dev/null
+++ b/doc/src/porting/qt4-sql.qdoc
@@ -0,0 +1,175 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt4-sql.html
+ \title The Qt 4 Database GUI Layer
+
+ \contentspage {What's New in Qt 4}{Home}
+ \previouspage Cross-Platform Accessibility Support in Qt 4
+ \nextpage The Network Module in Qt 4
+
+ The GUI layer of the SQL module in Qt 4 has been entirely
+ redesigned to work with \l{qt4-interview.html}{Interview} (Qt's
+ new model/view classes). It consists of three model classes
+ (QSqlQueryModel, QSqlTableModel, and QSqlRelationalTableModel)
+ that can be used with Qt's view classes, notably QTableView.
+
+ \section1 General Overview
+
+ The Qt 4 SQL classes are divided into three layers:
+
+ \list
+ \o The database drivers
+ \o The core SQL classes
+ \o The GUI classes
+ \endlist
+
+ The database drivers and the core SQL classes are mostly the same
+ as in Qt 3. The database item models are new with Qt 4; they
+ inherit from QAbstractItemModel and make it easy to present data
+ from a database in a view class such as QListView, QTableView,
+ and QTreeView.
+
+ The philosophy behind the Qt 4 SQL module is that it should be
+ possible to use database models for rendering and editing data
+ just like any other item models. By changing the model at
+ run-time, you can decide whether you want to store your data in
+ an SQL database or in, say, an XML file. This generic approach
+ has the additional benefit that you don't need to know anything
+ about SQL to display and edit data.
+
+ The Qt 4 SQL module includes three item models:
+
+ \list
+ \o QSqlQueryModel is a read-only model based on an arbitrary
+ SQL query.
+ \o QSqlTableModel is a read-write model that works on a single
+ table.
+ \o QSqlRelationalTableModel is a QSqlTableModel subclass with
+ foreign key support.
+ \endlist
+
+ Combined with Qt's view classes and Qt's default delegate class
+ (QItemDelegate), the models offer a very powerful mechanism for
+ accessing databases. For finer control on the rendering of the
+ fields, you can subclass one of the predefined models, or even
+ QAbstractItemDelegate or QItemDelegate if you need finer control.
+
+ You can also perform some customizations without subclassing. For
+ example, you can sort a table using QSqlTableModel::sort(), and
+ you can initialize new rows by connecting to the
+ QSqlTableModel::primeInsert() signal.
+
+ One nice feature supported by the read-write models is the
+ possibility to perform changes to the item model without
+ affecting the database until QSqlTableModel::submitAll() is
+ called. Changes can be dropped using QSqlTableModel::revertAll().
+
+ The new classes perform advantageously compared to the SQL
+ module's GUI layer in Qt 3. Speed and memory improvements in the
+ tool classes (especially QVariant, QString, and QMap) and in the
+ SQL drivers contribute to making Qt 4 database applications more
+ snappy.
+
+ See the \l QtSql module overview for a more complete introduction
+ to Qt's SQL classes.
+
+ \section1 Example Code
+
+ The simplest way to present data from a database is to simply
+ combine a QSqlQueryModel with a QTableView:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-sql.qdoc 0
+
+ To present the contents of a single table, we can use
+ QSqlTableModel instead:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-sql.qdoc 1
+
+ In practice, it's common that we need to customize the rendering
+ of a field in the database. In that case, we can create our own
+ model based on QSqlQueryModel. The next code snippet shows a
+ custom model that prepends '#' to the value in field 0 and
+ converts the value in field 2 to uppercase:
+
+ \snippet examples/sql/querymodel/customsqlmodel.h 0
+ \codeline
+ \snippet examples/sql/querymodel/customsqlmodel.cpp 0
+
+ It is also possible to subclass QSqlQueryModel to add support for
+ editing. This is done by reimplementing
+ QAbstractItemModel::flags() to specify which database fields are
+ editable and QAbstractItemModel::setData() to modify the
+ database. Here's an example of a setData() reimplementation that
+ changes the first or last name of a person:
+
+ \snippet examples/sql/querymodel/editablesqlmodel.cpp 1
+
+ It relies on helper functions called \c setFirstName() and
+ \c setLastName(), which execute an \c{update}. Here's
+ \c setFirstName():
+
+ \snippet examples/sql/querymodel/editablesqlmodel.cpp 2
+
+ See Qt's \c examples/sql directory for more examples.
+
+ \section1 Comparison with Qt 3
+
+ The core SQL database classes haven't changed so much since Qt 3.
+ Here's a list of the main changes:
+
+ \list
+ \o QSqlDatabase is now value-based instead of pointer-based.
+ \o QSqlFieldInfo and QSqlRecordInfo has been merged into
+ QSqlField and QSqlRecord.
+ \o The SQL query generation has been moved into the drivers. This
+ makes it possible to use non-standard SQL extensions. It also
+ opens the door to non-SQL databases.
+ \endlist
+
+ The GUI-related database classes have been entirely redesigned.
+ The QSqlCursor abstraction has been replaced with QSqlQueryModel
+ and QSqlTableModel; QSqlEditorFactory is replaced by
+ QAbstractItemDelegate; QDataTable is replaced by QTableView. The
+ old classes are part of the \l{Qt3Support} library to aid
+ porting to Qt 4.
+*/
diff --git a/doc/src/porting/qt4-styles.qdoc b/doc/src/porting/qt4-styles.qdoc
new file mode 100644
index 000000000..78a3611c6
--- /dev/null
+++ b/doc/src/porting/qt4-styles.qdoc
@@ -0,0 +1,157 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt4-styles.html
+ \title The Qt 4 Style API
+
+ \contentspage {What's New in Qt 4}{Home}
+ \previouspage The Network Module in Qt 4
+ \nextpage Thread Support in Qt 4
+
+ Qt's style API is responsible for performing the widget drawing
+ for built-in widgets. The Qt 4 style API has been revised to make
+ it possible for a style to draw widgets without calling any
+ functions on the widget.
+
+ Because Qt 4 is split across multiple libraries, Qt needed this
+ update to be able to draw widgets from other libraries than
+ QtGui. For application developers, this has other benefits, such
+ as more managable parameter lists and the possibility of drawing
+ any graphical element without having a widget of a specific
+ type.
+
+ \section1 General Overview
+
+ The QStyle class is an abstract base class that encapsulates
+ the look and feel of a GUI. Qt's built-in widgets use it to
+ perform nearly all of their drawing, ensuring that they look
+ exactly like the equivalent native widgets.
+
+ Most draw functions now take four arguments:
+
+ \list
+ \o an enum value specifying which graphical element to draw
+ \o a QStyleOption specifying how and where to render that element
+ \o a QPainter that should be used to draw the element
+ \o a QWidget on which the drawing is performed (optional)
+ \endlist
+
+ The style gets all the information it needs to render the
+ graphical element from QStyleOption. The widget is passed as the
+ last argument in case the style needs it to perform special
+ effects (such as animated default buttons on Mac OS X), but it
+ isn't mandatory. In fact, QStyle can be used to draw on any
+ paint device, not just widgets, by setting the QPainter properly.
+
+ Thanks to QStyleOption, it is now possible to make QStyle draw
+ widgets without linking in any code for the widget. This is how
+ Qt's built-in styles can draw Qt 3 widgets such as
+ Q3ListView without necessarily linking against the Qt3Support
+ library. Another significant benefit of the new approach is that
+ it's now possible to use \l{QStyle}'s draw functions on other
+ widgets than the built-in widgets; for example, you can draw a
+ combobox on any widget, not just on a QComboBox.
+
+ QStyleOption has various subclasses for the various types of
+ graphical elements that can be drawn, and it's possible to create
+ custom subclasses. For example, the QStyle::PE_FrameFocusRect
+ element expects a QStyleOptionFocusRect argument. This is
+ documented for each enum value.
+
+ When reimplementing QStyle functions that take a
+ QStyleOption parameter, you often need to cast the
+ QStyleOption to a subclass (e.g., QStyleOptionFocusRect). For
+ safety, you can use qstyleoption_cast() to ensure that the
+ pointer type is correct. If the object isn't of the right type,
+ qstyleoption_cast() returns 0. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-styles.qdoc 0
+
+ For performance reasons, there are few member functions and the
+ access to the variables is direct. This "low-level" feel makes
+ the structures use straightforward and emphasizes that these are
+ simply parameters used by the style functions. In addition, the
+ caller of a QStyle function usually creates QStyleOption
+ objects on the stack. This combined with Qt's extensive use of
+ \l{implicit sharing} for types such as QString, QPalette, and
+ QColor ensures that no memory allocation needlessly takes place.
+ (Dynamic memory allocation can be an expensive operation,
+ especially when drawing very often in a short time.)
+
+ \section1 Example Code
+
+ The following code snippet illustrates how to use QStyle to
+ draw the focus rectangle from a custom widget's paintEvent():
+
+ \snippet doc/src/snippets/code/doc_src_qt4-styles.qdoc 1
+
+ The next example shows how to derive from an existing style to
+ customize the look of a graphical element:
+
+ \snippet doc/src/snippets/customstyle/customstyle.h 0
+ \codeline
+ \snippet doc/src/snippets/customstyle/customstyle.cpp 2
+ \snippet doc/src/snippets/customstyle/customstyle.cpp 3
+ \snippet doc/src/snippets/customstyle/customstyle.cpp 4
+
+ See also the \l{Styles Example} for a more detailed description of
+ how custom styles can be created.
+
+ \section1 Comparison with Qt 3
+
+ The QStyle class has a similar API in Qt 4 as in Qt 3, with
+ more or less the same functions. What has changed is the
+ signature of the functions and the role played by QStyleOption.
+ For example, here's the signature of the QStyle::drawControl()
+ function in Qt 3:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-styles.qdoc 2
+
+ Here's the signature of the same function in Qt 4:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-styles.qdoc 3
+
+ In Qt 3, some of the information required to draw a graphical
+ element was stored in a QStyleOption parameter, while the rest
+ was deduced by querying the widget. In Qt 4, everything is stored
+ in the QStyleOption parameter.
+*/
diff --git a/doc/src/porting/qt4-threads.qdoc b/doc/src/porting/qt4-threads.qdoc
new file mode 100644
index 000000000..882c57566
--- /dev/null
+++ b/doc/src/porting/qt4-threads.qdoc
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt4-threads.html
+ \title Thread Support in Qt 4
+
+ \contentspage {What's New in Qt 4}{Home}
+ \previouspage The Qt 4 Style API
+
+ Qt 4 makes it easier than ever to write multithreaded
+ applications. More classes have been made usable from non-GUI
+ threads, and the signals and slots mechanism can now be used to
+ communicate between threads.
+
+ \section1 General Overview
+
+ QThread now inherits QObject. It emits signals to indicate that
+ the thread started or finished executing, and provides a few
+ slots as well.
+
+ Each thread can now have its own event loop. The initial thread
+ starts its event loops using QCoreApplication::exec(); other
+ threads can start an event loop using QThread::exec(). Like
+ QCoreApplication, QThread also provides an
+ \l{QThread::exit()}{exit(int)} function and a
+ \l{QThread::quit()}{quit()} slot.
+
+ An event loop in a thread makes it possible for the thread to use
+ certain non-GUI Qt classes that require the presence of an event
+ loop (such as QTimer, QTcpSocket, and QProcess). It also makes it
+ possible to connect signals from any threads to slots of a
+ specific thread. When a signal is emitted, the slot isn't called
+ immediately; instead, it is invoked when control returns to the
+ event loop of the thread to which the object belongs. The slot is
+ executed in the thread where the receiver object lives. See
+ QObject::connect() for details.
+
+ Qt 4 also introduces a new synchronization class: QReadWriteLock.
+ It is similar to QMutex, except that it distinguishes between
+ "read" and "write" access to shared data and allows multiple
+ readers to access the data simultaneously. Using QReadWriteLock
+ instead of QMutex when it is possible can make multithreaded
+ programs more concurrent.
+
+ Since Qt 4, \l{implicitly shared} classes can safely be copied
+ across threads, like any other value classes. They are fully
+ reentrant. This is implemented using atomic reference counting
+ operations, which are implemented in assembly language for the
+ different platforms supported by Qt. Atomic reference counting is
+ very fast, much faster than using a mutex.
+
+ See \l{Thread Support in Qt} for more information.
+
+ \section1 Comparison with Qt 3
+
+ Earlier versions of Qt offered an option to build the library
+ without thread support. In Qt 4, threads are always enabled.
+
+ Qt 3 had a class called \c QDeepCopy that you could use to take a
+ deep copy of an implicitly shared object. In Qt 4, the atomic
+ reference counting makes this class superfluous.
+*/
diff --git a/doc/src/porting/qt4-tulip.qdoc b/doc/src/porting/qt4-tulip.qdoc
new file mode 100644
index 000000000..279aafc73
--- /dev/null
+++ b/doc/src/porting/qt4-tulip.qdoc
@@ -0,0 +1,200 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt4-tulip.html
+ \title The Tulip Container Classes
+
+ \contentspage {What's New in Qt 4}{Home}
+ \previouspage What's New in Qt 4
+ \nextpage The Interview Framework
+
+ Qt 4 introduces a new set of containers that supersede both the old
+ QCollection pointer-based containers and the newer QTL value-based
+ containers.
+
+ \tableofcontents
+
+ \section1 General Overview
+
+ The Tulip containers are similar to Qt 3's QTL containers
+ (QValueList, QValueVector, QMap), but have the following
+ advantages:
+
+ \list
+ \o The containers provide new iterators with a nicer, less
+ error-prone syntax than STL, inspired by Java's iterators. (The
+ STL-style iterators are still available as a lightweight,
+ STL-compatible alternative.)
+
+ \o The containers have been optimized for minimal code expansion.
+
+ \o An empty container performs no memory allocation, and only
+ requires the same space as a pointer.
+
+ \o Even though they are implicitly shared, they can safely be copied
+ across different threads without formality. There's no need to use
+ \c QDeepCopy.
+ \endlist
+
+ Tulip provides the following sequential containers: QList,
+ QLinkedList, QVector, QStack, and QQueue. For most
+ applications, QList is the best type to use. Although it is
+ implemented as an array-list, it provides very fast prepends and
+ appends. If you really need a linked-list, use QLinkedList; if you
+ want your items to occupy consecutive memory locations, use QVector.
+ QStack and QQueue are convenience classes that provide LIFO and
+ FIFO semantics.
+
+ Tulip also provides these associative containers: QMap,
+ QMultiMap, QHash, QMultiHash, and QSet. The "Multi" containers
+ conveniently support multiple values associated with a single
+ key. The "Hash" containers provide faster lookup by using a hash
+ function instead of a binary search on a sorted set.
+
+ The Tulip containers support the \l foreach keyword, a Qt-specific
+ addition to the C++ language that is implemented using the standard
+ C++ preprocessor. The syntax is:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 0
+
+ Example:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 1
+
+ The iterator variable can also be defined outside the loop. For
+ example:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 2
+
+ Just like standard \c for loops, foreach supports braces, \c
+ break, \c continue, and nested loops. Qt makes a copy of the
+ container when it enters the loop. If you modify the container as
+ you are iterating, that won't affect the loop.
+
+ For details about the new containers, see the
+ \l{Generic Containers} and \l{Generic Algorithms} overview documents.
+
+ In addition to the new containers, considerable work has also gone into
+ QByteArray and QString. The Qt 3 QCString class has been
+ merged with QByteArray. The new QByteArray automatically provides
+ a '\0' terminator after the last character. For example, the byte array
+ of size 5 containing "abcde" has a null byte at position 5 (one past
+ the end). This solves all the typical problems that occurred in Qt 3
+ with conversions between QByteArray and QCString.
+
+ To avoid crashes, QByteArray::data() never returns a null
+ pointer. Furthermore, the distinction between null and empty
+ strings has been watered down so that \c{QByteArray() ==
+ QByteArray("")} and \c{QString() == QString("")}.
+
+ \section1 Examples
+
+ The first group of examples show how to use the new Java-style
+ iterators. The main difference between the Java-style iterators and the
+ STL-style iterators is that the Java-style ones point between items (or
+ before the first item, or after the last item), whereas the STL ones
+ point at an item (or past the last item). One advantage of the
+ Java-style iterators is that iterating forward and backward are
+ symmetric operations.
+
+ Traversing a container using a Java-style iterator:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 3
+
+ Modifying items using a Java-style iterator:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 4
+
+ Removing items using a Java-style iterator:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 5
+
+ Iterating over items with a particular value using STL-style vs.
+ Java-style iterators:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 6
+
+ Modifying and removing items using STL-style vs. Java-style
+ iterators:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 7
+
+ The next group of examples show the API of the container classes
+ themselves. The API is similar to the QTL classes of Qt 3, but is nicer
+ in many respects.
+
+ Iterating over a QList using an index (which is fast even for large
+ lists, because QList is implemented as an array-list):
+
+ \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 8
+
+ Retrieving a value from a map, using a default value if the key
+ doesn't exist:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 9
+
+ Getting all the values for a particular key in a QMultiMap or QMultiHash:
+
+ \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 10
+
+ \section1 Comparison with Qt 3
+
+ Tulip containers are value based. If you want to store a list where
+ each item is a QWidget *, use QList<QWidget *>.
+
+ The new containers do not support auto-delete. In practice, we
+ discovered that the only case where auto-delete proved worthwhile was
+ when the data really should be stored as a value rather than as a
+ pointer (e.g., QList<int> rather than QList<int *>). If you need
+ to delete all the items in a container, use qDeleteAll().
+
+ If you use QValueList in Qt 3, you can replace it with either
+ QList or QLinkedList in Qt 4. In most cases, QList is the best
+ choice: It is typically faster, results in less code in your
+ executable, and requires less memory. However, QLinkedList's
+ iterators provide stronger guarantees, and only QLinkedList provides
+ constant-time insertions in the middle, which can make a difference for
+ lists with thousands of items.
+
+ If you use QValueVector or QMap in Qt 3, the corresponding Qt 4
+ classes (QVector, QMap) are very similar to use.
+*/
diff --git a/doc/src/porting4-canvas.qdoc b/doc/src/porting4-canvas.qdoc
deleted file mode 100644
index ce68d562d..000000000
--- a/doc/src/porting4-canvas.qdoc
+++ /dev/null
@@ -1,703 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page graphicsview-porting.html
- \title Porting to Graphics View
- \contentspage {Porting Guides}{Contents}
- \previouspage Porting UI Files to Qt 4
- \nextpage qt3to4 - The Qt 3 to 4 Porting Tool
- \ingroup porting
- \ingroup multimedia
- \brief Hints and tips to assist with porting canvas applications to the
- Graphics View framework.
-
- \keyword QGraphicsView GraphicsView Porting Graphics Canvas
- \since 4.2
-
- Graphics View provides a surface for managing and interacting with a large
- number of custom-made 2D graphical items, and a view widget for
- visualizing the items, with support for zooming and rotation. Graphics
- View was introduced in Qt 4.2, replacing its predecessor, QCanvas. For
- more on Graphics View, see \l{The Graphics View Framework}.
-
- This document walks through the steps needed, class by class and function
- by function, to port a QCanvas application to Graphics View.
-
- \tableofcontents
-
- Qt 4.2 provides two complete examples of Q3Canvas applications ported to
- Graphics View:
-
- \list
- \o \l{Ported Canvas Example}, the canvas example from Qt 3.
- \o \l{Ported Asteroids Example}, the Asteroids game from the Qt 3 demo.
- \endlist
-
- \section1 Introduction
-
- Conceptually, the Graphics View classes from Qt 4 and the Canvas
- classes from Qt 3 provide similar functionality using a similar
- design. Instead of "canvas", we use the term "scene". Otherwise, the
- class names and functions are almost the same as in Qt 3. The easiest
- classes to port will be QCanvas and QCanvasView. Experience shows that
- most time is spent porting the item classes, depending on the
- complexity of the QCanvasItem classes you have been using before.
-
- This porting guide will assume you have already ported your
- application to Qt 4, by making use of Q3Canvas. If you have not done
- so already, as a first step, run the \l qt3to4 tool on your
- project. This tool will automate the most tedious part of the porting
- effort.
-
- Some additional steps are usually required before your application
- will compile and run. You can read more about the porting process in
- \l{Porting to Qt 4}.
-
- \section1 Porting from Q3Canvas
-
- QGraphicsScene is the closest equivalent to Q3Canvas. There
- are some noticable differences in this new API: Whereas the
- Q3Canvas classes use integer precision, QGraphicsScene is
- entirely based on double coordinates, with graphical
- primitives such as QPointF instead of QPoint, QRectF instead
- of QRect, and QPolygonF and QPainterPath. The canvas area is
- defined by a scene rectangle, allowing negative coordinates,
- as opposed to Q3Canvas, which only defines a size (QSize), and
- whose top-left corner is always (0, 0).
-
- In addition, there is no explicit support for canvas tiles
- anymore; see \l{Porting scenes with tiles} for more
- information. The chunks-based indexing system has been
- replaced with an implicitly maintained internal BSP tree.
-
- \section2 Porting table
-
- \table
- \header \o Q3Canvas \o QGraphicsScene
-
- \row \o Q3Canvas::Q3Canvas() \o There is no QPixmap based
- constructor, and the concept of tiles is gone. You can use
- QGraphicsScene::backgroundBrush to set a brush pattern for
- the background, or reimplement
- QGraphicsScene::drawBackground() in a QGraphicsScene
- subclass (see \l{Porting scenes with tiles}). In addition,
- the QGraphicsScene geometry is provided as a full
- QRectF. Instead of Q3Canvas(int width, int height), you can
- use QGraphicsScene(int top, int left, int width, int
- height).
-
- \row \o Q3Canvas::allItems() \o QGraphicsScene::items()
- returns a list of all items on the scene.
-
- \row \o Q3Canvas::backgroundColor() \o You can assign a color for the
- background through the QGraphicsScene::backgroundBrush
- or QGraphicsView::backgroundBrush properties.
-
- \row \o Q3Canvas::backgroundPixmap() \o You can set a tiled
- pixmap for the background through
- QGraphicsScene::backgroundBrush or
- QGraphicsView::backgroundBrush. For more control on the pixmap
- positioning, you can reimplement
- QGraphicsScene::drawBackground() or
- QGraphicsView::drawBackground().
-
- \row \o Q3Canvas::chunkSize() \o The closest equivalent to the
- chunks size in Q3Canvas is the depth of QGraphicsScene's BSP
- tree. QGraphicsScene assigns a depth automatically, and the
- size of each scene segment depends on this depth, and
- QGraphicsScene::sceneRect(). See
- QGraphicsScene::itemIndexMethod.
-
- \row \o Q3Canvas::collisions() \o QGraphicsScene provides
- several means to detect item collisions. The
- QGraphicsScene::items() overloads return items that collide
- with a point, a rectangle, a polygon, or an arbitrary vector
- path (QPainterPath). You can also call
- QGraphicsScene::collidingItems() to determine collision with
- an item.
-
- \row \o Q3Canvas::drawArea() \o The QGraphicsScene::render()
- function provides the original behavior
- Q3Canvas::drawArea(). In addition, you can pass a source
- rectangle for rendering only parts of the scene, and a
- destination rectangle for rendering onto designated area of
- the destination device. QGraphicsScene::render() can
- optionally transform the source rectangle to fit into the
- destination rectangle. See \l{Printing}
-
- \row \o Q3Canvas::onCanvas() \o The is no equivalent to this
- function in Graphics View. However, you can combine
- QGraphicsScene::sceneRect() and QRectF::intersects():
- \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 0
-
- \row \o Q3Canvas::rect() \o The equivalent,
- QGraphicsScene::sceneRect(), returns a QRectF (double
- precision coordinates). Its top-left corner can be an
- arbitrary coordinate (Q3Canvas::rect().topLeft() is always (0,
- 0)).
-
- \row \o Q3Canvas::resize() \o You can call
- QGraphicsScene::setSceneRect(0, 0, width, height) instead.
-
- \row \o Q3Canvas::retune() \o See
- QGraphicsScene::itemIndexMethod. You can tune the indexing by
- setting a suitable sceneRect(). The optimal depth of
- QGraphicsScene's BSP tree is determined automatically.
-
- \row \o Q3Canvas::setAdvancePeriod() \o There is no concept of
- an advance period in the new API; instead, you can connect
- QTimer::timeout() to the QGraphicsScene::advance() slot to
- obtain similar functionality. This will cause all items'
- QGraphicsItem::advance() function to be called. See also
- QGraphicsItemAnimation.
-
- \row \o Q3Canvas::setAllChanged() \o You can call
- QGraphicsScene::update() with no arguments.
-
- \row \o Q3Canvas::setChanged() \o QGraphicsScene::update()
- will trigger a repaint of the whole scene, or parts of the
- scene.
-
- \row \o Q3Canvas::setDoubleBuffering() \o Q3Canvas' double
- buffering enabled cacheing of the scene contents in device
- (i.e., viewport) coordinates. This cache layer has been moved
- to the view instead; you can cache QGraphicsScene's background
- through
- QGraphicsView::setCacheMode(). QGraphicsView::resetCachedContent()
- will reset the areas of the cache that has changed.
-
- \row \o Q3Canvas::tile() \o See \l{Porting scenes with tiles}.
-
- \row \o Q3Canvas::setTiles() \o See \l{Porting scenes with tiles}.
-
- \row \o Q3Canvas::setUnchanged() \o There is no equivalent in
- Graphics View. This call can usually be removed with no side
- effects.
-
- \row \o Q3Canvas::setUpdatePeriod() \o There is no concept of an
- update period in the new API; instead, you can connect
- QTimer::timeout() to the QGraphicsScene::update() slot to obtain
- similar functionality. See also QGraphicsItemAnimation.
-
- \row \o Q3Canvas::size() \o
- \tt{QGraphicsScene::sceneRect().size()} returns a QSizeF, with
- double precision coordinates.
-
- \row \o Q3Canvas::validChunk() \o To determine if an area is
- inside the scene area or not, you can combine
- QRectF::intersects() with QGraphicsScene::sceneRect().
-
- \row \o Q3Canvas::resized() \o QGraphicsScene emits
- \l{QGraphicsScene::sceneRectChanged()}{sceneRectChanged()}
- whenever the scene rect changes.
-
- \row \o Q3Canvas::drawBackground() \o You can reimplement
- QGraphicsScene::drawBackground() to render the scene
- background. You can also reimplement
- QGraphicsView::drawBackground() to override this background if
- you need different backgrounds for different views.
-
- \row \o Q3Canvas::drawForeground() \o You can reimplement
- QGraphicsScene::drawForeground() to render the scene
- foreground. You can also reimplement
- QGraphicsView::drawForeground() to override this foreground if
- you need different foregrounds for different views.
-
- \endtable
-
- \section2 Porting scenes with tiles
-
- QGraphicsScene does not provide an API for tiles. However, you
- can achieve similar behavior by drawing pixmaps in a reimplementation of
- QGraphicsScene::drawBackground().
-
- Q3Canvas' tile support is based on providing one pixmap
- containing tiles of a fixed width and height, and then
- accessing them (reading and replacing tiles) by index. The
- tiles in the pixmap are arranged from the left to right, top
- to bottom.
-
- \table
- \row \i 0 \i 1 \i 2 \i 3
- \row \i 4 \i 5 \i 6 \i 7
- \endtable
-
- With Graphics View, this pixmap can be stored as a member of a
- subclass of QGraphicsScene. The three main functions that make
- out the public tile API can then be declared as new members of
- this class. Here is one example of how to implement tile support:
-
- \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 1
-
- Depending on how your scene uses tiles, you may be able to
- simplify this approach. In this example, we will try to mimic the behavior
- of the Q3Canvas functions.
-
- We start by creating a subclass of QGraphicsScene ("TileScene").
- In this class, we declare two of the tile
- functions from Q3Canvas, and we then add two helper function that returns the
- rectangle for a certain tile in our tile pixmap. We will use a
- two-dimensional vector of ints to keep track of what tiles should
- be used at what parts of the scene.
-
- \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 2
-
- In setTiles(), we store the pixmap and tile properties as
- members of the class. Then we resize the tiles vector
- to match the width and height of our tile grid.
-
- \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 3
-
- The setTile() function updates the tiles index, and then
- updates the corresponding rect in the scene by calling
- tileRect().
-
- \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 4
-
- The first tileRect() function returns a QRect for the tile at
- position (x, y).
-
- \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 5
-
- The second tileRect() function returns a QRect for a tile number.
- With these functions in place, we can implement the drawBackground()
- function.
-
- \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 6
-
- In drawBackground(), we redraw all tiles that have been
- exposed by intersecting each tile rect with the exposed background
- area.
-
- \section1 Porting from Q3CanvasView
-
- The closest equivalent to Q3CanvasView in Graphics View is
- called QGraphicsView. In most cases, this is the easiest
- class to port. In addition to providing all of Q3CanvasView's
- functionality, QGraphicsView includes some useful new features. You
- can read more about this in QGraphicsView's documentation.
-
- \section2 Porting table
-
- \table
- \header \o Q3CanvasView \o QGraphicsView
-
- \row \o Q3CanvasView::Q3CanvasView() \o QGraphicsView provides
- the same constructors as Q3CanvasView, but without the name
- and flags arguments. You can set the name by calling
- \l{QWidget::setObjectName()}{setObjectName()}, and the flags by
- calling \l{QWidget::setWindowFlags()}{setWindowFlags()}.
-
- \row \o Q3CanvasView::canvas() \o QGraphicsView::scene()
- returns the scene that is currently associated with the
- view. QGraphicsScene also provides the opposite function,
- QGraphicsScene::views(), which returns a list of views
- observing the scene.
-
- \row \o Q3CanvasView::inverseWorldMatrix() \o You can call
- QGraphicsView::matrix() and QMatrix::inverted().
- QGraphicsView::mapToScene() and QGraphicsView::mapFromScene()
- allow transforming of viewport shapes to scene shapes, and
- vice versa.
-
- \row \o Q3CanvasView::setCanvas() \o QGraphicsView::setScene().
-
- \row \o Q3CanvasView::setWorldMatrix() \o
- QGraphicsView::setMatrix(), QGraphicsView::rotate(),
- QGraphicsView::scale(), QGraphicsView::shear() and
- QGraphicsView::translate().
-
- \row \o Q3CanvasView::worldMatrix() \o QGraphicsView::matrix()
-
- \row \o Q3CanvasView::drawContents() \o The
- QGraphicsView::drawBackground() function draws the background,
- QGraphicsView::drawItems() draws the items, and
- QGraphicsView::drawForeground() draws the foreground of the
- scene in scene coordinates. You can also reimplement these
- functions in QGraphicsScene.
-
- \endtable
-
- \section2 Other differences
-
- QGraphicsView can cache the visible contents of the scene,
- similar to how Q3Canvas::setDoubleBuffering() could cache the
- entire scene contents. You can call
- QGraphicsView::setCacheMode() to configure cacheing, and
- QGraphicsView::resetCachedContent() invalidates the cache.
-
- For improved navigation support, you can set a resize or
- transformation anchor through QGraphicsView::resizeAnchor and
- QGraphicsView::transformationAnchor. This allows you to easily
- rotate and zoom the view while keeping the center fixed, or
- zooming towards the position under the mouse cursor. In
- addition, if you set the QGraphicsView::dragMode of the view,
- QGraphicsView will provide rubber band selection or
- click-and-pull navigation using the
- \l{Qt::OpenHandCursor}{OpenHandCursor} and
- \l{Qt::ClosedHandCursor}{ClosedHandCursor} cursors.
-
- \section1 Porting from Q3CanvasItem
-
- The closest equivalent to Q3CanvasItem in Graphics View is
- called QGraphicsItem. Deriving from this class is very common,
- and because of that, porting from Q3CanvasItem often involves
- more work than Q3Canvas and Q3CanvasView.
-
- Q3CanvasItem has become easier to use, easier to subclass, and more
- powerful with QGraphicsItem. The key difference from Q3CanvasItem lies
- in event propagation and item groups, but you will also find several
- convenient new features, such as support for tooltips, cursors, item
- transformation and drag and drop. You can read all about QGraphicsItem
- in its own class documentation.
-
- This section starts with a table that shows how to port each function
- from Q3CanvasItem to QGraphicsItem. Immediately after that, each of
- Q3CanvasItem's standard subclasses have a section of their own.
-
- \table
- \header \o Q3CanvasItem \o QGraphicsItem
-
- \row \o Q3CanvasItem::advance() \o QGraphicsItem::advance() is
- provided for compatibility. QGraphicsScene::advance() calls
- QGraphicsItem::advance() for all items. See also QTimeLine and
- QGraphicsItemAnimation.
-
- \row \o Q3CanvasItem::animated() \o No equivalent; all items
- are advanced by QGraphicsScene::advance().
-
- \row \o Q3CanvasItem::boundingRectAdvanced() \o No
- equivalent. You can translate QGraphicsItem::boundingRect()
- instead (see QRectF::translate()).
-
- \row \o Q3CanvasItem::canvas() \o QGraphicsItem::scene()
-
- \row \o Q3CanvasItem::collidesWith() \o
- QGraphicsItem::collidesWithItem() and
- QGraphicsItem::collidesWithPath().
-
- \row \o Q3CanvasItem::collisions() \o
- QGraphicsItem::collidingItems() returns a list of all items
- that collide with an item. You can specify whether you want
- fast, rough estimate collision between bounding rectangles, or
- the slower, more accurate shapes.
-
- \row \o Q3CanvasItem::draw() \o QGraphicsItem::paint(). See
- also QStyleOptionGraphicsItem, QGraphicsScene::drawItems() and
- QGraphicsView::drawItems().
-
- \row \o Q3CanvasItem::hide() \o QGraphicsItem::hide() or
- QGraphicsItem::setVisible(). \l{QGraphicsItem}s are \e visible by
- default; \l{Q3CanvasItem}s, however, are not.
-
- \row \o Q3CanvasItem::isActive() \o No equivalent. To achieve
- similar behavior, you can add this property in a custom
- subclass of QGraphicsItem.
-
- \row \o Q3CanvasItem::isVisible() \o
- QGraphicsItem::isVisible(). \l{QGraphicsItem}s are \e visible by
- default; \l{Q3CanvasItem}s, however, are not.
-
- \row \o Q3CanvasItem::move() \o You can call
- QGraphicsItem::setPos() to change the position of the item.
-
- \row \o Q3CanvasItem::rtti() \o QGraphicsItem::type() and qgraphicsitem_cast().
-
- \row \o Q3CanvasItem::setActive() \o No equivalent.
-
- \row \o Q3CanvasItem::setAnimated() \o No equivalent; all
- items are by default "animated" (i.e.,
- QGraphicsScene::advance() advances all items on the scene).
-
- \row \o Q3CanvasItem::setCanvas() \o You can call
- QGraphicsScene::addItem(), or pass a pointer to the canvas to
- QGraphicsItem's constructor.
-
- \row \o Q3CanvasItem::setVelocity() \o No equivalent. You can
- add x and y velocity as member data of your class, and call
- QGraphicsItem::moveBy(x, y) from inside
- QGraphicsItem::advance(). See also QTimeLine and
- QGraphicsItemAnimation.
-
- \row \o Q3CanvasItem::setVisible() \o
- QGraphicsItem::setVisible(). \l{QGraphicsItem}s are \e visible by
- default; \l{Q3CanvasItem}s, however, are not.
-
- \row \o Q3CanvasItem::setX() \o QGraphicsItem::setPos()
- \row \o Q3CanvasItem::setY() \o QGraphicsItem::setPos()
-
- \row \o Q3CanvasItem::setXVelocity() \o No equivalent.
- \row \o Q3CanvasItem::setYVelocity() \o No equivalent.
-
- \row \o Q3CanvasItem::setZ() \o QGraphicsItem::setZValue()
-
- \row \o Q3CanvasItem::show() \o QGraphicsItem::show() or
- QGraphicsItem::setVisible(). \l{QGraphicsItem}s are \e visible by
- default; \l{Q3CanvasItem}s, however, are not.
-
- \row \o Q3CanvasItem::xVelocity() \o No equivalent.
- \row \o Q3CanvasItem::yVelocity() \o No equivalent.
-
- \endtable
-
- Note that some virtual functions that have passed on to
- QGraphicsItem have lost their virtuality. An example is
- Q3CanvasItem::moveBy(), which was often used to track movement of
- items. In this case, the virtual QGraphicsItem::itemChange() has
- taken over as a substitute.
-
- \section2 Q3CanvasPolygonalItem
-
- The closest equivalent to Q3CanvasPolygonalItem in
- Graphics View is called QAbstractGraphicsShapeItem. Unlike
- Q3CanvasPolygonalItem, it does not define area points
- (Q3CanvasPolygonalItem::areaPoints()); instead, each
- item's geometry is stored as a member of the subclasses.
-
- The Q3CanvasPolygonalItem::drawShape() function is no longer
- available; instead, you can set the brush and pen from inside
- QGraphicsItem::paint().
-
- \table
- \header \o Q3CanvasPolygonalItem \o QAbstractGraphicsShapeItem
-
- \row \o Q3CanvasPolygonalItem::areaPoints() \o No equivalent; each
- item's geometry is stored in the respective subclass.
-
- \row \o Q3CanvasPolygonalItem::areaPointsAdvanced() \o No
- equivalent; you can use QPolygonF::translate() or
- QPainterPath::translate() instead.
-
- \row \o Q3CanvasPolygonalItem::drawShape() \o
- QGraphicsItem::paint(). You can set the pen and brush from inside
- this function.
-
- \row \o Q3CanvasPolygonalItem::invalidate() \o Call
- QGraphicsItem::prepareGeometryChange() before changing the
- item's geometry.
-
- \row \o Q3CanvasPolygonalItem::isValid() \o No equivalent;
- items' geometry is always in a valid state.
-
- \row \o Q3CanvasPolygonalItem::winding() \o This function is only
- useful for polygon items and path items; see
- QGraphicsPolygonItem::fillRule(), and QPainterPath::fillRule() for
- QGraphicsPathItem.
-
- \endtable
-
- \section2 Q3CanvasEllipse
-
- The closest equivalent to Q3CanvasEllipse in Graphics View
- is called QGraphicsEllipseItem. The most noticable
- difference to QGraphicsEllipseItem is that the ellipse is
- not longer drawn centered around its position; rather, it
- is drawn using a bounding QRectF, just like
- QPainter::drawEllipse().
-
- For compatibility, you may want to shift the ellipse up and to the
- left to keep the ellipse centered. Example:
-
- \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 7
-
- Note: QGraphicsEllipseItem uses QAbstractGraphicsShapeItem::pen()
- for outlines, whereas Q3CanvasEllipse did not use
- Q3CanvasPolygonalItem::pen().
-
- \table
- \header \o Q3CanvasEllipse \o QGraphicsEllipseItem
-
- \row \o Q3CanvasEllipse::angleLength() \o QGraphicsEllipseItem::spanAngle()
-
- \row \o Q3CanvasEllipse::angleStart() \o QGraphicsEllipseItem::startAngle()
-
- \row \o Q3CanvasEllipse::setAngles() \o
- QGraphicsEllipseItem::setStartAngle() and
- QGraphicsEllipseItem::setSpanAngle()
-
- \row \o Q3CanvasEllipse::setSize() \o QGraphicsEllipseItem::setRect()
-
- \endtable
-
- \section2 Q3CanvasLine
-
- The closest equivalent to Q3CanvasLine in Graphics View is
- called QGraphicsLineItem.
-
- \table
- \header \o Q3CanvasLine \o QGraphicsLineItem
-
- \row \o Q3CanvasLine::endPoint() \o QGraphicsLineItem::line() and QLineF::p2()
-
- \row \o Q3CanvasLine::setPoints() \o QGraphicsLineItem::setLine()
-
- \row \o Q3CanvasLine::startPoint() \o QGraphicsLineItem::line()
- and QLineF::p1()
-
- \endtable
-
- \section2 Q3CanvasPolygon
-
- The closest equivalent to Q3CanvasPolygon in Graphics View
- is called QGraphicsPolygonItem.
-
- \table
- \header \o Q3CanvasPolygon \o QGraphicsPolygonItem
-
- \row \o Q3CanvasPolygon::areaPoints() \o
- QGraphicsPolygonItem::polygon() and QGraphicsItem::mapToParent()
-
- \row \o Q3CanvasPolygon::points() \o QGraphicsPolygonItem::polygon()
-
- \row \o Q3CanvasPolygon::setPoints() \o QGraphicsPolygonItem::setPolygon()
-
- \endtable
-
- \section2 Q3CanvasSpline
-
- The closest equivalent to Q3CanvasSpline in Graphics View
- is called QGraphicsPathItem. This item can be used to
- describe any type of path supported by QPainter.
-
- Q3CanvasSpline takes its control points as a Q3PointArray, but
- QPainterPath operates on a sequence of calls to
- QPainterPath::moveTo() and QPainterPath::cubicTo(). Here is how
- you can convert a bezier curve Q3PointArray to a QPainterPath:
-
- \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 8
-
- Note: QGraphicsPathItem uses QAbstractGraphicsShapeItem::pen() for
- outlines, whereas Q3CanvasSpline did not use
- Q3CanvasPolygonalItem::pen().
-
- \table
- \header \o Q3CanvasSpline \o QGraphicsPathItem
-
- \row \o Q3CanvasSpline::closed() \o No equivalent. You can call
- QPainterPath::closeSubPath() to close a subpath explicitly.
-
- \endtable
-
- \section2 Q3CanvasRectangle
-
- The closest equivalent to Q3CanvasRectangle in Graphics
- View is called QGraphicsRectItem.
-
- \table
- \header \o Q3CanvasRectangle \o QGraphicsRectItem
-
- \row \o Q3CanvasRectangle::height() \o QGraphicsRectItem::rect()
- and QRectF::height()
-
- \row \o Q3CanvasRectangle::setSize() \o QGraphicsRectItem::setRect()
-
- \row \o Q3CanvasRectangle::size() \o QGraphicsRectItem::rect() and QRectF::size()
-
- \row \o Q3CanvasRectangle::width() \o QGraphicsRectItem::rect() and QRectF::width()
-
- \row \o Q3CanvasRectangle::chunks() \o No equivalent.
-
- \endtable
-
- \section2 Q3CanvasSprite
-
- Q3CanvasSprite is the item class that differs the most from its
- Q3Canvas predecessor. The closest resemblance of Q3CanvasSprite in
- Graphics View is QGraphicsPixmapItem.
-
- Q3CanvasSprite supports animated pixmaps; QGraphicsPixmapItem,
- however, is a simple single-frame pixmap item. If all you need is
- a pixmap item, porting is straight-forward. If you do need the
- animation support, extra work is required; there is no direct
- porting approach.
-
- For the \l{Ported Asteroids Example}, a subclass of
- QGraphicsPixmapItem is used to replace Q3CanvasSprite, storing a
- list of pixmaps and a frame counter. The animation is advanced in
- QGraphicsItem::advance().
-
- \section3 Q3CanvasPixmap, Q3CanvasPixmapArray
-
- These classes have been removed from the API. You can use
- QPixmap instead of Q3CanvasPixmap, and QList instead of
- Q3CanvasPixmapArray.
-
- Q3CanvasPixmapArray included convenience for loading a
- sequence of pixmaps or masks using a path with a wildcard (see
- Q3CanvasPixmapArray::readPixmaps() and
- Q3CanvasPixmapArray::readCollisionMasks()). To achieve similar
- functionality using Graphics View, you can load the images by
- using QDir:
-
- \snippet doc/src/snippets/code/doc_src_porting4-canvas.qdoc 9
-
- \section2 Q3CanvasText
-
- Q3CanvasText has been split into two classes in Graphics View:
- QGraphicsSimpleTextItem and QGraphicsTextItem. For porting,
- QGraphicsSimpleTextItem should be adequate. QGraphicsTextItem
- provides advanced document structuring features similar to that of
- QTextEdit, and it also allows interaction (e.g., editing and
- selection).
-
- \table
- \header \o Q3CanvasText \o QGraphicsSimpleTextItem
-
- \row \o Q3CanvasText::color() \o QGraphicsSimpleTextItem::pen().
-
- \row \o Q3CanvasText::setColor() \o QGraphicsSimpleTextItem::setPen().
-
- \row \o Q3CanvasText::textFlags() \o Use QGraphicsTextItem instead.
-
- \endtable
-
-
- \section2 Q3CanvasItemList
-
- Use QList instead.
-
- \section1 Other Resources
-
- The \l{Porting to Qt 4.2's Graphics View} article in Qt Quarterly 21 covered the
- process of porting the Qt 3 canvas example to Qt 4.
- The result of this is the \l{Ported Canvas Example}{Ported Canvas} example.
-*/
diff --git a/doc/src/porting4-designer.qdoc b/doc/src/porting4-designer.qdoc
deleted file mode 100644
index d35639262..000000000
--- a/doc/src/porting4-designer.qdoc
+++ /dev/null
@@ -1,349 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page porting4-designer.html
- \title Porting UI Files to Qt 4
- \contentspage {Porting Guides}{Contents}
- \previouspage Porting to Qt 4 - Drag and Drop
- \nextpage Porting to Graphics View
- \ingroup porting
- \brief Information about changes to the UI file format in Qt 4.
-
- Qt Designer has changed significantly in the Qt 4 release. We
- have moved away from viewing Qt Designer as an IDE and
- concentrated on creating a robust form builder which can be
- extended and embedded in existing IDEs. Our efforts are ongoing
- and include the \l{Visual Studio Integration},
- as well as integrating Designer with KDevelop and possibly other
- IDEs.
-
- The most important changes in Qt Designer 4 which affect porting
- for UI files are summarized below:
-
- \list
- \o \bold{Removed project manager.}
- Qt Designer now only reads and edits UI
- files. It has no notion of a project file (\c .pro).
-
- \o \bold{Removed code editor.}
- Qt Designer can no longer be used to edit source files.
-
- \o \bold{Changed format of UI files.}
- Qt Designer 4 cannot read files created by Qt Designer 3 and
- vice versa. However, we provide the tool \c uic3 to generate Qt
- 4 code out of Qt 3 UI files, and to convert old UI files
- into a format readable by Qt Designer 4.
-
- \o \bold{Changed structure of the code generated by \c uic.}
- The \c myform.ui file containing the form \c MyForm is now
- converted into a single header file \c ui_myform.h, which
- contains the declaration and inline definition of a POD class
- \c Ui::MyForm.
-
- \o \bold{New resource file system.} Icon data is no longer
- stored in the UI file. Instead, icons are put into resource
- files (\c .qrc).
- \endlist
-
- The rest of this document explains how to deal with the main
- differences between Qt Designer 3 and Qt Designer 4:
-
- \tableofcontents
-
- See \l{Porting to Qt 4} and \l{qt3to4 - The Qt 3 to 4 Porting
- Tool} for more information about porting from Qt 3 to Qt 4. See
- also the \l{Qt Designer Manual}.
-
- \section1 uic Output
-
- In Qt 3, \c uic generated a header file and an implementation for
- a class, which inherited from one of Qt's widgets. To use the
- form, the programmer included the generated sources into the
- application and created an instance of the class.
-
- In Qt 4, \c uic creates a header file containing a POD class. The
- name of this class is the object name of the main container,
- qualified with the \c Ui namespace (e.g., \c Ui::MyForm). The
- class is implemented using inline functions, removing the need of
- a separate \c .cpp file. Just as in Qt 3, this class contains
- pointers to all the widgets inside the form as public members. In
- addition, the generated class provides the public method \c
- setupUi().
-
- The class generated by \c uic is not a QWidget; in fact, it's not
- even a QObject. Instead, it is a class which knows how to
- populate an instance of a main container with the contents of the
- form. The programmer creates the main container himself, then
- passes it to \c setupUi().
-
- For example, here's the \c uic output for a simple \c
- helloworld.ui form (some details were removed for simplicity):
-
- \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 0
-
- In this case, the main container was specified to be a QWidget
- (or any subclass of QWidget). Had we started with a QMainWindow
- template in Qt Designer, \c setupUi()'s parameter would be of
- type QMainWindow.
-
- There are two ways to create an instance of our form. One
- approach is to create an instance of the \c Ui::HelloWorld class,
- an instance of the main container (a plain QWidget), and call \c
- setupUi():
-
- \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 1
-
- The second approach is to inherit from both the \c Ui::HelloWorld
- class and the main container, and to call \c setupUi() in the
- constructor of the subclass. In that case, QWidget (or one of
- its subclasses, e.g. QDialog) must appear first in the base class
- list so that \l{moc} picks it up correctly. For example:
-
- \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 2
-
- This second method is useful when porting Qt 3 forms to Qt 4. \c
- HelloWorldWidget is a class whose instance is the actual form
- and which contains public pointers to all the widgets in it. It
- therefore has an interface identical to that of a class generated
- by \c uic in Qt 3.
-
- Creating POD classes from UI files is more flexible and
- generic than the old approach of creating widgets. Qt Designer
- does not need to know anything about the main container apart from
- the base widget class it inherits. Indeed, \c Ui::HelloWorld can
- be used to populate any container that inherits QWidget.
- Conversely, all non-GUI aspects of the main container may be
- implemented by the programmer in the application's sources
- without reference to the form.
-
- \section1 Working with uic3
-
- Qt 4 comes with the tool \c uic3 for working with old \c .ui
- files. It can be used in two ways:
-
- \list 1
- \o To generate headers and source code for a widget to implement any
- custom signals and slots added using Qt Designer 3.
- \o To generate a new UI file that can be used with Qt Designer 4.
- \endlist
-
- You can use both these methods in combination to obtain UI, header
- and source files that you can use as a starting point when porting
- your user interface to Qt 4.
-
- The first method generates a Qt 3 style header and implementation
- which uses Qt 4 widgets (this includes the Qt 3 compatibility classes
- present in the Qt3Support library). This process should be familiar to
- anyone used to working with Qt Designer 3:
-
- \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 3
-
- The resulting files \c myform.h and \c myform.cpp implement the
- form in Qt 4 using a QWidget that will include custom signals,
- slots and connections specified in the UI file. However,
- see below for the \l{#Limitations of uic3}{limitations} of this
- method.
-
- The second method is to use \c uic3 to convert a Qt Designer 3 \c .ui
- file to the Qt Designer 4 format:
-
- \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 4
-
- The resulting file \c myform4.ui can be edited in Qt Designer 4. The
- header file for the form is generated by Qt 4's \c uic. See the
- \l{Using a Designer UI File in Your Application} chapter of the
- \l{Qt Designer Manual} for information about the preferred ways to
- use forms created with Qt Designer 4.
-
- \c uic3 tries very hard to map Qt 3 classes and their properties to
- Qt 4. However, the behavior of some classes changed significantly
- in Qt 4. To keep the form working, some Qt 3 classes are mapped
- to classes in the Qt3Support library. Table 1 shows a list of
- classes this applies to.
-
- \table
- \header \o Qt 3 class \o Qt 4 class
- \row \o \c QButtonGroup \o Q3ButtonGroup
- \row \o \c QDateEdit \o Q3DateEdit
- \row \o \c QDateTimeEdit \o Q3DateTimeEdit
- \row \o \c QGroupBox \o Q3GroupBox
- \row \o \c QListBox \o Q3ListBox
- \row \o \c QListView \o Q3ListView
- \row \o \c QMainWindow \o Q3MainWindow
- \row \o \c QTextEdit \o Q3TextEdit
- \row \o \c QTextView \o Q3TextView
- \row \o \c QTimeEdit \o Q3TimeEdit
- \row \o \c QWidgetStack \o Q3WidgetStack
- \row \o \c QWizard \o Q3Wizard
- \endtable
-
- \section1 Limitations of uic3
-
- Converting Qt 3 UI files to Qt 4 has some limitations. The
- most noticeable limitation is the fact that since \c uic no
- longer generates a QObject, it's not possible to define custom
- signals or slots for the form. Instead, the programmer must
- define these signals and slots in the main container and connect
- them to the widgets in the form after calling \c setupUi(). For
- example:
-
- \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 5
-
- A quick and dirty way to port forms containing custom signals and
- slots is to generate the code using \c uic3, rather than \c uic. Since
- \c uic3 does generate a QWidget, it will populate it with custom
- signals, slots and connections specified in the UI file.
- However, \c uic3 can only generate code from Qt 3 UI files, which
- implies that the UI files never get translated and need to be
- edited using Qt Designer 3.
-
- Note also that it is possible to create implicit connections
- between the widgets in a form and the main container. After \c
- setupUi() populates the main container with child widgets it
- scans the main container's list of slots for names with the form
- \tt{on_\e{objectName}_\e{signalName}().}
-
- If the form contains a widget whose object name is
- \tt{\e{objectName}}, and if that widget has a signal called
- \tt{\e{signalName}}, then this signal will be connected to the
- main container's slot. For example:
-
- \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 6
-
- Because of the naming convention, \c setupUi() automatically
- connects \c pushButton's \c clicked() signal to \c
- HelloWorldWidget's \c on_pushButton_clicked() slot.
-
- \section1 Icons
-
- In Qt 3, the binary data for the icons used by a form was stored
- in the UI file. In Qt 4 icons and any other external files
- can be compiled into the application by listing them in a \l{The
- Qt Resource System}{resource file} (\c .qrc). This file is
- translated into a C++ source file using Qt's resource compiler
- (\c rcc). The data in the files is then available to any Qt class
- which takes a file name argument.
-
- Imagine that we have two icons, \c yes.png and \c no.png. We
- create a resource file called \c icons.qrc with the following
- contents:
-
- \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 7
-
- Next, we add the resource file to our \c .pro file:
-
- \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 8
-
- When \c qmake is run, it will create the appropriate Makefile
- rules to call \c rcc on the resource file, and compile and link
- the result into the application. The icons may be accessed as
- follows:
-
- \snippet doc/src/snippets/code/doc_src_porting4-designer.qdoc 9
-
- In each case, the leading colon tells Qt to look for the file in
- the virtual file tree defined by the set of resource files
- compiled into the application instead of the file system.
-
- In the \c .qrc file, the \c qresource tag's \c prefix attribute
- is used to arrange the files into categories and set a virtual
- path where the files will be accessed.
-
- Caveat: If the resource file was not linked directly into the
- application, but instead into a dynamic or static library that
- was later linked with the application, its virtual file tree will
- not be available to QFile and friends until the Q_INIT_RESOURCE()
- macro is called. This macro takes one argument, which is the name
- of the \c .qrc file, without the path or the file extension. A
- convenient place to initialize resources is at the top of the
- application's \c main() function.
-
- In Qt Designer 4, we can associate any number of resource files
- with a form using the resource editor tool. The widgets in the
- form can access all icons specified in its associated resource
- files.
-
- In short, porting of icons from a Qt 3 to a Qt 4 form involves
- the following steps:
-
- \list 1
- \o Use \c{uic3 -convert} to obtain a UI file understood by
- Qt Designer 4.
-
- \o Create a \c .qrc file with a list of all the icon files.
-
- \o Add the resource file to the \c .pro file.
-
- \o Open the form in Qt Designer 4 and add the resource file to the
- form's resource editor.
-
- \o Set the icon properties for the appropriate widgets.
- \endlist
-
- \section1 Custom Widgets
-
- Qt Designer 3 supported defining custom widgets by specifying
- their name, header file and methods. In Qt Designer 4, a custom
- widget is always created by "promoting" an existing Qt widget to
- a custom class. Qt Designer 4 assumes that the custom widget will
- inherit from the widget that has been promoted. In the form
- editor, the custom widget will retain the looks, behavior,
- properties, signals and slots of the base widget. It is not
- currently possible to tell Qt Designer 4 that the custom widget
- will have additional signals or slots.
-
- \c{uic3 -convert} handles the conversion of custom widgets to the
- new \c .ui format, however all custom signals and slots are lost.
- Furthermore, since Qt Designer 3 never knew the base widget class
- of a custom widget, it is taken to be QWidget. This is often
- sufficient. If not, the custom widgets have to be inserted
- manually into the form.
-
- Custom widget plugins, which contain custom widgets to be used in
- Qt Designer, must themselves be ported before they can be used in
- forms ported with \c{uic3}.
- The \l{Porting to Qt 4} document contains information about general
- porting issues that may apply to the custom widget code itself, and
- the \l{Creating Custom Widgets for Qt Designer} chapter of the
- \l{Qt Designer Manual} describes how the ported widget should be
- built in order to work in Qt Designer 4.
-*/
diff --git a/doc/src/porting4-overview.qdoc b/doc/src/porting4-overview.qdoc
deleted file mode 100644
index 5eff1ba14..000000000
--- a/doc/src/porting4-overview.qdoc
+++ /dev/null
@@ -1,373 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page porting4-overview.html
- \title Moving from Qt 3 to Qt 4
- \ingroup porting
- \brief Porting advice for authors of new and existing Qt 3 applications.
-
- This document describes which parts of Qt should be used when
- writing an application with Qt 3, so that it can be upgraded to
- use Qt 4 later with a minimum of effort. However, the advice may
- also be useful to developers who are porting existing applications
- from Qt 3 to Qt 4.
-
- For a detailed overview
- of the porting process for existing Qt 3 applications, see the
- \l{Porting to Qt 4} document.
-
- \tableofcontents
-
- Since Qt 4 provides important new functionality at the cost of
- some compatibility with Qt 3, it is useful for developers of
- Qt 3-based applications to learn how to take advantage of
- Qt 3's API now while preparing for future changes that will be
- needed when upgrading to Qt 4.
-
- Certain advanced Qt 3 features were moved to the Qt 3 support
- library (\l{Qt3Support}) in Qt 4.0, and have been gradually
- replaced in subsequent releases of Qt 4.
-
- Making Qt 3 applications as portable to Qt 4 as possible
- enables a smooth transition between versions of Qt in the
- long term, and allows for a stable development process
- throughout.
-
- \section1 Qt 3 Features to Avoid
-
- Although we are proud of the level of stability we have achieved
- with Qt, it is important to realise that, for Qt 4 to be a
- substantial improvement over Qt 3, certain features have
- been revised to make the framework more maintainable for us
- and more usable for developers. It is therefore useful to
- know which features of Qt 3 should be avoided to help save
- time during a later porting effort to Qt 4. Note that it is
- still possible to use many of the following classes and
- features through the use of the \l{Qt3Support} module.
-
- \section2 Painting Outside Paint Events
-
- In Qt 3, under certain circumstances, it was possible to use
- QPainter to draw on a given custom widget outside its
- \l{QWidget::}{paintEvent()} reimplementation. In Qt 4, in most
- situations, painting must occur within a widget's paint event
- handler.
-
- On X11, it is possible to set the \l{Qt::WA_PaintOutsidePaintEvent}
- attribute on widgets to keep existing code, but we recommend
- restricting the use of painting code to within paint event handlers
- where possible.
-
- More information about this change can be found in the
- \l{Porting to Qt 4#Painting and Redrawing Widgets}{Painting and Redrawing Widgets}
- section of the \l{Porting to Qt 4} document.
-
- \section2 Qt Designer
-
- The version of Qt Designer supplied with Qt 3 provided
- extensive code editing and project management features
- (control over \c{.ui.h} and \c{.pro} files), and encouraged
- users to design main window applications from within the
- Qt Designer environment.
-
- The version of Qt Designer supplied with Qt 4 is intended
- to be integrated with other software development tools (such
- as integrated development environments), and does not
- support these project-level features.
-
- We recommend using one of the
- \l{Using a Designer UI File in Your Application}{form subclassing approaches}
- with forms created using Qt Designer. This avoids the need
- to use \c{.ui.h} files and special purpose code editors.
-
- Existing Qt 3 forms created using Qt Designer can be gradually
- ported to Qt 4 by following the advice in the
- \l{Porting UI Files to Qt 4} guide. However, some extra effort
- will be required to move application logic from \c{.ui.h} files
- into the main body of a Qt 4 application.
-
- \section2 Menu Items (QMenuItem)
-
- The old-style construction of menus by creating individual
- menu items has been superseded in Qt 4 by the use of
- generic actions which can be used in menus, toolbars, and
- as keyboard shortcuts.
-
- Qt 3 also supports this action-based approach, so, by using
- QAction throughout your application, less work will be
- required to adapt your application to Qt 4.
-
- \section2 Pointer-Based Classes (QPtr*)
-
- Qt 3 provides a group of pointer-based classes (\c QPtrList,
- \c QPtrDict, \c QPtrVector, etc.) that help manage collections
- of pointers to objects (usually QObject subclasses) in an
- application. In addition, the value-based collection classes
- (\c QValueList, \c QValueDict, \c QValueVector, etc.) provide
- a way to store standard value types which cannot be easily stored
- in pointer-based collections.
-
- Qt 4 introduces a single set of collection classes which
- does not require developers to pay as much attention to
- memory allocation and object ownership issues. As a result,
- Qt 3's pointer-based classes have no direct equivalent
- classes in Qt 4.
-
- To ease migration, use Qt 3's value-based classes to store
- most objects, including pointers; for example, use
- \c QValueVector<QWidget *> rather than
- \c QPtrVector<QWidget *>. These can be replaced by
- Qt 4's QVector, QLinkedList, and QList later.
-
- \section2 Other Collection Classes (QStrList, Q*Dict)
-
- Some collection classes in Qt 3 have been deprecated in
- favor of easier to use, higher level alternatives. These
- include the dictionary classes (\c QAsciiDict, \c QDict,
- \c QIntDict, \c QPtrDict) and \c QStrList.
-
- \c QStrList can usually replaced by the higher level QStringList
- class in Qt 3; this is also available in Qt 4. It is
- recommended that you use the QMap class instead of the \c QDict
- classes. In Qt 4, QMap is also complemented by the QHash
- class.
-
- \section2 Memory Arrays (QMemArray)
-
- In Qt 3, the \c QMemArray class is used as a simple array
- container for simple data types. This class is deprecated in
- Qt 4 in favor of the QVector and QVarLengthVector classes
- which provide more powerful and consistent array objects.
-
- Qt 3's closest equivalent class to Qt 4's QVector is the
- \c QValueVector class. For many purposes, this can be used
- instead of \c QMemArray.
-
- \section2 URL Operations (QUrlOperator)
-
- The URL operator in Qt 3 provides an abstract way to
- handle files via HTTP, FTP, and on the local file system.
- However, Qt 4 only provides this functionality through the
- use of the Q3UrlOperator.
-
- From Qt 4.4, the Network Access API provides a subset of the features
- provided by \c QUrlOperator that are mostly intended for use with
- applications that use the HTTP and FTP protocols. See the
- QNetworkRequest, QNetworkReply, and QNetworkAccessManager documentation
- for further details.
-
- It is also possible to perform operations on remote files through
- the QNetworkAccessManager and QFtp classes, and on local files
- with the QFile class.
-
- \section2 SQL Cursors (QSqlCursor)
-
- In Qt 3, one of the preferred methods of working with SQL
- is to use a cursor to manipulate the contents of a database.
- In Qt 4, the preferred method of working with SQL is to use
- the model/view architecture (QSqlQueryModel and QSqlTableModel)
- and, as a result, the cursor interface is only supplied in the
- Q3SqlCursor class.
-
- The easiest way to ensure continuity between Qt 3 and Qt 4
- is to use QSqlQuery rather than \c QSqlCursor,
- and migrate to QSqlQueryModel later.
-
- \section2 Domain Name Service (QDns)
-
- The QDns class in Qt 4 provides a much simpler interface
- than the QDns class in Qt 3, and is mainly used for host
- name resolution.
- As a result, many of the more complex features of Qt 3's
- QDns class are only available through Qt 4's Q3Dns
- compatibility class.
-
- To resolve host names with Qt 3, it is recommended that you
- use the higher level interface of QSocket rather than QDns.
- The equivalent functionality is available in Qt 4 in the
- QAbstractSocket and QHostInfo classes.
-
- \section2 Wizard Dialogs (QWizard)
-
- Qt 3 provides support for "wizard" dialogs in the form of
- the \c QWizard class. Prior to Qt 4.3, this class was made
- available as Q3Wizard, and provides the same interface for
- creating relatively complex wizards.
-
- In Qt 4.3 and later, a revised QWizard class can be used to
- create this kind of dialog, but existing Qt 3 wizard
- implementations may need to be redesigned to work with the
- new QWizard API.
-
- \section2 Abstract Grid Views (QGridView)
-
- Before the introduction of the Qt 3 \c QTable class,
- \c QGridView was the recommended way to create tables of
- custom items.
- With the introduction of \c QTable, the \c QGridView class was
- effectively obsoleted, and the \c QTable class should now be
- used to display tabular information in your Qt 3 application.
- This approach allows you to use QTableWidget as a replacement
- when later porting your application to Qt 4.
-
- \section2 Specialized Scrolling Views
-
- In Qt 3, the \c QScrollView class provides a viewport that can
- be used to display part of a larger widget, and will
- optionally provide scroll bars for navigation purposes.
- In Qt 4, this functionality is superseded by classes such as
- QScrollArea, which provides a more intuitive interface for
- developers to use.
- \c QScrollView is available in Qt 4 as the Q3ScrollView class.
-
- In Qt 3, it is recommended that \c QScrollView should be
- used with child widgets rather than subclassed. However, it
- should be noted that this approach may not be appropriate if
- you need to use extremely large scrolling areas in your
- application, since Qt 3 widgets cannot be wider or taller
- than 32767 pixels.
-
- \section1 Significantly Changed Features
-
- Some Qt 3 features have changed significantly for Qt 4.
- and the recommended way of using them has therefore changed
- significantly, too. This is most notably true for the drag
- and drop API.
-
- Additionally, some of the more specialized features in Qt 3 are
- often used to help customize widgets and add extra polish to an
- application.
- Although these improvements make applications more presentable to
- users, many of them are unnecessary with Qt 4, and may create
- additional porting work.
-
- \section2 Drag and Drop
-
- Qt 4 introduces a simpler and more intuitive implementation
- of drag and drop between widgets, and with other applications.
- As a result, there is no simple approach that can be used to
- make drag and drop in a Qt 3 application easier to port to
- Qt 4.
-
- \section2 Extensive Customization of Item Views
-
- Each of the classes that are used to display list, tree,
- and table items in Qt 3 can be subclassed for the purposes
- of customizing their appearance. The item view framework
- in Qt 4 is implemented according to a different paradigm
- (model/view) which does not allow items to be customized
- using this method.
-
- Although Qt 4 provides compatibility classes (Q3ListBoxItem,
- Q3ListViewItem, and Q3TableItem) that can be used in the same
- way as their Qt 3 counterparts, these cannot be used within
- the standard model/view framework. It is recommended that,
- to minimize porting effort, extensive customization of item
- classes should be avoided in Qt 3, if at all possible.
-
- \section2 Double Buffering
-
- Qt 3 applications often use double buffering for reducing
- flicker when painting custom widgets. This approach is
- unnecessary with Qt 4 because double buffering is
- automatically performed by the paint engine.
-
- It still makes sense to use double buffering in
- Qt 4 in certain contexts. For example, in
- Chapter 5 of \l{GUI Programming with Qt 3}, double buffering
- was presented as a speed optimization and not just as a means
- of reducing flicker.
-
- \section2 Data-Aware Forms
-
- The \c QDataTable, \c QDataBrowser, and \c QDataView classes
- in Qt 3 allow integration between widgets and SQL-based
- databases.
-
- In Qt 4.1 and earlier, the preferred way to create a data-aware
- widget is to connect an generic item view (such as a table view)
- to a SQL model. In Qt 4.2 and later, the QDataWidgetMapper class
- can be used to map data to widgets in a form-based user interface.
-
- New applications written with Qt 3 should use QSqlQuery in
- preference to an approach based on the old-style data-aware
- widgets.
- This offers a choice of porting strategies when later migrating
- the application to Qt 4: You can either continue to use
- QSqlQuery or take the opportunity to use the model/view
- classes to handle database integration.
-
- \section2 Dock Windows and Areas
-
- In Qt 4, the way that dock windows are constructed and used
- in main window applications differs significantly to the
- pattern of use provided by Qt 3. As a result, the introduction
- of a simpler and cleaner API means that Qt 3 applications that
- make extensive use of dock window areas will require careful
- examination when they are ported to Qt 4.
-
- We recommend that the QMainWindow class be used in preference
- to the Q3MainWindow compatibility class when an existing Qt 3
- main window application is ported to Qt 4. Therefore, we
- recommend that specialized use of dock window areas should
- be avoided when writing a Qt 3 application with Qt 4 in mind.
-
- \section2 Custom Styles
-
- The style system used to provide consistent themes for Qt's
- standard widgets has been revised for Qt 4. As a result,
- custom styles for Qt 3 require some porting work to be done
- before they can be used with Qt 4. To ease the porting process,
- we recommend that you avoid implementing custom widget styles
- for Qt 3 applications unless it is absolutely necessary for
- your users.
-
- In Qt 4.2 and later, \l{Qt Style Sheets} can be used to
- implement many common modifications to existing styles, and
- this may be sufficient for Qt 3 applications.
-
- \section2 Events
- In Qt 3, QCloseEvents were not accepted by default. In Qt 4,
- the event handler QWidget::closeEvent() receives QCloseEvents,
- and accepts them by default closing the application. To avoid
- this, please reimplement QWidget::closeEvent().
-*/
diff --git a/doc/src/porting4.qdoc b/doc/src/porting4.qdoc
deleted file mode 100644
index 4efb7be32..000000000
--- a/doc/src/porting4.qdoc
+++ /dev/null
@@ -1,4231 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page porting4.html
- \title Porting to Qt 4
- \contentspage {Porting Guides}{Contents}
- \previouspage Porting Guides
- \nextpage Porting to Qt 4 - Virtual Functions
- \ingroup porting
- \brief An overview of issues and techniques to consider when porting from Qt 3 to Qt 4.
-
-\omit
- ### QFileInfo::PermissionSpec -> QFile::Permission(s?)
- ### refer to porting4-renamedfunctions.qdoc
- ### QApplication library mutex is gone
- ### no integral conversion for containers? strings?
- ### QVector etc. are initialized to 0 by default?
- ### How to port from Qt 2.3 to Qt 4.
- ### missing sort() functions?
- ### QToolTipGroup
- ### QServerSocket -> Q3ServerSocket
-
- ### remove these when the classes are re-ported
-
- ### QApplication::eventLoop()
-
- \row \o void QCheckListItem::paintCell(QPainter *, const QColorGroup &, int, int, int)\row \o void Q3CheckListItem::paintCell(QPainter *, const QPalette &, int, int, int)
- \row \o void QCheckListItem::paintFocus(QPainter *, const QColorGroup &, const QRect &) \o void Q3CheckListItem::paintFocus(QPainter *, const QPalette &, const QRect &)
- \row \o QDataTable: a whole bunch of virtual functions have a different signature
-
- < Function: void QIconViewItem::paintFocus(QPainter *, const QColorGroup &)
- > Function: void QIconViewItem::paintFocus(QPainter *, const QPalette &)
-
- < Function: void QIconViewItem::paintItem(QPainter *, const QColorGroup &)
- > Function: void QIconViewItem::paintItem(QPainter *, const QPalette &)
-
- < Function: bool QUrlOperator::checkValid()
-
- < Function: void QWSInputMethod::setFont(const QFont &)
-
- ### OpenMode or OpenMode
-
- ### QWSDecoration
-\endomit
-
- This document describes the process of porting applications from
- Qt 3 to Qt 4.
- If you haven't yet made the decision about porting, or are unsure
- about whether it is worth it, take a look at the \l{What's New in
- Qt 4}{key features} offered by Qt 4. See also
- \l{Moving from Qt 3 to Qt 4} for tips on how to write Qt 3 code
- that is easy to port to Qt 4.
-
- \bold{Other porting guides:}
-
- \list
- \o \l{Moving from Qt 3 to Qt 4} \mdash covers some high level topics relevant
- to developers porting from Qt 3 to Qt 4.
- \o \l{Porting to Qt 4 - Drag and Drop} \mdash covers differences in the
- way drag and drop is handled between Qt 3 and Qt 4.
- \o \l{Porting UI Files to Qt 4} \mdash describes the new format used to
- describe forms created with \QD.
- \o \l{Porting to Graphics View} \mdash provides a class-by-class overview
- of the differences between Qt 3's canvas API and Qt 4's Graphics
- View framework.
- \o \l{qt3to4 - The Qt 3 to 4 Porting Tool} \mdash provides an overview
- of a tool aimed at helping developers start the process of porting an
- application to Qt 4.
- \endlist
-
- The Qt 4 series is not binary compatible with the 3 series. This
- means programs compiled for Qt 3 must be recompiled to work with
- Qt 4. Qt 4 is also not completely \e source compatible with 3,
- however nearly all points of incompatibility cause compiler
- errors or run-time messages (rather than mysterious results). Qt
- 4 includes many additional features and discards obsolete
- functionality. Porting from Qt 3 to Qt 4 requires some effort,
- but once completed the considerable additional power and
- flexibility of Qt 4 is available for use in your applications.
-
- To port code from Qt 3 to Qt 4:
-
- \list 1
-
- \o Briefly read the porting notes below to get an idea of what to expect.
-
- \o Be sure that your code compiles and runs well on all your target
- platforms with Qt 3.
-
- \o Add the line \c{QT += qt3support} to your \c .pro file if you use
- \c qmake; otherwise, edit your makefile or project file to
- link against the Qt3Support library and add \c -DQT3_SUPPORT to your
- compiler flags. (You might also need to specify other
- libraries. See \l{What's New in Qt 4} for details.)
-
- \o Run the \l qt3to4 porting tool. The tool will go through your
- source code and adapt it to Qt 4.
-
- \o Follow the instructions in the \l{Porting UI Files to Qt 4}
- page to port Qt Designer files.
-
- \o Recompile with Qt 4. For each error, search below for related
- identifiers (e.g., function names, class names). This document
- mentions all relevant identifiers to help you get the information
- you need at the cost of being a little verbose.
-
- \endlist
-
- The \l qt3to4 porting tool replaces occurrences of Qt 3 classes
- that don't exist anymore in Qt 4 with the corresponding Qt 3
- support class; for example, \c QListBox is turned into \c
- Q3ListBox.
-
- At some point, you might want to stop linking against the Qt 3
- support library (\l{Qt3Support}) and take advantage of Qt 4's
- new features. The instructions below explain how to do that for
- each compatibility class.
-
- In addition to the Qt3Support classes (such as \c Q3Action, \c
- Q3ListBox, and \c Q3ValueList), Qt 4 provides compatibility
- functions when it's possible for an old API to cohabit with the
- new one. For example, QString provides a
- QString::simplifyWhiteSpace() compatibility function that's
- implemented inline and that simply calls QString::simplified().
- \bold{The compatibility functions are not documented here; instead,
- they are documented for each class.}
-
- If you have the line \c{QT += qt3support} in your \c .pro file, \c
- qmake will automatically define the \c QT3_SUPPORT symbol, turning
- on compatibility function support. You can also define the symbol
- manually (e.g., if you don't want to link against the \c
- Qt3Support library), or you can define \c QT3_SUPPORT_WARNINGS
- instead, telling the compiler to emit a warning when a
- compatibility function is called. (This works only with GCC 3.2+
- and MSVC 7.)
-
- If you get stuck, ask on the
- \l{http://qt.nokia.com/lists/qt-interest/}{qt-interest}
- mailing list. If you are a licensed customer, you can also contact
- Qt's technical support team.
-
-\omit
- ### what to do with slots that aren't slots anymore
- ### what to do with virtual functions that aren't virtual anymore
- ### what to do with virtual functions that changed signature
-\endomit
-
-\omit
- ### <qtl.h> -- stuff that vanished?
- ### implicit sharing
- ### uint -> int indexes
-\endomit
-
- Table of contents:
-
- \tableofcontents{4}
-
-\omit
- \section1 Header Files
-
- ### New style of headers
-
- \table
- \header \o Old header \o New header
- \row \o \c{<qtl.h>} \o \c{<qalgorithms.h>} or \c{<QtAlgorithms>}
- \endtable
-
- ### Some headers don't include each other anymore...
-\endomit
-
- \section1 Casting and Object Types
-
- In Qt 3, it was possible to use the \c qt_cast() function to determine
- whether instances of QObject subclasses could be safely cast to derived
- types of those subclasses. For example, if a QFrame instance is passed
- to a function whose signature specifies a QWidget pointer as its argument,
- \c qt_cast() could be used to obtain a QFrame pointer so that the
- instance's functions can be accessed.
-
- In Qt 4, much of this functionality is provided by the qobject_cast()
- function, and additional functions also provide similar functionality for
- certain non-QObject types:
-
- \table
- \header \o Qt 3 function \o Qt 4 function
- \row \o T *qt_cast<T *>(QObject *) \o \l{qobject_cast()}{T *qobject_cast<T *>(QObject *)}
- \row \o \o \l{qgraphicsitem_cast()}{T qgraphicsitem_cast<T>(QGraphicsItem *)}
- \row \o \o \l{qstyleoption_cast()}{T qstyleoption_cast<T>(QStyleOption *)}
- \row \o \o \l{qvariant_cast()}{T qvariant_cast<T>(const QVariant &)}
- \row \o \o \l{qdbus_cast()}{T qdbus_cast(const QDBusArgument &)}
- \endtable
-
-\omit
- \section1 Global Functions
-
- \table
- \header \o Qt 3 function \o Qt 4 function
- \row \o cstrcmp() \o strcmp()
- \row \o cstrcpy() \o strcpy()
- \row \o cstrlen() \o strlen()
- \row \o cstrncmp() \o strncmp()
- \row \o qmemmove() \o memmove()
- \endtable
-
- qGLVersion() ###
-
- copyBlt() ###
- bitBlt()
-
- #ifdef compat classes:
- * QLayoutIterator
- * QColorGroup
- * QMenuItem
-
- QWidget visibleRect property compat
- QWidget::BackgroundOrigin compat
-\endomit
-
- \section1 Type Names
-
- The table below lists the classes that have been renamed in Qt 4.
- If you compile your applications with \c QT3_SUPPORT defined, the
- old names will be available.
-
- Whenever you see an occurrence of the name on the left, you can
- safely replace it with the Qt 4 equivalent in your program. The
- \l qt3to4 tool performs the conversion automatically.
-
- \table
- \header \o Qt 3 class name \o Qt 4 class name
- \input porting4-renamedclasses.qdocinc
- \endtable
-
- The table below lists the enums and typedefs that have been
- renamed in Qt 4. If you compile your applications with \c
- QT3_SUPPORT defined, the old names will be available.
-
- Whenever you see an occurrence of the name on the left, you can
- safely replace it with the Qt 4 equivalent in your program. The
- \l qt3to4 tool performs the conversion
- automatically.
-
- \table
- \header \o Qt 3 type name \o Qt 4 type name
- \input porting4-renamedtypes.qdocinc
- \endtable
-
- \omit
- ###
- \row \o QButton::ToggleState \o Use QCheckBox::ToggleState instead.
- \endomit
-
- \section1 Enum Values
-
- The table below lists the enum values that have been renamed in
- Qt 4. If you compile your applications with \c QT3_SUPPORT defined,
- the old names will be available.
-
- Whenever you see an occurrence of the name on the left, you can
- safely replace it with the Qt 4 equivalent in your program. The
- \l qt3to4 tool performs the conversion automatically.
-
- \table
- \header \o Qt 3 enum value name \o Qt 4 enum value name
- \input porting4-renamedenumvalues.qdocinc
- \endtable
-
- In addition, the following \l{Qt::WindowFlags}{window flags} have
- been either replaced with \l{Qt::WidgetAttribute}{widget
- attributes} or have been deprecated:
-
- \table
- \header \o Qt 3 type \o Qt 4 equivalent
- \row \o Qt::WDestructiveClose \o Use QWidget::setAttribute(Qt::WA_DeleteOnClose) instead.
- \row \o Qt::WStaticContents \o{1,2} Use QWidget::setAttribute(Qt::WA_StaticContents) instead.
- \row \o Qt::WNorthWestGravity
- \row \o Qt::WNoAutoErase \o{1,3} Use QWidget::setAttribute(Qt::WA_NoBackground) instead.
- \row \o Qt::WResizeNoErase
- \row \o Qt::WRepaintNoErase
- \row \o Qt::WPaintClever \o Unnecessary in Qt 4.
- \omit ### Check with Matthias \endomit
- \row \o Qt::WMacNoSheet \o Unnecessary in Qt 4.
- \omit ### Check with Sam \endomit
- \endtable
-
- In Qt 4.1, the widget flags used to determine window modality were
- replaced by a single enum that can be used to specify the modal
- behavior of top-level widgets:
-
- \table
- \header \o Qt 3 type \o Qt 4 equivalent
- \row \o Qt::WShowModal \o Use QWidget::setWindowModality(Qt::ApplicationModal) instead.
- \row \o Qt::WGroupLeader \o Use QWidget::setWindowModality(Qt::WindowModal)
- for each child dialog of the group leader, but do not change the modality
- of the group leader itself.
- \endtable
-
- \target properties
- \section1 Properties
-
- Some properties have been renamed in Qt 4, to make Qt's API more
- consistent and more intuitive. For example, QWidget's \c caption
- property has been renamed \c windowTitle to make it clear that it
- refers to the title shown in the window's title bar.
-
- In addition, the property system has been extended to allow
- properties to be redefined in subclasses with the \l Q_PROPERTY()
- macro, removing the need for a \c Q_OVERRIDE() macro.
-
- The table below lists the Qt properties that have been renamed in
- Qt 4. Occurrences of these in \e{Qt Designer} UI files are
- automatically converted to the new name by \c uic.
-
- \table
- \header \o Qt 3 name \o Qt 4 name
- \row \o QButton::accel \o QButton::shortcut
- \row \o QButton::on \o QButton::checked
- \row \o QButton::toggleButton \o QAbstractButton::checkable
- \row \o QDial::lineStep \o QDial::singleStep
- \row \o QDial::maxValue \o QDial::maximum
- \row \o QDial::minValue \o QDial::minimum
- \row \o QDialog::modal \o QDialog::isModal
- \row \o QLineEdit::edited \o QLineEdit::modified
- \row \o QLineEdit::hasMarkedText \o QLineEdit::hasSelectedText
- \row \o QLineEdit::markedText \o QLineEdit::selectedText
- \row \o QObject::name \o QObject::objectName
- \row \o QProgressDialog::progress \o QProgressDialog::value
- \row \o QProgressDialog::totalSteps \o QProgressDialog::maximum
- \row \o QProgressDialog::wasCancelled \o QProgressDialog::wasCanceled
- \row \o QPushButton::iconSet \o QPushButton::icon
- \row \o QScrollBar::draggingSlider \o QScrollBar::sliderDown
- \row \o QScrollBar::lineStep \o QScrollBar::singleStep
- \row \o QScrollBar::maxValue \o QScrollBar::maximum
- \row \o QScrollBar::minValue \o QScrollBar::minimum
- \row \o QSlider::lineStep \o QSlider::singleStep
- \row \o QSlider::maxValue \o QSlider::maximum
- \row \o QSlider::minValue \o QSlider::minimum
- \row \o QSpinBox::lineStep \o QSpinBox::singleStep
- \row \o QSpinBox::maxValue \o QSpinBox::maximum
- \row \o QSpinBox::minValue \o QSpinBox::minimum
- \row \o QTabBar::currentTab \o QTabBar::currentIndex
- \row \o QTabWidget::currentPage \o QTabWidget::currentWidget
- \row \o QToolButton::iconSet \o QToolButton::icon
- \row \o QToolButton::textLabel \o QToolButton::text
- \row \o QWidget::caption \o QWidget::windowTitle
- \row \o QWidget::icon \o QWidget::windowIcon
- \row \o QWidget::iconText \o QWidget::windowIconText
- \endtable
-
- A handful of properties in Qt 3 are no longer properties in Qt 4,
- but the access functions still exist as part of the Qt 4 API.
- These are not used by \e{Qt Designer}; the only case where you
- need to worry about them is in highly dynamic applications that
- use Qt's meta-object system to access properties. Here's the list
- of these properties with the read and write functions that you
- can use instead:
-
- \table
- \header \o Qt 3 property \o Qt 4 read function \o Qt 4 write function
- \row \o QSqlDatabase::connectOptions \o QSqlDatabase::connectOptions() \o QSqlDatabase::setConnectOptions()
- \row \o QSqlDatabase::databaseName \o QSqlDatabase::databaseName() \o QSqlDatabase::setDatabaseName()
- \row \o QSqlDatabase::hostName \o QSqlDatabase::hostName() \o QSqlDatabase::setHostName()
- \row \o QSqlDatabase::password \o QSqlDatabase::password() \o QSqlDatabase::setPassword()
- \row \o QSqlDatabase::port \o QSqlDatabase::port() \o QSqlDatabase::setPort()
- \row \o QSqlDatabase::userName \o QSqlDatabase::userName() \o QSqlDatabase::setUserName()
- \endtable
-
- Some properties have been removed from Qt 4, but the associated
- access functions are provided if \c QT3_SUPPORT is defined to help
- porting to Qt 4. When converting Qt 3 UI files to Qt 4, \c uic
- generates calls to the Qt 3 compatibility functions. Note that
- this only applies to the properties of the Qt3Support library,
- i.e. \c QT3_SUPPORT properties of the other libraries must be
- ported manually when converting Qt 3 UI files to Qt 4.
-
- The table below lists these properties with the read and write
- functions that you can use instead. The documentation for the
- individual functions explains how to replace them with
- non-compatibility Qt 4 functions.
-
- \table
- \header \o Qt 3 property \o Qt 4 read function (\c QT3_SUPPORT)\o Qt 4 write function (\c QT3_SUPPORT)
- \row \o QMenuBar::separator \o QMenuBar::separator() \o QMenuBar::setSeparator()
- \row \o QPushButton::menuButton \o QPushButton::isMenuButton() \o N/A
- \row \o QTabWidget::margin \o QTabWidget::margin() \o QTabWidget::setMargin()
- \row \o QTextEdit::textFormat \o QTextEdit::textFormat() \o QTextEdit::setTextFormat()
- \row \o QWidget::backgroundBrush \o QWidget::backgroundBrush() \o N/A
- \row \o QWidget::backgroundMode \o QWidget::backgroundMode() \o QWidget::setBackgroundMode()
- \row \o QWidget::backgroundOrigin \o QWidget::backgroundOrigin() \o QWidget::setBackgroundOrigin()
- \row \o QWidget::colorGroup \o QWidget::colorGroup() \o QWidget::setColorGroup()
- \row \o QWidget::customWhatsThis \o QWidget::customWhatsThis() \o QWidget::setCustomWhatsThis()
- \row \o QWidget::inputMethodEnabled \o QWidget::inputMethodEnabled() \o QWidget::setInputMethodEnabled()
- \row \o QWidget::ownCursor \o QWidget::ownCursor() \o N/A
- \row \o QWidget::ownFont \o QWidget::ownFont() \o N/A
- \row \o QWidget::ownPalette \o QWidget::ownPalette() \o N/A
- \row \o QWidget::paletteBackgroundColor \o QWidget::paletteBackgroundColor() \o QWidget::setPaletteBackgroundColor()
- \row \o QWidget::paletteBackgroundPixmap \o QWidget::paletteBackgroundPixmap() \o QWidget::setPaletteBackgroundPixmap()
- \row \o QWidget::paletteForegroundColor \o QWidget::paletteForegroundColor() \o QWidget::setPaletteForegroundColor()
- \row \o QWidget::underMouse \o QWidget::underMouse() \o N/A
- \endtable
-
- The following Qt 3 properties and their access functions are no
- longer available in Qt 4. In most cases, Qt 4 provides similar
- functionality.
-
- \table
- \header \o Qt 3 property \o Qt 4 equivalent
- \row \o QButton::autoRepeat \o N/A
- \row \o QButton::autoResize \o Call QWidget:setFixedSize(QWidget::sizeHint()) whenever you change the contents.
- \row \o QButton::exclusiveToggle \o See \l QAbstractButton::autoExclusive.
- \row \o QButton::pixmap \o Use QAbstractButton::icon instead.
- \row \o QButton::toggleState \o Use QCheckBox::setState() and QCheckBox::state() instead.
- \row \o QButton::toggleType \o Use QCheckBox::setTristate() instead.
- \row \o QComboBox::autoResize \o Call QWidget:setFixedSize(QWidget::sizeHint()) whenever you change the contents.
- \row \o QFrame::contentsRect \o Use Q3Frame::contentsRect() instead.
- \row \o QFrame::margin \o Use QWidget::setContentsMargins() instead.
- \row \o QTabBar::keyboardFocusTab \o N/A
- \row \o QToolButton::offIconSet \o Use the \l{QIcon::Off}{off component} of QAbstractButton::icon instead.
- \row \o QToolButton::onIconSet \o Use the \l{QIcon::On}{on component} of QAbstractButton::icon instead.
- \row \o QWidget::microFocusHint \o N/A
- \row \o QMimeSource::serialNumber () \o N/A
- \endtable
-
-\omit
- \section1 Inheritance Chain
-
- ### QMenuBar, etc.
-
- \section1 Null vs. Empty
-
- ###
-\endomit
-
- \section1 Explicit Sharing
-
- Qt 4 is the first version of Qt that contains no \link
- http://qt.nokia.com/doc/3.3/shclass.html explicitly shared
- \endlink classes. All classes that were explicitly shared in Qt 3
- are \e implicitly shared in Qt 4:
-
- \list
- \o QImage
- \o QBitArray
- \o QByteArray
- \o Q3PointArray
- \endlist
-
- This means that if you took a copy of an instance of the class
- (using operator=() or the class's copy constructor), any
- modification to the copy would affect the original and vice
- versa. Needless to say, this behavior is rarely desirable.
-
- Fortunately, nearly all Qt 3 applications don't rely on explicit
- sharing. When porting, you typically only need to remove calls to
- detach() and/or copy(), which aren't necessary anymore.
-
- If you deliberately rely on explicit sharing in your application,
- you can use pointers or references to achieve the same result in
- Qt 4.
-
- \oldcode
- void asciify(QByteArray array)
- {
- for (int i = 0; i < (int)array.size(); ++i) {
- if ((uchar)array[i] >= 128)
- array[i] = '?';
- }
- }
- \newcode
- void asciify(QByteArray &array)
- {
- for (int i = 0; i < array.size(); ++i) {
- if ((uchar)array[i] >= 128)
- array[i] = '?';
- }
- }
- \endcode
-
- (Notice the \c & in the parameter declaration.)
-
-\omit
- \section1 Qt Designer UI Files
-
- ###
-\endomit
-
- \section1 Painting and Redrawing Widgets
-
- When implementing custom widgets in Qt 3, it was possible to use
- QPainter to draw on a widget outside paint events. This made it
- possible to integrate Qt applications with third party libraries
- and tools that impose their own rendering models. For example,
- a widget might be repainted in a slot using data obtained from
- an external source.
-
- In Qt 4, it is only possible to paint on a widget from within its
- \l{QWidget::}{paintEvent()} handler function. This restriction simplifies
- Qt's interaction with native window systems, improves the performance
- of applications by reducing the number of redraw operations, and
- also enables features to be implemented to improve the appearance of
- widgets, such as a backing store.
-
- Generally, we recommend redesigning applications to perform all
- painting operations in \l{QWidget::}{paintEvent()} functions, deferring
- actual painting until the next time this function is called.
- Applications can post paint events to trigger repaints, and it may be
- possible to examine your widget's internal state to determine which
- part of the widget needs to be repainted.
-
- If asynchronous repaints are used extensively by your application,
- and it is not practical to redesign the rendering model to perform
- all painting operations from within a widget's \l{QWidget::}{paintEvent()}
- function, it may be necessary to consider using an intermediate painting
- step. In this approach, one or more images can be updated asynchronously
- and painted on the widget in the paint event. To avoid excessive
- buffering, it may be worthwhile disabling the backing store by setting
- the widget's Qt::WA_PaintOnScreen widget attribute.
-
- On certain platforms, the Qt::WA_PaintOutsidePaintEvent widget attribute
- can be set to allow a widget to be painted from outside paint events.
-
- \note Setting widget attributes to disable key features of Qt's widget
- rendering model may also cause other features to be disabled.
-
- \section1 Compatibility Signals and Slots
-
- When \c QT3_SUPPORT is defined, the default connection type for signals
- and slots is the Qt::AutoCompatConnection type. This allows so-called
- \e compatibility signals and slots (defined in Qt 3 support mode to provide
- Qt 3 compatibility features) to be connected to other signals and
- slots.
-
- However, if Qt is compiled with debugging output enabled, and the
- developer uses other connection types to connect to compatibility
- signals and slots (perhaps by building their application without Qt 3
- support enabled), then Qt will output warnings to the console to
- indicate that compatibility connections are being made. This is intended
- to be used as an aid in the process of porting a Qt 3 application to Qt 4.
-
- \section1 QAccel
-
- The \c QAccel class has been renamed Q3Accel and moved to the
- Qt3Support module. In new applications, you have three options:
-
- \list 1
- \o You can use QAction and set a key sequence using QAction::setShortcut().
- \o You can use QShortcut, a class that provides similar
- functionality to Q3Accel.
- \o You can use QWidget::grabShortcut() and process "shortcut"
- events by reimplementing QWidget::event().
- \endlist
-
- The Q3Accel class also supports multiple accelerators using the
- same object, by calling Q3Accel::insertItem() multiple times. In
- Qt 4, the solution is to create multiple QShortcut objects.
-
- \section1 QAccessibleInterface
-
- The QAccessibleInterface class has undergone some API changes in
- Qt 4, to make it more consistent with the rest of the Qt API.
-
- If you have classes that inherit QAccessibleInterface or one of
- its subclasses (QAccessibleObject, QAccessibleWidget, etc.), you
- must port them the new QAccessibleInterface API.
-
- See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions}
- for a list of QAccessibleInterface virtual member functions in
- Qt 3 that are no longer virtual in Qt 4.
-
- \section1 QAccessibleTitleBar
-
- The \c QAccessibleTitleBar has been renamed Q3AccessibleTitleBar
- and moved to the Qt3Support library.
-
- \target qaction.section
- \section1 QAction
-
- The QAction class has been redesigned in Qt 4 to integrate better
- with the rest of the menu system. It unifies the old \c QMenuItem
- class and the old \c QAction class into one class, avoiding
- unnecessary data duplication and the need to learn two different
- APIs.
-
- The old \c QAction and \c QActionGroup classes have been renamed
- Q3Action and Q3ActionGroup and moved to Qt3Support. In addition,
- the new QAction class has compatibility functions to ease
- transition to Qt 4. Note that when using Q3ToolBar and
- Q3PopupMenu, their actions must be \l {Q3Action}s.
-
- See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions}
- for a list of QAction virtual member functions in Qt 3 that are
- no longer virtual in Qt 4.
-
- \section1 QActionGroup
-
- The QAction class has been completely redesigned in Qt 4 to
- integrate better with the rest of the menu system. See the
- \l{#qaction.section}{section on QAction} for details.
-
- \section1 QApplication
-
- The QApplication class has been split into two classes:
- QCoreApplication and QApplication. The new QApplication class
- inherits QCoreApplication and adds GUI-related functionality. In
- practice, this has no consequences for existing Qt applications.
-
- In addition, the following API changes were made:
-
- \list 1
- \o QApplication::allWidgets() and QApplication::topLevelWidgets()
- used to return a pointer to a QWidgetList. Now they return a
- QWidgetList.
-
- Also, QWidgetList has changed from being a typedef for
- QPtrList<QWidget> to being a typedef for QList<QWidget *>.
- See the \l{#qwidgetlist.section}{section on QWidgetList} below
- for details.
-
- \oldcode
- QWidgetList *list = QApplication::topLevelWidgets();
- QWidgetListIt it(*list);
- QWidget *widget;
- while ((widget = it.current())) {
- if (widget->inherits("MainWindow"))
- ((MainWindow *)widget)->updateRecentFileItems();
- ++it;
- }
- delete list;
- \newcode
- QWidgetList list = QApplication::topLevelWidgets();
- for (int i = 0; i < list.size(); ++i) {
- if (MainWindow *mainWin = qobject_cast<MainWindow *>(list.at(i)))
- mainWin->updateRecentFileItems();
- }
- \endcode
- \o QApplication::setMainWidget() is no longer used. When all an application's
- windows are closed, the application will exit normally.
- \endlist
-
- \section1 QAquaStyle
-
- The \c QAquaStyle class first appeared in Qt 3.0, when the Qt for
- Mac OS X port was first released. It emulated Apple's "Aqua" theme.
- In Qt 3.1, QAquaStyle was obsoleted by QMacStyle, which uses Appearance
- Manager to perform its drawing.
-
- The \c QAquaStyle class is no longer provided in Qt 4. Use
- QMacStyle instead.
-
- \target qasciidict.section
- \section1 QAsciiCache<T>
-
- \c QAsciiCache<T> has been renamed Q3AsciiCache<T> and moved to
- the Qt3Support library. It has been replaced by
- QCache<QByteArray, T>.
-
- For details, read the \l{#qcache.section}{section on QCache<T>},
- mentally substituting QByteArray for QString.
-
- \section1 QAsciiDict<T>
-
- QAsciiDict<T> and QAsciiDictIterator<T> have been renamed
- Q3AsciiDict<T> and Q3AsciiDictIterator<T> and moved to the
- Qt3Support library. They have been replaced by the
- more modern QHash<Key, T> and QMultiHash<Key, T> classes and
- their associated iterator classes.
-
- When porting old code that uses Q3AsciiDict<T> to Qt 4, there are
- four classes that you can use:
-
- \list
- \o QMultiHash<QByteArray, T *>
- \o QMultiHash<QByteArray, T>
- \o QHash<QByteArray, T *>
- \o QHash<QByteArray, T>
- \endlist
-
- For details, read the \l{#qdict.section}{section on QDict<T>},
- mentally substituting QByteArray for QString.
-
- \section1 QAsyncIO
-
- The \c QAsyncIO class was used internally in Qt 2.x in
- conjunction with QImageConsumer. It was obsoleted in Qt 3.0.
-
- \input porting4-obsoletedmechanism.qdocinc
-
- \section1 QBackInsertIterator
-
- The undocumented \c QBackInsertIterator class has been removed
- from the Qt library. If you need it in your application, feel
- free to copy the source code from the Qt 3 \c <qtl.h> header
- file.
-
- \section1 QBitArray
-
- In Qt 3, QBitArray inherited from QByteArray. In Qt 4, QBitArray
- is a totally independent class. This makes very little difference
- to the user, except that the new QBitArray doesn't provide any of
- QByteArray's byte-based API anymore. These calls will result in a
- compile-time error, except calls to QBitArray::truncate(), whose
- parameter was a number of \e bytes in Qt 3 and a number of bits
- in Qt 4.
-
- QBitArray was an explicitly shared class in Qt 3. See \l{Explicit
- Sharing} for more information.
-
- The \c QBitVal class has been renamed QBitRef.
-
- \section1 QButton
-
- The \c QButton class has been replaced by QAbstractButton in Qt
- 4. Classes like QPushButton and QRadioButton inherit from
- QAbstractButton. As a help when porting older Qt applications,
- the Qt3Support library contains a Q3Button class
- implemented in terms of the new QAbstractButton.
-
- If you used the \c QButton class as a base class for your own
- button type and want to port your code to the newer
- QAbstractButton, you need to be aware that QAbstractButton has no
- equivalent for the Q3Button::drawButton(QPainter *) virtual
- function. The solution is to reimplement QWidget::paintEvent() in
- your QAbstractButton subclass as follows:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 0
-
- \table
- \header \o Q3Button function \o QAbstractButton equivalent
- \row \o Q3Button::autoResize() \o Call QWidget:setFixedSize(QWidget::sizeHint()) whenever you change the contents.
- \row \o Q3Button::isExclusiveToggle() \o Use QAbstractButton::group() or QAbstractButton::autoExclusive() instead.
- \row \o Q3Button::pixmap() const \o QAbstractButton::icon()
- \row \o Q3Button::setAutoResize() \o N/A
- \row \o Q3Button::setPixmap(const QPixmap &) \o QAbstractButton::setIcon(const QIcon &)
- \row \o Q3Button::setState(ToggleState) \o See remark below
- \row \o Q3Button::setToggleType(ToggleType) \o See remark below
- \row \o Q3Button::state() \o See remark below
- \row \o Q3Button::stateChanged(int) \o See remark below
- \row \o Q3Button::toggleType() \o See remark below
- \endtable
-
- Remarks:
-
- \list 1
- \o In Qt 3, \c QButton had a "toggle type", which could be
- QButton::SingleShot, QButton::Toggle, or QButton::Tristate.
- The new QAbstractButton class doesn't support "tristate"
- directly; this feature is implemented in QCheckBox instead.
- The two other "toggle types" (\c QButton::SingleShot and \c
- QButton::Toggle) are replaced by a QAbstractButton::checkable
- property.
- \o In Qt 3, QButton had a "toggle state", which could be \c
- QButton::Off, \c QButton::NoChange, or \c QButton::On. In Qt
- 4, this mechanism has been moved to QCheckBox.
- \endlist
-
- See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
- a list of \c QButton virtual member functions in Qt 3 that aren't
- virtual in Qt 4.
-
- See \l{#properties}{Properties} for a list of \c QButton properties
- in Qt 3 that have changed in Qt 4.
-
- \section1 QButtonGroup
-
- The \c QButtonGroup class has been completely redesigned in Qt 4.
- For compatibility, the old \c QButtonGroup class has been renamed
- Q3ButtonGroup and has been moved to Qt3Support.
- Likewise, the \c QHButtonGroup and \c QVButtonGroup convenience
- subclasses have been renamed \c Q3HButtonGroup and \c Q3VButtonGroup and
- moved to the Qt3Support library.
-
- The old \c QButtonGroup, as well as Q3ButtonGroup, can be used in two ways:
-
- \list 1
- \o The button group is the parent widget of a number of buttons,
- i.e. the button group is the parent argument in the button
- constructor. The buttons are assigned identifiers 0, 1, 2, etc.,
- in the order they are created. A Q3ButtonGroup can display a frame
- and a title because it inherits Q3GroupBox.
- \o The button group is an invisible widget and the contained
- buttons have some other parent widget. In this usage, each
- button must be manually inserted, using
- Q3ButtonGroup::insert(), into the button group and given an
- ID number.
- \endlist
-
- Unlike Q3ButtonGroup, the new QButtonGroup doesn't inherit
- QWidget. It is very similar to a "hidden Q3ButtonGroup".
-
- If you use a Q3ButtonGroup, Q3HButtonGroup, or Q3VButtonGroup as
- a widget and want to port to Qt 4, you can replace it with
- QGroupBox. In Qt 4, radio buttons with the same parent are
- automatically part of an exclusive group, so you normally don't
- need to do anything else. See also the
- \l{#qgroupbox.section}{section on QGroupBox} below.
-
- See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
- a list of QButtonGroup virtual member functions in Qt 3 that are no
- longer virtual in Qt 4.
-
- \target qbytearray.section
- \section1 QByteArray
-
- In Qt 3, QByteArray was simply a typedef for QMemArray<char>. In
- Qt 4, QByteArray is a class in its own right, with a higher-level
- API in the style of QString.
-
- Here are the main issues to be aware of when porting to Qt 4:
-
- \list 1
- \o The QMemArray(int size) constructor has been replaced with
- QByteArray(int size, char ch). The second argument specifies
- which character should be used for initializing the array;
- pass '\\0' if you have no specific needs.
-
- \oldcode
- QByteArray ba(64);
- \newcode
- QByteArray ba(64, '\0');
- \endcode
-
- \o QMemArray::at() returned a non-const reference, whereas the
- new QByteArray::at() returns a const value. Code like
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 1
-
- will no longer compile. Instead, use QByteArray::operator[]:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 2
-
- \o The QMemArray::contains(char) function has been renamed
- QByteArray::count(char). In addition, there now exists a
- QByteArray::contains(char) function that returns a boolean
- value. Replace old calls to contains() with either count() or
- contains(), depending on whether you care about the specific
- number of occurrences of a character in the byte array or
- only care about whether the array contains that character or
- not.
-
- \o The new QByteArray has no assign() function. Calls to
- QMemArray::assign(const QMemArray &) can be replaced by calls
- to QByteArray::operator=(). Calls to QMemArray::assign(const
- T *, uint) have no equivalent in Qt 4; if you use it, the
- solution is either to use QByteArray::fromRawData() and to
- call free() yourself to avoid a memory leak, or to use the
- QByteArray(const char *, int) constructor, which will take a
- deep copy of the data.
-
- \o QMemArray::bsearch() and QMemArray::sort() have no equivalent
- in the new QByteArray class. Use \l qBinaryFind() and \l qSort()
- if you need that functionality.
- \endlist
-
- QByteArray was an explicitly shared class in Qt 3. See
- \l{Explicit Sharing} for more information.
-
- \target qcache.section
- \section1 QCache<T>
-
- QCache<T> has been renamed Q3Cache<T> and moved to Qt3Support.
- The new QCache class has a different API, and takes different
- template parameters: QCache<Key, T>.
-
- When porting to Qt 4, QCache<QString, T> is the obvious
- substitute for Q3Cache<T>. The following table summarizes the API
- differences.
-
- \table
- \header \o Q3Cache<T> function \o QCache<QString, T> equivalent
- \row \o Q3Cache::Q3Cache(int maxCost, int size, bool caseSensitive) \o See remark below
- \row \o Q3Cache::autoDelete() \o N/A
- \row \o Q3Cache::count() \o QCache::count() or QCache::size() (equivalent)
- \row \o Q3Cache::setAutoDelete() \o See remark below
- \row \o Q3Cache::size() \o N/A
- \row \o Q3Cache::statistics() \o N/A
- \row \o Q3Cache::operator=() \o See remark below
- \endtable
-
- Remarks:
-
- \list 1
- \o Q3Cache requires the user to allocate a specific number of
- buckets by passing a prime number (17 by default) to the
- constructor. In contrast, the new QCache's hash table
- automatically grows and shrinks as needed, and the
- constructor doesn't take a prime number.
-
- \o Q3Cache supportes case-insensitive lookups by passing false as
- second argument to the constructor. This feature has no
- equivalent in QMultiHash. Instead, call QString::toLower()
- before you insert or lookup a key in the hash.
-
- \o The Q3Cache::insert() function returns a \c bool value that
- indicates whether or not the item actually was inserted in
- the cache. If the item wasn't inserted, it was the caller's
- responsibility to delete the item. The new QCache::insert()
- function returns \c void and either adds it to the cache or
- deletes it right away. Old code like
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 3
-
- becomes
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 4
-
- \o The new QCache class \e always takes ownership of the items
- it stores (i.e. auto-delete is always on). If you use Q3Cache
- with auto-delete turned off (the rarely useful default), you
- cannot use QCache as a direct substitute. One unelegant trick
- that works well in practice is to use QCache<QString, T *>
- instead of QCache<QString, T>. In that case, QCache owns the
- pointers, not the objects that the pointers refer to. For
- example,
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 5
-
- becomes
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 6
-
- An alternative is to stick to using Q3Cache.
- \endlist
-
- QCacheIterator<T> has been renamed Q3CacheIterator<T> and moved
- to the Qt3Support library. The new QCache class
- doesn't offer any iterator types.
-
- \section1 QCanvas
-
- The canvas module classes have been
- renamed and moved to the Qt3Support library.
-
- \table
- \header \o Qt 3 class name \o Compatibility class in Qt 4
- \row \o \c QCanvas \o Q3Canvas
- \row \o \c QCanvasEllipse \o Q3CanvasEllipse
- \row \o \c QCanvasItem \o Q3CanvasItem
- \row \o \c QCanvasItemList \o Q3CanvasItemList
- \row \o \c QCanvasLine \o Q3CanvasLine
- \row \o \c QCanvasPixmap \o Q3CanvasPixmap
- \row \o \c QCanvasPixmapArray \o Q3CanvasPixmapArray
- \row \o \c QCanvasPolygon \o Q3CanvasPolygon
- \row \o \c QCanvasPolygonalItem \o Q3CanvasPolygonalItem
- \row \o \c QCanvasRectangle \o Q3CanvasRectangle
- \row \o \c QCanvasSpline \o Q3CanvasSpline
- \row \o \c QCanvasSprite \o Q3CanvasSprite
- \row \o \c QCanvasText \o Q3CanvasText
- \row \o \c QCanvasView \o Q3CanvasView
- \endtable
-
- \l{The Graphics View Framework} replaces QCanvas. For more on porting to
- Graphics View, see \l{Porting to Graphics View}.
-
- \section1 QColor
-
- In Qt 4, QColor is a value type like QPoint or QRect. Graphics
- system-specific code has been implemented in QColormap.
-
- The \c QColor::maxColors() function has been replaced
- by QColormap::size().
-
- The \c QColor::numBitPlanes() function has been replaced
- by QColormap::depth().
-
- The \c QColor::setNamedColor() function no longer supports
- the named color in the same way as Qt 3. Qt 4's
- \l{QColor::}{setNamedColor()} uses the new W3C convention
- as stated
- \l{http://www.w3.org/TR/SVG/types.html#ColorKeywords}{here}.
-
- \table
- \header \o{4,1} Predefined Qt Colors
- \row \o Qt::color0 \o Qt::color1 \o Qt::black \o Qt::white
- \row \o Qt::darkGray \o Qt::gray \o Qt::lightGray \o Qt::red
- \row \o Qt::green \o Qt::blue \o Qt::cyan \o Qt::magenta
- \row \o Qt::yellow \o Qt::darkRed \o Qt::darkGreen \o Qt::darkBlue
- \row \o Qt::darkCyan \o Qt::darkMagenta \o Qt::darkYellow \o Qt::transparent
- \endtable
-
- The predefined colors listed in the table above were static
- QColor objects in Qt 3. In Qt 4, they are enum values of type
- Qt::GlobalColor. Thanks to the implicit QColor(Qt::GlobalColor)
- constructor, the enum values are automatically converted to
- \l{QColor}s in most contexts. Occasionally, you might need a
- cast.
-
- \oldcode
- QColor lightCyan = Qt::cyan.light(180);
- \newcode
- QColor lightCyan = QColor(Qt::cyan).light(180);
- \endcode
-
- \section1 QColorGroup
-
- In Qt 3, a QPalette consisted of three QColorGroup objects. In Qt
- 4, the (rarely used) QColorGroup abstraction has been eliminated.
- For source compatibility, a QColorGroup class is available when
- \c QT3_SUPPORT is defined.
-
- The new QPalette still works in terms of color groups, specified
- through enum values (QPalette::Active, QPalette::Disabled, and
- QPalette::Inactive). It also has the concept of a \e current
- color group, which you can set using
- QPalette::setCurrentColorGroup().
-
- The QPalette object returned by QWidget::palette() returns a
- QPalette initialized with the correct current color group for the
- widget. This means that if you had code like
-
- \badcode
- painter.setBrush(colorGroup().brush(QColorGroup::Text));
- \endcode
-
- you can simply replace colorGroup() with palette():
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 7
-
- \section1 QColorDrag
-
- The \c QColorDrag class has been renamed Q3ColorDrag and moved to
- the Qt3Support library. In Qt 4, use QMimeData
- instead and call QMimeData::setColor() to set the color.
-
- \section1 QComboBox
-
- In Qt 3, the list box used to display the contents of a \c QComboBox
- widget could be accessed by using the \c listBox() function. In Qt 4,
- the standard list box is provided by a QListView widget, and can be
- accessed with the \l{QComboBox::view()}{view()} function.
-
- \omit ### \endomit
-
- See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
- a list of QComboBox virtual member functions in Qt 3 that are no longer
- virtual in Qt 4.
-
- \section1 QCString
-
- In Qt 3, QCString inherited from QByteArray. The main drawback
- of this approach is that the user had the responsibility of
- ensuring that the string is '\\0'-terminated. Another important
- issue was that conversions between \c QCString and QByteArray often
- gave confusing results. (See the
- \l{http://qt.nokia.com/doc/qq/qq05-achtung.html#qcstringisastringofchars}{Achtung!
- Binary and Character Data} article in \e{Qt Quarterly} for an
- overview of the pitfalls.)
-
- Qt 4 solves that problem by merging the QByteArray and \c QCString
- classes into one class called QByteArray. Most functions that
- were in \c QCString previously have been moved to QByteArray. The
- '\\0' issue is handled by having QByteArray allocate one extra
- byte that it always sets to '\\0'. For example:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 8
-
- The Qt3Support library contains a class called
- Q3CString that inherits from the new QByteArray class and that
- extends it to provide an API that is as close to the old \c QCString
- class as possible. Note that the following functions aren't
- provided by Q3CString:
-
- \list
- \o QCString::find(const QRegExp &, int)
- \o QCString::findRev(const QRegExp &, int)
- \o QCString::contains(const QRegExp &)
- \o QCString::replace(const QRegExp &, const char *)
- \endlist
-
- The following functions have lost their last parameter, which
- specified whether the search was case sensitive or not:
-
- \list
- \o QByteArray::find(char, int)
- \o QByteArray::find(const char *, int)
- \o QByteArray::findRev(char, int)
- \o QByteArray::findRev(const char *, int)
- \o QByteArray::contains(char)
- \o QByteArray::contains(const char *)
- \endlist
-
- In both cases, the solution is to convert the \c QCString to a
- QString and use the corresponding QString functions instead.
-
- Also be aware that \c QCString::size() (inherited from
- QByteArray) used to return the size of the character data \e
- including the '\\0'-terminator, whereas the new
- QByteArray::size() is just a synonym for QByteArray::length().
- This brings QByteArray in line with QString.
-
- When porting to Qt 4, occurrences of \c QCString should be
- replaced with QByteArray or QString. The following table
- summarizes the API differences between the Q3CString
- class and the Qt 4 QByteArray and QString classes:
-
- \table
- \header \o Q3CString function \o Qt 4 equivalent
- \row \o Q3CString::Q3CString(const char *, uint) \o See remark below
- \row \o Q3CString::Q3CString(int) \o QByteArray::QByteArray(int, char)
- \row \o Q3CString::leftJustify() \o QString::leftJustified()
- \row \o Q3CString::length() \o QByteArray::length() or QByteArray::size() (equivalent)
- \row \o Q3CString::lower() \o QByteArray::toLower()
- \row \o Q3CString::rightJustify() \o QString::rightJustified()
- \row \o Q3CString::setExpand() \o See remark below
- \row \o Q3CString::simplifyWhiteSpace() \o QByteArray::simplified()
- \row \o Q3CString::sprintf() \o QString::sprintf()
- \row \o Q3CString::stripWhiteSpace() \o QByteArray::trimmed()
- \row \o Q3CString::toDouble() \o QString::toDouble()
- \row \o Q3CString::toFloat() \o QString::toFloat()
- \row \o Q3CString::toInt() \o QString::toInt()
- \row \o Q3CString::toLong() \o QString::toLong()
- \row \o Q3CString::toShort() \o QString::toShort()
- \row \o Q3CString::toUInt() \o QString::toUInt()
- \row \o Q3CString::toULong() \o QString::toULong()
- \row \o Q3CString::toUShort() \o QString::toUShort()
- \row \o Q3CString::upper() \o QByteArray::toUpper()
- \endtable
-
- Remarks:
-
- \list 1
- \o Q3CString(const char *str, uint max) constructs a string of
- length strlen(str) or \e max - 1, whichever is shorter.
- QByteArray(const char *data, int size) constructs a byte
- array containing exactly \e size bytes.
-
- \oldcode
- QCString str1("Hello", 4); // "Hel"
- QCString str2("Hello world!", n);
- \newcode
- QByteArray str1("Hello", 3);
- QByteArray str2("Hello world!");
- str2.truncate(n - 1);
- \endcode
-
- \o Q3CString::setExpand(uint index, char ch) has no equivalent in
- Qt 4.
-
- \oldcode
- QCString str("Hello world");
- str.setExpand(16, '\n'); // "Hello world \n"
- \newcode
- QByteArray str("Hello world");
- while (str.size() < 16)
- str += ' ';
- str += '\n';
- \endcode
- \endlist
-
- Since the old \c QCString class inherited from QByteArray,
- everything that is said in the \l{#qbytearray.section}{QByteArray
- section} applies for \c QCString as well.
-
- \section1 QCustomEvent
-
- In Qt 3, developers could create a custom event by constructing
- a new QCustomEvent, and send relevant data to other components in
- the application by passing a void pointer, either on construction or
- using the setData() function. Objects could receive custom events
- by reimplementing the \l{QObject::customEvent()}{customEvent()}
- function, and access the stored data using the event's data()
- function.
-
- In Qt 4, custom events are created by subclassing
- QEvent. Event-specific data can be stored in a way that is
- appropriate for your application. Custom events are still
- delivered to each object's
- \l{QObject::customEvent()}{customEvent()} handler function, but as
- QEvent objects rather than as deprecated QCustomEvent objects.
-
- \section1 QDataBrowser
-
- The \c QDataBrowser class has been renamed Q3DataBrowser and
- moved to the Qt3Support library. In Qt 4.2, you should use the
- QDataWidgetMapper class to create data-aware forms.
-
- See \l{QtSql Module} for an overview of the new SQL
- classes.
-
- \section1 QDataPump
-
- The \c QDataPump class was used internally in Qt 2.x in
- conjunction with QImageConsumer. It was obsoleted in Qt 3.0.
-
- \input porting4-obsoletedmechanism.qdocinc
-
- \section1 QDataSink
-
- The \c QDataSink class was used internally in Qt 2.x in conjunction
- with QImageConsumer. It was obsoleted in Qt 3.0.
-
- \input porting4-obsoletedmechanism.qdocinc
-
- \section1 QDataSource
-
- The \c QDataSource class was used internally in Qt 2.x in
- conjunction with QImageConsumer. It was obsoleted in Qt 3.0.
- \input porting4-obsoletedmechanism.qdocinc
-
- \section1 QDataTable
-
- The \c QDataTable class has been renamed Q3DataTable and moved to
- the Qt3Support library. In Qt 4.2, you should use the
- QDataWidgetMapper class to create data-aware forms.
-
- See \l{QtSql Module} for an overview of the new SQL classes.
-
- \section1 QDataView
-
- The \c QDataView class has been renamed Q3DataView and moved to
- the Qt3Support library. In Qt 4.2, you should use the
- QDataWidgetMapper class to create data-aware forms.
-
- See \l{QtSql Module} for an overview of the new SQL classes.
-
- \section1 QDateEdit
-
- The QDateEdit class in Qt 4 is a convenience class based on
- QDateTimeEdit. The old class has been renamed Q3DateEdit and moved
- to the Qt3Support library.
-
- See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
- a list of \c QDateEdit virtual member functions in Qt 3 that are
- no longer virtual in Qt 4.
-
- \section1 QDateTimeEditBase
-
- The \c QDateTimeEditBase class has been renamed
- Q3DateTimeEditBase and moved to Qt3Support. Use QDateTimeEdit or
- QAbstractSpinBox instead.
-
- \section1 QDateTimeEdit
-
- The old \c QDateTimeEdit class has been renamed
- Q3DateTimeEditBase and moved to Qt3Support. The new QDateTimeEdit
- in Qt 4 has been rewritten from scratch to provide a more
- flexible and powerful API.
-
- See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
- a list of QDateTimeEdit virtual member functions in Qt 3 that are no
- longer virtual in Qt 4.
-
- \section1 QDeepCopy<T>
-
- The \c QDeepCopy<T> class in Qt 3 provided a means of ensuring that
- implicitly shared and explicitly shared classes referenced unique
- data. This was necessary because the reference counting in Qt's
- container classes was done in a thread-unsafe manner.
-
- With Qt 4, \c QDeepCopy<T> has been renamed Q3DeepCopy<T> and
- moved to the Qt3Support library. Removing it from
- existing code is straightforward.
-
- \oldcode
- QString str1 = "I am a string";
- QDeepCopy<QString> str2 = str1;
- QString str3 = QDeepCopy<QString>(str2);
- \newcode
- QString str1 = "I am a string";
- QString str2 = str1;
- QString str3 = str2;
- \endcode
-
- \section1 QDial
-
- See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
- a list of QDial virtual member functions in Qt 3 that are no longer
- virtual in Qt 4.
-
- See \l{#properties}{Properties} for a list of QDial properties in
- Qt 3 that have changed in Qt 4.
-
- \target qdict.section
- \section1 QDict<T>
-
- \c QDict<T> has been renamed Q3Dict<T> and moved to Qt3Support.
- It has been replaced by the more modern QHash<Key, T> and
- QMultiHash<Key, T> classes.
-
- When porting old code that uses QDict<T> to Qt 4, there are four
- classes that you can use:
-
- \table
- \header \o Qt 4 class \o When to use it
- \row \o QMultiHash<QString, T *>
-
- \o Since Q3Dict<T> is pointer-based and allows duplicate
- keys, this is usually the most straightforward conversion.
-
- \row \o QMultiHash<QString, T>
-
- \o If type \c T is an \l{assignable data type}, you can use
- \c T as the value type rather than \c{T *}. This often
- leads to nicer code.
-
- \row \o QHash<QString, T *>
-
- \o{1,2} If you don't use duplicate keys, you can use QHash
- instead of QMultiHash. QMultiHash inherits from QHash.
-
- \row \o QHash<QString, T>
- \endtable
-
- The APIs of Q3Dict<T> and QMultiHash<QString, T *> are quite
- similar. The main issue is that Q3Dict supports auto-delete
- whereas QMultiHash doesn't.
-
- \omit
- (See \l{What's Wrong with
- Auto-Delete} for an explanation of why the Qt 4 containers don't
- offer that feature.)
- \endomit
-
- The following table summarizes the API differences between the
- two classes:
-
- \table
- \header \o Q3Dict function \o QMultiHash equivalent
- \row \o Q3Dict::Q3Dict(int size, bool caseSensitive) \o See remarks below
- \row \o Q3Dict::autoDelete() \o N/A
- \row \o Q3Dict::count() \o QMultiHash::count() or QMultiHash::size() (equivalent)
- \row \o Q3Dict::find(const QString &) \o QMultiHash::value(const QString &)
- \row \o Q3Dict::remove(const QString &) \o QMultiHash::take(const QString &)
- \row \o Q3Dict::resize(uint) \o QMultiHash::reserve(int)
- \row \o Q3Dict::setAutoDelete() \o See discussion below
- \row \o Q3Dict::size() \o QMultiHash::capacity()
- \row \o Q3Dict::statistics() \o N/A
- \row \o Q3Dict::operator[](const QString &) \o See remark below
- \endtable
-
- Remarks:
-
- \list 1
- \o Q3Dict requires the user to allocate a specific number of
- buckets by passing a prime number (17 by default) to the
- constructor and/or calling Q3Dict::resize() later on. In
- contrast, QMultiHash's hash table automatically grows and
- shrinks as needed, and the constructor doesn't take a prime
- number.
-
- \o Q3Dict supportes case-insensitive lookups by passing false as
- second argument to the constructor. This feature has no
- equivalent in QMultiHash. Instead, call QString::toLower()
- before you insert or lookup a key in the hash.
-
- \o Q3Dict::size() and QMultiHash::size() have different semantics.
- The former returns the number of buckets in the container, whereas
- the latter returns the number of \e items in the container.
-
- \o If there are multiple items with the same key,
- Q3Dict::remove() removes only the most recently inserted item,
- whereas QMultiHash::remove() removes all items that share a
- particular key. To remove only the most recently inserted item,
- call QMultiHash::take().
-
- \o Q3Dict has only one [] operator (Q3Dict::operator[]()),
- providing const access to an item's value. QMultiHash also
- has a non-const overload that can be used on the left side of
- the assignment operator. If you use the [] operator on a
- non-const QHash with an unexisting item, QHash will created
- an element and initialize it to be a null pointer. For that
- reason, Q3Dict::operator[] should be converted to
- QMultiHash::value(), not QMultiHash::operator[].
-
- \endlist
-
- If you use Q3Dict's auto-delete feature (by calling
- Q3Dict::setAutoDelete(true)), you need to do some more work. You
- have two options: Either you call \c delete yourself whenever you
- remove an item from the container, or you use
- QMultiHash<QString, T> instead of QMultiHash<QString, T *> (i.e.
- store values directly instead of pointers to values). Here, we'll
- see when to call \c delete.
-
- The following table summarizes the idioms that you need to watch
- out for if you want to call \c delete yourself.
-
- \table
- \header \o Q3Dict idiom \o QMultiHash idiom
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 9
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 10
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 11
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 12
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 13
-
- (also called from Q3Dict's destructor)
-
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 14
-
- In 99% of cases, the following idiom also works:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 15
-
- However, it may lead to crashes if \c hash is referenced from
- the value type's destructor, because \c hash contains
- dangling pointers until clear() is called.
- \endtable
-
- Be aware that Q3Dict's destructor automatically calls clear(). If
- you have a Q3Dict data member in a custom class and use the
- auto-delete feature, you will need to call \c delete on all the
- items in the container from your class destructor to avoid a
- memory leak.
-
- Finally, \c QDictIterator<T> (renamed Q3DictIterator<T>) must
- also be ported. There are no fewer than four iterator classes
- that can be used as a replacement: QHash::const_iterator,
- QHash::iterator, QHashIterator, and QMutableHashIterator. The
- most straightforward class to use when porting is
- QHashIterator<QString, T *>. The following table summarizes the
- API differences:
-
- \table
- \header \o Q3DictIterator functions \o Qt 4 equivalent
- \row \o Q3DictIterator::count() \o QHash::count() or QHash::size()
- \row \o Q3DictIterator::current() \o QHashIterator::value()
- \row \o Q3DictIterator::currentKey() \o QHashIterator::key()
- \row \o Q3DictIterator::isEmpty() \o QHash::isEmpty()
- \row \o Q3DictIterator::toFirst() \o QHashIterator::toFront()
- \row \o Q3DictIterator::operator()() \o QHashIterator::value()
- \row \o Q3DictIterator::operator*() \o QHashIterator::value()
- \row \o Q3DictIterator::operator++() \o See remark below
- \endtable
-
- Be aware that QHashIterator has a different way of iterating than
- Q3DictIterator. A typical loop with Q3DictIterator looks like this:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 16
-
- Here's the equivalent QHashIterator loop:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 17
-
- See \l{Java-style iterators} for details.
-
- \section1 QDir
-
- The following functions used to have a boolean \c{acceptAbsPath}
- parameter that defaulted to true:
-
- \list
- \i QDir::filePath()
- \i QDir::absFilePath()
- \i QDir::cd()
- \i QDir::mkdir()
- \i QDir::rmdir()
- \i QDir::remove()
- \i QDir::rename()
- \i QDir::exists()
- \endlist
-
- In Qt 3, if \c acceptAbsPath is true, a file name starting with
- '/' is be returned without change; if \c acceptAbsPath is false,
- an absolute path is prepended to the file name. For example:
-
- \table
- \header \i Current directory \i File name \i \c acceptAbsPath \i File path
- \row \i{1,2} /home/tsmith \i{1,2} index.html \i true \i /home/tsmith/index.html
- \row \i false \i /home/tsmith/index.html
- \row \i{1,2} /home/tsmith \i{1,2} /index.html \i true \i /index.html
- \row \i false \i /home/tsmith/index.html
- \endtable
-
- In Qt 4, this parameter is no longer available. If you use it
- in your code, you can check that QDir::isRelativePath() returns
- false instead.
-
- \oldcode
- QDir dir("/home/tsmith");
- QString path = dir.filePath(fileName, false);
- \newcode
- QDir dir("/home/tsmith");
- QString path;
- if (dir.isRelativePath(fileName))
- path = dir.filePath(fileName);
- else
- path = fileName;
- \endcode
-
- QDir::encodedEntryList() has been removed.
-
- fileInfoList(), entryInfoList(), and drives() now return a QList<QFileInfo>
- and not a QPtrList<QFileInfo> *. Code using these methods will not work with
- the Qt3Support library and must be adapted instead.
-
- See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
- a list of QDir virtual member functions in Qt 3 that are no longer
- virtual in Qt 4.
-
- QDir::match() now always matches case insensitively.
-
- QDir::homeDirPath() has been removed. Use QDir::home() instead, and
- extract the path separately.
-
- \section1 QDns
-
- Qt 3 used its own implementation of the DNS protocol and provided
- a low-level \c QDns class. Qt 4's QHostInfo class uses the system's \c
- gethostbyname() function from a thread instead.
-
- The old \c QDns class has been renamed Q3Dns and moved to the
- Qt3Support library. The new QHostInfo class has a
- radically different API: It consists mainly of two static
- functions, one of which is blocking (QHostInfo::fromName()), the
- other non-blocking (QHostInfo::lookupHost()). See the QHostInfo
- class documentation for details.
-
- \section1 QDockArea
-
- The \c QDockArea class has been renamed Q3DockArea and moved to
- the Qt3Support library. In Qt 4, QMainWindow handles
- the dock and toolbar areas itself. See the QMainWindow
- documentation for details.
-
- \section1 QDockWindow
-
- The old \c QDockWindow class has been renamed Q3DockWindow and
- moved to the Qt3Support library. In Qt 4, there is a
- new QDockWidget class with a different API. See the class
- documentation for details.
-
- See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
- a list of QDockWidget virtual member functions in Qt 3 that are no
- longer virtual in Qt 4.
-
- \note \l{Q3DockWindow}'s
- \l{Q3DockWindow::setHorizontallyStretchable()}{horizontallyStretchable}
- property can be achieved in QDockWidget with
- \l{QWidget#Size Hints and Size Policies}{size policies}.
-
- \section1 QDragObject
-
- The \c QDragObject class has been renamed Q3DragObject and
- moved to the Qt3Support library. In Qt 4, it has been
- replaced by the QMimeData class. See the class documentation for
- details.
-
- Note that the Q3DragObject::DragCopyOrMove drag and drop mode is
- interpreted differently to Qt 3's QDragObject::DragCopyOrMove mode.
- In Qt 3, a move operation was performed by default, and the user had
- to hold down the \key{Ctrl} key to perform a copy operation.
- In Qt 4, a copy operation is performed by default; the user has to
- hold down the \key{Shift} key to perform a move operation.
-
- See \l{Porting to Qt 4 - Drag and Drop} for a comparison between
- the drag and drop APIs in Qt 3 and Qt 4.
-
- \section1 QDropSite
-
- The \c QDropSite class has been renamed Q3DropSite and moved to
- the Qt3Support library.
-
- The QDropSite class has been obsolete ever since Qt 2.0. The only
- thing it does is call QWidget::setAcceptDrops(true).
-
- \oldcode
- class MyWidget : public QWidget, public QDropSite
- {
- public:
- MyWidget(const QWidget *parent)
- : QWidget(parent), QDropSite(this)
- {
- }
- ...
- }
- \newcode
- class MyWidget : public QWidget
- {
- public:
- MyWidget(const QWidget *parent)
- : QWidget(parent)
- {
- setAcceptDrops(true);
- }
- ...
- }
- \endcode
-
- See \l{Porting to Qt 4 - Drag and Drop} for a comparison between
- the drag and drop APIs in Qt 3 and Qt 4.
-
- \section1 QEditorFactory
-
- The \c QEditorFactory class has been renamed Q3EditorFactory and
- moved to the Qt3Support library.
-
- See \l{QtSql Module} for an overview of the new SQL classes.
-
- \section1 QEventLoop
-
- In Qt 3, \c QEventLoop combined the Qt event loop and the event
- dispatching. In Qt 4, these tasks are now assigned to two
- distinct classes: QEventLoop and QAbstractEventDispatcher.
-
- If you subclassed QEventLoop to integrate with another library's
- event loop, you must subclass QAbstractEventDispatcher instead. See
- the class documentation for details.
-
- Developers using \c{QEventLoop::loopLevel()} in Qt 3 should use
- QCoreApplication::loopLevel() instead. Note that this function is
- marked as obsolete, but it is expected to be available for the
- lifetime of Qt 4.
- \omit ### mention virtual functions that aren't virtual anymore \endomit
-
- \omit
- \section1 QFile
-
- The QFile::readLine(QString&, Q_ULONG) method from qt3 has been removed
- in qt4, but this change in the QFile interface is not documented in the
- porting documentation as of qt-4.0.0-b1.
- \endomit
-
- \section1 QFileDialog
-
- The QFileDialog class in Qt 4 has been totally rewritten. It
- provides most of the functionality of the old \c QFileDialog
- class, but with a different API. Some functionality, such as the
- ability to preview files, is expected to be added in a later Qt 4
- release.
-
- The old \c QFileDialog, \c QFileIconProvider, and \c QFilePreview
- classes has been renamed Q3FileDialog, Q3FileIconProvider, and
- Q3FilePreview and have been moved to Qt3Support. You can use them
- if you need some functionality not provided yet by the new
- QFileDialog class.
-
- The following table lists which functions have been renamed or
- removed in Qt 4.
-
- \table
- \header \o Old function \o Qt 4 equivalent
- \row \o Q3FileDialog::addFilter(const QString &) \o See remark below
- \row \o Q3FileDialog::addLeftWidget(QWidget *) \o N/A
- \row \o Q3FileDialog::addRightWidget(QWidget *) \o N/A
- \row \o Q3FileDialog::addToolButton(QAbstractButton *, bool separator) \o N/A
- \row \o Q3FileDialog::addWidgets(QLabel *, QWidget *, QPushButton *) \o N/A
- \row \o Q3FileDialog::dir() \o QFileDialog::directory()
- \row \o Q3FileDialog::dirPath() \o QFileDialog::directory().path()
- \row \o Q3FileDialog::iconProvider() \o N/A
- \row \o Q3FileDialog::isContentsPreviewEnabled() \o N/A
- \row \o Q3FileDialog::isInfoPreviewEnabled() \o N/A
- \row \o Q3FileDialog::previewMode() \o N/A
- \row \o Q3FileDialog::rereadDir() \o N/A
- \row \o Q3FileDialog::resortDir() \o N/A
- \row \o Q3FileDialog::selectAll(bool) \o N/A
- \row \o Q3FileDialog::setContentsPreview(QWidget *, Q3FilePreview *) \o N/A
- \row \o Q3FileDialog::setContentsPreviewEnabled(bool) \o N/A
- \row \o Q3FileDialog::setDir(const QString &) \o QFileDialog::setDirectory(const QString &)
- \row \o Q3FileDialog::setFilters(const char **) \o Q3FileDialog::setFilters(const QStringList &)
- \row \o Q3FileDialog::setIconProvider(Q3FileIconProvider *) \o N/A
- \row \o Q3FileDialog::setInfoPreview(QWidget *, Q3FilePreview *) \o N/A
- \row \o Q3FileDialog::setInfoPreviewEnabled(bool) \o N/A
- \row \o Q3FileDialog::setPreviewMode(PreviewMode) \o N/A
- \row \o Q3FileDialog::setSelectedFilter(const QString &) \o QFileDialog::selectFilter(const QString &)
- \row \o Q3FileDialog::setSelectedFilter(int) \o See remark below
- \row \o Q3FileDialog::setSelection(const QString &) \o QFileDialog::selectFile(const QString &)
- \row \o Q3FileDialog::setShowHiddenFiles(bool) \o showHidden()
- \row \o Q3FileDialog::setUrl(const QUrlOperator &) \o N/A
- \row \o Q3FileDialog::showHiddenFiles() \o N/A
- \row \o Q3FileDialog::url() \o QUrl::fromLocalFile(QFileDialog::directory())
- \header \o Old signals \o Qt 4 equivalent
- \row \o Q3FileDialog::fileHighlighted(const QString &) \o N/A
- \row \o Q3FileDialog::fileSelected(const QString &) \o QFileDialog::filesSelected(const QStringList &)
- \row \o Q3FileDialog::dirEntered(const QString &) \o N/A
- \row \o Q3FileDialog::filterSelected(const QString &) \o N/A
- \endtable
-
- Remarks:
-
- \list 1
- \o The Q3FileDialog::addFilter(const QString &) function has no
- direct equivalent in the new QFileDialog. Use
- QFileDialog::setFilters() instead.
-
- \oldcode
- fileDialog->addFilter(tr("JPEG files (*.jpg *.jpeg)"));
- \newcode
- QStringList filters = fileDialog->filters();
- filters << tr("JPEG files (*.jpg *.jpeg)");
- fileDialog->setFilters(filters);
- \endcode
-
- \o The Q3FileDialog::setSelectedFilter(int) overload has no direct
- equivalent in the new QFileDialog. Use
- QFileDialog::selectFilter(const QString &) instead.
-
- \oldcode
- fileDialog->setSelectedFilter(3);
- \newcode
- fileDialog->selectFilter(fileDialog->filters().at(3));
- \endcode
- \endlist
-
- There are no equivalent virtual functions to the two
- Q3FileDialog::setSelectedFilter() virtual functions in the QFileDialog
- API. In addition, these functions have been renamed or removed, as
- described above.
-
- \section1 QFocusData
-
- The QFocusData class is not available in Qt 4. Some of its
- functionality is available via the QWidget::nextInFocusChain()
- and QWidget::focusNextPrevChild() functions.
-
- \section1 QFocusEvent
-
- The setReason() function is no longer present in Qt 4. It is
- necessary to define the reason when constructing a focus event.
-
- \section1 QFont
-
- \c QFont::Script has been moved to QFontDatabase::WritingSystem.
-
- \section1 QFrame
-
- The QFrame class has been made more lightweight in Qt 4, by
- reducing the number of properties and virtual functions. The
- reduction in the number of virtual functions is significant
- because QFrame is the base class of many Qt classes.
-
- Here's an overview of the changes:
-
- \list
- \o QFrame no longer has a \c margin property (which wasn't
- honored by Qt's layout managers anyway).
-
- \o QFrame no longer has a frameChanged() function, reimplement
- QFrame::resizeEvent() instead.
-
- \o QFrame used to have drawFrame(QPainter *) and
- drawContents(QPainter *) virtual functions. These are now
- gone. In Qt 4, the frame is drawn by the QFrame::paintEvent()
- function. If you want to change the way QFrame paints itself,
- reimplement this function. To draw the contents of the frame,
- reimplement QFrame:paintEvent() and call the base class
- implementation of the function before you use the
- \l {QWidget::}{contentsRect()} function inherited from QWidget,
- to retrieve the rectangle to paint on.
-
- \endlist
-
- To help with porting, the Qt3Support library contains a Q3Frame
- class that inherits QFrame and provides a similar API to the old
- QFrame class. If you derived from QFrame in your application, you
- might want to use Q3Frame as a base class as a first step in the
- porting process, and later move on to the new QFrame class.
-
- See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
- a list of QFrame virtual member functions in Qt 3 that are no longer
- virtual in Qt 4.
-
- \section1 QFtp
-
- QFtp no longer inherits from QNetworkProtocol. See the
- \l{#qnetworkprotocol.section}{section on QNetworkProtocol} for
- details.
-
- The old \c QFtp class has been renamed Q3Ftp and moved to the
- Qt3Support library.
-
- \target qglayoutiterator.section
- \section1 QGLayoutIterator
-
- The QGLayoutIterator class no longer exists in Qt 4. This makes
- only a difference if you implemented custom layout managers
- (i.e., QLayout subclasses).
-
- The new approach is much simpler: It consists in reimplementing
- QLayout::itemAt() and QLayout::takeAt(). These functions operate
- on indexes, eliminating the need for a layout iterator class.
-
- \section1 QGrid
-
- The \c QGrid class is now only available as Q3Grid in Qt 4. You
- can achieve the same result as \c QGrid by creating a QWidget
- with a grid layout:
-
- \oldcode
- QGrid *grid = new QGrid(2, Qt::Horizontal);
- QPushButton *child1 = new QPushButton(grid);
- QPushButton *child2 = new QPushButton(grid);
- QPushButton *child3 = new QPushButton(grid);
- QPushButton *child4 = new QPushButton(grid);
- \newcode
- QWidget *grid = new QWidget;
- QPushButton *child1 = new QPushButton(grid);
- QPushButton *child2 = new QPushButton(grid);
- QPushButton *child3 = new QPushButton(grid);
- QPushButton *child4 = new QPushButton(grid);
-
- QVBoxLayout *layout = new QVBoxLayout;
- layout->addWidget(child1, 0, 0);
- layout->addWidget(child2, 0, 1);
- layout->addWidget(child3, 1, 0);
- layout->addWidget(child4, 1, 1);
- grid->setLayout(layout);
- \endcode
-
- \section1 QGridLayout
-
- See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
- a list of QGridLayout virtual member functions in Qt 3 that are no
- longer virtual in Qt 4.
-
- \section1 QGridView
-
- The \c QGridView class has been renamed Q3GridView and moved to
- the Qt3Support library. In Qt 4, we recommend that
- you use QTableView or QAbstractItemView for presenting tabular
- data.
-
- See \l{Model/View Programming} for an overview of the new item
- view classes.
-
- \target qgroupbox.section
- \section1 QGroupBox
-
- The QGroupBox class has been redesigned in Qt 4. Many of the
- features of the old \c QGroupBox class can be obtained by using
- the Q3GroupBox class from the Qt3Support library.
-
- The new QGroupBox is more lightweight. It doesn't attempt to
- duplicate functionality already provided by QGridLayout, and it
- does not inherit from QFrame. As a result, the following members
- have been removed:
-
- \list
- \o Q3GroupBox::setColumns(), Q3GroupBox::columns()
- \o Q3GroupBox::setOrientation(), Q3GroupBox::orientation()
- \o Q3GroupBox::setInsideMargin(), Q3GroupBox::insideMargin()
- \o Q3GroupBox::addSpace()
- \endlist
-
- Naturally, the \c columns and \c orientation properties have also
- been removed.
-
- If you rely on some of the missing functionality in your
- application, you can use Q3GroupBox instead of QGroupBox as a
- help to porting.
-
- See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
- a list of QGroupBox virtual member functions in Qt 3 that are no
- longer virtual in Qt 4.
-
- \section1 QHBox
-
- The \c QHBox class is now only available as Q3HBox in Qt 4. You
- can achieve the same result as \c QHBox by creating a QWidget
- with an horizontal layout:
-
- \oldcode
- QHBox *hbox = new QHBox;
- QPushButton *child1 = new QPushButton(hbox);
- QPushButton *child2 = new QPushButton(hbox);
- \newcode
- QWidget *hbox = new QWidget;
- QPushButton *child1 = new QPushButton;
- QPushButton *child2 = new QPushButton;
-
- QHBoxLayout *layout = new QHBoxLayout;
- layout->addWidget(child1);
- layout->addWidget(child2);
- hbox->setLayout(layout);
- \endcode
-
- Note that child widgets are not automatically placed into the widget's
- layout; you will need to manually add each widget to the QHBoxLayout.
-
- \section1 QHeader
-
- The \c QHeader class has been renamed Q3Header and moved to
- the Qt3Support library. In Qt 4, it is replaced
- by the QHeaderView class.
-
- See \l{Model/View Programming} for an overview of the new item
- view classes.
-
- \section1 QHGroupBox
-
- The \c QHGroupBox class has been renamed Q3HGroupBox and moved to
- the Qt3Support library.
- Qt 4 does not provide a specific replacement class for \c QHGroupBox
- since QGroupBox is designed to be a generic container widget. As a
- result, you need to supply your own layout for any child widgets.
-
- See \l{#QGroupBox} for more information about porting code that uses
- group boxes.
-
- \section1 QHttp
-
- QHttp no longer inherits from QNetworkProtocol. See the See the
- \l{#qnetworkprotocol.section}{section on QNetworkProtocol} for
- details.
-
- The old \c QHttp, \c QHttpHeader, \c QHttpRequestHeader, and \c
- QHttpResponseHeader classes have been renamed Q3Http,
- Q3HttpHeader, Q3HttpRequestHeader, and Q3HttpResponseHeader and
- have been moved to the Qt3Support library.
-
- \section1 QIconFactory
-
- The QIconFactory class is no longer part of Qt. It has been replaced by
- the QIconEngine class.
-
- \section1 QIconSet
-
- The QIconSet class is no longer part of Qt. It has been replaced by
- the QIcon class.
-
- \section1 QIconView
-
- The \c QIconView, \c QIconViewItem, \c QIconDrag, and \c
- QIconDragItem classes has been renamed Q3IconView,
- Q3IconViewItem, Q3IconDrag, and Q3IconDragItem and moved to the
- Qt3Support library. New Qt applications should use
- QListWidget or its base class QListView instead, and call
- QListView::setViewMode(QListView::IconMode) to obtain an "icon
- view" look.
-
- See \l{Model/View Programming} for an overview of the new item
- view classes.
-
- \omit
- ###
-
- \section1 QImage
-
- QImage::fromMimeSource(const QString &) -> qImageFromMimeSource(const QString &)
- \endomit
-
- \section1 QImageDrag
-
- The \c QImageDrag class has been renamed Q3ImageDrag and moved to
- the Qt3Support library. In Qt 4, use QMimeData
- instead and call QMimeData::setImage() to set the image.
-
- See \l{Porting to Qt 4 - Drag and Drop} for a comparison between
- the drag and drop APIs in Qt 3 and Qt 4.
-
- \section1 QImageIO
-
- The \c QImageIO class has been split into two classes:
- QImageReader and QImageWriter. The table below shows the
- correspondance between the two APIs:
-
- \table
- \header \o Qt 3 function \o Qt 4 equivalents
- \row \o QImageIO::description() \o QImageWriter::text()
- \row \o QImageIO::fileName() \o QImageReader::fileName() and QImageWriter::fileName()
- \row \o QImageIO::format() \o QImageReader::format() and QImageWriter::format()
- \row \o QImageIO::gamma() \o QImageWriter::gamma()
- \row \o QImageIO::image() \o Return value of QImageReader::read()
- \row \o QImageIO::inputFormats() \o QImageReader::supportedImageFormats()
- \row \o QImageIO::ioDevice() \o QImageReader::device() and QImageWriter::device()
- \row \o QImageIO::outputFormats() \o QImageWriter::supportedImageFormats()
- \row \o QImageIO::parameters() \o N/A
- \row \o QImageIO::quality() \o QImageWriter::quality()
- \row \o QImageIO::read() \o QImageReader::read()
- \row \o QImageIO::setDescription() \o QImageWriter::setText()
- \row \o QImageIO::setFileName() \o QImageReader::setFileName() and QImageWriter::setFileName()
- \row \o QImageIO::setFormat() \o QImageReader::setFormat() and QImageWriter::setFormat()
- \row \o QImageIO::setGamma() \o QImageWriter::setGamma()
- \row \o QImageIO::setIODevice() \o QImageReader::setDevice() and QImageWriter::setDevice()
- \row \o QImageIO::setImage() \o Argument to QImageWriter::write()
- \row \o QImageIO::setParameters() \o N/A
- \row \o QImageIO::setQuality() \o QImageWriter::setQuality()
- \row \o QImageIO::setStatus() \o N/A
- \row \o QImageIO::status() \o QImageReader::error() and QImageWriter::error()
- \row \o QImageIO::write() \o QImageWriter::write()
- \endtable
-
- \section1 QIntCache<T>
-
- QIntCache<T> has been moved to Qt3Support. It has been replaced
- by QCache<int, T>.
-
- For details, read the \l{#qcache.section}{section on QCache<T>},
- mentally substituting \c int for QString.
-
- \section1 QIntDict<T>
-
- QIntDict<T> and QIntDictIterator<T> have been moved to
- Qt3Support. They have been replaced by the more modern QHash<Key,
- T> and QMultiHash<Key, T> classes and their associated iterator
- classes.
-
- When porting old code that uses QIntDict<T> to Qt 4, there are
- four classes that you can use:
-
- \list
- \o QMultiHash<int, T *>
- \o QMultiHash<int, T>
- \o QHash<int, T *>
- \o QHash<int, T>
- \endlist
-
- For details, read the \l{#qdict.section}{section on QDict<T>},
- mentally substituting \c int for QString.
-
- \target qiodevice.section
- \section1 QIODevice
-
- The QIODevice class's API has been simplified to make it easier
- to subclass and to make it work more smoothly with asynchronous
- devices such as QTcpSocket and QProcess.
-
- The following virtual functions have changed name or signature:
-
- \table
- \header \o Qt 3 function \o Comment
- \row \o QIODevice::at() const \o Renamed QIODevice::pos().
- \row \o QIODevice::at(Offset) \o Renamed QIODevice::seek().
- \row \o QIODevice::open(int) \o The parameter is now of type QIODevice::OpenMode.
- \row \o QIODevice::readBlock(char *, Q_ULONG) \o QIODevice::read(char *, qint64)
- \row \o QIODevice::writeBlock(const char *, Q_ULONG) \o QIODevice::write(const char *, qint64)
- \endtable
-
- \note QIODevice::open(QIODevice::OpenMode) is no longer pure virtual.
-
- The following functions are no longer virtual or don't exist anymore:
-
- \table
- \row \o QIODevice::getch() \o Renamed QIODevice::getChar() and implemented in terms of QIODevice::readData().
- \row \o QIODevice::putch(int) \o Renamed QIODevice::putChar() and implemented in terms of QIODevice::writeData().
- \row \o QIODevice::readAll() \o Implemented in terms of QIODevice::readData().
- \row \o QIODevice::readLine(char *, Q_ULONG) \o Implemented in terms of QIODevice::readData()
- \row \o QIODevice::ungetch(int) \o Renamed QIODevice::ungetChar() and simulated using an internal unget buffer.
- \endtable
-
- The \c IO_xxx flags have been revised, and the protected setFlags()
- function removed. Most of the flags have been
- eliminated because errors are best handled by implementing certain
- functions in QIODevice subclasses rather than through the base classes.
- The file access flags, such as \c IO_ReadOnly and \c IO_WriteOnly, have
- been moved to the QIODevice class to avoid polluting the global
- namespace. The table below shows the correspondence between the
- Qt 3 \c IO_xxx flags and the Qt 4 API:
-
- \table
- \header \o Qt 3 constant \o Qt 4 equivalent
- \row \o IO_Direct \o Use !QIODevice::isSequential() instead (notice the \e not).
- \row \o IO_Sequential \o Use QIODevice::isSequential() instead.
- \row \o IO_Combined \o N/A
- \row \o IO_TypeMask \o N/A
- \row \o IO_Raw \o QIODevice::Unbuffered
- \row \o IO_Async \o N/A
- \row \o IO_ReadOnly \o QIODevice::ReadOnly
- \row \o IO_WriteOnly \o QIODevice::WriteOnly
- \row \o IO_ReadWrite \o QIODevice::ReadWrite
- \row \o IO_Append \o QIODevice::Append
- \row \o IO_Truncate \o QIODevice::Truncate
- \row \o IO_Translate \o QIODevice::Text
- \row \o IO_ModeMask \o N/A
- \row \o IO_Open \o Use QIODevice::isOpen() instead.
- \row \o IO_StateMask \o N/A
- \row \o IO_Ok \o N/A
- \row \o IO_ReadError \o N/A
- \row \o IO_WriteError \o N/A
- \row \o IO_FatalError \o N/A
- \row \o IO_ResourceError \o N/A
- \row \o IO_OpenError \o N/A
- \row \o IO_ConnectError \o N/A
- \row \o IO_AbortError \o N/A
- \row \o IO_TimeOutError \o N/A
- \row \o IO_UnspecifiedError \o N/A
- \endtable
-
- \section1 QIODeviceSource
-
- The QIODeviceSource class was used internally in Qt 2.x in
- conjunction with QImageConsumer. It was obsoleted in Qt 3.0.
- \input porting4-obsoletedmechanism.qdocinc
-
- \section1 QLabel
-
- QLabel doesn't enable word-wrap automatically anymore when rich
- text is used. You can enable it by calling
- QLabel::setWordWrap() or by setting the
- \l{QLabel::wordWrap}{wordWrap} property. The reason for this
- change is that the old behavior was confusing to many users.
-
- Also, QLabel no longer offers an \c autoResize property. Instead,
- you can call QWidget::setFixedSize() on the label, with
- QLabel::sizeHint() as the argument, whenever you change the
- contents of the QLabel.
-
- See also \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions}
- for a list of QLabel virtual member functions in Qt 3 that are no
- longer virtual in Qt 4.
-
- \section1 QLayout
-
- In Qt 4, margins are always handled by layouts; there is no
- QLayout::setSupportsMargin() function anymore.
-
- The deleteAllItems() function is now only available if
- \c QT3_SUPPORT is defined. If you maintain a QList of layout
- items, you can use qDeleteAll() to remove all the items in one
- go.
-
- In Qt 3, it was possible to change the resizing behavior for layouts
- in top-level widgets by adjusting the layout's \c resizeMode property.
- In Qt 4, this property has been replaced by the QLayout::sizeConstraint
- property which provides more control over how the layout behaves when
- resized.
-
- See also the \l{#qlayoutiterator.section}{section on
- QLayoutIterator} and the \l{#qglayoutiterator.section}{section on
- QGLayoutIterator}.
-
- \target qlayoutiterator.section
- \section1 QLayoutIterator
-
- The QLayoutIterator class is obsoleted in Qt 4. It is available
- only if \c QT3_SUPPORT is defined. It can be replaced by the
- QLayout::itemAt() and QLayout::takeAt() functions, which operate
- on indexes.
-
- \oldcode
- QLayoutIterator it = layout()->iterator();
- QLayoutItem *child;
- while ((child = it.current()) != 0) {
- if (child->widget() == myWidget) {
- it.takeCurrent();
- return;
- ++it;
- }
- \newcode
- int i = 0;
- QLayoutItem *child;
- while ((child = layout()->itemAt(i)) != 0) {
- if (child->widget() == myWidget) {
- layout()->takeAt(i);
- return;
- }
- ++i;
- }
- \endcode
-
- \section1 QLineEdit
-
- See \l{#properties}{Properties} for a list of QLineEdit
- properties in Qt 3 that have changed in Qt 4.
-
- The default value of QLineEdit's \l{QLineEdit::dragEnabled()}{dragEnabled}
- property was \c true in Qt 3. In Qt 4, the default value is \c false.
-
- Note that QLineEdit in Qt 4 is no longer a subclass of QFrame.
- If you need to visually style a line edit with a frame, we recommend
- either using a QFrame as a container for a QLineEdit or customizing
- the line edit with a \l{Qt Style Sheets}{style sheet}.
-
- \section1 QListBox
-
- The \c QListBox, \c QListBoxItem, \c QListBoxText, and \c
- QListBoxPixmap classes have been renamed Q3ListBox,
- Q3ListBoxItem, Q3ListBoxText, and Q3ListBoxPixmap and have been
- moved to the Qt3Support library. New Qt applications
- should use QListWidget or its base class QListView instead.
-
- See \l{Model/View Programming} for an overview of the new item
- view classes.
-
- \section1 QListView
-
- The \c QListView, \c QListViewItem, \c QCheckListItem, and \c
- QListViewItemIterator classes have been renamed Q3ListView,
- Q3ListViewItem, Q3CheckListItem, and Q3ListViewItemIterator, and
- have been moved to the Qt3Support library. New Qt
- applications should use one of the following four classes
- instead: QTreeView or QTreeWidget for tree-like structures;
- QListWidget or the new QListView class for one-dimensional lists.
-
- See \l{Model/View Programming} for an overview of the new item
- view classes.
-
- \section1 QLocalFs
-
- The \c QLocalFs class is no longer part of the public Qt API. It
- has been renamed Q3LocalFs and moved to Qt3Support. Use QDir,
- QFileInfo, or QFile instead.
-
- \section1 QMainWindow
-
- The QMainWindow class has been redesigned in Qt 4 to provide a
- more modern look and feel and more flexibility. The API has
- changed to reflect that. The old \c QMainWindow class has been
- renamed Q3MainWindow and moved to Qt3Support. See the QMainWindow
- class documentation for details.
-
- \omit ### More detail \endomit
-
- \target qmemarray.section
- \section1 QMemArray<T>
-
- QMemArray<T> has been moved to Qt3Support. It has been replaced
- by the QVector<T> class.
-
- The following table summarizes the API differences between the
- two classes.
-
- \table
- \row \o QMemArray::assign(const QMemArray<T> &) \o QVector::operator=()
- \row \o QMemArray::assign(const T *, uint) \o See remark below
- \row \o QMemArray::duplicate(const QMemArray &) \o QVector::operator=()
- \row \o QMemArray::duplicate(const T *, uint) \o See remark below
- \row \o QMemArray::setRawData(const T *, uint) \o N/A
- \row \o QMemArray::resetRawData(const T *, uint) \o N/A
- \row \o QMemArray::find(const T &, uint) \o QVector::indexOf(const T &, int)
- \row \o QMemArray::contains(const T &) \o QVector::count(const T &)
- \row \o QMemArray::sort() \o \l qSort()
- \row \o QMemArray::bsearch(const T &d) \o \l qBinaryFind()
- \row \o QMemArray::at(uint) \o QVector::operator[]()
- \row \o QMemArray::operator const T *() \o QVector::constData()
- \endtable
-
- Remarks:
-
- \list 1
- \o QMemArray::assign(const T *, uint) and QMemArray::duplicate(const T *, uint)
- can be replaced by QVector::resize() and qCopy().
-
- \oldcode
- QMemArray<QSize> array;
- ...
- array.assign(data, size);
- \newcode
- QVector<QSize> vector;
- ...
- vector.resize(size);
- qCopy(data, data + size, vector.begin());
- \endcode
-
- \o QMemArray is an explicitly shared class, whereas QVector is
- implicitly shared. See \l{Explicit Sharing} for more
- information.
- \endlist
-
- \section1 QMenuBar
-
- In Qt 3, QMenuBar inherited from QFrame and QMenuData; in Qt 4, it is
- a direct subclass of QWidget. Applications that provided customized
- menu bars will need to take advantage of the styling features described
- in the \l{Qt Style Sheets} document.
-
- It is not possible to add widgets to menu bars in Qt 4.
-
- \section1 QMenuData
-
- In Qt 4, the QMenu class provides a menu widget that can be used in all
- the places where menus are used in an application. Unlike \c QMenuData,
- QMenu is designed around the concept of actions, provided by the QAction
- class, instead of the identifiers used in Qt 3.
-
- In Qt 3, it was possible to insert widgets directly into menus by using
- a specific \c QMenuData::insertItem() overload. In Qt 4.2 and later,
- the QWidgetAction class can be used to wrap widgets for use in Qt 4's
- action-based APIs.
-
- \section1 QMessageBox
-
- The QMessageBox::iconPixmap() function used to return a "const
- QPixmap *". In Qt 4, it returns a QPixmap.
-
- \section1 QMimeSourceFactory
-
- The \c QMimeSourceFactory has been renamed Q3MimeSourceFactory
- and moved to the Qt3Support library. New Qt applications should
- use Qt 4's \l{Resource System} instead.
-
- \section1 QMovie
-
- The QMovie API has been revised in Qt 4 to make it more
- consistent with the other Qt classes (notably QImageReader). The
- table below summarizes the changes.
-
- \table
- \header \o Qt 3 function \o Qt 4 equivalent
- \row \o QMovie::connectResize() \o Connect to QMovie::resized()
- \row \o QMovie::connectStatus() \o Connect to QMovie::stateChanged()
- \row \o QMovie::connectUpdate() \o Connect to QMovie::updated()
- \row \o QMovie::disconnectResize() \o Disconnect from QMovie::resized()
- \row \o QMovie::disconnectStatus() \o Disconnect from QMovie::stateChanged()
- \row \o QMovie::disconnectUpdate() \o Disconnect from QMovie::updated()
- \row \o QMovie::finished() \o Use QMovie::state() instead
- \row \o QMovie::frameImage() \o Use QMovie::currentImage() instead
- \row \o QMovie::frameNumber() \o Use QMovie::currentFrameNumber() instead
- \row \o QMovie::framePixmap() \o Use QMovie::currentPixmap() instead
- \row \o QMovie::getValidRect() \o Use frameRect() instead
- \row \o QMovie::isNull() \o Use QMovie::isValid() instead
- \row \o QMovie::pause() \o Use QMovie::setPaused(true) instead
- \row \o QMovie::paused() \o Use QMovie::state() instead
- \row \o QMovie::pushData() \o N/A
- \row \o QMovie::pushSpace() \o N/A
- \row \o QMovie::restart() \o Use QMovie::jumpToFrame(0) instead
- \row \o QMovie::running() \o Use QMovie::state() instead
- \row \o QMovie::step() \o Use QMovie::jumpToFrame() and QMovie::setPaused() instead
- \row \o QMovie::step() \o Use QMovie::jumpToNextFrame() instead
- \row \o QMovie::steps() \o Use QMovie::currentFrameNumber() and QMovie::frameCount() instead
- \row \o QMovie::unpause() \o Use QMovie::setPaused(false) instead
- \endtable
-
- \section1 QMultiLineEdit
-
- The \c QMultiLineEdit class in Qt 3 was a convenience QTextEdit
- subclass that provided an interface compatible with Qt 2's
- QMultiLineEdit class. In Qt 4, it is called Q3MultiLineEdit, it
- inherits Q3TextEdit, and it is part of Qt3Support. Use QTextEdit
- in new code.
-
- \target qnetworkprotocol.section
- \section1 QNetworkProtocol
-
- The QNetworkProtocol, QNetworkProtocolFactoryBase,
- QNetworkProtocolFactory<T>, and QNetworkOperation classes are no
- longer part of the public Qt API. They have been renamed
- Q3NetworkProtocol, Q3NetworkProtocolFactoryBase,
- Q3NetworkProtocolFactory<T>, and Q3NetworkOperation and have been
- moved to the Qt3Support library.
-
- In Qt 4 applications, you can use classes like QFtp and
- QNetworkAccessManager directly to perform file-related actions on
- a remote host.
-
- \section1 QObject
-
- QObject::children() now returns a QObjectList instead of a
- pointer to a QObjectList. See also the comments on QObjectList
- below.
-
- Use QObject::findChildren() (or qFindChildren() if you need MSVC 6
- compatibility) instead of QObject::queryList(). For example:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 18
-
- QObject::killTimers() has been removed because it was unsafe to
- use in subclass. (A subclass normally doesn't know whether the
- base class uses timers or not.)
-
- The \c QObject::name property has been renamed
- QObject::objectName.
-
- \c QObject::objectTrees() has been removed. If you are primarly
- interested in widgets, use QApplication::allWidgets() or
- QApplication::topLevelWidgets().
-
- \section1 QObjectDictionary
-
- The QObjectDictionary class is a synonym for
- QAsciiDict<QMetaObject>. See the \l{#qasciidict.section}{section
- on QAsciiDict<T>}.
-
- \section1 QObjectList
-
- In Qt 3, the QObjectList class was a typedef for
- QPtrList<QObject>. In Qt 4, it is a typedef for QList<QObject *>.
- See the \l{#qptrlist.section}{section on QPtrList<T>}.
-
- \section1 QPaintDevice
-
- To reimplement painter backends one previously needed to reimplement
- the virtual function QPaintDevice::cmd(). This function is taken out
- and should is replaced with the function QPaintDevice::paintEngine()
- and the abstract class QPaintEngine. QPaintEngine provides virtual
- functions for all drawing operations that can be performed on a
- painter backend.
-
- bitBlt() and copyBlt() are now only compatibility functions. Use
- QPainter::drawPixmap() instead.
-
- \section1 QPaintDeviceMetrics
-
- All functions that used to be provided by the \c
- QPaintDeviceMetrics class have now been moved to QPaintDevice.
-
- \oldcode
- QPaintDeviceMetrics metrics(widget);
- int deviceDepth = metrics.depth();
- \newcode
- int deviceDepth = widget->depth();
- \endcode
-
- For compatibility, the old \c QPaintDeviceMetrics class has been
- renamed Q3PaintDeviceMetrics and moved to Qt3Support.
-
- \section1 QPainter
-
- The QPainter class has undergone some changes in Qt 4 because of
- the way rectangles are drawn. In Qt 4, the result of drawing a
- QRect with a pen width of 1 pixel is 1 pixel wider and 1 pixel
- taller than in Qt 3.
-
- For compatibility, we provide a Q3Painter class in Qt3Support
- that provides the old semantics. See the Q3Painter documentation
- for details and for the reasons why we had to make this change.
-
- The \l{http://qt.nokia.com/doc/3.3/qpainter.html#CoordinateMode-enum}{QPainter::CoordinateMode}
- enum has been removed in Qt 4. All clipping
- operations are now defined using logical coordinates and are subject
- to transformation operations.
-
- The
- \l{http://qt.nokia.com/doc/3.3/qpainter.html#RasterOP-enum}{QPainter::RasterOP}
- enum has been replaced with QPainter::CompositionMode.
-
- \section1 QPicture
-
- In Qt 3, a QPicture could be saved in the SVG file format. In Qt
- 4, the SVG support is provided by the QtSvg module, which
- includes classes for \e displaying the contents of SVG files.
-
- If you would like to generate SVG files, you can use the Q3Picture
- compatibility class or the QSvgGenerator class introduced in Qt 4.3.
-
- \section1 QPixmap
-
- The mask() function has been changed to return a reference to a QBitmap
- rather than a pointer. As a result, it is no longer possible simply to
- test for a null pointer when determining whether a pixmap has a mask.
- Instead, you need to explicitly test whether the mask bitmap is null or
- not.
-
- \oldcode
- if (pixmap.mask())
- widget->setMask(*pixmap.mask());
- \newcode
- if (!pixmap.mask().isNull())
- widget->setMask(pixmap.mask());
- \endcode
-
- The \c QPixmap::setOptimization() and \c QPixmap::setDefaultOptimization()
- mechanism is no longer available in Qt 4.
-
-\omit
- QPixmap::fromMimeSource(const QString &) -> qPixmapFromMimeSource(const QString &)
-\endomit
-
- \section1 QPointArray
-
- The \c QPointArray class has been renamed QPolygon in Qt 4 and
- has undergone significant changes. In Qt 3, \c QPointArray
- inherited from QMemArray<QPoint>. In Qt 4, QPolygon inherits from
- QVector<QPoint>. Everything mentioned in the
- \l{#qmemarray.section}{section on QMemArray<T>} apply for
- QPointArray as well.
-
- The Qt3Support library contains a Q3PointArray class
- that inherits from QPolygon and provides a few functions that
- existed in \c QPointArray but no longer exist in QPolygon. These
- functions include Q3PointArray::makeArc(),
- Q3PointArray::makeEllipse(), and Q3PointArray::cubicBezier().
- In Qt 4, we recommend that you use QPainterPath for representing
- arcs, ellipses, and Bezier curves, rather than QPolygon.
-
- The QPolygon::setPoints() and QPolygon::putPoints() functions
- return \c void in Qt 4. The corresponding Qt 3 functions returned
- a \c bool indicating whether the array was successfully resized
- or not. This can now be checked by checking QPolygon::size()
- after the call.
-
-\omit
- X11 Specific:
-
- ::appDisplay() -> QX11Info::display()
- QPaintDevice::x11Display() -> QX11Info::display()
- QPaintDevice::x11AppDisplay() -> QX11Info::display()
- QPaintDevice::x11Screen() -> QX11Info::appScreen()
- QPaintDevice::x11AppScreen() -> ???
- QPaintDevice::x11Depth() -> QX11Info::appDepth()
- QPaintDevice::x11ColorMap() -> QX11Info::appColorMap()
- QPaintDevice::x11DefaultColorMap() -> ???
- QPaintDevice::x11Visual() -> QX11Info::appVisual()
- QPaintDevice::x11DefaultVisual() -> ???
-
- QPaintDevice::x11AppDpiX() -> QX11Info::appDpiX()
- QPaintDevice::x11AppDpiY() -> QX11Info::appDpiY()
- QPaintDevice::x11SetAppDpiX() -> QX11Info::setAppDpiX()
- QPaintDevice::x11SetAppDpiY() -> QX11Info::setAppDpiY()
-
- QPaintDevice::x11AppDepth() -> ???
- QPaintDevice::x11AppCells() -> ???
- QPaintDevice::x11AppRootWindow() -> ???
- QPaintDevice::x11AppColorMap() -> ???
- QPaintDevice::x11AppDefaultColorMap() -> ???
- QPaintDevice::x11AppVisual() -> ???
- QPaintDevice::x11AppDefaultVisual() -> ???
-
- End of X11 Specific
-\endomit
-
- \section1 QPopupMenu
-
- For most purposes, QPopupMenu has been replaced by QMenu in Qt
- 4. For compatibility with older applications, Q3PopupMenu provides
- the old API and features that are specific to pop-up menus. Note
- that, when using Q3PopupMenu, the menu's actions must be \l
- {Q3Action}s.
-
- In Qt 3, it was common practice to add entries to pop-up menus using the
- insertItem() function, maintaining identifiers for future use; for
- example, to dynamically change menu items.
- In Qt 4, menu entries are completely represented
- by actions for consistency with other user interface components, such as
- toolbar buttons. Create new menus with the QMenu class, and use the
- overloaded QMenu::addAction() functions to insert new entries.
- If you need to manage a set of actions created for a particular menu,
- we suggest that you construct a QActionGroup and add them to that.
-
- The \l{Qt Examples#Main Windows}{Main Window examples} provided
- show how to use Qt's action system to construct menus, toolbars, and other
- common user interface elements.
-
- \section1 QPrinter
-
- The QPrinter class now expects printing to be set up from a
- QPrintDialog.
-
- \section1 QProcess
-
- The QProcess class has undergone major improvements in Qt 4. It
- now inherits QIODevice, which makes it possible to combine
- QProcess with a QTextStream or a QDataStream.
-
- The old \c QProcess class has been renamed Q3Process and moved to
- the Qt3Support library.
-
- \section1 QProgressBar
-
- The QProgressBar API has been significantly improved in Qt 4. The
- old \c QProgressBar API is available as Q3ProgressBar in the
- Qt3Support library.
-
- \section1 QProgressDialog
-
- The QProgressDialog API has been significantly improved in Qt 4.
- The old \c QProgressDialog API is available as Q3ProgressDialog
- in the Qt3Support library.
-
- See \l{#properties}{Properties} for a list of QProgressDialog
- properties in Qt 3 that have changed in Qt 4.
-
- \section1 QPtrCollection<T>
-
- The \c QPtrCollection<T> abstract base class has been renamed
- Q3PtrCollection<T> moved to the Qt3Support library.
- There is no direct equivalent in Qt 4.
-
- \omit
- ###
- The QPtrCollection entry is unsatisfactory. The xref is missing
- its list and saying "no direct equivalent" with so suggestions
- seems feeble.
- \endomit
-
- See \l{Generic Containers} for a list of Qt 4 containers.
-
- \section1 QPtrDict<T>
-
- \c QPtrDict<T> and \c QPtrDictIterator<T> have been renamed
- Q3PtrDict<T> and Q3PtrDictIterator<T> and have been moved to the
- Qt3Support library. They have been replaced by the
- more modern QHash<Key, T> and QMultiHash<Key, T> classes and
- their associated iterator classes.
-
- When porting old code that uses Q3PtrDict<T> to Qt 4, there are
- four classes that you can use:
-
- \list
- \o QMultiHash<void *, T *>
- \o QMultiHash<void *, T>
- \o QHash<void *, T *>
- \o QHash<void *, T>
- \endlist
-
- (You can naturally use other types than \c{void *} for the key
- type, e.g. \c{QWidget *}.)
-
- To port Q3PtrDict<T> to Qt 4, read the \l{#qdict.section}{section
- on QDict<T>}, mentally substituting \c{void *} for QString.
-
- \target qptrlist.section
- \section1 QPtrList<T>
-
- QPtrList<T>, QPtrListIterator<T>, and QPtrListStdIterator<T> have
- been moved to the Qt3Support library. They have been
- replaced by the more modern QList and QLinkedList classes and
- their associated iterator classes.
-
- When porting to Qt 4, you have the choice of using QList<T> or
- QLinkedList<T> as alternatives to QValueList<T>. QList<T> has an
- index-based API and provides very fast random access
- (QList::operator[]), whereas QLinkedList<T> has an iterator-based
- API.
-
- The following table summarizes the API differences between
- QPtrList<T> and QList<T *>:
-
- \table
- \header \o QPtrList function \o QList equivalent
- \row \o QPtrList::contains(const T *) \o QList::count(T *)
- \row \o QPtrList::containsRef(const T *) \o QList::count(T *)
- \row \o QPtrList::find(const T *) \o See remark below
- \row \o QPtrList::findRef(const T *) \o See remark below
- \row \o QPtrList::getFirst() \o QList::first()
- \row \o QPtrList::getLast() \o QList::last()
- \row \o QPtrList::inSort(const T *) \o N/A
- \row \o QPtrList::remove(const T *) \o QList::removeAll(T *)
- \row \o QPtrList::remove(uint) \o QList::removeAt(int)
- \row \o QPtrList::removeNode(QLNode *) \o N/A
- \row \o QPtrList::removeRef(const T *) \o QList::removeAll(T *)
- \row \o QPtrList::sort() \o See remark below
- \row \o QPtrList::takeNode(QLNode *) \o N/A
- \row \o QPtrList::toVector(QGVector *) \o See remark below
- \endtable
-
- Remarks:
-
- \list 1
- \o QPtrList::toVector(QGVector *) can be replaced by
- QVector::resize() and qCopy().
-
- \oldcode
- QPtrList<QWidget> list;
- ...
- QPtrVector<QWidget> vector;
- list.toVector(&vector);
- \newcode
- QList<QWidget *> list;
- ...
- QVector<QWidget *> vector;
- vector.resize(list.size());
- qCopy(list.begin(), list.end(), vector.begin());
- \endcode
-
- \o QPtrList::sort() relied on the virtual compareItems() to
- sort items. In Qt 4, you can use \l qSort() instead and pass
- your "compare item" function as an argument.
-
- \o QPtrList::find(const T *) returns an iterator, whereas
- QList::indexOf(T *) returns an index. To convert an index
- into an iterator, add the index to QList::begin().
-
- \o QPtrList::removeFirst() and QPtrList::removeLast() return a \c
- bool that indicates whether the element was removed or not.
- The corresponding QList functions return \c void. You can
- achieve the same result by calling QList::isEmpty() before
- attempting to remove an item.
- \endlist
-
- If you use QPtrList's auto-delete feature (by calling
- QPtrList::setAutoDelete(true)), you need to do some more work.
- You have two options: Either you call \c delete yourself whenever
- you remove an item from the container, or you can use QList<T>
- instead of QList<T *> (i.e. store values directly instead of
- pointers to values). Here, we'll see when to call \c delete.
-
- \omit
- (See \l{What's Wrong with Auto-Delete} for an explanation of why
- the Qt 4 containers don't offer that feature.)
- \endomit
-
- The following table summarizes the idioms that you need to watch
- out for if you want to call \c delete yourself.
-
- \table
- \header \o QPtrList idiom \o QList idiom
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 19
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 20
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 21
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 22
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 23
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 24
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 25
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 26
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 27
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 28
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 29
- (removes the current item)
-
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 30
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 31
-
- (also called from QPtrList's destructor)
-
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 32
-
- In 99% of cases, the following idiom also works:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 33
-
- However, it may lead to crashes if \c list is referenced from
- the value type's destructor, because \c list contains
- dangling pointers until clear() is called.
- \endtable
-
- Be aware that QPtrList's destructor automatically calls clear().
- If you have a QPtrList data member in a custom class and use the
- auto-delete feature, you will need to call \c delete on all the
- items in the container from your class destructor to avoid a
- memory leak.
-
- QPtrList had the concept of a "current item", which could be used
- for traversing the list without using an iterator. When porting
- to Qt 4, you can use the Java-style QListIterator<T *> (or
- QMutableListIterator<T *>) class instead. The following table
- summarizes the API differences:
-
- \table
- \header \o QPtrList function \o QListIterator equivalent
- \row \o QPtrList::at() \o N/A
- \row \o QPtrList::current() \o QMutableListIterator::value()
- \row \o QPtrList::currentNode() \o N/A
- \row \o QPtrList::findNext(const T *) \o QListIterator::findNext(const T *)
- \row \o QPtrList::findNextRef(const T *) \o QListIterator::findNext(const T *)
- \row \o QPtrList::first() \o QPtrList::toFront()
- \row \o QPtrList::last() \o QPtrList::toBack()
- \row \o QPtrList::next() \o QPtrList::next()
- \row \o QPtrList::prev() \o QPtrList::previous()
- \row \o QPtrList::remove() \o QMutableListIterator::remove()
- \row \o QPtrList::take() \o QMutableListIterator::remove()
- \endtable
-
- Be aware that QListIterator has a different way of iterating than
- QPtrList. A typical loop with QPtrList looks like this:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 34
-
- Here's the equivalent QListIterator loop:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 35
-
- Finally, QPtrListIterator<T> must also be ported. There are no
- fewer than four iterator classes that can be used as a
- replacement: QList::const_iterator, QList::iterator,
- QListIterator, and QMutableListIterator. The most straightforward
- class to use when porting is QMutableListIterator<T *> (if you
- modify the list through the iterator) or QListIterator<T *> (if
- you don't). The following table summarizes the API differences:
-
- \table
- \header \o QPtrListIterator function \o Qt 4 equivalent
- \row \o QPtrListIterator::atFirst() \o !QListIterator::hasPrevious() (notice the \c{!})
- \row \o QPtrListIterator::atLast() \o !QListIterator::hasNext() (notice the \c{!})
- \row \o QPtrListIterator::count() \o QList::count() or QList::size()
- \row \o QPtrListIterator::current() \o QMutableListIterator::value()
- \row \o QPtrListIterator::isEmpty() \o QList::isEmpty()
- \row \o QPtrListIterator::toFirst() \o QListIterator::toFront()
- \row \o QPtrListIterator::toLast() \o QListIterator::toBack()
- \row \o QPtrListIterator::operator() \o QMutableListIterator::value()
- \row \o QPtrListIterator::operator*() \o QMutableListIterator::value()
- \endtable
-
- Again, be aware that QListIterator has a different way of
- iterating than QPtrList. A typical loop with QPtrList looks like
- this:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 36
-
- Here's the equivalent QListIterator loop:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 37
-
- Finally, QPtrListStdIterator<T> must also be ported. This is
- easy, because QList also provides STL-style iterators
- (QList::iterator and QList::const_iterator).
-
- \section1 QPtrQueue<T>
-
- QPtrQueue has been moved to the Qt3Support library.
- It has been replaced by the more modern QQueue class.
-
- The following table summarizes the differences between
- QPtrQueue<T> and QQueue<T *>:
-
- \table
- \header \o QPtrQueue function \o QQueue equivalent
- \row \o QPtrQueue::autoDelete() \o See discussion below
- \row \o QPtrQueue::count() \o QQueue::count() or QQueue::size() (equivalent)
- \row \o QPtrQueue::current() \o QQueue::head()
- \row \o QPtrQueue::remove() \o QQueue::dequeue()
- \row \o QPtrQueue::setAutoDelete() \o See discussion below
- \endtable
-
- If you use QPtrQueue's auto-delete feature (by calling
- QPtrQueue::setAutoDelete(true)), you need to do some more work.
- You have two options: Either you call \c delete yourself whenever
- you remove an item from the container, or you can use QQueue<T>
- instead of QQueue<T *> (i.e. store values directly instead of
- pointers to values). Here, we will show when to call \c delete.
-
- \omit
- (See \l{What's Wrong with Auto-Delete} for an explanation of why
- the Qt 4 containers don't offer that feature.)
- \endomit
-
- \table
- \header \o QPtrQueue idiom \o QQueue idiom
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 38
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 39
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 40
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 41
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 42
-
- (also called from QPtrQueue's destructor)
-
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 43
-
- In 99% of cases, the following idiom also works:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 44
-
- However, it may lead to crashes if \c queue is referenced
- from the value type's destructor, because \c queue contains
- dangling pointers until clear() is called.
- \endtable
-
- \section1 QPtrStack<T>
-
- QPtrStack has been moved to the Qt3Support library.
- It has been replaced by the more modern QStack class.
-
- The following table summarizes the differences between
- QPtrStack<T> and QStack<T *>:
-
- \table
- \header \o QPtrStack function \o QStack equivalent
- \row \o QPtrStack::autoDelete() \o See discussion below
- \row \o QPtrStack::count() \o QStack::count() or QStack::size() (equivalent)
- \row \o QPtrStack::current() \o QStack::top()
- \row \o QPtrStack::remove() \o QStack::pop()
- \row \o QPtrStack::setAutoDelete() \o See discussion below
- \endtable
-
- If you use QPtrStack's auto-delete feature (by calling
- QPtrStack::setAutoDelete(true)), you need to do some more work.
- You have two options: Either you call \c delete yourself whenever
- you remove an item from the container, or you can use QStack<T>
- instead of QStack<T *> (i.e. store values directly instead of
- pointers to values). Here, we will show when to call \c delete.
-
- \omit
- (See \l{What's Wrong with Auto-Delete} for an explanation of why
- the Qt 4 containers don't offer that feature.)
- \endomit
-
- \table
- \header \o QPtrStack idiom \o QStack idiom
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 45
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 46
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 47
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 48
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 49
-
- (also called from QPtrStack's destructor)
-
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 50
-
- In 99% of cases, the following idiom also works:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 51
-
- However, it may lead to crashes if \c stack is referenced
- from the value type's destructor, because \c stack contains
- dangling pointers until clear() is called.
- \endtable
-
- \section1 QPtrVector<T>
-
- QPtrVector<T> has been moved to Qt3Support. It has been replaced
- by the more modern QVector class.
-
- When porting to Qt 4, you can use QVector<T *> as an alternative
- to QPtrVector<T>. The APIs of QPtrVector<T> and QVector<T *> are
- somewhat similar. The main issue is that QPtrVector supports
- auto-delete whereas QVector doesn't.
-
- \omit
- (See \l{What's Wrong with Auto-Delete} for an explanation of why
- the Qt 4 containers don't offer that feature.)
- \endomit
-
- The following table summarizes the API differences between the
- two classes:
-
- \table
- \header \o QPtrVector function \o QVector equivalent
- \row \o QPtrVector::autoDelete() \o See discussion below
- \row \o QPtrVector::bsearch(const T *) \o \l qBinaryFind()
- \row \o QPtrVector::contains(const T *) \o QVector::count(T *)
- \row \o QPtrVector::containsRef(const T *) \o QVector::count(T *)
- \row \o QPtrVector::count() \o See remark below
- \row \o QPtrVector::insert(uint, T *) \o See remark below
- \row \o QPtrVector::isNull() \o N/A
- \row \o QPtrVector::remove(uint) \o See remark below
- \row \o QPtrVector::setAutoDelete() \o See discussion below
- \row \o QPtrVector::sort() \o \l qSort()
- \row \o QPtrVector::take(uint) \o See remark below
- \row \o QPtrVector::toList(QGList *) \o QList::QList(const QVector &)
- \endtable
-
- Remarks:
-
- \list 1
- \o QPtrVector::insert(uint, T *) sets an item to store a certain
- pointer value. This is \e not the same as QVector::insert(int, T *),
- which creates space for the item by moving following items by
- one position. Use \c{vect[i] = ptr} to set a QVector item to
- a particular value.
- \o QPtrVector::remove(uint) sets an item to be 0. This is \e not
- the same as QVector::removeAt(int), which entirely erases the
- item, reducing the size of the vector. Use \c{vect[i] = 0} to
- set a QVector item to 0.
- \o Likewise, QPtrVector::take(uint) sets an item to be 0 and
- returns the previous value of the item. Again, this is easy to
- achieve using QVector::operator[]().
- \o QPtrVector::count() returns the number of non-null items in
- the vector, whereas QVector::count() (like QVector::size())
- returns the number of items (null or non-null) in the vector.
- Fortunately, it's not too hard to simulate QPtrVector::count().
-
- \oldcode
- int numValidItems = vect.count();
- \newcode
- int numValidItems = vect.size() - vect.count(0);
- \endcode
- \endlist
-
- If you use QVector's auto-delete feature (by calling
- QVector::setAutoDelete(true)), you need to do some more work. You
- have two options: Either you call \c delete yourself whenever you
- remove an item from the container, or you use QVector<T> instead
- of QVector<T *> (i.e. store values directly instead of pointers
- to values). Here, we'll see when to call \c delete.
-
- The following table summarizes the idioms that you need to watch
- out for if you want to call \c delete yourself.
-
- \table
- \header \o QPtrVector idiom \o QVector idiom
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 52
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 53
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 54
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 55
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 56
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 57
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 58
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 59
- \row
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 60
-
- (also called from QPtrVector's destructor)
-
- \o
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 61
-
- In 99% of cases, the following idiom also works:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 62
-
- However, it may lead to crashes if \c vect is referenced from
- the value type's destructor, because \c vect contains
- dangling pointers until clear() is called.
- \endtable
-
- Be aware that QPtrVector's destructor automatically calls
- clear(). If you have a QPtrVector data member in a custom class
- and use the auto-delete feature, you will need to call \c delete
- on all the items in the container from your class destructor to
- avoid a memory leak.
-
- \section1 QPushButton
-
- See \l{#properties}{Properties} for a list of QPushButton
- properties in Qt 3 that have changed in Qt 4.
-
- \section1 QRangeControl
-
- In Qt 3, various "range control" widgets (QDial, QScrollBar,
- QSlider, and QSpin) inherited from both QWidget and
- \c QRangeControl.
-
- In Qt 4, \c QRangeControl has been replaced with the new
- QAbstractSlider and QAbstractSpinBox classes, which inherit from
- QWidget and provides similar functionality. Apart from eliminating
- unnecessary multiple inheritance, the new design allows
- QAbstractSlider to provide signals, slots, and properties.
-
- The old \c QRangeControl class has been renamed Q3RangeControl
- and moved to the Qt3Support library, together with
- the (undocumented) \c QSpinWidget class.
-
- If you use \c QRangeControl as a base class in your application,
- you can switch to use QAbstractSlider or QAbstractSpinBox instead.
-
- \oldcode
- class VolumeControl : public QWidget, public QRangeControl
- {
- ...
- protected:
- void valueChange() {
- update();
- emit valueChanged(value());
- }
- void rangeChange() {
- update();
- }
- void stepChange() {
- update();
- }
- };
- \newcode
- class VolumeControl : public QAbstractSlider
- {
- ...
- protected:
- void sliderChange(SliderChange change) {
- update();
- if (change == SliderValueChange)
- emit valueChanged(value());
- }
- };
- \endcode
-
- \section1 QRegExp
-
- The search() and searchRev() functions have been renamed to indexIn()
- and lastIndexIn() respectively.
-
- \section1 QRegion
-
- The following changes have been made to QRegion in Qt 4:
-
- \list
- \o There is no longer any difference between a \e null region and
- an \e empty region. Use isEmpty() in most places where you
- would have used a null QRegion.
- \o QRegion::rects() used to return a QMemArray<QRect>. It now returns
- a QVector<QRect>.
- \endlist
-
- \section1 QScrollBar
-
- See \l{#properties}{Properties} for a list of QScrollBar
- properties in Qt 3 that have changed in Qt 4.
-
- \section1 QScrollView
-
- The \c QScrollView class has been renamed Q3ScrollView and moved
- to the Qt3Support library. It has been replaced by
- the QAbstractScrollArea and QScrollArea classes.
-
- Note that Qt 4 in general uses the QScrollArea::widget() function
- where Qt 3 used QScrollView::viewport(). The rationale for this is
- that it is no longer possible to draw directly on a scroll
- area. The QScrollArea::widget() function returns the widget set on
- the scroll area.
-
- \c QScrollView was designed to work around the 16-bit limitation
- on widget coordinates found on most window systems. In Qt 4, this
- is done transparently for \e all widgets, so there is no longer a
- need for such functionality in \c QScrollView. For that reason,
- the new QAbstractScrollArea and QScrollArea classes are much more
- lightweight, and concentrate on handling scroll bars.
-
- \section1 QServerSocket
-
- The \c QServerSocket class has been renamed Q3ServerSocket and
- moved to the Qt3Support library. In Qt 4, it has been
- replaced by QTcpServer.
-
- With Q3ServerSocket, connections are accepted by reimplementing a
- virtual function (Q3ServerSocket::newConnection()). With
- QTcpServer, on the other hand, you don't need to subclass.
- Instead, simply connect to the QTcpServer::newConnection()
- signal.
-
- \section1 QSettings
-
- The QSettings class has been rewritten to be more robust and to
- respect existing standards (e.g., the INI file format). The API
- has also been extensively revised. The old API is still provided
- when Qt 3 support is enabled.
-
- Since the format and location of settings have changed between Qt
- 3 and Qt 4, the Qt 4 version of your application won't recognize
- settings written using Qt 3.
-
- \section1 QShared
-
- The \c QShared class has been obsoleted by the more powerful
- QSharedData and QSharedDataPointer as a means of creating custom
- implicitly shared classes. It has been renamed Q3Shared moved to
- the Qt3Support library.
-
- An easy way of porting to Qt 4 is to include this class into your
- project and to use it instead of \c QShared:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 63
-
- If possible, we recommend that you use QSharedData and
- QSharedDataPointer instead. They provide thread-safe reference
- counting and handle all the reference counting behind the scenes,
- eliminating the risks of forgetting to increment or decrement the
- reference count.
-
- \section1 QSignal
-
- The QSignal class has been renamed to Q3Signal and moved to the
- Qt3Support library. The preferred approach is to create your own
- QObject subclass with a signal that has the desired signature.
- Alternatively, you can call QMetaObject::invokeMethod() if you
- want to invoke a slot.
-
- \section1 QSimpleRichText
-
- QSimpleRichText has been obsoleted by QTextDocument. It has
- bene renamed Q3SimpleRichText and moved to the Qt3Support
- library.
-
- Previously, you would do the following with Q3SimpleRichText:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 63a
-
- However, with QTextDocument, you use the following code instead:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 63b
-
- See \l{Rich Text Processing} for an overview of the Qt 4 rich
- text classes.
-
- \section1 QSlider
-
- The QSlider::sliderStart() and QSlider::sliderRect() functions
- have been removed.
-
- The slider's rect can now be retrieved using the code snippet below:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 63c
-
- In addition, the direction of a vertical QSlider has changed,
- i.e. the bottom is now the minimum, and the top the maximum. You
- can use the QAbstractSlider::invertedAppearance property to
- control this behavior.
-
- See \l{#properties}{Properties} for a list of QSlider properties
- in Qt 3 that have changed in Qt 4.
-
- \section1 QSocket
-
- The \c QSocket class has been renamed Q3Socket and moved to the
- Qt3Support library. In Qt 4, it has been replaced by
- the QTcpSocket class, which inherits most of its functionality
- from QAbstractSocket.
-
- \section1 QSocketDevice
-
- The \c QSocketDevice class has been renamed Q3SocketDevice and
- moved to the Qt3Support library. In Qt 4, there is no
- direct equivalent to Q3SocketDevice:
-
- \list \o If you use Q3SocketDevice in a thread to perform blocking
- network I/O (a technique encouraged by the \e{Qt Quarterly}
- article \l{http://qt.nokia.com/doc/qq/qq09-networkthread.html}
- {Unblocking Networking}), you can now use QTcpSocket, QFtp, or
- QNetworkAccessManager, which can be used from non-GUI threads.
-
- \o If you use Q3SocketDevice for UDP, you can now use QUdpSocket instead.
-
- \o If you use Q3SocketDevice for other uses, Qt 4 offers no
- alternative right now. However, there is a \c QAbstractSocketEngine
- internal class that offers a low-level socket API similar to
- Q3SocketDevice. Should the need for such functionality arise in
- Qt 4 applications, we will consider making this class public in a
- future release.
- \endlist
-
- \section1 QSortedList
-
- The QSortedList<T> class has been deprecated since Qt 3.0. In Qt
- 4, it has been moved to the Qt3Support library.
-
- In new code, we recommend that you use QList<T> instead and use
- \l qSort() to sort the items.
-
- \section1 QSplitter
-
- The function setResizeMode() has been moved into Qt3Support. Set
- the stretch factor in the widget's size policy to get equivalent
- functionality.
-
- The obsolete function drawSplitter() has been removed. Use
- QStyle::drawPrimitive() to acheive similar functionality.
-
- \section1 QSpinBox
-
- See \l{#properties}{Properties} for a list of QSpinBox properties
- in Qt 3 that have changed in Qt 4.
-
- \section1 QSqlCursor
-
- The \c QSqlCursor class has been renamed Q3SqlCursor and moved to
- the Qt3Support library. In Qt 4, you can use
- QSqlQuery, QSqlQueryModel, or QSqlTableModel, depending on
- whether you want a low-level or a high-level interface for
- accessing databases.
-
- See \l{QtSql Module} for an overview of the new SQL classes.
-
- \section1 QSqlDatabase
-
- QSqlDatabase is now a smart pointer that is passed around by
- value. Simply replace all QSqlDatabase pointers by QSqlDatabase
- objects.
-
- \section1 QSqlEditorFactory
-
- The \c QSqlEditorFactory class has been renamed
- Q3SqlEditorFactory and moved to Qt3Support.
-
- See \l{QtSql Module} for an overview of the new SQL classes.
-
- \section1 QSqlError
-
- The enum \c{Type} was renamed to \c{ErrorType}, The values were renamed as well:
-
- \list
- \o None - use NoError instead
- \o Connection - use ConnectionError instead
- \o Statement - use StatementError instead
- \o Transaction - use TransactionError instead
- \o Unknown - use UnknownError instead
- \endlist
-
- \section1 QSqlFieldInfo
-
- The QSqlFieldInfo class has been moved to Qt3Support. Its
- functionality is now provided by the QSqlField class.
-
- See \l{QtSql Module} for an overview of the new SQL classes.
-
- \section1 QSqlForm
-
- The \c QSqlForm class has been renamed Q3SqlForm and moved to the
- Qt3Support library.
-
- See \l{QtSql Module} for an overview of the new SQL classes.
-
- \section1 QSqlPropertyMap
-
- The \c QSqlPropertyMap class has been renamed Q3SqlPropertyMap
- moved to the Qt3Support library.
-
- See \l{QtSql Module} for an overview of the new SQL classes.
-
- \section1 QSqlQuery
-
- QSqlQuery::prev() was renamed to QSqlQuery::previous().
- QSqlQuery::prev() remains, but it just calls previous().
- QSqlQuery no longer has any virtual methods, i.e., exec(),
- value(), seek(), next(), prev(), first(), last(), and the
- destructor are no longer virtual.
-
- \section1 QSqlRecord
-
- QSqlRecord behaves like a vector now, QSqlRecord::insert() will
- actually insert a new field instead of replacing the existing
- one.
-
- \section1 QSqlRecordInfo
-
- The QSqlRecordInfo class has been moved to Qt3Support. Its
- functionality is now provided by the QSqlRecord class.
-
- See \l{QtSql Module} for an overview of the new SQL classes.
-
- \section1 QSqlSelectCursor
-
- The \c QSqlSelectCursor class has been renamed Q3SqlSelectCursor
- and moved to the Qt3Support library.
-
- See \l{QtSql Module} for an overview of the new SQL classes.
-
- \section1 QStoredDrag
-
- The \c QStoredDrag class has been renamed Q3StoredDrag and moved
- to the Qt3Support library. In Qt 4, use QMimeData
- instead and call QMimeData::setData() to set the data.
-
- See \l{Porting to Qt 4 - Drag and Drop} for a comparison between
- the drag and drop APIs in Qt 3 and Qt 4.
-
- \section1 QStr(I)List
-
- The QStrList and QStrIList convenience classes have been
- deprecated since Qt 2.0. In Qt 4, they have been moved to the
- Qt3Support library. If you used any of these, we
- recommend that you use QStringList or QList<QByteArray> instead.
-
- \section1 QStr(I)Vec
-
- The QStrVec and QStrIVec convenience classes have been deprecated
- since Qt 2.0. In Qt 4, they have been moved to Qt3Support. If you
- used any of these, we recommend that you use QStringList or
- QList<QByteArray> instead.
-
- \section1 QString
-
- Here are the main issues to be aware of when porting QString to
- Qt 4:
-
- \list 1
- \o The QString::QString(QChar) constructor performed implicit
- conversion in Qt 3. Now, you will need a cast to convert a
- QChar to a QString.
-
- \o The QString::QString(const QByteArray &) constructor used to
- stop at the first '\\0' it encountered, for compatibility
- with Qt 1. This quirk has now been fixed; in Qt 4, the
- resulting QString always has the same length as the
- QByteArray that was passed to the constructor.
-
- \o The QString::null static constant has been deprecated in Qt
- 4. For compatibility, Qt 4 provides a QString::null symbol
- that behaves more or less the same as the old constant. The
- new idiom is to write QString() instead of QString::null, or
- to call clear().
-
- \oldcode
- str1 = QString::null;
- if (str2 == QString::null)
- do_something(QString::null);
- \newcode
- str1.clear();
- if (str2.isNull())
- do_something(QString());
- \endcode
-
- In new code, we recommend that you don't rely on the
- distinction between a null string and a (non-null) empty
- string. See \l{Distinction Between Null and Empty Strings}
- for details.
-
- \o QString::latin1() and QString::ascii() have been replaced
- with QString::toLatin1() and QString::toAscii(), which return
- a QByteArray instead of a (non-reentrant) \c{const char *}.
- For consistency, QString::utf8() and QString::local8Bit(),
- which already returned a QByteArray (actually a \c QCString),
- have been renamed QString::toUtf8() and
- QString::toLocal8Bit().
-
- To obtain a \c{const char *} pointer to ASCII or Latin-1 data,
- use QString::toAscii() or QString::toLatin1() to obtain a
- QByteArray containing the data, then call QByteArray::constData()
- to access the character data directly. Note that the pointer
- returned by this function is only valid for the lifetime of the
- byte array; you should avoid taking a pointer to the data
- contained in temporary objects.
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 64
-
- In the above example, the \c goodData pointer is valid for the lifetime
- of the \c asciiData byte array. If you need to keep a copy of the data
- in a non-Qt data structure, use standard C memory allocation and string
- copying functions to do so \e before destroying the byte array.
-
- \o QString::at() returned a non-const reference, whereas the
- new QString::at() returns a const value. Code like
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 65
-
- will no longer compile. Instead, use QString::operator[]:
-
- \snippet doc/src/snippets/code/doc_src_porting4.qdoc 66
-
- \o The QString::contains(\e x) function (where \e x is a
- character or a string) has been renamed QString::count(\e x).
- In addition, there now exists a set of QString::contains()
- functions that returns a boolean value. Replace old calls to
- contains() with either count() or contains(), depending on
- whether you care about the specific number of occurrences of
- a character in the string or only care about whether the
- string contains that character or not.
-
- \o Many functions in QString had a \c bool parameter that
- specified case sensitivity. In Qt 4, in the interest of code
- readability and maintainability, the \c bool parameters have
- been replaced by the Qt::CaseSensitivity enum, which can take
- the values Qt::CaseSensitive and Qt::CaseInsensitive.
-
- \oldcode
- if (url.startsWith("http:", false))
- ...
- \newcode
- if (url.startsWith("http:", Qt::CaseInsensitive))
- ...
- \endcode
-
- \o The QString::setExpand(uint, QChar) function, which already
- was obsolete in Qt 3, is no longer available. Use
- QString::operator[] instead.
-
- \oldcode
- str.setExpand(32, '$');
- \newcode
- str[32] = '$';
- \endcode
-
- \o The \c QT_NO_ASCII_CAST and \c QT_NO_CAST_ASCII macros have
- been renamed \c QT_NO_CAST_TO_ASCII and \c
- QT_NO_CAST_FROM_ASCII, respectively.
-
- \o The QString::data() used to return the same as
- QString::ascii(). It now returns a pointer to the Unicode
- data stored in the QString object. Call QString::ascii() if
- you want the old behavior.
-
- \o QString::arg() now converts two-digit place markers, allowing
- up to 99 place markers to be used in any given string.
-
- \o Comparisons between QStrings and \c NULL in order to determine
- whether strings are empty are no longer allowed.
- Use \l{QString::}{isEmpty()} instead.
-
- \endlist
-
- \section1 QStringList
-
- QStringList now inherits from QList<QString> and can no longer be
- converted to a QValueList<QString>. Since QValueList inherits QList a
- cast will work as expected.
-
- This change implies some API incompatibilities for QStringList.
- For example, at() returns the string, not an iterator. See the
- \l{#qvaluelist.section}{section on QValueList} for details.
-
- The static QStringList::split() function for splitting strings into
- lists of smaller strings has been replaced by QString::split(),
- which returns a QStringList.
-
- \section1 QStyle
-
- The QStyle API has been overhauled and improved. Most of the information on
- why this change was done is described in \l{The Qt 4 Style API}{the QStyle overview}.
-
- Since QStyle is mostly used internally by Qt's widgets and styles and since
- it is not essential to the good functioning of an application, there is no
- compatibility path. This means that we have changed many enums and
- functions and the qt3to4 porting tool will not change much in your qstyle
- code. To ease the pain, we list some of the major changes here.
-
- QStyleOption has taken on a more central role and is no longer an optional
- argument, please see the QStyleOption documentation for more information.
-
- The QStyle::StyleFlags have been renamed QStyle::StateFlags and are now prefixed State_
- instead of Style_, in addition the Style_ButtonDefault flag has moved to
- QStyleOptionButton.
-
- The QStyle::PrimitiveElement enumeration has undergone extensive change.
- Some of the enums were moved to QStyle::ControlElement, some were removed
- and all were renamed. This renaming is not done by the qt3to4 porting tool,
- so you must do it yourself. The table below shows how things look
- now.
-
- \table
- \header \o Old name \o New name \o Remark
- \row \o \c PE_ButtonCommand \o QStyle::PE_PanelButtonCommand
- \row \o \c PE_ButtonDefault \o QStyle::PE_FrameDefaultButton
- \row \o \c PE_ButtonBevel \o QStyle::PE_PanelButtonBevel
- \row \o \c PE_ButtonTool \o QStyle::PE_PanelButtonTool
- \row \o \c PE_ButtonDropDown \o QStyle::PE_IndicatorButtonDropDown
- \row \o \c PE_FocusRect \o QStyle::PE_FrameFocusRect
- \row \o \c PE_ArrowUp \o QStyle::PE_IndicatorArrowUp
- \row \o \c PE_ArrowDown \o QStyle::PE_IndicatorArrowDown
- \row \o \c PE_ArrowRight \o QStyle::PE_IndicatorArrowRight
- \row \o \c PE_ArrowLeft \o QStyle::PE_IndicatorArrowLeft
- \row \o \c PE_SpinBoxUp \o QStyle::PE_IndicatorSpinUp
- \row \o \c PE_SpinBoxDown \o QStyle::PE_IndicatorSpinDown
- \row \o \c PE_SpinBoxPlus \o QStyle::PE_IndicatorSpinPlus
- \row \o \c PE_SpinBoxMinus \o QStyle::PE_IndicatorSpinMinus
- \row \o \c PE_SpinBoxSlider \o QStyle::CE_SpinBoxSlider \o uses QStyle::drawControl()
- \row \o \c PE_Indicator \o QStyle::PE_IndicatorCheckBox
- \row \o \c PE_IndicatorMask \o N/A \o use QStyle::styleHint() to retrieve mask
- \row \o \c PE_ExclusiveIndicator \o QStyle::PE_IndicatorRadioButton
- \row \o \c PE_ExclusiveIndicatorMask \o N/A \o use QStyle::styleHint() to retrieve mask
- \row \o \c PE_DockWindowHandle \o QStyle::PE_IndicatorToolBarHandle
- \row \o \c PE_DockWindowSeparator \o QStyle::PE_Q3DockWindowSeparator
- \row \o \c PE_DockWindowResizeHandle \o QStyle::PE_IndicatorDockWindowResizeHandle
- \row \o \c PE_DockWindowTitle \o QStyle::CE_DockWindowTitle \o uses QStyle::drawControl()
- \row \o \c PE_Splitter \o QStyle::CE_Splitter \o uses QStyle::drawControl()
- \row \o \c PE_Panel \o QStyle::PE_Frame
- \row \o \c PE_PanelMenu \o QStyle::PE_FrameMenu
- \row \o \c PE_PanelMenuBar \o QStyle::PE_PanelMenuBar
- \row \o \c PE_PanelDockWindow \o QStyle::PE_FrameDockWindow
- \row \o \c PE_TabBarBase \o QStyle::PE_FrameTabBarBase
- \row \o \c PE_HeaderSection \o QStyle::CE_HeaderSection \o uses QStyle::drawControl()
- \row \o \c PE_HeaderArrow \o QStyle::PE_IndicatorHeaderArrow
- \row \o \c PE_StatusBarSection \o QStyle::PE_FrameStatusBar
- \row \o \c PE_Separator \o QStyle::PE_Q3Separator
- \row \o \c PE_SizeGrip \o QStyle::CE_SizeGrip \o uses QStyle::drawControl()
- \row \o \c PE_CheckMark \o QStyle::PE_IndicatorMenuCheckMark
- \row \o \c PE_ScrollBarAddLine \o QStyle::CE_ScrollBarAddLine \o uses QStyle::drawControl()
- \row \o \c PE_ScrollBarSubLine \o QStyle::CE_ScrollBarSubLine \o uses QStyle::drawControl()
- \row \o \c PE_ScrollBarAddPage \o QStyle::CE_ScrollBarAddPage \o uses QStyle::drawControl()
- \row \o \c PE_ScrollBarSubPage \o QStyle::CE_ScrollBarSubPage \o uses QStyle::drawControl()
- \row \o \c PE_ScrollBarSlider \o QStyle::CE_ScrollBarSlider \o uses QStyle::drawControl()
- \row \o \c PE_ScrollBarFirst \o QStyle::CE_ScrollBarFirst \o uses QStyle::drawControl()
- \row \o \c PE_ScrollBarLast \o QStyle::CE_ScrollBarLast \o uses QStyle::drawControl()
- \row \o \c PE_ProgressBarChunk \o QStyle::PE_IndicatorProgressChunk
- \row \o \c PE_PanelLineEdit \o QStyle::PE_FrameLineEdit
- \row \o \c PE_PanelTabWidget \o QStyle::PE_FrameTabWidget
- \row \o \c PE_WindowFrame \o QStyle::PE_FrameWindow
- \row \o \c PE_CheckListController \o QStyle::PE_Q3CheckListController
- \row \o \c PE_CheckListIndicator \o QStyle::PE_Q3CheckListIndicator
- \row \o \c PE_CheckListExclusiveIndicato\o QStyle::PE_Q3CheckListExclusiveIndicator
- \row \o \c PE_PanelGroupBox \o QStyle::PE_FrameGroupBox
- \row \o \c PE_TreeBranch \o QStyle::PE_IndicatorBranch
- \row \o \c PE_RubberBand \o QStyle::CE_RubberBand \o uses QStyle::drawControl()
- \row \o \c PE_PanelToolBar \o QStyle::PE_PanelToolBar
- \row \o \c PE_ToolBarHandle \o QStyle::PE_IndicatorToolBarHandle
- \row \o \c PE_ToolBarSeparator \o QStyle::PE_IndicatorToolBarSeparator
- \endtable
-
- The QStyle::drawControlMask() and QStyle::drawComplexControlMask()
- functions have been removed. They are replaced with a style hint.
-
- The QStyle::drawItem() overloads that took both a pixmap and a string have
- been removed. Use QStyle::drawItemText() and QStyle::drawItemPixmap() directly.
-
- The QStyle::itemRect() overload that took both a pixmap and a string is also removed, use
- either QStyle::itemTextRect() or QStyle::itemPixmapRect() instead.
-
- \section1 QStyleSheet
-
- The QStyleSheet and QStyleSheetItem classes have been renamed
- Q3StyleSheet and Q3StyleSheetItem, and have been moved to the
- Qt3Support library.
-
- See \l{Rich Text Processing} for an overview of the Qt 4 rich
- text classes, and \l{Qt Style Sheets} for a description of
- CSS-like style sheet support in Qt 4.2 and above.
-
- \section1 QSyntaxHighlighter
-
- The \c QSyntaxHighlighter class from Qt 3 has been renamed
- Q3SyntaxHighlighter and moved to the Qt3Support library. Since Qt
- 4.1, it has been replaced by a new QSyntaxHighlighter class based
- on Qt 4's new rich text engine.
-
- \section1 QTabBar
-
- See \l{#properties}{Properties} for a list of QTabBar properties
- in Qt 3 that have changed in Qt 4.
-
- \section1 QTabDialog
-
- The \c QTabDialog class is no longer part of the public Qt API.
- It has been renamed Q3TabDialog and moved to Qt3Support. In Qt 4
- applications, you can easily obtain the same result by combining
- a QTabWidget with a QDialog and provide \l{QPushButton}s
- yourself.
-
- See also the \l{dialogs/tabdialog} example, which shows how to
- implement tab dialogs in Qt 4.
-
- \section1 QTabWidget
-
- See \l{#properties}{Properties} for a list of QTabWidget
- properties in Qt 3 that have changed in Qt 4.
-
- \section1 QTable
-
- The \c QTable, \c QTableItem, \c QComboTableItem, \c
- QCheckTableItem, and \c QTableSelection classes have been renamed
- Q3Table, Q3TableItem, Q3ComboTableItem, Q3CheckTableItem, and
- Q3TableSelection and moved to the Qt3Support library.
- New Qt applications should use the new QTableWidget or QTableView
- class instead.
-
- Some of these classes behave differently with respect to the way
- they handle \c NULL pointers. For example, Q3TableItem::setPixmap()
- no longer accepts \c NULL or 0 to indicate that the item should
- contain a null pixmap; in this case, a null pixmap should be
- constructed and passed explicitly to the function.
-
- See \l{Model/View Programming} for an overview of the new item
- view classes.
-
- \section1 QTextCodec
-
- The loadCharmap() and loadCharmapFromFile() functions are no longer
- available in Qt 4. You need to create your own codec if you want to
- create a codec based on a POSIX2 charmap definition.
-
- \section1 QTextDrag
-
- The \c QTextDrag class has been renamed Q3TextDrag and moved to
- the Qt3Support library. In Qt 4, use QMimeData
- instead and call QMimeData::setText() to set the data.
-
- See \l{Porting to Qt 4 - Drag and Drop} for a comparison between
- the drag and drop APIs in Qt 3 and Qt 4.
-
- \section1 QTextEdit
-
- The old QTextEdit and QTextBrowser classes have been renamed
- Q3TextEdit and Q3TextBrowser, and have been moved to Qt3Support.
- The new QTextEdit and QTextBrowser have a somewhat different API.
-
- The \c QTextEdit::setWrapPolicy() function has been renamed to \l{QTextEdit::setWordWrapMode()}{setWordWrapMode()} and the
- \c QTextEdit::setWrapColumnOrWidth() function has been renamed to \l{QTextEdit::setLineWrapColumnOrWidth()}
- {setLineWrapColumnOrWidth()}. The Q3TextEdit::setWrapPolicy() and Q3TextEdit::setWrapColumnOrWidth() still provide this
- functionality in the Q3TextEdit class.
-
-
- See \l{Rich Text Processing} for an overview of the Qt 4 rich
- text classes.
-
- \section1 QTextIStream
-
- The QTextIStream convenience class is no longer provided in Qt 4. Use
- QTextStream directly instead.
-
- \section1 QTextOStream
-
- The QTextOStream convenience class is no longer provided in Qt 4. Use
- QTextStream directly instead.
-
- \section1 QTextOStreamIterator
-
- The undocumented \c QTextOStreamIterator class has been removed
- from the Qt library. If you need it in your application, feel
- free to copy the source code from the Qt 3 \c <qtl.h> header
- file.
-
- \section1 QTextStream
-
- QTextStream has undergone a number of API and implementation enhancements,
- and some of the changes affect QTextStream's behavior:
-
- \list
- \o QTextStream now uses buffered writing, which means that you need to
- call QTextStream::flush(), or use the streaming manipulators \c endl or
- \c flush if you need QTextStream to flush its write buffer. The stream is
- flushed automatically if QTextStream is deleted or when the device is
- closed.
- \o QTextStream now uses buffered reading, so if you read a line from the
- stream, QTextStream will read as much as it can from the device to
- fill up its internal read buffer. This speeds up reading significantly,
- but Qt 3 code that mixed QTextStream access and direct device access
- may need to be updated.
- \o While QTextStream in Qt 3 always translated end-of-line characters from
- Windows style ("\\r\\n") to Unix style ("\\n") on Windows, QTextStream in
- Qt 4 only does this on devices opened with the \c{QIODevice::Text} mode
- (formerly \c{IO_Translate}).
- \endlist
-
- Note that when using a QTextStream on a QFile in Qt 4, calling
- QIODevice::reset() on the QFile will not have the expected result
- because QTextStream now buffers the file. Use the
- QTextStream::seek() function instead.
-
- \section1 QTextView
-
- The \c QTextView class has been renamed Q3TextView and moved to the
- Qt3Support library.
-
- \section1 QTimeEdit
-
- The QTimeEdit class in Qt 4 is a convenience class based on
- QDateTimeEdit. The old class has been renamed Q3TimeEdit and moved
- to the Qt3Support library.
-
- See \l{Porting to Qt 4 - Virtual Functions}{Virtual Functions} for
- a list of \c QTimeEdit virtual member functions in Qt 3 that are no
- longer virtual in Qt 4.
-
- \section1 QTimer
-
- Windows restricts the granularity of timers, but starting with Qt 4,
- we emulate a finer time resolution. On Windows XP we use the
- multimedia timer API, which gives us 1 millisecond resolution for
- QTimer.
-
- Note that other versions of Windows have a lower timer resolution,
- and that code relying on underlying system timer restrictions
- encounters no such limitations using Qt 4 (e.g., setting an
- interval of 0 millisecond results in Qt occupying all of the
- processor time when no GUI events need processing).
-
- \section1 QToolBar
-
- The old \c QToolBar class, which worked with the old \c
- QMainWindow and \c QDockArea classes and inherited from \c
- QDockWindow, has been renamed Q3ToolBar and moved to
- Qt3Support. Note that, when using Q3ToolBar, the toolbar's actions
- must be \l {Q3Action}s.
-
- Use the new QToolBar class in new applications.
-
- \note \l{Q3ToolBar}'s
- \l{Q3DockWindow::setHorizontallyStretchable()}{horizontallyStretchable}
- property can be achieved in QToolBar with
- \l{QWidget#Size Hints and Size Policies}{size policies}.
-
- \section1 QToolButton
-
- See \l{#properties}{Properties} for a list of QToolButton properties
- in Qt 3 that have changed in Qt 4.
-
- Note that many of the properties that could previously be set in
- the constructor must now be set separately.
-
- \section1 QToolTip
-
- The QToolTip::setGloballyEnabled() function no longer exists.
- Tooltips can be disabled by \l{QObject::installEventFilter()}{installing
- an event filter} on qApp (the unique QApplication object) to block events
- of type QEvent::ToolTip.
-
- \section1 QUriDrag
-
- The \c QUriDrag class has been renamed Q3UriDrag and moved to the
- Qt3Support library. In Qt 4, use QMimeData instead
- and call QMimeData::setUrl() to set the URL.
-
- See \l{Porting to Qt 4 - Drag and Drop} for a comparison between
- the drag and drop APIs in Qt 3 and Qt 4.
-
- \section1 QUrl
-
- The QUrl class has been rewritten from scratch in Qt 4 to be more
- standard-compliant. The old QUrl class has been renamed Q3Url and
- moved to the Qt3Support library.
-
- The new QUrl class provides an extensive list of compatibility
- functions to ease porting from Q3Url to QUrl. A few functions
- require you to change your code:
-
- \list
- \o Q3Url::Q3Url(const Q3Url &, const QString &, bool) can be
- simulated by combining the URLs manually (using
- QString::operator+(), for example).
- \o Q3Url::setEncodedPathAndQuery(const QString &) is replaced by
- QUrl::setPath() and QUrl::setEncodedQuery().
- \o Q3Url::encodedPathAndQuery() is replaced by QUrl::path() and
- QUrl::encodedQuery().
- \o Q3Url::isLocalFile() can be simulated by checking that
- QUrl::protocol() is "file".
- \o Q3Url::toString(bool, bool) is replaced by
- QUrl::toString(int), where the \c int parameter specifies a
- combination of \l{QUrl::FormattingOptions}{formatting
- options}.
- \endlist
-
- \section1 QUrlOperator
-
- The \c QUrlOperator class is no longer part of the public Qt API.
- It has been renamed Q3UrlOperator and moved to Qt3Support.
-
- From Qt 4.4, the Network Access API provides a subset of the features
- provided by \c QUrlOperator that are mostly intended for use with
- applications that use the HTTP and FTP protocols. See the
- QNetworkRequest, QNetworkReply, and QNetworkAccessManager documentation
- for further details.
-
- \target qvaluelist.section
- \section1 QValueList<T>
-
- The QValueList<T> class has been replaced by QList<T> and
- QLinkedList<T> in Qt 4. As a help when porting older Qt
- applications, the Qt3Support library contains a
- QValueList<T> class implemented in terms of the new
- QLinkedList<T>. Similarly, it contains QValueListIterator<T> and
- QValueListConstIterator<T> classes implemented in terms of
- QLinkedList<T>::iterator and QLinkedList<T>::const_iterator.
-
- When porting to Qt 4, you have the choice of using QList<T> or
- QLinkedList<T> as alternatives to QValueList<T>. QList<T> has an
- index-based API and provides very fast random access
- (QList::operator[]), whereas QLinkedList<T> has an iterator-based
- API.
-
- Here's a list of problem functions:
-
- \list
- \o QValueList(const std::list<T> &) doesn't exist in QList or
- QLinkedList. You can simulate it by calling
- \l{QLinkedList::append()}{append()} in a loop.
-
- \o QValueList::insert(iterator, size_type, const T& x) doesn't
- exist in QList or QLinkedList. Call
- \l{QLinkedList::insert()}{insert()} repeatedly instead.
-
- \o QValueList::fromLast() doesn't exist in QList or QLinkedList. Use
- QValueList::end() instead.
-
- \oldcode
- for (QValueList<T>::iterator i = list.fromLast(); i != list.begin(); --i)
- do_something(*i);
- \newcode
- QLinkedList<T>::iterator i = list.end();
- while (i != list.begin()) {
- --i; // decrement i before using it
- do_something(*i);
- }
- \endcode
-
- \o QValueList::append() and QValueList::prepend() return an
- iterator to the inserted item. QList's and QLinkedList's
- corresponding functions don't, but it's not a problem because
- QValueList::prepend() always returns begin() and append()
- always returns QValueList::end() - 1.
-
- \o QValueList::at(\e i) return an iterator to the item at index
- \e i. This corresponds to QList::begin() + \e i.
-
- \o QValueList::contains(const T &) corresponds to
- QList::count(const T &) and QLinkedList::count(const T &).
- \endlist
-
- \section1 QValueVector<T>
-
- The QValueVector<T> class has been replaced by QVector<T> in Qt
- 4. As a help when porting older Qt applications, the Qt3Support
- library contains a Q3ValueVector<T> class implemented in terms of
- the new QVector<T>.
-
- When porting from QValueVector<T> to QVector<T>, you might run
- into the following incompatibilities:
-
- \list
- \o QValueVector(const std::vector<T> &) doesn't exist in QVector.
- You can simulate it by calling QVector::append()} in a loop.
- \o QValueVector::resize(int, const T &) doesn't exist in QVector.
- If you want the new items to be initialized with a particular
- value, use QVector::insert() instead.
- \o QValueVector::at() on a non-const vector returns a non-const
- reference. This corresponds to QVector::operator[]().
- \o Both QValueVector::at() functions have an \e ok parameter of
- type \c{bool *} that is set to true if the index is within
- bounds. This functionality doesn't exist in QVector; instead,
- check the index against QVector::size() yourself.
- \endlist
-
- See \l{Generic Containers} for an overview of the Qt 4 container
- classes.
-
- \section1 QVariant
-
- Some changes to the rest of the Qt library have
- implications on QVariant:
-
- \list 1
- \o The \c QVariant::ColorGroup enum value is defined only
- if \c QT3_SUPPORT is defined.
- \o The \c QVariant::IconSet enum value has been renamed
- QVariant::Icon.
- \o The \c QVariant::CString enum value is now a synonym for
- QVariant::ByteArray.
- \endlist
-
- Also, the QVariant(bool, int) constructor has been replaced by QVariant(bool).
- Old code like QVariant(true, 0) should be replaced with QVariant(true); otherwise,
- the QVariant(int, void *) overload might accidentally be triggered.
-
- Many of QVariant's convenience functions in Qt 3, such as toColor() and
- toKeySequence(), have been removed to enable QVariant to be part of the
- QtCore module. QVariant is still able to hold values of these types.
-
- Types which are not supported by any of the QVariant constructors can be
- stored as variants with the QVariant::fromValue() function. Types with no
- suitable convenience function for unpacking can be retrieved with the
- QVariant::value() function or passed directly to classes that implement
- the QVariant() operator.
-
- \table
- \header \o Qt 3 function \o Qt 4 function
- \input porting4-removedvariantfunctions.qdocinc
- \endtable
-
- See the QVariant::Type enum for a list of types supported by QVariant.
-
- \section1 QVBox
-
- The \c QVBox class is now only available as Q3VBox in Qt 4. You
- can achieve the same result as \c QVBox by creating a QWidget
- with a vertical layout:
-
- \oldcode
- QVBox *vbox = new QVBox;
- QPushButton *child1 = new QPushButton(vbox);
- QPushButton *child2 = new QPushButton(vbox);
- \newcode
- QWidget *vbox = new QWidget;
- QPushButton *child1 = new QPushButton;
- QPushButton *child2 = new QPushButton;
-
- QVBoxLayout *layout = new QVBoxLayout;
- layout->addWidget(child1);
- layout->addWidget(child2);
- vbox->setLayout(layout);
- \endcode
-
- Note that child widgets are not automatically placed into the widget's
- layout; you will need to manually add each widget to the QVBoxLayout.
-
- \section1 QVGroupBox
-
- The \c QVGroupBox class has been renamed Q3VGroupBox and moved to
- the Qt3Support library.
- Qt 4 does not provide a specific replacement class for \c QVGroupBox
- since QGroupBox is designed to be a generic container widget. As a
- result, you need to supply your own layout for any child widgets.
-
- See \l{#QGroupBox} for more information about porting code that uses
- group boxes.
-
- \section1 QWhatsThis
-
- The QWhatsThis class has been redesigned in Qt 4. The old \c
- QWhatsThis class is available as Q3WhatsThis in Qt3Support.
-
- \section1 QWidget
-
- Widget background painting has been greatly improved, supporting
- flicker-free updates and making it possible to have
- semi-transparent widgets. This renders the following background
- handling functions obsolete:
-
- \list
- \o QWidget::repaint(bool noErase) - the \c noErase boolean parameter is gone
- \o QWidget::setBackgroundMode(BackgroundMode m)
- \o QWidget::backgroundBrush() const
- \o QWidget::setBackgroundPixmap(const QPixmap &pm)
- \o QWidget::backgroundPixmap() const
- \o QWidget::setBackgroundColor(const QColor &c)
- \o QWidget::backgroundColor() const
- \o QWidget::foregroundColor() const
- \o QWidget::eraseColor() const
- \o QWidget::setEraseColor(const QColor &c)
- \o QWidget::erasePixmap() const
- \o QWidget::setErasePixmap(const QPixmap &p)
- \o QWidget::paletteForegroundColor()
- \o QWidget::setPaletteForegroundColor(const QColor &c)
- \o QWidget::paletteBackgroundColor()
- \o QWidget::setPaletteBackgroundColor(const QColor &c)
- \o QWidget::paletteBackgroundPixmap() const
- \o QWidget::setPaletteBackgroundPixmap(const QPixmap &p)
- \o QWidget::erase()
- \o QWidget::erase(const QRect &r)
- \o QWidget::setBackgroundOrigin( BackgroundOrigin )
- \o QWidget::BackgroundOrigin backgroundOrigin() const
- \o QWidget::backgroundOffset()
- \endlist
-
- Sample code on how to do obtain similar behavior from Qt 4, previously
- handled by some of the above functions can be found in the
- \l{http://qt.nokia.com/doc/qwidget-qt3.html}{Qt 3 Support Members for QWidget}
- page.
-
- A widget now receives change events in its QWidget::changeEvent()
- handler. This makes the following virtual change handlers obsolete:
-
- \list
- \o QWidget::styleChange - use QEvent::StyleChange
- \o QWidget::enabledChange - use QEvent::EnabledChange
- \o QWidget::paletteChange - use QEvent::PaletteChange
- \o QWidget::fontChange - use QEvent::FontChange
- \o QWidget::windowActivationChange - use QEvent::ActivationChange
- \o QWidget::languageChange - use QEvent::LanguageChange
- \endlist
-
- The following functions were slots, but are no more:
- \list
- \o QWidget::clearFocus()
- \o QWidget::setMouseTracking()
- \o QWidget::stackUnder(QWidget*)
- \o QWidget::move(int x, int y)
- \o QWidget::move(const QPoint &)
- \o QWidget::resize(int w, int h)
- \o QWidget::resize(const QSize &)
- \o QWidget::setGeometry(int x, int y, int w, int h)
- \o QWidget::setGeometry(const QRect &)
- \o QWidget::adjustSize()
- \o QWidget::update(int x, int y, int w, int h)
- \o QWidget::update(const QRect&)
- \o QWidget::repaint(bool erase)
- \o QWidget::repaint(int x, int y, int w, int h, bool erase)
- \o QWidget::repaint(const QRect &, bool erase)
- \o QWidget::repaint(const QRegion &, bool erase)
- \o QWidget::setCaption(const QString &)
- \o QWidget::setIcon(const QPixmap &)
- \o QWidget::setIconText(const QString &)
- \endlist
-
- The following functions were incorrectly marked as virtual:
-
- \list
- \o QWidget::close(bool alsoDelete)
- \o QWidget::create(WId, bool, bool)
- \o QWidget::destroy(bool)
- \o QWidget::move(int x, int y)
- \o QWidget::reparent(QWidget *parent, WFlags, const QPoint &, bool)
- \o QWidget::resize(int w, int h)
- \o QWidget::setAcceptDrops(bool on)
- \o QWidget::setActiveWindow()
- \o QWidget::setAutoMask(bool)
- \o QWidget::setBackgroundColor(const QColor &)
- \o QWidget::setBackgroundMode(BackgroundMode)
- \o QWidget::setBackgroundOrigin(BackgroundOrigin)
- \o QWidget::setBackgroundPixmap(const QPixmap &)
- \o QWidget::setCaption(const QString &)
- \o QWidget::setCursor(const QCursor &)
- \o QWidget::setEnabled(bool)
- \o QWidget::setEraseColor(const QColor &)
- \o QWidget::setErasePixmap(const QPixmap &)
- \o QWidget::setFocus()
- \o QWidget::setFocusPolicy(FocusPolicy)
- \o QWidget::setFocusProxy(QWidget *)
- \o QWidget::setFont(const QFont &)
- \o QWidget::setGeometry(const QRect &)
- \o QWidget::setGeometry(int x, int y, int w, int h)
- \o QWidget::setIcon(const QPixmap &)
- \o QWidget::setIconText(const QString &)
- \o QWidget::setKeyCompression(bool)
- \o QWidget::setMask(const QBitmap &)
- \o QWidget::setMask(const QRegion &)
- \o QWidget::setMaximumSize(int maxw, int maxh)
- \o QWidget::setMicroFocusHint(int x, int y, int w, int h, bool, QFont *f)
- \o QWidget::setMinimumSize(int minw, int minh)
- \o QWidget::setMouseTracking(bool enable)
- \o QWidget::setPalette(const QPalette &)
- \o QWidget::setPaletteBackgroundColor(const QColor &)
- \o QWidget::setPaletteBackgroundPixmap(const QPixmap &)
- \o QWidget::setSizeIncrement(int w, int h)
- \o QWidget::setSizePolicy(QSizePolicy)
- \o QWidget::setUpdatesEnabled(bool enable)
- \o QWidget::setWState(uint)
- \o QWidget::show()
- \o QWidget::showFullScreen()
- \o QWidget::showMaximized()
- \o QWidget::showMinimized()
- \o QWidget::showNormal()
- \o QWidget::sizePolicy()
- \o QWidget::unsetCursor()
- \endlist
-
- The internal clearWState() function was removed. Use
- QWidget::setAttribute() instead.
-
- setWFlags() was renamed QWidget::setWindowFlags().
-
- clearWFlags() has no direct replacement. You can use
- QWidget::setAttribute() instead. For example,
- \c{setAttribute(..., false)} to clear an attribute. More information
- is available \l{http://qt.nokia.com/doc/qwidget.html#setAttribute}{here}.
-
- testWFlags() was renamed to \l{QWidget::testAttribute()}{testAttribute()}.
-
- See \l{#properties}{Properties} for a list of QWidget properties
- in Qt 3 that have changed in Qt 4.
-
- \section1 QWidgetFactory
-
- The \c QWidgetFactory class has been replaced by QFormBuilder in Qt 4.
-
- \section1 QWidgetIntDict
-
- The QWidgetIntDict class was a synonym for QIntDict<QWidget>. It
- is no longer available in Qt 4. If you link against Qt3Support,
- you can use Q3IntDict<QWidget> instead; otherwise, see the
- \l{#qdict.section}{section on QDict<T>}.
-
- \target qwidgetlist.section
- \section1 QWidgetList
-
- In Qt 3, the QWidgetList class was a typedef for
- QPtrList<QWidget>. In Qt 4, it is a typedef for QList<QWidget *>.
- See the \l{#qptrlist.section}{section on QPtrList<T>}.
-
- \section1 QWidgetPlugin
-
- The QWidgetPlugin class is no longer available in Qt 4. To create
- custom widget plugins, subclass QDesignerCustomWidgetInterface to
- provide information about the custom widget, and build a plugin in
- the way described in the \l{designer/customwidgetplugin}{Custom
- Widget Plugin} example.
-
- \section1 QWidgetStack
-
- The QWidgetStack class is no longer part of the Qt public API. It
- has been renamed Q3WidgetStack and moved to Qt3Support. In Qt 4
- applications, you can use QStackedWidget instead to obtain the
- same results.
-
- \section1 QWizard
-
- The \c QWizard class was reintroduced in Qt 4.3. See the
- \l{Trivial Wizard Example}, \l{License Wizard Example} and
- \l{Class Wizard Example} for more details.
-
- \section1 QWorkspace
-
- The \c QWorkspace in Qt 4 class requires explicit adding of MDI
- windows with QWorkspace::addWindow().
-*/
-
-/*!
- \page porting4-virtual-functions.html
- \title Porting to Qt 4 - Virtual Functions
- \contentspage {Porting Guides}{Contents}
- \previouspage Porting to Qt 4
- \nextpage Porting to Qt 4 - Drag and Drop
- \ingroup porting
- \brief An overview of changes to virtual functions in Qt 4.
-
- \section1 Virtual Functions
-
- Virtual functions that changed their signature in Qt 4:
-
- \table
- \header \o Qt 3 function signature \o Qt 4 function signature
- \input porting4-modifiedvirtual.qdocinc
- \endtable
-
- Virtual functions that are not virtual in Qt 4:
-
- \table
- \header \o Qt 3 function \o Comment
- \input porting4-removedvirtual.qdocinc
- \endtable
-*/
diff --git a/doc/src/printing.qdoc b/doc/src/printing.qdoc
deleted file mode 100644
index 0472827a1..000000000
--- a/doc/src/printing.qdoc
+++ /dev/null
@@ -1,175 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page printing.html
- \title Printing with Qt
- \ingroup multimedia
- \ingroup text-processing
- \brief A guide to producing printed output with Qt's paint system and widgets.
-
- Qt provides extensive cross-platform support for printing. Using the printing
- systems on each platform, Qt applications can print to attached printers and
- across networks to remote printers. Qt's printing system also enables PostScript
- and PDF files to be generated, providing the foundation for basic report
- generation facilities.
-
- \tableofcontents
-
- \section1 Paint Devices and Printing
-
- In Qt, printers are represented by QPrinter, a paint device that provides
- functionality specific to printing, such as support for multiple pages and
- double-sided output. As a result, printing involves using a QPainter to paint
- onto a series of pages in the same way that you would paint onto a custom
- widget or image.
-
- \section2 Creating a QPrinter
-
- Although QPrinter objects can be constructed and set up without requiring user
- input, printing is often performed as a result of a request by the user;
- for example, when the user selects the \gui{File|Print...} menu item in a GUI
- application. In such cases, a newly-constructed QPrinter object is supplied to
- a QPrintDialog, allowing the user to specify the printer to use, paper size, and
- other printing properties.
-
- \snippet examples/richtext/orderform/mainwindow.cpp 18
-
- It is also possible to set certain default properties by modifying the QPrinter
- before it is supplied to the print dialog. For example, applications that
- generate batches of reports for printing may set up the QPrinter to
- \l{QPrinter::setOutputFileName()}{write to a local file} by default rather than
- to a printer.
-
- \section2 Painting onto a Page
-
- Once a QPrinter object has been constructed and set up, a QPainter can be used
- to perform painting operations on it. We can construct and set up a painter in
- the following way:
-
- \snippet doc/src/snippets/printing-qprinter/object.cpp 0
-
- Since the QPrinter starts with a blank page, we only need to call the
- \l{QPrinter::}{newPage()} function after drawing each page, except for the
- last page.
-
- The document is sent to the printer, or written to a local file, when we call
- \l{QPainter::}{end()}.
-
- \section2 Coordinate Systems
-
- QPrinter provides functions that can be used to obtain information about the
- dimensions of the paper (the paper rectangle) and the dimensions of the
- printable area (the page rectangle). These are given in logical device
- coordinates that may differ from the physical coordinates used by the device
- itself, indicating that the printer is able to render text and graphics at a
- (typically higher) resolution than the user's display.
-
- Although we do not need to handle the conversion between logical and physical
- coordinates ourselves, we still need to apply transformations to painting
- operations because the pixel measurements used to draw on screen are often
- too small for the higher resolutions of typical printers.
-
- \table
- \row \o \bold{Printer and Painter Coordinate Systems}
-
- The \l{QPrinter::}{paperRect()} and \l{QPrinter::}{pageRect()} functions
- provide information about the size of the paper used for printing and the
- area on it that can be painted on.
-
- The rectangle returned by \l{QPrinter::}{pageRect()} usually lies inside
- the rectangle returned by \l{QPrinter::}{paperRect()}. You do not need to
- take the positions and sizes of these area into account when using a QPainter
- with a QPrinter as the underlying paint device; the origin of the painter's
- coordinate system will coincide with the top-left corner of the page
- rectangle, and painting operations will be clipped to the bounds of the
- drawable part of the page.
-
- \o \inlineimage printer-rects.png
- \endtable
-
- The paint system automatically uses the correct device metrics when painting
- text but, if you need to position text using information obtained from
- font metrics, you need to ensure that the print device is specified when
- you construct QFontMetrics and QFontMetricsF objects, or ensure that each QFont
- used is constructed using the form of the constructor that accepts a
- QPaintDevice argument.
-
- \section1 Printing from Complex Widgets
-
- Certain widgets, such as QTextEdit and QGraphicsView, display rich content
- that is typically managed by instances of other classes, such as QTextDocument
- and QGraphicsScene. As a result, it is these content handling classes that
- usually provide printing functionality, either via a function that can be used
- to perform the complete task, or via a function that accepts an existing
- QPainter object. Some widgets provide convenience functions to expose underlying
- printing features, avoiding the need to obtain the content handler just to call
- a single function.
-
- The following table shows which class and function are responsible for
- printing from a selection of different widgets. For widgets that do not expose
- printing functionality directly, the content handling classes containing this
- functionality can be obtained via a function in the corresponding widget's API.
-
- \table
- \header \o Widget \o Printing function \o Accepts
- \row \o QGraphicsView \o QGraphicsView::render() \o QPainter
- \row \o QSvgWidget \o QSvgRenderer::render() \o QPainter
- \row \o QTextEdit \o QTextDocument::print() \o QPrinter
- \row \o QTextLayout \o QTextLayout::draw() \o QPainter
- \row \o QTextLine \o QTextLine::draw() \o QPainter
- \endtable
-
- QTextEdit requires a QPrinter rather than a QPainter because it uses information
- about the configured page dimensions in order to insert page breaks at the most
- appropriate places in printed documents.
-*/
-
-/*!
- \page pdf-licensing.html
- \title Notes about PDF Licensing
- \ingroup licensing
- \brief Details of restrictions on the use of PDF-related trademarks.
-
- Please note that Adobe\reg places restrictions on the use of its trademarks
- (including logos) in conjunction with PDF; e.g. "Adobe PDF". Please refer
- to \l{http://www.adobe.com}{www.adobe.com} for guidelines.
-*/
diff --git a/doc/src/properties.qdoc b/doc/src/properties.qdoc
deleted file mode 100644
index cc284978e..000000000
--- a/doc/src/properties.qdoc
+++ /dev/null
@@ -1,279 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page properties.html
- \title Qt's Property System
- \ingroup architecture
- \brief An overview of Qt's property system.
-
- Qt provides a sophisticated property system similar to the ones
- supplied by some compiler vendors. However, as a compiler- and
- platform-independent library, Qt does not rely on non-standard
- compiler features like \c __property or \c [property]. The Qt
- solution works with \e any standard C++ compiler on every platform
- Qt supports. It is based on the \l {Meta-Object System} that also
- provides inter-object communication via \l{signals and slots}.
-
- \section1 Requirements for Declaring Properties
-
- To declare a property, use the \l {Q_PROPERTY()} {Q_PROPERTY()}
- macro in a class that inherits QObject.
-
- \snippet doc/src/snippets/code/doc_src_properties.qdoc 0
-
- Here are some typical examples of property declarations taken from
- class QWidget.
-
- \snippet doc/src/snippets/code/doc_src_properties.qdoc 1
-
- A property behaves like a class data member, but it has additional
- features accessible through the \l {Meta-Object System}.
-
- \list
-
- \o A \c READ accessor function is required. It is for reading the
- property value. Ideally, a const function is used for this purpose,
- and it must return either the property's type or a pointer or
- reference to that type. e.g., QWidget::focus is a read-only property
- with \c READ function, QWidget::hasFocus().
-
- \o A \c WRITE accessor function is optional. It is for setting the
- property value. It must return void and must take exactly one
- argument, either of the property's type or a pointer or reference
- to that type. e.g., QWidget::enabled has the \c WRITE function
- QWidget::setEnabled(). Read-only properties do not need \c WRITE
- functions. e.g., QWidget::focus has no \c WRITE function.
-
- \o A \c RESET function is optional. It is for setting the property
- back to its context specific default value. e.g., QWidget::cursor
- has the typical \c READ and \c WRITE functions, QWidget::cursor()
- and QWidget::setCursor(), and it also has a \c RESET function,
- QWidget::unsetCursor(), since no call to QWidget::setCursor() can
- mean \e {reset to the context specific cursor}. The \c RESET
- function must return void and take no parameters.
-
- \o A \c NOTIFY signal is optional. If defined, the signal will be
- emitted whenever the value of the property changes. The signal must
- take one parameter, which must be of the same type as the property; the
- parameter will take the new value of the property.
-
- \o The \c DESIGNABLE attribute indicates whether the property
- should be visible in the property editor of GUI design tool (e.g.,
- \l {Qt Designer}). Most properties are \c DESIGNABLE (default
- true). Instead of true or false, you can specify a boolean
- member function.
-
- \o The \c SCRIPTABLE attribute indicates whether this property
- should be accessible by a scripting engine (default true).
- Instead of true or false, you can specify a boolean member
- function.
-
- \o The \c STORED attribute indicates whether the property should
- be thought of as existing on its own or as depending on other
- values. It also indicates whether the property value must be saved
- when storing the object's state. Most properties are \c STORED
- (default true), but e.g., QWidget::minimumWidth() has \c STORED
- false, because its value is just taken from the width component
- of property QWidget::minimumSize(), which is a QSize.
-
- \o The \c USER attribute indicates whether the property is
- designated as the user-facing or user-editable property for the
- class. Normally, there is only one \c USER property per class
- (default false). e.g., QAbstractButton::checked is the user
- editable property for (checkable) buttons. Note that QItemDelegate
- gets and sets a widget's \c USER property.
-
- \o The presence of the \c CONSTANT attibute indicates that the property
- value is constant. For a given object instance, the READ method of a
- constant property must return the same value every time it is called. This
- constant value may be different for different instances of the object. A
- constant property cannot have a WRITE method or a NOTIFY signal.
-
- \o The presence of the \c FINAL attribute indicates that the property
- will not be overridden by a derived class. This can be used for performance
- optimizations in some cases, but is not enforced by moc. Care must be taken
- never to override a \c FINAL property.
-
- \endlist
-
- The \c READ, \c WRITE, and \c RESET functions can be inherited.
- They can also be virtual. When they are inherited in classes where
- multiple inheritance is used, they must come from the first
- inherited class.
-
- The property type can be any type supported by QVariant, or it can
- be a user-defined type. In this example, class QDate is considered
- to be a user-defined type.
-
- \snippet doc/src/snippets/code/doc_src_properties.qdoc 2
-
- Because QDate is user-defined, you must include the \c{<QDate>}
- header file with the property declaration.
-
- For QMap, QList, and QValueList properties, the property value is
- a QVariant whose value is the entire list or map. Note that the
- Q_PROPERTY string cannot contain commas, because commas separate
- macro arguments. Therefore, you must use \c QMap as the property
- type instead of \c QMap<QString,QVariant>. For consistency, also
- use \c QList and \c QValueList instead of \c QList<QVariant> and
- \c QValueList<QVariant>.
-
- \section1 Reading and Writing Properties with the Meta-Object System
-
- A property can be read and written using the generic functions
- QObject::property() and QObject::setProperty(), without knowing
- anything about the owning class except the property's name. In
- the code snippet below, the call to QAbstractButton::setDown() and
- the call to QObject::setProperty() both set property "down".
-
- \snippet doc/src/snippets/code/doc_src_properties.qdoc 3
-
- Accessing a property through its \c WRITE accessor is the better
- of the two, because it is faster and gives better diagnostics at
- compile time, but setting the property this way requires that you
- know about the class at compile time. Accessing properties by name
- lets you access classes you don't know about at compile time. You
- can \e discover a class's properties at run time by querying its
- QObject, QMetaObject, and \l {QMetaProperty} {QMetaProperties}.
-
- \snippet doc/src/snippets/code/doc_src_properties.qdoc 4
-
- In the above snippet, QMetaObject::property() is used to get \l
- {QMetaProperty} {metadata} about each property defined in some
- unknown class. The property name is fetched from the metadata and
- passed to QObject::property() to get the \l {QVariant} {value} of
- the property in the current \l {QObject}{object}.
-
- \section1 A Simple Example
-
- Suppose we have a class MyClass, which is derived from QObject and
- which uses the Q_OBJECT macro in its private section. We want to
- declare a property in MyClass to keep track of a priorty
- value. The name of the property will be \e priority, and its type
- will be an enumeration type named \e Priority, which is defined in
- MyClass.
-
- We declare the property with the Q_PROPERTY() macro in the private
- section of the class. The required \c READ function is named \c
- priority, and we include a \c WRITE function named \c setPriority.
- The enumeration type must be registered with the \l {Meta-Object
- System} using the Q_ENUMS() macro. Registering an enumeration type
- makes the enumerator names available for use in calls to
- QObject::setProperty(). We must also provide our own declarations
- for the \c READ and \c WRITE functions. The declaration of MyClass
- then might look like this:
-
- \snippet doc/src/snippets/code/doc_src_properties.qdoc 5
-
- The \c READ function is const and returns the property type. The
- \c WRITE function returns void and has exactly one parameter of
- the property type. The meta-object compiler enforces these
- requirements.
-
- Given a pointer to an instance of MyClass or a pointer to an
- instance of QObject that happens to be an instance of MyClass, we
- have two ways to set its priority property.
-
- \snippet doc/src/snippets/code/doc_src_properties.qdoc 6
-
- In the example, the enumeration type used for the property type
- was locally declared in MyClass. Had it been declared in another
- class, its fully qualified name (i.e., OtherClass::Priority) would
- be required. In addition, that other class must also inherit
- QObject and register the enum type using Q_ENUMS().
-
- A similar macro, Q_FLAGS(), is also available. Like Q_ENUMS(), it
- registers an enumeration type, but it marks the type as being a
- set of \e flags, i.e. values that can be OR'd together. An I/O
- class might have enumeration values \c Read and \c Write and then
- QObject::setProperty() could accept \c{Read | Write}. Q_FLAGS()
- should be used to register this enumeration type.
-
- \section1 Dynamic Properties
-
- QObject::setProperty() can also be used to add \e new properties
- to an instance of a class at runtime. When it is called with a
- name and a value, if a property with the given name exists in the
- QObject, and if the given value is compatible with the property's
- type, the value is stored in the property, and true is returned.
- If the value is \e not compatible with the property's type, the
- property is \e not changed, and false is returned. But if the
- property with the given name doesn't exist in the QObject (i.e.,
- if it wasn't declared with Q_PROPERTY(), a new property with the
- given name and value is automatically added to the QObject, but
- false is still returned. This means that a return of false can't
- be used to determine whether a particular property was actually
- set, unless you know in advance that the property already exists
- in the QObject.
-
- Note that \e dynamic properties are added on a per instance basis,
- i.e., they are added to QObject, not QMetaObject. A property can
- be removed from an instance by passing the property name and an
- invalid QVariant value to QObject::setProperty(). The default
- constructor for QVariant constructs an invalid QVariant.
-
- Dynamic properties can be queried with QObject::property(), just
- like properties declared at compile time with Q_PROPERTY().
-
- \sa {Meta-Object System}, {Signals and Slots}
-
- \section1 Properties and Custom Types
-
- Custom types used by properties need to be registered using the
- Q_DECLARE_METATYPE() macro so that their values can be stored in
- QVariant objects. This makes them suitable for use with both
- static properties declared using the Q_PROPERTY() macro in class
- definitions and dynamic properties created at run-time.
-
- \sa Q_DECLARE_METATYPE(), QMetaType, QVariant
-
- \section1 Adding Additional Information to a Class
-
- Connected to the property system is an additional macro,
- Q_CLASSINFO(), that can be used to attach additional
- \e{name}--\e{value} pairs to a class's meta-object, for example:
-
- \snippet doc/src/snippets/code/doc_src_properties.qdoc 7
-
- Like other meta-data, class information is accessible at run-time
- through the meta-object; see QMetaObject::classInfo() for details.
-*/
diff --git a/doc/src/qaxcontainer.qdoc b/doc/src/qaxcontainer.qdoc
deleted file mode 100644
index 59f059f21..000000000
--- a/doc/src/qaxcontainer.qdoc
+++ /dev/null
@@ -1,260 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QAxContainer
- \title QAxContainer Module
- \contentspage Qt's Modules
- \previouspage QtTest
- \nextpage QAxServer
- \ingroup modules
-
- \brief The QAxContainer module is a Windows-only extension for
- accessing ActiveX controls and COM objects.
-
- The QAxContainer module is part of the \l ActiveQt framework. It
- provides a library implementing a QWidget subclass, QAxWidget,
- that acts as a container for ActiveX controls, and a QObject
- subclass, QAxObject, that can be used to easily access non-visual
- COM objects. Scripting COM objects embedded using these classes
- is possible through the QAxScript, QAxScriptManager and
- QAxScriptEngine classes, and a set of \l{Tools for ActiveQt}{tools}
- makes it easy to access COM objects programmatically.
-
- The module consists of six classes
- \list 1
- \o QAxBase is an abstract class that provides an API to initialize
- and access a COM object or ActiveX control.
- \o QAxObject provides a QObject that wraps a COM object.
- \o QAxWidget is a QWidget that wraps an ActiveX control.
- \o QAxScriptManager, QAxScript and QAxScriptEngine provide an
- interface to the Windows Script Host.
- \endlist
-
- Some \l{Qt Examples#ActiveQt}{example applications} that use
- standard ActiveX controls to provide high-level user interface
- functionality are provided.
-
- \sa {ActiveQt Framework}
-
- Topics:
-
- \tableofcontents
-
- \section1 Using the Library
-
- To build Qt applications that can host COM objects and ActiveX controls
- link the application against the QAxContainer module by adding
-
- \snippet doc/src/snippets/code/doc_src_qaxcontainer.qdoc 0
-
- to your application's \c .pro file.
-
- \section2 Distributing QAxContainer Applications
-
- The QAxContainer library is static, so there is no need to redistribute
- any additional files when using this module. Note however that the
- ActiveX server binaries you are using might not be installed on the
- target system, so you have to ship them with your package and register
- them during the installation process of your application.
-
- \section1 Instantiating COM Objects
-
- To instantiate a COM object use the QAxBase::setControl() API, or pass
- the name of the object directly into the constructor of the QAxBase
- subclass you are using.
-
- The control can be specified in a variety of formats, but the fastest
- and most powerful format is to use the class ID (CLSID) of the object
- directly. The class ID can be prepended with information about a remote
- machine that the object should run on, and can include a license key
- for licensed controls.
-
- \section2 Typical Error Messages
-
- ActiveQt prints error messages to the debug output when it
- encounters error situations at runtime. Usually you must run
- your program in the debugger to see these messages (e.g. in Visual
- Studio's Debug output).
-
- \section3 Requested control could not be instantiated
-
- The control requested in QAxBase::setControl() is not installed
- on this system, or is not accessible for the current user.
-
- The control might require administrator rights, or a license key.
- If the control is licensed, pass the license key to QAxBase::setControl
- as documented.
-
- \section1 Accessing the Object API
-
- ActiveQt provides a Qt API to the COM object, and replaces COM
- datatypes with Qt equivalents.
-
- There are four ways to call APIs on the COM object:
-
- \list
- \o Generating a C++ namespace
- \o Call-by-name
- \o Through a script engine
- \o Using the native COM interfaces
- \endlist
-
- \section2 Generating a C++ Namespace
-
- To generate a C++ namespace for the type library you want to access,
- use the \l dumpcpp tool. Run this tool manually on the type library you
- want to use, or integrate it into the build system by adding the type
- libraries to the \c TYPELIBS variable in your application's \c .pro file:
-
- \snippet doc/src/snippets/code/doc_src_qaxcontainer.qdoc 1
-
- Note that \l dumpcpp might not be able to expose all APIs in the type
- library.
-
- Include the resulting header file in your code to access the
- object APIs through the generated C++ classes. See the
- \l{activeqt/qutlook}{Qutlook} example for more information.
-
- \section2 Call-by-Name
-
- Use QAxBase::dynamicCall() and QAxBase::querySubObject() as well as
- the QObject::setProperty() and QObject::property() APIs to call the
- methods and properties of the COM object through their name. Use the
- \l dumpdoc tool to get the documentation of the Qt API for any COM
- object and its subobjects; note that not all of the COM object's APIs
- might be available.
-
- See the \l{activeqt/webbrowser}{Webbrowser} example for more information.
-
- \section2 Calling Function Through a Script Engine
-
- A Qt application can host any ActiveScript engine installed on the system.
- The script engine can then run script code that accesses the COM objects.
-
- To instantiate a script engine, use QAxScriptManager::addObject() to
- register the COM objects you want to access from script, and
- QAxScriptManager::load() to load the script code into the engine. Then
- call the script functions using QAxScriptManager::call() or
- QAxScript::call().
-
- Which APIs of the COM object are available through scripting depends on
- the script language used.
-
- The \l{testcon - An ActiveX Test Container (ActiveQt)}{ActiveX Test Container}
- demonstrates loading of script files.
-
- \section2 Calling a Function Using the Native COM Interfaces
-
- To call functions of the COM object that can not be accessed via any
- of the above methods it is possible to request the COM interface directly
- using QAxBase::queryInterface(). To get a C++ definition of the respective
- interface classes use the \c #import directive with the type library
- provided with the control; see your compiler manual for details.
-
- \section2 Typical Error Messages
-
- ActiveQt prints error messages to the debug output when it
- encounters error situations at runtime. Usually you must run
- your program in the debugger to see these messages (e.g. in Visual
- Studio's Debug output).
-
- \section3 QAxBase::internalInvoke: No such method
-
- A QAxBase::dynamicCall() failed - the function prototype did not
- match any function available in the object's API.
-
- \section3 Error calling IDispatch member: Non-optional parameter missing
-
- A QAxBase::dynamicCall() failed - the function prototype was correct,
- but too few parameters were provided.
-
- \section3 Error calling IDispatch member: Type mismatch in parameter n
-
- A QAxBase::dynamicCall() failed - the function prototype was correct,
- but the paramter at index \c n was of the wrong type and could
- not be coerced to the correct type.
-
- \section3 QAxScriptManager::call(): No script provides this function
-
- You try to call a function that is provided through an engine
- that doesn't provide introspection (ie. ActivePython or
- ActivePerl). You need to call the function directly on the
- respective QAxScript object.
-
- \section1 License Information
-
- The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
- the \l{GNU Lesser General Public License (LGPL)}, or the
- \l{Qt Commercial Editions}{Qt Commercial License}. Instead, it is distributed under
- the following license.
-
- \legalese
- Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\br
- All rights reserved.
-
- Contact: Nokia Corporation (qt-info@nokia.com)\br
-
- You may use this file under the terms of the BSD license as follows:\br
-
- "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.\br
- * 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.\br
- * 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."
- \endlegalese
-*/
diff --git a/doc/src/qaxserver.qdoc b/doc/src/qaxserver.qdoc
deleted file mode 100644
index 63c1e1304..000000000
--- a/doc/src/qaxserver.qdoc
+++ /dev/null
@@ -1,898 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QAxServer
- \title QAxServer Module
- \contentspage Qt's Modules
- \previouspage QAxContainer
- \nextpage QtDBus module
- \ingroup modules
-
- \brief The QAxServer module is a Windows-only static library that
- you can use to turn a standard Qt binary into a COM server.
-
- The QAxServer module is part of the \l ActiveQt framework. It
- consists of three classes:
-
- \list
- \o QAxFactory defines a factory for the creation of COM objects.
- \o QAxBindable provides an interface between the Qt widget and the
- COM object.
- \o QAxAggregated can be subclassed to implement additional COM interfaces.
- \endlist
-
- Some \l{Qt Examples#ActiveQt}{example implementations} of ActiveX
- controls and COM objects are provided.
-
- \sa {ActiveQt Framework}
-
- Topics:
-
- \tableofcontents
-
- \section1 Using the Library
-
- To turn a standard Qt application into a COM server using the
- QAxServer library you must add \c qaxserver as a CONFIG setting
- in your \c .pro file.
-
- An out-of-process executable server is generated from a \c .pro
- file like this:
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 0
-
- To build an in-process server, use a \c .pro file like this:
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 1
-
- The files \c qaxserver.rc and \c qaxserver.def are part of the
- framework and can be used from their usual location (specify a
- path in the \c .pro file), or copied into the project directory.
- You can modify these files as long as it includes any file as the
- type library entry, ie. you can add version information or specify
- a different toolbox icon.
-
- The \c qaxserver configuration will cause the \c qmake tool to add the
- required build steps to the build system:
-
- \list
- \o Link the binary against \c qaxserver.lib instead of \c qtmain.lib
- \o Call the \l idc tool to generate an IDL file for the COM server
- \o Compile the IDL into a type library using the MIDL tool (part of the
- compiler installation)
- \o Attach the resulting type library as a binary resource to the server
- binary (again using the \l idc tool)
- \o Register the server
- \endlist
-
- Note that the QAxServer build system is not supported on Windows 98/ME
- (attaching of resources to a binary is not possible there), but a server
- built on Windows NT/2000/XP will work on previous Windows versions as well.
-
- To skip the post-processing step, also set the \c qaxserver_no_postlink
- configuration.
-
- Additionally you can specify a version number using the \c VERSION
- variable, e.g.
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 2
-
- The version number specified will be used as the version of the type
- library and of the server when registering.
-
- \section2 Out-of-Process vs. In-Process
-
- Whether your COM server should run as a stand-alone executable
- or as a shared library in the client process depends mainly on the
- type of COM objects you want to provide in the server.
-
- An executable server has the advantage of being able to run as a
- stand-alone application, but adds considerable overhead to the
- communication between the COM client and the COM object. If the
- control has a programming error only the server process running
- the control will crash, and the client application will probably
- continue to run. Not all COM clients support executable servers.
-
- An in-process server is usually smaller and has faster startup
- time. The communication between client and server is done directly
- through virtual function calls and does not introduce the overhead
- required for remote procedure calls. However, if the server crashes the
- client application is likely to crash as well, and not every
- functionality is available for in-process servers (i.e. register in
- the COM's running-object-table).
-
- Both server types can use Qt either as a shared library, or statically
- linked into the server binary.
-
- \section2 Typical Errors During the Post-Build Steps
-
- For the ActiveQt specific post-processing steps to work the
- server has to meet some requirements:
-
- \list
- \o All controls exposed can be created with nothing but a QApplication
- instance being present
- \o The initial linking of the server includes a temporary type
- library resource
- \o All dependencies required to run the server are in the system path
- (or in the path used by the calling environment; note that Visual
- Studio has its own set of environment variables listed in the
- Tools|Options|Directories dialog).
- \endlist
-
- If those requirements are not met one ore more of the following
- errors are likely to occur:
-
- \section3 The Server Executable Crashes
-
- To generate the IDL the widgets exposed as ActiveX controls need to
- be instantiated (the constructor is called). At this point, nothing
- else but a QApplication object exists. Your widget constructor must
- not rely on any other objects to be created, e.g. it should check for
- null-pointers.
-
- To debug your server run it with -dumpidl outputfile and check where
- it crashes.
-
- Note that no functions of the control are called.
-
- \section3 The Server Executable Is Not a Valid Win32 Application
-
- Attaching the type library corrupted the server binary. This is a
- bug in Windows and happens only with release builds.
-
- The first linking step has to link a dummy type library into the
- executable that can later be replaced by idc. Add a resource file
- with a type library to your project as demonstrated in the examples.
-
- \section3 "Unable to locate DLL"
-
- The build system needs to run the server executable to generate
- the interface definition, and to register the server. If a dynamic
- link library the server links against is not in the path this
- might fail (e.g. Visual Studio calls the server using the
- enivronment settings specified in the "Directories" option). Make
- sure that all DLLs required by your server are located in a
- directory that is listed in the path as printed in the error
- message box.
-
- \section3 "Cannot open file ..."
-
- The ActiveX server could not shut down properly when the last
- client stopped using it. It usually takes about two seconds for
- the application to terminate, but you might have to use the task
- manager to kill the process (e.g. when a client doesn't release
- the controls properly).
-
- \section1 Implementing Controls
-
- To implement a COM object with Qt, create a subclass of QObject
- or any existing QObject subclass. If the class is a subclass of QWidget,
- the COM object will be an ActiveX control.
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 3
-
- The Q_OBJECT macro is required to provide the meta object information
- about the widget to the ActiveQt framework.
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 4
-
- Use the Q_CLASSINFO() macro to specify the COM identifiers for the COM
- object. \c ClassID and \c InterfaceID are required, while \c EventsID is
- only necessary when your object has signals. To generate these identifiers,
- use system tools like \c uuidgen or \c guidgen.
-
- You can specify additional attributes for each of your classes; see
- \l{Class Information and Tuning} for details.
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 5
-
- Use the Q_PROPERTY() macro to declare properties for the ActiveX control.
-
- Declare a standard constructor taking a parent object, and functions,
- signals and slots like for any QObject subclass.
- \footnote
- If a standard constructor is not present the compiler will issue
- an error "no overloaded function takes 2 parameters" when using
- the default factory through the QAXFACTORY_DEFAULT() macro. If you
- cannot provide a standard constructor you must implement a
- QAxFactory custom factory and call the constructor you have in
- your implementation of QAxFactory::create.
- \endfootnote
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 6
-
- The ActiveQt framework will expose properties and public slots as ActiveX
- properties and methods, and signals as ActiveX events, and convert between
- the Qt data types and the equivalent COM data types.
-
- \section2 Data Types
-
- The Qt data types that are supported for properties are:
-
- \table
- \header
- \o Qt data type
- \o COM property
- \row
- \o bool
- \o VARIANT_BOOL
- \row
- \o QString
- \o BSTR
- \row
- \o int
- \o int
- \row
- \o uint
- \o unsigned int
- \row
- \o double
- \o double
- \row
- \o \l qlonglong
- \o CY
- \row
- \o \l qulonglong
- \o CY
- \row
- \o QColor
- \o OLE_COLOR
- \row
- \o QDate
- \o DATE
- \row
- \o QDateTime
- \o DATE
- \row
- \o QTime
- \o DATE
- \row
- \o QFont
- \o IFontDisp*
- \row
- \o QPixmap
- \o IPictureDisp*
- \footnote
- COM cannot marshal IPictureDisp accross process boundaries,
- so QPixmap properties cannot be called for out-of-process servers. You
- can however marshal the image data via e.g. temporary files. See the
- Microsoft
- \link http://support.microsoft.com/default.aspx?scid=kb;[LN];Q150034 KB article
- Q150034 \endlink for more information.
- \endfootnote
- \row
- \o QVariant
- \o VARIANT
- \row
- \o QVariantList (same as QList\<QVariant\>)
- \o SAFEARRAY(VARIANT)
- \row
- \o QStringList
- \o SAFEARRAY(BSTR)
- \row
- \o QByteArray
- \o SAFEARRAY(BYTE)
- \row
- \o QRect
- \o User defined type
- \row
- \o QSize
- \o User defined type
- \row
- \o QPoint
- \o User defined type
- \endtable
-
- The Qt data types that are supported for parameters in signals and
- slots are:
- \table
- \header
- \o Qt data type
- \o COM parameter
- \row
- \o bool
- \o [in] VARIANT_BOOL
- \row
- \o bool&
- \o [in, out] VARIANT_BOOL*
- \row
- \o QString, const QString&
- \o [in] BSTR
- \row
- \o QString&
- \o [in, out] BSTR*
- \row
- \o QString&
- \o [in, out] BSTR*
- \row
- \o int
- \o [in] int
- \row
- \o int&
- \o [in,out] int
- \row
- \o uint
- \o [in] unsigned int
- \row
- \o uint&
- \o [in, out] unsigned int*
- \row
- \o double
- \o [in] double
- \row
- \o double&
- \o [in, out] double*
- \row
- \o QColor, const QColor&
- \o [in] OLE_COLOR
- \row
- \o QColor&
- \o [in, out] OLE_COLOR*
- \row
- \o QDate, const QDate&
- \o [in] DATE
- \row
- \o QDate&
- \o [in, out] DATE*
- \row
- \o QDateTime, const QDateTime&
- \o [in] DATE
- \row
- \o QDateTime&
- \o [in, out] DATE*
- \row
- \o QFont, const QFont&
- \o [in] IFontDisp*
- \row
- \o QFont&
- \o [in, out] IFontDisp**
- \row
- \o QPixmap, const QPixmap&
- \o [in] IPictureDisp*
- \row
- \o QPixmap&
- \o [in, out] IPictureDisp**
- \row
- \o QList\<QVariant\>, const QList\<QVariant\>&
- \o [in] SAFEARRAY(VARIANT)
- \row
- \o QList\<QVariant\>&
- \o [in, out] SAFEARRAY(VARIANT)*
- \row
- \o QStringList, const QStringList&
- \o [in] SAFEARRAY(BSTR)
- \row
- \o QStringList&
- \o [in, out] SAFEARRAY(BSTR)*
- \row
- \o QByteArray, const QByteArray&
- \o [in] SAFEARRAY(BYTE)
- \row
- \o QByteArray&
- \o [in, out] SAFEARRAY(BYTE)*
- \row
- \o QObject*
- \o [in] IDispatch*
- \row
- \o QRect&
- \footnote
- OLE needs to marshal user defined types by reference (ByRef), and cannot
- marshal them by value (ByVal). This is why const-references and object
- parameters are not supported for QRect, QSize and QPoint. Also note that
- servers with this datatype require Windows 98 or DCOM 1.2 to be installed.
- \endfootnote
- \o [in, out] struct QRect (user defined)
- \row
- \o QSize&
- \o [in, out] struct QSize (user defined)
- \row
- \o QPoint&
- \o [in, out] struct QPoint (user defined)
- \endtable
-
- Also supported are exported enums and flags (see Q_ENUMS() and
- Q_FLAGS()). The in-parameter types are also supported as
- return values.
-
- Properties and signals/slots that have parameters using any other
- data types are ignored by the ActiveQt framework.
-
- \section2 Sub-Objects
-
- COM objects can have multiple sub-objects that can represent a sub element
- of the COM object. A COM object representing a multi-document spread sheet
- application can for example provide one sub-object for each spread sheet.
-
- Any QObject subclass can be used as the type for a sub object in ActiveX, as
- long as it is known to the QAxFactory. Then the type can be used in properties,
- or as the return type or paramter of a slot.
-
- \section2 Property Notification
-
- To make the properties bindable for the ActiveX client, use multiple
- inheritance from the QAxBindable class:
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 7
-
- When implementing the property write functions, use the
- QAxBindable class's requestPropertyChange() and propertyChanged()
- functions to allow ActiveX clients to bind to the control
- properties.
- \footnote
- This is not required, but gives the client more control over
- the ActiveX control.
- \endfootnote
-
- \section1 Serving Controls
-
- To make a COM server available to the COM system it must be registered
- in the system registry using five unique identifiers.
- These identifiers are provided by tools like \c guidgen or \c uuidgen.
- The registration information allows COM to localize the binary providing
- a requested ActiveX control, marshall remote procedure calls to the
- control and read type information about the methods and properties exposed
- by the control.
-
- To create the COM object when the client asks for it the server must export
- an implementation of a QAxFactory. The easist way to do this is to use a set
- of macros:
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 8
-
- This will export \c MyWidget and \c MyWidget2 as COM objects that can be
- created by COM clients, and will register \c MySubType as a type that can
- be used in properties and parameters of \c MyWidget and \c MyWidget2.
-
- The \link QAxFactory QAxFactory class documentation \endlink explains
- how to use this macro, and how to implement and use custom factories.
-
- For out-of-process executable servers you can implement a main()
- function to instantiate a QApplication object and enter the event
- loop just like any normal Qt application. By default the
- application will start as a standard Qt application, but if you
- pass \c -activex on the command line it will start as an ActiveX
- server. Use QAxFactory::isServer() to create and run a standard
- application interface, or to prevent a stand-alone execution:
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 9
-
- This is however not necessary as ActiveQt provides a default implementation
- of a main function. The default implemenation calls QAxFactory::startServer(),
- creates a QApplication instance and calls exec().
-
- To build the ActiveX server executable run \c qmake
- to generate the makefile, and use your compiler's
- make tool as for any other Qt application. The make process will
- also register the controls in the system registry by calling the
- resulting executable with the \c -regserver command line option.
-
- If the ActiveX server is an executable, the following command line
- options are supported:
- \table
- \header \o Option \o Result
- \row \o \c -regserver \o Registers the server in the system registry
- \row \o \c -unregserver \o Unregisters the server from the system registry
- \row \o \c -activex \o Starts the application as an ActiveX server
- \row \o \c{-dumpidl <file> -version x.y} \o Writes the server's IDL to the
- specified file. The type library will have version x.y
- \endtable
-
- In-process servers can be registered using the \c regsvr32 tool available
- on all Windows systems.
-
- \section2 Typical Compile-Time Problems
-
- The compiler/linker errors listed are based on those issued by the
- Microsoft Visual C++ 6.0 compiler.
-
- \section3 "No overloaded function takes 2 parameters"
-
- When the error occurs in code that uses the QAXFACTORY_DEFAULT()
- macro, the widget class had no constructor that can be used by the
- default factory. Either add a standard widget constructor or
- implement a custom factory that doesn't require one.
-
- When the error occurs in code that uses the QAXFACTORY_EXPORT()
- macro, the QAxFactory subclass had no appropriate constructor.
- Provide a public class constructor like
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 10
-
- for your factory class.
-
- \section3 "Syntax error: bad suffix on number"
-
- The unique identifiers have not been passed as strings into the
- QAXFACTORY_EXPORT() or QAXFACTORY_DEFAULT() macro.
-
- \section3 "Unresolved external symbol _ucm_instantiate"
-
- The server does not export an implementation of a QAxFactory. Use
- the QAXFACTORY_EXPORT() macro in one of the project's
- implementation files to instantiate and export a factory, or use
- the QAXFACTORY_DEFAULT() macro to use the default factory.
-
- \section3 "_ucm_initialize already defined in ..."
-
- The server exports more than one implementation of a QAxFactory,
- or exports the same implementation twice. If you use the default
- factory, the QAXFACTORY_DEFAULT() macro must only be used once in
- the project. Use a custom QAxFactory implementation and the
- QAXFACTORY_EXPORT() macro if the server provides multiple ActiveX
- controls.
-
- \section2 Distributing QAxServer Binaries
-
- ActiveX servers written with Qt can use Qt either as a shared
- library, or have Qt linked statically into the binary. Both ways
- will produce rather large packages (either the server binary
- itself becomes large, or you have to ship the Qt DLL).
-
- \section3 Installing Stand-Alone Servers
-
- When your ActiveX server can also run as a stand-alone application,
- run the server executable with the \c -regserver command line
- parameter after installing the executable on the target system.
- After that the controls provided by the server will be available to
- ActiveX clients.
-
- \section3 Installing In-Process Servers
-
- When your ActiveX server is part of an installation package, use the
- \c regsvr32 tool provided by Microsoft to register the controls on
- the target system. If this tool is not present, load the DLL into
- your installer process, resolve the \c DllRegisterServer symbol and
- call the function:
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 11
-
- \section3 Distributing Servers over the Internet
-
- If you want to use controls in your server in web-pages you need to
- make the server available to the browser used to view your page, and
- you need to specify the location of the server package in your page.
-
- To specify the location of a server, use the CODEBASE attribute in
- the OBJECT tag of your web-site. The value can point to the server
- file itself, to an INF file listing other files the server requires
- (e.g. the Qt DLL), or a compressed CAB archive.
-
- INF and CAB files are documented in almost every book available about
- ActiveX and COM programming as well as in the MSDN library and various
- other Online resources. The examples include INF files that can be used
- to build CAB archives:
-
- \snippet examples/activeqt/simple/simple.inf 0
-
- The CABARC tool from Microsoft can easily generate CAB archives:
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 12
-
- The INF files assume a static build of Qt, so no dependencies to other DLLs
- are listed in the INF files. To distribute an ActiveX server depending on
- DLLs you must add the dependencies, and provide the library files
- with the archive.
-
- \section1 Using the Controls
-
- To use the ActiveX controls, e.g. to embed them in a web page, use
- the \c <object> HTML tag.
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 13
-
- To initialize the control's properties, use
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 14
-
- If the web browser supports scripting use JavaScript, VBScript
- and forms to script the control. The
- \l{Qt Examples#ActiveQt}{ActiveQt examples} include demonstration
- HTML pages for the example controls.
-
- \section2 Supported and Unsupported ActiveX Clients
-
- The following is largly based on our own experiements with ActiveX
- controls and client applications, and is by no means complete.
-
- \section3 Supported Clients
-
- These standard applications work with ActiveX controls developed with
- ActiveQt. Note that some clients support only in-process controls.
-
- \list
- \o Internet Explorer
- \o Microsoft ActiveX Control Test Container
- \o Microsoft Visual Studio 6.0
- \o Microsoft Visual Studio.NET/2003
- \o Microsoft Visual Basic 6.0
- \o MFC- and ATL-based containers
- \o Sybase PowerBuilder
- \o ActiveQt based containers
- \endlist
-
- Microsoft Office applications are supported, but you need to register
- the controls as "Insertable" objects. Reimplement QAxFactory::registerClass
- to add this attribute to the COM class, or set the "Insertable" class info
- for your class to "yes" using the Q_CLASSINFO macro.
-
- \section3 Unsupported Clients
-
- We have not managed to make ActiveQt based COM objects work with the
- following client applications.
-
- \list
- \o Borland C++ Builder (Versions 5 and 6)
- \o Borland Delphi
- \endlist
-
- \section2 Typical Runtime Errors
-
- \section3 The Server Does Not Respond
-
- If the system is unable to start the server (check with the task
- manager whether the server runs a process), make sure that no DLL
- the server depends on is missing from the system path (e.g. the Qt
- DLL!). Use a dependency walker to view all dependencies of the server
- binary.
-
- If the server runs (e.g. the task manager lists a process), see
- the following section for information on debugging your server.
-
- \section3 The Object Cannot Be Created
-
- If the server could be built and registered correctly during the build
- process, but the object cannot be initiliazed e.g. by the OLE/COM Object
- Viewer application, make sure that no DLL the server depends on is
- missing from the system path (e.g. the Qt DLL). Use a dependency walker
- to view all dependencies of the server binary.
-
- If the server runs, see the following section for information on
- debugging your server.
-
- \section2 Debugging Runtime Errors
-
- To debug an in-process server in Visual Studio, set the server project
- as the active project, and specify a client "executable for debug
- session" in the project settings (e.g. use the ActiveX Test Container).
- You can set breakpoints in your code, and also step into ActiveQt and
- Qt code if you installed the debug version.
-
- To debug an executable server, run the application in a debugger
- and start with the command line parameter \c -activex. Then start
- your client and create an instance of your ActiveX control. COM
- will use the existing process for the next client trying to create
- an ActiveX control.
-
- \section1 Class Information and Tuning
-
- To provide attributes for each COM class, use the Q_CLASSINFO macro, which is part of
- Qt's meta object system.
-
- \table
- \header
- \o Key
- \o Meaning of value
- \row
- \o Version
- \o The version of the class (1.0 is default)
- \row
- \o Description
- \o A string describing the class.
- \row
- \o ClassID
- \o The class ID.
- You must reimplement QAxFactory::classID if not specified.
- \row
- \o InterfaceID
- \o The interface ID.
- You must reimplement QAxFactory::interfaceID if not specified.
- \row
- \o EventsID
- \o The event interface ID.
- No signals are exposed as COM events if not specified.
- \row
- \o DefaultProperty
- \o The property specified represents the default property of this class.
- Ie. the default property of a push button would be "text".
- \row
- \o DefaultSignal
- \o The signal specified respresents the default signal of this class.
- Ie. the default signal of a push button would be "clicked".
- \row
- \o LicenseKey
- \o Object creation requires the specified license key. The key can be
- empty to require a licensed machine. By default classes are not
- licensed. Also see the following section.
- \row
- \o StockEvents
- \o Objects expose stock events if value is "yes".
- See \l QAxFactory::hasStockEvents()
- \row
- \o ToSuperClass
- \o Objects expose functionality of all super-classes up to and
- including the class name in value.
- See \l QAxFactory::exposeToSuperClass()
- \row
- \o Insertable
- \o If the value is "yes" the class is registered to be "Insertable"
- and will be listed in OLE 2 containers (ie. Microsoft Office). This
- attribute is not be set by default.
- \row
- \o Aggregatable
- \o If the value is "no" the class does not support aggregation. By
- default aggregation is supported.
- \row
- \o Creatable
- \o If the value is "no" the class cannot be created by the client,
- and is only available through the API of another class (ie. the
- class is a sub-type).
- \row
- \o RegisterObject
- \o If the value is "yes" objects of this class are registered with
- OLE and accessible from the running object table (ie. clients
- can connect to an already running instance of this class). This
- attribute is only supported in out-of-process servers.
- \row
- \o MIME
- \o The object can handle data and files of the format specified in the
- value. The value has the format mime:extension:description. Multiple
- formats are separated by a semicolon.
- \row
- \o CoClassAlias
- \o The classname used in the generated IDL and in the registry. This is
- esp. useful for C++ classes that live in a namespace - by default,
- ActiveQt just removes the "::" to make the IDL compile.
- \endtable
-
- Note that both keys and values are case sensitive.
-
- The following declares version 2.0 of a class that exposes only its
- own API, and is available in the "Insert Objects" dialog of Microsoft
- Office applications.
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 15
-
- \section2 Developing Licensed Components
-
- If you develop components you might want to control who is able to instantiate
- those components. Since the server binary can be shipped to and registered on
- any client machine it is possible for anybody to use those components in his
- own software.
-
- Licensing components can be done using a variety of techniques, e.g. the code
- creating the control can provide a license key, or the machine on which the
- control is supposed to run needs to be licensed.
-
- To mark a Qt class as licensed specify a "LicenseKey" using the
- Q_CLASSINFO() macro.
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 16
-
- The key is required to be able to create an instance of \c MyLicensedControl
- on a machine that is not licensed itself. The licensed developer can now
- redistributes the server binary with his application, which creates the control
- using the value of "LicenseKey", while users of the application cannot create
- the control without the license key.
-
- If a single license key for the control is not sufficient (ie. you want
- differnet developers to receive different license keys) you can specify an
- empty key to indicate that the control requires a license, and reimplement
- \l QAxFactory::validateLicenseKey() to verify that a license exists on the
- system (ie. through a license file).
-
- \section2 More Interfaces
-
- ActiveX controls provided by ActiveQt servers support a minimal set of COM
- interfaces to implement the OLE specifications. When the ActiveX class inherits
- from the QAxBindable class it can also implement additional COM interfaces.
-
- Create a new subclass of QAxAggregated and use multiple inheritance
- to subclass additional COM interface classes.
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 17
-
- Reimplement the QAxAggregated::queryInterface() function to
- support the additional COM interfaces.
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 18
-
- Since \c ISomeCOMInterface is a subclass of \c IUnknown you will
- have to implement the \c QueryInterface(), \c AddRef(), and \c
- Release() functions. Use the QAXAGG_IUNKNOWN macro in your
- class definition to do that. If you implement the \c IUnknown
- functions manually, delegate the calls to the interface pointer
- returned by the QAxAggregated::controllingUnknown() function,
- e.g.
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 19
-
- Do not support the \c IUnknown interface itself in your
- \l{QAxAggregated::queryInterface()}{queryInterface()}
- implementation.
-
- Implement the methods of the COM interfaces, and use QAxAggregated::object()
- if you need to make calls to the QObject subclass implementing the control.
-
- In your QAxBindable subclass, implement
- QAxBindable::createAggregate() to return a new object of the
- QAxAggregated subclass.
-
- \snippet doc/src/snippets/code/doc_src_qaxserver.qdoc 20
-
- \section1 License Information
-
- The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
- the \l{GNU Lesser General Public License (LGPL)}, or the
- \l{Qt Commercial Editions}{Qt Commercial License}. Instead, it is distributed under
- the following license.
-
- \legalese
- Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\br
- All rights reserved.
-
- Contact: Nokia Corporation (qt-info@nokia.com)\br
-
- You may use this file under the terms of the BSD license as follows:\br
-
- "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.\br
- * 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.\br
- * 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."
- \endlegalese
-*/
diff --git a/doc/src/qdbusadaptors.qdoc b/doc/src/qdbusadaptors.qdoc
deleted file mode 100644
index 92a618d90..000000000
--- a/doc/src/qdbusadaptors.qdoc
+++ /dev/null
@@ -1,518 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/** -*- mode: C++ -*-
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page usingadaptors.html
- \title Using QtDBus Adaptors
-
- Adaptors are special classes that are attached to any QObject-derived class
- and provide the interface to the external world using D-Bus. Adaptors are
- intended to be lightweight classes whose main purpose is to relay calls to
- and from the real object, possibly validating or converting the input from
- the external world and, thus, protecting the real object.
-
- Unlike multiple inheritance, adaptors can be added at any time to any object
- (but not removed), which allows for greater flexibility when exporting
- existing classes. Another advantage of adaptors is to provide similar but not
- identical functionality in methods of the same name in different interfaces,
- a case which can be quite common when adding a new version of a standard
- interface to an object.
-
- In order to use an adaptor, one must create a class which inherits
- QDBusAbstractAdaptor. Since that is a standard QObject-derived class, the
- Q_OBJECT macro must appear in the declaration and the source file must be
- processed with the \l {moc} tool. The class must also contain one
- Q_CLASSINFO entry with the \c {"D-Bus Interface"} name, declaring which
- interface it is exporting. Only one entry per class is supported.
-
- Any public slot in the class will be accessible through the bus over messages
- of the MethodCall type. (See \l {Declaring Slots in D-Bus Adaptors} for more
- information). Signals in the class will be automatically relayed over D-Bus.
- However, not all types are allowed signals or slots' parameter lists: see
- \l {The QtDBus Type System} for more information.
-
- Also, any property declared with Q_PROPERTY will be automatically exposed
- over the Properties interface on D-Bus. Since the QObject property system
- does not allow for non-readable properties, it is not possible to declare
- write-only properties using adaptors.
-
- More information:
- \list
- \o \l{Declaring Slots in D-Bus Adaptors}
- \o \l{Declaring Signals in D-Bus Adaptors}
- \o \l{The QtDBus Type System}
- \o \l{D-Bus Adaptor Example}
- \endlist
-
- \sa QDBusAbstractAdaptor
-*/
-
-/*!
- \page qdbusadaptorexample.html
- \title D-Bus Adaptor Example
-
- The following example code shows how a D-Bus interface can be implemented
- using an adaptor.
-
- A sample usage of QDBusAbstractAdaptor is as follows:
- \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 0
-
- The code above would create an interface that could be represented more or less in the following
- canonical representation:
- \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 1
-
- This adaptor could be used in the application's main function as follows
- \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 2
-
- Break-down analysis:
- \tableofcontents
-
- \section1 The header
-
- The header of the example is:
- \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 3
-
- The code does the following:
- \list
- \o it declares the adaptor MainApplicationAdaptor, which descends from QDBusAbstractAdaptor
- \o it declares the Qt meta-object data using the Q_OBJECT macro
- \o it declares the name of the D-Bus interface it implements.
- \endlist
-
- \section1 The properties
-
- The properties are declared as follows:
- \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 4
-
- And are implemented as follows:
- \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 5
-
- The code declares three properties: one of them is a read-write property called "caption" of
- string type. The other two are read-only, also of the string type.
-
- The properties organizationName and organizationDomain are simple relays of the app object's
- organizationName and organizationDomain properties. However, the caption property requires
- verifying if the application has a main window associated with it: if there isn't any, the
- caption property is empty. Note how it is possible to access data defined in other objects
- through the getter/setter functions.
-
- \section1 The constructor
-
- The constructor:
- \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 6
-
- The constructor does the following:
- \list
- \o it initialises its base class (QDBusAbstractAdaptor) with the parent object it is related to.
- \o it stores the app pointer in a member variable. Note that it would be possible to access the
- same object using the QDBusAbstractAdaptor::object() function, but it would be necessary to
- use \a static_cast<> to properly access the methods in QApplication that are not part of
- QObject.
- \o it connects the application's signal \a aboutToQuit to its own signal \a aboutToQuit.
- \o it connects the application's signal \a focusChanged to a private slot to do some further
- processing before emitting a D-Bus signal.
- \endlist
-
- Note that there is no destructor in the example. An eventual destructor could be used to emit
- one last signal before the object is destroyed, for instance.
-
- \section1 Slots/methods
-
- The public slots in the example (which will be exported as D-Bus methods) are the following:
- \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 7
-
- This snippet of code defines 4 methods with different properties each:
- \list 1
- \o \c quit: this method takes no parameters and is defined to be asynchronous. That is, callers
- are expected to use "fire-and-forget" mechanism when calling this method, since it provides no
- useful reply. This is represented in D-Bus by the use of the
- org.freedesktop.DBus.Method.NoReply annotation. See \l Q_NOREPLY for more information on
- asynchronous methods
-
- \o \c reparseConfiguration: this simple method, with no input or output arguments simply relays
- the call to the application's reparseConfiguration member function.
-
- \o \c mainWindowObject: this method takes no input parameter, but returns one string output
- argument, containing the path to the main window object (if the application has a main
- window), or an empty string if it has no main window. Note that this method could have also
- been written: void mainWindowObject(QString &path).
-
- \o \c setSessionManagement: this method takes one input argument (a boolean) and, depending on
- its value, it calls one function or another in the application.
- \endlist
-
- See also: \l Q_NOREPLY.
-
- \section1 Signals
-
- The signals in this example are defined as follows:
- \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 8
-
- However, signal definition isn't enough: signals have to be emitted. One simple way of emitting
- signals is to connect another signal to them, so that Qt's signal handling system chains them
- automatically. This is what is done for the \a aboutToQuit signal.
-
- When this is the case, one can use the QDBusAbstractAdaptor::setAutoRelaySignals to
- automatically connect every signal from the real object to the adaptor.
-
- When simple signal-to-signal connection isn't enough, one can use a private slot do do some
- work. This is what was done for the mainWindowHasFocus signal:
- \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 9
-
- This private slot (which will not be exported as a method via D-Bus) was connected to the
- \c focusChanged signal in the adaptor's constructor. It is therefore able to shape the
- application's signal into what the interface expects it to be.
-*/
-
-/*!
- \page qdbusdeclaringslots.html
- \title Declaring Slots in D-Bus Adaptors
-
- Slots in D-Bus adaptors are declared just like normal, public slots, but their
- parameters must follow certain rules (see \l{The QtDBus Type System} for more
- information). Slots whose parameters do not follow those rules or that are not
- public will not be accessible via D-Bus.
-
- Slots can have one parameter of type \c{const QDBusMessage &}, which must
- appear at the end of the input parameter list, before any output parameters.
- This parameter, if present, will be initialized with a copy of the
- current message being processed, which allows the callee to obtain
- information about the caller, such as its connection name.
-
- Slots can be of three kinds:
- \list 1
- \o Asynchronous
- \o Input-only
- \o Input-and-output
- \endlist
-
- \section1 Asynchronous Slots
- Asynchronous slots are those that do not normally return any reply to the
- caller. For that reason, they cannot take any output parameters. In most
- cases, by the time the first line of the slot is run, the caller function
- has already resumed working.
-
- However, slots must not rely on that behavior. Scheduling and message-dispatching
- issues could change the order in which the slot is run. Code intending to
- synchronize with the caller should provide its own method of synchronization.
-
- Asynchronous slots are marked by the keyword \l Q_NOREPLY in the method
- signature, before the \c void return type and the slot name. (See the
- \c quit() slot in the \l{D-Bus Adaptor Example}).
-
- \section1 Input-Only Slots
-
- Input-only slots are normal slots that take parameters passed by value or
- by constant reference. However, unlike asynchronous slots, the caller is
- usually waiting for completion of the callee before resuming operation.
- Therefore, non-asynchronous slots should not block or should state it its
- documentation that they may do so.
-
- Input-only slots have no special marking in their signature, except that
- they take only parameters passed by value or by constant reference.
- Optionally, slots can take a QDBusMessage parameter as a last parameter,
- which can be used to perform additional analysis of the method call message.
-
- \section1 Input and Output Slots
-
- Like input-only slots, input-and-output slots are those that the caller is
- waiting for a reply. Unlike input-only ones, though, this reply will contain
- data. Slots that output data may contain non-constant references and may
- return a value as well. However, the output parameters must all appear at
- the end of the argument list and may not have input arguments interleaved.
- Optionally, a QDBusMessage argument may appear between the input and the
- output arguments.
-
- \section1 Automatic Replies
-
- Method replies are generated automatically with the contents of the output
- parameters (if there were any) by the QtDBus implementation. Slots need not
- worry about constructing proper QDBusMessage objects and sending them over
- the connection.
-
- However, the possibility of doing so remains there. Should the slot find out
- it needs to send a special reply or even an error, it can do so by using
- QDBusMessage::createReply() or QDBusMessage::createErrorReply() on the
- QDBusMessage parameter and send it with QDBusConnection::send(). The
- QtDBus implementation will not generate any reply if the slot did so.
-
- \warning When a caller places a method call and waits for a reply, it will
- only wait for a limited amount of time. Slots intending to take a long time
- to complete should make that fact clear in documentation so that callers
- properly set higher timeouts.
-
- \section1 Delayed Replies
-
- In some circumstances, the called slot may not be able to process
- the request immediately. This is frequently the case when the
- request involves an I/O or networking operation which may block.
-
- If this is the case, the slot should return control to the
- application's main loop to avoid freezing the user interface, and
- resume the process later. To accomplish this, it should make use
- of the extra \c QDBusMessage parameter at the end of the input
- parameter list and request a delayed reply.
-
- We do this by writing a slot that stores the request data in a
- persistent structure, indicating to the caller using
- \l{QDBusMessage::setDelayedReply()}{QDBusMessage::setDelayedReply(true)}
- that the response will be sent later.
-
- \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 10
-
- The use of
- \l{QDBusConnection::send()}{QDBusConnection::sessionBus().send(data->reply)}
- is needed to explicitly inform the caller that the response will be delayed.
- In this case, the return value is unimportant; we return an arbitrary value
- to satisfy the compiler.
-
- When the request is processed and a reply is available, it should be sent
- using the \c QDBusMessage object that was obtained. In our example, the
- reply code could be something as follows:
-
- \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 11
-
- As can be seen in the example, when a delayed reply is in place,
- the return value(s) from the slot will be ignored by QtDBus. They
- are used only to determine the slot's signature when communicating
- the adaptor's description to remote applications, or in case the
- code in the slot decides not to use a delayed reply.
-
- The delayed reply itself is requested from QtDBus by calling
- QDBusMessage::reply() on the original message. It then becomes the
- resposibility of the called code to eventually send a reply to the
- caller.
-
- \warning When a caller places a method call and waits for a reply, it will
- only wait for a limited amount of time. Slots intending to take a long time
- to complete should make that fact clear in documentation so that callers
- properly set higher timeouts.
-
- \sa {Using QtDBus Adaptors}, {Declaring Signals in D-Bus Adaptors},
- {The QtDBus Type System}, QDBusConnection, QDBusMessage
-*/
-
-/*!
- \page qdbusdeclaringsignals.html
- \title Declaring Signals in D-Bus Adaptors
-
- Any signal in a class derived from QDBusAbstractAdaptor will be automatically
- relayed into D-Bus, provided that the signal's parameters conform to certain
- rules (see \l{The QtDBus Type System} for more information). No special code
- is necessary to make this relay.
-
- However, signals must still be emitted. The easiest way to emit an adaptor
- signal is to connect another signal to it, so that Qt's signals and slots
- mechanism automatically emits the adaptor signal, too. This can be done in
- the adaptor's constructor, as has been done in the
- \l{D-Bus Adaptor Example}{D-Bus Adaptor example}.
-
- The QDBusAbstractAdaptor::setAutoRelaySignals() convenience function can also
- be used to make and break connections between signals in the real object and
- the corresponding signals in the adaptor. It will inspect the list of signals
- in both classes and connect those whose parameters match exactly.
-
- \sa {Using QtDBus Adaptors},
- {Declaring Slots in D-Bus Adaptors},
- {The QtDBus Type System}, QDBusAbstractAdaptor
-*/
-
-/*!
- \page qdbustypesystem.html
- \title The QtDBus Type System
-
- D-Bus has an extensible type system based on a few primitives and
- composition of the primitives in arrays and structures. QtDBus
- implements the interface to that type system through the
- QDBusArgument class, allowing user programs to send and receive
- practically every C++ type over the bus.
-
- \section1 Primitive Types
-
- The primitive types are supported natively by QDBusArgument and
- need no special customization to be sent or received. They are
- listed below, along with the C++ class they relate to:
-
- \table
- \header
- \o Qt type
- \o D-Bus equivalent type
- \row
- \o uchar
- \o BYTE
- \row
- \o bool
- \o BOOLEAN
- \row
- \o short
- \o INT16
- \row
- \o ushort
- \o UINT16
- \row
- \o int
- \o INT32
- \row
- \o uint
- \o UINT32
- \row
- \o qlonglong
- \o INT64
- \row
- \o qulonglong
- \o UINT64
- \row
- \o double
- \o DOUBLE
- \row
- \o QString
- \o STRING
- \row
- \o QDBusVariant
- \o VARIANT
- \row
- \o QDBusObjectPath
- \o OBJECT_PATH
- \row
- \o QDBusSignature
- \o SIGNATURE
- \endtable
-
- Aside from the primitive types, QDBusArgument also supports two
- non-primitive types natively, due to their widespread use in Qt
- applications: QStringList and QByteArray.
-
- \section1 Compound Types
-
- D-Bus specifies three types of aggregations of primitive types
- that allow one to create compound types. They are \c ARRAY, \c
- STRUCT and maps/dictionaries.
-
- Arrays are sets of zero or more elements of the same type, while
- structures are a set of a fixed number of elements, each of any
- type. Maps or dictionaries are implemented as arrays of a pair of
- elements, so there can be zero or more elements in one map.
-
- \section1 Extending the Type System
-
- In order to use one's own type with QtDBus, the type has to be
- declared as a Qt meta-type with the Q_DECLARE_METATYPE() macro and
- registered with the qDBusRegisterMetaType() function. The
- streaming operators \c{operator>>} and \c{operator<<} will be
- automatically found by the registration system.
-
- QtDBus provides template specializations for arrays and maps for
- use with Qt's \l{Container classes}{container classes}, such as
- QMap and QList, so it is not necessary to write the streaming
- operator functions for those. For other types, and specially for
- types implementing structures, the operators have to be explicitly
- implemented.
-
- See the documentation for QDBusArgument for examples for
- structures, arrays and maps.
-
- \section1 The Type System in Use
-
- All of the QtDBus types (primitives and user-defined alike) can be
- used to send and receive messages of all types over the bus.
-
- \warning You may not use any type that is not on the list above,
- including \a typedefs to the types listed. This also includes
- QList<QVariant> and QMap<QString,QVariant>.
-*/
-
-/*!
- \macro Q_NOREPLY
- \relates QDBusAbstractAdaptor
- \since 4.2
-
- The Q_NOREPLY macro can be used to mark a method to be called and not wait for it to finish
- processing before returning from QDBusInterface::call(). The called method cannot return any
- output arguments and, if it does, any such arguments will be discarded.
-
- You can use this macro in your own adaptors by placing it before your method's return value
- (which must be "void") in the class declaration, as shown in the example:
- \snippet doc/src/snippets/code/doc_src_qdbusadaptors.qdoc 12
-
- Its presence in the method implementation (outside the class declaration) is optional.
-
- \sa {Using QtDBus Adaptors}
-*/
diff --git a/doc/src/qmake-manual.qdoc b/doc/src/qmake-manual.qdoc
deleted file mode 100644
index 2a0ad9a90..000000000
--- a/doc/src/qmake-manual.qdoc
+++ /dev/null
@@ -1,4323 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qmake-manual.html
- \title qmake Manual
- \startpage {index.html}{Qt Reference Documentation}
- \nextpage qmake Tutorial
-
- \ingroup buildsystem
- \ingroup qttools
- \keyword qmake
-
- \c qmake is a tool that helps simplify the build
- process for development project across different platforms. \c qmake
- automates the generation of Makefiles so that only a few lines of
- information are needed to create each Makefile. \c qmake can be used for
- any software project, whether it is written in Qt or not.
-
- \c qmake generates a Makefile based on the information in a project
- file. Project files are created by the developer, and are usually
- simple, but more sophisticated project files can be created for
- complex projects.
- \c qmake contains additional features to support development with Qt,
- automatically including build rules for \l{moc.html}{moc}
- and \l{uic.html}{uic}.
- \c qmake can also generate projects for Microsoft Visual studio
- without requiring the developer to change the project file.
-
- \section1 Getting Started
-
- The \l{qmake Tutorial} and guide to \l{qmake Common Projects} provide overviews
- that aim to help new users get started with \c qmake.
-
- \list
- \o \l{qmake Tutorial}
- \tableofcontents{1 qmake Tutorial}
- \endlist
-
- \list
- \o \l{qmake Common Projects}
- \tableofcontents{1 qmake Common Projects}
- \endlist
-
- \section1 Table of Contents
-
- \list
- \o \l{Using qmake}
- \tableofcontents{1 Using qmake}
- \o \l{qmake Project Files}
- \tableofcontents{1 qmake Project Files}
- \o \l{Running qmake}
- \tableofcontents{1 Running qmake}
- \o \l{qmake Platform Notes}
- \tableofcontents{1 qmake Platform Notes}
- \o \l{qmake Advanced Usage}
- \tableofcontents{1 qmake Advanced Usage}
- \o \l{Using Precompiled Headers}
- \tableofcontents{1 Using Precompiled Headers}
- \o \l{qmake Reference}
- \tableofcontents{1 qmake Reference}
- \o \l{qmake Variable Reference}
- \tableofcontents{1 qmake Variable Reference}
- \o \l{qmake Function Reference}
- \tableofcontents{1 qmake Function Reference}
- \o \l{Configuring qmake's Environment}
- \tableofcontents{1 Configuring qmake's Environment}
- \endlist
-*/
-
-/*!
- \page qmake-using.html
- \title Using qmake
- \contentspage {qmake Manual}{Contents}
- \previouspage qmake Manual
- \nextpage qmake Project Files
-
- \c qmake provides a project-oriented system for managing the build
- process for applications, libraries, and other components. This
- approach gives developers control over the source files used, and
- allows each of the steps in the process to be described concisely,
- typically within a single file. \c qmake expands the information in
- each project file to a Makefile that executes the necessary commands
- for compiling and linking.
-
- In this document, we provide a basic introduction to project files,
- describe some of the main features of \c qmake, and show how to use
- \c qmake on the command line.
-
- \section1 Describing a Project
-
- Projects are described by the contents of project (\c .pro) files.
- The information within these is used by \c qmake to generate a Makefile
- containing all the commands that are needed to build each project.
- Project files typically contain a list of source and header files,
- general configuration information, and any application-specific details,
- such as a list of extra libraries to link against, or a list of extra
- include paths to use.
-
- Project files can contain a number of different elements, including
- comments, variable declarations, built-in functions, and some simple
- control structures. In most simple projects, it is only necessary
- to declare the source and header files that are used to build the
- project with some basic configuration options.
-
- Complete examples of project files can be found in the
- \l{qmake Tutorial}.
- An introduction to project files can be found in the
- \l{qmake Project Files} chapter, and a more detailed description is
- available in the \l{qmake Reference}.
-
- \section1 Building a Project
-
- For simple projects, you only need to run \c qmake in the top
- level directory of your project. By default, \c qmake generates a
- Makefile that you then use to build the project, and you can then
- run your platform's \c make tool to build the project.
-
- \c qmake can also be used to generate project files. A full
- description of \c{qmake}'s command line options can be found in the
- \l{Running qmake} chapter of this manual.
-
- \section1 Using Precompiled Headers
-
- In large projects, it is possible to take advantage of precompiled
- header files to speed up the build process. This feature is described
- in detail in the \l{Using Precompiled Headers} chapter.
-*/
-
-/*!
- \page qmake-project-files.html
- \title qmake Project Files
- \contentspage {qmake Manual}{Contents}
- \previouspage Using qmake
- \nextpage Running qmake
-
- Project files contain all the information required by \c qmake to build
- your application, library, or plugin. The resources used by your project
- are generally specified using a series of declarations, but support for
- simple programming constructs allow you to describe different build
- processes for different platforms and environments.
-
- \tableofcontents
-
- \section1 Project File Elements
-
- The project file format used by \c qmake can be used to support both
- simple and fairly complex build systems. Simple project files will
- use a straightforward declarative style, defining standard variables
- to indicate the source and header files that are used in the project.
- Complex projects may use the control flow structures to fine-tune the
- build process.
-
- The following sections describe the different types of elements used
- in project files.
-
- \section2 Variables
-
- In a project file, variables are used to hold lists of strings.
- In the simplest projects, these variables inform \c qmake about the
- configuration options to use, or supply filenames and paths to use
- in the build process.
-
- \c qmake looks for certain variables in each project file, and it
- uses the contents of these to determine what it should write to a
- Makefile. For example, the list of values in the \c HEADERS and
- \c SOURCES variables are used to tell \c qmake about header and
- source files in the same directory as the project file.
-
- Variables can also be used internally to store temporary lists of values,
- and existing lists of values can be overwritten or extended with new
- values.
-
- The following lines show how lists of values are assigned to variables:
-
- \snippet doc/src/snippets/qmake/variables.pro 0
-
- Note that the first assignment only includes values that are specified on
- the same line as the \c SOURCES variable. The second assignment splits
- the items across lines by using the \c \\ character.
-
- The list of values in a variable is extended in the following way:
-
- \snippet doc/src/snippets/qmake/variables.pro 1
-
- The \c CONFIG variable is another special variable that \c qmake
- uses when generating a Makefile. It is discussed in the section on
- \l{#GeneralConfiguration}{general configuration} later in this chapter.
- In the above line, \c qt is added to the list of existing values
- contained in \c CONFIG.
-
- The following table lists the variables that \c qmake recognizes, and
- describes what they should contain.
-
- \table
- \header \o Variable \o Contents
- \row \o CONFIG \o General project configuration options.
- \row \o DESTDIR \o The directory in which the executable or binary file will
- be placed.
- \row \o FORMS \o A list of UI files to be processed by \c uic.
- \row \o HEADERS \o A list of filenames of header (.h) files used when
- building the project.
- \row \o QT \o Qt-specific configuration options.
- \row \o RESOURCES \o A list of resource (.rc) files to be included in the
- final project. See the \l{The Qt Resource System} for
- more information about these files.
- \row \o SOURCES \o A list of source code files to be used when building
- the project.
- \row \o TEMPLATE \o The template to use for the project. This determines
- whether the output of the build process will be an
- application, a library, or a plugin.
- \endtable
-
- The contents of a variable can be read by prepending the variable name with
- \c $$. This can be used to assign the contents of one variable to another:
-
- \snippet doc/src/snippets/qmake/dereferencing.pro 0
-
- The \c $$ operator is used extensively with built-in functions that operate
- on strings and lists of values. These are described in the chapter on
- \l{qmake Advanced Usage}.
-
- \section3 Whitespace
-
- Normally, variables are used to contain whitespace-separated lists
- of values. However, it is sometimes necessary to specify values containing
- spaces. These must be quoted by using the
- \l{qmake Function Reference#quote-string}{quote()} function in the following way:
-
- \snippet doc/src/snippets/qmake/quoting.pro 0
-
- The quoted text is treated as a single item in the list of values held by
- the variable. A similar approach is used to deal with paths that contain
- spaces, particularly when defining the
- \l{qmake Variable Reference#INCLUDEPATH}{INCLUDEPATH} and
- \l{qmake Variable Reference#LIBS}{LIBS} variables for the Windows platform.
- In cases like these, the \l{qmake Function Reference#quote(string)}{quote()}
- function can be used in the following way:
-
- \snippet doc/src/snippets/qmake/spaces.pro quoting include paths with spaces
-
- \section2 Comments
-
- You can add comments to project files. Comments begin with the \c
- # character and continue to the end of the same line. For example:
-
- \snippet doc/src/snippets/qmake/comments.pro 0
-
- To include the \c # character in variable assignments, it is necessary
- to use the contents of the built-in \c LITERAL_HASH variable. See the
- \l{qmake Variable Reference#LITERAL_HASH}{variable reference} for more
- information.
-
- \section2 Built-in Functions and Control Flow
-
- \c qmake provides a number of built-in functions to allow the contents
- of variables to be processed. The most commonly used function in simple
- project files is the \c include function which takes a filename as an
- argument. The contents of the given file are included in the project
- file at the place where the \c include function is used.
- The \c include function is most commonly used to include other project
- files:
-
- \snippet doc/src/snippets/qmake/include.pro 0
-
- Support for conditional structures is made available via
- \l{qmake Advanced Usage#scopes}{scopes} that behave like \c if
- statements in programming languages:
-
- \snippet doc/src/snippets/qmake/scopes.pro 0
-
- The assignments inside the braces are only made if the condition is
- true. In this case, the special \c win32 variable must be set; this
- happens automatically on Windows, but this can also be specified on
- other platforms by running \c qmake with the \c{-win32} command line
- option (see \l{Running qmake} for more information). The opening
- brace must stand on the same line as the condition.
-
- Simple loops are constructed by iterating over lists of values using
- the built-in \c for function. The following code adds directories
- to the \l{qmake Variable Reference#SUBDIRS}{SUBDIRS} variable, but
- only if they exist:
-
- \snippet doc/src/snippets/qmake/functions.pro 0
-
- More complex operations on variables that would usually require loops
- are provided by built-in functions such as \c find, \c unique, and
- \c count. These functions, and many others are provided to manipulate
- strings and paths, support user input, and call external tools. A list
- of the functions available can be found in the
- \l{qmake Advanced Usage} chapter of this manual.
-
- \section1 Project Templates
-
- The \c TEMPLATE variable is used to define the type of project that will
- be built. If this is not declared in the project file, \c qmake assumes
- that an application should be built, and will generate an appropriate
- Makefile (or equivalent file) for the purpose.
-
- The types of project available are listed in the following table with
- information about the files that \c qmake will generate for each of them:
-
- \table
- \header \o Template \o Description of \c qmake output
- \row \o app (default) \o Creates a Makefile to build an application.
- \row \o lib \o Creates a Makefile to build a library.
- \row \o subdirs \o Creates a Makefile containing rules for the
- subdirectories specified using the \l{qmake Variable Reference#SUBDIRS}{SUBDIRS}
- variable. Each subdirectory must contain its own project file.
- \row \o vcapp \o Creates a Visual Studio Project file to build
- an application.
- \row \o vclib \o Creates a Visual Studio Project file to build a library.
- \endtable
-
- See the \l{qmake Tutorial} for advice on writing project files for
- projects that use the \c app and \c lib templates.
-
- When the \c subdirs template is used, \c qmake generates a Makefile
- to examine each specified subdirectory, process any project file it finds
- there, and run the platform's \c make tool on the newly-created Makefile.
- The \l{qmake Variable Reference#SUBDIRS}{SUBDIRS} variable is used to
- contain a list of all the subdirectories to be processed.
-
- \target GeneralConfiguration
- \section1 General Configuration
-
- The \l{qmake Variable Reference#CONFIG}{CONFIG variable} specifies the
- options and features that the compiler should use and the libraries that
- should be linked against. Anything can be added to the \c CONFIG variable,
- but the options covered below are recognized by \c qmake internally.
-
- The following options control the compiler flags that are used to build the
- project:
-
- \table
- \header \o Option \o Description
- \row \o release \o The project is to be built in release mode.
- This is ignored if \c debug is also specified.
- \row \o debug \o The project is to be built in debug mode.
- \row \o debug_and_release \o The project is built in \e both debug and
- release modes.
- \row \o debug_and_release_target \o The project is built in \e both debug
- and release modes. TARGET is built into \e both the debug and release directories.
- \row \o build_all \o If \c debug_and_release is specified, the project is
- built in both debug and release modes by default.
- \row \o autogen_precompile_source \o Automatically generates a \c .cpp file that includes
- the precompiled header file specified in the .pro file.
- \row \o ordered \o When using the \c subdirs template, this option
- specifies that the directories listed should be processed in the
- order in which they are given.
- \row \o warn_on \o The compiler should output as many warnings as possible.
- This is ignored if \c warn_off is specified.
- \row \o warn_off \o The compiler should output as few warnings as possible.
- \row \o copy_dir_files \o Enables the install rule to also copy directories, not just files.
- \endtable
-
- The \c debug_and_release option is special in that it enables \e both debug and
- release versions of a project to be built. In such a case, the Makefile that
- \c qmake generates includes a rule that builds both versions, and this can be
- invoked in the following way:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 0
-
- Adding the \c build_all option to the \c CONFIG variable makes this rule
- the default when building the project, and installation targets will be
- created for both debug and release builds.
-
- Note that each of the options specified in the \c CONFIG variable can also be
- used as a scope condition.
- You can test for the presence of certain configuration options by using the
- built-in \l{qmake Function Reference#CONFIG(config)}{CONFIG()} function.
- For example, the following lines show the function as the condition in a scope
- to test whether only the \c opengl option is in use:
-
- \snippet doc/src/snippets/qmake/configscopes.pro 4
- \snippet doc/src/snippets/qmake/configscopes.pro 5
-
- This enables different configurations to be defined for \c release and
- \c debug builds, and is described in more detail in the
- \l{qmake Advanced Usage#Scopes}{Scopes} section of the
- \l{qmake Advanced Usage}{Advanced Usage} chapter of this manual.
-
- The following options define the type of project to be built. Note that some
- of these options only take effect when used on the relevant platform. On other
- platforms, they have no effect.
-
- \table
- \header \o Option \o Description
- \row \o qt \o The project is a Qt application and should link against the Qt
- library. You can use the \c QT variable to control any additional
- Qt modules that are required by your application.
- \row \o thread \o The project is a multi-threaded application.
- \row \o x11 \o The project is an X11 application or library.
- \endtable
-
- When using \l{qmake Variable Reference#TEMPLATE}{application or library project
- templates}, more specialized configuration options can be used to fine tune the
- build process. These are explained in details in the
- \l{qmake-common-projects.html}{Common Projects} chapter of this manual.
-
- For example, if your application uses the Qt library and you want to
- build it as a multi-threaded application in \c debug mode, your project
- file will contain the following line:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 1
-
- Note, that you must use "+=", not "=", or \c qmake will not be able to
- use Qt's configuration to determine the settings needed for your project.
-
- \section1 Declaring Qt Libraries
-
- If the \c CONFIG variable contains the \c qt value, qmake's support for Qt
- applications is enabled. This makes it possible to fine-tune which of the
- Qt modules are used by your application. This is achieved with the \c QT
- variable which can be used to declare the required extension modules.
- For example, we can enable the XML and network modules in the following way:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 2
-
- Note that \c QT includes the \c core and \c gui modules by default, so the
- above declaration \e adds the network and XML modules to this default list.
- The following assignment \e omits the default modules, and will lead to
- errors when the application's source code is being compiled:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 3
-
- If you want to build a project \e without the \c gui module, you need to
- exclude it with the "-=" operator. By default, \c QT contains both
- \c core and \c gui, so the following line will result in a minimal
- Qt project being built:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 4
-
- The table below shows the options that can be used with the \c QT variable
- and the features that are associated with each of them:
-
- \table
- \header \o Option \o Features
- \row \o core (included by default) \o QtCore module
- \row \o gui (included by default) \o QtGui module
- \row \o network \o QtNetwork module
- \row \o opengl \o QtOpenGL module
- \row \o sql \o QtSql module
- \row \o svg \o QtSvg module
- \row \o xml \o QtXml module
- \row \o xmlpatterns \o QtXmlPatterns module
- \row \o qt3support \o Qt3Support module
- \endtable
-
- Note that adding the \c opengl option to the \c QT variable automatically
- causes the equivalent option to be added to the \c CONFIG variable.
- Therefore, for Qt applications, it is not necessary to add the \c opengl
- option to both \c CONFIG and \c{QT}.
-
- \section1 Configuration Features
-
- \c qmake can be set up with extra configuration features that are specified
- in feature (.prf) files. These extra features often provide support for
- custom tools that are used during the build process. To add a feature to
- the build process, append the feature name (the stem of the feature filename)
- to the \c CONFIG variable.
-
- For example, \c qmake can configure the build process to take advantage
- of external libraries that are supported by
- \l{http://www.freedesktop.org/wiki/Software_2fpkgconfig}{pkg-config},
- such as the D-Bus and ogg libraries, with the following lines:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 5
-
- More information about features can be found in the
- \l{qmake Advanced Usage#Adding New Configuration Features}
- {Adding New Configuration Features} section of the \l{qmake Advanced Usage}
- chapter.
-
- \section1 Declaring Other Libraries
-
- If you are using other libraries in your project in addition to those
- supplied with Qt, you need to specify them in your project file.
-
- The paths that \c qmake searches for libraries and the specific libraries
- to link against can be added to the list of values in the
- \l{qmake Variable Reference#LIBS}{LIBS} variable. The paths to the libraries
- themselves can be given, or the familiar Unix-style notation for specifying
- libraries and paths can be used if preferred.
-
- For example, the following lines show how a library can be specified:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 6
-
- The paths containing header files can also be specified in a similar way
- using the \l{qmake Variable Reference#INCLUDEPATH}{INCLUDEPATH} variable.
-
- For example, it is possible to add several paths to be searched for header
- files:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 7
-*/
-
-/*!
- \page qmake-running.html
- \title Running qmake
- \contentspage {qmake Manual}{Contents}
- \previouspage qmake Project Files
- \nextpage qmake Platform Notes
-
- The behavior of \c qmake can be customized when it is run by
- specifying various options on the command line. These allow the
- build process to be fine-tuned, provide useful diagnostic
- information, and can be used to specify the target platform for
- your project.
-
- \tableofcontents
-
- \target Commands
- \section1 Command-Line Options
-
- \section2 Syntax
-
- The syntax used to run \c qmake takes the following simple form:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 8
-
- \c qmake supports two different modes of operation: In the default mode,
- \c qmake will use the description in a project file to generate a Makefile,
- but it is also possible to use \c qmake to generate project files.
- If you want to explicitly set the mode, you must specify it before all
- other options. The \c mode can be either of the following two values:
-
- \list
- \o \c -makefile \BR
- \c qmake output will be a Makefile.
- \o \c -project \BR
- \c qmake output will be a project file. \BR
-\bold{Note:} It is likely that the created file will need to be edited for example adding the \c QT variable to suit what modules are required for the project.
- \endlist
-
- The following \c options are used to specify both general and mode-specific
- settings. Options that only apply to the Makefile mode are described in the
- \l{#MakefileMode}{Makefile Mode Options} section; options that influence the
- creation of project files are described in the
- \l{#ProjectMode}{Project File Options} section.
-
- The \c files argument represents a list of one or more project files, separated
- by spaces.
-
- \section2 Options
-
- A wide range of options can be specified on the command line to \c qmake in
- order to customize the build process, and to override default settings for
- your platform. The following basic options provide usage information, specify
- where \c qmake writes the output file, and control the level of debugging
- information that will be written to the console:
-
- \list
- \o \c -help \BR
- \c qmake will go over these features and give some useful help.
- \o \c -o file \BR
- \c qmake output will be directed to \e file. If this option
- is not specified, \c qmake will try to use a suitable file name for its
- output, depending on the mode it is running in.\BR
- If '-' is specified, output is directed to stdout.
- \o \c -d \BR
- \c qmake will output debugging information.
- \endlist
-
- For projects that need to be built differently on each target platform, with
- many subdirectories, you can run \c qmake with each of the following
- options to set the corresponding platform-specific variable in each
- project file:
-
- \list
- \o \c -unix \BR
- \c qmake will run in unix mode. In this mode, Unix file
- naming and path conventions will be used, additionally testing for \c unix
- (as a scope) will succeed. This is the default mode on all Unices.
- \o \c -macx \BR
- \c qmake will run in Mac OS X mode. In this mode, Unix file
- naming and path conventions will be used, additionally testing for \c macx
- (as a scope) will succeed. This is the default mode on Mac OS X.
- \o \c -win32 \BR
- \c qmake will run in win32 mode. In this mode, Windows file naming and path
- conventions will be used, additionally testing for \c win32 (as a scope)
- will succeed. This is the default mode on Windows.
- \endlist
-
- The template used for the project is usually specified by the \c TEMPLATE
- variable in the project file. We can override or modify this by using the
- following options:
-
- \list
- \o \c -t tmpl \BR
- \c qmake will override any set \c TEMPLATE variables with tmpl, but only
- \e after the .pro file has been processed.
- \o \c -tp prefix \BR
- \c qmake will add the prefix to the \c TEMPLATE variable.
- \endlist
-
- The level of warning information can be fine-tuned to help you find problems in
- your project file:
-
- \list
- \o \c -Wall \BR
- \c qmake will report all known warnings.
- \o \c -Wnone \BR
- No warning information will be generated by \c qmake.
- \o \c -Wparser \BR
- \c qmake will only generate parser warnings. This will alert
- you to common pitfalls and potential problems in the parsing of your
- project files.
- \o \c -Wlogic \BR
- \c qmake will warn of common pitfalls and potential problems in your
- project file. For example, \c qmake will report whether a file is placed
- into a list of files multiple times, or if a file cannot be found.
- \endlist
-
- \target MakefileMode
- \section2 Makefile Mode Options
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 9
-
- In Makefile mode, \c qmake will generate a Makefile that is used to build the
- project. Additionally, the following options may be used in this mode to
- influence the way the project file is generated:
-
- \list
- \o \c -after \BR
- \c qmake will process assignments given on the command line after
- the specified files.
- \o \c -nocache \BR
- \c qmake will ignore the .qmake.cache file.
- \o \c -nodepend \BR
- \c qmake will not generate any dependency information.
- \o \c -cache file \BR
- \c qmake will use \e file as the cache file, ignoring any other
- .qmake.cache files found.
- \o \c -spec spec \BR
- \c qmake will use \e spec as a path to platform and compiler information,
- and the value of \c QMAKESPEC will be ignored.
- \endlist
-
- You may also pass \c qmake assignments on the command line;
- they will be processed before all of the files specified. For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 10
-
- This will generate a Makefile, from test.pro with Unix pathnames. However
- many of the specified options aren't necessary as they are the default.
- Therefore, the line can be simplified on Unix to:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 11
-
- If you are certain you want your variables processed after the
- files specified, then you may pass the \c -after option. When this
- is specified, all assignments on the command line after the \c -after
- option will be postponed until after the specified files are parsed.
-
- \target ProjectMode
- \section2 Project Mode Options
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 12
-
- In project mode, \c qmake will generate a project file. Additionally, you
- may supply the following options in this mode:
-
- \list
- \o \c -r \BR
- \c qmake will look through supplied directories recursively
- \o \c -nopwd \BR
- \c qmake will not look in your current working directory for
- source code and only use the specified \c files
- \endlist
-
- In this mode, the \c files argument can be a list of files or directories.
- If a directory is specified, it will be included in the \c DEPENDPATH
- variable, and relevant code from there will be included in the generated
- project file. If a file is given, it will be appended to the correct
- variable, depending on its extension; for example, UI files are added
- to \c FORMS, and C++ files are added to \c SOURCES.
-
- You may also pass assignments on the command line in this mode. When doing
- so, these assignments will be placed last in the generated project file.
-*/
-
-/*!
- \page qmake-platform-notes.html
- \title qmake Platform Notes
- \contentspage {qmake Manual}{Contents}
- \previouspage Running qmake
- \nextpage qmake Advanced Usage
-
- Many cross-platform projects can be handled by the \c{qmake}'s basic
- configuration features. On some platforms, it is sometimes useful, or even
- necessary, to take advantage of platform-specific features. \c qmake knows
- about many of these features, and these can be accessed via specific
- variables that only have an effect on the platforms where they are relevant.
-
- \tableofcontents
-
- \section1 Mac OS X
-
- Features specific to this platform include support for creating universal
- binaries, frameworks and bundles.
-
- \section2 Source and Binary Packages
-
- The version of \c qmake supplied in source packages is configured slightly
- differently to that supplied in binary packages in that it uses a different
- feature specification. Where the source package typically uses the
- \c macx-g++ specification, the binary package is typically configured to
- use the \c macx-xcode specification.
-
- Users of each package can override this configuration by invoking \c qmake
- with the \c -spec option (see \l{Running qmake} for more information). This
- makes it possible, for example, to use \c qmake from a binary package to
- create a Makefile in a project directory with the following command line
- invocation:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 13
-
- \section2 Using Frameworks
-
- \c qmake is able to automatically generate build rules for linking against
- frameworks in the standard framework directory on Mac OS X, located at
- \c{/Library/Frameworks/}.
-
- Directories other than the standard framework directory need to be specified
- to the build system, and this is achieved by appending linker options to the
- \l{qmake Variable Reference#QMAKE_LFLAGS}{QMAKE_LFLAGS} variable, as shown
- in the following example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 14
-
- The framework itself is linked in by appending the \c{-framework} options and
- the name of the framework to the \l{qmake Variable Reference#LIBS}{LIBS}
- variable:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 15
-
- \section2 Creating Frameworks
-
- Any given library project can be configured so that the resulting library
- file is placed in a
- \l{http://developer.apple.com/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WhatAreFrameworks.html}
- {framework}, ready for deployment. To do this, set up the project to use the
- \l{qmake Variable Reference#TEMPLATE}{\c lib template} and add the
- \c lib_bundle option to the
- \l{qmake Variable Reference#CONFIG}{CONFIG} variable:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 16
-
- The data associated with the library is specified using the
- \l{qmake Variable Reference#QMAKE_BUNDLE_DATA}{QMAKE_BUNDLE_DATA}
- variable. This holds items that will be installed with a library
- bundle, and is often used to specify a collection of header files,
- as in the following example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 17
-
- Here, the \c FRAMEWORK_HEADERS variable is a user-defined variable that
- is used to define the headers required to use a particular framework.
- Appending it to the \c QMAKE_BUNDLE_DATA variable ensures that the
- information about these headers are added to the collection of
- resources that will be installed with the library bundle. Also, the
- framework's name and version are specified by
- \l{qmake Variable Reference#QMAKE_FRAMEWORK_BUNDLE_NAME}
- {QMAKE_FRAMEWORK_BUNDLE_NAME}
- and \l{qmake Variable Reference#QMAKE_FRAMEWORK_VERSION}
- {QMAKE_FRAMEWORK_VERSION} variables. By default, the values used for
- these are obtained from the \l{qmake Variable Reference#TARGET}{TARGET}
- and \l{qmake Variable Reference#VERSION}{VERSION} variables.
-
- See \l{Deploying an Application on Mac OS X} for more information about
- deploying applications and libraries.
-
- \section2 Creating Universal Binaries
-
- To create a universal binary for your application, you need to be using
- a version of Qt that has been configured with the \c{-universal} option.
-
- The architectures to be supported in the binary are specified with the
- \l{qmake Variable Reference#CONFIG}{CONFIG} variable. For example, the
- following assignment causes \c qmake to generate build rules to create
- a universal binary for both PowerPC and x86 architectures:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 18
-
- Additionally, developers using a PowerPC-based platform need to set the
- \l{qmake Variable Reference#QMAKE_MAC_SDK}{QMAKE_MAC_SDK} variable.
- This process is discussed in more detail in the
- \l{Deploying an Application on Mac OS X#Architecture Dependencies}{deployment guide for Mac OS X}.
-
- \section2 Creating and Moving Xcode Projects
-
- Developers on Mac OS X can take advantage of \c{qmake}'s support for Xcode
- project files, as described in
- \l{Qt is Mac OS X Native#Development Tools}{Qt is Mac OS X Native},
- by running \c qmake to generate an Xcode project from an existing \c qmake
- project files. For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 19
-
- Note that, if a project is later moved on the disk, \c qmake must be run
- again to process the project file and create a new Xcode project file.
-
- \section2 On supporting two build targets simultaneously
-
- Implementing this is currently not feasible, because the XCode
- concept of Active Build Configurations is conceptually different
- from the qmake idea of build targets.
-
- The XCode Active Build Configurations settings are for modifying
- xcode configurations, compiler flags and similar build
- options. Unlike Visual Studio, XCode does not allow for the
- selection of specific library files based on whether debug or
- release build configurations are selected. The qmake debug and
- release settings control which library files are linked to the
- executable.
-
- It is currently not possible to set files in XCode configuration
- settings from the qmake generated xcode project file. The way the
- libraries are linked in the "Frameworks & Libraries" phase in the
- XCode build system.
-
- Furthermore, The selected "Active Build Configuration" is stored
- in a .pbxuser file, which is generated by xcode on first load, not
- created by qmake.
-
- \section1 Windows
-
- Features specific to this platform include support for creating Visual
- Studio project files and handling manifest files when deploying Qt
- applications developed using Visual Studio 2005.
-
- \section2 Creating Visual Studio Project Files
-
- Developers using Visual Studio to write Qt applications can use the
- Visual Studio integration facilities provided with the
- \l{Qt Commercial Editions} and do not need to worry about how
- project dependencies are managed.
-
- However, some developers may need to import an existing \c qmake project
- into Visual Studio. \c qmake is able to take a project file and create a
- Visual Studio project that contains all the necessary information required
- by the development environment. This is achieved by setting the \c qmake
- \l{qmake Variable Reference#TEMPLATE}{project template} to either \c vcapp
- (for application projects) or \c vclib (for library projects).
-
- This can also be set using a command line option, for example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 20
-
- It is possible to recursively generate \c{.vcproj} files in subdirectories
- and a \c{.sln} file in the main directory, by typing:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 21
-
- Each time you update the project file, you need to run \c qmake to generate
- an updated Visual Studio project.
-
- \note If you are using the Visual Studio Add-in, you can import \c .pro
- files via the \gui{Qt->Import from .pro file} menu item.
-
- \section2 Visual Studio 2005 Manifest Files
-
- When deploying Qt applications built using Visual Studio 2005, it is
- necessary to ensure that the manifest file, created when the application
- was linked, is handled correctly. This is handled automatically for
- projects that generate DLLs.
-
- Removing manifest embedding for application executables can be done with
- the following assignment to the \l{qmake Variable Reference#CONFIG}
- {CONFIG} variable:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 22
-
- Also, the manifest embedding for DLLs can be removed with the following
- assignment to the \l{qmake Variable Reference#CONFIG}{CONFIG} variable:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 23
-
- This is discussed in more detail in the
- \l{Deploying an Application on Windows#Visual Studio 2005 Onwards}
- {deployment guide for Windows}.
-*/
-
-/*!
- \page qmake-reference.html
- \title qmake Reference
- \contentspage {qmake Manual}{Contents}
- \previouspage Using Precompiled Headers
- \nextpage qmake Variable Reference
-
- This reference is a detailed index of all the variables and function
- that are available for use in \c qmake project files.
-
- \section1 Variable Reference
-
- The \l{qmake Variable Reference} describes the variables that are
- recognized by \c qmake when configuring the build process for
- projects.
-
- \section1 Function Reference
-
- The \l{qmake Function Reference} describes the function that can be
- used to process the contents of variables defined in project files.
-
- \target FrequentlyUsedVariables
- \section1 Frequently Used Variables
-
- The following variables are frequently used in project files to describe
- common aspects of the build process. These are fully described in the
- \l{qmake-variable-reference.html}{Variable Reference}.
-
- \list
- \o \l{qmake Variable Reference#CONFIG}{CONFIG}
- \o \l{qmake Variable Reference#DEF_FILE}{DEF_FILE}
- \o \l{qmake Variable Reference#DEFINES}{DEFINES}
- \o \l{qmake Variable Reference#DESTDIR}{DESTDIR}
- \o \l{qmake Variable Reference#DISTFILES}{DISTFILES}
- \o \l{qmake Variable Reference#DLLDESTDIR}{DLLDESTDIR}
- \o \l{qmake Variable Reference#FORMS}{FORMS}
- \o \l{qmake Variable Reference#FORMS3}{FORMS3}
- \o \l{qmake Variable Reference#GUID}{GUID}
- \o \l{qmake Variable Reference#HEADERS}{HEADERS}
- \o \l{qmake Variable Reference#INCLUDEPATH}{INCLUDEPATH}
- \o \l{qmake Variable Reference#LEXSOURCES}{LEXSOURCES}
- \o \l{qmake Variable Reference#LIBS}{LIBS}
- \o \l{qmake Variable Reference#MOC_DIR}{MOC_DIR}
- \o \l{qmake Variable Reference#OBJECTS_DIR}{OBJECTS_DIR}
- \o \l{qmake Variable Reference#QT}{QT}
- \o \l{qmake Variable Reference#RCC_DIR}{RCC_DIR}
- \o \l{qmake Variable Reference#REQUIRES}{REQUIRES}
- \o \l{qmake Variable Reference#RESOURCES}{RESOURCES}
- \o \l{qmake Variable Reference#SOURCES}{SOURCES}
- \o \l{qmake Variable Reference#SUBDIRS}{SUBDIRS}
- \o \l{qmake Variable Reference#TARGET}{TARGET}
- \o \l{qmake Variable Reference#TEMPLATE}{TEMPLATE}
- \o \l{qmake Variable Reference#TRANSLATIONS}{TRANSLATIONS}
- \o \l{qmake Variable Reference#UI_DIR}{UI_DIR}
- \o \l{qmake Variable Reference#UI_HEADERS_DIR}{UI_HEADERS_DIR}
- \o \l{qmake Variable Reference#UI_SOURCES_DIR}{UI_SOURCES_DIR}
- \o \l{qmake Variable Reference#VERSION}{VERSION}
- \o \l{qmake Variable Reference#YACCSOURCES}{YACCSOURCES}
- \endlist
-
- \section1 Environment Variables and Configuration
-
- The \l{Configuring qmake's Environment} chapter of this manual
- describes the environment variables that \c qmake uses when
- configuring the build process.
-*/
-
-/*!
- \page qmake-variable-reference.html
- \title qmake Variable Reference
- \contentspage {qmake Manual}{Contents}
- \previouspage qmake Reference
- \nextpage qmake Function Reference
-
- \c{qmake}'s fundamental behavior is influenced by variable declarations that
- define the build process of each project. Some of these declare resources,
- such as headers and source files, that are common to each platform; others
- are used to customize the behavior of compilers and linkers on specific
- platforms.
-
- Platform-specific variables follow the naming pattern of the
- variables which they extend or modify, but include the name of the relevant
- platform in their name. For example, \c QMAKE_LIBS can be used to specify a list
- of libraries that a project needs to link against, and \c QMAKE_LIBS_X11 can be
- used to extend or override this list.
-
- \tableofcontents{3}
-
- \target CONFIG
- \section1 CONFIG
-
- The \c CONFIG variable specifies project configuration and
- compiler options. The values will be recognized internally by
- \c qmake and have special meaning. They are as follows.
-
- These \c CONFIG values control compilation flags:
-
- \table 95%
- \header \o Option \o Description
- \row \o release \o The project is to be built in release mode.
- This is ignored if \c debug is also specified.
- \row \o debug \o The project is to be built in debug mode.
- \row \o debug_and_release \o The project is built in \e both debug and
- release modes. This can have some unexpected side effects (see
- below for more information).
- \row \o build_all \o If \c debug_and_release is specified, the project is
- built in both debug and release modes by default.
- \row \o ordered \o When using the \c subdirs template, this option
- specifies that the directories listed should be processed in the
- order in which they are given.
- \row \o precompile_header \o Enables support for the use of
- \l{Using Precompiled Headers}{precompiled headers} in projects.
- \row \o warn_on \o The compiler should output as many warnings as possible.
- This is ignored if \c warn_off is specified.
- \row \o warn_off \o The compiler should output as few warnings as possible.
- \omit
- \row \o qt_debug \o Specifies that the project should be built against
- debug versions of the Qt libraries specified using the
- \l{#QT}{QT} variable.
- \row \o qt_release \o Specifies that the project should be built against
- release versions of the Qt libraries specified using the
- \l{#QT}{QT} variable.
- \endomit
- \endtable
-
- Since the \c debug option overrides the \c release option when both are
- defined in the \c CONFIG variable, it is necessary to use the
- \c debug_and_release option if you want to allow both debug and release
- versions of a project to be built. In such a case, the Makefile that
- \c qmake generates includes a rule that builds both versions, and this can
- be invoked in the following way:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 24
-
- When linking a library, \c qmake relies on the underlying platform to know
- what other libraries this library links against. However, if linking
- statically, \c qmake will not get this information unless we use the following
- \c CONFIG options:
-
- \table 95%
- \header \o Option \o Description
- \row \o create_prl \o This option enables \c qmake to track these
- dependencies. When this option is enabled, \c qmake will create a file
- ending in \c .prl which will save meta-information about the library
- (see \l{LibDepend}{Library Dependencies} for more info).
- \row \o link_prl \o When this is enabled, \c qmake will process all
- libraries linked to by the application and find their meta-information
- (see \l{LibDepend}{Library Dependencies} for more info).
- \endtable
-
- Please note that \c create_prl is required when \e {building} a
- static library, while \c link_prl is required when \e {using} a
- static library.
-
- On Windows (or if Qt is configured with \c{-debug_and_release}, adding the
- \c build_all option to the \c CONFIG variable makes this rule the default
- when building the project, and installation targets will be created for
- both debug and release builds.
-
- Additionally, adding \c debug_and_release to the \c CONFIG variable will
- cause both \c debug and \c release to be defined in the contents of
- \c CONFIG. When the project file is processed, the
- \l{qmake Advanced Usage#Scopes}{scopes} that test for each value will be
- processed for \e both debug and release modes. The \c{build_pass} variable
- will be set for each of these mode, and you can test for this to perform
- build-specific tasks. For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 25
-
- As a result, it may be useful to define mode-specific variables, such as
- \l{#QMAKE_LFLAGS_RELEASE}{QMAKE_LFLAGS_RELEASE}, instead of general
- variables, such as \l{#QMAKE_LFLAGS}{QMAKE_LFLAGS}, where possible.
-
- The following options define the application/library type:
-
- \table 95%
- \header \o Option \o Description
- \row \o qt \o The target is a Qt application/library and requires the Qt
- library and header files. The proper include and library paths for the
- Qt library will automatically be added to the project. This is defined
- by default, and can be fine-tuned with the \c{\l{#qt}{QT}} variable.
- \row \o thread \o The target is a multi-threaded application or library. The
- proper defines and compiler flags will automatically be added to
- the project.
- \row \o x11 \o The target is a X11 application or library. The proper
- include paths and libraries will automatically be added to the
- project.
- \row \o windows \o The target is a Win32 window application (app only). The
- proper include paths, compiler flags and libraries will
- automatically be added to the project.
- \row \o console \o The target is a Win32 console application (app only). The
- proper include paths, compiler flags and libraries will
- automatically be added to the
- project.
- \row \o shared \o{1,3} The target is a shared object/DLL. The proper
- include paths, compiler flags and libraries will automatically be
- added to the project.
- \row \o dll \o
- \row \o dylib \o
- \row \o static \o{1,2} The target is a static library (lib only). The proper
- compiler flags will automatically be added to the project.
- \row \o staticlib \o
- \row \o plugin \o The target is a plugin (lib only). This enables dll as well.
- \row \o designer \o The target is a plugin for \QD.
- \row \o uic3 \o Configures qmake to run uic3 on the content of \c FORMS3 if
- defined; otherwise the contents of \c FORMS will be processed instead.
- \row \o no_lflags_merge \o Ensures that the list of libraries stored in the
- \c LIBS variable is not reduced to a list of unique values before it is used.
- \row \o resources \o Configures qmake to run rcc on the content of \c RESOURCES
- if defined.
- \endtable
-
- These options are used to set the compiler flags:
-
- \table 95%
- \header \o Option \o Description
- \row \o 3dnow \o AMD 3DNow! instruction support is enabled.
- \row \o exceptions \o Exception support is enabled.
- \row \o mmx \o Intel MMX instruction support is enabled.
- \row \o rtti \o RTTI support is enabled.
- \row \o stl \o STL support is enabled.
- \row \o sse \o SSE support is enabled.
- \row \o sse2 \o SSE2 support is enabled.
- \endtable
-
- These options define specific features on Windows only:
-
- \table 95%
- \header \o Option \o Description
- \row \o flat \o When using the vcapp template this will put all the source
- files into the source group and the header files into the header group
- regardless of what directory they reside in. Turning this
- option off will group the files within the source/header group depending
- on the directory they reside. This is turned on by default.
- \row \o embed_manifest_dll \o Embeds a manifest file in the DLL created
- as part of a library project.
- \row \o embed_manifest_exe \o Embeds a manifest file in the DLL created
- as part of an application project.
- \row \o incremental \o Used to enable or disable incremental linking in Visual
- C++, depending on whether this feature is enabled or disabled by default.
- \endtable
-
- See \l{qmake Platform Notes#Visual Studio 2005 Manifest Files}{qmake Platform Notes}
- for more information on the options for embedding manifest files.
-
- These options only have an effect on Mac OS X:
-
- \table 95%
- \header \o Option \o Description
- \row \o ppc \o Builds a PowerPC binary.
- \row \o x86 \o Builds an i386 compatible binary.
- \row \o app_bundle \o Puts the executable into a bundle (this is the default).
- \row \o lib_bundle \o Puts the library into a library bundle.
- \endtable
-
- The build process for bundles is also influenced by
- the contents of the \l{#QMAKE_BUNDLE_DATA}{QMAKE_BUNDLE_DATA} variable.
-
- These options have an effect on Linux/Unix platforms:
-
- \table 95%
- \header \o Option \o Description
- \row \o largefile \o Includes support for large files.
- \row \o separate_debug_info \o Puts debugging information for libraries in
- separate files.
- \endtable
-
- The \c CONFIG variable will also be checked when resolving scopes. You may
- assign anything to this variable.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 26
-
- \target DEFINES
- \section1 DEFINES
-
- \c qmake adds the values of this variable as compiler C
- preprocessor macros (-D option).
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 27
-
- \target DEF_FILE
- \section1 DEF_FILE
-
- \e {This is only used on Windows when using the \c app template}.
-
- Specifies a \c .def file to be included in the project.
-
- \target DEPENDPATH
- \section1 DEPENDPATH
-
- This variable contains the list of all directories to look in to
- resolve dependencies. This will be used when crawling through
- \c included files.
-
- \target DEPLOYMENT
- \section1 DEPLOYMENT
-
- \e {This is only used on Windows CE.}
-
- Specifies which additional files will be deployed. Deployment means the
- transfer of files from the development system to the target device or
- emulator.
-
- Files can be deployed by either creating a Visual Studio project or using
- the \l {Using QTestLib remotely on Windows CE}{cetest} executable.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 28
-
- This will upload all PNG images in \c path to the same directory your
- build target will be deployed to.
-
- The default deployment target path for Windows CE is
- \c{%CSIDL_PROGRAM_FILES%\target}, which usually gets expanded to
- \c{\Program Files\target}.
-
- It is also possible to specify multiple \c sources to be deployed on
- target \c paths. In addition, different variables can be used for
- deployment to different directories.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 29
-
- \note All linked Qt libraries will be deployed to the path specified
- by \c{myFiles.path}.
-
- \target DEPLOYMENT_PLUGIN
- \section1 DEPLOYMENT_PLUGIN
-
- \e {This is only used on Windows CE.}
-
- This variable specifies the Qt plugins that will be deployed. All plugins
- available in Qt can be explicitly deployed to the device. See
- \l{Static Plugins}{Static Plugins} for a complete list.
-
- \note No plugins will be deployed automatically. If the application
- depends on plugins, these plugins have to be specified manually.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 128
-
- This will upload the jpeg imageformat plugin to the plugins directory
- on the Windows CE device.
-
- \target DESTDIR
- \section1 DESTDIR
-
- Specifies where to put the \l{#TARGET}{target} file.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 30
-
- \target DESTDIR_TARGET
- \section1 DESTDIR_TARGET
-
- This variable is set internally by \c qmake, which is basically the
- \c DESTDIR variable with the \c TARGET variable appened at the end.
- The value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \target DLLDESTDIR
- \section1 DLLDESTDIR
-
- Specifies where to copy the \l{#TARGET}{target} dll.
-
- \target DISTFILES
- \section1 DISTFILES
-
- This variable contains a list of files to be included in the dist
- target. This feature is supported by UnixMake specs only.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 31
-
- \target DSP_TEMPLATE
- \section1 DSP_TEMPLATE
-
- This variable is set internally by \c qmake, which specifies where the
- dsp template file for basing generated dsp files is stored. The value
- of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \target FORMS
- \section1 FORMS
-
- This variable specifies the UI files (see \link
- designer-manual.html Qt Designer \endlink) to be processed through \c uic
- before compiling. All dependencies, headers and source files required
- to build these UI files will automatically be added to the project.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 32
-
- If FORMS3 is defined in your project, then this variable must contain
- forms for uic, and not uic3. If CONFIG contains uic3, and FORMS3 is not
- defined, the this variable must contain only uic3 type forms.
-
- \target FORMS3
- \section1 FORMS3
-
- This variable specifies the old style UI files to be processed
- through \c uic3 before compiling, when \c CONFIG contains uic3.
- All dependencies, headers and source files required to build these
- UI files will automatically be added to the project.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 33
-
- \target GUID
- \section1 GUID
-
- Specifies the GUID that is set inside a \c{.vcproj} file. The GUID is
- usually randomly determined. However, should you require a fixed GUID,
- it can be set using this variable.
-
- This variable is specific to \c{.vcproj} files only; it is ignored
- otherwise.
-
- \target HEADERS
- \section1 HEADERS
-
- Defines the header files for the project.
-
- \c qmake will generate dependency information (unless \c -nodepend
- is specified on the \l{Running qmake#Commands}{command line})
- for the specified headers. \c qmake will also automatically detect if
- \c moc is required by the classes in these headers, and add the
- appropriate dependencies and files to the project for generating and
- linking the moc files.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 34
-
- See also \l{#SOURCES}{SOURCES}.
-
- \target INCLUDEPATH
- \section1 INCLUDEPATH
-
- This variable specifies the #include directories which should be
- searched when compiling the project. Use ';' or a space as the
- directory separator.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 35
-
- To specify a path containing spaces, quote the path using the technique
- mentioned in the \l{qmake Project Files#Whitespace}{qmake Project Files}
- document. For example, paths with spaces can be specified on Windows
- and Unix platforms by using the \l{qmake Function Reference#quote-string}{quote()}
- function in the following way:
-
- \snippet doc/src/snippets/qmake/spaces.pro quoting include paths with spaces
-
- \target INSTALLS
- \section1 INSTALLS
-
- This variable contains a list of resources that will be installed when
- \c{make install} or a similar installation procedure is executed. Each
- item in the list is typically defined with attributes that provide
- information about where it will be installed.
-
- For example, the following \c{target.path} definition describes where the
- build target will be installed, and the \c INSTALLS assignment adds the
- build target to the list of existing resources to be installed:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 36
-
- \target LEXIMPLS
- \section1 LEXIMPLS
-
- This variable contains a list of lex implementation files. The value
- of this variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely
- needs to be modified.
-
- \target LEXOBJECTS
- \section1 LEXOBJECTS
-
- This variable contains the names of intermediate lex object
- files.The value of this variable is typically handled by
- \c qmake and rarely needs to be modified.
-
- \target LEXSOURCES
- \section1 LEXSOURCES
-
- This variable contains a list of lex source files. All
- dependencies, headers and source files will automatically be added to
- the project for building these lex files.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 37
-
- \target LIBS
- \section1 LIBS
-
- This variable contains a list of libraries to be linked into the project.
- You can use the Unix \c -l (library) and -L (library path) flags and qmake
- will do the correct thing with these libraries on Windows (namely this
- means passing the full path of the library to the linker). The only
- limitation to this is the library must exist, for qmake to find which
- directory a \c -l lib lives in.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 38
-
- To specify a path containing spaces, quote the path using the technique
- mentioned in the \l{qmake Project Files#Whitespace}{qmake Project Files}
- document. For example, paths with spaces can be specified on Windows
- and Unix platforms by using the \l{qmake Function Reference#quote-string}{quote()}
- function in the following way:
-
- \snippet doc/src/snippets/qmake/spaces.pro quoting library paths with spaces
-
- \bold{Note:} On Windows, specifying libraries with the \c{-l} option,
- as in the above example, will cause the library with the highest version
- number to be used; for example, \c{libmath2.lib} could potentially be used
- instead of \c{libmathlib}. To avoid this ambiguity, we recommend that you
- explicitly specify the library to be used by including the \c{.lib}
- file name suffix.
-
- By default, the list of libraries stored in \c LIBS is reduced to a list of
- unique names before it is used. To change this behavior, add the
- \c no_lflags_merge option to the \c CONFIG variable:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 39
-
- \target LITERAL_HASH
- \section1 LITERAL_HASH
-
- This variable is used whenever a literal hash character (\c{#}) is needed in
- a variable declaration, perhaps as part of a file name or in a string passed
- to some external application.
-
- For example:
-
- \snippet doc/src/snippets/qmake/comments.pro 1
-
- By using \c LITERAL_HASH in this way, the \c # character can be used
- to construct a URL for the \c message() function to print to the console.
-
- \target MAKEFILE
- \section1 MAKEFILE
-
- This variable specifies the name of the Makefile which
- \c qmake should use when outputting the dependency information
- for building a project. The value of this variable is typically
- handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \target MAKEFILE_GENERATOR
- \section1 MAKEFILE_GENERATOR
-
- This variable contains the name of the Makefile generator to use
- when generating a Makefile. The value of this variable is typically
- handled internally by \c qmake and rarely needs to be modified.
-
- \target MOC_DIR
- \section1 MOC_DIR
-
- This variable specifies the directory where all intermediate moc
- files should be placed.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 40
-
- \target OBJECTS
- \section1 OBJECTS
-
- This variable is generated from the \link #SOURCES SOURCES
- \endlink variable. The extension of each source file will have been
- replaced by .o (Unix) or .obj (Win32). The value of this variable is
- typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and
- rarely needs to be modified.
-
- \target OBJECTS_DIR
- \section1 OBJECTS_DIR
-
- This variable specifies the directory where all intermediate
- objects should be placed.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 41
-
- \target OBJMOC
- \section1 OBJMOC
-
- This variable is set by \c qmake if files can be found that
- contain the Q_OBJECT macro. \c OBJMOC contains the
- name of all intermediate moc object files. The value of this variable
- is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
- modified.
-
- \target POST_TARGETDEPS
- \section1 POST_TARGETDEPS
-
- All libraries that the \l{#TARGET}{target} depends on can be
- listed in this variable. Some backends do not support this, these include
- MSVC Dsp, and ProjectBuilder .pbproj files. Generally this is supported
- internally by these build tools, this is useful for explicitly listing
- dependant static libraries.
-
- This list will go after all builtin (and \link #PRE_TARGETDEPS
- $$PRE_TARGETDEPS \endlink) dependencies.
-
- \target PRE_TARGETDEPS
- \section1 PRE_TARGETDEPS
-
- All libraries that the \l{#TARGET}{target} depends on can be
- listed in this variable. Some backends do not support this, these include
- MSVC Dsp, and ProjectBuilder .pbproj files. Generally this is supported
- internally by these build tools, this is useful for explicitly listing
- dependant static libraries.
-
- This list will go before all builtin dependencies.
-
- \target PRECOMPILED_HEADER
- \section1 PRECOMPILED_HEADER
-
- This variable indicates the header file for creating a precompiled
- header file, to increase the compilation speed of a project.
- Precompiled headers are currently only supported on some platforms
- (Windows - all MSVC project types, Mac OS X - Xcode, Makefile,
- Unix - gcc 3.3 and up).
-
- On other platforms, this variable has different meaning, as noted
- below.
-
- This variable contains a list of header files that require some
- sort of pre-compilation step (such as with moc). The value of this
- variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
- modified.
-
- \target PWD
- \section1 PWD
-
- This variable contains the full path leading to the directory where
- the \c qmake project file (project.pro) is located.
-
- \target OUT_PWD
- \section1 OUT_PWD
-
- This variable contains the full path leading to the directory where
- \c qmake places the generated Makefile.
-
- \target QMAKE_systemvariable
- \section1 QMAKE
-
- This variable contains the name of the \c qmake program
- itself and is placed in generated Makefiles. The value of this
- variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
- modified.
-
- \target QMAKESPEC_systemvariable
- \section1 QMAKESPEC
-
- This variable contains the name of the \c qmake
- configuration to use when generating Makefiles. The value of this
- variable is typically handled by \c qmake and rarely needs to be modified.
-
- Use the \c{QMAKESPEC} environment variable to override the \c qmake configuration.
- Note that, due to the way \c qmake reads project files, setting the \c{QMAKESPEC}
- environment variable from within a project file will have no effect.
-
- \target QMAKE_APP_FLAG
- \section1 QMAKE_APP_FLAG
-
- This variable is empty unless the \c app
- \l{#TEMPLATE}{TEMPLATE} is specified. The value of this
- variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
- modified. Use the following instead:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 42
-
- \target QMAKE_APP_OR_DLL
- \section1 QMAKE_APP_OR_DLL
-
- This variable is empty unless the \c app or \c dll
- \l{#TEMPLATE}{TEMPLATE} is specified. The value of this
- variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
- modified.
-
- \target QMAKE_AR_CMD
- \section1 QMAKE_AR_CMD
-
- \e {This is used on Unix platforms only.}
-
- This variable contains the command for invoking the program which
- creates, modifies and extracts archives. The value of this variable is
- typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
- and rarely needs to be modified.
-
- \target QMAKE_BUNDLE_DATA
- \section1 QMAKE_BUNDLE_DATA
-
- This variable is used to hold the data that will be installed with a library
- bundle, and is often used to specify a collection of header files.
-
- For example, the following lines add \c path/to/header_one.h
- and \c path/to/header_two.h to a group containing information about the
- headers supplied with the framework:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 43
-
- The last line adds the information about the headers to the collection of
- resources that will be installed with the library bundle.
-
- Library bundles are created when the \c lib_bundle option is added to the
- \l{#CONFIG}{CONFIG} variable.
-
- See \l{qmake Platform Notes#Creating Frameworks}{qmake Platform Notes} for
- more information about creating library bundles.
-
- \e{This is used on Mac OS X only.}
-
- \section1 QMAKE_BUNDLE_EXTENSION
-
- This variable defines the extension to be used for library bundles.
- This allows frameworks to be created with custom extensions instead of the
- standard \c{.framework} directory name extension.
-
- For example, the following definition will result in a framework with the
- \c{.myframework} extension:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 44
-
- \e{This is used on Mac OS X only.}
-
- \section1 QMAKE_CC
-
- This variable specifies the C compiler that will be used when building
- projects containing C source code. Only the file name of the compiler
- executable needs to be specified as long as it is on a path contained
- in the \c PATH variable when the Makefile is processed.
-
- \target QMAKE_CFLAGS_DEBUG
- \section1 QMAKE_CFLAGS_DEBUG
-
- This variable contains the flags for the C compiler in debug mode.The value of this variable is
- typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
- and rarely needs to be modified.
-
- \target QMAKE_CFLAGS_MT
- \section1 QMAKE_CFLAGS_MT
-
- This variable contains the compiler flags for creating a
- multi-threaded application or when the version of Qt that you link
- against is a multi-threaded statically linked library. The value of
- this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \target QMAKE_CFLAGS_MT_DBG
- \section1 QMAKE_CFLAGS_MT_DBG
-
- This variable contains the compiler flags for creating a debuggable
- multi-threaded application or when the version of Qt that you link
- against is a debuggable multi-threaded statically linked library. The
- value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \target QMAKE_CFLAGS_MT_DLL
- \section1 QMAKE_CFLAGS_MT_DLL
-
- \e {This is used on Windows only.}
-
- This variable contains the compiler flags for creating a
- multi-threaded dll or when the version of Qt that you link
- against is a multi-threaded dll. The value of this variable is typically
- handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and
- rarely needs to be modified.
-
- \target QMAKE_CFLAGS_MT_DLLDBG
- \section1 QMAKE_CFLAGS_MT_DLLDBG
-
- \e {This is used on Windows only.}
-
- This variable contains the compiler flags for creating a debuggable
- multi-threaded dll or when the version of Qt that you link
- against is a debuggable multi-threaded statically linked library.
- The value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \target QMAKE_CFLAGS_RELEASE
- \section1 QMAKE_CFLAGS_RELEASE
-
- This variable contains the compiler flags for creating a non-debuggable
- application. The value of this variable is typically
- handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and
- rarely needs to be modified.
-
- \target QMAKE_CFLAGS_SHLIB
- \section1 QMAKE_CFLAGS_SHLIB
-
- \e {This is used on Unix platforms only.}
-
- This variable contains the compiler flags for creating a shared
- library. The value of this variable is typically handled by
- \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
- to be modified.
-
- \target QMAKE_CFLAGS_THREAD
- \section1 QMAKE_CFLAGS_THREAD
-
- This variable contains the compiler flags for creating a multi-threaded
- application. The value of this variable is typically handled by
- \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
- to be modified.
-
- \target QMAKE_CFLAGS_WARN_OFF
- \section1 QMAKE_CFLAGS_WARN_OFF
-
- This variable is not empty if the warn_off
- \l{#TEMPLATE}{TEMPLATE} option is specified. The value of this
- variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
- and rarely needs to be modified.
-
- \target QMAKE_CFLAGS_WARN_ON
- \section1 QMAKE_CFLAGS_WARN_ON
-
- This variable is not empty if the warn_on
- \l{#TEMPLATE}{TEMPLATE} option is specified.
- The value of this variable is typically handled by
- \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
- to be modified.
-
- \target QMAKE_CLEAN
- \section1 QMAKE_CLEAN
-
- This variable contains any files which are not generated files (such as moc and uic
- generated files) and object files that should be removed when using "make clean".
-
- \section1 QMAKE_CXX
-
- This variable specifies the C++ compiler that will be used when building
- projects containing C++ source code. Only the file name of the compiler
- executable needs to be specified as long as it is on a path contained
- in the \c PATH variable when the Makefile is processed.
-
- \section1 QMAKE_CXXFLAGS
-
- This variable contains the C++ compiler flags that are used when building
- a project. The value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified. The flags
- specific to debug and release modes can be adjusted by modifying
- the \c QMAKE_CXXFLAGS_DEBUG and \c QMAKE_CXXFLAGS_RELEASE variables,
- respectively.
-
- \target QMAKE_CXXFLAGS_DEBUG
- \section1 QMAKE_CXXFLAGS_DEBUG
-
- This variable contains the C++ compiler flags for creating a debuggable
- application. The value of this variable is typically handled by
- \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
- to be modified.
-
- \target QMAKE_CXXFLAGS_MT
- \section1 QMAKE_CXXFLAGS_MT
-
- This variable contains the C++ compiler flags for creating a multi-threaded
- application. The value of this variable is typically handled by
- \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
- to be modified.
-
- \target QMAKE_CXXFLAGS_MT_DBG
- \section1 QMAKE_CXXFLAGS_MT_DBG
-
- This variable contains the C++ compiler flags for creating a debuggable multi-threaded
- application. The value of this variable is typically handled by
- \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
- to be modified.
-
- \target QMAKE_CXXFLAGS_MT_DLL
- \section1 QMAKE_CXXFLAGS_MT_DLL
-
- \c {This is used on Windows only.}
-
- This variable contains the C++ compiler flags for creating a multi-threaded
- dll. The value of this variable is typically handled by
- \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
- to be modified.
-
- \target QMAKE_CXXFLAGS_MT_DLLDBG
- \section1 QMAKE_CXXFLAGS_MT_DLLDBG
-
- \c {This is used on Windows only.}
-
- This variable contains the C++ compiler flags for creating a multi-threaded debuggable
- dll. The value of this variable is typically handled by
- \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
- to be modified.
-
- \target QMAKE_CXXFLAGS_RELEASE
- \section1 QMAKE_CXXFLAGS_RELEASE
-
- This variable contains the C++ compiler flags for creating an
- application. The value of this variable is typically handled by
- \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
- to be modified.
-
- \target QMAKE_CXXFLAGS_SHLIB
- \section1 QMAKE_CXXFLAGS_SHLIB
-
- This variable contains the C++ compiler flags for creating a
- shared library. The value of this variable is typically handled by
- \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
- to be modified.
-
- \target QMAKE_CXXFLAGS_THREAD
- \section1 QMAKE_CXXFLAGS_THREAD
-
- This variable contains the C++ compiler flags for creating a
- multi-threaded application. The value of this variable is typically handled by
- \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs
- to be modified.
-
- \target QMAKE_CXXFLAGS_WARN_OFF
- \section1 QMAKE_CXXFLAGS_WARN_OFF
-
- This variable contains the C++ compiler flags for suppressing compiler warnings.
- The value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \target QMAKE_CXXFLAGS_WARN_ON
- \section1 QMAKE_CXXFLAGS_WARN_ON
-
- This variable contains C++ compiler flags for generating compiler warnings.
- The value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \target QMAKE_DISTCLEAN
- \section1 QMAKE_DISTCLEAN
-
- This variable removes extra files upon the invocation of \c{make distclean}.
-
- \target QMAKE_EXTENSION_SHLIB
- \section1 QMAKE_EXTENSION_SHLIB
-
- This variable contains the extention for shared libraries. The value of this
- variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
- and rarely needs to be modified.
-
- Note that platform-specific variables that change the extension will override
- the contents of this variable.
-
- \section1 QMAKE_EXT_MOC
-
- This variable changes the extention used on included moc files.
-
- See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
-
- \section1 QMAKE_EXT_UI
-
- This variable changes the extention used on /e Designer UI files.
-
- See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
-
- \section1 QMAKE_EXT_PRL
-
- This variable changes the extention used on created PRL files.
-
- See also \l{Configuring qmake's Environment#Extensions}{File Extensions},
- \l{Configuring qmake's Environment#libdepend}{Library Dependencies}.
-
- \section1 QMAKE_EXT_LEX
-
- This variable changes the extention used on files given to lex.
-
- See also \l{Configuring qmake's Environment#Extensions}{File Extensions},
- \l{#LEXSOURCES}{LEXSOURCES}.
-
- \section1 QMAKE_EXT_YACC
- This variable changes the extention used on files given to yacc.
-
- See also \l{Configuring qmake's Environment#Extensions}{File Extensions},
- \l{#YACCSOURCES}{YACCSOURCES}.
-
- \section1 QMAKE_EXT_OBJ
-
- This variable changes the extention used on generated object files.
-
- See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
-
- \section1 QMAKE_EXT_CPP
-
- This variable changes the interpretation of all suffixes in this
- list of values as files of type C++ source code.
-
- See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
-
- \section1 QMAKE_EXT_H
-
- This variable changes the interpretation of all suffixes in this
- list of values as files of type C header files.
-
- See also \l{Configuring qmake's Environment#Extensions}{File Extensions}.
-
- \section1 QMAKE_EXTRA_COMPILERS
-
- This variable contains the extra compilers/preprocessors that have been added
-
- See also \l{Configuring qmake's Environment#Customizing}{Customizing Makefile Output}
-
- \section1 QMAKE_EXTRA_TARGETS
-
- This variable contains the extra targets that have been added
-
- See also \l{Configuring qmake's Environment#Customizing}{Customizing Makefile Output}
-
- \target QMAKE_FAILED_REQUIREMENTS
- \section1 QMAKE_FAILED_REQUIREMENTS
-
- This variable contains the list of requirements that were failed to be met when
- \c qmake was used. For example, the sql module is needed and wasn't compiled into Qt. The
- value of this variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
- and rarely needs to be modified.
-
- \target QMAKE_FILETAGS
- \section1 QMAKE_FILETAGS
-
- This variable contains the file tags needed to be entered into the Makefile, such as SOURCES
- and HEADERS. The value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_FRAMEWORK_BUNDLE_NAME
-
- In a framework project, this variable contains the name to be used for the
- framework that is built.
-
- By default, this variable contains the same value as the \l{#TARGET}{TARGET}
- variable.
-
- See \l{qmake Platform Notes#Creating Frameworks}{qmake Platform Notes} for
- more information about creating frameworks and library bundles.
-
- \e{This is used on Mac OS X only.}
-
- \target QMAKE_FRAMEWORK_VERSION
- \section1 QMAKE_FRAMEWORK_VERSION
-
- For projects where the build target is a Mac OS X framework, this variable
- is used to specify the version number that will be applied to the framework
- that is built.
-
- By default, this variable contains the same value as the \l{#VERSION}{VERSION}
- variable.
-
- See \l{qmake Platform Notes#Creating Frameworks}{qmake Platform Notes} for
- more information about creating frameworks.
-
- \e{This is used on Mac OS X only.}
-
- \target QMAKE_INCDIR
- \section1 QMAKE_INCDIR
-
- This variable contains the location of all known header files to be added to
- INCLUDEPATH when building an application. The value of this variable is
- typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely
- needs to be modified.
-
- \target QMAKE_INCDIR_EGL
- \section1 QMAKE_INCDIR_EGL
-
- This variable contains the location of EGL header files to be added
- to INCLUDEPATH when building an application with OpenGL/ES or
- OpenVG support. The value of this variable is typically handled by
- \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \target QMAKE_INCDIR_OPENGL
- \section1 QMAKE_INCDIR_OPENGL
-
- This variable contains the location of OpenGL header files to be added
- to INCLUDEPATH when building an application with OpenGL support. The
- value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- If the OpenGL implementation uses EGL (most OpenGL/ES systems),
- then QMAKE_INCDIR_EGL may also need to be set.
-
- \target QMAKE_INCDIR_OPENVG
- \section1 QMAKE_INCDIR_OPENVG
-
- This variable contains the location of OpenVG header files to be added
- to INCLUDEPATH when building an application with OpenVG support. The
- value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- If the OpenVG implementation uses EGL then QMAKE_INCDIR_EGL may also
- need to be set.
-
- \target QMAKE_INCDIR_QT
- \section1 QMAKE_INCDIR_QT
-
- This variable contains the location of all known header file
- paths to be added to INCLUDEPATH when building a Qt application. The value
- of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \target QMAKE_INCDIR_THREAD
- \section1 QMAKE_INCDIR_THREAD
-
- This variable contains the location of all known header file
- paths to be added to INCLUDEPATH when building a multi-threaded application.
- The value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \target QMAKE_INCDIR_X11
- \section1 QMAKE_INCDIR_X11
-
- \e {This is used on Unix platforms only.}
-
- This variable contains the location of X11 header file paths to be
- added to INCLUDEPATH when building a X11 application. The
- value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \target QMAKE_INFO_PLIST
- \section1 QMAKE_INFO_PLIST
-
- \e {This is used on Mac OS X platforms only.}
-
- This variable contains the name of the property list file, \c{.plist}, you
- would like to include in your Mac OS X application bundle.
-
- In the \c{.plist} file, you can define some variables, e.g., @EXECUTABLE@,
- which qmake will replace with the actual executable name. Other variables
- include @ICON@, @TYPEINFO@, @LIBRARY@, and @SHORT_VERSION@.
-
- \note Most of the time, the default \c{Info.plist} is good enough.
-
- \section1 QMAKE_LFLAGS
-
- This variable contains a general set of flags that are passed to
- the linker. If you need to change the flags used for a particular
- platform or type of project, use one of the specialized variables
- for that purpose instead of this variable.
-
- \target QMAKE_LFLAGS_CONSOLE
- \section1 QMAKE_LFLAGS_CONSOLE
-
- \e {This is used on Windows only.}
-
- This variable contains link flags when building console
- programs. The value of this variable is typically handled by
- \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LFLAGS_CONSOLE_DLL
-
- \e {This is used on Windows only.}
-
- This variable contains link flags when building console
- dlls. The value of this variable is typically handled by
- \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LFLAGS_DEBUG
-
- This variable contains link flags when building debuggable applications. The
- value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LFLAGS_PLUGIN
-
- This variable contains link flags when building plugins. The value
- of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LFLAGS_QT_DLL
-
- This variable contains link flags when building programs that
- use the Qt library built as a dll. The value of this variable is
- typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LFLAGS_RELEASE
-
- This variable contains link flags when building applications for
- release. The value of this variable is typically handled by
- \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LFLAGS_SHAPP
-
- This variable contains link flags when building applications which are using
- the \c app template. The value of this variable is typically handled by
- \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LFLAGS_SHLIB
-
- This variable contains link flags when building shared libraries
- The value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LFLAGS_SONAME
-
- This variable specifies the link flags to set the name of shared objects,
- such as .so or .dll. The value of this variable is typically handled by \c
- qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LFLAGS_THREAD
-
- This variable contains link flags when building multi-threaded projects.
- The value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LFLAGS_WINDOWS
-
- \e {This is used on Windows only.}
-
- This variable contains link flags when building Windows GUI projects
- (i.e. non-console applications).
- The value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LFLAGS_WINDOWS_DLL
-
- \e {This is used on Windows only.}
-
- This variable contains link flags when building Windows DLL projects.
- The value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LIBDIR
-
- This variable contains the location of all known library
- directories.The value of this variable is typically handled by
- \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LIBDIR_FLAGS
-
- \e {This is used on Unix platforms only.}
-
- This variable contains the location of all library
- directory with -L prefixed. The value of this variable is typically handled by
- \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LIBDIR_EGL
-
- This variable contains the location of the EGL library
- directory, when EGL is used with OpenGL/ES or OpenVG. The value
- of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LIBDIR_OPENGL
-
- This variable contains the location of the OpenGL library
- directory.The value of this variable is typically handled by
- \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- If the OpenGL implementation uses EGL (most OpenGL/ES systems),
- then QMAKE_LIBDIR_EGL may also need to be set.
-
- \section1 QMAKE_LIBDIR_OPENVG
-
- This variable contains the location of the OpenVG library
- directory. The value of this variable is typically handled by
- \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- If the OpenVG implementation uses EGL, then QMAKE_LIBDIR_EGL
- may also need to be set.
-
- \section1 QMAKE_LIBDIR_QT
-
- This variable contains the location of the Qt library
- directory.The value of this variable is typically handled by
- \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LIBDIR_X11
-
- \e {This is used on Unix platforms only.}
-
- This variable contains the location of the X11 library
- directory.The value of this variable is typically handled by
- \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LIBS
-
- This variable contains all project libraries. The value of this
- variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LIBS_CONSOLE
-
- \e {This Windows-specific variable is no longer used.}
-
- Prior to Qt 4.2, this variable was used to list the libraries
- that should be linked against when building a console application
- project on Windows. \l{#QMAKE_LIBS_WINDOW}{QMAKE_LIBS_WINDOW}
- should now be used instead.
-
- \section1 QMAKE_LIBS_EGL
-
- This variable contains all EGL libraries when building Qt with
- OpenGL/ES or OpenVG. The value of this variable is typically
- handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely
- needs to be modified. The usual value is \c{-lEGL}.
-
- \section1 QMAKE_LIBS_OPENGL
-
- This variable contains all OpenGL libraries. The value of this
- variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- If the OpenGL implementation uses EGL (most OpenGL/ES systems),
- then QMAKE_LIBS_EGL may also need to be set.
-
- \section1 QMAKE_LIBS_OPENGL_QT
-
- This variable contains all OpenGL Qt libraries.The value of this
- variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LIBS_OPENVG
-
- This variable contains all OpenVG libraries. The value of this
- variable is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf}
- and rarely needs to be modified. The usual value is \c{-lOpenVG}.
-
- Some OpenVG engines are implemented on top of OpenGL. This will
- be detected at configure time and QMAKE_LIBS_OPENGL will be implicitly
- added to QMAKE_LIBS_OPENVG wherever the OpenVG libraries are linked.
-
- If the OpenVG implementation uses EGL, then QMAKE_LIBS_EGL may also
- need to be set.
-
- \section1 QMAKE_LIBS_QT
-
- This variable contains all Qt libraries.The value of this
- variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LIBS_QT_DLL
-
- \e {This is used on Windows only.}
-
- This variable contains all Qt libraries when Qt is built as a dll. The
- value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LIBS_QT_OPENGL
-
- This variable contains all the libraries needed to link against if
- OpenGL support is turned on. The
- value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LIBS_QT_THREAD
-
- This variable contains all the libraries needed to link against if
- thread support is turned on. The
- value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LIBS_RT
-
- \e {This is used with Borland compilers only.}
-
- This variable contains the runtime library needed to link against when
- building an application. The
- value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LIBS_RTMT
-
- \e {This is used with Borland compilers only.}
-
- This variable contains the runtime library needed to link against when
- building a multi-threaded application. The
- value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LIBS_THREAD
-
- \e {This is used on Unix platforms only.}
-
- This variable contains all libraries that need to be linked against
- when building a multi-threaded application. The
- value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LIBS_WINDOWS
-
- \e {This is used on Windows only.}
-
- This variable contains all windows libraries.The value of this
- variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LIBS_X11
-
- \e {This is used on Unix platforms only.}
-
- This variable contains all X11 libraries.The value of this
- variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LIBS_X11SM
-
- \e {This is used on Unix platforms only.}
-
- This variable contains all X11 session management libraries. The
- value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LIB_FLAG
-
- This variable is not empty if the \c lib template is specified. The
- value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_LINK_SHLIB_CMD
-
- This variable contains the command to execute when creating a
- shared library. The
- value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_POST_LINK
-
- This variable contains the command to execute after linking the TARGET
- together. This variable is normally empty and therefore nothing is
- executed, additionally some backends will not support this - mostly only
- Makefile backends.
-
- \section1 QMAKE_PRE_LINK
-
- This variable contains the command to execute before linking the TARGET
- together. This variable is normally empty and therefore nothing is
- executed, additionally some backends will not support this - mostly only
- Makefile backends.
-
- \section1 QMAKE_LN_SHLIB
-
- This variable contains the command to execute when creating a link
- to a shared library. The
- value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_MAC_SDK
-
- This variable is used on Mac OS X when building universal binaries.
- This process is described in more detail in the
- \l{Deploying an Application on Mac OS X#Architecture Dependencies}{Deploying
- an Application on Mac OS X} document.
-
- \section1 QMAKE_MACOSX_DEPLOYMENT_TARGET
- This variable only has an effect when building on Mac OS X. On that
- platform, the variable will be forwarded to the MACOSX_DEPLOYMENT_TARGET
- environment variable, which is interpreted by the compiler or linker.
- For more information, see the
- \l{Deploying an Application on Mac OS X#Mac OS X Version Dependencies}{Deploying
- an Application on Mac OS X} document.
-
- \section1 QMAKE_MAKEFILE
-
- This variable contains the name of the Makefile to create. The
- value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_MOC_SRC
-
- This variable contains the names of all moc source files to
- generate and include in the project. The value of this variable is
- typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_QMAKE
-
- This variable contains the location of qmake if it is not in the path.
- The value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_QT_DLL
-
- This variable is not empty if Qt was built as a dll. The
- value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_RESOURCE_FLAGS
-
- This variable is used to customize the list of options passed to the
- \l{rcc}{Resource Compiler} in each of the build rules where it is used.
- For example, the following line ensures that the \c{-threshold} and
- \c{-compress} options are used with particular values each time that
- \c rcc is invoked:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 45
-
- \section1 QMAKE_RUN_CC
-
- This variable specifies the individual rule needed to build an object.
- The value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_RUN_CC_IMP
-
- This variable specifies the individual rule needed to build an object.
- The value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_RUN_CXX
-
- This variable specifies the individual rule needed to build an object.
- The value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_RUN_CXX_IMP
-
- This variable specifies the individual rule needed to build an object.
- The value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_TARGET
-
- This variable contains the name of the project target. The value of
- this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 QMAKE_UIC
-
- This variable contains the location of uic if it is not in the path.
- The value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- It can be used to specify arguments to uic as well, such as additional plugin
- paths. For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 46
-
- \section1 QT
-
- The values stored in the \c QT variable control which of the Qt modules are
- used by your project.
-
- The table below shows the options that can be used with the \c QT variable
- and the features that are associated with each of them:
-
- \table
- \header \o Option \o Features
- \row \o core (included by default) \o QtCore module
- \row \o gui (included by default) \o QtGui module
- \row \o network \o QtNetwork module
- \row \o opengl \o QtOpenGL module
- \row \o phonon \o Phonon Multimedia Framework
- \row \o sql \o QtSql module
- \row \o svg \o QtSvg module
- \row \o xml \o QtXml module
- \row \o webkit \o WebKit integration
- \row \o qt3support \o Qt3Support module
- \endtable
-
- By default, \c QT contains both \c core and \c gui, ensuring that standard
- GUI applications can be built without further configuration.
-
- If you want to build a project \e without the QtGui module, you need to
- exclude the \c gui value with the "-=" operator; the following line will
- result in a minimal Qt project being built:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 47
-
- Note that adding the \c opengl option to the \c QT variable automatically
- causes the equivalent option to be added to the \c CONFIG variable.
- Therefore, for Qt applications, it is not necessary to add the \c opengl
- option to both \c CONFIG and \c{QT}.
-
- \section1 QTPLUGIN
-
- This variable contains a list of names of static plugins that are to be
- compiled with an application so that they are available as built-in
- resources.
-
- \target QT_VERSION
- \section1 QT_VERSION
-
- This variable contains the current version of Qt.
-
- \target QT_MAJOR_VERSION
- \section1 QT_MAJOR_VERSION
-
- This variable contains the current major version of Qt.
-
- \target QT_MINOR_VERSION
- \section1 QT_MINOR_VERSION
-
- This variable contains the current minor version of Qt.
-
- \target QT_PATCH_VERSION
- \section1 QT_PATCH_VERSION
-
- This variable contains the current patch version of Qt.
-
- \section1 RC_FILE
-
- This variable contains the name of the resource file for the application.
- The value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \target RCC_DIR
- \section1 RCC_DIR
-
- This variable specifies the directory where all intermediate
- resource files should be placed.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 48
-
- \target REQUIRES
- \section1 REQUIRES
-
- This is a special variable processed by \c qmake. If the
- contents of this variable do not appear in CONFIG by the time this
- variable is assigned, then a minimal Makefile will be generated that
- states what dependencies (the values assigned to REQUIRES) are
- missing.
-
- This is mainly used in Qt's build system for building the examples.
-
- \section1 RESOURCES
-
- This variable contains the name of the resource collection file (qrc)
- for the application. Further information about the resource collection
- file can be found at \l{The Qt Resource System}.
-
- \section1 RES_FILE
-
- This variable contains the name of the resource file for the application.
- The value of this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \target SIGNATURE_FILE
- \section1 SIGNATURE_FILE
-
- \e {This is only used on Windows CE.}
-
- Specifies which signature file should be used to sign the project target.
-
- \note This variable will overwrite the setting you have specified in configure,
- with the \c -signature option.
-
- \target SOURCES
- \section1 SOURCES
-
- This variable contains the name of all source files in the project.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 49
-
- See also \l{#HEADERS}{HEADERS}
-
- \section1 SRCMOC
-
- This variable is set by \c qmake if files can be found that
- contain the Q_OBJECT macro. \c SRCMOC contains the
- name of all the generated moc files. The value of this variable
- is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
- modified.
-
- \target SUBDIRS
- \section1 SUBDIRS
-
- This variable, when used with the \l{#TEMPLATE}{\c subdirs template}
- contains the names of all subdirectories that contain parts of the project
- that need be built. Each subdirectory must contain its own project file.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 50
-
- It is essential that the project file in each subdirectory has the same
- name as the subdirectory itself, so that \c qmake can find it.
- For example, if the subdirectory is called \c myapp then the project file
- in that directory should be called \c myapp.pro.
-
- If you need to ensure that the subdirectories are built in the order in
- which they are specified, update the \l{#CONFIG}{CONFIG} variable to
- include the \c ordered option:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 51
-
- \target TARGET
- \section1 TARGET
-
- This specifies the name of the target file.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 52
-
- The project file above would produce an executable named \c myapp on
- unix and 'myapp.exe' on windows.
-
- \section1 TARGET_EXT
-
- This variable specifies the target's extension. The value of this variable
- is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
- modified.
-
- \section1 TARGET_x
-
- This variable specifies the target's extension with a major version number. The value of this variable
- is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
- modified.
-
- \section1 TARGET_x.y.z
-
- This variable specifies the target's extension with version number. The value of this variable
- is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
- modified.
-
- \target TEMPLATE
- \section1 TEMPLATE
-
- This variable contains the name of the template to use when
- generating the project. The allowed values are:
-
- \table
- \header \o Option \o Description
- \row \o app \o Creates a Makefile for building applications (the default). (See
- \l{qmake Common Projects#Application}{qmake Common Projects} for more information.)
- \row \o lib \o Creates a Makefile for building libraries. (See
- \l{qmake Common Projects#Library}{qmake Common Projects} for more information.)
- \row \o subdirs \o Creates a Makefile for building targets in subdirectories.
- The subdirectories are specified using the \l{#SUBDIRS}{SUBDIRS}
- variable.
- \row \o vcapp \o \e {Windows only} Creates an application project for Visual Studio.
- (See \l{qmake Platform Notes#Creating Visual Studio Project Files}{qmake Platform Notes}
- for more information.)
- \row \o vclib \o \e {Windows only} Creates a library project for Visual Studio.
- (See \l{qmake Platform Notes#Creating Visual Studio Project Files}{qmake Platform Notes}
- for more information.)
- \endtable
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 53
-
- The template can be overridden by specifying a new template type with the
- \c -t command line option. This overrides the template type \e after the .pro
- file has been processed. With .pro files that use the template type to
- determine how the project is built, it is necessary to declare TEMPLATE on
- the command line rather than use the \c -t option.
-
- \section1 TRANSLATIONS
-
- This variable contains a list of translation (.ts) files that contain
- translations of the user interface text into non-native languages.
-
- See the \l{Qt Linguist Manual} for more information about
- internationalization (i18n) and localization (l10n) with Qt.
-
- \section1 UICIMPLS
-
- This variable contains a list of the generated implementation files by UIC.
- The value of this variable
- is typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and rarely needs to be
- modified.
-
- \section1 UICOBJECTS
-
- This variable is generated from the UICIMPLS variable. The extension of each
- file will have been replaced by .o (Unix) or .obj (Win32). The value of this variable is
- typically handled by \c qmake or \l{#QMAKESPEC}{qmake.conf} and
- rarely needs to be modified.
-
- \target UI_DIR
- \section1 UI_DIR
-
- This variable specifies the directory where all intermediate files from uic
- should be placed. This variable overrides both UI_SOURCES_DIR and
- UI_HEADERS_DIR.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 54
-
- \target UI_HEADERS_DIR
- \section1 UI_HEADERS_DIR
-
- This variable specifies the directory where all declaration files (as
- generated by uic) should be placed.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 55
-
- \target UI_SOURCES_DIR
- \section1 UI_SOURCES_DIR
-
- This variable specifies the directory where all implementation files (as generated
- by uic) should be placed.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 56
-
- \target VERSION
- \section1 VERSION
-
- This variable contains the version number of the application or library if
- either the \c app \l{#TEMPLATE}{TEMPLATE} or the \c lib \l{#TEMPLATE}{TEMPLATE}
- is specified.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 57
-
- \section1 VER_MAJ
-
- This variable contains the major version number of the library, if the
- \c lib \l{#TEMPLATE}{template} is specified.
-
- \section1 VER_MIN
-
- This variable contains the minor version number of the library, if the
- \c lib \l{#TEMPLATE}{template} is specified.
-
- \section1 VER_PAT
-
- This variable contains the patch version number of the library, if the
- \c lib \l{#TEMPLATE}{template} is specified.
-
- \section1 VPATH
-
- This variable tells \c qmake where to search for files it cannot
- open. With this you may tell \c qmake where it may look for things
- like SOURCES, and if it finds an entry in SOURCES that cannot be
- opened it will look through the entire VPATH list to see if it can
- find the file on its own.
-
- See also \l{#DEPENDPATH}{DEPENDPATH}.
-
- \section1 YACCIMPLS
-
- This variable contains a list of yacc source files. The value of
- this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \section1 YACCOBJECTS
-
- This variable contains a list of yacc object files. The value of
- this variable is typically handled by \c qmake or
- \l{#QMAKESPEC}{qmake.conf} and rarely needs to be modified.
-
- \target YACCSOURCES
- \section1 YACCSOURCES
-
- This variable contains a list of yacc source files to be included
- in the project. All dependencies, headers and source files will
- automatically be included in the project.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 58
-
- \section1 _PRO_FILE_
-
- This variable contains the path to the project file in use.
-
- For example, the following line causes the location of the project
- file to be written to the console:
-
- \snippet doc/src/snippets/qmake/project_location.pro project file
-
- \section1 _PRO_FILE_PWD_
-
- This variable contains the path to the directory containing the project
- file in use.
-
- For example, the following line causes the location of the directory
- containing the project file to be written to the console:
-
- \snippet doc/src/snippets/qmake/project_location.pro project file directory
-*/
-
-/*!
- \page qmake-function-reference.html
- \title qmake Function Reference
- \contentspage {qmake Manual}{Contents}
- \previouspage qmake Variable Reference
- \nextpage Configuring qmake's Environment
-
- \c qmake provides built-in functions to allow the contents of
- variables to be processed, and to enable tests to be performed
- during the configuration process. Functions that process the
- contents of variables typically return values that can be assigned
- to other variables, and these values are obtained by prefixing
- function with the \c $$ operator. Functions that perform tests
- are usually used as the conditional parts of scopes; these are
- indicated in the function descriptions below.
-
- \tableofcontents{2}
-
- \section1 basename(variablename)
-
- Returns the basename of the file specified. For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 59
-
- \section1 CONFIG(config)
- [Conditional]
-
- This function can be used to test for variables placed into the
- \c CONFIG variable. This is the same as regular old style (tmake) scopes,
- but has the added advantage a second parameter can be passed to test for
- the active config. As the order of values is important in \c CONFIG
- variables (i.e. the last one set will be considered the active config for
- mutually exclusive values) a second parameter can be used to specify a set
- of values to consider. For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 60
-
- Because release is considered the active setting (for feature parsing)
- it will be the CONFIG used to generate the build file. In the common
- case a second parameter is not needed, but for specific mutual
- exclusive tests it is invaluable.
-
- \section1 contains(variablename, value)
- [Conditional]
-
- Succeeds if the variable \e variablename contains the value \e value;
- otherwise fails. You can check the return value of this function using
- a scope.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 61
-
- The contents of the scope are only processed if the \c drivers
- variable contains the value, \c network. If this is the case, the
- appropriate files are added to the \c SOURCES and \c HEADERS
- variables.
-
- \section1 count(variablename, number)
- [Conditional]
-
- Succeeds if the variable \e variablename contains a list with the
- specified \e number of value; otherwise fails.
-
- This function is used to ensure that declarations inside a scope are
- only processed if the variable contains the correct number of values;
- for example:
-
- \snippet doc/src/snippets/qmake/functions.pro 2
-
- \section1 dirname(file)
-
- Returns the directory name part of the specified file. For example:
-
- \snippet doc/src/snippets/qmake/dirname.pro 0
-
- \section1 error(string)
-
- This function never returns a value. \c qmake displays the given
- \e string to the user, and exits. This function should only be used
- for unrecoverable errors.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 62
-
- \section1 eval(string)
- [Conditional]
-
- Evaluates the contents of the string using \c qmake's syntax rules
- and returns true.
- Definitions and assignments can be used in the string to modify the
- values of existing variables or create new definitions.
-
- For example:
- \snippet doc/src/snippets/qmake/functions.pro 4
-
- Note that quotation marks can be used to delimit the string, and that
- the return value can be discarded if it is not needed.
-
- \section1 exists(filename)
- [Conditional]
-
- Tests whether a file with the given \e filename exists.
- If the file exists, the function succeeds; otherwise it fails.
- If a regular expression is specified for the filename, this function
- succeeds if any file matches the regular expression specified.
-
- For example:
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 63
-
- Note that "/" can be used as a directory separator, regardless of the
- platform in use.
-
- \section1 find(variablename, substr)
-
- Places all the values in \e variablename that match \e substr. \e
- substr may be a regular expression, and will be matched accordingly.
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 64
-
- MY_VAR2 will contain '-Lone -Ltwo -Lthree -Lfour -Lfive', and MY_VAR3 will
- contains 'three two three'.
-
- \section1 for(iterate, list)
-
- This special test function will cause a loop to be started that
- iterates over all values in \e list, setting \e iterate to each
- value in turn. As a convenience, if \e list is 1..10 then iterate will
- iterate over the values 1 through 10.
-
- The use of an else scope afer a condition line with a for() loop is
- disallowed.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 65
-
- \section1 include(filename)
- [Conditional]
-
- Includes the contents of the file specified by \e filename into the
- current project at the point where it is included. This function
- succeeds if \e filename is included; otherwise it fails. The included
- file is processed immediately.
-
- You can check whether the file was included by using this function as
- the condition for a scope; for example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 66
-
- \section1 infile(filename, var, val)
- [Conditional]
-
- Succeeds if the file \e filename (when parsed by \c qmake itself)
- contains the variable \e var with a value of \e val; otherwise fails.
- If you do not specify a third argument (\e val), the function will
- only test whether \e var has been declared in the file.
-
- \section1 isEmpty(variablename)
- [Conditional]
-
- Succeeds if the variable \e variablename is empty; otherwise fails.
- This is the equivalent of \c{count( variablename, 0 )}.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 67
-
- \section1 join(variablename, glue, before, after)
-
- Joins the value of \e variablename with \c glue. If this value is
- non-empty it prefixes the value with \e before and suffix it with \e
- after. \e variablename is the only required field, the others default
- to empty strings. If you need to encode spaces in \e glue, \e before, or \e
- after you must quote them.
-
- \section1 member(variablename, position)
-
- Returns the value at the given \e position in the list of items in
- \e variablename.
- If an item cannot be found at the position specified, an empty string is
- returned. \e variablename is the only required field. If not specified,
- \c position defaults to 0, causing the first value in the list to be
- returned.
-
- \section1 message(string)
-
- This function simply writes a message to the console. Unlike the
- \c error() function, this function allows processing to continue.
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 68
-
- The above line causes "This is a message" to be written to the console.
- The use of quotation marks is optional.
-
- \note By default, messages are written out for each Makefile generated by
- qmake for a given project. If you want to ensure that messages only appear
- once for each project, test the \c build_pass variable
- \l{qmake Advanced Usage}{in conjunction with a scope} to filter out
- messages during builds; for example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 69
-
- \section1 prompt(question)
-
- Displays the specified \e question, and returns a value read from stdin.
-
- \section1 quote(string)
-
- Converts a whole \e string into a single entity and returns the result.
- Newlines, carriage returns, and tabs can be specified in the string
- with \\n \\r and \\t. The return value does not contain either single
- or double quotation marks unless you explicitly include them yourself,
- but will be placed into a single entry (for literal expansion).
-
- \section1 replace(string, old_string, new_string)
-
- Replaces each instance of \c old_string with \c new_string in the
- contents of the variable supplied as \c string. For example, the
- code
-
- \snippet doc/src/snippets/qmake/replace.pro 0
-
- prints the message:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 70
-
- \section1 sprintf(string, arguments...)
-
- Replaces %1-%9 with the arguments passed in the comma-separated list
- of function \e arguments and returns the processed string.
-
- \section1 system(command)
- [Conditional]
-
- Executes the given \c command in a secondary shell, and succeeds
- if the command returns with a zero exit status; otherwise fails.
- You can check the return value of this function using a scope:
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 71
-
- Alternatively, you can use this function to obtain stdout and stderr
- from the command, and assign it to a variable. For example, you can
- use this to interrogate information about the platform:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 72
-
- \target unique
- \section1 unique(variablename)
-
- This will return a list of values in variable that are unique (that is
- with repetitive entries removed). For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 73
-
- \section1 warning(string)
-
- This function will always succeed, and will display the given
- \e string to the user. message() is a synonym for warning().
-*/
-
-/*!
- \page qmake-environment-reference.html
- \contentspage {qmake Manual}{Contents}
- \previouspage qmake Function Reference
-
- \title Configuring qmake's Environment
-
- \tableofcontents
-
- \target Properties
- \section1 Properties
-
- \c qmake has a system of persistant information, this allows you to
- \c set a variable in qmake once, and each time qmake is invoked this
- value can be queried. Use the following to set a property in qmake:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 74
-
- The appropriate variable and value should be substituted for
- \c VARIABLE and \c VALUE.
-
- To retrieve this information back from qmake you can do:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 75
-
- \note \c{qmake -query} will only list variables that you have
- previously set with \c{qmake -set VARIABLE VALUE}.
-
- This information will be saved into a QSettings object (meaning it
- will be stored in different places for different platforms). As
- \c VARIABLE is versioned as well, you can set one value in an older
- version of \c qmake, and newer versions will retrieve this value. However,
- if you set \c VARIABLE for a newer version of \c qmake, the older version
- will not use this value. You can however query a specific version of a
- variable if you prefix that version of \c qmake to \c VARIABLE, as in
- the following example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 76
-
- \c qmake also has the notion of \c builtin properties, for example you can
- query the installation of Qt for this version of \c qmake with the
- \c QT_INSTALL_PREFIX property:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 77
-
- These built-in properties cannot have a version prefixed to them as
- they are not versioned, and each version of \c qmake will have its own
- built-in set of these values. The list below outlines the built-in
- properties:
-
- \list
- \o \c QT_INSTALL_PREFIX - Where the version of Qt this qmake is built for resides
- \o \c QT_INSTALL_DATA - Where data for this version of Qt resides
- \o \c QMAKE_VERSION - The current version of qmake
- \endlist
-
- Finally, these values can be queried in a project file with a special
- notation such as:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 78
-
- \target QMAKESPEC
- \section1 QMAKESPEC
-
- \c qmake requires a platform and compiler description file which
- contains many default values used to generate appropriate Makefiles.
- The standard Qt distribution comes with many of these files, located
- in the \c mkspecs subdirectory of the Qt installation.
-
- The \c QMAKESPEC environment variable can contain any of the following:
-
- \list
- \o A complete path to a directory containing a \c{qmake.conf} file.
- In this case \c qmake will open the \c{qmake.conf} file from within that
- directory. If the file does not exist, \c qmake will exit with an
- error.
- \o The name of a platform-compiler combination. In this case, \c qmake
- will search in the directory specified by the \c mkspecs subdirectory
- of the data path specified when Qt was compiled (see
- QLibraryInfo::DataPath).
- \endlist
-
- \bold{Note:} The \c QMAKESPEC path will automatically be added to the
- \l{qmake Variable Reference#INCLUDEPATH}{INCLUDEPATH} system variable.
-
- \target INSTALLS
- \section1 INSTALLS
-
- It is common on Unix to also use the build tool to install applications
- and libraries; for example, by invoking \c{make install}. For this reason,
- \c qmake has the concept of an install set, an object which contains
- instructions about the way part of a project is to be installed.
- For example, a collection of documentation files can be described in the
- following way:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 79
-
- The \c path member informs \c qmake that the files should be installed in
- \c /usr/local/program/doc (the path member), and the \c files member
- specifies the files that should be copied to the installation directory.
- In this case, everything in the \c docs directory will be coped to
- \c /usr/local/program/doc.
-
- Once an install set has been fully described, you can append it to the
- install list with a line like this:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 80
-
- \c qmake will ensure that the specified files are copied to the installation
- directory. If you require greater control over this process, you can also
- provide a definition for the \c extra member of the object. For example,
- the following line tells \c qmake to execute a series of commands for this
- install set:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 81
-
- The \c unix scope
- (see \l{qmake Advanced Usage#Scopes and Conditions}{Scopes and Conditions})
- ensures that these particular commands are only executed on Unix platforms.
- Appropriate commands for other platforms can be defined using other scope
- rules.
-
- Commands specified in the \c extra member are executed before the instructions
- in the other members of the object are performed.
-
- If you append a built-in install set to the \c INSTALLS variable and do
- not specify \c files or \c extra members, \c qmake will decide what needs to
- be copied for you. Currently, the only supported built-in install set is
- \c target:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 82
-
- In the above lines, \c qmake knows what needs to be copied, and will handle
- the installation process automatically.
-
- \target cache
- \section1 Cache File
-
- The cache file is a special file \c qmake reads to find settings not specified
- in the \c qmake.conf file, project files, or at the command line. If
- \c -nocache is not specified when \c qmake is run, it will try to find a file
- called \c{.qmake.cache} in parent directories of the current directory. If
- it fails to find this file, it will silently ignore this step of processing.
-
- If it finds a \c{.qmake.cache} file then it will process this file first before
- it processes the project file.
-
- \target LibDepend
- \section1 Library Dependencies
-
- Often when linking against a library, \c qmake relies on the underlying
- platform to know what other libraries this library links against, and
- lets the platform pull them in. In many cases, however, this is not
- sufficent. For example, when statically linking a library, no other
- libraries are linked to, and therefore no dependencies to those
- libraries are created. However, an application that later links
- against this library will need to know where to find the symbols that
- the static library will require. To help with this situation, \c qmake
- attempts to follow a library's dependencies where appropriate, but
- this behavior must be explicitly enabled by following two steps.
-
- The first step is to enable dependency tracking in the library itself.
- To do this you must tell \c qmake to save information about the library:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 83
-
- This is only relevant to the \c lib template, and will be ignored for
- all others. When this option is enabled, \c qmake will create a file
- ending in .prl which will save some meta-information about the
- library. This metafile is just like an ordinary project file, but only
- contains internal variable declarations. You are free to view this file
- and, if it is deleted, \c qmake will know to recreate it when necessary,
- either when the project file is later read, or if a dependent library
- (described below) has changed. When installing this library, by
- specifying it as a target in an \c INSTALLS declaration, \c qmake will
- automatically copy the .prl file to the installation path.
-
- The second step in this process is to enable reading of this meta
- information in the applications that use the static library:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 84
-
- When this is enabled, \c qmake will process all libraries linked to
- by the application and find their meta-information. \c qmake will use
- this to determine the relevant linking information, specifically adding
- values to the application project file's list of \c DEFINES as well as
- \c LIBS. Once \c qmake has processed this file, it will then look through
- the newly introduced libraries in the \c LIBS variable, and find their
- dependent .prl files, continuing until all libraries have been resolved.
- At this point, the Makefile is created as usual, and the libraries are
- linked explicitlyy against the application.
-
- The internals of the .prl file are left closed so they can easily
- change later. They are not designed to be changed by hand, should only
- be created by \c qmake, and should not be transferred between operating
- systems as they may contain platform-dependent information.
-
- \target Extensions
- \section1 File Extensions
-
- Under normal circumstances \c qmake will try to use appropriate file extensions
- for your platform. However, it is sometimes necessary to override the default
- choices for each platform and explicitly define file extensions for \c qmake to use.
- This is achieved by redefining certain built-in variables; for example the extension
- used for \l moc files can be redefined with the following assignment in a project
- file:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 85
-
- The following variables can be used to redefine common file extensions recognized
- by \c qmake:
-
- \list
- \o QMAKE_EXT_MOC - This modifies the extension placed on included moc files.
- \o QMAKE_EXT_UI - This modifies the extension used for designer UI files (usually
- in \c FORMS).
- \o QMAKE_EXT_PRL - This modifies the extension placed on
- \l{#LibDepend}{library dependency files}.
- \o QMAKE_EXT_LEX - This changes the suffix used in files (usually in \c LEXSOURCES).
- \o QMAKE_EXT_YACC - This changes the suffix used in files (usually in \c YACCSOURCES).
- \o QMAKE_EXT_OBJ - This changes the suffix used on generated object files.
- \endlist
-
- All of the above accept just the first value, so you must assign to it just one
- value that will be used throughout your project file. There are two variables that
- accept a list of values:
-
- \list
- \o QMAKE_EXT_CPP - Causes \c qmake to interpret all files with these suffixes as
- C++ source files.
- \o QMAKE_EXT_H - Causes \c qmake to interpret all files with these suffixes as
- C and C++ header files.
- \endlist
-
- \target Customizing
- \section1 Customizing Makefile Output
-
- \c qmake tries to do everything expected of a cross-platform build tool.
- This is often less than ideal when you really need to run special
- platform-dependent commands. This can be achieved with specific instructions
- to the different \c qmake backends.
-
- Customization of the Makefile output is performed through an object-style
- API as found in other places in \c qmake. Objects are defined automatically
- by specifying their members; for example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 86
-
- The definitions above define a \c qmake target called \c mytarget, containing
- a Makefile target called \c{.buildfile} which in turn is generated with
- the \c touch command. Finally, the \c{.depends} member specifies that
- \c mytarget depends on \c mytarget2, another target that is defined afterwards.
- \c mytarget2 is a dummy target; it is only defined to echo some text to
- the console.
-
- The final step is to instruct \c qmake that this object is a target to be built:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 87
-
- This is all you need to do to actually build custom targets. Of course, you may
- want to tie one of these targets to the
- \l{qmake Variable Reference#TARGET}{qmake build target}. To do this, you simply need to
- include your Makefile target in the list of
- \l{qmake Variable Reference#PRE_TARGETDEPS}{PRE_TARGETDEPS}.
-
- The following tables are an overview of the options available to you with the QMAKE_EXTRA_TARGETS
- variable.
-
- \table
- \header
- \o Member
- \o Description
- \row
- \o commands
- \o The commands for generating the custom build target.
- \row
- \o CONFIG
- \o Specific configuration options for the custom build target. See the CONFIG table for details.
- \row
- \o depends
- \o The existing build targets that the custom build target depends on.
- \row
- \o recurse
- \o Specifies which sub-targets should used when creating the rules in the Makefile to call in
- the sub-target specific Makefile. This is only used when \c recursive is set in the CONFIG.
- \row
- \o recurse_target
- \o Specifies the target that should be built via the sub-target Makefile for the rule in the Makefile.
- This adds something like $(MAKE) -f Makefile.[subtarget] [recurse_target]. This is only used when
- \c recursive is set in the CONFIG.
- \row
- \o target
- \o The file being created by the custom build target.
- \endtable
-
- List of members specific to the CONFIG option:
-
- \table
- \header
- \o Member
- \o Description
- \row
- \o recursive
- \o Indicates that rules should be created in the Makefile and thus call
- the relevant target inside the sub-target specific Makefile. This defaults to creating
- an entry for each of the sub-targets.
- \endtable
-
- For convenience, there is also a method of customizing projects
- for new compilers or preprocessors:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 88
-
- With the above definitions, you can use a drop-in replacement for moc if one
- is available. The commands is executed on all arguments given to the
- \c NEW_HEADERS variable (from the \c input member), and the result is written
- to the file defined by the \c output member; this file is added to the
- other source files in the project.
- Additionally, \c qmake will execute \c depend_command to generate dependency
- information, and place this information in the project as well.
-
- These commands can easily be placed into a cache file, allowing subsequent
- project files to add arguments to \c NEW_HEADERS.
-
- The following tables are an overview of the options available to you with the QMAKE_EXTRA_COMPILERS
- variable.
-
- \table
- \header
- \o Member
- \o Description
- \row
- \o commands
- \o The commands used for for generating the output from the input.
- \row
- \o CONFIG
- \o Specific configuration options for the custom compiler. See the CONFIG table for details.
- \row
- \o depend_command
- \o Specifies a command used to generate the list of dependencies for the output.
- \row
- \o dependency_type
- \o Specifies the type of file the output is, if it is a known type (such as TYPE_C,
- TYPE_UI, TYPE_QRC) then it is handled as one of those type of files.
- \row
- \o depends
- \o Specifies the dependencies of the output file.
- \row
- \o input
- \o The variable that contains the files that should be processed with the custom compiler.
- \row
- \o name
- \o A description of what the custom compiler is doing. This is only used in some backends.
- \row
- \o output
- \o The filename that is created from the custom compiler.
- \row
- \o output_function
- \o Specifies a custom qmake function that is used to specify the filename to be created.
- \row
- \o variable_out
- \o The variable that the files created from the output should be added to.
- \endtable
-
- List of members specific to the CONFIG option:
-
- \table
- \header
- \o Member
- \o Description
- \row
- \o combine
- \o Indicates that all of the input files are combined into a single output file.
- \row
- \o target_predeps
- \o Indicates that the output should be added to the list of PRE_TARGETDEPS.
- \row
- \o explicit_dependencies
- \o The dependencies for the output only get generated from the depends member and from
- nowhere else.
- \row
- \o no_link
- \o Indicates that the output should not be added to the list of objects to be linked in
- \endtable
-*/
-
-/*!
- \page qmake-advanced-usage.html
- \title qmake Advanced Usage
- \contentspage {qmake Manual}{Contents}
- \previouspage qmake Platform Notes
- \nextpage Using Precompiled Headers
-
- Many \c qmake project files simply describe the sources and header files used
- by the project, using a list of \c{name = value} and \c{name += value}
- definitions. \c qmake also provides other operators, functions, and scopes
- that can be used to process the information supplied in variable declarations.
- These advanced features allow Makefiles to be generated for multiple platforms
- from a single project file.
-
- \tableofcontents
-
- \section1 Operators
-
- In many project files, the assignment (\c{=}) and append (\c{+=}) operators can
- be used to include all the information about a project. The typical pattern of
- use is to assign a list of values to a variable, and append more values
- depending on the result of various tests. Since \c qmake defines certain
- variables using default values, it is sometimes necessary to use the removal
- (\c{-=}) operator to filter out values that are not required. The following
- operators can be used to manipulate the contents of variables.
-
- The \c = operator assigns a value to a variable:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 89
-
- The above line sets the \c TARGET variable to \c myapp. This will overwrite any
- values previously set for \c TARGET with \c myapp.
-
- The \c += operator appends a new value to the list of values in a variable:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 90
-
- The above line appends \c QT_DLL to the list of pre-processor defines to be put
- in the generated Makefile.
-
- The \c -= operator removes a value from the list of values in a variable:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 91
-
- The above line removes \c QT_DLL from the list of pre-processor defines to be
- put in the generated Makefile.
-
- The \c *= operator adds a value to the list of values in a variable, but only
- if it is not already present. This prevents values from being included many
- times in a variable. For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 92
-
- In the above line, \c QT_DLL will only be added to the list of pre-processor
- defines if it is not already defined. Note that the
- \l{qmake Function Reference#unique}{unique()}
- function can also be used to ensure that a variables only contains one
- instance of each value.
-
- The \c ~= operator replaces any values that match a regular expression with
- the specified value:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 93
-
- In the above line, any values in the list that start with \c QT_D or \c QT_T are
- replaced with \c QT.
-
- The \c $$ operator is used to extract the contents of a variable, and can be
- used to pass values between variables or supply them to functions:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 94
-
- \target Scopes
- \section1 Scopes
-
- Scopes are similar to \c if statements in procedural programming languages.
- If a certain condition is true, the declarations inside the scope are processed.
-
- \section2 Syntax
-
- Scopes consist of a condition followed by an opening brace on the same line,
- a sequence of commands and definitions, and a closing brace on a new line:
-
- \snippet doc/src/snippets/qmake/scopes.pro syntax
-
- The opening brace \e{must be written on the same line as the condition}.
- Scopes may be concatenated to include more than one condition; see below
- for examples.
-
- \section2 Scopes and Conditions
-
- A scope is written as a condition followed by a series of declarations
- contained within a pair of braces; for example:
-
- \snippet doc/src/snippets/qmake/scopes.pro 0
-
- The above code will add the \c paintwidget_win.cpp file to the sources listed
- in the generated Makefile if \c qmake is used on a Windows platform.
- If \c qmake is used on a platform other than Windows, the define will be
- ignored.
-
- The conditions used in a given scope can also be negated to provide an
- alternative set of declarations that will be processed only if the
- original condition is false. For example, suppose we want to process
- something on all platforms \e except for Windows. We can achieve this by
- negating the scope like this:
-
- \snippet doc/src/snippets/qmake/scopes.pro 1
-
- Scopes can be nested to combine more than one condition. For instance, if
- you want to include a particular file for a certain platform only if
- debugging is enabled then you write the following:
-
- \snippet doc/src/snippets/qmake/scopes.pro 2
-
- To save writing many nested scopes, you can nest scopes using the \c :
- operator. The nested scopes in the above example can be rewritten in
- the following way:
-
- \snippet doc/src/snippets/qmake/scopes.pro 3
-
- You may also use the \c : operator to perform single line conditional
- assignments; for example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 95
-
- The above line adds \c QT_DLL to the \c DEFINES variable only on the
- Windows platform.
- Generally, the \c : operator behaves like a logical AND operator, joining
- together a number of conditions, and requiring all of them to be true.
-
- There is also the \c | operator to act like a logical OR operator, joining
- together a number of conditions, and requiring only one of them to be true.
-
- \snippet doc/src/snippets/qmake/scopes.pro 4
-
- You can also provide alternative declarations to those within a scope by
- using an \c else scope. Each \c else scope is processed if the conditions
- for the preceding scopes are false.
- This allows you to write complex tests when combined with other scopes
- (separated by the \c : operator as above). For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 96
-
- \section2 Configuration and Scopes
-
- The values stored in the
- \l{qmake-project-files.html#GeneralConfiguration}{\c CONFIG variable}
- are treated specially by \c qmake. Each of the possible values can be
- used as the condition for a scope. For example, the list of values
- held by \c CONFIG can be extended with the \c opengl value:
-
- \snippet doc/src/snippets/qmake/configscopes.pro 0
-
- As a result of this operation, any scopes that test for \c opengl will
- be processed. We can use this feature to give the final executable an
- appropriate name:
-
- \snippet doc/src/snippets/qmake/configscopes.pro 1
- \snippet doc/src/snippets/qmake/configscopes.pro 2
- \snippet doc/src/snippets/qmake/configscopes.pro 3
-
- This feature makes it easy to change the configuration for a project
- without losing all the custom settings that might be needed for a specific
- configuration. In the above code, the declarations in the first scope are
- processed, and the final executable will be called \c application-gl.
- However, if \c opengl is not specified, the declarations in the second
- scope are processed instead, and the final executable will be called
- \c application.
-
- Since it is possible to put your own values on the \c CONFIG
- line, this provides you with a convenient way to customize project files
- and fine-tune the generated Makefiles.
-
- \section2 Platform Scope Values
-
- In addition to the \c win32, \c macx, and \c unix values used in many
- scope conditions, various other built-in platform and compiler-specific
- values can be tested with scopes. These are based on platform
- specifications provided in Qt's \c mkspecs directory. For example, the
- following lines from a project file show the current specification in
- use and test for the \c linux-g++ specification:
-
- \snippet doc/src/snippets/qmake/specifications.pro 0
-
- You can test for any other platform-compiler combination as long as a
- specification exists for it in the \c mkspecs directory.
-
- \section1 Variables
-
- Many of the variables used in project files are special variables that
- \c qmake uses when generating Makefiles, such as \c DEFINES, \c SOURCES,
- and \c HEADERS. It is possible for you to create variables for your own
- use; \c qmake creates new variables with a given name when it encounters
- an assignment to that name. For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 97
-
- There are no restricitions on what you do to your own variables, as \c
- qmake will ignore them unless it needs to evaluate them when processing
- a scope.
-
- You can also assign the value of a current variable to another
- variable by prefixing $$ to the variable name. For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 98
-
- Now the MY_DEFINES variable contains what is in the DEFINES variable at
- this point in the project file. This is also equivalent to:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 99
-
- The second notation allows you to append the contents of the variable to
- another value without separating the two with a space. For example, the
- following will ensure that the final executable will be given a name
- that includes the project template being used:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 100
-
- Variables can be used to store the contents of environment variables.
- These can be evaluated at the time that \c qmake is run, or included
- in the generated Makefile for evaluation when the project is built.
-
- To obtain the contents of an environment value when \c qmake is run,
- use the \c $$(...) operator:
-
- \snippet doc/src/snippets/qmake/environment.pro 0
-
- In the above assignment, the value of the \c PWD environment variable
- is read when the project file is processed.
-
- To obtain the contents of an environment value at the time when the
- generated Makefile is processed, use the \c $(...) operator:
-
- \snippet doc/src/snippets/qmake/environment.pro 1
-
- In the above assignment, the value of \c PWD is read immediately
- when the project file is processed, but \c $(PWD) is assigned to
- \c DESTDIR in the generated Makefile. This makes the build process
- more flexible as long as the environment variable is set correctly
- when the Makefile is processed.
-
- The special \c $$[...] operator can be used to access various
- configuration options that were set when Qt was built:
-
- \snippet doc/src/snippets/qmake/qtconfiguration.pro 0
-
- The variables accessible with this operator are typically used to
- enable third party plugins and components to be integrated with Qt.
- For example, a \QD plugin can be installed alongside \QD's built-in
- plugins if the following declaration is made in its project file:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 101
-
- \target VariableProcessingFunctions
- \section1 Variable Processing Functions
-
- \c qmake provides a selection of built-in functions to allow the
- contents of variables to be processed. These functions process the
- arguments supplied to them and return a value, or list of values, as
- a result. In order to assign a result to a variable, it is necessary
- to use the \c $$ operator with this type of function in the same way
- used to assign contents of one variable to another:
-
- \snippet doc/src/snippets/qmake/functions.pro 1
-
- This type of function should be used on the right-hand side of
- assignments (i.e, as an operand).
-
- It is possible to define your own functions for processing the
- contents of variables. These functions can be defined in the following
- way:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 102
-
- The following example function takes a variable name as its only
- argument, extracts a list of values from the variable with the
- \l{qmake-function-reference.html}{eval()} built-in function,
- and compiles a list of files:
-
- \snippet doc/src/snippets/qmake/replacefunction.pro 0
-
- \target ConditionalFunctions
- \section1 Conditional Functions
-
- \c qmake provides built-in functions that can be used as conditions
- when writing scopes. These functions do not return a value, but
- instead indicate "success" or "failure":
-
- \snippet doc/src/snippets/qmake/functions.pro 3
-
- This type of function should be used in conditional expressions
- only.
-
- It is possible to define your own functions to provide conditions
- for scopes. The following example tests whether each file in a list
- exists and returns true if they all exist, or false if not:
-
- \snippet doc/src/snippets/qmake/testfunction.pro 0
-
- \section1 Adding New Configuration Features
-
- \c qmake lets you create your own \e features that can be included in
- project files by adding their names to the list of values specified by
- the \c CONFIG variable. Features are collections of custom functions and
- definitions in \c{.prf} files that can reside in one of many standard
- directories. The locations of these directories are defined in a number
- of places, and \c qmake checks each of them in the following order when
- it looks for \c{.prf} files:
-
- \list 1
- \o In a directory listed in the \c QMAKEFEATURES environment variable;
- this contains a colon-separated list of directories.
- \o In a directory listed in the \c QMAKEFEATURES property variable; this
- contains a colon-spearated list of directories.
- \omit
- \o In a features directory beneath the project's root directory (where
- the \c{.qmake.cache} file is generated).
- \endomit
- \o In a features directory residing within a \c mkspecs directory.
- \c mkspecs directories can be located beneath any of the directories
- listed in the \c QMAKEPATH environment variable (a colon-separated list
- of directories). (\c{$QMAKEPATH/mkspecs/<features>})
- \o In a features directory residing beneath the directory provided by the
- \c QMAKESPEC environment variable. (\c{$QMAKESPEC/<features>})
- \o In a features directory residing in the \c data_install/mkspecs directory.
- (\c{data_install/mkspecs/<features>})
- \o In a features directory that exists as a sibling of the directory
- specified by the \c QMAKESPEC environment variable.
- (\c{$QMAKESPEC/../<features>})
- \endlist
-
- The following features directories are searched for features files:
-
- \list 1
- \o \c{features/unix}, \c{features/win32}, or \c{features/macx}, depending on
- the platform in use
- \o \c features/
- \endlist
-
- For example, consider the following assignment in a project file:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 103
-
- With this addition to the \c CONFIG variable, \c qmake will search the
- locations listed above for the \c myfeatures.prf file after it has
- finished parsing your project file. On Unix systems, it will look for
- the following file:
-
- \list 1
- \o \c $QMAKEFEATURES/myfeatures.prf (for each directory listed in the
- \c QMAKEFEATURES environment variable)
- \o \c $$QMAKEFEATURES/myfeatures.prf (for each directory listed in the
- \c QMAKEFEATURES property variable)
- \o \c myfeatures.prf (in the project's root directory)
- \o \c $QMAKEPATH/mkspecs/features/unix/myfeatures.prf and
- \c $QMAKEPATH/mkspecs/features/myfeatures.prf (for each directory
- listed in the \c QMAKEPATH environment variable)
- \o \c $QMAKESPEC/features/unix/myfeatures.prf and
- \c $QMAKESPEC/features/myfeatures.prf
- \o \c data_install/mkspecs/features/unix/myfeatures.prf and
- \c data_install/mkspecs/features/myfeatures.prf
- \o \c $QMAKESPEC/../features/unix/myfeatures.prf and
- \c $QMAKESPEC/../features/myfeatures.prf
- \endlist
-
- \note The \c{.prf} files must have names in lower case.
-
-
-*/
-
-/*!
- \page qmake-precompiledheaders.html
- \title Using Precompiled Headers
- \contentspage {qmake Manual}{Contents}
- \previouspage qmake Advanced Usage
- \nextpage qmake Reference
- \ingroup buildsystem
-
- \target Introduction
-
- Precompiled headers are a performance feature supported by some
- compilers to compile a stable body of code, and store the compiled
- state of the code in a binary file. During subsequent compilations,
- the compiler will load the stored state, and continue compiling the
- specified file. Each subsequent compilation is faster because the
- stable code does not need to be recompiled.
-
- \c qmake supports the use of precompiled headers (PCH) on some
- platforms and build environments, including:
- \list
- \o Windows
- \list
- \o nmake
- \o Dsp projects (VC 6.0)
- \o Vcproj projects (VC 7.0 \& 7.1)
- \endlist
- \o Mac OS X
- \list
- \o Makefile
- \o Xcode
- \endlist
- \o Unix
- \list
- \o GCC 3.4 and above
- \endlist
- \endlist
-
- \target ADD_PCH
- \section1 Adding Precompiled Headers to Your Project
-
- \target PCH_CONTENTS
- \section2 Contents of the Precompiled Header File
-
- The precompiled header must contain code which is \e stable
- and \e static throughout your project. A typical PCH might look
- like this:
-
- \section3 Example: \c stable.h
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 104
-
- Note that a precompiled header file needs to separate C includes from
- C++ includes, since the precompiled header file for C files may not
- contain C++ code.
-
- \target PROJECT_OPTIONS
- \section2 Project Options
-
- To make your project use PCH, you only need to define the
- \c PRECOMPILED_HEADER variable in your project file:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 105
-
- \c qmake will handle the rest, to ensure the creation and use of the
- precompiled header file. You do not need to include the precompiled
- header file in \c HEADERS, as \c qmake will do this if the configuration
- supports PCH.
-
- All platforms that support precompiled headers have the configuration
- option \c precompile_header set. Using this option, you may trigger
- conditional blocks in your project file to add settings when using PCH.
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 106
-
- \section1 Notes on Possible Issues
-
- On some platforms, the file name suffix for precompiled header files is
- the same as that for other object files. For example, the following
- declarations may cause two different object files with the same name to
- be generated:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 107
-
- To avoid potential conflicts like these, it is good practice to ensure
- that header files that will be precompiled are given distinctive names.
-
- \target EXAMPLE_PROJECT
- \section1 Example Project
-
- You can find the following source code in the
- \c{examples/qmake/precompile} directory in the Qt distribution:
-
- \section2 \c mydialog.ui
-
- \quotefromfile examples/qmake/precompile/mydialog.ui
- \printuntil
-
- \section2 \c stable.h
-
- \snippet examples/qmake/precompile/stable.h 0
-
- \section2 \c myobject.h
-
- \snippet examples/qmake/precompile/myobject.h 0
-
- \section2 \c myobject.cpp
-
- \snippet examples/qmake/precompile/myobject.cpp 0
-
- \section2 \c util.cpp
-
- \snippet examples/qmake/precompile/util.cpp 0
-
- \section2 \c main.cpp
-
- \snippet examples/qmake/precompile/main.cpp 0
-
- \section2 \c precompile.pro
-
- \snippet examples/qmake/precompile/precompile.pro 0
-*/
-
-/*!
- \page qmake-tutorial.html
- \title qmake Tutorial
- \contentspage {qmake Manual}{Contents}
- \previouspage qmake Manual
- \nextpage qmake Common Projects
-
- This tutorial teaches you how to use \c qmake. We recommend that
- you read the \c qmake user guide after completing this tutorial.
-
- \section1 Starting off Simple
-
- Let's assume that you have just finished a basic implementation of
- your application, and you have created the following files:
-
- \list
- \o hello.cpp
- \o hello.h
- \o main.cpp
- \endlist
-
- You will find these files in the \c{examples/qmake/tutorial} directory
- of the Qt distribution. The only other thing you know about the setup of
- the application is that it's written in Qt. First, using your favorite
- plain text editor, create a file called \c hello.pro in
- \c{examples/qmake/tutorial}. The first thing you need to do is add the
- lines that tell \c qmake about the source and header files that are part
- of your development project.
-
- We'll add the source files to the project file first. To do this you
- need to use the \l{qmake Variable Reference#SOURCES}{SOURCES} variable.
- Just start a new line with \c {SOURCES +=} and put hello.cpp after it.
- You should have something like this:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 108
-
- We repeat this for each source file in the project, until we end up
- with the following:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 109
-
- If you prefer to use a Make-like syntax, with all the files listed in
- one go you can use the newline escaping like this:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 110
-
- Now that the source files are listed in the project file, the header
- files must be added. These are added in exactly the same way as source
- files, except that the variable name we use is
- \l{qmake Variable Reference#HEADERS}{HEADERS}.
-
- Once you have done this, your project file should look something like
- this:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 111
-
- The target name is set automatically; it is the same as the project
- file, but with the suffix appropriate to the platform. For example, if
- the project file is called \c hello.pro, the target will be \c hello.exe
- on Windows and \c hello on Unix. If you want to use a different name
- you can set it in the project file:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 112
-
- The final step is to set the \l{qmake Variable Reference#CONFIG}{CONFIG}
- variable. Since this is a Qt application, we need to put \c qt on the
- \c CONFIG line so that \c qmake will add the relevant libraries to be
- linked against and ensure that build lines for \c moc and \c uic are
- included in the generated Makefile.
-
- The finished project file should look like this:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 113
-
- You can now use \c qmake to generate a Makefile for your application.
- On the command line, in your project's directory, type the following:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 114
-
- Then type \c make or \c nmake depending on the compiler you use.
-
- For Visual Studio users, \c qmake can also generate \c .dsp or
- \c .vcproj files, for example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 115
-
- \section1 Making an Application Debuggable
-
- The release version of an application doesn't contain any debugging
- symbols or other debugging information. During development it is useful
- to produce a debugging version of the application that has the
- relevant information. This is easily achieved by adding \c debug to the
- \c CONFIG variable in the project file.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 116
-
- Use \c qmake as before to generate a Makefile and you will be able to
- obtain useful information about your application when running it in
- a debugging environment.
-
- \section1 Adding Platform-Specific Source Files
-
- After a few hours of coding, you might have made a start on the
- platform-specific part of your application, and decided to keep the
- platform-dependent code separate. So you now have two new files to
- include into your project file: \c hellowin.cpp and \c
- hellounix.cpp. We can't just add these to the \c SOURCES
- variable since this will put both files in the Makefile. So, what we
- need to do here is to use a scope which will be processed depending on
- which platform \c qmake is run on.
-
- A simple scope that will add in the platform-dependent file for
- Windows looks like this:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 117
-
- So if \c qmake is run on Windows, it will add \c hellowin.cpp to the
- list of source files. If \c qmake is run on any other platform, it
- will simply ignore it. Now all that is left to be done is to create a
- scope for the Unix-specific file.
-
- When you have done that, your project file should now look
- something like this:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 118
-
- Use \c qmake as before to generate a Makefile.
-
- \section1 Stopping qmake If a File Doesn't Exist
-
- You may not want to create a Makefile if a certain file doesn't exist.
- We can check if a file exists by using the exists() function. We can
- stop \c qmake from processing by using the error() function. This
- works in the same way as scopes do. Simply replace the scope condition
- with the function. A check for a \c main.cpp file looks like this:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 119
-
- The \c{!} symbol is used to negate the test; i.e. \c{exists( main.cpp )}
- is true if the file exists, and \c{!exists( main.cpp )} is true if the
- file doesn't exist.
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 120
-
- Use \c qmake as before to generate a makefile. If you rename \c
- main.cpp temporarily, you will see the message and \c qmake will stop
- processing.
-
- \section1 Checking for More than One Condition
-
- Suppose you use Windows and you want to be able to see statement
- output with qDebug() when you run your application on the command line.
- Unless you build your application with the appropriate console setting,
- you won't see the output. We can easily put \c console on the \c CONFIG
- line so that on Windows the makefile will have this setting. However,
- let's say that we only want to add the \c CONFIG line if we are running
- on Windows \e and when \c debug is already on the \c CONFIG line.
- This requires using two nested scopes; just create one scope, then create
- the other inside it. Put the settings to be processed inside the last
- scope, like this:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 121
-
- Nested scopes can be joined together using colons, so the final
- project file looks like this:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 122
-
- That's it! You have now completed the tutorial for \c qmake, and are
- ready to write project files for your development projects.
-*/
-
-/*!
- \page qmake-common-projects.html
- \title qmake Common Projects
- \contentspage {qmake Manual}{Contents}
- \previouspage qmake Tutorial
- \nextpage Using qmake
-
- This chapter describes how to set up \c qmake project files for three
- common project types that are based on Qt. Although all kinds of
- projects use many of the same variables, each of them use project-specific
- variables to customize output files.
-
- Platform-specific variables are not described here; we refer the reader to
- the \l{Deploying Qt Applications} document for information on issues such as
- \l{Deploying an Application on Mac OS X#Architecture Dependencies}{building
- universal binaries for Mac OS X} and
- \l{Deploying an Application on Windows#Visual Studio 2005 Onwards}
- {handling Visual Studio manifest files}.
-
- \tableofcontents
-
- \target Application
- \section1 Building an Application
-
- \section2 The app Template
-
- The \c app template tells \c qmake to generate a Makefile that will build
- an application. With this template, the type of application can be specified
- by adding one of the following options to the \c CONFIG variable definition:
-
- \table
- \header \o Option \o Description
- \row \o windows \o The application is a Windows GUI application.
- \row \o console \o \c app template only: the application is a Windows console
- application.
- \endtable
-
- When using this template the following \c qmake system variables are recognized.
- You should use these in your .pro file to specify information about your
- application.
-
- \list
- \o HEADERS - A list of all the header files for the application.
- \o SOURCES - A list of all the source files for the application.
- \o FORMS - A list of all the UI files (created using \c{Qt Designer})
- for the application.
- \o LEXSOURCES - A list of all the lex source files for the application.
- \o YACCSOURCES - A list of all the yacc source files for the application.
- \o TARGET - Name of the executable for the application. This defaults
- to the name of the project file. (The extension, if any, is added
- automatically).
- \o DESTDIR - The directory in which the target executable is placed.
- \o DEFINES - A list of any additional pre-processor defines needed for the application.
- \o INCLUDEPATH - A list of any additional include paths needed for the application.
- \o DEPENDPATH - The dependency search path for the application.
- \o VPATH - The search path to find supplied files.
- \o DEF_FILE - Windows only: A .def file to be linked against for the application.
- \o RC_FILE - Windows only: A resource file for the application.
- \o RES_FILE - Windows only: A resource file to be linked against for the application.
- \endlist
-
- You only need to use the system variables that you have values for,
- for instance, if you do not have any extra INCLUDEPATHs then you do not
- need to specify any, \c qmake will add in the default ones needed.
- For instance, an example project file might look like this:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 123
-
- For items that are single valued, e.g. the template or the destination
- directory, we use "="; but for multi-valued items we use "+=" to \e
- add to the existing items of that type. Using "=" replaces the item's
- value with the new value, for example if we wrote \c{DEFINES=QT_DLL},
- all other definitions would be deleted.
-
- \target Library
- \section1 Building a Library
-
- \section2 The lib Template
-
- The \c lib template tells \c qmake to generate a Makefile that will
- build a library. When using this template, in addition to the system variables
- mentioned above for the \c app template the \c VERSION variable is
- supported. You should use these in your .pro file to specify
- information about the library.
-
- When using the \c lib template, the following options can be added to the
- \c CONFIG variable to determine the type of library that is built:
-
- \table
- \header \o Option \o Description
- \row \o dll \o The library is a shared library (dll).
- \row \o staticlib \o The library is a static library.
- \row \o plugin \o The library is a plugin; this also enables the dll option.
- \endtable
-
- The following option can also be defined to provide additional information about
- the library.
-
- \list
- \o VERSION - The version number of the target library, for example, 2.3.1.
- \endlist
-
- The target file name for the library is platform-dependent. For example, on
- X11 and Mac OS X, the library name will be prefixed by \c lib; on Windows,
- no prefix is added to the file name.
-
- \target Plugin
- \section1 Building a Plugin
-
- Plugins are built using the \c lib template, as described in the previous
- section. This tells \c qmake to generate a Makefile for the project that will
- build a plugin in a suitable form for each platform, usually in the form of a
- library. As with ordinary libraries, the \c VERSION variable is used to specify
- information about the plugin.
-
- \list
- \o VERSION - The version number of the target library, for example, 2.3.1.
- \endlist
-
- \section2 Building a Qt Designer Plugin
-
- \QD plugins are built using a specific set of configuration settings that
- depend on the way Qt was configured for your system. For convenience, these
- settings can be enabled by adding \c designer to the project's \c CONFIG
- variable. For example:
-
- \snippet examples/designer/worldtimeclockplugin/worldtimeclockplugin.pro 0
-
- See the \l{Qt Examples#Qt Designer}{Qt Designer examples} for more
- examples of plugin-based projects.
-
- \section1 Building and Installing in Debug and Release Modes
-
- Sometimes, it is necessary to build a project in both debug and release
- modes. Although the \c CONFIG variable can hold both \c debug and \c release
- options, the \c debug option overrides the \c release option.
-
- \section2 Building in Both Modes
-
- To enable a project to be built in both modes, you must add the
- \c debug_and_release option to your project's \c CONFIG definition:
-
- \snippet doc/src/snippets/qmake/debug_and_release.pro 0
- \snippet doc/src/snippets/qmake/debug_and_release.pro 1
-
- The scope in the above snippet modifies the build target in each mode to
- ensure that the resulting targets have different names. Providing different
- names for targets ensures that one will not overwrite the other.
-
- When \c qmake processes the project file, it will generate a Makefile rule
- to allow the project to be built in both modes. This can be invoked in the
- following way:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 124
-
- The \c build_all option can be added to the \c CONFIG variable in the
- project file to ensure that the project is built in both modes by default:
-
- \snippet doc/src/snippets/qmake/debug_and_release.pro 2
-
- This allows the Makefile to be processed using the default rule:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 125
-
- \section2 Installing in Both Modes
-
- The \c build_all option also ensures that both versions of the target
- will be installed when the installation rule is invoked:
-
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 126
-
- It is possible to customize the names of the build targets depending on
- the target platform. For example, a library or plugin may be named using a
- different convention on Windows to the one used on Unix platforms:
-
- \omit
- Note: This was originally used in the customwidgetplugin.pro file, but is
- no longer needed there.
- \endomit
- \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 127
-
- The default behavior in the above snippet is to modify the name used for
- the build target when building in debug mode. An \c else clause could be
- added to the scope to do the same for release mode; left as it is, the
- target name remains unmodified.
-*/
-
diff --git a/doc/src/qmsdev.qdoc b/doc/src/qmsdev.qdoc
deleted file mode 100644
index b6126a5a0..000000000
--- a/doc/src/qmsdev.qdoc
+++ /dev/null
@@ -1,137 +0,0 @@
-/****************************************************************************
-**
-** Documentation of Visual Studio Integration Plugin.
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
-/* NOT DOCUMENTED !
- \page qmsdev.html
-
- \title The QMsDev Plugin
-
- The Visual Studio Integration Plugin is currently available only to users of
- Visual Studio 6. It offers simple ways of doing common tasks when writing a
- Qt application.
-
- \tableofcontents
-
- \section1 How to install the Visual Studio Integration Plugin
-
- When you install Qt, the integration plugin should be installed for you,
- however, sometimes this does not happen, so to install the integration
- plugin manually just carry out the following steps.
-
- \list
- \i Start up Visual Studio.
- \i Select Tools|Customize|Add-ins and Macro Files.
- \i Ensure that there is a tick next to QMsDev Developer Studio Add-In.
- \i Click Close.
- \endlist
-
- Now the integration plugin should be installed. If this doesn't
- work, then contact Qt technical support giving details of
- what went wrong.
-
- \section1 How to uninstall the Visual Studio Integration Plugin
-
- When you want to uninstall the integration plugin, just carry out the
- following steps.
-
- \list
- \i Close down any instances of Visual Studio.
- \i Delete the file '%MSDevDir%\\addins\\qmsdev.dll'
- \endlist
-
- \section1 What can the Visual Studio Integration Plugin do?
-
- The integration plugin adds the following options to Visual Studio:
-
- \list
- \i New Qt Project
- \i New Qt Dialog
- \i Qt Designer
- \i Open Qt Project
- \i Write Qt Project
- \i Use Qt In Current Project
- \i Add MOC
- \endlist
-
- \section2 Using the 'New Qt Project' button
-
- The 'New Qt Project' button allows you to create a simple Qt project
- ready for development. Simply fill in the form and if you select
- 'Dialog' or 'Main Window' without MDI support then it will
- automatically start up \e{Qt Designer}. When you have finished with
- the form in \e{Qt Designer} just save it and it will appear in a
- ready made Qt project.
-
- If you select 'Main Window' with 'MDI Support' then it will simply
- give you a code skeleton in a project ready for you to populate with
- your own code.
-
- \section2 Using the 'New Qt Dialog' button
-
- The 'New Qt Dialog' button works in two ways: You can use it to create a new
- dialog for your project; or you can use it to insert an existing
- dialog into your project.
-
- If you want to create a new dialog then all you need to do is specify where
- the dialog file should be saved and give it a name. This will start up
- \e{Qt Designer} to allow you to design your new dialog, and will add it to
- the existing project.
-
- If you want to add an existing dialog to your project, then just select the
- relevant UI file. This will then add it to your existing project and add
- the relevant steps to create the generated code.
-
- \section2 Using the 'Qt Designer' button
-
- The 'Qt Designer' button simply starts up \e{Qt Designer}, it has no ties to
- your existing project so whatever you do with it will not affect your
- existing projects. It can also be started up by using the Ctrl+Shift+D key
- combination in Visual Studio.
-
- \section2 Using the 'Open Qt Project' button
-
- The 'Open Qt Project' button allows you to convert an existing \c
- qmake project file into a \c .dsp file which you can insert into
- your existing workspace. When you click the 'Open Qt Project'
- button, just select an existing \c qmake project file (a \c .pro
- file) and then click OK. You will get a message box at the end
- which asks you to insert the newly created \c .dsp file into your
- existing workspace.
-
- \section2 Using the 'Write Qt Project' button
-
- The 'Write Qt Project' button creates a \c qmake project (\c .pro)
- file for your current project so that you can easily copy the files
- onto another platform and be able to use \c qmake to create a Makefile
- on that other platform. All you need to do is make the project you
- want to create a \c .pro file for, and click on the button. Just
- name your \c qmake project file and click Save.
-
- \section2 Using the 'Use Qt In Current Project' button
-
- The 'Use Qt In Current Project' button simply adds in the necessary
- information for the current project so that it links against Qt and
- sets any other settings needed to use Qt in that project.
-
- \section2 Using the 'Add MOC' button
-
- The 'Add MOC' button will add in the custom build step for the selected file
- so that it creates any needed MOC files and it will add these generated
- files to the project. All you need to do to use it is click on a file that
- has Q_OBJECT and click the button.
-
- You only need to use this button if you added a file that has
- Q_OBJECT in it by hand, you don't need to use this if you used any
- of the previously mentioned buttons. It can also be invoked by using
- the \key{Ctrl+Shift+M} key combination in Visual Studio.
-
-*/
diff --git a/doc/src/qsql.qdoc b/doc/src/qsql.qdoc
deleted file mode 100644
index 601a629b4..000000000
--- a/doc/src/qsql.qdoc
+++ /dev/null
@@ -1,139 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \namespace QSql
- \inmodule QtSql
- \brief The QSql namespace contains miscellaneous identifiers used throughout
- the Qt SQL library.
-
- \inheaderfile QtSql
- \ingroup database
- \mainclass
-
- \sa {QtSql Module}
-*/
-
-/*!
- \enum QSql::Confirm
- \compat
-
- This enum type describes edit confirmations.
-
- \value Yes
- \value No
- \value Cancel
-*/
-
-/*!
- \enum QSql::Op
- \compat
-
- This enum type describes edit operations.
-
- \value None
- \value Insert
- \value Update
- \value Delete
-*/
-
-
-/*!
- \enum QSql::Location
-
- This enum type describes special SQL navigation locations:
-
- \value BeforeFirstRow Before the first record.
- \value AfterLastRow After the last record.
-
- \omitvalue BeforeFirst
- \omitvalue AfterLast
-
- \sa QSqlQuery::at()
-*/
-
-/*!
- \enum QSql::ParamTypeFlag
-
- This enum is used to specify the type of a bind parameter.
-
- \value In The bind parameter is used to put data into the database.
- \value Out The bind parameter is used to receive data from the database.
- \value InOut The bind parameter is used to put data into the
- database; it will be overwritten with output data on executing
- a query.
- \value Binary This must be OR'd with one of the other flags if
- you want to indicate that the data being transferred is
- raw binary data.
-*/
-
-/*!
- \enum QSql::TableType
-
- This enum type describes types of SQL tables.
-
- \value Tables All the tables visible to the user.
- \value SystemTables Internal tables used by the database.
- \value Views All the views visible to the user.
- \value AllTables All of the above.
-*/
-
-/*!
- \enum QSql::NumericalPrecisionPolicy
-
- This enum type describes at which precision levels numercial values are read from
- a database.
-
- Some databases support numerical values with a precision that is not storable in a
- C++ basic data type. The default behavior is to bind these values as a QString.
- This enum can be used to override this behavior.
-
- \value LowPrecisionInt32 Force 32bit integer values. In case of floating point numbers,
- the fractional part is silently discarded.
- \value LowPrecisionInt64 Force 64bit integer values. In case of floating point numbers,
- the fractional part is silently discarded.
- \value LowPrecisionDouble Force \c double values.
- \value HighPrecision The default behavior - try to preserve maximum precision.
-
- Note: The actual behaviour if an overflow occurs is driver specific. The Oracle database
- just returns an error in this case.
-*/
-
diff --git a/doc/src/qsqldatatype-table.qdoc b/doc/src/qsqldatatype-table.qdoc
deleted file mode 100644
index 19038617f..000000000
--- a/doc/src/qsqldatatype-table.qdoc
+++ /dev/null
@@ -1,581 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page sql-types.html
- \title QtSql Module - Recommended Use of Data Types
-
- \section1 Recommended Use of Types in Qt Supported Databases
-
- This table shows the recommended data types used when extracting data
- from the databases supported in Qt. It is important to note that the
- types used in Qt are not necessarily valid as input to the specific
- database. One example could be that a double would work perfectly as
- input for floating point records in a database, but not necessarily
- as a storage format for output from the database since it would be stored
- with 64-bit precision in C++.
-
- \tableofcontents
-
- \section2 IBM DB2 Data Types
-
- \table 90%
- \header
- \o IBM DB2 data type
- \o SQL type description
- \o Recommended input (C++ or Qt data type)
- \row
- \o SMALLINT
- \o 16-bit signed integer
- \o typedef qint16
- \row
- \o INTEGER
- \o 32-bit signed integer
- \o typedef qint32
- \row
- \o BIGINT
- \o 64-bit signed integer
- \o typedef qint64
- \row
- \o REAL
- \o 32-bit Single-precision floating point
- \o By default mapping to QString
- \row
- \o DOUBLE PRECISION
- \o 64-bit Double-precision floating point
- \o By default mapping to QString
- \row
- \o FLOAT
- \o 64-bit Double-precision floating point
- \o By default mapping to QString
- \row
- \o CHAR
- \o Fixed-length, null-terminated character string
- \o Mapped to QString
- \row
- \o VARCHAR
- \o Null-terminated varying length string
- \o Mapped to QString
- \row
- \o LONG VARCHAR
- \o Not null-terminated varying length character string
- \o Mapped to QString
- \row
- \o BLOB
- \o Not null-terminated varying binary string with 4-byte string
- length indicator
- \o Mapped to QByteArray
- \row
- \o CLOB
- \o Character large string object
- \o Mapped to QString
- \row
- \o DATE
- \o Null-terminated character string of the following format:
- yyyy-mm-dd
- \o Mapped to QDate
- \row
- \o TIME
- \o Null-terminated character string of the following format: hh.mm.ss
- \o Mapped to QTime
- \row
- \o TIMESTAMP
- \o Null-terminated character string of the following format: yyyy-mm-dd-hh.mm.ss.nnnnnn
- \o Mapped to QDateTime
- \endtable
-
- \section2 Borland InterBase Data Types
-
- \table 90%
- \header
- \o Borland InterBase data type
- \o SQL type description
- \o Recommended input (C++ or Qt data type)
- \row
- \o BOOLEAN
- \o Boolean
- \o bool
- \row
- \o TINYINT
- \o 8 bit signed integer
- \o typedef qint8
- \row
- \o SMALLINT
- \o 16-bit signed integer
- \o typedef qint16
- \row
- \o INTEGER
- \o 32-bit signed integer
- \o typedef qint32
- \row
- \o BIGINT LONG
- \o 64-bit signed integer
- \o typedef qint64
- \row
- \o REAL FLOAT
- \o 32-bit floating point
- \o By default mapping to QString
- \row
- \o FLOAT
- \o 64-bit floating point
- \o By default mapping to QString
- \row
- \o DOUBLE
- \o 64-bit floating point
- \o By default mapping to QString
- \row
- \o DOUBLE PRECISION
- \o 64-bit Double-precision floating point
- \o By default mapping to QString
- \row
- \o VARCHAR STRING
- \o Character string, Unicode
- \o Mapped to QString
- \row
- \o CLOB
- \o Character large string object
- \o Mapped to QString
- \row
- \o DATE
- \o Displays date. Format: 'yyyy-mm-dd'
- \o Mapped to QDate
- \row
- \o TIME
- \o Displays time. Format is 'hh:mm:ss' in 24-hour format
- \o Mapped to QTime
- \row
- \o TIMESTAMP
- \o Displays a timestamp. Format is 'yyyy-mm-dd hh:mm:ss'
- \o Mapped to QDateTime
- \endtable
-
- \section2 MySQL Data Types
-
- \table 90%
- \header
- \o MySQL data type
- \o SQL type description
- \o Recommended input (C++ or Qt data type)
- \row
- \o TINYINT
- \o 8 bit signed integer
- \o typedef qint8
- \row
- \o TINYINT UNSIGNED
- \o 8 bit unsigned integer
- \o typedef quint8
- \row
- \o SMALLINT
- \o 16-bit signed integer
- \o typedef qint16
- \row
- \o SMALLINT UNSIGNED
- \o 16-bit unsigned integer
- \o typedef quint16
- \row
- \o INT
- \o 32-bit signed integer
- \o typedef qint32
- \row
- \o INT UNSIGNED
- \o 32-bit unsigned integer
- \o typedef quint32
- \row
- \o BIGINT
- \o 64-bit signed integer
- \o typedef qint64
- \row
- \o FLOAT
- \o 32-bit Floating Point
- \o By default mapping to QString
- \row
- \o DOUBLE
- \o 64-bit Floating Point
- \o By default mapping to QString
- \row
- \o CHAR
- \o Character string
- \o Mapped to QString
- \row
- \o VARCHAR
- \o Character string
- \o Mapped to QString
- \row
- \o TINYTEXT
- \o Character string
- \o Mapped to QString
- \row
- \o TEXT
- \o Character string
- \o Mapped to QString
- \row
- \o MEDIUMTEXT
- \o Character string
- \o Mapped to QString
- \row
- \o LONGTEXT
- \o Character string
- \o Mapped to QString
- \row
- \o CLOB
- \o Character large string object
- \o Mapped to QString
- \row
- \o all BLOB types
- \o BLOB
- \o Mapped to QByteArray
- \row
- \o DATE
- \o Date without Time
- \o Mapped to QDate
- \row
- \o DATETIME
- \o Date and Time
- \o Mapped to QDateTime
- \row
- \o TIMESTAMP
- \o Date and Time
- \o Mapped to QDateTime
- \row
- \o TIME
- \o Time
- \o Mapped to QTime
- \row
- \o YEAR
- \o Year (int)
- \o Mapped to QDateTime
- \row
- \o ENUM
- \o Enumeration of Value Set
- \o Mapped to QString
- \endtable
-
- \section2 Oracle Call Interface Data Types
-
- \table 90%
- \header
- \o Oracle Call Interface data type
- \o SQL type description
- \o Recommended input (C++ or Qt data type)
- \row
- \o NUMBER
- \o FLOAT, DOUBLE, PRECISIONc REAL
- \o By default mapping to QString
- \row
- \o NUMBER(38)
- \o INTEGER INT SMALLINT
- \o typedef qint8/16/32/64
- \row
- \o NUMBER(p,s)
- \o NUMERIC(p,s) DECIMAL(p,s)a
- \o By default mapping to QString
- \row
- \o NVARCHAR2(n)
- \o Character string (NATIONAL CHARACTER VARYING(n) NATIONAL
- CHAR VARYING(n) NCHAR VARYING(n))
- \o Mapped to QString
- \row
- \o NCHAR(n)
- \o Character string (NATIONAL CHARACTER(n) NATIONAL CHAR(n)
- NCHAR(n))
- \o Mapped to QString
- \row
- \o CHAR(n)
- \o Character string (CHARACTER(n) CHAR(n))
- \o Mapped to QString
- \row
- \o CLOB
- \o Character large string object
- \o Mapped to QString
- \row
- \o BLOB
- \o A binary large object
- \o Mapped to QByteArray
- \row
- \o TIMESTAMP
- \o Year, month, and day values of date, as well as hour, minute,
- and second values of time
- \o Mapped to QDateTime
- \endtable
-
- \section2 ODBC Data Types
-
- \table 90%
- \header
- \o ODBC data type
- \o SQL type description
- \o Recommended input (C++ or Qt data type)
- \row
- \o BIT
- \o Boolean
- \o BOOL
- \row
- \o TINYINT
- \o 8 bit integer
- \o typedef qint8
- \row
- \o SMALLINT
- \o 16-bit signed integer
- \o typedef qint16
- \row
- \o INTEGER
- \o 32-bit signed integer
- \o typedef qint32
- \row
- \o BIGINT
- \o 64-bit signed integer
- \o typedef qint64
- \row
- \o REAL
- \o 32-bit Single-precision floating point
- \o By default mapping to QString
- \row
- \o FLOAT
- \o 64-bit Double floating point
- \o By default mapping to QString
- \row
- \o DOUBLE
- \o 64-bit Double floating point
- \o By default mapping to QString
- \row
- \o CHAR
- \o Character string
- \o Mapped to QString
- \row
- \o VARCHAR
- \o Character string
- \o Mapped to QString
- \row
- \o LONGVARCHAR
- \o Character string
- \o Mapped to QString
- \row
- \o CLOB
- \o Character large string object
- \o Mapped to QString
- \row
- \o DATE
- \o Character string
- \o Mapped to QDate
- \row
- \o TIME
- \o Character Time, Character string
- \o Mapped to QTime
- \row
- \o TIMESTAMP
- \o Character Time, Character string
- \o Mapped to QDateTime
- \endtable
-
- \section2 PostgreSQL Data Types
-
- \table 90%
- \header
- \o PostgreSQL data type
- \o SQL type description
- \o Recommended input (C++ or Qt data type)
- \row
- \o BOOLEAN
- \o Boolean
- \o bool
- \row
- \o SMALLINT
- \o 16-bit signed integer
- \o typedef qint16
- \row
- \o INTEGER
- \o 32-bit signed integer
- \o typedef qint32
- \row
- \o BIGINT
- \o 64-bit signed integer
- \o typedef qint64
- \row
- \o REAL
- \o 32-bit variable-precision floating point
- \o By default mapping to QString
- \row
- \o DOUBLE PRECISION
- \o 64-bit variable-precision floating point
- \o By default mapping to QString
- \row
- \o DECIMAL VARIABLE
- \o user-specified precision, exact
- \o Mapped to QString
- \row
- \o NUMERIC VARIABLE
- \o user-specified precision, exact
- \o Mapped to QString
- \row
- \o VARCHAR
- \o variable-length character string
- \o Mapped to QString
- \row
- \o CHARACTER
- \o Character string of fixed-length
- \o Mapped to QString
- \row
- \o TEXT
- \o Character string of variable-length
- \o Mapped to QString
- \row
- \o CLOB
- \o Character large string object
- \o Mapped to QString
- \row
- \o TIMESTAMP
- \o 8 bytes, both date and time
- \o Mapped to QDateTime
- \row
- \o TIMESTAMP
- \o 8 bytes, both date and time, with time zone
- \o Mapped to QDateTime
- \row
- \o DATE
- \o 4 bytes, dates only
- \o Mapped to QDate
- \row
- \o TIME
- \o 8 bytes, times of day only 00:00:00.00 - 23:59:59.99
- \o Mapped to QTime
- \row
- \o TIME
- \o 12 bytes times of day only, with time zone 00:00:00.00+12
- \o Mapped to QDateTime
- \endtable
-
- \section2 QSQLITE SQLite version 3 Data Types
-
- \table 90%
- \header
- \o QSQLITE SQLite version 3 data type
- \o SQL type description
- \o Recommended input (C++ or Qt data type)
- \row
- \o NULL
- \o NULL value.
- \o NULL
- \row
- \o INTEGER
- \o Signed integer, stored in 8, 16, 24, 32, 48, or 64-bits
- depending on the magnitude of the value.
- \o typedef qint8/16/32/64
- \row
- \o REAL
- \o 64-bit floating point value.
- \o By default mapping to QString
- \row
- \o TEXT
- \o Character string (UTF-8, UTF-16BE or UTF-16-LE).
- \o Mapped to QString
- \row
- \o CLOB
- \o Character large string object
- \o Mapped to QString
- \row
- \o BLOB
- \o The value is a BLOB of data, stored exactly as it was input.
- \o Mapped to QByteArray
- \endtable
-
- \section2 Sybase Adaptive Server Data Types
-
- \table 90%
- \header
- \o Sybase Adaptive Server data type
- \o SQL type description
- \o Recommended input (C++ or Qt data type)
- \row
- \o BINARY
- \o Describes a fixed-length binary value up to 255 bytes in size.
- \o Mapped to QByteArray
- \row
- \o CHAR
- \o Character String
- \o Mapped to QString
- \row
- \o DATETIME
- \o Date and time. Range: 1753-01-01 00:00:00 through 9999-12-31 23:59:59.
- \o Mapped to QDateTime
- \row
- \o NCHAR
- \o Character String of fixed length
- \o Mapped to QString
- \row
- \o NVARACHAR
- \o Character String of variable length
- \o Mapped to QString
- \row
- \o VARCHAR
- \o Character String of fixed length
- \o Mapped to QString
- \row
- \o CLOB
- \o Character large string object
- \o Mapped to QString
- \row
- \o TIMESTAMP
- \o A unique number within a database
- \o Mapped to QString
- \row
- \o SMALLDATETIME
- \o Date and time. Range: 1900-01-01 00:00 through 2079-12-31 23:59
- \o Mapped to QDateTime
- \row
- \o UNICHAR
- \o Character String of fixed length.(Unicode)
- \o Mapped to QString
- \row
- \o UNIVARCHAR
- \o Character String of variable length.(Unicode)
- \o Mapped to QString
- \row
- \o VARBINARY
- \o Describes a variable-length binary value up to 255 bytes in size
- \o Mapped to QByteArray
- \endtable
-
- \section2 SQLite Version 2
-
- SQLite version 2 is "typeless". This means that you can store any kind of
- data you want in any column of any table, regardless of the declared
- data type of that column. We recommend that you map the data to QString.
-*/
diff --git a/doc/src/qt-conf.qdoc b/doc/src/qt-conf.qdoc
deleted file mode 100644
index ce32aa8d7..000000000
--- a/doc/src/qt-conf.qdoc
+++ /dev/null
@@ -1,136 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-conf.html
-
- \title Using qt.conf
- \ingroup deployment
-
- The \c qt.conf file overrides the hard-coded paths that are
- compiled into the Qt library. These paths are accessible using the
- QLibraryInfo class. Without \c qt.conf, the functions in
- QLibraryInfo return these hard-coded paths; otherwise they return
- the paths as specified in \c qt.conf.
-
- Without \c qt.conf, the Qt libraries will use the hard-coded paths
- to look for plugins, translations, and so on. These paths may not
- exist on the target system, or they may not be
- accesssible. Because of this, you need \c qt.conf to make the Qt
- libraries look elsewhere.
-
- QLibraryInfo will load \c qt.conf from one of the following locations:
-
- \list 1
-
- \o \c :/qt/etc/qt.conf using the resource system
-
- \o on Mac OS X, in the Resource directory inside the appliction
- bundle, for example \c assistant.app/Contents/Resources/qt.conf
-
- \o in the directory containing the application executable, i.e.
- QCoreApplication::applicationDirPath() + QDir::separator() + "qt.conf"
-
- \endlist
-
- The \c qt.conf file is an INI text file, as described in the \l
- {QSettings::Format}{QSettings} documentation. The file should have
- a \c Paths group which contains the entries that correspond to
- each value of the QLibraryInfo::LibraryLocation enum. See the
- QLibraryInfo documentation for details on the meaning of the
- various locations.
-
- \table
-
- \header \o Entry \o Default Value
-
- \row \o Prefix \o QCoreApplication::applicationDirPath()
- \row \o Documentation \o \c doc
- \row \o Headers \o \c include
- \row \o Libraries \o \c lib
- \row \o Binaries \o \c bin
- \row \o Plugins \o \c plugins
- \row \o Data \o \c .
- \row \o Translations \o \c translations
- \row \o Settings \o \c .
- \row \o Examples \o \c .
- \row \o Demos \o \c .
-
- \endtable
-
- Absolute paths are used as specified in the \c qt.conf file. All
- paths are relative to the \c Prefix. On Windows and X11, the \c
- Prefix is relative to the directory containing the application
- executable (QCoreApplication::applicationDirPath()). On Mac OS X,
- the \c Prefix is relative to the \c Contents in the application
- bundle. For example, \c application.app/Contents/plugins/ is the
- default location for loading Qt plugins. Note that the plugins
- need to be placed in specific sub-directories under the
- \c{plugins} directory (see \l{How to Create Qt Plugins} for
- details).
-
- For example, a \c qt.conf file could contain the following:
-
- \snippet doc/src/snippets/code/doc_src_qt-conf.qdoc 0
-
- Subgroups of the \c Paths group may be used to specify locations
- for specific versions of the Qt libraries. Such subgroups are of
- the form \c Paths/x.y.z, where x is the major version of the Qt
- libraries, y the minor, and z the patch level. The subgroup that
- most closely matches the current Qt version is used. If no
- subgroup matches, the \c Paths group is used as the fallback. The
- minor and patch level values may be omitted, in which case they
- default to zero.
-
- For example, given the following groups:
-
- \snippet doc/src/snippets/code/doc_src_qt-conf.qdoc 1
-
- The current version will be matched as shown:
-
- \list
- \o 4.0.1 matches \c Paths/4
- \o 4.1.5 matches \c Paths/4.1
- \o 4.6.3 matches \c Paths/4.2.5
- \o 5.0.0 matches \c Paths
- \o 6.0.2 matches \c Paths/6
- \endlist
-*/
diff --git a/doc/src/qt-embedded.qdoc b/doc/src/qt-embedded.qdoc
deleted file mode 100644
index be9a458e6..000000000
--- a/doc/src/qt-embedded.qdoc
+++ /dev/null
@@ -1,76 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \group qt-embedded
- \ingroup topics
- \title Qt for Embedded Platforms
- \brief Documents related to Qt for Embedded Platforms.
-
- Qt is available for embedded platforms and devices as well as for a number
- of desktop platforms. The features provided for each platform depend on the
- capabilities and architecture of the operating system.
-
- Currently, two embedded platforms are supported by Qt:
-
- \table 90%
- \header
- \raw HTML
- <td style="width: 40%">Embedded Linux</td>
- <td style="background: white; width: 5%"></td>
- <td style="width: 40%">Windows CE</td>
- \endraw
- \row \o \l{Qt for Embedded Linux} is designed to be used on Linux devices
- without X11 or existing graphical environments. This flavor of
- Qt includes a framework for creating both applications and an
- environment for them. As a result, it includes features for
- window management, inter-process communication and facilities
- for handling input and display devices.
- \raw HTML
- <td style="background: white; width: 5%"></td>
- \endraw
- \o \l{Qt for Windows CE} is used to create applications running in
- existing Windows CE and Windows Mobile environments.
- Applications use the appropriate style for the embedded
- environment and use native features, such as menus, to conform
- to the native style guidelines.
- \endtable
-*/
diff --git a/doc/src/qt-resources.qdoc b/doc/src/qt-resources.qdoc
new file mode 100644
index 000000000..3b31660b2
--- /dev/null
+++ b/doc/src/qt-resources.qdoc
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qt-resources.html
+ \title Not Used
+ \image gradient.png
+*/
diff --git a/doc/src/qt-webpages.qdoc b/doc/src/qt-webpages.qdoc
new file mode 100644
index 000000000..41f1350d9
--- /dev/null
+++ b/doc/src/qt-webpages.qdoc
@@ -0,0 +1,250 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \externalpage http://qt.nokia.com/
+ \title Qt website
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/
+ \title Qt Homepage
+*/
+
+/*!
+ \externalpage http://bugreports.qt.nokia.com
+ \title Qt Bug Tracker
+*/
+
+/*!
+ \externalpage http://bugreports.qt.nokia.com
+ \title Bug Report Form
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/products/add-on-products/add-on-products/
+ \title Third-Party Tools
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/products/add-on-products
+ \title Qt Solutions
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/developer/books
+ \title Books about Qt Programming
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/developer/books/3
+ \title GUI Programming with Qt 3
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/about
+ \title About Qt
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/products/developer-tools
+ \title Visual Studio Integration
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/products/add-on-products/catalog/4/Widgets/qtcalendarwidget/
+ \title Calendar Widget
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/products/add-on-products/catalog/4/Widgets/qtwizard/
+ \title QtWizard
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/products/add-on-products/catalog/4/Utilities/qtcorba/
+ \title CORBA Framework
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/products/add-on-products/catalog/4/Widgets/qtwindowlistmenu/
+ \title Window Menu
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/qt-in-use
+ \title Customer Success Stories
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/developer
+ \title Developer Zone
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/downloads
+ \title Downloads
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/developer/faqs/
+ \title FAQs
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/developer/faqs/licensing/
+ \title License FAQ
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/products/licensing/
+ \title Free Software and Contributions
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/products/licensing/
+ \title Qt Licensing Overview
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/products/pricing/
+ \title Qt License Pricing
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/about/contact-us
+ \title How to Order
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/doc/supported-platforms.html
+ \title Platform Support Policy
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/products/
+ \title Product Overview
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/doc/supported-platforms.html
+ \title Qt 4 Platforms Overview
+*/
+
+/*!
+ \externalpage http://www.qtextended.org/
+ \title Qt Extended
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/doc/qq/
+ \title Qt Quarterly
+*/
+
+/*!
+ \externalpage http://bugreports.qt.nokia.com
+ \title Task Tracker
+*/
+
+/*!
+ \externalpage http://lists.trolltech.com
+ \title Qt Mailing Lists
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/products/files/pdf/
+ \title Whitepapers
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/doc/qtcanvas
+ \title QtCanvas
+*/
+
+/*!
+ \externalpage http://labs.qt.nokia.com/page/Projects/Itemview/Modeltest
+ \title ModelTest
+*/
+
+/*!
+ \externalpage http://labs.qt.nokia.com/page/Projects/Accessibility/QDBusBridge
+ \title D-Bus Accessibility Bridge
+*/
+
+/*!
+ \externalpage http://labs.qt.nokia.com/blogs/2008/12/05/qtestlib-now-with-nice-graphs-pointing-upwards/
+ \title qtestlib-tools Announcement
+*/
+
+/*!
+ \externalpage http://labs.qt.nokia.com/gitweb?p=qtestlib-tools;a=summary
+ \title qtestlib-tools
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/products/library/modular-class-library#info_scripting
+ \title Qt Script for Applications (QSA)
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/products/add-on-products/catalog/4/Utilities/qtsharedmemory/
+ \title QtSharedMemory
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/qq/qq21-portingcanvas.html
+ \title Porting to Qt 4.2's Graphics View
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/products/add-on-products/catalog/4/Windows/qtwinforms/
+ \title QtWinForms Solution
+*/
+
+/*!
+ \externalpage http://qt.nokia.com/developer/faqs/qt/installation
+ \title Installation FAQ
+*/
+
+/*!
+ \externalpage http://qt.gitorious.org
+ \title Public Qt Repository
+*/
diff --git a/doc/src/qt3support.qdoc b/doc/src/qt3support.qdoc
deleted file mode 100644
index 59698e1f5..000000000
--- a/doc/src/qt3support.qdoc
+++ /dev/null
@@ -1,81 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module Qt3Support
- \title Qt3Support Module
- \contentspage Qt's Modules
- \previouspage Phonon Module
- \nextpage QtDesigner
- \ingroup modules
-
- \keyword Qt3Support
- \brief The Qt3Support module provides classes that ease porting
- from Qt 3 to Qt 4.
-
- \warning The classes in this module are intended to be used in
- intermediate stages of a porting process and are not intended
- to be used in production code.
-
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qt3support.qdoc 0
-
- To link against the module, add this line to your \l qmake \c
- .pro file:
-
- \snippet doc/src/snippets/code/doc_src_qt3support.qdoc 1
-
- \note Since this module provides compatibility classes for
- diverse parts of the Qt 3 API, it has dependencies on the QtCore,
- QtGui, QtNetwork, QtSql, and QtXml modules.
-
- This module is part of the \l{Qt Full Framework Edition} and the
- \l{Open Source Versions of Qt}. Most classes offered by this module are
- also part of the \l{Qt GUI Framework Edition}.
-\if defined(opensourceedition) || defined(desktoplightedition)
- Classes that are not available for \l{Qt GUI Framework Edition}
- users are marked as such in the class documentation.
-\endif
-
- \sa {Porting to Qt 4}
-*/
diff --git a/doc/src/qt3to4.qdoc b/doc/src/qt3to4.qdoc
deleted file mode 100644
index d788f6761..000000000
--- a/doc/src/qt3to4.qdoc
+++ /dev/null
@@ -1,179 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt3to4.html
- \title qt3to4 - The Qt 3 to 4 Porting Tool
-
- \ingroup porting
- \keyword qt3to4
-
- The \c qt3to4 tool provides help when moving a project from Qt 3
- to Qt 4. It is designed to automate the most tedious part of the
- porting effort.
-
- See \l{Porting to Qt 4} and \l{Porting UI Files to Qt 4} for
- more information about porting Qt 3 applications to Qt 4.
-
- \section1 Usage
-
- \c qt3to4 can be run either on individual C++ source or header
- files, or on an entire project specified by a \c qmake \c .pro
- file:
-
- \snippet doc/src/snippets/code/doc_src_qt3to4.qdoc 0
-
- In project mode, \c qt3to4 reads the \c .pro file and converts
- all files specified in it. The tool modifies the files in place.
- You might want to make a copy of your project before you run the
- tool.
-
- \section1 Porting Rules
-
- The Qt porting tool loads its porting rules from an XML file
- called \c q3porting.xml located in Qt's \c tools/porting/src directory.
- By editing this file, you can add your own rules or remove some
- rules.
-
- The standard \c q3porting.xml file specifies the following
- conversions:
-
- \list
- \o Rename classes that are now part of the Qt 3 support
- library (e.g., replace \c QFileDialog with \c{Q3FileDialog}).
- \o Prefix or rename enum values that have been moved or
- renamed (e.g., replace \c QButton::On with \c{QCheckBox::On}) or
- members of the Qt namespace (e.g., replace \c QWidget::red with
- \c{Qt::red}).
- \o Add \c #include directives that might be needed in Qt 4.
- \endlist
-
- \section2 Location of the qt3porting.xml File
-
- You can now specify the location of the \c qt3porting.xml file with the
- \c{-f} command line option. This is useful if you want to use a modified
- file with your own rules.
-
- If you you don't want to maintain a modified \c qt3porting.xml it is
- possible to create a "patch" file that includes the original file and adds
- or disables rules. The syntax for this file looks like this:
-
- \snippet doc/src/snippets/code/doc_src_qt3to4.qdoc 1
-
- \section1 Logging
-
- The porting tool logs all changes to a file called \c
- portinglog.txt in the current directory. This file lists all
- changes made to the source files.
-
- \section1 Advanced Usage
-
- When porting, \c qt3to4 parses the source files and ports the
- contents according to the C++ language rules. This C++ parsing
- step can be disabled with the \c -disableCppParsing option.
-
- If C++ parsing is enabled, \c qt3to4 must be able to locate the
- headers included from the source files. Necessary headers include
- the public Qt headers and any headers that declares names that
- may conflict with names in the public Qt headers. The standard
- C++ headers and system headers are usually not needed.
-
- You can tell \c qt3to4 where to look for headers by using the
- \c{-I} command-line option. Qt 3.3 header information is built
- in, so it is normaly not necessary to specify the location of the
- Qt headers. If you are porting from a different version of Qt 3,
- you may want to disable the built-in headers with
- \c{-disableBuiltInQt3Headers}, and then add the path to the
- actual headers with the \c{-I} option.
-
- When porting a project, \c qt3to4 will read the \c INCLUDEPATH
- and \c DEPENDPATH variables from the \c .pro file and add the
- paths specified here to the list of include search directories.
-
- To see which headers that are not found, use the \c{-missingFileWarnings}
- option.
-
- \section1 Limitations
-
- In some cases, you might get compiler errors because of identifiers
- in the global namespace (e.g., \c CTRL). Adding
-
- \snippet doc/src/snippets/code/doc_src_qt3to4.qdoc 2
-
- at the beginning of the source file that contains
- the indentifier solves the problem.
-
- \section1 Legal Notices
-
- Some source code in \c qt3to4 is licensed under specific highly
- permissive licenses from the original authors. Nokia gratefully
- acknowledges these contributions to \c qt3to4 and all uses of
- \c qt3to4 should also acknowledge these contributions and quote the
- following license statements in an appendix to the documentation.
-
- \list
- \o \l{Contributions to the Following qt3to4 Files: treewalker.h,
- treedump.cpp, treedump.h, treewalker.cpp}
- \endlist
-*/
-
-/*!
- \page qt3to4-treewalker.html
- \title Contributions to the Following qt3to4 Files: treewalker.h, treedump.cpp, treedump.h, treewalker.cpp
- \ingroup licensing
- \brief License information for contributions to the qt3to4 source code.
-
- \legalese
- Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). \BR
- Copyright (C) 2005 Roberto Raggi
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, modify, market, reproduce,
- grant sublicenses and distribute subject to the following
- conditions: The above copyright notice and this permission notice
- shall be included in all copies or substantial portions of the
- Software. These files are provided AS IS with NO WARRANTY OF ANY
- KIND, INCLUDING THE WARRANTY OF DESIGN, MERCHANTIBILITY AND FITNESS
- FOR A PARTICULAR PURPOSE.
- \endlegalese
-*/
diff --git a/doc/src/qt4-accessibility.qdoc b/doc/src/qt4-accessibility.qdoc
deleted file mode 100644
index 747ca8d95..000000000
--- a/doc/src/qt4-accessibility.qdoc
+++ /dev/null
@@ -1,163 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt4-accessibility.html
- \title Cross-Platform Accessibility Support in Qt 4
- \ingroup accessibility
-
- \contentspage {What's New in Qt 4}{Home}
- \previouspage The New Qt Designer
- \nextpage The Qt 4 Database GUI Layer
-
- Qt 4 allows developers to write cross-platform applications that
- are usable by visually impaired users as well as by users with
- other disabilities. Qt accessibility will make applications
- accessible to more users and opens the governmental market, where
- accessibility is often a requirement.
-
- \section1 General Overview
-
- The accessibility classes have been extended in
- various ways since Qt 3. We added new functions and new enum
- values, and revised the API to make it more consistent with the
- rest of Qt. We also added two properties to QWidget,
- \l{QWidget::accessibleName}{accessibleName} and
- \l{QWidget::accessibleDescription}{accessibleDescription}, that
- can be set in \e{Qt Designer} to provide basic help texts without
- having to write any code.
-
- Qt's accessibility architecture is as follows. Qt offers one
- generic interface, QAccessibleInterface, that can be used to
- wrap all widgets and objects (e.g., QPushButton). This single
- interface provides all the metadata necessary for the assistive
- technologies. Qt provides implementations of this interface for
- its built-in widgets as plugins.
-
- A more detailed overview of the accessibility support in Qt can
- be found on the \l Accessibility page.
-
- \section1 Enabling Accessibility Support
-
- By default, Qt applications are run with accessibility support
- enabled on Windows and Mac OS X. On Unix/X11 platforms, applications
- must be launched in an environment with the \c QT_ACCESSIBILITY
- variable set to 1. For example, this is set in the following way with
- the bash shell:
-
- \snippet doc/src/snippets/code/doc_src_qt4-accessibility.qdoc environment
-
- Accessibility features are built into Qt by default when the libraries
- are configured and built.
-
- \section1 Creating New Accessible Interfaces
-
- When you develop custom widgets, you can create custom subclasses
- of QAccessibleInterface and distribute them as plugins (using
- QAccessiblePlugin) or compile them into the application.
- Likewise, Qt's predefined accessibility support can be built as
- plugin (the default) or directly into the Qt library. The main
- advantage of using plugins is that the accessibility classes are
- only loaded into memory if they are actually used; they don't
- slow down the common case where no assistive technology is being
- used.
-
- In addition to QAccessibleInterface, Qt includes two convenience
- classes, QAccessibleObject and QAccessibleWidget, that
- provide the lowest common denominator of metadata (e.g., widget
- geometry, window title, basic help text). You can use them as
- base classes when wrapping your custom QObject or QWidget
- subclasses.
-
- Another new feature in Qt 4 is that Qt can now support other
- backends in addition to the predefined ones. This is done by
- subclassing QAccessibleBridge.
-
- \omit
- \section1 Software Layering
-
- Qt Application
- | links to
- Qt Accessibility Module
- | Plugin (in-process)
- Qt ATK Bridge
- | links to
- ATK
- | Plugin (in-process)
- at-spi
- | CORBA
- assistive technologies
-
- Windows:
-
- Qt Application
- | links to
- Qt Accessibility Module
- | COM (?)
- MSAA
- | ?
- assistive technologies
-
- Mac:
-
- ?
- \endomit
-
- \section1 Example Code
-
- The first example illustrates how to provide accessibility
- information for a custom widget. We can use QAccessibleWidget as
- a base class and reimplement various functions:
-
- \snippet doc/src/snippets/code/doc_src_qt4-accessibility.qdoc 0
-
- Here's how we would implement the
- \l{QAccessibleInterface::doAction()}{doAction()} function to call
- a function named click() on the wrapped MyWidget object when the
- user invokes the object's default action or "presses" it.
-
- \snippet doc/src/snippets/code/doc_src_qt4-accessibility.qdoc 1
-
- To export the widget interface as a plugin, we must subclass
- QAccessibleFactory:
-
- \snippet doc/src/snippets/code/doc_src_qt4-accessibility.qdoc 2
-*/
diff --git a/doc/src/qt4-arthur.qdoc b/doc/src/qt4-arthur.qdoc
deleted file mode 100644
index b253d0673..000000000
--- a/doc/src/qt4-arthur.qdoc
+++ /dev/null
@@ -1,336 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt4-arthur.html
- \title The Arthur Paint System
-
- \contentspage {What's New in Qt 4}{Home}
- \previouspage The Interview Framework
- \nextpage The Scribe Classes
-
- This document describes Qt 4's painting system, providing a
- comparison between the approaches used by Qt when rendering
- graphics in Qt 3 and Qt 4.
-
- \tableofcontents
-
- \section1 Architecture
-
- The Qt 4 Paint System is primarily based on the classes
- QPainter, QPaintDevice, and QPaintEngine. QPainter is the
- class used to perform drawing operations, such as drawLine()
- and drawRect(). QPaintDevice represents a device that can be
- painted on using a QPainter; both QWidget and QPixmap are
- QPaintDevices. QPaintEngine provides the interface that the
- painter uses to draw onto different types of devices.
-
- \section2 A Look Back at Qt 3
-
- In Qt 3, QPainter could be used to draw on widgets and pixmaps.
- (It could also be used to draw to printers on Windows and Mac OS
- X.) When other paint devices needed to be supported, such as
- QPrinter on X11, this was done by deriving from QPaintDevice and
- reimplementing the virtual function QPaintDevice::cmd(). A
- reimplemented paint device was treated as an external device.
-
- QPainter was capable of recognizing external devices and could
- serialize each paint operation to the reimplemented cmd()
- function. This allowed reimplementation of arbitrary devices, but
- the approach has some disadvantages which we have addressed in
- Qt 4. One of these is that an external device could not reuse any
- functionality implemented in QPainter since QPainter was tied to
- widget/pixmap painting on that platform. Supporting multiple
- device backends, such as OpenGL, was therefore inconvenient and
- not very efficient.
-
- This has led us to devise a more convenient and intuitive API for
- Qt 4.
-
- \section2 How Painting is Done in Qt 4
-
- In Qt 4 we have introduced the QPaintEngine abstract class.
- Implementations of this class provide the concrete functionality
- needed to draw to specific device types. The QPaintEngine class
- is only used internally by QPainter and QPaintDevice, and it is
- hidden from application programmers unless they reimplement their own
- device types for their own QPaintEngine subclasses. Qt currently
- provides paint engines for the following platforms and APIs:
-
- \list
- \o A pixel-based engine for the Windows platform that is
- also used to draw onto QImages on all platforms
- \o OpenGL on all platforms
- \o PostScript on Linux, Unix, and Mac OS X
- \o QuickDraw and CoreGraphics on Mac OS X
- \o X11 and the X Render Extension on Linux and Unix systems
- \omit
- \o QVFb, VNC, and LinuxFb for Qt for Embedded Linux
- \endomit
- \endlist
-
- To implement support for a new backend, you must derive from
- QPaintEngine and reimplement its virtual functions. You also need
- to derive from QPaintDevice and reimplement the virtual function
- QPaintDevice::paintEngine() to tell QPainter which paint engine
- should be used to draw on this particular device.
-
- The main benefit of this approach is that all painting follows the
- same painting pipeline. This means that adding support for new features
- and providing default implementations for unsupported ones has
- become much simpler.
-
- \section1 New Features in the Qt 4 Paint System
-
- \section2 Gradient Brushes
-
- With Qt 4 it is possible to fill shapes using gradient
- brushes. A gradient in this case is used to describe the transition
- from one color at a given point to different color at another point. A
- gradient can span from one color to another or over a
- number of colors by specifying multiple colors at positions in the
- gradient area. Qt 4 supports linear, radial, and conical gradients.
-
- Linear gradients are specified using two control points.
- Setting a linear gradient brush is done by creating a QLinearGradient
- object and setting it as a brush.
-
- \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 0
-
- The code shown above produces a pattern as show in the following
- pixmap:
-
- \img diagonalGradient.png
-
- Radial gradients are specified using a center, a radius, and a
- focal point. Setting a radial brush is done by creating a QRadialGradient
- object and setting it as a brush.
-
- \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 1
-
- The code shown above produces a pattern as shown in the following
- pixmap:
-
- \img radialGradient.png
-
- Conical gradients are specified using a center and a start
- angle. Setting a conical brush is done by creating a
- QConicalGradient object and setting it as a brush.
-
- \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 2
-
- The code shown above produces a pattern as shown in the following
- pixmap:
-
- \img conicalGradient.png
-
- \section2 Alpha-Blended Drawing
-
- With Qt 4 we support alpha-blended outlining and filling. The
- alpha channel of a color is defined through QColor. The alpha
- channel specifies the transparency effect, 0 represents a fully
- transparent color, while 255 represents a fully opaque color. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 3
-
- The code shown above produces the following output:
-
- \img alphafill.png
-
- Alpha-blended drawing is supported on Windows, Mac OS X, and on
- X11 systems that have the X Render extension installed.
-
-
- \section2 QPainter and QGLWidget
-
- It is now possible to open a QPainter on a QGLWidget as if it
- were a normal QWidget. One huge benefit from this is that we
- utilize the high performance of OpenGL for most drawing
- operations, such as transformations and pixmap drawing.
-
-
- \section2 Anti-Aliased Edges
-
- On platforms where this is supported by the native drawing API, we
- provide the option of turning on anti-aliased edges when drawing
- graphics primitives.
-
- \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 4
-
- This produces the following output:
-
- \img antialiased.png
-
- Anti-aliasing is supported when drawing to a QImage and on all
- systems, except on X11 when XRender is not present.
-
-
- \section2 Extensive Use of Native Graphics Operations
-
- Where this makes sense, Qt uses native graphics
- operations. The benefit we gain from this is that these operations
- can potentially be performed in hardware, giving significant
- speed improvements over many pure-software implementations.
-
- Among these are native transformations (Mac OS X and OpenGL),
- making painting with a world matrix much faster. Some pixmap
- operations have also been moved closer to the underlying
- hardware implementations.
-
-
- \section2 Painter Paths
-
- A painter path is an object composed of a number of graphical
- building blocks, such as rectangles, ellipses, lines, and curves.
- A painter path can be used for filling, outlining, and for clipping.
- The main advantage of painter paths over normal drawing operations
- is that it is possible to build up non-linear shapes which can be
- drawn later in one go.
-
- Building blocks can be joined in closed subpaths, such as a
- rectangle or an ellipse, or they can exist independently as unclosed
- subpaths, although an unclosed path will not be filled.
-
- Below is a code example on how a path can be used. The
- painter in this case has a pen width of 3 and a light blue brush. We
- first add a rectangle, which becomes a closed subpath. We then add
- two bezier curves, and finally draw the entire path.
-
- \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 5
-
- The code above produces the following output:
-
- \img pathexample.png
-
-
- \section2 Widget Double-Buffering
-
- In Qt 4, all widgets are double-buffered by default.
-
- In previous versions of Qt double-buffering was achieved by
- painting to an off-screen pixmap then copying the pixmap to the
- screen. For example:
-
- \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 6
-
- Since the double-buffering is handled by QWidget internally this
- now becomes:
-
- \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 7
-
- Double-buffering is turned on by default, but can be turned off for
- individual widgets by setting the widget attribute
- Qt::WA_PaintOnScreen.
-
- \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 8
-
- \section2 Pen and Brush Transformation
-
- In Qt 3, pens and brushes weren't affected by the painter's
- transformation matrix. For example, if you drew a rectangle with a
- pen width of 1 using a scaled painter, the resulting line width
- would still be 1. This made it difficult to implement features
- such as zooming and high-resolution printing.
-
- In Qt 4, pens and brushes honor the painter's transformation
- matrix.
-
- Note that this feature is still in development and not yet
- supported on all platforms.
-
- \section2 Custom Filled Pens
-
- In Qt 4, it is possible to specify how an outline should be
- filled. It can be a solid color or a QBrush, which makes it
- possible to specify both texture and gradient fills for both
- text and outlines.
-
- \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 9
-
- The code above produces the following output:
-
- \img gradientText.png
-
- \section2 QImage as a Paint Device
-
- A great improvement of Qt 4 over previous versions it that it now
- provides a pixel-based raster paint engine which allows users to
- open a painter on a QImage. The QImage paint engine supports the
- full feature set of QPainter (paths, antialiasing, alphablending,
- etc.) and can be used on all platforms.
-
- One advantage of this is that it is possible to guarantee the
- pixel exactness of any drawing operation in a platform-independent
- way.
-
- Painting on an image is as simple as drawing on any other paint device.
-
- \snippet doc/src/snippets/code/doc_src_qt4-arthur.qdoc 10
-
- \section2 SVG Rendering Support
-
- \l{Scalable Vector Graphics} (SVG) is an language for describing both static
- and animated two-dimensional vector graphics. Qt includes support for the
- \l{SVG 1.2 Tiny Static Features}{static features} of \l{SVG 1.2 Tiny}, taking
- advantage of the improved paint system in Qt 4. SVG drawings can be rendered
- onto any QPaintDevice subclass, such as QWidget, QImage, and QGLWidget, to
- take advantage of specific advantages of each device. This approach gives
- developers the flexibility to experiment, in order to find the best solution
- for each application.
-
- \image svg-image.png
-
- Since SVG is an XML-based format, the QtXml module is required to read SVG
- files. For this reason, classes for SVG handling are provided separately in
- the QtSvg module.
-
- Displaying an SVG drawing in an application is as simple as displaying a
- bitmap image. QSvgWidget is a display widget that can be placed in an
- appropriate place in a user interface, and new content can be loaded as
- required. For example, a predetermined file can be loaded and displayed in
- a widget with little effort:
-
- \snippet doc/src/snippets/qsvgwidget/main.cpp 0
-
- For applications with more specialized requirements, the QSvgRenderer class
- provides more control over the way SVG drawings are rendered and animated.
-*/
diff --git a/doc/src/qt4-designer.qdoc b/doc/src/qt4-designer.qdoc
deleted file mode 100644
index 0bfe03490..000000000
--- a/doc/src/qt4-designer.qdoc
+++ /dev/null
@@ -1,298 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt4-designer.html
-
- \title The New Qt Designer
-
- \contentspage {What's New in Qt 4}{Home}
- \previouspage The Qt 4 Main Window Classes
- \nextpage Cross-Platform Accessibility Support in Qt 4
-
- \QD has been completely re-written based on our experience with
- the previous versions of the product for Qt 3. One of the main new
- ideas behind this new version is to release the application as a
- collection of interchangeable components that include the property
- editor, the widget box, and other useful tools for creating
- graphical user interfaces with Qt. These components can either be
- used together in the \QD application, or independently integrated
- into other systems. As a result, certain features such as the
- project editor and code editor have been removed from the version
- included with this release.
-
- The current version of \QD is near feature complete and can be used for
- many tasks. However, it is still under continuous development. This
- document will explain what is already in place.
-
- See also the \l{Qt Designer Manual}.
-
- \tableofcontents
-
- \section1 The Current State of Qt Designer
-
- When used as a standalone application, \QD includes a number of
- components that work together to provide a flexible GUI design
- tool. Widgets and dialog windows can be composed using a
- form-based interface that fully supports drag and drop, clipboard
- operations, and an undo/redo stack.
-
- This version of \QD introduces a number of editing modes to make
- different types of editing more natural. Each editing mode
- displays the form in an appropriate way for that mode, and
- provides a specialized user interface for manipulating its
- contents. The current editing modes are Widget Editing, Signals
- and Slots Editing, Buddy Editing, and Tab Order Editing.
-
- \section2 User Interface Features
-
- \table
- \row \i \inlineimage designer-main-window.png
- \i \bold{Widget Box}
-
- The Widget Box displays a categorized list of widgets and other
- objects that can be placed on a form using drag and drop.
-
- When \QD is in multi-window mode, the window containing the Widget
- Box also holds the main menu and the tool bar. When in workbench
- mode, the Widget Box becomes an independent window within the \QD
- workspace.
-
- The contents of the Widget Box are defined in an XML file that
- holds a collection of .ui documents for standard Qt widgets. This
- file can be extended, making it possible to add custom widgets to
- the Widget Box.
- \endtable
-
- \table
- \row \i \bold{Property Editor}
-
- The Property Editor allows designers to edit most properties of
- widgets and layout objects. The property names and values are
- presented in an editable tree view that shows the properties of
- the currently selected object.
-
- Certain resources, such as icons, can be configured in the
- Property Editor. Resources can be taken from any currently
- installed resource files, making it easier to design
- self-contained components.
-
- \i \inlineimage designer-property-editor.png
- \endtable
-
- \section2 Editing Features
-
- \QD allows form designers to work on different aspects of their forms by
- switching between specialized editing modes. Tools for editing widget
- properties, resources, and actions provide context-sensitive information
- about the forms being edited.
-
- \table
- \row \i \inlineimage designer-choosing-form.png
- \i \bold{Form Templates}
-
- Form templates provide ready-to-use forms for various types of widgets,
- such as QWidget, QDialog, and QMainWindow. Custom templates based on
- these widgets can also be created.
-
- Templates can contain child widgets and layouts. Designers can
- save time by creating templates for the most common user interface
- features for repeated use.
- \endtable
-
- \table
- \row
- \i \bold{Widget Editing Mode}
-
- The new \QD allows widgets to be dropped into existing layouts on
- the form. Previously, it was necessary to break layouts in order
- to add new widgets to them.
-
- \QD now supports more direct manipulation of widgets:
- You can clone a widget by dragging it with the \key CTRL key held down, and
- it is even possible to drag widgets between forms.
-
- In-place widget editors provide specialized editing facilities for
- the most-used widget properties.
-
- \i \inlineimage designer-editing-mode.png
- \endtable
-
- \table
- \row
- \i \inlineimage designer-connection-mode.png
- \i \bold{Signals and Slots Editing Mode}
-
- \QD now employs a "wired" approach when representing and editing
- connections between objects on a form. The Signal and Slots
- Editing mode displays all the signal and slot connections on your
- form as arrows. These arrows can be manipulated visually, and
- provide the user with an overview of the form's connection logic.
-
- Connections can be made between objects on a form and the form itself.
- This is particularly useful when designing dialogs.
- \endtable
-
- \table
- \row
- \i \bold{Buddy Editing Mode}
-
- Widgets that cannot accept keyboard input are often given buddy
- widgets that will take the keyboard focus on their behalf.
-
- In Buddy Editing mode, \QD provides a similar approach to that
- used in the Signals and Slots Editing mode to show the
- relationships between widgets and their buddies.
-
- \i \inlineimage designer-buddy-mode.png
- \endtable
-
- \table
- \row
- \i \inlineimage designer-tab-order-mode.png
- \i \bold{Tab Order Mode}
-
- In this mode, users can specify the order in which input widgets accept
- the keyboard focus.
-
- The way that the tab order is defined follows the approach taken
- in Qt 3's version of \QD; The default tab order is based on the
- order in which widgets are constructed.
-
- \endtable
-
- \table
- \row
- \i \bold{The Resource Editor}
-
- The new \QD fully supports The Qt Resource System, and provide the
- Resource Editor to help designers and developers manage the
- resources that are needed by their applications.
-
- Using the Resource Editor, resources can be associated with a
- given form, and also modified and extended throught the editor's
- file browser style interface.
-
- The Resource Editor uses files that are processed by various
- components of the \l{The Qt Resource System}{Qt Resource System}
- to ensure that all required resources are embedded in the
- application.
-
- \i \inlineimage designer-resources-editing.png
- \endtable
-
- \table
- \row
- \i \inlineimage designer-action-editor.png
- \i \bold{The Action Editor}
-
- With the release of Qt 4.1, \QD introduces the Action Editor
- simplifying the management of actions when creating main window
- applications.
-
- When creating a main window, you can add a menu bar and toolbars
- using \QD's context menu. Once you have the menu bar or a toolbar
- in place, you can create and add actions using the Action Editor.
-
- \endtable
-
- \section2 Plugin Support
-
- \table
- \row
- \i \inlineimage worldtimeclockplugin-example.png
- \i \bold{Custom Widgets}
-
- Plugins can be used to add new custom widgets, special editors, and
- support for widgets from the Qt 3 support library.
-
- Support for custom widget plugins allows user interface designers to
- use application-specific widgets in their designs as early as possible
- in the development process.
-
- \QD handles custom widgets in the same way as standard Qt widgets,
- and allows custom signals and slots to be connected to other objects
- from within Signals and Slots Editing mode.
- \endtable
-
- \table
- \row
- \i \bold{The QtDesigner Module}
-
- The new modular \QD is designed to be integrated into other environments
- and extended with custom components.
-
- The QtDesigner Module is a library that developers can use to
- write extensions and plugins for \QD, and enables \QD components
- to be embedded into Integrated Development Environments
- (IDEs).
-
- With the release of Qt 4.1 the QtDesigner Module is fully
- documented. The release also provides several new examples using
- the QtDesigner API to create task menu extensions and custom
- multi-page widgets (i.e. container extensions).
-
- \i \inlineimage designer-manual-taskmenuextension.png
- \endtable
-
- \section1 Run-Time Support for Forms
-
- With the Qt 4.1 release, the new QtUiTools module is introduced to
- provide classes handling forms created with \QD.
-
- Currently the module only contains the QUiLoader class.
-
- QUiLoader can be used by standalone applications to
- dynamically create form-based user interfaces at run-time. This
- library can be statically linked with applications and
- redistributed under the same terms as Qt.
-
- \table
- \row
- \i \inlineimage calculatorbuilder-example.png
- \i \bold{Dynamic Form Creation}
-
- The QtUiTools library lets developers dynamically construct user interfaces at
- run-time using the same techniques as \QD. Since forms can contain custom
- widget plugins, the loading mechanism can be customized to search for
- third party or application-specific plugins.
- \endtable
-*/
diff --git a/doc/src/qt4-interview.qdoc b/doc/src/qt4-interview.qdoc
deleted file mode 100644
index 158de8798..000000000
--- a/doc/src/qt4-interview.qdoc
+++ /dev/null
@@ -1,293 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt4-interview.html
- \title The Interview Framework
-
- \contentspage {What's New in Qt 4}{Home}
- \previouspage The Tulip Container Classes
- \nextpage The Arthur Paint System
-
- The Interview classes provide a model/view framework for Qt
- applications based on the well known Model-View-Controller design
- pattern. In this document, we will describe Qt's model/view
- architecture, provide some examples, and show the improvements
- offered over Qt 3's item view classes.
-
- \tableofcontents
-
- \section1 Overview of The Model/View Architecture
-
- The model/view architecture is a variation of the Model-View-Controller
- (MVC) design pattern, originating from Smalltalk, that is often used when
- building user interfaces.
-
- In the model/view architecture, the view and the controller objects are
- combined. This still separates the way that data is stored from the way
- that it is presented to the user, but provides a simpler framework based
- on the same principles. This separation makes it possible to display the
- same data in several different views, and to implement new types of views,
- without changing the underlying data structures.
-
- User input is handled by \e delegates. The advantage of this approach is
- that it allows rendering and editing of individual items of data to be
- customized to suit each data type in use.
-
- \table
- \row \i \inlineimage modelview-overview.png
- \i \bold{The model/view architecture}
-
- The model communicates with a source of data, providing an \e interface
- for the other components in the architecture. The nature of the
- communication depends on the type of data source, and the way the model
- is implemented.
-
- The view obtains \e{model indexes} from the model; these are references
- to items of data. By supplying model indexes to the model, the view can
- retrieve items of data from the data source.
-
- In standard views, a \e delegate renders the items of data. When an item
- is edited, the delegate communicates with the model directly using
- model indexes.
- \endtable
-
- \section1 Model/View Classes
-
- On a fundamental level, the Interview classes define the interfaces and
- common functionality for models, views, and delegates. All implemented
- components subclass QAbstractItemModel, QAbstractItemView, or
- QAbstractItemDelegate. The use of a common API ensures a level of
- interoperability between the components.
-
- \image standard-views.png
-
- Interview provides ready-to-use implementations of views for table,
- tree, and list widgets: QTableView, QTreeView, and QListView.
- These standard views are suitable for displaying the most common
- types of data structures used in applications, and can be used with
- the ready-made models supplied with Qt:
-
- \list
- \o QStandardItemModel is a minimal convenience model that developers
- can use to manage items of data.
- \o QDirModel provides directory information for use with QListView and
- QTreeView.
- \o QStringListModel is a convenience model that can be used to hold
- strings for views such as QListView and QComboBox.
- \endlist
-
- Two specialized abstract models are provided that can be subclassed
- and extended (see the
- \l{model-view-programming.html#related-examples}{Model/View Programming}
- examples):
-
- \list
- \o QAbstractTableModel is a useful starting point for providing a custom
- model that can be used with QTableView.
- \o QAbstractListModel can be subclassed to produce a list-based model
- for use with QListView.
- \endlist
-
- Operations on items, such as filtering and sorting, are handled by \e{proxy
- models} that allow views to display processed data without having to
- copy or modify data obtained from a source model. Interview provides
- the QSortFilterProxyModel class to allow items of data from a source model
- to be sorted and filtered before they are supplied to views.
-
- Developers who are familiar with the conventional list, tree, and table
- widgets may find QListWidget, QTreeWidget, and QTableWidget useful.
- These present a simplified interface to the views that does not require a
- knowledge of the underlying model/view architecture.
-
- For details about how to use the model/view classes, see the
- \l{Model/View Programming} document.
-
- See also the \l{The Qt 4 Database GUI Layer}{Database GUI Layer} document
- for information about Qt 4's database models.
-
- \section1 Example Code
-
- To illustrate how the Interview classes are used, we present two
- examples that show different aspects of the model/view architecture.
-
- \section2 Sharing a Model Between Views
-
- In this example, we display the contents of a model using two
- different views, and share the user's selection between
- them. We will use the QDirModel supplied with Qt because it
- requires very little configuration, and provides existing data to
- the views.
-
- The main() function for this example demonstrates all the
- principles involved in setting up a model and two views. We also
- share the selection between the two views:
-
- \snippet doc/src/snippets/shareddirmodel/main.cpp 1
-
- In the above function, we construct a directory model to display
- the contents of a default directory. The two views are constructed
- and given the same model to work with. By default, each view will
- maintain and display its own selection of items from the model,
- so we explicitly create a new selection that is shared between the
- tree view and the list view. As a result, changes to the selection
- in either of these views will automatically cause the selection in
- the other to change.
-
- \image interview-shareddirmodel.png
-
- The model/view architecture allows us to replace the QDirModel in
- this example with a completely different model, one that will perhaps
- obtain data from a remote server, or from a database.
-
- \section2 Creating a Custom Model
-
- In this example, we display items of data obtained from a custom list
- model using a standard view. The custom model is a subclass of
- QAbstractListModel and provides implementations of a core set of
- functions.
-
- The complete declaration of our model is as follows:
-
- \snippet doc/src/snippets/stringlistmodel/model.h 0
- \snippet doc/src/snippets/stringlistmodel/model.h 1
- \codeline
- \snippet doc/src/snippets/stringlistmodel/model.h 5
-
- The model takes a list of strings when constructed, and supplies these
- to views as required. Since this is only a simple read-only model, we
- only need to implement a few functions.
-
- The underlying data structure used to hold the strings is a QStringList.
- Since the model maps each item in the list to a row in the model, the
- rowCount() function is quite simple:
-
- \snippet doc/src/snippets/stringlistmodel/model.cpp 0
-
- The data() function returns an item of data for each model index
- supplied by a view:
-
- \snippet doc/src/snippets/stringlistmodel/model.cpp 1
-
- The data() function returns a QVariant containing the information
- referred to by the model index. Items of data are returned to the view,
- but only if a number of checks are satisfied; for example, if the view
- specifies an invalid model index, the model indicates this by returning
- an invalid QVariant.
-
- Vertical and horizontal headers are supplied by the headerData()
- function. In this model, the value returned for these items is the row
- or column number, depending on the header:
-
- \snippet doc/src/snippets/stringlistmodel/model.cpp 2
-
- We only include an excerpt from the main() function for this short
- example:
-
- \snippet doc/src/snippets/stringlistmodel/main.cpp 1
- \dots
- \snippet doc/src/snippets/stringlistmodel/main.cpp 3
-
- We create a string list to use with the model, and we supply it to the
- model when it is constructed. The information in the string list is
- made available to the view via the model.
-
- \image stringlistmodel.png
-
- This example shows that it can be easy to populate views with data
- from a simple model. The standard models and views planned for
- Qt 4 will make the process even easier, and the convenience widgets
- supplied provide support for the classic item-based approach.
-
- \section1 What's Changed Since Qt 3?
-
- The table and item view classes in Qt 3 implemented widgets that
- both stored data and presented it to the user. These classes were
- designed to be easy-to-use and consistent, but were sometimes
- difficult to customize and extend.
-
- The equivalent classes in Qt 4 are designed to be extensible while
- remaining easy-to-use; the introduction of the model/view
- architecture ensures that they will be more consistent than their
- predecessors. The view classes provided can be summarized in the
- following way:
-
- \list
- \i QListView class provides a view widget that looks similar to
- Qt 3's QListBox widget, but displays data provided by a model.
- It can also be used to display icons in a similar way to Qt 3's
- QIconView.
- \i The QTableView class is a view widget that displays tabular data
- like Qt 3's QTable widget, but uses data provided by a model.
- \i The QTreeView class provides a view widget that behaves like
- Qt 3's QListView widget, except that it displays data provided
- by a model.
- \endlist
-
- Since the model takes responsibility for supplying items of data,
- and the view takes care of their presentation to the user, we do
- not require item classes to represent individual items.
- Delegates handle the painting and editing of data obtained from
- the model.
-
- Qt continues to provide a number of classic item view widgets with
- familiar item-based interfaces that are not based on compatibility
- classes:
-
- \list
- \i The QListWidget class provides a widget to display a
- list of items, as found in Qt 3's QListBox class.
- \i The QTreeWidget class implements the equivalent of Qt 3's
- QListView class.
- \i The QTableWidget class provides comparable functionality to
- Qt 3's QTable class.
- \endlist
-
- Each of the convenience classes have a corresponding item class:
- QListWidgetItem, QTreeWidgetItem, and QTableWidgetItem are the Qt 4
- equivalents of Qt 3's QListBoxItem, QListViewItem, and QTableItem
- respectively.
-
- The move towards a model/view architecture presents both challenges
- and opportunities for developers. Although the approach may appear to
- be rather powerful for simple applications, it encourages greater
- reuse of components within applications.
-*/
diff --git a/doc/src/qt4-intro.qdoc b/doc/src/qt4-intro.qdoc
index 45a95b205..fb1d0e42d 100644
--- a/doc/src/qt4-intro.qdoc
+++ b/doc/src/qt4-intro.qdoc
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -78,6 +78,28 @@
The following features have been added to Qt since the first release of Qt 4:
+ In Qt 4.5:
+ \list
+ \o The WebKit browser engine included with Qt has been
+ upgraded to the latest upstream (trunk) version of WebKit,
+ bringing the latest features and improvements to Qt applications.
+ \o Qt for Mac OS X has been substantially rewritten to use
+ Apple's Cocoa API, enabling Qt applications to be deployed on
+ 64-bit Macintosh hardware.
+ \o The QtXmlPatterns module has been extended to cover XSLT, a
+ transformation language for XML documents.
+ \o Qt Script introduced its debugger,
+ providing error reporting for scripts, and to let users track down
+ bugs in their own scripts.
+ \o Qt 4.5 includes support for writing rich text documents as
+ OpenDocument files via the newly-introduced QTextDocumentWriter
+ class.
+ \o Qt Linguist can load and edit multiple translation
+ files simultaneously.
+ \o Support for ARGB top-level widgets (i.e., translucent
+ windows).
+ \endlist
+
In Qt 4.4:
\list
\o \l{QtWebkit Module}{Qt WebKit integration}, making it possible for developers
@@ -87,7 +109,7 @@
\o \l{QtXmlPatterns Module}{XQuery and XPath} support, providing facilities for
XML processing beyond that supported by the QtXml module.
\o Support for embedded widgets in \l{Graphics View} scenes.
- \o The \l{Threading and Concurrent Programming}{QtConcurrent framework} for
+ \o The \l{Thread Support in Qt}{QtConcurrent framework} for
concurrent programming using Qt paradigms and threading features.
\o An \l{QtHelp Module}{improved help system} that can be used in conjunction
with Qt Assistant or as an independent help resource manager.
@@ -435,6 +457,221 @@
*/
/*!
+ \page qt4-6-intro.html
+ \title What's New in Qt 4.6
+
+ Qt 4.6 provides many improvements and enhancements over the
+ previous releases in the Qt 4 series. This document covers the
+ most important features in this release, separated by category.
+
+\omit
+ A comprehensive list of changes between Qt 4.5 and Qt 4.6 is
+ included in the \c changes-4.6.0 file
+ \l{http://qt.nokia.com/developer/changes/changes-4.6.0}{available
+ online}. A \l{Known Issues in %VERSION%}{list of known issues}
+ for this release is also available.
+
+ Changes between this release and the previous release are provided
+ in the \c{changes-%VERSION%} file (also
+ \l{http://qt.nokia.com/developer/changes/changes-%VERSION%}{available online}).
+\endomit
+
+ A list of other Qt 4 features can be found on the \bold{\l{What's
+ New in Qt 4}} page.
+
+ \bold{Highlights}
+
+ \tableofcontents
+
+ \section1 Support for Symbian
+
+ Qt 4.6 is the first release to include support for the Symbian
+ platform, with integration into the S60 framework. The port to
+ Symbian and S60 provides all functionality required to develop
+ rich end-user applications for devices running S60 3.1 and
+ later.
+
+ See the \l{The Symbian platform - Introduction to Qt} for more information.
+
+ \section1 Animation Framework
+
+ The animation framework helps build highly animated,
+ high-performance GUIs without the hassle of managing complex
+ structures, timers, and easing curves, not to mention the large
+ state graphs that all animated GUIs tend to be full of.
+
+ The framework makes it easy to animate \l{QObject}s, including
+ QWidgets, by allowing Qt properties to be animated. It also allows
+ creating custom animations and interpolation functions. Graphics
+ views are not left out; one can animate \l{QGraphicsWidget}s and
+ new \l{QGraphicsObject}s which inherit from QGraphicsItem
+ (and thereby enable properties).
+
+ Animations are controlled using easing curves and can be grouped
+ together. This enables animations of arbitrary complexity.
+
+ The API is easy to grasp with functions such as start(), stop(),
+ pause(), and currentTime(). Here is an image from one of the
+ examples that come with the framework:
+
+ \image whatsnewanimatedtiles.png
+
+ The animation framework also plugs into the new Qt Statemachine by
+ allowing an animation to be played when transitions are triggered.
+ The state machine framework is introduced in 4.6 and is described
+ below.
+
+ See \l{The Animation Framework} documentation for more information.
+
+ \section1 State Machine Framework
+
+ The state machine framework provides a robust state chart
+ implementation based on Harel statecharts and SCXML. Qt's API lets
+ you construct such state graphs and execute them. The key benefits
+ of a state machine are:
+
+ \list
+ \o Simplify complex application semantics.
+ \o Use of states to reduce code bloat.
+ \o Use states to improve maintainability.
+ \o Makes event-driven programming robust and more
+ reusable.
+ \endlist
+
+ It is especially the last item here that makes using a state
+ machine worthwhile. A key characteristic of event-driven systems
+ (such as Qt applications) is that behavior often depends not only
+ on the last or current event, but also the events that preceded
+ it. With statecharts, this information is easy to express.
+
+ The framework fits neatly into Qt by allowing transitions to
+ trigger on signals and \l{QEvent}s. By inserting animations into
+ the state machine, it is also easier to use the framework for
+ animating GUIs, for instance.
+
+ See \l{The State Machine Framework} documentation for more infromation.
+
+ \section1 Multi-Touch and Gestures
+
+ Support for multi-touch input enables users to interact with many
+ parts of a user interface at the same time, and provides the basis
+ for gestures. Additional infrastructure for gesture recognition
+ allows a sequence of touch inputs to be combined to create gestures
+ that can be used to activate features and trigger actions in an
+ application.
+
+ \image gestures.png
+
+ This new functionality brings a number of benefits:
+
+ \list
+ \o Allows users to interact with applications in more natural ways.
+ \o Simplifies finger-based interaction with UI components.
+ \o Combines support for common basic gestures and multi-touch gestures
+ in a single general framework.
+ \o Enables extensibility by design.
+ \endlist
+
+ See the QTouchEvent class documentation for more information on multi-touch
+ input and QGestureEvent for gestures.
+
+ \section1 DOM access API
+
+ Web pages and XML both have very complex document object models.
+ The W3C selector API provides a very simple way to access and
+ manipulate such structures. This API makes it intuitive to access
+ DOM, helps reuse CSS selector knowledge, and gives little
+ maintenance or footprint overhead.
+
+ \snippet webkitsnippets/webelement/main.cpp FindAll
+
+ See the QWebElement class documentation for more information.
+
+ \section1 Performance Optimizations
+
+ As always, Qt continuously strive to optimize its performance.
+ For this release, we have:
+
+ \list
+ \o Rewritten the QGraphicsView rendering algorithm.
+ \o Made QPixmapCache support efficient Key datastructure.
+ \o Reduced overhead in QNetworkAccessManager.
+ \o Added the QContiguousCache class, which provides efficient caching of
+ contiguous data.
+ \o Added support for hardware-accelerated rendering through
+ \l{OpenVG Rendering in Qt}{OpenVG}
+ \o Removed Win9x support.
+ \endlist
+
+ \section1 Graphics Effects
+
+ Effects can be used to alter the appearance of UI elements such as
+ \l{QGraphicsItem}s and \l{QWidget}s. A couple of standard effects such
+ as blurring, colorizing and drop shadow are provided, and it is
+ possible to implement custom effects.
+
+ \table
+ \row
+ \o{2,1} \img graphicseffect-plain.png
+ \row
+ \o \img graphicseffect-blur.png
+ \o \img graphicseffect-colorize.png
+ \row
+ \o \img graphicseffect-opacity.png
+ \o \img graphicseffect-drop-shadow.png
+ \endtable
+
+ See the QGraphicsEffect class documentation for more information.
+
+ \section1 XML Schema Validation
+
+ The QtXmlPatterns module can now be used to validate schemas, either
+ through C++ APIs in the Qt application, or using the xmlpatternsvalidator
+ command line utility. The implementation of XML Schema Validation supports
+ the specification version 1.0 in large parts.
+
+ \img xml-schema.png
+
+ See the \l{XML Processing} and QXmlSchema class documentation for more
+ information.
+
+ \section1 Qt3D enablers
+
+ As more of Qt, and more of the applications built on Qt go 3D,
+ API's should be provided to simplify this. Mainly, the new API
+ aims to make it more easy to create 3D applications with OpenGL.
+ It will also unify the Qt OpenGL codebase, and enable
+ cross-platform 3D codebase.
+
+ The main features of the Qt3D enablers are currently: Math
+ primitives for matrix multiplication, vectors, quaternions
+ (client-side), and API for vertex and fragment shaders, GLSL/ES.
+ Future research will, among other things include stencils,
+ scissors, vertex buffers and arrays, texture manipulation, and
+ geometry shaders.
+
+ \section1 Multimedia Services
+
+ Qt 4.6 comes with new classes for handling audio. These classes
+ provide low-level access to the system's audio system. By
+ specifying the audio format (QAudioFormat) and supplying audio
+ data through a QIODevice, you get direct access to the
+ functionality of the sound device. The API also comes with
+ functions to query audio devices for which audio formats they
+ support.
+
+ See the \l{QtMultimedia Module} documentation for more information.
+
+ \section1 New Classes, Functions, Macros, etc.
+
+ Links to new classes, functions, macros, and other items
+ introduced in Qt 4.6.
+
+ \sincelist 4.6
+
+*/
+
+/*
\page qt4-5-intro.html
\title What's New in Qt 4.5
diff --git a/doc/src/qt4-mainwindow.qdoc b/doc/src/qt4-mainwindow.qdoc
deleted file mode 100644
index 7c48b95a9..000000000
--- a/doc/src/qt4-mainwindow.qdoc
+++ /dev/null
@@ -1,250 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt4-mainwindow.html
- \title The Qt 4 Main Window Classes
-
- \contentspage {What's New in Qt 4}{Home}
- \previouspage The Scribe Classes
- \nextpage The New Qt Designer
-
- Qt 4 introduces a new set of main window classes that supersede the
- Qt 3 main window classes, providing a more efficient implementation
- while remaining easy to use.
-
- \tableofcontents
-
- \section1 Overview of the Main Window Classes
-
- The main window-related classes have been redesigned to satisfy a
- number of requirements, addressing issues raised by our customers and
- internal developers. The aim of this redesign is to provide a more
- consistent and efficient framework for main window management.
-
- \section1 The Main Window Classes
-
- Qt 4 provides the following classes for managing main windows and
- associated user interface components:
-
- \list
- \o QMainWindow remains the central class around which applications
- can be built. The interface to this class has been simplified, and
- much of the functionality previously included in this class is now
- present in the companion QDockWidget and QToolBar classes.
-
- \o QDockWidget provides a widget that can be used to create
- detachable tool palettes or helper windows. Dock widgets keep track
- of their own properties, and they can be moved, closed, and floated
- as external windows.
-
- \o QToolBar provides a generic toolbar widget that can hold a
- number of different action-related widgets, such as buttons,
- drop-down menus, comboboxes, and spin boxes. The emphasis on a
- unified action model in Qt 4 means that toolbars cooperate well
- with menus and keyboard shortcuts.
- \endlist
-
- \section1 Example Code
-
- Using QMainWindow is straightforward. Generally, we subclass
- QMainWindow and set up menus, toolbars, and dock widgets inside
- the QMainWindow constructor.
-
- To add a menu bar to the main window, we simply create the menus, and
- add them to the main window's menu bar. Note that the
- QMainWindow::menuBar() function will automatically create the menu bar
- the first time it is called. You can also call
- QMainWindow::setMenuBar() to use a custom menu bar in the main window.
-
- \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 0
- \dots
- \snippet examples/mainwindows/menus/mainwindow.cpp 5
- \dots
-
- Once actions have been created, we can add them to the main window
- components. To begin with, we add them to the pop-up menus:
-
- \snippet examples/mainwindows/menus/mainwindow.cpp 10
- \dots
- \snippet examples/mainwindows/menus/mainwindow.cpp 11
- \dots
-
- The QToolBar and QMenu classes use Qt's action system to provide a
- consistent API. In the above code, some existing actions were added to
- the file menu with the QMenu::addAction() function. QToolBar also
- provides this function, making it easy to reuse actions in different
- parts of the main window. This avoids unnecessary duplication of work.
-
- We create a toolbar as a child of the main window, and add the desired
- actions to it:
-
- \snippet examples/mainwindows/sdi/mainwindow.cpp 0
- \dots
- \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 1
-
- In this example, the toolbar is restricted to the top and bottom
- toolbar areas of the main window, and is initially placed in the
- top tool bar area. We can see that the actions specified by \c
- newAct and \c openAct will be displayed both on the toolbar and in
- the file menu.
-
- QDockWidget is used in a similar way to QToolBar. We create a
- dock widget as a child of the main window, and add widgets as children
- of the dock widget:
-
- \snippet doc/src/snippets/dockwidgets/mainwindow.cpp 0
-
- In this example, the dock widget can only be placed in the left and
- right dock areas, and it is initially placed in the left dock area.
-
- The QMainWindow API allows the programmer to customize which dock
- widget areas occupy the four corners of the dock widget area. If
- required, the default can be changed with the
- QMainWindow::setCorner() function:
-
- \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 2
-
- The following diagram shows the configuration produced by the above code.
- Note that the left and right dock widgets will occupy the top and bottom
- corners of the main window in this layout.
-
- \image mainwindow-docks-example.png
-
- Once all of the main window components have been set up, the central widget
- is created and installed by using code similar to the following:
-
- \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 3
-
- The central widget can be any subclass of QWidget.
-
- \section1 What's Changed since Qt 3?
-
- The main window classes in Qt 4 adds new functionality, mainly to
- the dock widgets and toolbars. We have also made changes to the
- design of the framework.
-
- Although the QMainWindow class in Qt 3 provided support for
- toolbars, dock widgets, and other standard user interface
- components, its design meant that these items were managed
- through a large number of QMainWindow member functions. In Qt 4,
- the QMainWindow class delegates many of the management tasks to
- QDockWidget and QToolBar (allowing more consistent behavior to be
- defined and implemented).
-
- The dock widget and toolbar classes are now separated into
- independent classes. (write some more here)
-
- (It is intended that these changes allow more consistent behavior
- to be defined and implemented (which? example). In
- response to feedback from customers, we hope to improve these classes
- even further.)
-
- \section2 New Functionality
-
- Dock widgets are animated when docking or
- detaching from a dock area. The dock areas will also adjust their
- size to show where the dock widget will dock when it hovers over
- it. This animation can be turned off with \c setAnimated().
-
- By default, dock widgets are added to the dock areas in a single
- row. By setting nesting enabled with \c setDockNestingEnabled(),
- the widgets can be added both vertically and horizontally.
-
- Two dock widgets can occupy the same space in a dock area. The user
- can then choose which widget that is visible with a tab bar that
- is located below the widgets. The QMainWindow::tabifyDockWidget()
- joins two tab widgets in such a tabbed dock area. (revise the
- entire paragraph)
-
- \section2 Independent QDockWidget And QToolBar Classes
-
- Toolbar and dock window functionality is provided by two independent
- classes: QToolBar and QDockWidget. Toolbars and dock widgets
- reside in separate areas, with toolbars outside the dock widget
- area. This behavior differs from the Qt 3 behavior, where
- QToolBar inherited functionality from QDockWidget, and both types of
- component shared the same areas. The result is a more consistent
- and predictable experience for users. Toolbars and dock widgets
- provide feedback while being dragged into their new positions.
-
- \image mainwindow-docks.png
-
- The diagram above shows the layout of a main window that contains both
- toolbars and dock widgets. Each corner area can be used by either
- of the adjacent dock widget areas, allowing dock widget behavior and
- main window layout to be specified precisely.
-
- Toolbars and dock widgets are child widgets of the main window. They
- are no longer reparented into a dock area widget by the main window.
- Instead, layouts are used to manage the placement of toolbars and dock
- widgets. One consequence is that the old QDockArea class is no
- longer required in Qt 4.
-
- \section2 Code Change Examples
-
- QMainWindow retains the menuBar() function, but menus are always
- constructed using QAction objects. All kinds of menus are
- constructed using the general QMenu class.
-
- Qt 3:
- \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 4
- Qt 4:
- \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 5
-
- Toolbars follow the same pattern as menus, with the new, more
- consistent behavior:
-
- Qt 3:
- \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 6
- Qt 4:
- \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 7
-
- The behavior of dock widgets is now configured through the member
- functions of QDockWidget. For example, compare the old and new ways
- of creating a dock widget in the dock area on the left hand side of the
- main window.
-
- In Qt 3:
- \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 8
- In Qt 4:
- \snippet doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc 9
-*/
diff --git a/doc/src/qt4-network.qdoc b/doc/src/qt4-network.qdoc
deleted file mode 100644
index 36fd46a6b..000000000
--- a/doc/src/qt4-network.qdoc
+++ /dev/null
@@ -1,243 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt4-network.html
- \title The Network Module in Qt 4
-
- \contentspage {What's New in Qt 4}{Home}
- \previouspage The Qt 4 Database GUI Layer
- \nextpage The Qt 4 Style API
-
- The network module in Qt 4 provides some new features, such as
- support for internationalized domain names, better IPv6 support,
- and better performance. And since Qt 4 allows us to break binary
- compatibility with previous releases, we took this opportunity to
- improve the class names and API to make them more intuitive to
- use.
-
- \tableofcontents
-
- \section1 General Overview
-
- Compared to Qt 3, the network module in Qt 4 brings the following
- benefits:
-
- \list
- \o The Qt 4 network classes have more intuitive names and APIs.
- For example, QServerSocket has been renamed QTcpServer.
- \o The entire network module is \l{reentrant}, making it
- possible to use them simultaneously from multiple threads.
- \o It is now possible to send and receive UDP datagrams and to
- use synchronous (i.e., blocking) sockets without having to
- use a low-level API (QSocketDevice in Qt 3).
- \o QHostAddress and QHostInfo support internationalized domain names
- (RFC 3492).
- \o QUrl is more lightweight and fully supports the latest URI
- specification draft.
- \o UDP broadcasting is now supported.
- \endlist
-
- The Qt 4 network module provides fundamental classes for writing
- TCP and UDP applications, as well as higher-level classes that
- implement the client side of the HTTP and FTP protocols.
-
- Here's an overview of the TCP and UDP classes:
-
- \list
- \o QTcpSocket encapsulates a TCP socket. It inherits from
- QIODevice, so you can use QTextStream and QDataStream to read
- or write data. It is useful for writing both clients and
- servers.
- \o QTcpServer allows you to listen on a certain port on a
- server. It emits a
- \l{QTcpServer::newConnection()}{newConnection()} signal every
- time a client tries to connect to the server. Once the
- connection is established, you can talk to the client using
- QTcpSocket.
- \o QUdpSocket is an API for sending and receiving UDP datagrams.
- \endlist
-
- QTcpSocket and QUdpSocket inherit most of their functionality
- from QAbstractSocket. You can also use QAbstractSocket directly
- as a wrapper around a native socket descriptor.
-
- By default, the socket classes work asynchronously (i.e., they
- are non-blocking), emitting signals to notify when data has
- arrived or when the peer has closed the connection. In
- multithreaded applications and in non-GUI applications, you also
- have the opportunity of using blocking (synchronous) functions on
- the socket, which often results in a more straightforward style
- of programming, with the networking logic concentrated in one or
- two functions instead of spread across multiple slots.
-
- QFtp and QNetworkAccessManager and its associated classes use
- QTcpSocket internally to implement the FTP and HTTP protocols. The
- classes work asynchronously and can schedule (i.e., queue)
- requests.
-
- The network module contains four helper classes: QHostAddress,
- QHostInfo, QUrl, and QUrlInfo. QHostAddress stores an IPv4 or IPv6
- address, QHostInfo resolves host names into addresses, QUrl stores a
- URL, and QUrlInfo stores information about a resource pointed to
- by a URL, such as the file size and modification date. (Because
- QUrl is used by QTextBrowser, it is part of the QtCore library and
- not of QtNetwork.)
-
- See the \l QtNetwork module overview for more information.
-
- \section1 Example Code
-
- All the code snippets presented here are quoted from
- self-contained, compilable examples located in Qt's \c
- examples/network directory.
-
- \section2 TCP Client
-
- The first example illustrates how to write a TCP client using
- QTcpSocket. The client talks to a fortune server that provides
- fortune to the user. Here's how to set up the socket:
-
- \snippet examples/network/fortuneclient/client.cpp 1
- \codeline
- \snippet examples/network/fortuneclient/client.cpp 2
- \snippet examples/network/fortuneclient/client.cpp 4
-
- When the user requests a new fortune, the client establishes a
- connection to the server:
-
- \snippet examples/network/fortuneclient/client.cpp 7
-
- When the server answers, the following code is executed to read
- the data from the socket:
-
- \snippet examples/network/fortuneclient/client.cpp 9
-
- The server's answer starts with a \e size field (which we store
- in \c blockSize), followed by \e size bytes of data. If the
- client hasn't received all the data yet, it waits for the server
- to send more.
-
- An alternative approach is to use a blocking socket. The code can
- then be concentrated in one function:
-
- \snippet examples/network/blockingfortuneclient/fortunethread.cpp 7
-
- \section2 TCP Server
-
- The following code snippets illustrate how to write a TCP server
- using QTcpServer and QTcpSocket. Here's how to set up a TCP
- server:
-
- \snippet examples/network/fortuneserver/server.cpp 0
- \codeline
- \snippet examples/network/fortuneserver/server.cpp 3
-
- When a client tries to connect to the server, the following code
- in the sendFortune() slot is executed:
-
- \snippet examples/network/fortuneserver/server.cpp 5
-
- \section2 UDP Senders and Receivers
-
- Here's how to broadcast a UDP datagram:
-
- \snippet examples/network/broadcastsender/sender.cpp 0
- \snippet examples/network/broadcastsender/sender.cpp 1
-
- Here's how to receive a UDP datagram:
-
- \snippet examples/network/broadcastreceiver/receiver.cpp 0
- \codeline
- \snippet examples/network/broadcastreceiver/receiver.cpp 1
-
- Then in the processPendingDatagrams() slot:
-
- \snippet examples/network/broadcastreceiver/receiver.cpp 2
-
- \section1 Comparison with Qt 3
-
- The main difference between Qt 3 and Qt 4 is that the very high
- level QNetworkProtocol and QUrlOperator abstraction has been
- eliminated. These classes attempted the impossible (unify FTP and
- HTTP under one roof), and unsurprisingly failed at that. Qt 4
- still provides QFtp, and it also proveds the QNetworkAccessManager.
-
- The QSocket class in Qt 3 has been renamed QTcpSocket. The new
- class is reentrant and supports blocking. It's also easier to
- handle closing than with Qt 3, where you had to connect to both
- the QSocket::connectionClosed() and the
- QSocket::delayedCloseFinished() signals.
-
- The QServerSocket class in Qt 3 has been renamed QTcpServer. The
- API has changed quite a bit. While in Qt 3 it was necessary to
- subclass QServerSocket and reimplement the newConnection() pure
- virtual function, QTcpServer now emits a
- \l{QTcpServer::newConnection()}{newConnection()} signal that you
- can connect to a slot.
-
- The QHostInfo class has been redesigned to use the operating system's
- getaddrinfo() function instead of implementing the DNS protocol.
- Internally, QHostInfo simply starts a thread and calls getaddrinfo()
- in that thread. This wasn't possible in Qt 3 because
- getaddrinfo() is a blocking call and Qt 3 could be configured
- without multithreading support.
-
- The QSocketDevice class in Qt 3 is no longer part of the public
- Qt API. If you used QSocketDevice to send or receive UDP
- datagrams, use QUdpSocket instead. If you used QSocketDevice
- because it supported blocking sockets, use QTcpSocket or
- QUdpSocket instead and use the blocking functions
- (\l{QAbstractSocket::waitForConnected()}{waitForConnected()},
- \l{QAbstractSocket::waitForConnected()}{waitForReadyRead()},
- etc.). If you used QSocketDevice from a non-GUI thread because it
- was the only reentrant networking class in Qt 3, use QTcpSocket,
- QTcpServer, or QUdpSocket instead.
-
- Internally, Qt 4 has a class called QSocketLayer that provides a
- cross-platform low-level socket API. It resembles the old
- QSocketDevice class. We might make it public in a later release
- if users ask for it.
-
- As an aid to porting to Qt 4, the \l{Qt3Support}
- library includes Q3Dns, Q3ServerSocket, Q3Socket, and Q3SocketDevice
- classes.
-*/
diff --git a/doc/src/qt4-scribe.qdoc b/doc/src/qt4-scribe.qdoc
deleted file mode 100644
index 64037cf2b..000000000
--- a/doc/src/qt4-scribe.qdoc
+++ /dev/null
@@ -1,257 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt4-scribe.html
- \title The Scribe Classes
-
- \contentspage {What's New in Qt 4}{Home}
- \previouspage The Arthur Paint System
- \nextpage The Qt 4 Main Window Classes
-
- \keyword Scribe
-
- Scribe introduces a set of text layout classes to Qt 4. These classes
- replace the old rich text engine found in Qt 3, and provide new features
- for processing and laying out both plain and rich text.
-
- \tableofcontents
-
- For more details about how to use the Scribe classes, see the
- \l{richtext.html}{Rich Text Processing} document.
-
- \section1 Overview of Scribe
-
- Support for text rendering and layout in Qt 4 has been redesigned
- around a system that allows textual content to be represented in a more
- flexible way than was possible with Qt 3. Qt 4 also provides a more
- convenient programming interface for editing documents. These
- improvements are made available through a reimplementation of the
- existing text rendering engine, and the introduction of several new
- classes.
-
- The following sections provide a brief overview of the main concepts
- behind Scribe.
-
- \section2 The Document Interface
-
- Text documents are represented by the QTextDocument class, rather
- than by QString objects. Each QTextDocument object contains
- information about the document's internal representation, its
- structure, and keeps track of modifications to provide undo/redo
- facilities.
- This approach allows features such as layout management to be
- delegated to specialized classes, but also provides a focus for the
- framework.
-
- Documents are either converted from external sources or created from
- scratch using Qt. The creation process can done by an editor widget,
- such as QTextEdit, or by explicit calls to the Scribe API.
-
- Text documents can be accessed in two complementary ways: as a linear
- buffer for editors to use, and as an object hierarchy that is useful to
- layout engines.
- In the hierarchical document model, objects generally correspond to
- visual elements such as frames, tables, and lists. At a lower level,
- these elements describe properties such as the text style and alignment.
- The linear representation of the document is used for editing and
- manipulation of the document's contents.
-
- \section2 Document Structure
-
- Each document contains a root frame into which all other structural
- elements are placed. This frame contains other structural elements,
- including tables, text blocks, and other frames; these can be nested to
- an arbitrary depth.
-
- Frames provide logical separation between parts of the document, but
- also have properties that determine how they will appear when rendered.
- A table is a specialized type of frame that consists of a number of
- cells, arranged into rows and columns, each of which can contain
- further structure and text. Tables provide management and layout
- features that allow flexible configurations of cells to be created.
-
- Text blocks contain text fragments, each of which specifies text and
- character format information. Textual properties are defined both at
- the character level and at the block level. At the character level,
- properties such as font family, text color, and font weight can be
- specified. The block level properties control the higher level
- appearance and behavior of the text, such as the direction of text
- flow, alignment, and background color.
-
- The document structure is not manipulated directly. Editing is
- performed through a cursor-based interface.
-
- \section2 Editing and Content Creation
-
- Documents can be edited via the interface provided by the QTextCursor
- class; cursors are either created using a constructor or obtained from
- an editor widget. The cursor is used to perform editing operations that
- correspond exactly to those the user is able to make themselves in an
- editor. As a result, information about the document structure is also
- available through the cursor, and this allows the structure to be
- modified. The use of a cursor-oriented interface for editing makes the
- process of writing a custom editor simpler for developers, since the
- editing operations can be easily visualized.
-
- The QTextCursor class also maintains information about any text it
- has selected in the document, again following a model that is
- conceptually similar to the actions made by the user to select text
- in an editor.
-
- \section2 Document Layout
-
- The layout of a document is only relevant when it is to be displayed on
- a device, or when some information is requested that requires a visual
- representation of the document. Until this occurs, the document does
- not need to be formatted and prepared for a device.
-
- Each document's layout is managed by a subclass of the
- QAbstractTextDocumentLayout class. This class provides a common
- interface for layout and rendering engines. The default rendering
- behavior is currently implemented in a private class. This approach
- makes it possible to create custom layouts, and provides the
- mechanism used when preparing pages for printing or exporting to
- Portable Document Format (PDF) files.
-
- \section1 Example Code
-
- Here we present two different ways in which the Scribe classes can be
- used: for creating and manipulating rich text, and for laying out
- plain text.
-
-
- \section2 Manipulating Rich Text
-
- Rich text is stored in text documents that can either be created by
- importing HTML from an external source, or generated using a
- QTextCursor. The easiest way to use a rich text document is through
- the QTextEdit class, providing an editable view onto a document. The code
- below imports HTML into a document, and displays the document using a
- text edit widget.
-
- \snippet doc/src/snippets/scribe-overview/main.cpp 1
-
- You can retrieve the document from the text edit using the
- document() function. The document can then be edited programmatically
- using the QTextCursor class. This class is modeled after a screen
- cursor, and editing operations follow the same semantics. The following
- code changes the first line of the document to a bold font, leaving all
- other font properties untouched. The editor will be automatically
- updated to reflect the changes made to the underlying document data.
-
- \snippet doc/src/snippets/scribe-overview/main.cpp 0
-
- Note that the cursor was moved from the start of the first line to the
- end, but that it retained an anchor at the start of the line. This
- demonstrates the cursor-based selection facilities of the
- QTextCursor class.
-
- Rich text can be generated very quickly using the cursor-based
- approach. The following example shows a simple calendar in a
- QTextEdit widget with bold headers for the days of the week:
-
- \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 0
- \codeline
- \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 1
- \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 2
- \snippet doc/src/snippets/textdocument-blocks/mainwindow.cpp 3
-
- The above example demonstrates how simple it is to quickly generate new
- rich text documents using a minimum amount of code. Although we have
- generated a crude fixed-pitch calendar to avoid quoting too much code,
- Scribe provides much more sophisticated layout and formatting features.
-
- \section2 Plain Text Layout
-
- Sometimes it is important to be able to format plain text within an
- irregularly-shaped region, perhaps when rendering a custom widget, for
- example. Scribe provides generic features, such as those provided by
- the QTextLayout class, to help developers perform word-wrapping and
- layout tasks without the need to create a document first.
-
- \img plaintext-layout.png
-
- Formatting and drawing a paragraph of plain text is straightforward.
- The example below will lay out a paragraph of text, using a single
- font, around the right hand edge of a circle.
-
- \snippet doc/src/snippets/plaintextlayout/window.cpp 0
-
- We create a text layout, specifying the text string we want to display
- and the font to use. We ensure that the text we supplied is formatted
- correctly by obtaining text lines from the text format, and wrapping
- the remaining text using the available space. The lines are positioned
- as we move down the page.
-
- The formatted text can be drawn onto a paint device; in the above code,
- the text is drawn directly onto a widget.
-
- \section2 Printing Features
-
- The layout system used to display rich text documents also supports
- paged layout of documents, and this is used by Qt to generate output for
- printing. The printing process is performed by QPrinter and controlled by
- the user via options displayed in a QPrintDialog:
-
- \snippet doc/src/snippets/textdocument-printing/mainwindow.cpp 0
-
- Rich text documents can also be exported as PDF files using QPrinter and
- the appropriate print engine:
-
- \snippet demos/textedit/textedit.cpp 0
-
- \section1 Comparison with Qt 3
-
- The cursor-based editing features, combined with the structural document
- model, provide a powerful set of tools for manipulating and displaying
- rich text documents. These provide features that were unavailable in
- Qt 3's public API. The engine used is a complete rewrite and does not
- use the rich text engine supplied with Qt 3.
-
- The QTextEdit class in Qt 4 has also been completely rewritten with an
- API that is quite different from its Qt 3 counterpart. Some compatibility
- methods have been added to allow the widget to be used, for basic cases,
- in a way that is familiar to users of Qt 3. This class is provided as a
- working example of an editor widget that uses the new API, showing that
- it is possible to completely implement a document editor based on the
- QTextCursor editing interface.
-*/
diff --git a/doc/src/qt4-sql.qdoc b/doc/src/qt4-sql.qdoc
deleted file mode 100644
index 3425e969a..000000000
--- a/doc/src/qt4-sql.qdoc
+++ /dev/null
@@ -1,175 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt4-sql.html
- \title The Qt 4 Database GUI Layer
-
- \contentspage {What's New in Qt 4}{Home}
- \previouspage Cross-Platform Accessibility Support in Qt 4
- \nextpage The Network Module in Qt 4
-
- The GUI layer of the SQL module in Qt 4 has been entirely
- redesigned to work with \l{qt4-interview.html}{Interview} (Qt's
- new model/view classes). It consists of three model classes
- (QSqlQueryModel, QSqlTableModel, and QSqlRelationalTableModel)
- that can be used with Qt's view classes, notably QTableView.
-
- \section1 General Overview
-
- The Qt 4 SQL classes are divided into three layers:
-
- \list
- \o The database drivers
- \o The core SQL classes
- \o The GUI classes
- \endlist
-
- The database drivers and the core SQL classes are mostly the same
- as in Qt 3. The database item models are new with Qt 4; they
- inherit from QAbstractItemModel and make it easy to present data
- from a database in a view class such as QListView, QTableView,
- and QTreeView.
-
- The philosophy behind the Qt 4 SQL module is that it should be
- possible to use database models for rendering and editing data
- just like any other item models. By changing the model at
- run-time, you can decide whether you want to store your data in
- an SQL database or in, say, an XML file. This generic approach
- has the additional benefit that you don't need to know anything
- about SQL to display and edit data.
-
- The Qt 4 SQL module includes three item models:
-
- \list
- \o QSqlQueryModel is a read-only model based on an arbitrary
- SQL query.
- \o QSqlTableModel is a read-write model that works on a single
- table.
- \o QSqlRelationalTableModel is a QSqlTableModel subclass with
- foreign key support.
- \endlist
-
- Combined with Qt's view classes and Qt's default delegate class
- (QItemDelegate), the models offer a very powerful mechanism for
- accessing databases. For finer control on the rendering of the
- fields, you can subclass one of the predefined models, or even
- QAbstractItemDelegate or QItemDelegate if you need finer control.
-
- You can also perform some customizations without subclassing. For
- example, you can sort a table using QSqlTableModel::sort(), and
- you can initialize new rows by connecting to the
- QSqlTableModel::primeInsert() signal.
-
- One nice feature supported by the read-write models is the
- possibility to perform changes to the item model without
- affecting the database until QSqlTableModel::submitAll() is
- called. Changes can be dropped using QSqlTableModel::revertAll().
-
- The new classes perform advantageously compared to the SQL
- module's GUI layer in Qt 3. Speed and memory improvements in the
- tool classes (especially QVariant, QString, and QMap) and in the
- SQL drivers contribute to making Qt 4 database applications more
- snappy.
-
- See the \l QtSql module overview for a more complete introduction
- to Qt's SQL classes.
-
- \section1 Example Code
-
- The simplest way to present data from a database is to simply
- combine a QSqlQueryModel with a QTableView:
-
- \snippet doc/src/snippets/code/doc_src_qt4-sql.qdoc 0
-
- To present the contents of a single table, we can use
- QSqlTableModel instead:
-
- \snippet doc/src/snippets/code/doc_src_qt4-sql.qdoc 1
-
- In practice, it's common that we need to customize the rendering
- of a field in the database. In that case, we can create our own
- model based on QSqlQueryModel. The next code snippet shows a
- custom model that prepends '#' to the value in field 0 and
- converts the value in field 2 to uppercase:
-
- \snippet examples/sql/querymodel/customsqlmodel.h 0
- \codeline
- \snippet examples/sql/querymodel/customsqlmodel.cpp 0
-
- It is also possible to subclass QSqlQueryModel to add support for
- editing. This is done by reimplementing
- QAbstractItemModel::flags() to specify which database fields are
- editable and QAbstractItemModel::setData() to modify the
- database. Here's an example of a setData() reimplementation that
- changes the first or last name of a person:
-
- \snippet examples/sql/querymodel/editablesqlmodel.cpp 1
-
- It relies on helper functions called \c setFirstName() and
- \c setLastName(), which execute an \c{update}. Here's
- \c setFirstName():
-
- \snippet examples/sql/querymodel/editablesqlmodel.cpp 2
-
- See Qt's \c examples/sql directory for more examples.
-
- \section1 Comparison with Qt 3
-
- The core SQL database classes haven't changed so much since Qt 3.
- Here's a list of the main changes:
-
- \list
- \o QSqlDatabase is now value-based instead of pointer-based.
- \o QSqlFieldInfo and QSqlRecordInfo has been merged into
- QSqlField and QSqlRecord.
- \o The SQL query generation has been moved into the drivers. This
- makes it possible to use non-standard SQL extensions. It also
- opens the door to non-SQL databases.
- \endlist
-
- The GUI-related database classes have been entirely redesigned.
- The QSqlCursor abstraction has been replaced with QSqlQueryModel
- and QSqlTableModel; QSqlEditorFactory is replaced by
- QAbstractItemDelegate; QDataTable is replaced by QTableView. The
- old classes are part of the \l{Qt3Support} library to aid
- porting to Qt 4.
-*/
diff --git a/doc/src/qt4-styles.qdoc b/doc/src/qt4-styles.qdoc
deleted file mode 100644
index 4134962e1..000000000
--- a/doc/src/qt4-styles.qdoc
+++ /dev/null
@@ -1,157 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt4-styles.html
- \title The Qt 4 Style API
-
- \contentspage {What's New in Qt 4}{Home}
- \previouspage The Network Module in Qt 4
- \nextpage Thread Support in Qt 4
-
- Qt's style API is responsible for performing the widget drawing
- for built-in widgets. The Qt 4 style API has been revised to make
- it possible for a style to draw widgets without calling any
- functions on the widget.
-
- Because Qt 4 is split across multiple libraries, Qt needed this
- update to be able to draw widgets from other libraries than
- QtGui. For application developers, this has other benefits, such
- as more managable parameter lists and the possibility of drawing
- any graphical element without having a widget of a specific
- type.
-
- \section1 General Overview
-
- The QStyle class is an abstract base class that encapsulates
- the look and feel of a GUI. Qt's built-in widgets use it to
- perform nearly all of their drawing, ensuring that they look
- exactly like the equivalent native widgets.
-
- Most draw functions now take four arguments:
-
- \list
- \o an enum value specifying which graphical element to draw
- \o a QStyleOption specifying how and where to render that element
- \o a QPainter that should be used to draw the element
- \o a QWidget on which the drawing is performed (optional)
- \endlist
-
- The style gets all the information it needs to render the
- graphical element from QStyleOption. The widget is passed as the
- last argument in case the style needs it to perform special
- effects (such as animated default buttons on Mac OS X), but it
- isn't mandatory. In fact, QStyle can be used to draw on any
- paint device, not just widgets, by setting the QPainter properly.
-
- Thanks to QStyleOption, it is now possible to make QStyle draw
- widgets without linking in any code for the widget. This is how
- Qt's built-in styles can draw Qt 3 widgets such as
- Q3ListView without necessarily linking against the Qt3Support
- library. Another significant benefit of the new approach is that
- it's now possible to use \l{QStyle}'s draw functions on other
- widgets than the built-in widgets; for example, you can draw a
- combobox on any widget, not just on a QComboBox.
-
- QStyleOption has various subclasses for the various types of
- graphical elements that can be drawn, and it's possible to create
- custom subclasses. For example, the QStyle::PE_FrameFocusRect
- element expects a QStyleOptionFocusRect argument. This is
- documented for each enum value.
-
- When reimplementing QStyle functions that take a
- QStyleOption parameter, you often need to cast the
- QStyleOption to a subclass (e.g., QStyleOptionFocusRect). For
- safety, you can use qstyleoption_cast() to ensure that the
- pointer type is correct. If the object isn't of the right type,
- qstyleoption_cast() returns 0. For example:
-
- \snippet doc/src/snippets/code/doc_src_qt4-styles.qdoc 0
-
- For performance reasons, there are few member functions and the
- access to the variables is direct. This "low-level" feel makes
- the structures use straightforward and emphasizes that these are
- simply parameters used by the style functions. In addition, the
- caller of a QStyle function usually creates QStyleOption
- objects on the stack. This combined with Qt's extensive use of
- \l{implicit sharing} for types such as QString, QPalette, and
- QColor ensures that no memory allocation needlessly takes place.
- (Dynamic memory allocation can be an expensive operation,
- especially when drawing very often in a short time.)
-
- \section1 Example Code
-
- The following code snippet illustrates how to use QStyle to
- draw the focus rectangle from a custom widget's paintEvent():
-
- \snippet doc/src/snippets/code/doc_src_qt4-styles.qdoc 1
-
- The next example shows how to derive from an existing style to
- customize the look of a graphical element:
-
- \snippet doc/src/snippets/customstyle/customstyle.h 0
- \codeline
- \snippet doc/src/snippets/customstyle/customstyle.cpp 2
- \snippet doc/src/snippets/customstyle/customstyle.cpp 3
- \snippet doc/src/snippets/customstyle/customstyle.cpp 4
-
- See also the \l{Styles Example} for a more detailed description of
- how custom styles can be created.
-
- \section1 Comparison with Qt 3
-
- The QStyle class has a similar API in Qt 4 as in Qt 3, with
- more or less the same functions. What has changed is the
- signature of the functions and the role played by QStyleOption.
- For example, here's the signature of the QStyle::drawControl()
- function in Qt 3:
-
- \snippet doc/src/snippets/code/doc_src_qt4-styles.qdoc 2
-
- Here's the signature of the same function in Qt 4:
-
- \snippet doc/src/snippets/code/doc_src_qt4-styles.qdoc 3
-
- In Qt 3, some of the information required to draw a graphical
- element was stored in a QStyleOption parameter, while the rest
- was deduced by querying the widget. In Qt 4, everything is stored
- in the QStyleOption parameter.
-*/
diff --git a/doc/src/qt4-threads.qdoc b/doc/src/qt4-threads.qdoc
deleted file mode 100644
index 1800d6a5e..000000000
--- a/doc/src/qt4-threads.qdoc
+++ /dev/null
@@ -1,101 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt4-threads.html
- \title Thread Support in Qt 4
-
- \contentspage {What's New in Qt 4}{Home}
- \previouspage The Qt 4 Style API
-
- Qt 4 makes it easier than ever to write multithreaded
- applications. More classes have been made usable from non-GUI
- threads, and the signals and slots mechanism can now be used to
- communicate between threads.
-
- \section1 General Overview
-
- QThread now inherits QObject. It emits signals to indicate that
- the thread started or finished executing, and provides a few
- slots as well.
-
- Each thread can now have its own event loop. The initial thread
- starts its event loops using QCoreApplication::exec(); other
- threads can start an event loop using QThread::exec(). Like
- QCoreApplication, QThread also provides an
- \l{QThread::exit()}{exit(int)} function and a
- \l{QThread::quit()}{quit()} slot.
-
- An event loop in a thread makes it possible for the thread to use
- certain non-GUI Qt classes that require the presence of an event
- loop (such as QTimer, QTcpSocket, and QProcess). It also makes it
- possible to connect signals from any threads to slots of a
- specific thread. When a signal is emitted, the slot isn't called
- immediately; instead, it is invoked when control returns to the
- event loop of the thread to which the object belongs. The slot is
- executed in the thread where the receiver object lives. See
- QObject::connect() for details.
-
- Qt 4 also introduces a new synchronization class: QReadWriteLock.
- It is similar to QMutex, except that it distinguishes between
- "read" and "write" access to shared data and allows multiple
- readers to access the data simultaneously. Using QReadWriteLock
- instead of QMutex when it is possible can make multithreaded
- programs more concurrent.
-
- Since Qt 4, \l{implicitly shared} classes can safely be copied
- across threads, like any other value classes. They are fully
- reentrant. This is implemented using atomic reference counting
- operations, which are implemented in assembly language for the
- different platforms supported by Qt. Atomic reference counting is
- very fast, much faster than using a mutex.
-
- See \l{Thread Support in Qt} for more information.
-
- \section1 Comparison with Qt 3
-
- Earlier versions of Qt offered an option to build the library
- without thread support. In Qt 4, threads are always enabled.
-
- Qt 3 had a class called \c QDeepCopy that you could use to take a
- deep copy of an implicitly shared object. In Qt 4, the atomic
- reference counting makes this class superfluous.
-*/
diff --git a/doc/src/qt4-tulip.qdoc b/doc/src/qt4-tulip.qdoc
deleted file mode 100644
index 93546510f..000000000
--- a/doc/src/qt4-tulip.qdoc
+++ /dev/null
@@ -1,200 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt4-tulip.html
- \title The Tulip Container Classes
-
- \contentspage {What's New in Qt 4}{Home}
- \previouspage What's New in Qt 4
- \nextpage The Interview Framework
-
- Qt 4 introduces a new set of containers that supersede both the old
- QCollection pointer-based containers and the newer QTL value-based
- containers.
-
- \tableofcontents
-
- \section1 General Overview
-
- The Tulip containers are similar to Qt 3's QTL containers
- (QValueList, QValueVector, QMap), but have the following
- advantages:
-
- \list
- \o The containers provide new iterators with a nicer, less
- error-prone syntax than STL, inspired by Java's iterators. (The
- STL-style iterators are still available as a lightweight,
- STL-compatible alternative.)
-
- \o The containers have been optimized for minimal code expansion.
-
- \o An empty container performs no memory allocation, and only
- requires the same space as a pointer.
-
- \o Even though they are implicitly shared, they can safely be copied
- across different threads without formality. There's no need to use
- \c QDeepCopy.
- \endlist
-
- Tulip provides the following sequential containers: QList,
- QLinkedList, QVector, QStack, and QQueue. For most
- applications, QList is the best type to use. Although it is
- implemented as an array-list, it provides very fast prepends and
- appends. If you really need a linked-list, use QLinkedList; if you
- want your items to occupy consecutive memory locations, use QVector.
- QStack and QQueue are convenience classes that provide LIFO and
- FIFO semantics.
-
- Tulip also provides these associative containers: QMap,
- QMultiMap, QHash, QMultiHash, and QSet. The "Multi" containers
- conveniently support multiple values associated with a single
- key. The "Hash" containers provide faster lookup by using a hash
- function instead of a binary search on a sorted set.
-
- The Tulip containers support the \l foreach keyword, a Qt-specific
- addition to the C++ language that is implemented using the standard
- C++ preprocessor. The syntax is:
-
- \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 0
-
- Example:
-
- \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 1
-
- The iterator variable can also be defined outside the loop. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 2
-
- Just like standard \c for loops, foreach supports braces, \c
- break, \c continue, and nested loops. Qt makes a copy of the
- container when it enters the loop. If you modify the container as
- you are iterating, that won't affect the loop.
-
- For details about the new containers, see the
- \l{Generic Containers} and \l{Generic Algorithms} overview documents.
-
- In addition to the new containers, considerable work has also gone into
- QByteArray and QString. The Qt 3 QCString class has been
- merged with QByteArray. The new QByteArray automatically provides
- a '\0' terminator after the last character. For example, the byte array
- of size 5 containing "abcde" has a null byte at position 5 (one past
- the end). This solves all the typical problems that occurred in Qt 3
- with conversions between QByteArray and QCString.
-
- To avoid crashes, QByteArray::data() never returns a null
- pointer. Furthermore, the distinction between null and empty
- strings has been watered down so that \c{QByteArray() ==
- QByteArray("")} and \c{QString() == QString("")}.
-
- \section1 Examples
-
- The first group of examples show how to use the new Java-style
- iterators. The main difference between the Java-style iterators and the
- STL-style iterators is that the Java-style ones point between items (or
- before the first item, or after the last item), whereas the STL ones
- point at an item (or past the last item). One advantage of the
- Java-style iterators is that iterating forward and backward are
- symmetric operations.
-
- Traversing a container using a Java-style iterator:
-
- \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 3
-
- Modifying items using a Java-style iterator:
-
- \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 4
-
- Removing items using a Java-style iterator:
-
- \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 5
-
- Iterating over items with a particular value using STL-style vs.
- Java-style iterators:
-
- \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 6
-
- Modifying and removing items using STL-style vs. Java-style
- iterators:
-
- \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 7
-
- The next group of examples show the API of the container classes
- themselves. The API is similar to the QTL classes of Qt 3, but is nicer
- in many respects.
-
- Iterating over a QList using an index (which is fast even for large
- lists, because QList is implemented as an array-list):
-
- \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 8
-
- Retrieving a value from a map, using a default value if the key
- doesn't exist:
-
- \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 9
-
- Getting all the values for a particular key in a QMultiMap or QMultiHash:
-
- \snippet doc/src/snippets/code/doc_src_qt4-tulip.qdoc 10
-
- \section1 Comparison with Qt 3
-
- Tulip containers are value based. If you want to store a list where
- each item is a QWidget *, use QList<QWidget *>.
-
- The new containers do not support auto-delete. In practice, we
- discovered that the only case where auto-delete proved worthwhile was
- when the data really should be stored as a value rather than as a
- pointer (e.g., QList<int> rather than QList<int *>). If you need
- to delete all the items in a container, use qDeleteAll().
-
- If you use QValueList in Qt 3, you can replace it with either
- QList or QLinkedList in Qt 4. In most cases, QList is the best
- choice: It is typically faster, results in less code in your
- executable, and requires less memory. However, QLinkedList's
- iterators provide stronger guarantees, and only QLinkedList provides
- constant-time insertions in the middle, which can make a difference for
- lists with thousands of items.
-
- If you use QValueVector or QMap in Qt 3, the corresponding Qt 4
- classes (QVector, QMap) are very similar to use.
-*/
diff --git a/doc/src/qtassistant.qdoc b/doc/src/qtassistant.qdoc
deleted file mode 100644
index 9e52ccfa7..000000000
--- a/doc/src/qtassistant.qdoc
+++ /dev/null
@@ -1,54 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtAssistant
- \title QtAssistant Module
- \contentspage Qt's Modules
- \previouspage QtHelp
- \nextpage QtTest
- \ingroup modules
-
- \brief The QtAssistant module provides a means of launching \QA
- to provide online help.
-
- \sa {Qt Assistant Manual}
-*/
diff --git a/doc/src/qtconfig.qdoc b/doc/src/qtconfig.qdoc
deleted file mode 100644
index 2e02fe604..000000000
--- a/doc/src/qtconfig.qdoc
+++ /dev/null
@@ -1,56 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qtconfig.html
- \title Configuring Qt
- \ingroup qttools
- \keyword qtconfig
-
- The \c qtconfig tool allows users to customize the default settings for
- Qt applications on a per-user basis, enabling features such as the widget
- style to be changed without requiring applications to be recompiled.
-
- \c qtconfig is available on X11 platforms and should be installed alongside
- the \l{Qt's Tools}{other tools} supplied with Qt.
-
- \image qtconfig-appearance.png
-*/
diff --git a/doc/src/qtcore.qdoc b/doc/src/qtcore.qdoc
deleted file mode 100644
index 7e23c5e20..000000000
--- a/doc/src/qtcore.qdoc
+++ /dev/null
@@ -1,60 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtCore
- \title QtCore Module
- \contentspage Qt's Modules
- \previouspage Qt's Modules
- \nextpage QtGui
- \ingroup modules
-
- \keyword QtCore
-
- \brief The QtCore module contains core non-GUI functionality.
-
- All other Qt modules rely on this module. To include the
- definitions of the module's classes, use the following directive:
-
- \snippet doc/src/snippets/code/doc_src_qtcore.qdoc 0
-
- The QtCore module is part of all \l{Qt editions}.
-*/
diff --git a/doc/src/qtdbus.qdoc b/doc/src/qtdbus.qdoc
deleted file mode 100644
index d4a690849..000000000
--- a/doc/src/qtdbus.qdoc
+++ /dev/null
@@ -1,124 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/** -*- mode: C++ -*-
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtDBus
- \title QtDBus module
- \contentspage Qt's Modules
- \previouspage QAxServer
- \ingroup modules
-
- \keyword QtDBus
- \target The QDBus compiler
-
- \brief The QtDBus module is a Unix-only library that you can use
- to make Inter-Process Communication using the \l {Introduction to
- D-Bus} {D-Bus} protocol.
-
- Applications using the QtDBus module can provide services to
- other, remote applications by exporting objects, as well as use
- services exported by those applications by placing calls and
- accessing properties.
-
- The QtDBus module provides an interface that extends the Qt \l
- {signalsandslots.html}{Signals and Slots} mechanism, allowing one
- to connect to a signal emitted remotely as well as to connect a
- local signal to remote slot.
-
- To use this module, use the following code in your application:
-
- \snippet doc/src/snippets/code/doc_src_qtdbus.qdoc 0
-
- If you're using qmake to build your application, you can add this
- line to your .pro file to make it link against the QtDBus
- libraries:
-
- \snippet doc/src/snippets/code/doc_src_qtdbus.qdoc 1
-
- \note The source code for this module is located in the \c{src/qdbus}
- directory. When installing Qt from source, this module is built when Qt's
- tools are built.
-
- See the \l {Introduction to D-Bus} page for detailed information on
- how to use this module.
-
- This module is part of all \l{Qt editions}.
-*/
diff --git a/doc/src/qtdemo.qdoc b/doc/src/qtdemo.qdoc
deleted file mode 100644
index 60f896aa2..000000000
--- a/doc/src/qtdemo.qdoc
+++ /dev/null
@@ -1,67 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qtdemo.html
- \title Examples and Demos Launcher
- \ingroup qttools
- \keyword qtdemo
-
- The Examples and Demos Launcher (\c qtdemo) allows the user to browse the
- examples and demonstrations included with Qt, access the documentation
- associated with each of them, and launch them as separate applications.
-
- \image qtdemo.png
-
- The \c qtdemo executable should be installed alongside the
- \l{Qt's Tools}{other tools} supplied with Qt.
-
- \list
- \i On Windows, click the Start button, open the \e Programs submenu, open
- the \e{Qt 4} submenu, and click \e{Examples and Demos}.
- \i On Unix or Linux, you may find a \c qtdemo icon on the desktop background or
- in the desktop start menu under the \e Programming or \e Development
- submenus. You can launch this application from this icon. Alternatively, you can
- enter \c qtdemo in a terminal window.
- \i On Mac OS X, navigate to the \c /Developer/Applications/Qt directory in the
- Finder and double click on the \c qtdemo.app icon.
- \endlist
-*/
diff --git a/doc/src/qtdesigner.qdoc b/doc/src/qtdesigner.qdoc
deleted file mode 100644
index 00af29706..000000000
--- a/doc/src/qtdesigner.qdoc
+++ /dev/null
@@ -1,168 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtDesigner
- \title QtDesigner Module
- \contentspage Qt's Modules
- \previouspage Qt3Support
- \nextpage QtUiTools
- \ingroup modules
-
- \brief The QtDesigner module provides classes that allow you to
- create your own custom widget plugins for Qt Designer, and classes
- that enable you to access Qt Designer's components.
-
- In addition, the QFormBuilder class provides the possibility of
- constructing user interfaces from UI files at run-time.
-
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 0
-
- To link against the module, add this line to your \c qmake .pro
- file:
-
- \snippet doc/src/snippets/code/doc_src_qtdesigner.qdoc 1
-
- \note These classes are part of the \l{Open Source Versions of Qt} and
- \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial
- users.
-
- \tableofcontents
-
- \section1 Creating Custom Widget Plugins
-
- When implementing a custom widget plugin for \QD, you must
- subclass QDesignerCustomWidgetInterface to expose your custom
- widget to \QD. A single custom widget plugin is built as a
- separate library. If you want to include several custom widget
- plugins in the same library, you must in addition subclass
- QDesignerCustomWidgetCollectionInterface.
-
- To provide your custom widget plugin with the expected behavior
- and functionality within \QD's workspace you can subclass the
- associated extension classes:
-
- The QDesignerContainerExtension class allows you to add pages to a
- custom multi-page container. The QDesignerTaskMenuExtension class
- allows you to add custom menu entries to \QD's task menu. The
- QDesignerMemberSheetExtension class allows you to manipulate a
- widget's member functions which is displayed when configuring
- connections using \QD's mode for editing signals and slots. And
- finally, the QDesignerPropertySheetExtension class allows you to
- manipulate a widget's properties which is displayed in \QD's
- property editor.
-
- \image qtdesignerextensions.png
-
- In \QD the extensions are not created until they are required. For
- that reason, when implementing extensions, you must also subclass
- QExtensionFactory, i.e create a class that is able to make
- instances of your extensions. In addition, you must make \QD's
- extension manager register your factory; the extension manager
- controls the construction of extensions as they are required, and
- you can access it through QDesignerFormEditorInterface and
- QExtensionManager.
-
- For a complete example creating a custom widget plugin with an
- extension, see the \l {designer/taskmenuextension}{Task Menu
- Extension} or \l {designer/containerextension}{Container
- Extension} examples.
-
- \section1 Retrieving Access to \QD Components
-
- The purpose of the classes mentioned in this section is to provide
- access to \QD's components, managers and workspace, and they are
- not intended to be instantiated directly.
-
- \QD is composed by several components. It has an action editor, a
- property editor, widget box and object inspector which you can
- view in its workspace.
-
- \image qtdesignerscreenshot.png
-
- \QD also has an object that works behind the scene; it contains
- the logic that integrates all of \QD's components into a coherent
- application. You can access this object, using the
- QDesignerFormEditorInterface, to retrieve interfaces to \QD's
- components:
-
- \list
- \o QDesignerActionEditorInterface
- \o QDesignerObjectInspectorInterface
- \o QDesignerPropertyEditorInterface
- \o QDesignerWidgetBoxInterface
- \endlist
-
- In addition, you can use QDesignerFormEditorInterface to retrieve
- interfaces to \QD's extension manager (QExtensionManager) and form
- window manager (QDesignerFormWindowManagerInterface). The
- extension manager controls the construction of extensions as they
- are required, while the form window manager controls the form
- windows appearing in \QD's workspace.
-
- Once you have an interface to \QD's form window manager
- (QDesignerFormWindowManagerInterface), you also have access to all
- the form windows currently appearing in \QD's workspace: The
- QDesignerFormWindowInterface class allows you to query and
- manipulate the form windows, and it provides an interface to the
- form windows' cursors. QDesignerFormWindowCursorInterface is a
- convenience class allowing you to query and modify a given form
- window's widget selection, and in addition modify the properties
- of all the form's widgets.
-
- \section1 Creating User Interfaces at Run-Time
-
- The \c QtDesigner module contains the QFormBuilder class that
- provides a mechanism for dynamically creating user interfaces at
- run-time, based on UI files created with \QD. This class is
- typically used by custom components and applications that embed
- \QD. Standalone applications that need to dynamically generate
- user interfaces at run-time use the QUiLoader class, found in
- the QtUiTools module.
-
- For a complete example using QUiLoader, see
- the \l {designer/calculatorbuilder}{Calculator Builder example}.
-
- \sa {Qt Designer Manual}, {QtUiTools Module}
-*/
diff --git a/doc/src/qtestlib.qdoc b/doc/src/qtestlib.qdoc
deleted file mode 100644
index 57683e61d..000000000
--- a/doc/src/qtestlib.qdoc
+++ /dev/null
@@ -1,779 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qtestlib-manual.html
- \title QTestLib Manual
- \ingroup architecture
- \brief An overview of Qt's unit testing framework.
-
- \keyword qtestlib
-
- The QTestLib framework, provided by Nokia, is a tool for unit
- testing Qt based applications and libraries. QTestLib provides
- all the functionality commonly found in unit testing frameworks as
- well as extensions for testing graphical user interfaces.
-
- Table of contents:
-
- \tableofcontents
-
- \section1 QTestLib Features
-
- QTestLib is designed to ease the writing of unit tests for Qt
- based applications and libraries:
-
- \table
- \header \o Feature \o Details
- \row
- \o \bold Lightweight
- \o QTestLib consists of about 6000 lines of code and 60
- exported symbols.
- \row
- \o \bold Self-contained
- \o QTestLib requires only a few symbols from the Qt Core library
- for non-gui testing.
- \row
- \o \bold {Rapid testing}
- \o QTestLib needs no special test-runners; no special
- registration for tests.
- \row
- \o \bold {Data-driven testing}
- \o A test can be executed multiple times with different test data.
- \row
- \o \bold {Basic GUI testing}
- \o QTestLib offers functionality for mouse and keyboard simulation.
- \row
- \o \bold {Benchmarking}
- \o QTestLib supports benchmarking and provides several measurement back-ends.
- \row
- \o \bold {IDE friendly}
- \o QTestLib outputs messages that can be interpreted by Visual
- Studio and KDevelop.
- \row
- \o \bold Thread-safety
- \o The error reporting is thread safe and atomic.
- \row
- \o \bold Type-safety
- \o Extensive use of templates prevent errors introduced by
- implicit type casting.
- \row
- \o \bold {Easily extendable}
- \o Custom types can easily be added to the test data and test output.
- \endtable
-
- Note: For higher-level GUI and application testing needs, please
- see the \l{Third-Party Tools}{Qt testing products provided by
- Nokia partners}.
-
-
- \section1 QTestLib API
-
- All public methods are in the \l QTest namespace. In addition, the
- \l QSignalSpy class provides easy introspection for Qt's signals and slots.
-
-
- \section1 Using QTestLib
-
- \section2 Creating a Test
-
- To create a test, subclass QObject and add one or more private slots to it. Each
- private slot is a testfunction in your test. QTest::qExec() can be used to execute
- all testfunctions in the test object.
-
- In addition, there are four private slots that are \e not treated as testfunctions.
- They will be executed by the testing framework and can be used to initialize and
- clean up either the entire test or the current test function.
-
- \list
- \o \c{initTestCase()} will be called before the first testfunction is executed.
- \o \c{cleanupTestCase()} will be called after the last testfunction was executed.
- \o \c{init()} will be called before each testfunction is executed.
- \o \c{cleanup()} will be called after every testfunction.
- \endlist
-
- If \c{initTestCase()} fails, no testfunction will be executed. If \c{init()} fails,
- the following testfunction will not be executed, the test will proceed to the next
- testfunction.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 0
-
- For more examples, refer to the \l{QTestLib Tutorial}.
-
- \section2 Building a Test
-
- If you are using \c qmake as your build tool, just add the
- following to your project file:
-
- \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 1
-
- If you are using other buildtools, make sure that you add the location
- of the QTestLib header files to your include path (usually \c{include/QtTest}
- under your Qt installation directory). If you are using a release build
- of Qt, link your test to the \c QtTest library. For debug builds, use
- \c{QtTest_debug}.
-
- See \l {Chapter 1: Writing a Unit Test}{Writing a Unit Test} for a step by
- step explanation.
-
- \section2 QTestLib Command Line Arguments
-
- \section3 Syntax
-
- The syntax to execute an autotest takes the following simple form:
-
- \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 2
-
- Substitute \c testname with the name of your executable. \c
- testfunctions can contain names of test functions to be
- executed. If no \c testfunctions are passed, all tests are run. If you
- append the name of an entry in \c testdata, the test function will be
- run only with that test data.
-
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 3
-
- Runs the test function called \c toUpper with all available test data.
-
- \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 4
-
- Runs the \c toUpper test function with all available test data,
- and the \c toInt test function with the testdata called \c
- zero (if the specified test data doesn't exist, the associated test
- will fail).
-
- \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 5
-
- Runs the testMyWidget function test, outputs every signal
- emission and waits 500 milliseconds after each simulated
- mouse/keyboard event.
-
- \section3 Options
-
- The following command line arguments are understood:
-
- \list
- \o \c -help \BR
- outputs the possible command line arguments and give some useful help.
- \o \c -functions \BR
- outputs all test functions available in the test.
- \o \c -o \e filename \BR
- write output to the specified file, rather than to standard output
- \o \c -silent \BR
- silent output, only shows warnings, failures and minimal status messages
- \o \c -v1 \BR
- verbose output; outputs information on entering and exiting test functions.
- \o \c -v2 \BR
- extended verbose output; also outputs each \l QCOMPARE() and \l QVERIFY()
- \o \c -vs \BR
- outputs every signal that gets emitted
- \o \c -xml \BR
- outputs XML formatted results instead of plain text
- \o \c -lightxml \BR
- outputs results as a stream of XML tags
- \o \c -eventdelay \e ms \BR
- if no delay is specified for keyboard or mouse simulation
- (\l QTest::keyClick(),
- \l QTest::mouseClick() etc.), the value from this parameter
- (in milliseconds) is substituted.
- \o \c -keydelay \e ms \BR
- like -eventdelay, but only influences keyboard simulation and not mouse
- simulation.
- \o \c -mousedelay \e ms \BR
- like -eventdelay, but only influences mouse simulation and not keyboard
- simulation.
- \o \c -keyevent-verbose \BR
- output more verbose output for keyboard simulation
- \o \c -maxwarnings \e number\BR
- sets the maximum number of warnings to output. 0 for unlimited, defaults to 2000.
- \endlist
-
- \section2 Creating a Benchmark
-
- To create a benchmark, follow the instructions for crating a test and then add a
- QBENCHMARK macro to the test function that you want to benchmark.
-
- \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 12
-
- The code insde the QBENCHMARK macro will be measured, and possibly also repeated
- several times in order to get an accurate measurement. This depends on the selected
- measurement back-end. Several back-ends are available an can be selected on the
- command line:
-
- \target testlib-benchmarking-measurement
-
- \table
- \header \o Name
- \o Commmand-line Arguemnt
- \o Availability
- \row \o Walltime
- \o (default)
- \o All platforms
- \row \o CPU tick counter
- \o -tickcounter
- \o Windows, Mac OS X, Linux, many UNIX-like systems.
- \row \o Valgrind/Callgrind
- \o -callgrind
- \o Linux (if installed)
- \row \o Event Counter
- \o -eventcounter
- \o All platforms
- \endtable
-
- In short, walltime is always available but requires many repetitions to
- get a useful result.
- Tick counters are usually available and can provide
- results with fewer repetitions, but can be susceptible to CPU frequency
- scaling issues.
- Valgrind provides exact results, but does not take
- I/O waits into account, and is only available on a limited number of
- platforms.
- Event counting is available on all platforms and it provides the number of events
- that were received by the event loop before they are sent to their corresponding
- targets (this might include non-Qt events).
-
- \note Depending on the device configuration, Tick counters on the
- Windows CE platform may not be as fine-grained, compared to other platforms.
- Devices that do not support high-resolution timers default to
- one-millisecond granularity.
-
- See the chapter 5 in the \l{QTestLib Tutorial} for more benchmarking examples.
-
- \section1 Using QTestLib remotely on Windows CE
- \c cetest is a convenience application which helps the user to launch an
- application remotely on a Windows CE device or emulator.
-
- It needs to be executed after the unit test has been successfully compiled.
-
- Prior to launching, the following files are copied to the device:
-
- \list
- \o all Qt libraries the project links to
- \o \l {QtRemote}{QtRemote.dll}
- \o the c runtime library specified during installation
- \o all files specified in the \c .pro file following the \l DEPLOYMENT rules.
- \endlist
-
- \section2 Using \c cetest
- \section3 Syntax
- The syntax to execute an autotest takes the following simple form:
-
- \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 6
-
- \section3 Options
- \c cetest provides the same options as those for unit-testing on non cross-compiled
- platforms. See \l {QTestLib Command Line Arguments} {Command Line Arguments} for
- more information.
-
- The following commands are also included:
-
- \list
- \o \c -debug \BR
- Test version compiled in debug mode.
- \o \c -release \BR
- Test version compiled in release mode.
- \o \c -libpath \e path \BR
- Target path to copy Qt libraries to.
- \o \c -qt-delete \BR
- Delete Qt libraries after execution.
- \o \c -project-delete \BR
- Delete project files after execution.
- \o \c -delete \BR
- Delete project and Qt libraries after execution.
- \o \c -conf \BR
- Specifies a qt.conf file to be deployed to remote directory.
- \endlist
-
- \note \c{debug} is the default build option.
-
- \section2 QtRemote
- \c QtRemote is a small library which is build after QTestLib. It allows the host
- system to create a process on a remote device and waits until its execution has
- been finished.
-
- \section2 Requirements
- \c cetest uses Microsoft ActiveSync to establish a remote connection between the
- host computer and the device. Thus header files and libraries are needed to compile
- cetest and QtRemote successfully.
-
- Prior to \l{Installing Qt on Windows CE}{installation} of Qt, you need to set your
- \c INCLUDE and \c LIB environment variables properly.
-
- A default installation of Windows Mobile 5 for Pocket PC can be obtained by:
-
- \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 7
-
- Note that Qt will remember the path, so you do not need to set it again
- after switching the environments for cross-compilation.
-
- \section1 3rd Party Code
-
- The CPU tick counters used for benchmarking is licensed under the following
- license: (from src/testlib/3rdparty/cycle.h)
-
- \legalese
- Copyright (c) 2003, 2006 Matteo Frigo\br
- Copyright (c) 2003, 2006 Massachusetts Institute of Technology
-
- Permission is hereby granted, free of charge, to any person obtaining
- a copy of this software and associated documentation files (the
- "Software"), to deal in the Software without restriction, including
- without limitation the rights to use, copy, modify, merge, publish,
- distribute, sublicense, and/or sell copies of the Software, and to
- permit persons to whom the Software is furnished to do so, subject to
- the following conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- \endlegalese
-*/
-
-/*!
- \page qtestlib-tutorial.html
- \brief A short introduction to testing with QTestLib.
- \contentspage QTestLib Manual
- \nextpage {Chapter 1: Writing a Unit Test}{Chapter 1}
-
- \title QTestLib Tutorial
- \ingroup howto
-
- This tutorial gives a short introduction to how to use some of the
- features of the QTestLib framework. It is divided into four
- chapters:
-
- \list 1
- \o \l {Chapter 1: Writing a Unit Test}{Writing a Unit Test}
- \o \l {Chapter 2: Data Driven Testing}{Data Driven Testing}
- \o \l {Chapter 3: Simulating GUI Events}{Simulating GUI Events}
- \o \l {Chapter 4: Replaying GUI Events}{Replaying GUI Events}
- \o \l {Chapter 5: Writing a Benchmark}{Writing a Benchmark}
- \endlist
-
-*/
-
-
-/*!
- \example qtestlib/tutorial1
-
- \contentspage {QTestLib Tutorial}{Contents}
- \nextpage {Chapter 2: Data Driven Testing}{Chapter 2}
-
- \title Chapter 1: Writing a Unit Test
-
- In this first chapter we will see how to write a simple unit test
- for a class, and how to execute it.
-
- \section1 Writing a Test
-
- Let's assume you want to test the behavior of our QString class.
- First, you need a class that contains your test functions. This class
- has to inherit from QObject:
-
- \snippet examples/qtestlib/tutorial1/testqstring.cpp 0
-
- Note that you need to include the QTest header, and that the
- test functions have to be declared as private slots so the
- test framework finds and executes it.
-
- Then you need to implement the test function itself. The
- implementation could look like this:
-
- \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 8
-
- The \l QVERIFY() macro evaluates the expression passed as its
- argument. If the expression evaluates to true, the execution of
- the test function continues. Otherwise, a message describing the
- failure is appended to the test log, and the test function stops
- executing.
-
- But if you want a more verbose output to the test log, you should
- use the \l QCOMPARE() macro instead:
-
- \snippet examples/qtestlib/tutorial1/testqstring.cpp 1
-
- If the strings are not equal, the contents of both strings is
- appended to the test log, making it immediately visible why the
- comparison failed.
-
- Finally, to make our test case a stand-alone executable, the
- following two lines are needed:
-
- \snippet examples/qtestlib/tutorial1/testqstring.cpp 2
-
- The \l QTEST_MAIN() macro expands to a simple \c main()
- method that runs all the test functions. Note that if both the
- declaration and the implementation of our test class are in a \c
- .cpp file, we also need to include the generated moc file to make
- Qt's introspection work.
-
- \section1 Executing a Test
-
- Now that we finished writing our test, we want to execute
- it. Assuming that our test was saved as \c testqstring.cpp in an
- empty directory: we build the test using qmake to create a project
- and generate a makefile.
-
- \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 9
-
- \bold {Note:}If you're using windows, replace \c make with \c
- nmake or whatever build tool you use.
-
- Running the resulting executable should give you the following
- output:
-
- \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 10
-
- Congratulations! You just wrote and executed your first unit test
- using the QTestLib framework.
-*/
-
-/*!
- \example qtestlib/tutorial2
-
- \previouspage {Chapter 1: Writing a Unit Test}{Chapter 1}
- \contentspage {QTestLib Tutorial}{Contents}
- \nextpage {Chapter 3: Simulating Gui Events}{Chapter 3}
-
- \title Chapter 2: Data Driven Testing
-
- In this chapter we will demonstrate how to execute a test
- multiple times with different test data.
-
- So far, we have hard coded the data we wanted to test into our
- test function. If we add more test data, the function might look like
- this:
-
- \snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 11
-
- To prevent that the function ends up being cluttered by repetitive
- code, QTestLib supports adding test data to a test function. All
- we need is to add another private slot to our test class:
-
- \snippet examples/qtestlib/tutorial2/testqstring.cpp 0
-
- \section1 Writing the Data Function
-
- A test function's associated data function carries the same name,
- appended by \c{_data}. Our data function looks like this:
-
- \snippet examples/qtestlib/tutorial2/testqstring.cpp 1
-
- First, we define the two elements of our test table using the \l
- QTest::addColumn() function: A test string, and the
- expected result of applying the QString::toUpper() function to
- that string.
-
- Then we add some data to the table using the \l
- QTest::newRow() function. Each set of data will become a
- separate row in the test table.
-
- \l QTest::newRow() takes one argument: A name that will be
- associated with the data set. If the test fails, the name will be
- used in the test log, referencing the failed data. Then we
- stream the data set into the new table row: First an arbitrary
- string, and then the expected result of applying the
- QString::toUpper() function to that string.
-
- You can think of the test data as a two-dimensional table. In
- our case, it has two columns called \c string and \c result and
- three rows. In addition a name as well as an index is associated
- with each row:
-
- \table
- \header
- \o index
- \o name
- \o string
- \o result
- \row
- \o 0
- \o all lower
- \o "hello"
- \o HELLO
- \row
- \o 1
- \o mixed
- \o "Hello"
- \o HELLO
- \row
- \o 2
- \o all upper
- \o "HELLO"
- \o HELLO
- \endtable
-
- \section1 Rewriting the Test Function
-
- Our test function can now be rewritten:
-
- \snippet examples/qtestlib/tutorial2/testqstring.cpp 2
-
- The TestQString::toUpper() function will be executed three times,
- once for each entry in the test table that we created in the
- associated TestQString::toUpper_data() function.
-
- First, we fetch the two elements of the data set using the \l
- QFETCH() macro. \l QFETCH() takes two arguments: The data type of
- the element and the element name. Then we perform the test using
- the \l QCOMPARE() macro.
-
- This approach makes it very easy to add new data to the test
- without modifying the test itself.
-
- And again, to make our test case a stand-alone executable,
- the following two lines are needed:
-
- \snippet examples/qtestlib/tutorial2/testqstring.cpp 3
-
- As before, the QTEST_MAIN() macro expands to a simple main()
- method that runs all the test functions, and since both the
- declaration and the implementation of our test class are in a .cpp
- file, we also need to include the generated moc file to make Qt's
- introspection work.
-*/
-
-/*!
- \example qtestlib/tutorial3
-
- \previouspage {Chapter 2 Data Driven Testing}{Chapter 2}
- \contentspage {QTestLib Tutorial}{Contents}
- \nextpage {Chapter 4: Replaying GUI Events}{Chapter 4}
-
- \title Chapter 3: Simulating GUI Events
-
- QTestLib features some mechanisms to test graphical user
- interfaces. Instead of simulating native window system events,
- QTestLib sends internal Qt events. That means there are no
- side-effects on the machine the tests are running on.
-
- In this chapter we will se how to write a simple GUI test.
-
- \section1 Writing a GUI test
-
- This time, let's assume you want to test the behavior of our
- QLineEdit class. As before, you will need a class that contains
- your test function:
-
- \snippet examples/qtestlib/tutorial3/testgui.cpp 0
-
- The only difference is that you need to include the QtGui class
- definitions in addition to the QTest namespace.
-
- \snippet examples/qtestlib/tutorial3/testgui.cpp 1
-
- In the implementation of the test function we first create a
- QLineEdit. Then we simulate writing "hello world" in the line edit
- using the \l QTest::keyClicks() function.
-
- \note The widget must also be shown in order to correctly test keyboard
- shortcuts.
-
- QTest::keyClicks() simulates clicking a sequence of keys on a
- widget. Optionally, a keyboard modifier can be specified as well
- as a delay (in milliseconds) of the test after each key click. In
- a similar way, you can use the QTest::keyClick(),
- QTest::keyPress(), QTest::keyRelease(), QTest::mouseClick(),
- QTest::mouseDClick(), QTest::mouseMove(), QTest::mousePress()
- and QTest::mouseRelease() functions to simulate the associated
- GUI events.
-
- Finally, we use the \l QCOMPARE() macro to check if the line edit's
- text is as expected.
-
- As before, to make our test case a stand-alone executable, the
- following two lines are needed:
-
- \snippet examples/qtestlib/tutorial3/testgui.cpp 2
-
- The QTEST_MAIN() macro expands to a simple main() method that
- runs all the test functions, and since both the declaration and
- the implementation of our test class are in a .cpp file, we also
- need to include the generated moc file to make Qt's introspection
- work.
-*/
-
-/*!
- \example qtestlib/tutorial4
-
- \previouspage {Chapter 3: Simulating GUI Event}{Chapter 3}
- \contentspage {QTestLib Tutorial}{Contents}
- \nextpage {Chapter 5: Writing a Benchmark}{Chapter 5}
-
- \title Chapter 4: Replaying GUI Events
-
- In this chapter, we will show how to simulate a GUI event,
- and how to store a series of GUI events as well as replay them on
- a widget.
-
- The approach to storing a series of events and replay them, is
- quite similar to the approach explained in \l {Chapter 2:
- Data Driven Testing}{chapter 2}; all you need is to add a data
- function to your test class:
-
- \snippet examples/qtestlib/tutorial4/testgui.cpp 0
-
- \section1 Writing the Data Function
-
- As before, a test function's associated data function carries the
- same name, appended by \c{_data}.
-
- \snippet examples/qtestlib/tutorial4/testgui.cpp 1
-
- First, we define the elements of the table using the
- QTest::addColumn() function: A list of GUI events, and the
- expected result of applying the list of events on a QWidget. Note
- that the type of the first element is \l QTestEventList.
-
- A QTestEventList can be populated with GUI events that can be
- stored as test data for later usage, or be replayed on any
- QWidget.
-
- In our current data function, we create two \l
- {QTestEventList}s. The first list consists of a single click to
- the 'a' key. We add the event to the list using the
- QTestEventList::addKeyClick() function. Then we use the
- QTest::newRow() function to give the data set a name, and
- stream the event list and the expected result into the table.
-
- The second list consists of two key clicks: an 'a' with a
- following 'backspace'. Again we use the
- QTestEventList::addKeyClick() to add the events to the list, and
- QTest::newRow() to put the event list and the expected
- result into the table with an associated name.
-
- \section1 Rewriting the Test Function
-
- Our test can now be rewritten:
-
- \snippet examples/qtestlib/tutorial4/testgui.cpp 2
-
- The TestGui::testGui() function will be executed two times,
- once for each entry in the test data that we created in the
- associated TestGui::testGui_data() function.
-
- First, we fetch the two elements of the data set using the \l
- QFETCH() macro. \l QFETCH() takes two arguments: The data type of
- the element and the element name. Then we create a QLineEdit, and
- apply the list of events on that widget using the
- QTestEventList::simulate() function.
-
- Finally, we use the QCOMPARE() macro to check if the line edit's
- text is as expected.
-
- As before, to make our test case a stand-alone executable,
- the following two lines are needed:
-
- \snippet examples/qtestlib/tutorial4/testgui.cpp 3
-
- The QTEST_MAIN() macro expands to a simple main() method that
- runs all the test functions, and since both the declaration and
- the implementation of our test class are in a .cpp file, we also
- need to include the generated moc file to make Qt's introspection
- work.
-*/
-
-/*!
- \example qtestlib/tutorial5
-
- \previouspage {Chapter 4: Replaying GUI Events}{Chapter 4}
- \contentspage {QTestLib Tutorial}{Contents}
-
- \title Chapter 5: Writing a Benchmark
-
- In this final chapter we will demonstrate how to write benchmarks
- using QTestLib.
-
- \section1 Writing a Benchmark
- To create a benchmark we extend a test function with a QBENCHMARK macro.
- A benchmark test function will then typically consist of setup code and
- a QBENCHMARK macro that contains the code to be measured. This test
- function benchmarks QString::localeAwareCompare().
-
- \snippet examples/qtestlib/tutorial5/benchmarking.cpp 0
-
- Setup can be done at the beginning of the function, the clock is not
- running at this point. The code inside the QBENCHMARK macro will be
- measured, and possibly repeated several times in order to get an
- accurate measurement.
-
- Several \l {testlib-benchmarking-measurement}{back-ends} are available
- and can be selected on the command line.
-
- \section1 Data Functions
-
- Data functions are useful for creating benchmarks that compare
- multiple data inputs, for example locale aware compare against standard
- compare.
-
- \snippet examples/qtestlib/tutorial5/benchmarking.cpp 1
-
- The test function then uses the data to determine what to benchmark.
-
- \snippet examples/qtestlib/tutorial5/benchmarking.cpp 2
-
- The "if(useLocaleCompare)" switch is placed outside the QBENCHMARK
- macro to avoid measuring its overhead. Each benchmark test function
- can have one active QBENCHMARK macro.
-
- \section1 External Tools
-
- Tools for handling and visualizing test data are available as part of
- the \l{qtestlib-tools} project on the Qt Labs Web site. These include
- a tool for comparing performance data obtained from test runs and a
- utility to generate Web-based graphs of performance data.
-
- See the \l{qtestlib-tools Announcement} for more information on these
- tools and a simple graphing example.
-
-*/
-
-
-
diff --git a/doc/src/qtgui.qdoc b/doc/src/qtgui.qdoc
deleted file mode 100644
index 63e544c2c..000000000
--- a/doc/src/qtgui.qdoc
+++ /dev/null
@@ -1,59 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtGui
- \title QtGui Module
- \contentspage Qt's Modules
- \previouspage QtCore
- \nextpage QtNetwork
- \ingroup modules
-
- \brief The QtGui module extends QtCore with GUI functionality.
-
- To include the definitions of both modules' classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qtgui.qdoc 0
-
- The QtGui module is part of the \l{Qt GUI Framework Edition},
- the \l{Qt Full Framework Edition}, and the \l{Open Source Versions of Qt}.
-*/
diff --git a/doc/src/qthelp.qdoc b/doc/src/qthelp.qdoc
deleted file mode 100644
index 3cffa3983..000000000
--- a/doc/src/qthelp.qdoc
+++ /dev/null
@@ -1,410 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtHelp
- \title QtHelp Module
- \contentspage Qt's Modules
- \previouspage QtUiTools
- \nextpage QtAssistant
- \ingroup modules
-
- \brief The QtHelp module provides classes for integrating
- online documentation in applications.
-
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 0
-
- To link against the module, add this line to your \l qmake \c
- .pro file:
-
- \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 1
-
- \note These classes are part of the \l{Open Source Versions of Qt} and
- \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial
- users.
-
- \section1 Topics
-
- \tableofcontents
-
- \section1 Overview
- The Qt help system includes tools for generating and viewing
- Qt help files. In addition it provides classes for accessing
- help contents programatically to be able to integrate online
- help into Qt applications.
-
- The actual help data, meaning the table of contents, index
- keywords or html documents, is contained in Qt compressed help
- files. So, one such a help file represents usually one manual
- or documentation set. Since most products are more comprehensive
- and consist of a number of tools, one manual is rarely enough.
- Instead, more manuals which should be accessible at the same
- time, exist. Ideally, it should also be possible to reference
- certain points of interest of one manual to another.
- Therefore, the Qt help system operates on help collection files
- which include any number of compressed help files.
-
- However, having collection files to merge many documentation
- sets may lead to some problems. For example, one index keyword
- may be defined in different documentations. So, when only seeing
- it in the index and activating it, you cannot be sure that
- the expected documentation will be shown. Therefore, the Qt
- help system offers the possibiltiy to filter the help contents
- after certain attributes. This requires however, that the
- attributes have been assigned to the help contents before the
- generation of the compressed help file.
-
- As already mentioned, the Qt compressed help file contains all
- data, so there is no need any longer to ship all single html
- files. Instead, only the compressed help file and optionally the
- collection file has to be distributed. The collection file is
- optional since any existing collection file, e.g. from an older
- release could be used.
-
- So, in general, there are four files interacting with the help
- system, two used for generating Qt help and two meant for
- distribution:
-
- \table
- \header
- \o Name
- \o Extension
- \o Brief Description
- \row
- \o \l {Qt Help Project}
- \o .qhp
- \o The input file for the help generator consisting of the table
- of contents, indices and references to the actual documentation
- files (*.html); it also defines a unique namespace for the
- documentation.
-
- \row
- \o Qt Compressed Help
- \o .qch
- \o The output file of the help generator. This binary file contains
- all information specified in the help project file along with all
- compressed documentation files.
-
- \row
- \o \l {Qt Help Collection Project}
- \o .qhcp
- \o The input file for the help collection generator. It contains
- references to compressed help files which should be included in
- the collection; it also may contain other information for
- customizing Qt Assistant.
-
- \row
- \o Qt Help Collection
- \o .qhc
- \o The output of the help collection generator. This is the file
- QHelpEngine operates on. It contains references to any number of
- compressed help files as well as additional information, such as
- custom filters.
- \endtable
-
- \section1 Generating Qt Help
-
- Building help files for the Qt help system assumes that the html
- documentation files already exist, i.e. the Qt help system does
- not offer the possibility to create html files like e.g. Doxygen.
-
- Once the html documentents are in place, a \l {Qt Help Project} file
- has to be created. After specifying all relevant information in
- this file, it needs to be compiled by calling:
-
- \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 2
-
- The file 'doc.qch' contains then all html files in compressed
- form along with the table of contents and index keywords. To
- test if the generated file is correct, open Qt Assistant and
- install the file via the Settings|Documentation page.
-
- \target Qt Help Collection Project
- \section2 Creating a Qt Help Collection
-
- The first step is to create a Qt Help Collection Project file.
- Since a Qt help collection stores primarily references to
- compressed help files, the project 'mycollection.qhcp' file
- looks unsurprisingly simple:
-
- \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 3
-
- For actually creating the collection file call:
-
- \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 4
-
- Instead of running two tools, one for generating the compressed
- help and one for generating the collection file, it is also
- possible to just run the qcollectiongenerator tool with a
- slightly modified project file instructing the generator to
- create the compressed help first.
-
- \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 5
-
- Of course, it is possible to specify more than one file in the
- 'generate' or 'register' section, so any number of compressed
- help files can be generated and registered in one go.
-
- \section1 Using Qt Help
-
- Accessing the help contents can be done in two ways: Using Qt
- Assistant as documentation browser or using the QHelpEngine
- API for embedding the help contents directly in an application.
-
- \section2 Using Qt Assistant
-
- \QA operates on a collection file which can be specified
- before start up. If no collection file is given, a default one
- will be created and used. In either case, it is possible to
- register any Qt compressed help file and access the help contents.
-
- When using Assistant as the help browser for an application, it
- would be desirable that it can be customized to fit better to the
- application and doesn't look like an independent, standalone
- help browser. To achieve this, several additional properties can
- be set in an Qt help collection file, to change e.g. the title
- or application icon of Qt Assistant. For more information on
- this topic have a look at the \l{assistant-manual.html}
- {Qt Assistant manual}.
-
- \section2 Using QHelpEngine API
-
- Instead of showing the help in an external application like the
- Qt Assistant, it is also possible to embed the online help in
- the application. The contents can then be retrieved via the
- QHelpEngine class and can be displayed in nearly any form.
- Showing it in a QTextBrowser is probably the most common way, but
- embedding it in What's This help is also perfectly possible.
-
- Retrieving help data from the file engine does not involve a
- lot of code. The first step is to create an instance of the
- help engine. Then we ask the engine for the links assigned to
- the identifier, in this case "MyDialog::ChangeButton". If a link
- was found, meaning at least one help document exists to this topic,
- we get the actual help contents by calling fileData() and display
- the document to the user.
-
- \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 6
-
- For further information on how to use the API, have a look at
- the QHelpEngine class reference.
-
- \section1 License Information
-
- The QtHelp module uses the CLucene indexing library to provide full-text
- searching capabilities for Qt Assistant and applications that use the
- features of QtHelp.
-
- Qt Commercial Edition licensees that wish to distribute applications that
- use these features of the QtHelp module need to be aware of their
- obligations under the GNU Lesser General Public License (LGPL).
-
- Developers using the Open Source Edition can choose to redistribute
- the module under the appropriate version of the GNU LGPL; version 2.1
- for applications and libraries licensed under the GNU GPL version 2,
- or version 3 for applications and libraries licensed under the GNU
- GPL version 3.
-
- \legalese
- Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team \BR
- Changes are Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- \endlegalese
-*/
-
-/*!
- \page qthelpproject.html
- \title Qt Help Project
-
- A Qt help project collects all data necessary to generate a
- compressed help file. Along with the actual help data, like
- the table of contents, index keywords and help documents, it
- contains some extra information like a namespace to identify
- the help file. One help project stands for one documentation,
- e.g. the Qt Assistant manual.
-
- \section1 Qt Help Project File Format
-
- The file format is XML-based. For a better understanding of
- the format we'll discuss the following example:
-
- \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 7
-
- \section2 Namespace
-
- To enable the QHelpEngine to retrieve the proper documentation to
- a given link, every documentation set has to have a unique
- identifier. A unique identifier makes is also possible for the
- help collection to keep track of a documentation set without relying
- on its file name. The Qt help system uses a namespace as identifier
- which is defined by the mandatory namespace tags. In the example
- above, the namespace is "mycompany.com.myapplication.1_0".
-
- \target Virtual Folders
- \section2 Virtual Folders
-
- Having a namespace for every documentation naturally means that
- the documentation sets are quite separated. From the help engines
- point of view this is beneficial, but from the documentors view
- it is often desirable to cross reference certain topic from one
- manual to another without having to specify absolute links. To
- solve this problem, the help system introduced the concept of
- virtual folders.
-
- A virtual folder will become the root directory of all files
- referenced in a compressed help file. When two documentations
- share the same virtual folder, they can use relative paths when
- defining hyperlinks pointing to the other documentation. If a
- file is contained in both documentations or manuals, the one
- from the current manual has precedence over the other.
-
- \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 8
-
- The above example specifies 'doc' as virtual folder. If another
- manual, e.g. for a small helper tool for 'My Application'
- specifies the same folder, it is sufficient to write
- 'doc.html#section1' to reference the first section in the
- 'My Application' manual.
-
- The virtual folder tag is mandatory and the folder must not
- contain any '/'.
-
- \target Custom Filters
- \section2 Custom Filters
-
- Next in the Qt help project file are the optional definitions of
- custom filters. A custom filter contains a list of filter
- attributes which will be used later to display only the documentation
- which has all those attributes assigned to. So, when setting the
- current filter in the QHelpEngine to "My Application 1.0" only
- the documentation which has "myapp" and "1.0" set as filter
- attributes will be shown.
-
- \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 9
-
- It is possible to define any number of custom filters in a help
- project file. Important to know is, that the filter attributes have
- not to be specified in the same project file; they can be defined
- in any other help file. The definition of a filter attributes
- takes place by specifying them in a filter section.
-
- \target Filter Section
- \section2 Filter Section
-
- A filter section contains the actual documentation. One Qt help project
- file may contain more than one filter sections. Every filter section
- consists of four parts, the filter attributes section, the table of
- contents, the keywords and the files list. In theory all parts are
- optional but not specifying anything there will result in an empty
- documentation.
-
- \section3 Filter Attributes
-
- Every filter section should have filter attributes assigned to it, to
- enable documentation filtering. If no filter attribute is defined, the
- documentation will only be shown if no filtering occurs, meaning the
- current custom filter in the QHelpEngine does not contain any filter
- attributes.
-
- \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 10
-
- In this case, the filter attributes 'myapp' and '1.0' are assigned
- to the filter section, i.e. all contents specified in this section
- will only be shown if the current custom filter has 'myapp' or '1.0'
- or both as filter attributes.
-
- \section3 Table of contents
-
- \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 11
-
- One section tag represents one item in the table of contents. The
- sections can be nested to any degree, but from a users perspective
- it should not be more than four or five levels. A section is defined
- by its title and reference. The reference, like all file references in a Qt
- help project, are relative to the help project file itself.
- \note The referenced files must be inside the same directory (or within a
- subdirectory) as the help project file. An absolute file path is not supported
- either.
-
- \section3 Keywords
-
- \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 12
-
- The keyword section lists all keywords of this filter section. A
- keyword consists basically of a name and a file reference. If the
- attribute 'name' is used then the keyword specified there will appear in
- the visible index, i.e. it will be accessible through the QHelpIndexModel.
- If 'id' is used, the keyword does not appear in the index and is
- only accessible via the linksForIdentifier() function of the
- QHelpEngineCore. 'name' and 'id' can be specified at the same time.
-
- \section3 Files
-
- \snippet doc/src/snippets/code/doc_src_qthelp.qdoc 13
-
- Finally, the actual documentation files have to be listed. Make sure
- that all files neccessary to display the help are mentioned, i.e.
- stylesheets or similar files need to be there as well. The files, like all
- file references in a Qt help project, are relative to the help project file
- itself. As the example shows, files (but not directories) can also be
- specified as patterns using wildcards. All listed files will be compressed
- and written to the Qt compressed help file. So, in the end, one single Qt
- help file contains all documentation files along with the contents and
- indices. \note The referenced files must be inside the same directory
- (or within a subdirectory) as the help project file. An absolute file path
- is not supported either.
-*/
diff --git a/doc/src/qtmac-as-native.qdoc b/doc/src/qtmac-as-native.qdoc
deleted file mode 100644
index 61c2143a6..000000000
--- a/doc/src/qtmac-as-native.qdoc
+++ /dev/null
@@ -1,202 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Qt for Mac OS X documentation
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-**********************************************************************/
-
-/*!
- \page qtmac-as-native.html
- \title Qt is Mac OS X Native
- \brief An explanation of Qt's native features on Mac OS X.
- \ingroup platform-notes
-
- This document explains what makes an application native on Mac OS X.
- It shows the areas where Qt is compliant, and the grey areas where
- compliance is more questionable. (See also the document
- \l{mac-differences.html}{Qt for Mac OS X - Specific Issues}.)
-
- Normally when referring to a native Mac application, one really means an
- application that talks directly to the underlying window system, rather
- than one that uses some intermediary (for example Apple's X11 server, or a
- web browser). Qt applications run as first class citizens, just like
- Cocoa, and Carbon applications. In fact, we use Carbon and HIView
- internally to communicate with OS X.
-
- When an application is running as a first class citizen, it means that
- it can interact with specific components of the Mac OS X experience:
-
- \tableofcontents
-
- \section1 The Global Menu Bar
-
- Qt does this via the QMenuBar abstraction. Mac users expect to
- have a menu bar at the top of the screen and Qt honors this.
-
- Additionally, users expect certain conventions to be respected, for
- example the application menu should contain About, Preferences,
- Quit, etc. Qt handles this automatically, although it does not
- provide a means of interacting directly with the application menu.
- (By doing this automatically, Qt makes it easier to port Qt
- applications to other platforms.)
-
- \section1 Aqua
-
- This is a critical piece of Mac OS X (documentation can be found at
- \l{http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html}).
- It is a huge topic, but the most important guidelines for GUI
- design are probably these:
-
- \list
- \i \e{Aqua look}
-
- As with Cocoa/Carbon, Qt provides widgets that look like those
- described in the Human Interface Descriptions. Qt's widgets use
- Appearance Manager on Mac OS X 10.2 and the new HIThemes on Mac OS X 10.3
- and higher to implement the look, in other words we use Apple's own API's
- for doing the rendering.
-
- \i \e{Aqua feel}
-
- This is a bit more subjective, but certainly Qt strives to
- provide the same feel as any Mac OS X application (and we
- consider situations where it doesn't achieve this to be bugs).
- Of course Qt has other concerns to bear in mind, especially
- remaining cross-platform. Some "baggage" that Qt carries is in
- an effort to provide a widget on a platform for which an
- equivelant doesn't exist, or so that a single API can be used to
- do something, even if the API doesn't make entire sense for a
- specific widget.
-
- \i \e{Aqua guides}
-
- This is the most subjective, but there are many suggestions and
- guidelines in the Aqua style guidelines. This is the area where Qt is
- of least assistance. The decisions that must be made to conform (widget
- sizes, widget layouts with respect to other widgets, window margins,
- placement of OK and Cancel, etc) must be made based on the user
- experience demanded by your application. If your user base is small or
- mostly comes from the Windows or Unix worlds, these are minor issues much
- less important than trying to make a mass market product. Qt for Mac OS X
- is fully API compatible with Qt for Windows and X11, but Mac OS X is a
- significantly different platform to Windows and some special
- considerations must be made based on your audience.
-
- \endlist
-
- \section1 Dock
-
- Interaction with the dock is possible. The icon can be set by calling
- QWidget::setWindowIcon() on the main window in your application. The
- setWindowIcon() call can be made as often as necessary, providing an
- icon that can be easily updated.
- \omit
- It is also possible to set a QMenu as the dock menu through the use of the
- qt_mac_set_dock_menu() function.
- \endomit
-
- \section1 Accessiblity
-
- Although many users never use this, some users will only interact with your
- applications via assistive devices. With Qt the aim is to make this
- automatic in your application so that it conforms to accepted practice on
- its platform. Qt uses Apple's accessibility framework to provide access
- to users with diabilities.
-
- \section1 Development Tools
-
- Mac OS X developers expect a certain level of interopability
- between their development toolkit and the platform's developer
- tools (for example Visual Studio, gmake, etc). Qt supports both Unix
- style Makefiles, and ProjectBuilder/Xcode project files by using
- the \l qmake tool. For example:
-
- \snippet doc/src/snippets/code/doc_src_qtmac-as-native.qdoc 0
-
- will generate an Xcode project file from project.pro. With \l qmake
- you do not have to worry about rules for Qt's preprocessors (\l moc
- and \l uic) since \l qmake automatically handles them and ensures that
- everything necessary is linked into your application.
-
- Qt does not entirely interact with the development environment (for
- example plugins to set a file to "mocable" from within the Xcode
- user interface). Nokia is actively working on improving Qt's
- interoperability with various IDEs.
-*/
diff --git a/doc/src/qtmain.qdoc b/doc/src/qtmain.qdoc
deleted file mode 100644
index 5f1f273d6..000000000
--- a/doc/src/qtmain.qdoc
+++ /dev/null
@@ -1,93 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qtmain.html
- \title The qtmain Library
- \ingroup licensing
- \ingroup platform-notes
- \brief Describes the use and license of the qtmain helper library.
-
- qtmain is a helper library that enables the developer to write a
- cross-platform main() function on Windows.
-
- If you do not use \l qmake or the \l{Visual Studio Integration}
- available to \l{Qt Commercial Editions}{commercial licensees}, you also
- need to link against the \c qtmain library.
-
- \section1 License Information
-
- The QAxContainer module is not covered by the \l{GNU General Public License (GPL)},
- the \l{GNU Lesser General Public License (LGPL)}, or the
- \l{Qt Commercial Editions}{Qt Commercial License}. Instead, it is distributed under
- the following license.
-
- \legalese
- Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).\br
- All rights reserved.
-
- Contact: Nokia Corporation (qt-info@nokia.com)\br
-
- You may use this file under the terms of the BSD license as follows:\br
-
- "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.\br
- * 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.\br
- * 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."
- \endlegalese
-*/
diff --git a/doc/src/qtnetwork.qdoc b/doc/src/qtnetwork.qdoc
deleted file mode 100644
index 7af99bfbf..000000000
--- a/doc/src/qtnetwork.qdoc
+++ /dev/null
@@ -1,344 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtNetwork
- \title QtNetwork Module
- \contentspage Qt's Modules
- \previouspage QtGui
- \nextpage QtOpenGL
- \ingroup modules
-
- \brief The QtNetwork module offers classes that allow you to
- write TCP/IP clients and servers.
-
- The network module provides classes to make network programming
- easier and portable. It offers classes such as QFtp that
- implement specific application-level protocols, lower-level classes
- such as QTcpSocket, QTcpServer and QUdpSocket that represent low
- level network concepts, and high level classes such as QNetworkRequest,
- QNetworkReply and QNetworkAccessManager to perform network operations using common protocols.
-
- The QtNetwork module is part of the \l{Qt Full Framework Edition} and the
- \l{Open Source Versions of Qt}.
-
- Topics:
-
- \tableofcontents
-
- \section1 Configuring the Build Process
-
- Applications that use Qt's networking classes need to
- be configured to be built against the QtNetwork module.
- The following declaration in a \c qmake project file ensures that
- an application is compiled and linked appropriately:
-
- \snippet doc/src/snippets/code/doc_src_qtnetwork.qdoc 0
-
- This line is necessary because only the QtCore and QtGui modules
- are used in the default build process.
-
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qtnetwork.qdoc 1
-
- \section1 High Level Network Operations for HTTP and FTP
-
- The Network Access API is a collection of classes for performing
- common network operations. The API provides an abstraction layer
- over the specific operations and protocols used (for example,
- getting and posting data over HTTP), and only exposes classes,
- functions, and signals for general or high level concepts.
-
- Network requests are represented by the QNetworkRequest class,
- which also acts as a general container for information associated
- with a request, such as any header information and the encryption
- used. The URL specified when a request object is constructed
- determines the protocol used for a request.
- Currently HTTP, FTP and local file URLs are supported for uploading
- and downloading.
-
- The coordination of network operations is performed by the
- QNetworkAccessManager class. Once a request has been created,
- this class is used to dispatch it and emit signals to report on
- its progress. The manager also coordinates the use of
- \l{QNetworkCookieJar}{cookies} to store data on the client,
- authentication requests, and the use of proxies.
-
- Replies to network requests are represented by the QNetworkReply
- class; these are created by QNetworkAccessManager when a request
- is dispatched. The signals provided by QNetworkReply can be used
- to monitor each reply individually, or developers may choose to
- use the manager's signals for this purpose instead and discard
- references to replies. Since QNetworkReply is a subclass of
- QIODevice, replies can be handled synchronously or asynchronously;
- i.e., as blocking or non-blocking operations.
-
- Each application or library can create one or more instances of
- QNetworkAccessManager to handle network communication.
-
- \section1 Writing FTP Clients with QFtp
-
- FTP (File Transfer Protocol) is a protocol used almost exclusively
- for browsing remote directories and for transferring files.
-
- \image httpstack.png FTP Client and Server
-
- FTP uses two network connections, one for sending
- commands and one for transferring data. The
- FTP protocol has a state and requires the client to send several
- commands before a file transfer takes place.
- FTP clients establish a connection
- and keeps it open throughout the session. In each session, multiple
- transfers can occur.
-
- The QFtp class provides client-side support for FTP.
- It has the following characteristics:
- \list
-
- \o \e{Non-blocking behavior.} QFtp is asynchronous.
- You can schedule a series of commands which are executed later,
- when control returns to Qt's event loop.
-
- \o \e{Command IDs.} Each command has a unique ID number that you
- can use to follow the execution of the command. For example, QFtp
- emits the \l{QFtp::commandStarted()}{commandStarted()} and
- \l{QFtp::commandFinished()}{commandFinished()} signal with the
- command ID for each command that is executed.
-
- \o \e{Data transfer progress indicators.} QFtp emits signals
- whenever data is transferred (QFtp::dataTransferProgress(),
- QNetworkReply::downloadProgress(), and
- QNetworkReply::uploadProgress()). You could connect these signals
- to QProgressBar::setProgress() or QProgressDialog::setProgress(),
- for example.
-
- \o \e{QIODevice support.} The class supports convenient
- uploading from and downloading to \l{QIODevice}s, in addition to a
- QByteArray-based API.
-
- \endlist
-
- There are two main ways of using QFtp. The most common
- approach is to keep track of the command IDs and follow the
- execution of every command by connecting to the appropriate
- signals. The other approach is to schedule all commands at once
- and only connect to the done() signal, which is emitted when all
- scheduled commands have been executed. The first approach
- requires more work, but it gives you more control over the
- execution of individual commands and allows you to initiate new
- commands based on the result of a previous command. It also
- enables you to provide detailed feedback to the user.
-
- The \l{network/ftp}{FTP} example
- illustrates how to write an FTP client.
- Writing your own FTP (or HTTP) server is possible using the
- lower-level classes QTcpSocket and QTcpServer.
-
- \section1 Using TCP with QTcpSocket and QTcpServer
-
- TCP (Transmission Control Protocol) is a low-level network
- protocol used by most Internet protocols, including HTTP and FTP,
- for data transfer. It is a reliable, stream-oriented,
- connection-oriented transport protocol. It is particularly well
- suited to the continuous transmission of data.
-
- \image tcpstream.png A TCP Stream
-
- The QTcpSocket class provides an interface for TCP. You can use
- QTcpSocket to implement standard network protocols such as POP3,
- SMTP, and NNTP, as well as custom protocols.
-
- A TCP connection must be established to a remote host and port
- before any data transfer can begin. Once the connection has been
- established, the IP address and port of the peer are available
- through QTcpSocket::peerAddress() and QTcpSocket::peerPort(). At
- any time, the peer can close the connection, and data transfer
- will then stop immediately.
-
- QTcpSocket works asynchronously and emits signals to report status
- changes and errors, just like QNetworkAccessManager and QFtp. It
- relies on the event loop to detect incoming data and to
- automatically flush outgoing data. You can write data to the
- socket using QTcpSocket::write(), and read data using
- QTcpSocket::read(). QTcpSocket represents two independent streams
- of data: one for reading and one for writing.
-
- Since QTcpSocket inherits QIODevice, you can use it with
- QTextStream and QDataStream. When reading from a QTcpSocket, you
- must make sure that enough data is available by calling
- QTcpSocket::bytesAvailable() beforehand.
-
- If you need to handle incoming TCP connections (e.g., in a server
- application), use the QTcpServer class. Call QTcpServer::listen()
- to set up the server, and connect to the
- QTcpServer::newConnection() signal, which is emitted once for
- every client that connects. In your slot, call
- QTcpServer::nextPendingConnection() to accept the connection and
- use the returned QTcpSocket to communicate with the client.
-
- Although most of its functions work asynchronously, it's possible
- to use QTcpSocket synchronously (i.e., blocking). To get blocking
- behavior, call QTcpSocket's waitFor...() functions; these suspend
- the calling thread until a signal has been emitted. For example,
- after calling the non-blocking QTcpSocket::connectToHost()
- function, call QTcpSocket::waitForConnected() to block the thread
- until the \l{QTcpSocket::connected()}{connected()} signal has
- been emitted.
-
- Synchronous sockets often lead to code with a simpler flow of
- control. The main disadvantage of the waitFor...() approach is
- that events won't be processed while a waitFor...() function is
- blocking. If used in the GUI thread, this might freeze the
- application's user interface. For this reason, we recommend that
- you use synchronous sockets only in non-GUI threads. When used
- synchronously, QTcpSocket doesn't require an event loop.
-
- The \l{network/fortuneclient}{Fortune Client} and
- \l{network/fortuneserver}{Fortune Server} examples show how to use
- QTcpSocket and QTcpServer to write TCP client-server
- applications. See also \l{network/blockingfortuneclient}{Blocking
- Fortune Client} for an example on how to use a synchronous
- QTcpSocket in a separate thread (without using an event loop),
- and \l{network/threadedfortuneserver}{Threaded Fortune Server}
- for an example of a multithreaded TCP server with one thread per
- active client.
-
- \section1 Using UDP with QUdpSocket
-
- UDP (User Datagram Protocol) is a lightweight, unreliable,
- datagram-oriented, connectionless protocol. It can be used when
- reliability isn't important. For example, a server that reports
- the time of day could choose UDP. If a datagram with the time of
- day is lost, the client can simply make another request.
-
- \image udppackets.png UDP Packets
-
- The QUdpSocket class allows you to send and receive UDP
- datagrams. It inherits QAbstractSocket, and it therefore shares
- most of QTcpSocket's interface. The main difference is that
- QUdpSocket transfers data as datagrams instead of as a continuous
- stream of data. In short, a datagram is a data packet of limited
- size (normally smaller than 512 bytes), containing the IP address
- and port of the datagram's sender and receiver in addition to the
- data being transferred.
-
- QUdpSocket supports IPv4 broadcasting. Broadcasting is often used
- to implement network discovery protocols, such as finding which
- host on the network has the most free hard disk space. One host
- broadcasts a datagram to the network that all other hosts
- receive. Each host that receives a request then sends a reply
- back to the sender with its current amount of free disk space.
- The originator waits until it has received replies from all
- hosts, and can then choose the server with most free space to
- store data. To broadcast a datagram, simply send it to the
- special address QHostAddress::Broadcast (255.255.255.255), or
- to your local network's broadcast address.
-
- QUdpSocket::bind() prepares the socket for accepting incoming
- datagrams, much like QTcpServer::listen() for TCP servers.
- Whenever one or more datagrams arrive, QUdpSocket emits the
- \l{QUdpSocket::readyRead()}{readyRead()} signal. Call
- QUdpSocket::readDatagram() to read the datagram.
-
- The \l{network/broadcastsender}{Broadcast Sender} and
- \l{network/broadcastreceiver}{Broadcast Receiver} examples show
- how to write a UDP sender and a UDP receiver using Qt.
-
- \section1 Resolving Host Names using QHostInfo
-
- Before establishing a network connection, QTcpSocket and
- QUdpSocket perform a name lookup, translating the host name
- you're connecting to into an IP address. This operation is
- usually performed using the DNS (Domain Name Service) protocol.
-
- QHostInfo provides a static function that lets you perform such a
- lookup yourself. By calling QHostInfo::lookupHost() with a host
- name, a QObject pointer, and a slot signature, QHostInfo will
- perform the name lookup and invoke the given slot when the
- results are ready. The actual lookup is done in a separate
- thread, making use of the operating system's own methods for
- performing name lookups.
-
- QHostInfo also provides a static function called
- QHostInfo::fromName() that takes the host name as argument and
- returns the results. In this case, the name lookup is performed
- in the same thread as the caller. This overload is useful for
- non-GUI applications or for doing name lookups in a separate,
- non-GUI thread. (Calling this function in a GUI thread may cause
- your user interface to freeze while the function blocks as
- it performs the lookup.)
-
- \section1 Support for Network Proxies
-
- Network communication with Qt can be performed through proxies,
- which direct or filter network traffic between local and remote
- connections.
-
- Individual proxies are represented by the QNetworkProxy class,
- which is used to describe and configure the connection to a proxy.
- Proxy types which operate on different levels of network communication
- are supported, with SOCKS 5 support allowing proxying of network
- traffic at a low level, and HTTP and FTP proxying working at the
- protocol level. See QNetworkProxy::ProxyType for more information.
-
- Proxying can be enabled on a per-socket basis or for all network
- communication in an application. A newly opened socket can be
- made to use a proxy by calling its QAbstractSocket::setProxy()
- function before it is connected. Application-wide proxying can
- be enabled for all subsequent socket connections through the use
- of the QNetworkProxy::setApplicationProxy() function.
-
- Proxy factories are used to create policies for proxy use.
- QNetworkProxyFactory supplies proxies based on queries for specific
- proxy types. The queries themselves are encoded in QNetworkProxyQuery
- objects which enable proxies to be selected based on key criteria,
- such as the purpose of the proxy (TCP, UDP, TCP server, URL request),
- local port, remote host and port, and the protocol in use (HTTP, FTP,
- etc.).
-
- QNetworkProxyFactory::proxyForQuery() is used to query the factory
- directly. An application-wide policy for proxying can be implemented
- by passing a factory to QNetworkProxyFactory::setApplicationProxyFactory()
- and a custom proxying policy can be created by subclassing
- QNetworkProxyFactory; see the class documentation for details.
-*/
diff --git a/doc/src/qtopengl.qdoc b/doc/src/qtopengl.qdoc
deleted file mode 100644
index bb2f4e796..000000000
--- a/doc/src/qtopengl.qdoc
+++ /dev/null
@@ -1,163 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtOpenGL
- \title QtOpenGL Module
- \contentspage Qt's Modules
- \previouspage QtNetwork
- \nextpage QtOpenVG
- \ingroup modules
-
- \brief The QtOpenGL module offers classes that make it easy to
- use OpenGL in Qt applications.
-
- OpenGL is a standard API for rendering 3D graphics. OpenGL only
- deals with 3D rendering and provides little or no support for GUI
- programming issues. The user interface for an OpenGL application
- must be created with another toolkit, such as Motif on the X
- platform, Microsoft Foundation Classes (MFC) under Windows, or Qt
- on both platforms.
-
- \bold{Note:} OpenGL is a trademark of Silicon Graphics, Inc. in
- the United States and other countries.
-
- The Qt OpenGL module makes it easy to use OpenGL in Qt applications.
- It provides an OpenGL widget class that can be used just like any
- other Qt widget, except that it opens an OpenGL display buffer where
- you can use the OpenGL API to render the contents.
-
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qtopengl.qdoc 0
-
- To link against the module, add this line to your \l qmake \c
- .pro file:
-
- \snippet doc/src/snippets/code/doc_src_qtopengl.qdoc 1
-
- The Qt OpenGL module is implemented as a platform-independent Qt/C++
- wrapper around the platform-dependent GLX (version 1.3 or later),
- WGL, or AGL C APIs. Although the basic functionality provided is very
- similar to Mark Kilgard's GLUT library, applications using the Qt
- OpenGL module can take advantage of the whole Qt API for
- non-OpenGL-specific GUI functionality.
-
- \warning The QtOpenGL module is part of the \l{Qt Full Framework Edition}
- and the \l{Open Source Versions of Qt}. It is available on Windows,
- X11, and Mac OS X. \l{Qt for Embedded Linux} supports OpenGL ES (OpenGL for
- Embedded Systems). To be able to use the OpenGL API in \l{Qt for Embedded Linux},
- it must be integrated with the Q Window System (QWS). See the
- \l{Qt for Embedded Linux and OpenGL} documentation for details.
-
- \section1 Installation
-
- When you install Qt for X11, the configure script will autodetect if
- OpenGL headers and libraries are installed on your system, and if so,
- it will include the QtOpenGL module in the Qt library. (If your
- OpenGL headers or libraries are placed in a non-standard directory,
- you may need to change the \c QMAKE_INCDIR_OPENGL and/or
- \c QMAKE_LIBDIR_OPENGL in the config file for your system).
-
- When you install Qt for Windows and Mac OS X, the QtOpenGL
- module is always included. X11 users might like to read the notes
- on overlays below.
-
- The QGL documentation assumes that you are familiar with OpenGL
- programming. If you're new to the subject a good starting point is
- \l{http://www.opengl.org/}.
-
- \section1 How to Use X11 Overlays with Qt
-
- X11 overlays are a powerful mechanism for drawing
- annotations etc., on top of an image without destroying it, thus saving
- a great deal of image rendering time. For more information, see the highly
- recommended book \e{OpenGL Programming for the X Window System} (Mark
- Kilgard, Addison Wesley Developers Press 1996).
-
- \warning The Qt OpenGL Extension includes direct support for the
- use of OpenGL overlays. For many uses of overlays, this makes the
- technique described below redundant. The following is a discussion
- on how to use non-QGL widgets in overlay planes.
-
- In the typical case, X11 overlays can easily be used together with the
- current version of Qt and the Qt OpenGL Extension. The following
- requirements apply:
-
- \list 1
- \i Your X server and graphics card/hardware must support overlays.
- For many X servers, overlay support can be turned on with
- a configuration option; consult your X server installation
- documentation.
-
- \i Your X server must (be configured to) use an overlay visual as the
- default visual. Most modern X servers do this, since this has the
- added advantage that pop-up menus, overlapping windows etc., will
- \e not affect underlying images in the main plane, thereby
- avoiding expensive redraws.
-
- \i The best (deepest) visual for OpenGL rendering is in the main
- plane. This is the normal case. Typically, X servers that support
- overlays provide a 24-bit \c TrueColor visual in the main plane,
- and an 8-bit \c PseudoColor (default) visual in the overlay plane.
- \endlist
-
- Assuming that the requirements mentioned above are met, a
- QGLWidget will default to using the main plane visual, while all
- other widgets will use the overlay visual. Thus, we can place a
- normal widget on top of the QGLWidget, and do drawing on it,
- without affecting the image in the OpenGL window. In other words,
- we can use all the drawing capabilities of QPainter to draw
- annotations, rubberbands, etc. For the typical use of overlays,
- this is much easier than using OpenGL for rendering annotations.
-
- An overlay plane has a specific color called the transparent
- color. Pixels drawn in this color will not be visible; instead
- the underlying OpenGL image will show through.
-
- To use this technique, you must not use the
- QApplication::ManyColor or QApplication::TrueColor color
- specification for QApplication, because this will force the
- normal Qt widgets to use a \c TrueColor visual, which will
- typically be in the main plane, not in the overlay plane as
- desired.
-*/
diff --git a/doc/src/qtopenvg.qdoc b/doc/src/qtopenvg.qdoc
deleted file mode 100644
index 9f0df5815..000000000
--- a/doc/src/qtopenvg.qdoc
+++ /dev/null
@@ -1,324 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtOpenVG
- \title QtOpenVG Module
- \since 4.6
- \contentspage Qt's Modules
- \previouspage QtOpenGL
- \nextpage QtScript
- \ingroup modules
-
- \brief The QtOpenVG module provides support classes for OpenVG painting.
-
- \tableofcontents
-
- OpenVG is a standard API from the
- \l{http://www.khronos.org/openvg}{Khronos Group} for accelerated
- 2D vector graphics that is appearing in an increasing number of
- embedded devices.
-
- OpenVG is optimized for 2D vector operations, and closely matches
- the functionality in QPainter. It can therefore be an excellent
- substitute for the default raster-based QPaintEngine on hardware
- that supports OpenVG.
-
- \section1 Building Qt with OpenVG support
-
- OpenVG support can be enabled by passing the \c{-openvg} option
- to configure. It is assumed that the following qmake variables
- are set to appropriate values in the qmake.conf file for your
- platform:
-
- \list
- \o QMAKE_INCDIR_OPENVG
- \o QMAKE_LIBDIR_OPENVG
- \o QMAKE_LIBS_OPENVG
- \endlist
-
- Most OpenVG implementations are based on EGL, so the following
- variables may also need to be set:
-
- \list
- \o QMAKE_INCDIR_EGL
- \o QMAKE_LIBDIR_EGL
- \o QMAKE_LIBS_EGL
- \endlist
-
- See \l{qmake Variable Reference} for more information on these variables.
-
- Two kinds of OpenVG engines are currently supported: EGL based,
- and engines built on top of OpenGL such as
- \l{http://sourceforge.net/projects/shivavg}{ShivaVG}.
- EGL based engines are preferred.
-
- It is assumed that the EGL implementation has some way to turn a
- QWidget::winId() into an EGL rendering surface with
- \c{eglCreateWindowSurface()}. If this is not the case, then
- modifications may be needed to the code under \c{src/gui/egl} and
- \c{src/plugins/graphicssystems/openvg} to accomodate the EGL
- implementation.
-
- The ShivaVG graphics system under \c{src/plugins/graphicssystems/shivavg}
- is an example of how to integrate a non-EGL implementation of
- OpenVG into Qt. It is currently only supported with Qt/X11
- and being an example only, the resulting screen output may not
- be as good as with other OpenVG engines.
-
- \section1 Using the OpenVG graphics system
-
- Once the graphics system plugin has been built and installed,
- applications can be run as follows to use the plugin:
-
- \code
- app -graphicssystem OpenVG
- \endcode
-
- If ShivaVG is being used, then substitute \c ShivaVG instead of
- \c OpenVG in the line above.
-
- If the plugin fails to load, try setting the \c QT_DEBUG_PLUGINS
- environment variable to 1 and try again. Usually the plugin
- cannot be loaded because Qt cannot locate it in the directory
- \c{plugins/graphicssystems} within the Qt installation, or the
- dynamic library path does not include the directory containing
- the system's \c libOpenVG.so library.
-
- \section1 Supported features
-
- \section2 Context modes
-
- The default configuration is "single-context" mode, where a single
- EGLContext object is used for all drawing, regardless of the surface.
- Multiple EGLSurfaces are created, one for each window surface or pixmap.
- eglMakeCurrent() is called with the same EGLContext every time, but a
- different EGLSurface.
-
- Single-context mode is necessary for QPixmapData to be implemented in
- terms of a VGImage. If single-context mode is not enabled, then QPixmapData
- will use the fallback QRasterPixmapData implementation, which is less
- efficient performance-wise.
-
- Single-context mode can be disabled with the QVG_NO_SINGLE_CONTEXT define
- if the OpenVG engine does not support one context with multiple surfaces.
-
- \section2 Transformation matrices
-
- All affine and projective transformation matrices are supported.
-
- QVGPaintEngine will use the engine to accelerate affine transformation
- matrices only. When a projective transformation matrix is used,
- QVGPaintEngine will transform the coordinates before passing them
- to the engine. This will probably incur a performance penalty.
-
- Pixmaps and images are always transformed by the engine, because
- OpenVG specifies that projective transformations must work for images.
-
- It is recommended that client applications should avoid using projective
- transformations for non-image elements in performance critical code.
-
- \section2 Composition modes
-
- The following composition modes are supported:
-
- \list
- \o QPainter::CompositionMode_SourceOver
- \o QPainter::CompositionMode_DestinationOver
- \o QPainter::CompositionMode_Source
- \o QPainter::CompositionMode_SourceIn
- \o QPainter::CompositionMode_DestinationIn
- \o QPainter::CompositionMode_Plus
- \o QPainter::CompositionMode_Multiply
- \o QPainter::CompositionMode_Screen
- \o QPainter::CompositionMode_Darken
- \o QPainter::CompositionMode_Lighten
- \endlist
-
- The other members of QPainter::CompositionMode are not supported
- because OpenVG 1.1 does not have an equivalent in its \c VGBlendMode
- enumeration. Any attempt to set an unsupported mode will result in
- the actual mode being set to QPainter::CompositionMode_SourceOver.
- Client applications should avoid using unsupported modes.
-
- \section2 Pens and brushes
-
- All pen styles are supported, including cosmetic pens.
-
- All brush styles are supported except for conical gradients, which are
- not supported by OpenVG 1.1. Conical gradients will be converted into a
- solid color brush corresponding to the first color in the gradient's
- color ramp.
-
- Affine matrices are supported for brush transforms, but not projective
- matrices.
-
- \section2 Rectangles, lines, and points
-
- Rectangles and lines use cached VGPath objects to try to accelerate
- drawing operations. vgModifyPathCoords() is used to modify the
- co-ordinates in the cached VGPath object each time fillRect(),
- drawRects(), or drawLines() is called.
-
- If the engine does not implement vgModifyPathCoords() properly, then the
- QVG_NO_MODIFY_PATH define can be set to disable path caching. This will
- incur a performance penalty.
-
- Points are implemented as lines from the point to itself. The cached
- line drawing VGPath object is used when drawing points.
-
- \section2 Polygons and Ellipses
-
- Polygon and ellipse drawing creates a new VGPath object every time
- drawPolygon() or drawEllipse() is called. If the client application is
- making heavy use of these functions, the constant creation and destruction
- of VGPath objects could have an impact on performance.
-
- If a projective transformation is active, ellipses are converted into
- cubic curves prior to transformation, which may further impact performance.
-
- Client applications should avoid polygon and ellipse drawing in performance
- critical code if possible.
-
- \section2 Other Objects
-
- Most other objects (arcs, pies, etc) use drawPath(), which takes a
- QPainterPath argument. The default implementation in QPainterEngineEx
- converts the QPainterPath into a QVectorPath and then calls draw(),
- which in turn converts the QVectorPath into a VGPath for drawing.
-
- To reduce the overhead, we have overridden drawPath() in QVGPaintEngine
- to convert QPainterPath's directly into VGPath's. This should help improve
- performance compared to the default implementation.
-
- Client applications should try to avoid these types of objects in
- performance critical code because of the QPainterPath to VGPath
- conversion cost.
-
- \section2 Clipping
-
- Clipping with QRect, QRectF, and QRegion objects is supported on all
- OpenVG engines with vgMask() if the transformation matrix is the identity
- or a simple origin translation.
-
- Clipping with an arbitrary QPainterPath, or setting the clip region when
- the transformation matrix is simple, is supported only if the OpenVG engine
- has the vgRenderToMask() function (OpenVG 1.1 and higher).
-
- 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.
- The QVG_SCISSOR_CLIP define should only be used if the OpenVG engine
- does not support vgMask() or vgRenderToMask().
-
- \section2 Opacity
-
- Opacity is supported for all drawing operations. Solid color pens,
- solid color brushes, gradient brushes, and image drawing with drawPixmap()
- and drawImage() will probably have the best performance compared to
- other kinds of pens and brushes.
-
- \section2 Text Drawing
-
- If OpenVG 1.1 is used, the paint engine will use VG fonts to cache glyphs
- while drawing. If the engine does not support VG fonts correctly,
- QVG_NO_DRAW_GLYPHS can be defined to disable this mode. Text drawing
- performance will suffer if VG fonts are not used.
-
- By default, image-based glyphs are used. If QVG_NO_IMAGE_GLYPHS is defined,
- then path-based glyphs will be used instead. QVG_NO_IMAGE_GLYPHS is ignored
- if QVG_NO_DRAW_GLYPHS is defined.
-
- If path-based glyphs are used, then the OpenVG engine will need to
- support hinting to render text with good results. Image-based glyphs
- avoids the need for hinting and will usually give better results than
- path-based glyphs.
-
- \section2 Pixmaps
-
- In single-context mode, pixmaps will be implemented using VGImage
- unless QVG_NO_PIXMAP_DATA is defined.
-
- QVGPixmapData will convert QImage's into VGImage's when the application
- calls drawPixmap(), and the pixmap will be kept in VGImage form for the
- lifetime of the QVGPixmapData object. When the application tries to paint
- into a QPixmap with QPainter, the data will be converted back into a
- QImage and the raster paint engine will be used to render into the QImage.
-
- This arrangement optimizes for the case of drawing the same static pixmap
- over and over (e.g. for icons), but does not optimize the case of drawing
- into pixmaps.
-
- Bitmaps must use QRasterPixmapData. They are not accelerated with
- VGImage at present.
-
- \section2 Pixmap filters
-
- Convolution, colorize, and drop shadow filters are accelerated using
- OpenVG operations.
-
- \section1 Known issues
-
- Performance of copying the contents of an OpenVG-rendered window to the
- screen needs platform-specific work in the QVGWindowSurface class.
-
- Clipping with arbitrary non-rectangular paths only works on engines
- that support vgRenderToMask(). Simple rectangular paths are supported
- on all engines that correctly implement vgMask().
-
- The paint engine is not yet thread-safe, so it is not recommended for
- use in threaded Qt applications that draw from multiple threads.
- Drawing should be limited to the main GUI thread.
-
- Performance of projective matrices for non-image drawing is not as good
- as for affine matrices.
-
- QPixmap's are implemented as VGImage objects so that they can be quickly
- rendered with drawPixmap(). Rendering into a QPixmap using QPainter
- will use the default Qt raster paint engine on a QImage copy of the
- QPixmap, and will not be accelerated. This issue may be addressed in
- a future version of the engine.
-
- ShivaVG support is highly experimental and limited to Qt/X11. It is
- provided as an example of how to integrate a non-EGL engine.
- */
diff --git a/doc/src/qtopiacore-architecture.qdoc b/doc/src/qtopiacore-architecture.qdoc
deleted file mode 100644
index 06ffac65f..000000000
--- a/doc/src/qtopiacore-architecture.qdoc
+++ /dev/null
@@ -1,338 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-embedded-architecture.html
-
- \title Qt for Embedded Linux Architecture
- \ingroup qt-embedded-linux
-
- A \l{Qt for Embedded Linux} application requires a server
- application to be running, or to be the server application itself.
- Any \l{Qt for Embedded Linux} application can act as the server.
- When more than one application is running, the subsequent
- applications connect to the existing server application as clients.
-
- The server and client processes have different responsibilities:
- The server process manages pointer handling, character input, and
- screen output. In addition, the server controls the appearance of
- the screen cursor and the screen saver. The client process
- performs all application specific operations.
-
- The server application is represented by an instance of the
- QWSServer class, while the client applications are represented by
- instances of the QWSClient class. On each side, there are several
- classes performing the various operations.
-
- \image qt-embedded-architecture2.png
-
- All system generated events, including keyboard and mouse events,
- are passed to the server application which then propagates the
- event to the appropriate client.
-
- When rendering, the default behavior is for each client to render
- its widgets into memory while the server is responsible for
- putting the contents of the memory onto the screen. But when the
- hardware is known and well defined, as is often the case with
- software for embedded devices, it may be useful for the clients to
- manipulate and control the underlying hardware directly.
- \l{Qt for Embedded Linux} provides two different approaches to
- achieve this behavior, see the graphics rendering section below for
- details.
-
- \tableofcontents
-
- \section1 Client/Server Communication
-
- The running applications continuously alter the appearance of the
- screen by adding and removing widgets. The server maintains
- information about each top-level window in a corresponding
- QWSWindow object.
-
- Whenever the server receives an event, it queries its stack of
- top-level windows to find the window containing the event's
- position. Each window can identify the client application that
- created it, and returns its ID to the server upon
- request. Finally, the server forwards the event, encapsulated by
- an instance of the QWSEvent class, to the appropriate client.
-
- \image qt-embedded-clientservercommunication.png
-
- If an input method is installed, it is used as a filter between
- the server and the client application. Derive from the
- QWSInputMethod class to implement custom input methods, and use
- the server's \l {QWSServer::}{setCurrentInputMethod()} function to
- install it. In addition, it is possible to implement global,
- low-level filters on key events using the
- QWSServer::KeyboardFilter class; this can be used to implement
- things like advanced power management suspended from a button
- without having to filter for it in all applications.
-
- \table 100%
- \header \o UNIX Domain Socket
- \row
- \o
-
- \image qt-embedded-client.png
-
- The server communicates with the client applications over the UNIX
- domain socket. You can retrieve direct access to all the events a
- client receives from the server, by reimplementing QApplication's
- \l {QApplication::}{qwsEventFilter()} function.
-
- \endtable
-
- The clients (and the server) communicate with each other using the
- QCopChannel class. QCOP is a many-to-many communication protocol
- for transferring messages on various channels. A channel is
- identified by a name, and anyone who wants to can listen to
- it. The QCOP protocol allows clients to communicate both within
- the same address space and between different processes.
-
- \section1 Pointer Handling Layer
-
- \list
- \o QWSMouseHandler
- \o QMouseDriverPlugin
- \o QMouseDriverFactory
- \endlist
-
- The mouse driver (represented by an instance of the
- QWSMouseHandler class) is loaded by the server application when it
- starts running, using Qt's \l {How to Create Qt Plugins}{plugin
- system}.
-
- \image qt-embedded-pointerhandlinglayer.png
-
- A mouse driver receives mouse events from the device and
- encapsulates each event with an instance of the QWSEvent class
- which it then passes to the server.
-
- \l{Qt for Embedded Linux} provides ready-made drivers for several mouse
- protocols, see the \l{Qt for Embedded Linux Pointer Handling}{pointer
- handling} documentation for details. Custom mouse drivers can be
- implemented by subclassing the QWSMouseHandler class and creating
- a mouse driver plugin. The default implementation of the
- QMouseDriverFactory class will automatically detect the plugin,
- loading the driver into the server application at runtime.
-
- In addition to the generic mouse handler, \l{Qt for Embedded Linux}
- provides a calibrated mouse handler. Use the
- QWSCalibratedMouseHandler class as the base class when the system
- device does not have a fixed mapping between device and screen
- coordinates and/or produces noisy events, e.g. a touchscreen.
-
- See also: \l{Qt for Embedded Linux Pointer Handling} and
- \l{How to Create Qt Plugins}.
-
- \section1 Character Input Layer
-
- \list
- \o QWSKeyboardHandler
- \o QKbdDriverPlugin
- \o QKbdDriverFactory
- \endlist
-
- The keyboard driver (represented by an instance of the
- QWSKeyboardHandler class) is loaded by the server application when
- it starts running, using Qt's \l {How to Create Qt Plugins}{plugin
- system}.
-
- \image qt-embedded-characterinputlayer.png
-
- A keyboard driver receives keyboard events from the device and
- encapsulates each event with an instance of the QWSEvent class
- which it then passes to the server.
-
- \l{Qt for Embedded Linux} provides ready-made drivers for several keyboard
- protocols, see the \l {Qt for Embedded Linux Character Input}{character
- input} documentation for details. Custom keyboard drivers can be
- implemented by subclassing the QWSKeyboardHandler class and
- creating a keyboard driver plugin. The default implementation of the
- QKbdDriverFactory class will automatically detect the plugin, loading the
- driver into the server application at run-time.
-
- See also: \l{Qt for Embedded Linux Character Input} and \l {How to Create
- Qt Plugins}.
-
- \section1 Graphics Rendering
-
- \list
- \o QApplication
- \o QDecoration
- \o QDecorationPlugin
- \o QDecorationFactory
- \endlist
-
- The default behavior is for each client to render its widgets as well
- as its decorations into memory, while the server copies the memory content
- to the device's framebuffer.
-
- Whenever a client receives an event that alters any of its
- widgets, the application updates the relevant parts of its memory
- buffer:
-
- \image qt-embedded-clientrendering.png
-
- The decoration is loaded by the client application when it starts
- running (using Qt's \l {How to Create Qt Plugins}{plugin system}),
- and can be customized by deriving from the QDecoration class and
- creating a decoration plugin. The default implementation of
- the QDecorationFactory class will automatically detect the plugin,
- loading the decoration into the application at runtime. Call the
- QApplication::qwsSetDecoration() function to actually apply the
- given decoration to an application.
-
- \table 100%
- \header \o Direct Painting \target Direct Painting
- \row
- \o
-
- It is possible for the clients to manipulate and control the
- underlying hardware directly. There are two ways of achieving
- this: The first approach is to set the Qt::WA_PaintOnScreen window
- attribute for each widget, the other is to use the QDirectPainter
- class to reserve a region of the framebuffer.
-
- \image qt-embedded-setwindowattribute.png
-
- By setting the Qt::WA_PaintOnScreen attribute, the application
- renders the widget directly onto the screen and the affected
- region will not be modified by the screen driver \e unless another
- window with a higher focus requests (parts of) the same
- region. Note that if you want to render all of an application's
- widgets directly on screen, it might be easier to set the
- QT_ONSCREEN_PAINT environment variable.
-
- \image qt-embedded-reserveregion.png
-
- Using QDirectPainter, on the other hand, provides a complete
- control over the reserved region, i.e., the screen driver will
- never modify the given region.
-
- To draw on a region reserved by a QDirectPainter instance, the
- application must get hold of a pointer to the framebuffer. In
- general, a pointer to the framebuffer can be retrieved using the
- QDirectPainter::frameBuffer() function. But note that if the
- current screen has subscreens, you must query the screen driver
- instead to identify the correct subscreen. A pointer to the
- current screen driver can always be retrieved using the static
- QScreen::instance() function. Then use QScreen's \l
- {QScreen::}{subScreenIndexAt()} and \l {QScreen::}{subScreens()}
- functions to access the correct subscreen, and the subscreen's \l
- {QScreen::}{base()} function to retrieve a pointer to the
- framebuffer.
-
- Note that \l{Qt for Embedded Linux} also provides the QWSEmbedWidget class,
- making it possible to embed the reserved region (i.e., the
- QDirectPainter object) in a regular widget.
-
- \endtable
-
- \section1 Drawing on Screen
-
- \list
- \o QScreen
- \o QScreenDriverPlugin
- \o QScreenDriverFactory
- \endlist
-
- When a screen update is required, the server runs through all the
- top-level windows that intersect with the region that is about to
- be updated, and ensures that the associated clients have updated
- their memory buffer. Then the server uses the screen driver
- (represented by an instance of the QScreen class) to copy the
- content of the memory to the screen.
-
- The screen driver is loaded by the server application when it
- starts running, using Qt's plugin system. \l{Qt for Embedded Linux}
- provides ready-made drivers for several screen protocols, see the
- \l{Qt for Embedded Linux Display Management}{display management}
- documentation for details. Custom screen drivers can be
- implemented by subclassing the QScreen class and creating a screen
- driver plugin. The default implementation of the QScreenDriverFactory
- class will automatically detect the plugin, loading the driver into
- the server application at run-time.
-
- \image qt-embedded-drawingonscreen.png
-
- To locate the relevant parts of memory, the driver is provided
- with the list of top-level windows that intersect with the given
- region. Associated with each of the top-level windows there is an
- instance of the QWSWindowSurface class representing the drawing
- area of the window. The driver uses these objects to retrieve
- pointers to the various memory blocks. Finally, the screen driver
- composes the surface images before copying the updated region to
- the framebuffer.
-
- \table 100%
- \header \o Accelerated Graphics
- \row
- \o
-
- In \l{Qt for Embedded Linux}, painting is a pure software implementation,
- but (starting with Qt 4.2) it is possible to add an accelerated
- graphics driver to take advantage of available hardware resources.
-
- \image qt-embedded-accelerateddriver.png
-
- The clients render each window onto a corresponding window surface
- object using Qt's paint system, and then store the surface in
- memory. The screen driver accesses the memory and composes the
- surface images before it copies them to the screen as explained
- above.
-
- To add an accelerated graphics driver you must create a custom
- screen and implement a custom raster paint engine
- (\l{Qt for Embedded Linux} uses a raster-based paint engine to
- implement the painting operations). Then you must create a custom
- paint device that is aware of your paint engine, a custom window
- surface that knows about your paint device, and make your screen
- able to recognize your window surface.
-
- See the \l{Adding an Accelerated Graphics Driver to Qt for Embedded Linux}
- {accelerated graphics driver} documentation for details.
-
- \endtable
-
- See also: \l{Qt for Embedded Linux Display Management} and
- \l{How to Create Qt Plugins}.
-*/
diff --git a/doc/src/qtopiacore-displaymanagement.qdoc b/doc/src/qtopiacore-displaymanagement.qdoc
deleted file mode 100644
index 8a743b1d8..000000000
--- a/doc/src/qtopiacore-displaymanagement.qdoc
+++ /dev/null
@@ -1,205 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qt-embedded-displaymanagement.html
-
- \title Qt for Embedded Linux Display Management
- \ingroup qt-embedded-linux
-
- When rendering, the default behavior for each Qt for Embedded Linux
- client is to render its widgets into memory, while the server is
- responsible for putting the contents of the memory onto the
- screen. The server uses the screen driver to copy the content of
- the memory to the display.
-
- The screen driver is loaded by the server application when it
- starts running, using Qt's \l {How to Create Qt Plugins}{plugin
- system}.
-
- Contents:
-
- \tableofcontents
-
- \section1 Available Drivers
-
- \l{Qt for Embedded Linux} provides drivers for the Linux framebuffer, the
- virtual framebuffer, transformed screens, VNC servers and multi
- screens. Run the \c configure script to list the available
- drivers:
-
- \if defined(QTOPIA_DOCS)
- \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 0
- \else
- \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 1
- \endif
-
- \if defined(QTOPIA_DOCS)
- In the default Qt Extended configuration, only an unaccelerated Linux
- framebuffer driver (\c /dev/fb0) is enabled. The various drivers
- can be enabled and disabled using the \c configure script. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 2
- \else
- In the default Qt configuration, only an unaccelerated Linux
- framebuffer driver (\c /dev/fb0) is enabled. The various drivers
- can be enabled and disabled using the \c configure script. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 3
- \endif
-
- Custom screen drivers can be implemented by subclassing the
- QScreen class and creating a screen driver plugin (derived from
- the QScreenDriverPlugin class). The default implementation
- of the QScreenDriverFactory class will automatically detect the
- plugin, loading the driver into the server application at run-time.
-
- \section1 Specifying a Driver
-
- To specify which driver to use, set the QWS_DISPLAY environment
- variable. For example (if the current shell is bash, ksh, zsh or
- sh):
-
- \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 4
-
- The valid values for the \c <driver> argument are \c LinuxFb, \c
- QVFb, \c VNC, \c Transformed, \c Multi and \l
- {QScreenDriverPlugin::keys()}{keys} identifying custom drivers,
- and the \c {<display num>} argument is used to separate screens
- that are using the same screen driver and to enable multiple
- displays (see the \l {Running Qt for Embedded Linux Applications}
- documentation for more details). The driver specific options are
- described in the table below.
-
- \table
- \header
- \o Driver Specific Option \o Available For \o Description
- \row
- \o \c tty=<device>
- \o LinuxFb
- \o Passes the device file to the console the application is
- running on.
- \row
- \o \c nographicsmodeswitch
- \o LinuxFb
- \o Ensures that the application is not in graphics mode.
- \row
- \o \c littleendian
- \o LinuxFb
- \o Tells the driver it must handle a little-endian frame
- buffer in a big-endian system.
- \row
- \o \c mmWidth=<value> \target mmWidth
- \o LinuxFb, QVFb
- \o The screen's physical width (used to calculate DPI).
- \row
- \o \c mmHeight=<value> \target mmHeight
- \o LinuxFb, QVFb
- \o The screen's physical height (used to calculate DPI).
- \row
- \o \c <device>
- \o LinuxFb
- \o
- \row
- \o \c <subdriver>
- \o VNC, Transformed, Multi
- \o Specifies a subdriver.
- \row
- \o \c <RotX>
- \o Transformed
- \o Specifies the rotation of the screen. The valid values of
- \c X are 90, 180 and 270.
- \row
- \o \c offset=<x,y>
- \o Multi
- \o Specifies the coordinates of a subscreens top-left corner
- (by default 0,0).
-
- \endtable
-
- The QWS_DISPLAY environment variable can also be set using the \c
- -display option when running an application. For example:
-
- \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 5
-
- \section1 Subdrivers and Multiple Drivers
-
- The VNC, Transformed and Multi screen drivers depend on
- subdrivers. The general syntax for specifying a driver is as
- follows:
-
- \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 6
-
- In the case of subdrivers, it is important to add a space between
- each subdriver and before the display number to separate the
- various drivers and displays. Note that \c Multi screen drivers
- can have several subdrivers. For example:
-
- \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 7
-
- Note also that the VNC screen driver defaults to a virtual screen
- driver if no subdriver is specified. In this case the VNC driver accepts a
- few additional (optional) arguments specifying the size and depth
- of the default virtual screen:
-
- \list
- \o \c {size=<width x height>}
- \o \c {depth=<value>}
- \o \c {mmHeight=<physical height in millimeters>}
- \o \c {mmWidth=<physical width in millimeters>}
- \endlist
-
- Example running the VNC screen driver with a virtual screen of size
- 720x480 with 32 bits per pixel:
-
- \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 8
-
- Example running the VNC screen driver on top of the Linux framebuffer
- driver:
-
- \snippet doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc 9
-
- In this last example, Qt is using two screen drivers simultaneously,
- displaying output on both the device's screen and across a network on
- VNC client displays.
-*/
diff --git a/doc/src/qtopiacore-opengl.qdoc b/doc/src/qtopiacore-opengl.qdoc
deleted file mode 100644
index e61ccdebc..000000000
--- a/doc/src/qtopiacore-opengl.qdoc
+++ /dev/null
@@ -1,227 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
-\page qt-embedded-opengl.html
-
-\title Qt for Embedded Linux and OpenGL
-\ingroup qt-embedded-linux
-
-\section1 Introduction
-
-\l {http://www.opengl.org}{OpenGL} is an industry standard API for
-2D/3D graphics. It provides a powerful, low-level interface between
-software and acceleration hardware, and it is operating system and
-window system independent.
-
-\l {http://www.khronos.org/opengles}{OpenGL ES} is a subset
-of the \l {http://www.opengl.org}{OpenGL} standard.
-Because it is meant for use in embedded systems, it has a smaller,
-more constrained API.
-
-For reference, Nokia provides a plugin which integrates \l
-{http://www.khronos.org/opengles}{OpenGL ES} with Qt for Embedded Linux,
-but Qt for Embedded Linux can be adapted to a wide range of OpenGL
-versions.
-
-There are three ways to use OpenGL with Qt for Embedded Linux:
-\list
- \o Perform OpenGL 3D graphics operations in applications;
- \o Accelerate normal 2D painting operations;
- \o Implement window compositing and special effects.
-\endlist
-
-Qt for Embedded Linux is shipped with a reference integration example
-that demonstrates all three uses.
-
-\section2 Using OpenGL 3D Graphics in Applications
-
-The \l {QtOpenGL module} offers classes that make it easy to draw 3D
-graphics in GUI applications. The module API is cross-platform, so it
-is also available on Windows, X11, and Mac OS X.
-
-To use OpenGL-enabled widgets in a Qt for Embedded Linux application,
-all that is required is to subclass the QGLWidget and draw into instances of
-the subclass with standard OpenGL functions.
-
-\section2 Using OpenGL to Accelerate Normal 2D Painting
-
-Qt provides QOpenGLPaintEngine, a subclass of QPaintEngine that
-translates QPainter operations into OpenGL calls. This specialized
-paint engine can be used to improve 2D rendering performance on
-appropriate hardware. It can also overlay controls and decorations
-onto 3D scenes drawn using OpenGL.
-
-\section2 Using OpenGL to Implement Window Compositing and Effects
-
-Qt for Embedded Linux includes a complete windowing system, which implements
-real transparency. The windowing system can be accelerated using
-OpenGL to implement top level window compositing. This makes it easy
-to add 3D effects to applications, for instance when windows are
-minimized or maximized.
-
-\section1 Acceleration Architecture
-
-The diagram below shows the Qt for Embedded Linux painting architecture.
-
-\image qt-embedded-opengl3.png
-
-A client process widget uses a paint engine to draw into a window
-surface. The server then combines the window surfaces and displays the
-composition on the screen. This architecture lets you
-control the steps of the painting process by subclassing.
-
-Subclassing QPaintEngine allows you to implement the QPainter API
-using accelerated hardware. Subclassing QWindowSurface lets you
-decide the properties of the space your widgets will draw themselves
-into, as well as which paint engine they should use to draw themselves
-into that space. Subclassing QScreen lets you control the creation of
-window surfaces and lets you decide how to implement window
-compositing. Using subclassing, your implementation work is minimized
-since you can reuse base class functionality you don't need to change.
-
-The elements of an accelerated Qt for Embedded Linux system are shown in the
-diagram below.
-
-\image qt-embedded-opengl1.png
-
-The applications, using the Qt API, do not depend on the presence of
-the acceleration plugin. The plugin uses the graphics hardware to
-accelerate painting primitives. Any operations not accelerated by the
-plugin are done in software by the software paint engine.
-
-To integrate an OpenGL implementation into Qt for Embedded Linux for a
-particular platform, you use the same mechanisms you would use for
-writing any other accelerated driver. Base classes, e.g., QGLScreen
-and QWSGLWindowSurface, are provided to minimize the need for
-reimplementing common functionality.
-
-\section1 The Reference Integration
-
-The \l{OpenGL for Embedded Systems Example} is the reference implementation
-for integrating OpenGL ES and \l{http://www.khronos.org/egl/}{EGL} with
-the graphics acceleration architecture of Qt for Embedded Linux.
-(\l{http://www.khronos.org/egl/}{EGL} is a library that binds OpenGL ES to
-native windowing systems.)
-
-The diagram below shows how OpenGL ES is used within the acceleration architecture:
-
-\image qt-embedded-opengl2.png
-
-The example implements a screen driver plugin that demonstrates all
-three uses of OpenGL in Qt for Embedded Linux: 2D graphics acceleration, 3D
-graphics operations using the \l {QtOpenGL module}, and top-level
-window compositing and special effects. The applications still do
-not talk directly to the accelerated plugin.
-
-For 2D graphics, applications use the normal Qt painting API. The example accelerates 2D
-painting by using the QOpenGLPaintEngine, which is included in the \l {QtOpenGL module}.
-
-For 3D graphics applications use the OpenGL API directly, together with the functionality
-in the Qt OpenGL support classes. The example supports this by creating a
-QWSGLWindowSurface whenever a QGLWidget is instantiated.
-
-All access to the display is done through OpenGL. The example subclasses
-QWSGLWindowSurface implementation and uses the \l
-{http://oss.sgi.com/projects/ogl-sample/registry/EXT/framebuffer_object.txt}
-{OpenGL Framebuffer Object extension} to draw windows into an offscreen buffer. This
-lets the example use OpenGL to implement top level window compositing of opaque and
-semi-transparent windows, and to provide a 3D animated transition effect as each new
-window is shown.
-
-The specific OpenGL library being used by the example restricts all
-OpenGL operations to occur in a single process. Hence the example
-creates instances of QWSGLWindowSurface only in the server process.
-Other processes then perform 2D graphics by creating instances
-of the standard QWindowSurface classes for client processes. The
-standard window surface performs software-based rendering into a
-shared memory segment. The server then transfers the contents of this
-shared memory into an OpenGL texture before they are drawn onto the
-screen during window compositing.
-
-\omit
-
-\section1 Future Directions
-
-\section2 API Improvements
-
-Nokia is now working on enhancing the API for integrating OpenGL
-with Qt for Embedded Linux. The current design plan includes the following
-features:
-
-\list
-
- \o Provide convenience classes, e.g., QEGLScreen and
- QWSEGLWindowSurface, which implement common uses of the EGL
- API. These classes will simplify implementing an OpenGL ES
- integration.
-
- \o Extend the screen driver API to provide more control over window
- properties and animations, and provide a software-based integration
- to enable testing on the desktop.
-
- \o Improve performance as opportunities arise.
-
-\endlist
-
-\section2 OpenVG Support
-
-\l {http://www.khronos.org/openvg} {OpenVG} is a dedicated API for 2D
-graphics on mobile devices. It is therefore more likely to be a better
-alternative for 2D acceleration than OpenGL. Until recently, no
-OpenVG-capable hardware has been available, so Nokia has not yet
-included an OpenVG solution in Qt for Embedded Linux.
-
-However, Nokia has done a feasibility study, implementing an
-OpenVG paint engine on top of a software OpenVG implementation.
-Assuming availability of the appropriate hardware, this OpenVG paint
-engine can easily be completed and integrated using the existing
-acceleration architecture. Since OpenVG shares the same EGL layer as
-OpenGL ES, the work already done on the OpenGL integration can be
-reused.
-
-Related technologies included in the \l
-{http://www.khronos.org/openkode} {OpenKODE} API set will also be
-considered.
-
-\endomit
-
-*/
diff --git a/doc/src/qtopiacore.qdoc b/doc/src/qtopiacore.qdoc
deleted file mode 100644
index c8fccf14e..000000000
--- a/doc/src/qtopiacore.qdoc
+++ /dev/null
@@ -1,114 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \group qt-embedded-linux
- \ingroup topics
- \ingroup qt-embedded
- \title Qt for Embedded Linux
- \brief Documents specifically about Qt for Embedded Linux.
-
- Qt for Embedded Linux is a C++ framework for GUI and application development
- for embedded devices. It runs on a variety of processors, usually
- with Embedded Linux. Qt for Embedded Linux provides the standard Qt API for
- embedded devices with a lightweight window system.
-
- \image qt-embedded-architecture.png
-
- Qt for Embedded Linux applications write directly to the framebuffer,
- eliminating the need for the X Window System and saving memory.
- The Linux framebuffer is enabled by default on all modern Linux
- distributions. For information on older versions, please refer to
- the \l{Framebuffer HOWTO} document. For development
- and debugging purposes, Qt for Embedded Linux provides a \l {The
- Virtual Framebuffer}{virtual framebuffer}. It is also possible to
- run an application using the
- \l{The VNC Protocol and Qt for Embedded Linux}{VNC protocol}.
-
- \table 100%
- \header \o Getting Started \o Reference \o Features
- \row
- \o
- \list
- \o \l {Qt for Embedded Linux Architecture}{Architecture Overview}
- \o \l {Installing Qt for Embedded Linux}{Installation}
- \o \l {Running Qt for Embedded Linux Applications}{Running Applications}
- \o \l {Qt Examples#Qt for Embedded Linux}{Examples}
- \endlist
- \o
- \list
- \o \l {Qt for Embedded Linux Classes}{Classes}
- \o \l {Qt for Embedded Linux Environment Variables}{Environment Variables}
- \o \l {Licenses for Fonts Used in Qt for Embedded Linux}{Font Licenses}
- \endlist
- \o
- \list
- \o \l {Qt for Embedded Linux Pointer Handling}{Pointer Handling}
- \o \l {Qt for Embedded Linux Character Input}{Character Input}
- \o \l {Qt for Embedded Linux Display Management}{Display Management}
- \o \l {Qt for Embedded Linux and OpenGL}{OpenGL}
- \o \l {Qt for Embedded Linux Fonts}{Fonts}
- \endlist
-
- \header \o Development \o Porting \o Optimization
- \row
- \o
- \list
- \o \l {The Virtual Framebuffer}{Virtual Framebuffer}
- \o \l {The VNC Protocol and Qt for Embedded Linux}{VNC Protocol}
- \o \l {Testing the Linux Framebuffer}
- \o \l {Cross Compiling Qt for Embedded Linux Applications}{Cross Compiling Applications}
- \o \l {Deploying Qt for Embedded Linux Applications}{Deploying Applications}
- \endlist
- \o
- \list
- \o \l {Porting Qt Applications to Qt for Embedded Linux}
- \o \l {Porting Qt for Embedded Linux to a New Architecture}
- \o \l {Porting Qt for Embedded Linux to Another Operating System}
- \endlist
- \o
- \list
- \o \l {Qt Performance Tuning}
- \o \l {Fine-Tuning Features in Qt}
- \o \l {Adding an Accelerated Graphics Driver to Qt for Embedded Linux}{Adding an Accelerated Graphics Driver}
- \endlist
- \endtable
-*/
diff --git a/doc/src/qtscript.qdoc b/doc/src/qtscript.qdoc
deleted file mode 100644
index 33b5691bb..000000000
--- a/doc/src/qtscript.qdoc
+++ /dev/null
@@ -1,1934 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtScript
- \title QtScript Module
- \since 4.3
- \contentspage Qt's Modules
- \previouspage QtOpenVG
- \nextpage QtScriptTools
- \ingroup modules
- \ingroup scripting
-
- \brief The QtScript module provides classes for making Qt applications scriptable.
-
- \tableofcontents
-
- \section1 Configuring the Build Process
-
- Applications that use Qt's Script classes need to
- be configured to be built against the QtScript module.
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 0
-
- To link against the module, add this line to your \l qmake \c .pro file:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 1
-
- The QtScript module is part of the \l{Qt Full Framework Edition} and the
- \l{Open Source Versions of Qt}.
-
- The QtScript module only provides core scripting facilities; the
- QtScriptTools module provides additional Qt Script-related
- components that application developers may find useful.
-
- \section1 Language Overview
-
- Qt Script is based on the ECMAScript scripting language, as defined
- in standard \l{ECMA-262}. Microsoft's JScript, and Netscape's
- JavaScript are also based on the ECMAScript standard. For an
- overview of ECMAScript, see the
- \l{ECMAScript Reference}{ECMAScript reference}.
- If you are not familiar with the ECMAScript language, there are
- several existing tutorials and books that cover this subject, such
- as \l{JavaScript: The Definitive Guide}.
-
- Existing users of \l{Qt Script for Applications (QSA)} may find the
- \l{Moving from QSA to Qt Script} document useful when porting
- QSA scripts to Qt Script.
-
- \section1 Basic Usage
-
- To evaluate script code, you create a QScriptEngine and call its
- evaluate() function, passing the script code (text) to evaluate
- as argument.
-
- \snippet doc/src/snippets/qtscript/evaluation/main.cpp 0
-
- The return value will be the result of the evaluation (represented
- as a QScriptValue object); this can be converted to standard C++
- and Qt types.
-
- Custom properties can be made available to scripts by registering
- them with the script engine. This is most easily done by setting
- properties of the script engine's \e{Global Object}:
-
- \snippet doc/src/snippets/qtscript/registeringvalues/main.cpp 0
-
- This places the properties in the script environment, thus making them
- available to script code.
-
- \section1 Making a QObject Available to the Script Engine
-
- Any QObject-based instance can be made available for use with scripts.
-
- When a QObject is passed to the QScriptEngine::newQObject() function,
- a Qt Script wrapper object is created that can be used to make the
- QObject's signals, slots, properties, and child objects available
- to scripts.
-
- Here's an example of making an instance of a QObject subclass
- available to script code under the name \c{"myObject"}:
-
- \snippet doc/src/snippets/qtscript/registeringobjects/main.cpp 0
-
- This will create a global variable called \c{myObject} in the
- script environment. The variable serves as a proxy to the
- underlying C++ object. Note that the name of the script variable
- can be anything; i.e., it is not dependent upon QObject::objectName().
-
- The \l{QScriptEngine::}{newQObject()} function accepts two additional
- optional arguments: one is the ownership mode, and the other is a
- collection of options that allow you to control certain aspects of how
- the QScriptValue that wraps the QObject should behave. We will come
- back to the usage of these arguments later.
-
- \section2 Using Signals and Slots
-
- Qt Script adapts Qt's central \l{Signals and Slots} feature for
- scripting. There are three principal ways to use signals and slots
- with Qt Script:
-
- \list
- \i \bold{Hybrid C++/script}: C++ application code connects a
- signal to a script function. The script function can, for example, 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 Qt Script"),
- \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
-
- Use the qScriptConnect() function to connect a C++ signal to a
- script function. In the following example a script signal handler is
- defined that will handle the QLineEdit::textChanged() signal:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 47
-
- The first two arguments to qScriptConnect() are the same
- as you would pass to QObject::connect() to establish a normal C++
- connection. The third argument is the script object that will act
- as the \c this object when the signal handler is invoked; in the above
- example we pass an invalid script value, so the \c this object will
- be the Global Object. The fourth argument is the script function
- ("slot") itself. The following example shows how the \c this argument
- can be put to use:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 48
-
- We create two QLineEdit objects and define a single signal handler
- function. The connections use the same handler function, but the
- function will be invoked with a different \c this object depending on
- which object's signal was triggered, so the output of the print()
- statement will be different for each.
-
- In script code, Qt Script uses a different syntax for connecting to
- and disconnecting from signals than the familiar C++ syntax; i.e.,
- QObject::connect().
- To connect to a signal, you reference the relevant signal as a property
- of the sender object, and invoke its \c{connect()} function. There
- are three overloads of \c{connect()}, each with a corresponding
- \c{disconnect()} overload. The following subsections describe these
- three forms.
-
- \section3 Signal to Function Connections
-
- \c{connect(function)}
-
- In this form of connection, the argument to \c{connect()} is the
- function to connect to the signal.
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 2
-
- The argument can be a Qt Script function, as in the above
- example, or it can be a QObject slot, as in
- the following example:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 3
-
- When the argument is a QObject slot, the argument types of the
- signal and slot do not necessarily have to be compatible;
- QtScript will, if necessary, 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 doc/src/snippets/code/doc_src_qtscript.qdoc 4
-
- 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
-
- \c{connect(thisObject, function)}
-
- 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 doc/src/snippets/code/doc_src_qtscript.qdoc 5
-
- To disconnect from the signal, pass the same arguments to \c{disconnect()}:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 6
-
- \section3 Signal to Named Member Function Connections
-
- \c{connect(thisObject, functionName)}
-
- In this form of the \c{connect()} function, 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 (\c thisObject in the above scheme).
-
- Note that the function is resolved when the connection is made, not
- when the signal is emitted.
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 7
-
- To disconnect from the signal, pass the same arguments to \c{disconnect()}:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 8
-
- \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 doc/src/snippets/code/doc_src_qtscript.qdoc 9
-
- \section3 Emitting Signals from Scripts
-
- To emit a signal from script code, you simply invoke the signal
- function, passing the relevant arguments:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 10
-
- 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, QtScript 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 doc/src/snippets/code/doc_src_qtscript.qdoc 11
-
- 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 doc/src/snippets/code/doc_src_qtscript.qdoc 12
-
- If the overloads have different number of arguments, QtScript will
- pick the overload with the argument count that best matches the
- actual number of arguments passed to the slot.
-
- For overloaded signals, Qt Script 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.
-
- \section2 Accessing Properties
-
- The properties of the QObject are available as properties
- of the corresponding QtScript 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 doc/src/snippets/code/doc_src_qtscript.qdoc 13
-
- then script code can do things like the following:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 14
-
- \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 QtScript 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 doc/src/snippets/code/doc_src_qtscript.qdoc 15
-
- Since \c{objectName} is itself a Q_PROPERTY, you can manipulate
- the name in script code to, for example, rename an object:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 16
-
- You can also use the functions \c{findChild()} and \c{findChildren()}
- to find children. These two functions behave identically to
- QObject::findChild() and QObject::findChildren(), respectively.
-
- For example, we can use these functions to find objects using strings
- and regular expressions:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 17
-
- You typically want to use \c{findChild()} when manipulating a form
- that uses nested layouts; that way the script is isolated from the
- details about which particular layout a widget is located in.
-
- \section2 Controlling QObject Ownership
-
- Qt Script uses garbage collection to reclaim memory used by script
- objects when they are no longer needed; an object's memory can be
- automatically reclaimed when it is no longer referenced anywhere in
- the scripting environment. Qt Script lets you control what happens
- to the underlying C++ QObject when the wrapper object is reclaimed
- (i.e., whether the QObject is deleted or not); you do this when you
- create an object by passing an ownership mode as the second argument
- to QScriptEngine::newQObject().
-
- Knowing how Qt Script deals with ownership is important, since it can
- help you avoid situations where a C++ object isn't deleted when it
- should be (causing memory leaks), or where a C++ object \e{is}
- deleted when it shouldn't be (typically causing a crash if C++ code
- later tries to access that object).
-
- \section3 Qt Ownership
-
- By default, the script engine does not take ownership of the
- QObject that is passed to QScriptEngine::newQObject(); the object
- is managed according to Qt's object ownership (see
- \l{Object Trees and Object Ownership}). This mode is appropriate
- when, for example, you are wrapping C++ objects that are part of
- your application's core; that is, they should persist regardless of
- what happens in the scripting environment. Another way of stating
- this is that the C++ objects should outlive the script engine.
-
- \section3 Script Ownership
-
- Specifying QScriptEngine::ScriptOwnership as the ownership mode
- will cause the script engine to take full ownership of the QObject
- and delete it when it determines that it is safe to do so
- (i.e., when there are no more references to it in script code).
- This ownership mode is appropriate if the QObject does not have a
- parent object, and/or the QObject is created in the context of the
- script engine and is not intended to outlive the script engine.
-
- For example, a constructor function that constructs QObjects
- only to be used in the script environment is a good candidate:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 18
-
- \section3 Auto-Ownership
-
- With QScriptEngine::AutoOwnership the ownership is based on whether
- the QObject has a parent or not.
- If the QtScript garbage collector finds that the QObject is no
- longer referenced within the script environment, the QObject will
- be deleted \e{only} if it does not have a parent.
-
- \section3 What Happens When Someone Else Deletes the QObject?
-
- It is possible that a wrapped QObject is deleted outside of
- Qt Script's control; i.e., without regard to the ownership mode
- specified. In this case, the wrapper object will still
- be an object (unlike the C++ pointer it wraps, the script object
- won't become null). Any attempt to access properties of the script
- object will, however, result in a script exception being thrown.
-
- Note that QScriptValue::isQObject() will still return true for a
- deleted QObject, since it tests the type of the script object, not
- whether the internal pointer is non-null. In other words, if
- QScriptValue::isQObject() returns true but QScriptValue::toQObject()
- returns a null pointer, this indicates that the QObject has been
- deleted outside of Qt Script (perhaps accidentally).
-
- \section2 Customizing Access to the QObject
-
- QScriptEngine::newQObject() can take a third argument which allows
- you to control various aspects of the access to the QObject through
- the QtScript wrapper object it returns.
-
- QScriptEngine::ExcludeChildObjects specifies that child objects of
- the QObject should not appear as properties of the wrapper object.
-
- QScriptEngine::ExcludeSuperClassProperties and
- QScriptEngine::ExcludeSuperClassMethods can be used to avoid
- exposing members that are inherited from the QObject's superclass.
- This is useful for defining a "pure" interface where inherited members
- don't make sense from a scripting perspective; e.g., you don't want
- script authors to be able to change the \c{objectName} property of
- the object or invoke the \c{deleteLater()} slot.
-
- QScriptEngine::AutoCreateDynamicProperties specifies that properties
- that don't already exist in the QObject should be created as dynamic
- properties of the QObject, rather than as properties of the QtScript
- wrapper object. If you want new properties to truly become persistent
- properties of the QObject, rather than properties that are destroyed
- along with the wrapper object (and that aren't shared if the QObject
- is wrapped multiple times with QScriptEngine::newQObject()), you
- should use this option.
-
- QScriptEngine::SkipMethodsInEnumeration specifies that signals and
- slots should be skipped when enumerating the properties of the QObject
- wrapper in a for-in script statement. This is useful when defining
- prototype objects, since by convention function properties of
- prototypes should not be enumerable.
-
- \section2 Making a QObject-based Class New-able from a Script
-
- The QScriptEngine::newQObject() function is used to wrap an
- existing QObject instance, so that it can be made available to
- scripts. A different scenario is that you want scripts to be
- able to construct new objects, not just access existing ones.
-
- The Qt meta-type system currently does not provide dynamic
- binding of constructors for QObject-based classes. If you want to
- make such a class new-able from scripts, Qt Script can generate
- a reasonable script constructor for you; see
- QScriptEngine::scriptValueFromQMetaObject().
-
- You can also use QScriptEngine::newFunction() to wrap your own
- factory function, and add it to the script environment; see
- QScriptEngine::newQMetaObject() for an example.
-
- \section2 Enum Values
-
- Values for enums declared with Q_ENUMS are not available as
- properties of individual wrapper objects; rather, they are
- properties of the QMetaObject wrapper object that can be created
- with QScriptEngine::newQMetaObject().
-
- \section1 Conversion Between QtScript and C++ Types
-
- QtScript will perform type conversion when a value needs to be
- converted from the script side to the C++ side or vice versa; for
- instance, when a C++ signal triggers a script function, when
- you access a QObject property in script code, or when
- you call QScriptEngine::toScriptValue() or
- QScriptEngine::fromScriptValue() in C++. QtScript provides default
- conversion operations for many of the built-in Qt types. You can
- change the conversion operation for a type (including your custom
- C++ types) by registering your own conversion functions with
- qScriptRegisterMetaType().
-
- \section2 Default Conversion from Qt Script to C++
-
- The following table describes the default conversion from a
- QScriptValue to a C++ type.
-
- \table 80%
- \header \o C++ Type \o Default Conversion
- \row \o bool \o QScriptValue::toBool()
- \row \o int \o QScriptValue::toInt32()
- \row \o uint \o QScriptValue::toUInt32()
- \row \o float \o float(QScriptValue::toNumber())
- \row \o double \o QScriptValue::toNumber()
- \row \o short \o short(QScriptValue::toInt32())
- \row \o ushort \o QScriptValue::toUInt16()
- \row \o char \o char(QScriptValue::toInt32())
- \row \o uchar \o unsigned char(QScriptValue::toInt32())
- \row \o qlonglong \o qlonglong(QScriptValue::toInteger())
- \row \o qulonglong \o qulonglong(QScriptValue::toInteger())
- \row \o QString \o An empty string if the QScriptValue is null
- or undefined; QScriptValue::toString() otherwise.
- \row \o QDateTime \o QScriptValue::toDateTime()
- \row \o QDate \o QScriptValue::toDateTime().date()
- \row \o QRegExp \o QScriptValue::toRegExp()
- \row \o QObject* \o QScriptValue::toQObject()
- \row \o QWidget* \o QScriptValue::toQObject()
- \row \o QVariant \o QScriptValue::toVariant()
- \row \o QChar \o If the QScriptValue is a string, the result
- is the first character of the string, or a null QChar
- if the string is empty; otherwise, the result is a QChar
- constructed from the unicode obtained by converting the
- QScriptValue to a \c{ushort}.
- \row \o QStringList \o If the QScriptValue is an array, the
- result is a QStringList constructed from the result of
- QScriptValue::toString() for each array element; otherwise,
- the result is an empty QStringList.
- \row \o QVariantList \o If the QScriptValue is an array, the result
- is a QVariantList constructed from the result of
- QScriptValue::toVariant() for each array element; otherwise,
- the result is an empty QVariantList.
- \row \o QVariantMap \o If the QScriptValue is an object, the result
- is a QVariantMap with a (key, value) pair of the form
- (propertyName, propertyValue.toVariant()) for each property,
- using QScriptValueIterator to iterate over the object's
- properties.
- \row \o QObjectList \o If the QScriptValue is an array, the result
- is a QObjectList constructed from the result of
- QScriptValue::toQObject() for each array element; otherwise,
- the result is an empty QObjectList.
- \row \o QList<int> \o If the QScriptValue is an array, the result is
- a QList<int> constructed from the result of
- QScriptValue::toInt32() for each array element; otherwise,
- the result is an empty QList<int>.
- \endtable
-
- Additionally, QtScript will handle the following cases:
-
- \list
- \i If the QScriptValue is a QObject and the target type name ends with
- \c * (i.e., it is a pointer), the QObject pointer will be cast to the
- target type with qobject_cast().
- \i If the QScriptValue is a QVariant and the target type name ends with
- \c * (i.e., it is a pointer), and the \l{QVariant::userType()}{userType()}
- of the QVariant is the type that the target type points to, the result
- is a pointer to the QVariant's data.
- \i If the QScriptValue is a QVariant and it can be converted to the
- target type (according to QVariant::canConvert()), the QVariant will
- be cast to the target type with qvariant_cast().
- \endlist
-
- \section2 Default Conversion from C++ to Qt Script
-
- The following table describes the default behavior when a QScriptValue is
- constructed from a C++ type:
-
- \table 80%
- \header \o C++ Type \o Default Construction
- \row \o void \o QScriptEngine::undefinedValue()
- \row \o bool \o QScriptValue(engine, value)
- \row \o int \o QScriptValue(engine, value)
- \row \o uint \o QScriptValue(engine, value)
- \row \o float \o QScriptValue(engine, value)
- \row \o double \o QScriptValue(engine, value)
- \row \o short \o QScriptValue(engine, value)
- \row \o ushort \o QScriptValue(engine, value)
- \row \o char \o QScriptValue(engine, value)
- \row \o uchar \o QScriptValue(engine, value)
- \row \o QString \o QScriptValue(engine, value)
- \row \o qlonglong \o QScriptValue(engine, qsreal(value)). Note that
- the conversion may lead to loss of precision, since not all
- 64-bit integers can be represented using the qsreal type.
- \row \o qulonglong \o QScriptValue(engine, qsreal(value)). Note that
- the conversion may lead to loss of precision, since not all
- 64-bit unsigned integers can be represented using the qsreal
- type.
- \row \o QChar \o QScriptValue(this, value.unicode())
- \row \o QDateTime \o \l{QScriptEngine::newDate()}{QScriptEngine::newDate}(value)
- \row \o QDate \o \l{QScriptEngine::newDate()}{QScriptEngine::newDate}(value)
- \row \o QRegExp \o \l{QScriptEngine::newRegExp()}{QScriptEngine::newRegExp}(value)
- \row \o QObject* \o \l{QScriptEngine::newQObject()}{QScriptEngine::newQObject}(value)
- \row \o QWidget* \o \l{QScriptEngine::newQObject()}{QScriptEngine::newQObject}(value)
- \row \o QVariant \o \l{QScriptEngine::newVariant()}{QScriptEngine::newVariant}(value)
- \row \o QStringList \o A new script array (created with
- QScriptEngine::newArray()), whose elements are created using
- the QScriptValue(QScriptEngine *, QString) constructor for
- each element of the list.
- \row \o QVariantList \o A new script array (created with
- QScriptEngine::newArray()), whose elements are created using
- QScriptEngine::newVariant() for each element of the list.
- \row \o QVariantMap \o A new script object (created with
- QScriptEngine::newObject()), whose properties are initialized
- according to the (key, value) pairs of the map.
- \row \o QObjectList \o A new script array (created with
- QScriptEngine::newArray()), whose elements are created using
- QScriptEngine::newQObject() for each element of the list.
- \row \o QList<int> \o A new script array (created with
- QScriptEngine::newArray()), whose elements are created using
- the QScriptValue(QScriptEngine *, int) constructor for each
- element of the list.
- \endtable
-
- Other types (including custom types) will be wrapped using
- QScriptEngine::newVariant(). For null pointers of any type, the
- result is QScriptEngine::nullValue().
-
- \section1 How to Design and Implement Application Objects
-
- This section explains how to implement application objects and
- provides the necessary technical background material.
-
- \section2 Making a C++ object available to Scripts Written in QtScript
-
- Making C++ classes and objects available to a scripting language is
- not trivial because scripting languages tend to be more dynamic than
- C++, and it must be possible to introspect objects (query information
- such as function names, function signatures, properties, etc., at
- run-time). Standard C++ does not provide features for this.
-
- We can achieve the functionality we want by extending C++, using
- C++'s own facilities so our code is still standard C++. The Qt
- meta-object system provides the necessary additional functionality.
- It allows us to write using an extended C++ syntax, but converts this
- into standard C++ using a small utility program called \l{moc}
- (Meta-Object Compiler). Classes that wish to take advantage of the
- meta-object facilities are either subclasses of QObject, or use the
- \c{Q_OBJECT} macro. Qt has used this approach for many years and it has
- proven to be solid and reliable. QtScript uses this meta-object
- technology to provide scripters with dynamic access to C++ classes
- and objects.
-
- To completely understand how to make C++ objects available to Qt
- Script, some basic knowledge of the Qt meta-object system is very
- helpful. We recommend that you read the \l{Qt Object Model}. The
- information in this document and the documents it links to are very
- useful for understanding how to implement application objects.
-
- However, this knowledge is not essential in the simplest cases.
- To make an object available in QtScript, it must derive from
- QObject. All classes which derive from QObject can be introspected
- and can provide the information needed by the scripting engine at
- run-time; e.g., class name, functions, signatures. Because we obtain
- the information we need about classes dynamically at run-time, there
- is no need to write wrappers for QObject derived classes.
-
- \section2 Making C++ Class Member Functions Available in QtScript
-
- The meta-object system also makes information about signals and slots
- dynamically available at run-time. By default, for QObject subclasses,
- only the signals and slots are automatically made available to scripts.
- This is very convenient because, in practice, we normally only want to
- make specially chosen functions available to scripters. When you create
- a QObject subclass, make sure that the functions you want to expose to
- QtScript are public slots.
-
- For example, the following class definition enables scripting only for
- certain functions:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 19
-
- In the example above, aNonScriptableFunction() is not declared as a
- slot, so it will not be available in QtScript. The other three
- functions will automatically be made available in QtScript because
- they are declared in the \c{public slots} section of the class
- definition.
-
- It is possible to make any function script-invokable by specifying
- the \c{Q_INVOKABLE} modifier when declaring the function:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 20
-
- Once declared with \c{Q_INVOKABLE}, the method can be invoked from
- QtScript code just as if it were a slot. Although such a method is
- not a slot, you can still specify it as the target function in a
- call to \c{connect()} in script code; \c{connect()} accepts both
- native and non-native functions as targets.
-
- \section2 Making C++ Class Properties Available in QtScript
-
- In the previous example, if we wanted to get or set a property using
- QtScript we would have to write code like the following:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 21
-
- Scripting languages often provide a property syntax to modify and
- retrieve properties (in our case the enabled state) of an
- object. Many script programmers would want to write the above code
- like this:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 22
-
- To make this possible, you must define properties in the C++ QObject
- subclass. For example, the following \c MyObject class declaration
- declares a boolean property called \c enabled, which uses the function
- \c{setEnabled(bool)} as its setter function and \c{isEnabled()} as its
- getter function:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 23
-
- The only difference from the original code is the use of the macro
- \c{Q_PROPERTY}, which takes the type and name of the property, and
- the names of the setter and getter functions as arguments.
-
- If you don't want a property of your class to be accessible in
- QtScript, you set the \c{SCRIPTABLE} attribute to \c false when
- declaring the property; by default, the \c{SCRIPTABLE} attribute is
- \c true. For example:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 24
-
- \section2 Reacting to C++ Objects Signals in Scripts
-
- In the Qt object model, signals are used as a notification mechanism
- between QObjects. This means one object can connect a signal to
- another object's slot and, every time the signal is emitted, the slot
- is called. This connection is established using the QObject::connect()
- function.
-
- The signals and slots mechanism is also available to QtScript
- programmers. The code to declare a signal in C++ is the same,
- regardless of whether the signal will be connected to a slot in C++
- or in QtScript.
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 25
-
- The only change we have made to the code in the previous section is
- to declare a signals section with the relevant signal. Now, the
- script writer can define a function and connect to the object like
- this:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 26
-
- \section2 Design of Application Objects
-
- The previous section described how to implement C++ objects which
- can be used in QtScript. Application objects are the same kind of
- objects, and they make your application's functionality available to
- QtScript scripters. Since the C++ application is already written
- in Qt, many objects are already QObjects. The easiest approach would
- be to simply add all these QObjects as application objects to the
- scripting engine. For small applications this might be sufficient,
- but for larger applications this is probably not the right
- approach. The problem is that this method reveals too much of the
- internal API and gives script programmers access to application
- internals which should not be exposed.
-
- Generally, the best way of making application functionality available
- to scripters is to code some QObjects which define the applications
- public API using signals, slots, and properties. This gives you
- complete control of the functionality made available by the
- application. The implementations of these objects simply call the
- functions in the application which do the real work. So, instead of
- making all your QObjects available to the scripting engine, just add
- the wrapper QObjects.
-
- \section3 Returning QObject Pointers
-
- If you have a slot that returns a QObject pointer, you should note
- that, by default, Qt Script only handles conversion of the types
- QObject* and QWidget*. This means that if your slot is declared
- with a signature like "MyObject* getMyObject()", QtScript doesn't
- automatically know that MyObject* should be handled in the same way
- as QObject* and QWidget*. The simplest way to solve this is to only
- use QObject* and QWidget* in the method signatures of your scripting
- interface.
-
- Alternatively, you can register conversion functions for your custom
- type with the qScriptRegisterMetaType() function. In this way, you
- can preserve the precise typing in your C++ declarations, while
- still allowing pointers to your custom objects to flow seamlessly
- between C++ and scripts. Example:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 43
-
- \section1 Function Objects and Native Functions
-
- In Qt Script, functions are first-class values; they are objects that
- can have properties of their own, just like any other type of
- object. They can be stored in variables and passed as arguments to
- other functions. Knowing how function calls in Qt Script behave is
- useful when you want to define and use your own script functions.
- This section discusses this matter, and also explains how you can
- implement native functions; that is, Qt Script functions written in
- C++, as opposed to functions written in the scripting language
- itself. Even if you will be relying mostly on the dynamic QObject
- binding that Qt Script provides, knowing about these powerful
- concepts and techniques is important to understand what's actually
- going on when script functions are executed.
-
- \section2 Calling a Qt Script Function from C++
-
- Calling a Qt Script function from C++ is achieved with the
- QScriptValue::call() function. A typical scenario is that you evaluate a
- script that defines a function, and at some point you want to call that
- function from C++, perhaps passing it some arguments, and then handle the
- result. The following script defines a Qt Script object that has a
- toKelvin() function:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 90
-
- The toKelvin() function takes a temperature in Kelvin as argument, and
- returns the temperature converted to Celsius. The following snippet shows
- how the toKelvin() function might be obtained and called from C++:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 91
-
- If a script defines a global function, you can access the function as a
- property of QScriptEngine::globalObject(). For example, the following script
- defines a global function add():
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 56
-
- C++ code might call the add() function as follows:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 92
-
- As already mentioned, functions are just values in Qt Script; a function by
- itself is not "tied to" a particular object. This is why you have to specify
- a \c{this} object (the first argument to QScriptValue::call()) that the
- function should be applied to.
-
- If the function is supposed to act as a method (i.e. it can only be applied
- to a certain class of objects), it is up to the function itself to check
- that it is being called with a compatible \c{this} object.
-
- Passing an invalid QScriptValue as the \c{this} argument to
- QScriptValue::call() indicates that the Global Object should be used as the
- \c{this} object; in other words, that the function should be invoked as a
- global function.
-
- \section2 The \c this Object
-
- When a Qt Script function is invoked from a script, the \e{way} in which it
- is invoked determines the \c this object when the function body is executed,
- as the following script example illustrates:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 49
-
- An important thing to note is that in Qt Script, unlike C++ and Java, the
- \c this object is not part of the execution scope. This means that
- member functions (i.e., functions that operate on \c this) must always
- use the \c this keyword to access the object's properties. For example,
- the following script probably doesn't do what you want:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 50
-
- You will get a reference error saying that 'a is not defined' or, worse,
- two totally unrelated global variables \c a and \c b will be used to
- perform the computation, if they exist. Instead, the script should look
- like this:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 51
-
- Accidentally omitting the \c this keyword is a typical source of
- error for programmers who are used to the scoping rules of C++ and Java.
-
- \section2 Wrapping a Native Function
-
- Qt Script provides QScriptEngine::newFunction() as a way of wrapping a
- C++ function pointer; this enables you to implement a function in
- C++ and add it to the script environment, so that scripts can invoke
- your function as if it were a "normal" script function. Here is how the
- previous \c{getProperty()} function can be written in C++:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 52
-
- Call QScriptEngine::newFunction() to wrap the function. This will
- produce a special type of function object that carries a pointer to
- the C++ function internally. Once the resulting wrapper has been
- added to the scripting environment (e.g., by setting it as a property
- of the Global Object), scripts can call the function without having
- to know nor care that it is, in fact, a native function.
-
- Note that the name of the C++ function doesn't matter in the
- scripting sense; the name by which the function is invoked by
- scripts depends only on what you call the script object property
- in which you store the function wrapper.
-
- It is currently not possible to wrap member functions; i.e., methods
- of a C++ class that require a \c this object.
-
- \section2 The QScriptContext Object
-
- A QScriptContext holds all the state associated with a particular
- invocation of your function. Through the QScriptContext, you can:
- \list
- \i Get the arguments that were passed to the function.
- \i Get the \c this object.
- \i Find out whether the function was called with the \c new operator
- (the significance of this will be explained later).
- \i Throw a script error.
- \i Get the function object that's being invoked.
- \i Get the activation object (the object used to hold local variables).
- \endlist
-
- The following sections explain how to make use of this
- functionality.
-
- \section2 Processing Function Arguments
-
- Two things are worth noting about function arguments:
-
- \list 1
- \o Any script function \mdash including native functions \mdash can
- be invoked with any number of arguments. This means that it is up to
- the function itself to check the argument count if necessary, and act
- accordingly (e.g., throw an error if the number of arguments is
- too large, or prepare a default value if the number is too small).
- \o A value of any type can be supplied as an argument to any
- function. This means that it is up to you to check the type of the
- arguments if necessary, and act accordingly (e.g., throw an error
- if an argument is not an object of a certain type).
- \endlist
-
- In summary: Qt Script does not automatically enforce any constraints on the
- number or type of arguments involved in a function call.
-
- \section3 Formal Parameters and the Arguments Object
-
- A native Qt Script function is analogous to a script function that defines no
- formal parameters and only uses the built-in \c arguments variable to
- process its arguments. To see this, let's first consider how a
- script would normally define an \c{add()} function that takes two
- arguments, adds them together and returns the result:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 56
-
- When a script function is defined with formal parameters, their
- names can be viewed as mere aliases of properties of the \c
- arguments object; for example, in the \c{add(a, b)} definition's
- function body, \c a and \c arguments[0] refer to the same
- variable. This means that the \c{add()} function can equivalently be
- written like this:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 57
-
- This latter form closely matches what a native implementation
- typically looks like:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 58
-
- \section3 Checking the Number of Arguments
-
- Again, remember that the presence (or lack) of formal parameter
- names in a function definition does not affect how the function
- may be invoked; \c{add(1, 2, 3)} is allowed by the engine, as is
- \c{add(42)}. In the case of the \c {add()} function, the function
- really needs two arguments in order to do something useful. This
- can be expressed by the script definition as follows:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 59
-
- This would result in an error being thrown if a script invokes
- \c{add()} with anything other than two arguments. The native
- function can be modified to perform the same check:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 62
-
- \section3 Checking the Types of Arguments
-
- In addition to expecting a certain number of arguments, a function might
- expect that those arguments are of certain types (e.g., that the first
- argument is a number and that the second is a string). Such a function
- should explicitly check the type of arguments and/or perform a conversion,
- or throw an error if the type of an argument is incompatible.
-
- As it is, the native implementation of \c{add()} shown above doesn't
- have the exact same semantics as the script counterpart; this is
- because the behavior of the Qt Script \c{+} operator depends on the
- types of its operands (for example, if one of the operands is a string,
- string concatenation is performed). To give the script function
- stricter semantics (namely, that it should only add numeric
- operands), the argument types can be tested:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 60
-
- Then an invocation like \c{add("foo", new Array())} will
- cause an error to be thrown.
-
- The C++ version can call QScriptValue::isNumber() to perform similar
- tests:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 63
-
- A less strict script implementation might settle for performing an
- explicit to-number conversion before applying the \c{+} operator:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 61
-
- In a native implementation, this is equivalent to calling
- QScriptValue::toNumber() without performing any type test first,
- since QScriptValue::toNumber() will automatically perform a type
- conversion if necessary.
-
- To check if an argument is of a certain object type (class),
- scripts can use the \c instanceof operator (e.g., \c{"arguments[0]
- instanceof Array"} evaluates to true if the first argument is an
- Array object); native functions can call QScriptValue::instanceOf().
-
- To check if an argument is of a custom C++ type, you typically use
- qscriptvalue_cast() and check if the result is valid. For object types,
- this means casting to a pointer and checking if it is non-zero; for
- value types, the class should have an \c{isNull()}, \c{isValid()}
- or similar method. Alternatively, since most custom types are
- transported in \l{QVariant}s, you can check if the script value is a
- QVariant using QScriptValue::isVariant(), and then check if the
- QVariant can be converted to your type using QVariant::canConvert().
-
- \section3 Functions with Variable Numbers of Arguments
-
- Because of the presence of the built-in \c arguments object,
- implementing functions that take a variable number of arguments
- is simple. In fact, as we have seen, in the technical sense \e{all}
- Qt Script functions can be seen as variable-argument functions).
- As an example, consider a concat() function that takes an arbitrary
- number of arguments, converts the arguments to their string
- representation and concatenates the results; for example,
- \c{concat("Qt", " ", "Script ", 101)} would return "Qt Script 101".
- A script definition of \c{concat()} might look like this:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 64
-
- Here is an equivalent native implementation:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 65
-
- A second use case for a variable number of arguments is to implement
- optional arguments. Here's how a script definition typically does
- it:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 66
-
- And here's the native equivalent:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 67
-
- A third use case for a variable number of arguments is to simulate
- C++ overloads. This involves checking the number of arguments and/or
- their type at the beginning of the function body (as already shown),
- and acting accordingly. It might be worth thinking twice before
- doing this, and instead favor unique function names; e.g., having
- separate \c{processNumber(number)} and \c{processString(string)}
- functions rather than a generic \c{process(anything)} function.
- On the caller side, this makes it harder for scripts to accidentally
- call the wrong overload (since they don't know or don't comprehend
- your custom sophisticated overloading resolution rules), and on the
- callee side, you avoid the need for potentially complex (read:
- error-prone) checks to resolve ambiguity.
-
- \section3 Accessing the Arguments Object
-
- Most native functions use the QScriptContext::argument() function to
- access function arguments. However, it is also possible to access
- the built-in \c arguments object itself (the one referred to by the
- \c arguments variable in script code), by calling the
- QScriptContext::argumentsObject() function. This has three principal
- applications:
-
- \list
- \o The \c arguments object can be used to easily forward a function
- call to another function. In script code, this is what it
- typically looks like:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 68
-
- For example, \c{foo(10, 20, 30)} would result in the \c{foo()} function
- executing the equivalent of \c{bar(10, 20, 30)}. This is useful if
- you want to perform some special pre- or post-processing when
- calling a function (e.g., to log the call to \c{bar()} without having
- to modify the \c{bar()} function itself, like the above example), or if
- you want to call a "base implementation" from a prototype
- function that has the exact same "signature". In C++, the forwarding
- function might look like this:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 69
-
- \o The arguments object can serve as input to a QScriptValueIterator,
- providing a generic way to iterate over the arguments. A debugger
- might use this to display the arguments object in a general purpose
- "Qt Script Object Explorer", for example.
-
- \o The arguments object can be serialized (e.g., with JSON) and transferred
- to another entity (e.g., a script engine running in another thread),
- where the object can be deserialized and passed as argument to
- another script function.
- \endlist
-
- \section2 Constructor Functions
-
- Some script functions are constructors; they are expected to initialize
- new objects. The following snippet is a small example:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 75
-
- There is nothing special about constructor functions. In fact, any
- script function can act as a constructor function (i.e., any function
- can serve as the operand to \c{new}). Some functions behave differently
- depending on whether they are called as part of a \c{new} expression
- or not; for example, the expression \c{new Number(1)} will create a
- Number object, whereas \c{Number("123")} will perform a type
- conversion. Other functions, like \c{Array()}, will always create
- and initialize a new object (e.g., \c{new Array()} and \c{Array()} have
- the same effect).
-
- A native Qt Script function can call the
- QScriptContext::isCalledAsConstructor() function to determine if it
- is being called as a constructor or as a regular function. When a
- function is called as a constructor (i.e., it is the operand in a
- \c{new} expression), this has two important implications:
-
- \list
- \i The \c this object, QScriptContext::thisObject(), contains
- the new object to be initialized; the engine creates this
- new object automatically before invoking your function. This means
- that your native constructor function normally doesn't have to (and
- shouldn't) create a new object when it is called as a
- constructor, since the engine has already prepared a new
- object. Instead your function should operate on the supplied
- \c this object.
- \i The constructor function should return an undefined value,
- QScriptEngine::undefinedValue(), to tell the engine that the
- \c this object should be the final result of the \c new
- operator. Alternatively, the function can return the \c this
- object itself.
- \endlist
-
- When QScriptContext::isCalledAsConstructor() returns false, how your
- constructor handles this case depends on what behavior you desire.
- If, like the built-in \c{Number()} function, a plain function call should
- perform a type conversion of its argument, then you perform the conversion
- and return the result. If, on the other hand, you want your constructor
- to behave \e{as if it was called as a constructor} (with
- \c{new}), you have to explicitly create a new object (that is,
- ignore the \c this object), initialize that object, and return it.
-
- The following example implements a constructor function that always
- creates and initializes a new object:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 76
-
- Given this constructor, scripts would be able to use either the
- expression \c{new Person("Bob")} or \c{Person("Bob")} to create a
- new \c{Person} object; both behave in the same way.
-
- There is no equivalent way for a function defined in script
- code to determine whether or not it was invoked as a constructor.
-
- Note that, even though it is not considered good practice, there is
- nothing that stops you from choosing to ignore the default
- constructed (\c this) object when your function is called as a
- constructor and creating your own object anyway; simply have the
- constructor return that object. The object will "override" the
- default object that the engine constructed (i.e., the default
- object will simply be discarded internally).
-
- \section2 Associating Data with a Function
-
- Even if a function is global \mdash i.e., not associated with any particular
- (type of) object \mdash you might still want to associate some data with it,
- so that it becomes self-contained; for example, the function could have
- a pointer to some C++ resource that it needs to access. If your application
- only uses a single script engine, or the same C++ resource can/should be
- shared among all script engines, you can simply use a static C++ variable
- and access it from within the native Qt Script function.
-
- In the case where a static C++ variable or singleton class is
- not appropriate, you can call QScriptValue::setProperty() on the
- function object, but be aware that those properties will also be
- accessible to script code. The alternative is to use QScriptValue::setData();
- this data is not script-accessible. The implementation can access this
- internal data through the QScriptContext::callee() function, which
- returns the function object being invoked. The following example
- shows how this might be used:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 55
-
- \section2 Native Functions as Arguments to Functions
-
- As previously mentioned, a function object can be passed as argument
- to another function; this is also true for native functions,
- naturally. As an example, here's a native comparison function
- that compares its two arguments numerically:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 53
-
- The above function can be passed as argument to the standard
- \c{Array.prototype.sort} function to sort an array numerically,
- as the following C++ code illustrates:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 54
-
- Note that, in this case, we are truly treating the native function
- object as a value \mdash i.e., we don't store it as a property of the
- scripting environment \mdash we simply pass it on as an "anonymous"
- argument to another script function and then forget about it.
-
- \section2 The Activation Object
-
- Every Qt Script function invocation has an \e{activation object}
- associated with it; this object is accessible through the
- QScriptContext::activationObject() function. The activation object
- is a script object whose properties are the local variables
- associated with the invocation (including the arguments for which
- the script function has a corresponding formal parameter name).
- Thus, getting, modifying, creating and deleting local variables
- from C++ is done using the regular QScriptValue::property() and
- QScriptValue::setProperty() functions. The activation object itself
- is not directly accessible from script code (but it is implicitly
- accessed whenever a local variable is read from or written to).
-
- For C++ code, there are two principal applications of the
- activation object:
-
- \list
- \i The activation object provides a standard way to traverse the
- variables associated with a function call, by using it as the input
- to QScriptValueIterator. This is useful for debugging purposes.
-
- \i The activation object can be used to prepare local variables
- that should be available when a script is evaluated inline; this
- can be viewed as a way of passing arguments to the script
- itself. This technique is typically used in conjunction with
- QScriptEngine::pushContext(), as in the following example:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 77
-
- We create a temporary execution context, create a local variable
- for it, evaluate the script, and finally restore the old context.
- \endlist
-
- \section2 Nested Functions and the Scope Chain
-
- This is an advanced topic; feel free to skip it.
-
- A nested function can be used to "capture" the execution context in which a
- nested function object is created; this is typically referred to as creating
- a \e closure. When, at some later time, the nested function is invoked, it
- can access the variables that were created when the enclosing function was
- invoked. This can perhaps best be illustrated through a small example:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 70
-
- The \c{counter()} function initializes a local variable to zero,
- and returns a nested function. The nested function increments
- the "outer" variable and returns its new value. The variable
- persists over function calls, as shown in the following example:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 71
-
- The \c{counter()} function can be implemented as a native function, too
- \mdash or rather, as a pair of native functions: One for the outer and
- one for the inner. The definition of the outer function is as follows:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 72
-
- The function creates a local variable and initializes it to zero.
- Then it wraps the inner native function, and sets the scope of
- the resulting function object to be the activation object associated
- with this (the outer) function call. The inner function accesses
- the "outer" activation through the scope of the callee:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 73
-
- It is also possible to have a hybrid approach, where the outer function
- is a native function and the inner function is defined by a script:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 74
-
- \section2 Property Getters and Setters
-
- A script object property can be defined in terms of a getter/setter
- function, similar to how a Qt C++ property has read and write
- functions associated with it. This makes it possible for a script to
- use expressions like \c{object.x} instead of \c{object.getX()}; the
- getter/setter function for \c{x} will implicitly be invoked
- whenever the property is accessed. To scripts, the property looks
- and behaves just like a regular object property.
-
- A single Qt Script function can act as both getter and setter for
- a property. When it is called as a getter, the argument count is 0.
- When it is called as a setter, the argument count is 1; the argument
- is the new value of the property. In the following example, we
- define a native combined getter/setter that transforms the value
- slightly:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 78
-
- The example uses the internal data of the object to store and
- retrieve the transformed value. Alternatively, the property
- could be stored in another, "hidden" property of the object itself
- (e.g., \c{__x__}). A native function is free to implement whatever
- storage scheme it wants, as long as the external behavior of the
- property itself is consistent (e.g., that scripts should not be able
- to distinguish it from a regular property).
-
- The following C++ code shows how an object property can be defined
- in terms of the native getter/setter:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 79
-
- When the property is accessed, like in the following script, the
- getter/setter does its job behind the scenes:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 80
-
- \note It is important that the setter function, not just the getter,
- returns the value of the property; i.e., the setter should \e{not}
- return QScriptValue::UndefinedValue. This is because the result of
- the property assignment is the value returned by the setter, and
- not the right-hand side expression. Also note that you normally
- should not attempt to read the same property that the getter modifies
- within the getter itself, since this will cause the getter to be
- called recursively.
-
- You can remove a property getter/setter by calling
- QScriptValue::setProperty(), passing an invalid QScriptValue
- as the getter/setter. Remember to specify the
- QScriptValue::PropertyGetter/QScriptValue::PropertySetter flag(s),
- otherwise the only thing that will happen is that the setter will be
- invoked with an invalid QScriptValue as its argument!
-
- Property getters and setters can be defined and installed by script
- code as well, as in the following example:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 81
-
- Getters and setters can only be used to implement "a priori
- properties"; i.e., the technique can't be used to react to an access
- to a property that the object doesn't already have. To gain total
- control of property access in this way, you need to subclass
- QScriptClass.
-
- \section1 Making Use of Prototype-Based Inheritance
-
- In ECMAScript, inheritance is based on the concept of \e{shared
- prototype objects}; this is quite different from the class-based
- inheritance familiar to C++ programmers. With QtScript, you can
- associate a custom prototype object with a C++ type using
- QScriptEngine::setDefaultPrototype(); this is the key to providing
- a script interface to that type. Since the QtScript module is built
- on top of Qt's meta-type system, this can be done for any C++ type.
-
- You might be wondering when exactly you would need to use this
- functionality in your application; isn't the automatic binding
- provided by QScriptEngine::newQObject() enough? No, not under all
- circumstances.
- Firstly, not every C++ type is derived from QObject; types that
- are not QObjects cannot be introspected through Qt's meta-object
- system (they do not have properties, signals and slots). Secondly,
- even if a type is QObject-derived, the functionality you want to
- expose to scripts might not all be available, since it is unusual to
- define every function to be a slot (and it's not always
- possible/desirable to change the C++ API to make it so).
-
- It is perfectly possible to solve this problem by using "conventional"
- C++ techniques. For instance, the QRect class could effectively be
- made scriptable by creating a QObject-based C++ wrapper class with
- \c{x}, \c{y}, \c{width} properties and so on, which forwarded property
- access and function calls to the wrapped value. However, as we shall
- see, by taking advantage of the ECMAScript object model and combining
- it with Qt's meta-object system, we can arrive at a solution that is
- more elegant, consistent and lightweight, supported by a small API.
-
- This section explains the underlying concepts of prototype-based
- inheritance. Once these concepts are understood, the associated
- practices can be applied throughout the QtScript API in order to
- create well-behaved, consistent bindings to C++ that will fit nicely
- into the ECMAScript universe.
-
- When experimenting with QtScript objects and inheritance, it can be
- helpful to use the interactive interpreter included with the
- \l{Qt Examples#Qt Script}{Qt Script examples}, located in
- \c{examples/script/qscript}.
-
- \section2 Prototype Objects and Shared Properties
-
- The purpose of a QtScript \e{prototype object} is to define
- behavior that should be shared by a set of other QtScript
- objects. We say that objects which share the same prototype object
- belong to the same \e{class} (again, on the technical side this
- should not to be confused with the class constructs of languages
- like C++ and Java; ECMAScript has no such construct).
-
- The basic prototype-based inheritance mechanism works as follows: Each
- QtScript object has an internal link to another object, its
- \e{prototype}. When a property is looked up in an object, and the
- object itself does not have the property, the property is looked up
- in the prototype object instead; if the prototype has the property,
- then that property is returned. Otherwise, the property is looked up
- in the prototype of the prototype object, and so on; this chain of
- objects constitutes a \e{prototype chain}. The chain of prototype
- objects is followed until the property is found or the end of the
- chain is reached.
-
- For example, when you create a new object by the expression \c{new
- Object()}, the resulting object will have as its prototype the
- standard \c{Object} prototype, \c{Object.prototype}; through this
- prototype relation, the new object inherits a set of properties,
- including the \c{hasOwnProperty()} function and \c{toString()}
- function:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 27
-
- The \c{toString()} function itself is not defined in \c{o} (since we
- did not assign anything to \c{o.toString}), so instead the
- \c{toString()} function in the standard \c{Object} prototype is
- called, which returns a highly generic string representation of
- \c{o} ("[object Object]").
-
- Note that the properties of the prototype object are not \e{copied} to
- the new object; only a \e{link} from the new object to the prototype
- object is maintained. This means that changes done to the prototype
- object will immediately be reflected in the behavior of all objects
- that have the modified object as their prototype.
-
- \section2 Defining Classes in a Prototype-Based Universe
-
- In QtScript, a class is not defined explicitly; there is no
- \c{class} keyword. Instead, you define a new class in two steps:
-
- \list 1
- \i Define a \e{constructor function} that will initialize new objects.
- \i Set up a \e{prototype object} that defines the class interface, and
- assign this object to the public \c{prototype} property of the
- constructor function.
- \endlist
-
- With this arrangement, the constructor's public \c{prototype}
- property will automatically be set as the prototype of objects created
- by applying the \c{new} operator to your constructor function;
- e.g., the prototype of an object created by \c{new Foo()} will be the
- value of \c{Foo.prototype}.
-
- Functions that don't operate on the \c this object ("static" methods)
- are typically stored as properties of the constructor function, not
- as properties of the prototype object. The same is true for
- constants, such as enum values.
-
- The following code defines a simple constructor function for a class
- called \c{Person}:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 28
-
- Next, you want to set up \c{Person.prototype} as your prototype
- object; i.e., define the interface that should be common to all
- \c{Person} objects. QtScript automatically creates a default
- prototype object (by the expression \c{new Object()}) for every
- script function; you can add properties to this object, or you can
- assign your own custom object. (Generally speaking, any QtScript
- object can act as prototype for any other object.)
-
- Here's an example of how you might want to override the
- \c{toString()} function that \c{Person.prototype} inherits from
- \c{Object.prototype}, to give your \c{Person} objects a more
- appropriate string representation:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 29
-
- This resembles the process of reimplementing a virtual function
- in C++. Henceforth, when the property named \c{toString} is
- looked up in a \c{Person} object, it will be resolved in
- \c{Person.prototype}, not in \c{Object.prototype} as before:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 30
-
- There are also some other interesting things we can learn about a
- \c{Person} object:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 31
-
- The \c{hasOwnProperty()} function is not inherited from
- \c{Person.prototype}, but rather from \c{Object.prototype}, which is
- the prototype of \c{Person.prototype} itself; i.e., the prototype
- chain of \c{Person} objects is \c{Person.prototype} followed by
- \c{Object.prototype}. This prototype chain establishes a \e{class
- hierarchy}, as demonstrated by applying the \c{instanceof} operator;
- \c{instanceof} checks if the value of the public \c{prototype}
- property of the constructor function on the right-hand side is
- reached by following the prototype chain of the object on the
- left-hand side.
-
- When defining subclasses, there's a general pattern you can use. The
- following example shows how one can create a subclass of \c{Person}
- called \c{Employee}:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 32
-
- Again, you can use the \c{instanceof} to verify that the
- class relationship between \c{Employee} and \c{Person} has been
- correctly established:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 33
-
- This shows that the prototype chain of \c{Employee} objects is the
- same as that of \c{Person} objects, but with \c{Employee.prototype}
- added to the front of the chain.
-
- \section2 Prototype-Based Programming with the QtScript C++ API
-
- You can use QScriptEngine::newFunction() to wrap
- native functions. When implementing a constructor function,
- you also pass the prototype object as an argument to
- QScriptEngine::newFunction().
- You can call QScriptValue::construct() to call a constructor
- function, and you can use QScriptValue::call() from within a
- native constructor function if you need to call a base class
- constructor.
-
- The QScriptable class provides a convenient way to implement a
- prototype object in terms of C++ slots and properties. Take a look
- at the \l{Default Prototypes Example} to see how this is done.
- Alternatively, the prototype functionality can be implemented in
- terms of standalone native functions that you wrap with
- QScriptEngine::newFunction() and set as properties of your prototype
- object by calling QScriptValue::setProperty().
-
- In the implementation of your prototype functions, you use
- QScriptable::thisObject() (or QScriptContext::thisObject()) to
- obtain a reference to the QScriptValue being operated upon; then you
- call qscriptvalue_cast() to cast it to your C++ type, and perform
- the relevant operations using the usual C++ API for the type.
-
- You associate a prototype object with a C++ type by calling
- QScriptEngine::setDefaultPrototype(). Once this mapping is
- established, QtScript will automatically assign the correct
- prototype when a value of such a type is wrapped in a QScriptValue;
- either when you explicitly call QScriptEngine::toScriptValue(), or
- when a value of such a type is returned from a C++ slot and
- internally passed back to script code by the engine. This means you
- \e{don't} have to implement wrapper classes if you use this
- approach.
-
- As an example, let's consider how the \c{Person} class from the
- preceding section can be implemented in terms of the Qt Script API.
- We begin with the native constructor function:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 34
-
- Here's the native equivalent of the \c{Person.prototype.toString}
- function we saw before:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 35
-
- The \c{Person} class can then be initialized as follows:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 36
-
- The implementation of the \c{Employee} subclass is similar. We
- use QScriptValue::call() to call the super-class (Person) constructor:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 37
-
- The \c{Employee} class can then be initialized as follows:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 38
-
- When implementing the prototype object of a class, you may want to use
- the QScriptable class, as it enables you to define the API of your
- script class in terms of Qt properties, signals and slots, and
- automatically handles value conversion between the Qt Script and C++
- side.
-
- \section2 Implementing Prototype Objects for Value-based Types
-
- When implementing a prototype object for a value-based type --
- e.g. QPointF -- the same general technique applies; you populate
- a prototype object with functionality that should be shared
- among instances. You then associate the prototype object with
- the type by calling QScriptEngine::setDefaultPrototype(). This
- ensures that when e.g. a value of the relevant type is returned
- from a slot back to the script, the prototype link of the script
- value will be initialized correctly.
-
- When values of the custom type are stored in QVariants -- which Qt
- Script does by default --, qscriptvalue_cast() enables you to safely
- cast the script value to a pointer to the C++ type. This makes it
- easy to do type-checking, and, for prototype functions that should
- modify the underlying C++ value, lets you modify the actual value
- contained in the script value (and not a copy of it).
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 39
-
- \section2 Implementing Constructors for Value-based Types
-
- You can implement a constructor function for a value-based type
- by wrapping a native factory function. For example, the following
- function implements a simple constructor for QPoint:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 44
-
- In the above code we simplified things a bit, e.g. we didn't check
- the argument count to decide which QPoint C++ constructor to use.
- In your own constructors you have to do this type of resolution
- yourself, i.e. by checking the number of arguments passed to the
- native function, and/or by checking the type of the arguments and
- converting the arguments to the desired type. If you detect a problem
- with the arguments you may want to signal this by throwing a script
- exception; see QScriptContext::throwError().
-
- \section2 Managing Non-QObject-based Objects
-
- For value-based types (e.g. QPoint), the C++ object will be destroyed when
- the Qt Script object is garbage-collected, so managing the memory of the C++
- object is not an issue. For QObjects, Qt Script provides several
- alternatives for managing the underlying C++ object's lifetime; see the
- \l{Controlling QObject Ownership} section. However, for polymorphic types
- that don't inherit from QObject, and when you can't (or won't) wrap the type
- in a QObject, you have to manage the lifetime of the C++ object yourself.
-
- A behavior that's often reasonable when a Qt Script object wraps a C++
- object, is that the C++ object is deleted when the Qt Script object is
- garbage-collected; this is typically the case when the objects can be
- constructed by scripts, as opposed to the application providing the scripts
- with pre-made "environment" objects. A way of making the lifetime of the C++
- object follow the lifetime of the Qt Script object is by using a shared
- pointer class, such as QSharedPointer, to hold a pointer to your object;
- when the Qt Script object containing the QSharedPointer is
- garbage-collected, the underlying C++ object will be deleted if there are no
- other references to the object.
-
- The following snippet shows a constructor function that constructs
- QXmlStreamReader objects that are stored using QSharedPointer:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 93
-
- Prototype functions can use qscriptvalue_cast() to cast the \c this object
- to the proper type:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 94
-
- The prototype and constructor objects are set up in the usual way:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 95
-
- Scripts can now construct QXmlStreamReader objects by calling the \c
- XmlStreamReader constructor, and when the Qt Script object is
- garbage-collected (or the script engine is destroyed), the QXmlStreamReader
- object is destroyed as well.
-
- \section1 Defining Custom Script Classes with QScriptClass
-
- There are cases where neither the dynamic QObject binding provided
- by QScriptEngine::newQObject() or the manual binding provided by
- QScriptEngine::newFunction() is sufficient. For example, you might
- want to implement a dynamic script proxy to an underlying object;
- or you might want to implement an array-like class (i.e. that gives
- special treatment to properties that are valid array indexes, and
- to the property "length"). In such cases, you can subclass
- QScriptClass to achieve the desired behavior.
-
- QScriptClass allows you to handle all property access for a
- (class of) script object through virtual get/set property functions.
- Iteration of custom properties is also supported through the
- QScriptClassPropertyIterator class; this means you can advertise
- properties to be reported by for-in script statements and
- QScriptValueIterator.
-
- \section1 Error Handling and Debugging Facilities
-
- Syntax errors in scripts will be reported as soon as a script is
- evaluated; QScriptEngine::evaluate() will return a SyntaxError object
- that you can convert to a string to get a description of the error.
-
- The QScriptEngine::uncaughtExceptionBacktrace() function gives you
- a human-readable backtrace of the last uncaught exception. In order
- to get useful filename information in backtraces, you should pass
- proper filenames to QScriptEngine::evaluate() when evaluating your
- scripts.
-
- Often an exception doesn't happen at the time the script is evaluated,
- but at a later time when a function defined by the script is actually
- executed. For C++ signal handlers, this is tricky; consider the case
- where the clicked() signal of a button is connected to a script function,
- and that script function causes a script exception when it is handling
- the signal. Where is that script exception propagated to?
-
- The solution is to connect to the QScriptEngine::signalHandlerException()
- signal; this will give you notification when a signal handler causes
- an exception, so that you can find out what happened and/or recover
- from it.
-
- In Qt 4.4 the QScriptEngineAgent class was introduced. QScriptEngineAgent
- provides an interface for reporting low-level "events" in a script engine,
- such as when a function is entered or when a new script statement is
- reached. By subclassing QScriptEngineAgent you can be notified of these
- events and perform some action, if you want. QScriptEngineAgent itself
- doesn't provide any debugging-specific functionality (e.g. setting
- breakpoints), but it is the basis of tools that do.
-
- The QScriptEngineDebugger class introduced in Qt 4.5 provides a Qt Script
- debugger that can be embedded into your application.
-
- \section2 Redefining print()
-
- Qt Script provides a built-in print() function that can be useful for
- simple debugging purposes. The built-in print() function writes to
- standard output. You can redefine the print() function (or add your
- own function, e.g. debug() or log()) that redirects the text to
- somewhere else. The following code shows a custom print() that adds
- text to a QPlainTextEdit.
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 45
-
- The following code shows how the custom print() function may be
- initialized and used.
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 46
-
- A pointer to the QPlainTextEdit is stored as an internal property
- of the script function itself, so that it can be retrieved when
- the function is called.
-
- \section1 Using QtScript Extensions
-
- The QScriptEngine::importExtension() function can be used to load plugins
- into a script engine. Plugins typically add some extra functionality to
- the engine; for example, a plugin might add full bindings for the Qt
- Arthur painting API, so that those classes may be used from Qt Script
- scripts. There are currently no script plugins shipped with Qt.
-
- If you are implementing some Qt Script functionality that you want other
- Qt application developers to be able to use, developing an extension (e.g.
- by subclassing QScriptExtensionPlugin) is worth looking into.
-
- \section1 Internationalization
-
- Since Qt 4.5, Qt Script supports internationalization of scripts by building
- on the C++ internationalization functionality (see \l{Internationalization
- with Qt}).
-
- \section2 Use qsTr() for All Literal Text
-
- Wherever your script uses "quoted text" for text that will be presented to
- the user, ensure that it is processed by the QCoreApplication::translate()
- function. Essentially all that is necessary to achieve this is to use
- the qsTr() script function. Example:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 82
-
- This accounts for 99% of the user-visible strings you're likely to write.
-
- The qsTr() function uses the basename of the script's filename (see
- QFileInfo::baseName()) as the translation context; if the filename is not
- unique in your project, you should use the qsTranslate() function and pass a
- suitable context as the first argument. Example:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 83
-
- If you need to have translatable text completely outside a function, there
- are two functions to help: QT_TR_NOOP() and QT_TRANSLATE_NOOP(). They merely
- mark the text for extraction by the \c lupdate utility described below. At
- runtime, these functions simply return the text to translate unmodified.
-
- Example of QT_TR_NOOP():
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 84
-
- Example of QT_TRANSLATE_NOOP():
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 85
-
- \section2 Use String.prototype.arg() for Dynamic Text
-
- The String.prototype.arg() function (which is modeled after QString::arg())
- offers a simple means for substituting arguments:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 86
-
- \section2 Produce Translations
-
- Once you are using qsTr() and/or qsTranslate() throughout your scripts, you
- can start producing translations of the user-visible text in your program.
-
- The \l{Qt Linguist manual} provides further information about
- Qt's translation tools, \e{Qt Linguist}, \c lupdate and \c
- lrelease.
-
- Translation of Qt Script scripts is a three-step process:
-
- \list 1
-
- \o Run \c lupdate to extract translatable text from the script source code
- of the Qt application, resulting in a message file for translators (a TS
- file). The utility recognizes qsTr(), qsTranslate() and the
- \c{QT_TR*_NOOP()} functions described above and produces TS files
- (usually one per language).
-
- \o Provide translations for the source texts in the TS file, using
- \e{Qt Linguist}. Since TS files are in XML format, you can also
- edit them by hand.
-
- \o Run \c lrelease to obtain a light-weight message file (a QM
- file) from the TS file, suitable only for end use. Think of the TS
- files as "source files", and QM files as "object files". The
- translator edits the TS files, but the users of your application
- only need the QM files. Both kinds of files are platform and
- locale independent.
-
- \endlist
-
- Typically, you will repeat these steps for every release of your
- application. The \c lupdate utility does its best to reuse the
- translations from previous releases.
-
- When running \c lupdate, you must specify the location of the script(s),
- and the name of the TS file to produce. Examples:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 87
-
- will extract translatable text from \c myscript.qs and create the
- translation file \c myscript_la.qs.
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 88
-
- will extract translatable text from all files ending with \c{.qs} in the
- \c scripts folder and create the translation file \c scripts_la.qs.
-
- Alternatively, you can create a separate qmake project file that sets up
- the \c SOURCES and \c TRANSLATIONS variables appropriately; then run
- \c lupdate with the project file as input.
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 89
-
- When running \c lrelease, you must specify the name of the TS input
- file; or, if you are using a qmake project file to manage script
- translations, you specify the name of that file. \c lrelease will create
- \c myscript_la.qm, the binary representation of the translation.
-
- \section2 Apply Translations
-
- In your application, you must use QTranslator::load() to load the
- translation files appropriate for the user's language, and install them
- using QCoreApplication::installTranslator(). Finally, you must call
- QScriptEngine::installTranslatorFunctions() to make the script translation
- functions (qsTr(), qsTranslate() and \c{QT_TR*_NOOP()}) available to scripts
- that are subsequently evaluated by QScriptEngine::evaluate(). For scripts
- that are using the qsTr() function, the proper filename must be passed as
- second argument to QScriptEngine::evaluate().
-
- \c linguist, \c lupdate and \c lrelease are installed in the \c bin
- subdirectory of the base directory Qt is installed into. Click Help|Manual
- in \e{Qt Linguist} to access the user's manual; it contains a tutorial
- to get you started.
-
- See also the \l{Hello Script Example}.
-
- \section1 ECMAScript Compatibility
-
- QtScript implements all the built-in classes and functions defined
- in ECMA-262.
-
- The Date parsing and string conversion functions are implemented using
- QDateTime::fromString() and QDateTime::toString(), respectively.
-
- The RegExp class is a wrapper around QRegExp. The QRegExp semantics
- do not precisely match the semantics for regular expressions defined
- in ECMA-262.
-
- \section1 QtScript Extensions to ECMAScript
-
- \list
- \i \c{__proto__} \br
- The prototype of an object (QScriptValue::prototype())
- can be accessed through its \c{__proto__} property in script code.
- This property has the QScriptValue::Undeletable flag set.
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 40
-
- \i \c{Object.prototype.__defineGetter__} \br
- This function installs a
- getter function for a property of an object. The first argument is
- the property name, and the second is the function to call to get
- the value of that property. When the function is invoked, the
- \c this object will be the object whose property is accessed.
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 41
-
- \i \c{Object.prototype.__defineSetter__} \br
- This function installs a
- setter function for a property of an object. The first argument is
- the property name, and the second is the function to call to set
- the value of that property. When the function is invoked, the
- \c this object will be the object whose property is accessed.
- For example:
-
- \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 42
-
- \i \c{Function.prototype.connect} \br
- This function connects
- a signal to a slot. Usage of this function is described in
- the section \l{Using Signals and Slots}.
-
- \i \c{Function.prototype.disconnect} \br
- This function disconnects
- a signal from a slot. Usage of this function is described in
- the section \l{Using Signals and Slots}.
-
- \i \c{QObject.prototype.findChild} \br
- This function is semantically equivalent to QObject::findChild().
-
- \i \c{QObject.prototype.findChildren} \br
- This function is semantically equivalent to QObject::findChildren().
-
- \i \c{QObject.prototype.toString} \br
- This function returns a default string representation of a QObject.
-
- \i \c{gc} \br
- This function invokes the garbage collector.
-
- \i \c{Error.prototype.backtrace} \br
- This function returns a human-readable backtrace, in the form of
- an array of strings.
-
- \i Error objects have the following additional properties:
- \list
- \i \c{lineNumber}: The line number where the error occurred.
- \i \c{fileName}: The file name where the error occurred (if a file name
- was passed to QScriptEngine::evaluate()).
- \i \c{stack}: An array of objects describing the stack. Each object has
- the following properties:
- \list
- \i \c{functionName}: The function name, if available.
- \i \c{fileName}: The file name, if available.
- \i \c{lineNumber}: The line number, if available.
- \endlist
- \endlist
-
- \endlist
-
- */
diff --git a/doc/src/qtscriptdebugger-manual.qdoc b/doc/src/qtscriptdebugger-manual.qdoc
deleted file mode 100644
index 5c80a7e0e..000000000
--- a/doc/src/qtscriptdebugger-manual.qdoc
+++ /dev/null
@@ -1,437 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page qtscriptdebugger-manual.html
- \title Qt Script Debugger Manual
- \ingroup scripting
- \brief A manual describing how to use the Qt Script debugger.
-
- The Qt Script debugger is a tool for debugging script execution in
- Qt applications that use Qt Script. Application developers can embed
- the debugger into their application through the
- QScriptEngineDebugger class. This manual describes how to use the
- debugger. We assume that the reader is somewhat familiar with
- general debugging concepts and existing debugging tools.
-
- We assume that the debugger has been integrated into the application
- through the QScriptEngineDebugger::standardWindow()
- function, which provides the standard debugger configuration.
-
- \tableofcontents
-
- \section1 Getting Started
-
- The following image shows the debugger as created with
- \l{QScriptEngineDebugger::}{standardWindow()}:
-
- \image qtscript-debugger.png Running a script under the Qt Script debugger.
-
- The debugger will start, i.e., take control over the script's
- execution when any of these conditions are met:
-
- \list
- \o The \c{debugger} statement is encountered in the script.
- \o Clicking the \gui Interrupt menu item from the \gui Debug
- menu in the main window.
- \o A breakpoint is reached.
- \o An uncaught script exception is thrown.
- \endlist
-
- Once the debugger is started, the execution state can be inspected,
- e.g., the value of variables can be queried and the current program
- stack shown. New breakpoints can be set.
-
- The debugger will resume, i.e., give the control back to the script
- engine, when the user clicks \gui Continue menu item from the \gui
- Debug menu. It will be invoked again if one of the conditions
- described in the list above is met.
-
- \section1 Overview of Debugger Components
-
- The debugger's functionality is divided into a series of components,
- each being a widget that can be shown in the main window of the
- debugger. The following table describes each component and how they
- relate to each other.
-
- \table
- \header
- \o Component
- \o Description
- \row
- \o Console Widget
- \o The console widget provides a command-line interface to the
- debugger's functionality, and also serves as an interactive script
- interpreter. The set of commands and their syntax is inspired by
- GDB, the GNU Debugger. Commands and script variables are
- auto-completed through the TAB key.
-
- Any console command that causes a change in the debugger or debugger
- target's state will immediately be reflected in the other debugger
- components (e.g. breakpoints or local variables changed).
-
- The console provides a simple and powerful way of manipulating the
- script environment. For example, typing "x" and hitting enter will
- evaluate "x" in the current stack frame and display the result.
- Typing "x = 123" will assign the value 123 to the variable \c{x} in
- the current scope (or create a global variable \c{x} if there isn't
- one -- scripts evaluated through the console can have arbitrary side
- effects, so be careful).
-
- \row
- \o Stack Widget
- \o The stack widget shows a backtrace of the script execution state.
- Each row represents one frame in the stack. A row contains the
- frame index (0 being the inner-most frame), the name of the script function,
- and the location (file name and line number). To select a particular
- stack frame to inspect, click on its row.
-
- \row
- \o Locals Widget
- \o The locals widget shows the variables that are local to the
- currently selected stack frame; that is, the properties of the
- objects in the scope chain and the \c{this}-object. Objects can be
- expanded, so that their properties can be examined, recursively.
- Properties whose value has changed are shown in bold font.
-
- Properties that are not read-only can be edited. Double-click on the
- value and type in the new value; the value can be an arbitrary
- expression. The expression will be evaluated in the associated stack
- frame. While typing, you can press the TAB key to get possible
- completions for the expression.
-
- \row
- \o Code Widget
- \o The code widget shows the code of the currently selected script.
- The widget displays an arrow in the left margin, marking the
- code line that is being executed.
- Clicking in the margin of a line will cause a breakpoint to be
- toggled at that line. A breakpoint has to be set on a line that
- contains an actual statement in order to be useful.When an uncaught script exception occurs, the
- offending line will be shown with a red background.
-
- The code widget is read-only; it cannot currently be used to edit
- and (re)evaluate scripts. This is however possible from the
- command-line interface, see \l{Console Command Reference}.
-
- \row
- \o Scripts Widget
-
- \o The scripts widget shows the scripts that are currently loaded in
- the script engine. Clicking on a script will cause its code to be
- shown in the code widget. When a script is no longer referenced by
- the debugger target it is removed from the scripts widget. Code
- evaluated through QScriptEngine::evaluate() without a name specified, will be
- displayed in the widget as Anonymous.
-
- \row
- \o Breakpoints Widget
-
- \o The breakpoints widget shows all the breakpoints that are set. A
- breakpoint can be disabled or enabled by clicking the checkbox next
- to the breakpoint's ID (the ID is provided so that the breakpoint
- can be manipulated through the console widget as well).
-
- A condition can be associated with the breakpoint; the condition can
- be an arbitrary expression that should evaluate to true or
- false. The breakpoint will only be triggered when its location is
- reached \bold{and} the condition evaluates to true.
-
- Similarly, if the breakpoint's ignore-count is set to N, the
- breakpoint will be ignored the next N times it is hit.
-
- A new breakpoint can be set by clicking the New Breakpoint button
- and typing in a location of the form <filename>\bold{:}<linenumber>.
- The breakpoint location can refer to an already loaded script, or
- one that has not been loaded yet.
-
- \row
- \o Debug Output Widget
- \o The debug output widget shows messages generated by the print()
- script function. Scripts can use the special variables \c{__FILE__}
- and \c{__LINE__} to include the current location information in the
- messages.
-
- \row
- \o Error Log Widget
- \o The error log widget shows error messages that have been generated.
- All uncaught exceptions that occur in the engine will appear here.
-
- \endtable
-
- \section2 Resuming Script Evaluation
-
- Script evaluation can be resumed in one of the following ways:
-
- \list
- \o \bold{Continue}: Evaluation will resume normally.
- \o \bold{Step Into}: Evaluation will resume until the next statement is reached.
- \o \bold{Step Over}: Evaluation will resume until the next statement is reached;
- but if the current statement is a function call, the debugger
- will treat it as a single statement.
- \o \bold{Step Out}: Evaluation will resume until the current function exits and
- the next statement is reached.
- \o \bold{Run to Cursor}: Run until the statement at the cursor is reached.
- \o \bold{Run to New Script}: Run until the first statement of a new script is reached.
- \endlist
-
- In any case, script evaluation can also be stopped due to either of the
- following reasons:
-
- \list
- \o A \c{debugger} statement is encountered.
- \o A breakpoint is hit.
- \o An uncaught script exception occurs.
- \endlist
-
- \section2 Resuming After an Uncaught Exception
-
- When an uncaught script exception occurs, it is not possible to
- continue evaluating the current function normally. However, you can
- use the console command \bold{return} to catch the exception and
- return a value to the calling function.
-
- \section1 Console Command Reference
-
- Note that you can also get help on the available commands by typing
- ".help" in the console.
-
- \section2 Breakpoint-related Commands
-
- Break points is set
-
- \section3 break <location>
-
- Sets a breakpoint at a given code line.
-
- \code
- .break foo.qs:123
- \endcode
-
- This command sets a breakpoint at \c{foo.qs}, line 123.
-
- \code
- .break 123
- \endcode
-
- This command sets a breakpoint at line 123 in the current script; the current script
- is the script associated with the current stack frame.
-
- Each breakpoint has a unique identifier (an integer) associated with it.
- This identifier is needed by other breakpoint-related commands.
-
- \section3 clear <location>
-
- \code
- .clear foo.qs:123
- \endcode
-
- clears (deletes) the breakpoint at \c{foo.qs}, line 123.
-
- \code
- clear 123
- \endcode
-
- clears (deletes) the breakpoint at line 123 in the current script;
- the current script is the script associated with the current stack
- frame.
-
- \section3 condition <breakpoint-id> <expression>
-
- Sets a condition for a breakpoint.
-
- \code
- .condition 1 i > 42
- \endcode
-
- specifies that breakpoint 1 should only be triggered if the variable \c{i}
- is greater than 42.
-
- The expression can be an arbitrary one, i.e. it can have
- side-effects. It can be any valid QScript conditional
- expression.
-
- \section3 delete <breakpoint-id>
-
- Deletes a breakpoint, i.e., removes it from the current debugging
- session.
-
- \section3 disable <breakpoint-id>
-
- Disables a breakpoint. The breakpoint will continue to exist, but
- will not stop program execution.
-
- \section3 enable <breakpoint-id>
-
- Enables a breakpoint. Breakpoints are enabled by default, so you
- only need to use this command if you have disabled to breakpoint
- previously.
-
- \section3 ignore <breakpoint-id> <count>
-
- Sets the ignore-count of a breakpoint, i.e., the breakpoint will not
- stop the program execution unless it have been reached \c count
- times. This can, for instance, be useful in loops to stop at a
- specific iteration.
-
- \code
- .ignore 1 5
- \endcode
-
- Specifies that breakpoint 1 should be ignored the next 5 times it is
- hit.
-
- \section3 info breakpoints
-
- Lists the breakpoints that are set.
-
- \code
- .info breakpoints
- \endcode
-
- \section3 tbreak <location>
-
- Sets a temporary breakpoint. This command is identical to the
- \c{break} command, only the breakpoint will be automatically deleted
- the first time it is hit.
-
- \section2 File-related Commands
-
- \section3 list <location>
-
- Lists the contents of a script around a given location, where the
- location is given as a line number and, optionally, the name of the
- file from which you will print. If only a line number is given, \c
- {.list} will use the file of the current stack frame.
-
- \code
- .list foo.qs:125
- \endcode
-
- When no arguments are given, \c{list} will incrementally list
- sections of the current script.
-
- \section3 info scripts
-
- Lists the scripts that are currently loaded.
-
- \section2 Execution-related Commands
-
- \section3 advance <location>
-
- Advances execution to a given location. The syntax of the location
- is the same as for setting breakpoints. For example:
-
- \code
- .advance foo.qs:125
- \endcode
-
- \section3 continue
-
- Continues execution normally, i.e, gives the execution control over
- the script back to the QScriptEngine.
-
- \section3 eval <program>
-
- Evaluates a program.
-
- \section3 finish
-
- Continues execution until the current function exits and the next
- statement is reached (i.e., the statement after the call to the
- function).
-
- \section3 interrupt
-
- Requests that execution should be interrupted. Interruption will
- occur as soon as a new script statement is reached.
-
- \section3 next <count = 1>
-
- Continues execution until a new statement is reached; but if the
- current statement is a function call, the function call will be
- treated as a single statement. This will be done \c count times
- before execution is stopped; the default is one.
-
- \section3 return <expression>
-
- Makes the current frame return to its caller. If \c expression is
- given, it will sent as the result of the function (i.e., replacing
- the functions return value). \c expression can be any valid QScript
- expression.
-
- \section3 step <count = 1>
-
- Continues execution until a new statement is reached. If the number
- \c count is given as argument, this will be done \c count times
- before execution is stopped. As opposed to \l{next <count = 1>}, \c
- step will enter functions when encountering a function call
- statement.
-
- \section2 Stack-related Commands
-
- \section3 backtrace
-
- Shows a backtrace of the current execution. The trace will list the
- function name and its position in the script for each stack frame.
-
- \section3 down
-
- Selects the previous (inner) stack frame. The execution will not
- return to this frame, but you will get access to its local
- variables.
-
- \section3 frame <index>
-
- This command moves to the stack frame with the given \c index. The
- index of the frame on the top of the stack is 0. Previous frames are
- numbered from 1 and upwards (the bottom frame in the stack has the
- largest index).
-
- \section3 info locals
-
- Lists the variables that are in the scope of the current frame.
-
- \section3 up
-
- Selects the next (outer) stack frame.
-
-*/
diff --git a/doc/src/qtscriptextensions.qdoc b/doc/src/qtscriptextensions.qdoc
deleted file mode 100644
index ed098622c..000000000
--- a/doc/src/qtscriptextensions.qdoc
+++ /dev/null
@@ -1,126 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
-/*!
- \page qtscriptextensions.html
- \title Creating QtScript Extensions
- \ingroup scripting
- \brief A guide to creating and using QtScript extensions.
-
- QtScript extensions can make additional functionality available to scripts
- evaluated by a QScriptEngine. Extensions are imported by calling
- the QScriptEngine::importExtension() function.
-
- There are three ways to create an extension:
-
- \list
- \o Subclass QScriptExtensionPlugin and implement the desired functionality.
- \o Implement the functionality in a script file.
- \o Use a hybrid approach, where part of the functionality is implemented in a
- QScriptExtensionPlugin, and part is implemented in a script file.
- \endlist
-
- The (dot-qualified) extension name is used to determine the path (relative to
- the application's plugin path) where QScriptEngine will look for the script
- file that will initialize the extension; if a file called \c{__init__.js}
- (usually located in \c{[application plugin path]/script/foo/}) is
- found in the corresponding folder, its contents will be evaluated by the engine
- when the extension is imported.
- As an example, if the extension is called \c{"foo.bar.baz"}, the engine will look
- for \c{__init__.js} in \c{foo/bar/baz}. Additionally, before importing
- \c{"foo.bar.baz"}, the engine will ensure that the extensions \c{"foo"} and \c{"foo.bar"}
- are imported, locating and evaluating the corresponding \c{__init__.js}
- in the same manner (in folders \c{foo} and \c{foo/bar}, respectively).
-
- The contents of \c{__init__.js} are evaluated in a new QScriptContext,
- as if it were the body of a function. The engine's Global Object acts as
- the \c{this} object. The following local variables are initially available
- to the script:
-
- \list
- \o \bold{__extension__}: The name of the extension (e.g. \c{"foo.bar.baz"}).
- \o \bold{__setupPackage__}: A convenience function for setting up a "namespace" in the script environment. A typical application is to call \c{__setupPackage__()} with \c{__extension__} as argument; e.g. \c{__setupPackage__("foo.bar.baz")} would ensure that the object chain represented by the expression \c{foo.bar.baz} exists in the script environment. (This function is semantically equivalent to QScriptExtensionPlugin::setupPackage().)
- \o \bold{__postInit__}: By default, this variable is undefined. If you assign a function to it, that function will be called \bold{after} the C++ plugin's initialize() function has been called. You can use this to perform further initialization that depends on e.g. native functions that the C++ plugin registers.
- \endlist
-
- An example of a simple \c{__init__.js}:
-
- \snippet doc/src/snippets/code/doc_src_qtscriptextensions.qdoc 0
-
- QScriptEngine will look for a QScriptExtensionPlugin that provides
- the relevant extension by querying each plugin for its keys()
- until a match is found. The plugin's initialize() function will be
- called \bold{after} the relevant \c{__init__.js} (if any) has been
- evaluated.
-
- Continuining with the example of our imaginary extension \c{"foo.bar.baz"},
- the following steps will be performed by QScriptEngine::importExtension():
-
- \list
- \o If it exists, \c{foo/__init__.js} is evaluated.
- \o If a plugin with \c{"foo"} in its list of keys is found, its initialize() function is called with \c{"foo"} as key.
- \o If it exists, \c{foo/bar/__init__.js} is evaluated.
- \o If a plugin with \c{"foo.bar"} in its list of keys is found, its initialize() function is called with \c{"foo.bar"} as key.
- \o If it exists, \c{foo/bar/baz/__init__.js} is evaluated.
- \o If a plugin with "foo.bar.baz" in its list of keys is found, its initialize() function is called with \c{"foo.bar.baz"} as key.
- \endlist
-
- \section1 Static Extensions
-
- When an extension is compiled and linked into your application as a
- static plugin, Qt Script will look for the optional \c{__init__.js}
- script in a resource, prefixed by \c{:/qtscriptextension}. For example,
- if the extension key is "foo.bar", Qt Script will evaluate the contents
- of the file \c{:/qtscriptextension/foo/bar/__init__.js}, if it
- exists. Note that if the resource is built into the plugin, you may
- need to use the Q_INIT_RESOURCE() macro to initialize the resource
- before importing the extension.
-*/
diff --git a/doc/src/qtscripttools.qdoc b/doc/src/qtscripttools.qdoc
deleted file mode 100644
index 7a5ffe6db..000000000
--- a/doc/src/qtscripttools.qdoc
+++ /dev/null
@@ -1,72 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtScriptTools
- \title QtScriptTools Module
- \since 4.5
- \contentspage Qt's Modules
- \previouspage QtScript
- \nextpage QtSql
- \ingroup modules
- \ingroup scripting
-
- \brief The QtScriptTools module provides additional components for applications that use Qt Script.
-
- \tableofcontents
-
- \section1 Configuring the Build Process
-
- Applications that use the Qt Script Tools classes need to
- be configured to be built against the QtScriptTools module.
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc.src.qtscripttools.qdoc 0
-
- To link against the module, add this line to your \l qmake \c .pro file:
-
- \snippet doc/src/snippets/code/doc.src.qtscripttools.qdoc 1
-
- The QtScriptTools module is part of the \l{Qt Full Framework Edition} and
- the \l{Open Source Versions of Qt}.
-
- */
diff --git a/doc/src/qtsql.qdoc b/doc/src/qtsql.qdoc
deleted file mode 100644
index 0540ff57b..000000000
--- a/doc/src/qtsql.qdoc
+++ /dev/null
@@ -1,571 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtSql
- \title QtSql Module
- \contentspage Qt's Modules
- \previouspage QtScript
- \nextpage QtSvg
- \ingroup modules
-
- \brief The QtSql module helps you provide seamless database
- integration to your Qt applications.
-
- The SQL classes are divided into three layers:
-
- \table
- \header \o Layer \o Description
- \row \o \bold{Driver Layer}
- \o This comprises the classes QSqlDriver,
- QSqlDriverCreator<T>, QSqlDriverCreatorBase,
- QSqlDriverPlugin, and QSqlResult. This layer provides the
- low-level bridge between the specific databases and the
- SQL API layer. See \l{SQL Database Drivers} for more
- information.
- \row \o \bold{SQL API Layer}
- \o These classes provide access to databases. Connections
- are made using the QSqlDatabase class. Database
- interaction is achieved by using the QSqlQuery class.
- In addition to QSqlDatabase and QSqlQuery, the SQL API
- layer is supported by QSqlError, QSqlField, QSqlIndex,
- and QSqlRecord.
-
- \row \o \bold{User Interface Layer}
- \o These classes link the data from a database to
- data-aware widgets. They include QSqlQueryModel,
- QSqlTableModel, and QSqlRelationalTableModel. These
- classes are designed to work with Qt's model/view
- framework.
- \endtable
-
- Note that to use any of these classes, a QCoreApplication object
- must have been instantiated first. To include the definitions of
- the module's classes, use the following directive:
-
- \snippet doc/src/snippets/code/doc_src_qtsql.qdoc 0
-
- To link against the module, add this line to your \l qmake \c
- .pro file:
-
- \snippet doc/src/snippets/code/doc_src_qtsql.qdoc 1
-
- The QtSql module is part of the \l{Qt Full Framework Edition} and the
- \l{Open Source Versions of Qt}.
-
- This overview assumes that you have at least a basic knowledge of
- SQL. You should be able to understand simple \c SELECT, \c
- INSERT, \c UPDATE, and \c DELETE statements. Although the \l
- QSqlTableModel class provides an interface to database browsing
- and editing that does not require a knowledge of SQL, a basic
- understanding of SQL is highly recommended. A standard text
- covering SQL databases is \e {An Introduction to Database Systems}
- (7th Ed.) by C. J. Date, ISBN 0201385902.
-
- Topics:
-
- \tableofcontents
-
- \section1 Connecting to Databases
-
- To access a database with QSqlQuery or QSqlQueryModel, create and
- open one or more database connections. Database connections are
- normally identified by connection name, \e{not} by database name.
- You can have multiple connections to the same database.
- QSqlDatabase also supports the concept of a \e{default}
- connection, which is an unnamed connection. When calling QSqlQuery
- or QSqlQueryModel member functions that take a connection name
- argument, if you don't pass a connection name, the default
- connection will be used. Creating a default connection is
- convenient when your application only requires one database
- connection.
-
- Note the difference between creating a connection and opening it.
- Creating a connection involves creating an instance of class
- QSqlDatabase. The connection is not usable until it is opened. The
- following snippet shows how to create a \e{default} connection
- and then open it:
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 26
-
- The first line creates the connection object, and the last line
- opens it for use. In between, we initialize some connection
- information, including the \l{QSqlDatabase::setDatabaseName()}
- {database name}, the \l{QSqlDatabase::setHostName()} {host name},
- the \l{QSqlDatabase::setUserName()} {user name}, and the
- \l{QSqlDatabase::setPassword()} {password}. In this case, we are
- connecting to the MySQL database \c{flightdb} on the host
- \c{bigblue}. The \c{"QMYSQL"} argument to
- \l{QSqlDatabase::addDatabase()} {addDatabase()} specifies the type
- of database driver to use for the connection. The set of database
- drivers included with Qt are shown in the table of \l{SQL Database
- Drivers#Supported Databases} {supported database drivers}.
-
- The connection in the snippet will be the \e{default} connection,
- because we don't pass the second argument to
- \l{QSqlDatabase::addDatabase()} {addDatabase()}, which is the
- connection name. For example, here we establish two MySQL database
- connections named \c{"first"} and \c{"second"}:
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 27
-
- After these connections have been initialized, \l{QSqlDatabase::}
- {open()} for each one to establish the live connections. If the
- \l{QSqlDatabase::} {open()} fails, it returns false. In that case,
- call QSqlDatabase::lastError() to get error information.
-
- Once a connection is established, we can call the static function
- QSqlDatabase::database() from anywhere with a connection name to
- get a pointer to that database connection. If we don't pass a
- connection name, it will return the default connection. For
- example:
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 28
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 29
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 30
-
- To remove a database connection, first close the database using
- QSqlDatabase::close(), then remove it using the static method
- QSqlDatabase::removeDatabase().
-
- \section1 Executing SQL Statements
-
- The QSqlQuery class provides an interface for executing SQL
- statements and navigating through the result set of a query.
-
- The QSqlQueryModel and QSqlTableModel classes described in the
- next section provide a higher-level interface for accessing
- databases. If you are unfamiliar with SQL, you might want to skip
- directly to the next section (\l{Using the SQL Model Classes}).
-
- \section2 Executing a Query
-
- To execute an SQL statement, simply create a QSqlQuery object and
- call QSqlQuery::exec() like this:
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 31
-
- The QSqlQuery constructor accepts an optional QSqlDatabase object
- that specifies which database connection to use. In the example
- above, we don't specify any connection, so the default connection
- is used.
-
- If an error occurs, \l{QSqlQuery::exec()}{exec()} returns false.
- The error is then available as QSqlQuery::lastError().
-
- \section2 Navigating the Result Set
-
- QSqlQuery provides access to the result set one record at a time.
- After the call to \l{QSqlQuery::exec()}{exec()}, QSqlQuery's
- internal pointer is located one position \e{before} the first
- record. We must call QSqlQuery::next() once to advance to the
- first record, then \l{QSqlQuery::next()}{next()} again repeatedly
- to access the other records, until it returns false. Here's a
- typical loop that iterates over all the records in order:
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 32
-
- The QSqlQuery::value() function returns the value of a field in
- the current record. Fields are specified as zero-based indexes.
- QSqlQuery::value() returns a QVariant, a type that can hold
- various C++ and core Qt data types such as \c int, QString, and
- QByteArray. The different database types are automatically mapped
- into the closest Qt equivalent. In the code snippet, we call
- QVariant::toString() and QVariant::toInt() to convert
- variants to QString and \c int.
-
- For an overview of the recommended types used with Qt supported
- Databases, please refer to \l {QtSql Module - Recommended use of data types}{this table}.
-
- You can iterate back and forth using QSqlQuery::next(),
- QSqlQuery::previous(), QSqlQuery::first(), QSqlQuery::last(), and
- QSqlQuery::seek(). The current row index is returned by
- QSqlQuery::at(), and the total number of rows in the result set
- is avaliable as QSqlQuery::size() for databases that support it.
-
- To determine whether a database driver supports a given feature,
- use QSqlDriver::hasFeature(). In the following example, we call
- QSqlQuery::size() to determine the size of a result set of
- the underlying database supports that feature; otherwise, we
- navigate to the last record and use the query's position to tell
- us how many records there are.
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 33
-
- If you iterate through a result set only using next() and seek()
- with positive values, you can call
- QSqlQuery::setForwardOnly(true) before calling exec(). This is an
- easy optimization that will speed up the query significantly when
- operating on large result sets.
-
- \section2 Inserting, Updating, and Deleting Records
-
- QSqlQuery can execute arbitrary SQL statements, not just
- \c{SELECT}s. The following example inserts a record into a table
- using \c{INSERT}:
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 34
-
- If you want to insert many records at the same time, it is often
- more efficient to separate the query from the actual values being
- inserted. This can be done using placeholders. Qt supports two
- placeholder syntaxes: named binding and positional binding.
- Here's an example of named binding:
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 35
-
- Here's an example of positional binding:
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 36
-
- Both syntaxes work with all database drivers provided by Qt. If
- the database supports the syntax natively, Qt simply forwards the
- query to the DBMS; otherwise, Qt simulates the placeholder syntax
- by preprocessing the query. The actual query that ends up being
- executed by the DBMS is available as QSqlQuery::executedQuery().
-
- When inserting multiple records, you only need to call
- QSqlQuery::prepare() once. Then you call
- \l{QSqlQuery::bindValue()}{bindValue()} or
- \l{QSqlQuery::addBindValue()}{addBindValue()} followed by
- \l{QSqlQuery::exec()}{exec()} as many times as necessary.
-
- Besides performance, one advantage of placeholders is that you
- can easily specify arbitrary values without having to worry about
- escaping special characters.
-
- Updating a record is similar to inserting it into a table:
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 37
-
- You can also use named or positional binding to associate
- parameters to actual values.
-
- Finally, here's an example of a \c DELETE statement:
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 38
-
- \section2 Transactions
-
- If the underlying database engine supports transactions,
- QSqlDriver::hasFeature(QSqlDriver::Transactions) will return
- true. You can use QSqlDatabase::transaction() to initiate a
- transaction, followed by the SQL commands you want to execute
- within the context of the transaction, and then either
- QSqlDatabase::commit() or QSqlDatabase::rollback(). When
- using transactions you must start the transaction before you
- create your query.
-
- Example:
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 39
-
- Transactions can be used to ensure that a complex operation is
- atomic (for example, looking up a foreign key and creating a
- record), or to provide a means of canceling a complex change in
- the middle.
-
- \omit
- It would be useful to mention transactions, and the fact that
- some databases don't support them.
- \endomit
-
- \section1 Using the SQL Model Classes
-
- In addition to QSqlQuery, Qt offers three higher-level classes
- for accessing databases. These classes are QSqlQueryModel,
- QSqlTableModel, and QSqlRelationalTableModel.
-
- \table
- \row \o QSqlQueryModel
- \o A read-only model based on an arbitrary SQL query.
- \row \o QSqlTableModel
- \o A read-write model that works on a single table.
- \row \o QSqlRelationalTableModel
- \o A QSqlTableModel subclass with foreign key support.
- \endtable
-
- These classes derive from QAbstractTableModel (which in turn
- inherits from QAbstractItemModel) and make it easy to present
- data from a database in an item view class such as QListView and
- QTableView. This is explained in detail in the \l{Presenting Data
- in a Table View} section.
-
- Another advantage of using these classes is that it can make your
- code easier to adapt to other data sources. For example, if you
- use QSqlTableModel and later decide to use XML files to store
- data instead of a database, it is essentially just a matter of
- replacing one data model with another.
-
- \section2 The SQL Query Model
-
- QSqlQueryModel offers a read-only model based on an SQL query.
-
- Example:
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 40
-
- After setting the query using QSqlQueryModel::setQuery(), you can
- use QSqlQueryModel::record(int) to access the individual records.
- You can also use QSqlQueryModel::data() and any of the other
- functions inherited from QAbstractItemModel.
-
- There's also a \l{QSqlQueryModel::setQuery()}{setQuery()}
- overload that takes a QSqlQuery object and operates on its result
- set. This enables you to use any features of QSqlQuery to set up
- the query (e.g., prepared queries).
-
- \section2 The SQL Table Model
-
- QSqlTableModel offers a read-write model that works on a single
- SQL table at a time.
-
- Example:
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 41
-
- QSqlTableModel is a high-level alternative to QSqlQuery for
- navigating and modifying individual SQL tables. It typically
- results in less code and requires no knowledge of SQL syntax.
-
- Use QSqlTableModel::record() to retrieve a row in the table, and
- QSqlTableModel::setRecord() to modify the row. For example, the
- following code will increase every employee's salary by 10 per
- cent:
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 42
-
- You can also use QSqlTableModel::data() and
- QSqlTableModel::setData(), which are inherited from
- QAbstractItemModel, to access the data. For example, here's how
- to update a record using
- \l{QSqlTableModel::setData()}{setData()}:
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 43
-
- Here's how to insert a row and populate it:
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 44
-
- Here's how to delete five consecutive rows:
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 45
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 46
-
- The first argument to QSqlTableModel::removeRows() is the index
- of the first row to delete.
-
- When you're finished changing a record, you should always call
- QSqlTableModel::submitAll() to ensure that the changes are
- written to the database.
-
- When and whether you actually \e need to call submitAll() depends
- on the table's \l{QSqlTableModel::editStrategy()}{edit strategy}.
- The default strategy is QSqlTableModel::OnRowChange, which
- specifies that pending changes are applied to the database when
- the user selects a different row. Other strategies are
- QSqlTableModel::OnManualSubmit (where all changes are cached in
- the model until you call submitAll()) and
- QSqlTableModel::OnFieldChange (where no changes are cached).
- These are mostly useful when QSqlTableModel is used with a view.
-
- QSqlTableModel::OnFieldChange seems to deliver the promise that
- you never need to call submitAll() explicitly. There are two
- pitfalls, though:
-
- \list
- \o Without any caching, performance may drop significantly.
- \o If you modify a primary key, the record might slip through
- your fingers while you are trying to populate it.
- \endlist
-
- \section2 The SQL Relational Table Model
-
- QSqlRelationalTableModel extends QSqlTableModel to provide
- support for foreign keys. A foreign key is a 1-to-1 mapping
- between a field in one table and the primary key field of another
- table. For example, if a \c book table has a field called \c
- authorid that refers to the author table's \c id field, we say
- that \c authorid is a foreign key.
-
- \table
- \row \o \inlineimage noforeignkeys.png
- \o \inlineimage foreignkeys.png
- \endtable
-
- The screenshot on the left shows a plain QSqlTableModel in a
- QTableView. Foreign keys (\c city and \c country) aren't resolved
- to human-readable values. The screenshot on the right shows a
- QSqlRelationalTableModel, with foreign keys resolved into
- human-readable text strings.
-
- The following code snippet shows how the QSqlRelationalTableModel
- was set up:
-
- \snippet examples/sql/relationaltablemodel/relationaltablemodel.cpp 0
- \codeline
- \snippet examples/sql/relationaltablemodel/relationaltablemodel.cpp 1
- \snippet examples/sql/relationaltablemodel/relationaltablemodel.cpp 2
-
- See the QSqlRelationalTableModel documentation for details.
-
- \section1 Presenting Data in a Table View
-
- The QSqlQueryModel, QSqlTableModel, and QSqlRelationalTableModel
- classes can be used as a data source for Qt's view classes such
- as QListView, QTableView, and QTreeView. In practice, QTableView
- is by far the most common choice, because an SQL result set is
- essentially a two-dimensional data structure.
-
- \image relationaltable.png A table view displaying a QSqlTableModel
-
- The following example creates a view based on an SQL data model:
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 17
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 18
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 19
-
- If the model is a read-write model (e.g., QSqlTableModel), the
- view lets the user edit the fields. You can disable this by
- calling
-
- \snippet doc/src/snippets/sqldatabase/sqldatabase.cpp 20
-
- You can use the same model as a data source for multiple views.
- If the user edits the model through one of the views, the other
- views will reflect the changes immediately. The
- \l{sql/tablemodel}{Table Model} example shows how it works.
-
- View classes display a header at the top to label the columns. To
- change the header texts, call
- \l{QAbstractItemModel::setHeaderData()}{setHeaderData()} on the
- model. The header's labels default to the table's field names.
- For example:
-
- \snippet examples/sql/relationaltablemodel/relationaltablemodel.cpp 3
-
- QTableView also has a vertical header on the left with numbers
- identifying the rows. If you insert rows programmatically using
- QSqlTableModel::insertRows(), the new rows will be marked with an
- asterisk (*) until they are submitted using
- \l{QSqlTableModel::submitAll()}{submitAll()} or automatically
- when the user moves to another record (assuming the
- \l{QSqlTableModel::EditStrategy}{edit strategy} is
- QSqlTableModel::OnRowChange).
-
- \image insertrowinmodelview.png Inserting a row in a model
-
- Likewise, if you remove rows using
- \l{QSqlTableModel::removeRows()}{removeRows()}, the rows will be
- marked with an exclamation mark (!) until the change is
- submitted.
-
- The items in the view are rendered using a delegate. The default
- delegate, QItemDelegate, handles the most common data types (\c
- int, QString, QImage, etc.). The delegate is also responsible for
- providing editor widgets (e.g., a combobox) when the user starts
- editing an item in the view. You can create your own delegates by
- subclassing QAbstractItemDelegate or QItemDelegate. See
- \l{Model/View Programming} for more information.
-
- QSqlTableModel is optimized to operate on a single table at a
- time. If you need a read-write model that operates on an
- arbitrary result set, you can subclass QSqlQueryModel and
- reimplement \l{QAbstractItemModel::flags()}{flags()} and
- \l{QAbstractItemModel::setData()}{setData()} to make it
- read-write. The following two functions make fields 1 and 2 of a
- query model editable:
-
- \snippet examples/sql/querymodel/editablesqlmodel.cpp 0
- \codeline
- \snippet examples/sql/querymodel/editablesqlmodel.cpp 1
-
- The setFirstName() helper function is defined as follows:
-
- \snippet examples/sql/querymodel/editablesqlmodel.cpp 2
-
- The setLastName() function is similar. See the
- \l{sql/querymodel}{Query Model} example for the complete source code.
-
- Subclassing a model makes it possible to customize it in many
- ways: You can provide tooltips for the items, change the
- background color, provide calculated values, provide different
- values for viewing and editing, handle null values specially, and
- more. See \l{Model/View Programming} as well as the \l
- QAbstractItemView reference documentation for details.
-
- If all you need is to resolve a foreign key to a more
- human-friendly string, you can use QSqlRelationalTableModel. For
- best results, you should also use QSqlRelationalDelegate, a
- delegate that provides combobox editors for editing foreign keys.
-
- \image relationaltable.png Editing a foreign key in a relational table
-
- The \l{sql/relationaltablemodel}{Relational Table Model} example
- illustrates how to use QSqlRelationalTableModel in conjunction with
- QSqlRelationalDelegate to provide tables with foreign key
- support.
-
- \section1 Creating Data-Aware Forms
-
- Using the SQL models described above, the contents of a database can
- be presented to other model/view components. For some applications,
- it is sufficient to present this data using a standard item view,
- such as QTableView. However, users of record-based applications often
- require a form-based user interface in which data from a specific
- row or column in a database table is used to populate editor widgets
- on a form.
-
- Such data-aware forms can be created with the QDataWidgetMapper class,
- a generic model/view component that is used to map data from a model
- to specific widgets in a user interface.
-
- QDataWidgetMapper operates on a specific database table, mapping items
- in the table on a row-by-row or column-by-column basis. As a result,
- using QDataWidgetMapper with a SQL model is as simple as using it with
- any other table model.
-
- \image qdatawidgetmapper-simple.png
-
- The \l{demos/books}{Books} demonstration shows how information can
- be presented for easy access by using QDataWidgetMapper and a set of
- simple input widgets.
-*/
diff --git a/doc/src/qtsvg.qdoc b/doc/src/qtsvg.qdoc
deleted file mode 100644
index 18db3871e..000000000
--- a/doc/src/qtsvg.qdoc
+++ /dev/null
@@ -1,135 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtSvg
- \title QtSvg Module
- \since 4.1
- \contentspage Qt's Modules
- \previouspage QtSql
- \nextpage QtWebKit
- \ingroup modules
-
- \brief The QtSvg module provides classes for displaying the contents of SVG
- files.
-
- Scalable Vector Graphics (SVG) is a language for describing two-dimensional
- graphics and graphical applications in XML. SVG 1.1 is a W3C Recommendation
- and forms the core of the current SVG developments in Qt. SVG 1.2 is the
- specification currently being developed by the \l{SVG Working Group}, and it
- is \l{http://www.w3.org/TR/SVG12/}{available in draft form}.
- The \l{Mobile SVG Profiles} (SVG Basic and SVG Tiny) are aimed at
- resource-limited devices and are part of the 3GPP platform for third generation
- mobile phones. You can read more about SVG at \l{About SVG}.
-
- \tableofcontents
-
- \section1 SVG Support
- Qt supports the \l{SVG 1.2 Tiny Static Features}{static features} of
- \l{SVG 1.2 Tiny}. ECMA scripts and DOM manipulation are currently not
- supported.
-
- \section1 Configuring the Build Process
-
- Applications that use Qt's SVG classes need to
- be configured to be built against the QtSvg module.
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qtsvg.qdoc 0
-
- To link against the module, add this line to your \l qmake \c
- .pro file:
-
- \snippet doc/src/snippets/code/doc_src_qtsvg.qdoc 1
-
- The QtSvg module is part of the \l{Qt Full Framework Edition} and the
- \l{Open Source Versions of Qt}.
-
- \section1 Rendering SVG files
-
- The easiest way to render SVG files is to construct a QSvgWidget and
- load an SVG file using one of the QSvgWidget::load() functions.
-
- QSvgRenderer is the class responsible for rendering SVG files for
- QSvgWidget, and it can be used directly to provide SVG support for
- custom widgets.
- To load an SVG file, construct a QSvgRenderer with a file name or the
- contents of a file, or call QSvgRenderer::load() on an existing
- renderer. If the SVG file has been loaded successfully the
- QSvgRenderer::isValid() will return true.
-
- Once you have loaded the SVG file successfully, you can render it
- with the QSvgRenderer::render() function. Note that this scheme allows
- you to render SVG files on all paint devices supported by Qt, including
- QWidget, QGLWidget, and QImage. See the \l{SVG Viewer Example}{SVG Viewer}
- example for more details.
-
- \section1 Additional Information
-
- Some code for arc handling in this module is derived from code with
- the following license:
-
- \legalese
- Copyright 2002 USC/Information Sciences Institute
-
- Permission to use, copy, modify, distribute, and sell this software
- and its documentation for any purpose is hereby granted without
- fee, provided that the above copyright notice appear in all copies
- and that both that copyright notice and this permission notice
- appear in supporting documentation, and that the name of
- Information Sciences Institute not be used in advertising or
- publicity pertaining to distribution of the software without
- specific, written prior permission. Information Sciences Institute
- makes no representations about the suitability of this software for
- any purpose. It is provided "as is" without express or implied
- warranty.
-
- INFORMATION SCIENCES INSTITUTE DISCLAIMS ALL WARRANTIES WITH REGARD
- TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL INFORMATION SCIENCES
- INSTITUTE BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA
- OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
- \endlegalese
-*/
diff --git a/doc/src/qttest.qdoc b/doc/src/qttest.qdoc
deleted file mode 100644
index 5bb2626ec..000000000
--- a/doc/src/qttest.qdoc
+++ /dev/null
@@ -1,70 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtTest
- \title QtTest Module
- \contentspage Qt's Modules
- \previouspage QtAssistant
- \nextpage QAxContainer
- \ingroup modules
-
- \keyword QtTest
-
- \brief The QtTest module provides classes for unit testing Qt applications and libraries.
-
- Applications that use Qt's unit testing classes need to
- be configured to be built against the QtTest module.
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qttest.qdoc 0
-
- To link against the module, add this line to your \l qmake \c
- .pro file:
-
- \snippet doc/src/snippets/code/doc_src_qttest.qdoc 1
-
- See the \l{QTestLib Manual} for a detailed introduction on how to use
- Qt's unit testing features with your applications.
-
- The QtTest module is part of all \l{Qt editions}.
-*/
diff --git a/doc/src/qtuiloader.qdoc b/doc/src/qtuiloader.qdoc
deleted file mode 100644
index ba621a814..000000000
--- a/doc/src/qtuiloader.qdoc
+++ /dev/null
@@ -1,82 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtUiTools
- \title QtUiTools Module
- \since 4.1
- \contentspage Qt's Modules
- \previouspage QtDesigner
- \nextpage QtHelp
- \ingroup modules
-
- \brief The QtUiTools module provides classes to handle forms created
- with Qt Designer.
-
- These forms are processed at run-time to produce dynamically-generated
- user interfaces. In order to generate a form at run-time, a resource
- file containing a UI file is needed. Applications that use the
- form handling classes need to be configured to be built against the
- QtUiTools module. This is done by including the following declaration
- in a \c qmake project file to ensure that the application is compiled
- and linked appropriately.
-
- \snippet doc/src/snippets/code/doc_src_qtuiloader.qdoc 0
-
- A form loader object, provided by the QUiLoader class, is used to
- construct the user interface. This user interface can
- be retrieved from any QIODevice; for example, a QFile object can be
- used to obtain a form stored in a project's resources. The
- QUiLoader::load() function takes the user interface description
- contained in the file and constructs the form widget.
-
- To include the definitions of the module's classes, use the following
- directive:
-
- \snippet doc/src/snippets/code/doc_src_qtuiloader.qdoc 1
-
- \note These classes are part of the \l{Open Source Versions of Qt} and
- \l{Qt Commercial Editions}{Qt Full Framework Edition} for commercial
- users.
-
- \sa{Calculator Builder Example}, {World Time Clock Builder Example}
-*/
-
diff --git a/doc/src/qtxml.qdoc b/doc/src/qtxml.qdoc
deleted file mode 100644
index 4df25892d..000000000
--- a/doc/src/qtxml.qdoc
+++ /dev/null
@@ -1,615 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtXml
- \title QtXml Module
- \contentspage Qt's Modules
- \previouspage QtSvg
- \nextpage QtXmlPatterns
- \ingroup modules
-
- \brief The QtXml module provides a stream reader and writer for
- XML documents, and C++ implementations of SAX and DOM.
-
- SAX is an event-based standard interface for XML parsers.
- The Qt interface follows the design of the SAX2 Java implementation.
- Its naming scheme was adapted to fit the Qt naming conventions.
- Details on SAX2 can be found at \l{http://www.saxproject.org}.
-
- Support for SAX2 filters and the reader factory are under
- development. The Qt implementation does not include the SAX1
- compatibility classes present in the Java interface.
- For an introduction to Qt's SAX2 classes, see \l{The Qt SAX2 Classes}.
-
- DOM Level 2 is a W3C Recommendation for XML interfaces that maps the
- constituents of an XML document to a tree structure. The specification
- of DOM Level 2 can be found at \l{http://www.w3.org/DOM/}.
- For more information about the DOM classes in Qt is provided, see
- \l{The Qt DOM Classes}.
-
- Since version 4.3, Qt provides two new classes for reading and
- writing XML: QXmlStreamReader and QXmlStreamWriter.
-
- In addition to core XML support, classes for higher level querying
- and manipulation of XML data, are provided by the QtXmlPatterns
- module. In the QtSvg module, the QSvgRenderer and QSvgGenerator
- classes can read and write a subset of SVG, an XML-based file
- format. Qt also provides helper functions that may be useful to
- those working with XML and XHTML: see Qt::escape() and
- Qt::convertFromPlainText().
-
- Further XML support is provided by the \l{Qt Solutions} group who
- provide, for example, classes that support SOAP and MML with the
- Qt XML classes.
-
- This module is part of the \l{Qt Full Framework Edition} and the
- \l{Open Source Versions of Qt}.
-
- Topics:
-
- \tableofcontents
-
- \section1 Configuring the Build Process
-
- Applications that use Qt's XML classes need to be configured to
- be built against the QtXml module. The following declaration in a
- \c qmake project file ensures that an application is compiled and
- linked appropriately:
-
- To include the definitions of the module's classes, use the
- following directive:
-
- \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 0
-
- To link against the module, add this line to your \l qmake \c
- .pro file:
-
- \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 1
-
- This line is necessary because only the QtCore and QtGui modules
- are used in the default build process.
-
- \section1 The QtXml Stream Classes
-
- The QXmlStreamReader and QXmlStreamWriter are two new classes provided
- in Qt 4.3 and later. A stream reader reports an XML document as a stream
- of tokens. This differs from SAX as SAX applications provide handlers to
- receive XML events from the parser whereas the QXmlStreamReader drives the
- loop, pulling tokens from the reader when they are needed.
- This pulling approach makes it possible to build recursive descent parsers,
- allowing XML parsing code to be split into different methods or classes.
-
- QXmlStreamReader is a well-formed XML 1.0 parser that excludes external
- parsed entities. Hence, data provided by the stream reader adheres to the
- W3C's criteria for well-formed XML, as long as no error occurs. Otherwise,
- functions such as \l{QXmlStreamReader::atEnd()}{atEnd()},
- \l{QXmlStreamReader::error()}{error()} and \l{QXmlStreamReader::hasError()}
- {hasError()} can be used to check and view the errors.
-
- An example of QXmlStreamReader implementation would be the \c XbelReader in
- \l{QXmlStream Bookmarks Example}, which is a subclass of QXmlStreamReader.
- The constructor takes \a treeWidget as a parameter and the class has Xbel
- specific functions:
-
- \snippet examples/xml/streambookmarks/xbelreader.h 1
-
- \dots
- \snippet examples/xml/streambookmarks/xbelreader.h 2
- \dots
-
- The \c read() function accepts a QIODevice and sets it with
- \l{QXmlStreamReader::setDevice()}{setDevice()}. The
- \l{QXmlStreamReader::raiseError()}{raiseError()} function is used to
- display a custom error message, inidicating that the file's version
- is incorrect.
-
- \snippet examples/xml/streambookmarks/xbelreader.cpp 1
-
- The pendent to QXmlStreamReader is QXmlStreamWriter, which provides an XML
- writer with a simple streaming API. QXmlStreamWriter operates on a
- QIODevice and has specialised functions for all XML tokens or events you
- want to write, such as \l{QXmlStreamWriter::writeDTD()}{writeDTD()},
- \l{QXmlStreamWriter::writeCharacters()}{writeCharacters()},
- \l{QXmlStreamWriter::writeComment()}{writeComment()} and so on.
-
- To write XML document with QXmlStreamWriter, you start a document with the
- \l{QXmlStreamWriter::writeStartDocument()}{writeStartDocument()} function
- and end it with \l{QXmlStreamWriter::writeEndDocument()}
- {writeEndDocument()}, which implicitly closes all remaining open tags.
- Element tags are opened with \l{QXmlStreamWriter::writeStartDocument()}
- {writeStartDocument()} and followed by
- \l{QXmlStreamWriter::writeAttribute()}{writeAttribute()} or
- \l{QXmlStreamWriter::writeAttributes()}{writeAttributes()},
- element content, and then \l{QXmlStreamWriter::writeEndDocument()}
- {writeEndDocument()}. Also, \l{QXmlStreamWriter::writeEmptyElement()}
- {writeEmptyElement()} can be used to write empty elements.
-
- Element content comprises characters, entity references or nested elements.
- Content can be written with \l{QXmlStreamWriter::writeCharacters()}
- {writeCharacters()}, a function that also takes care of escaping all
- forbidden characters and character sequences,
- \l{QXmlStreamWriter::writeEntityReference()}{writeEntityReference()},
- or subsequent calls to \l{QXmlStreamWriter::writeStartElement()}
- {writeStartElement()}.
-
- The \c XbelWriter class from \l{QXmlStream Bookmarks Example} is a subclass
- of QXmlStreamWriter. Its \c writeFile() function illustrates the core
- functions of QXmlStreamWriter mentioned above:
-
- \snippet examples/xml/streambookmarks/xbelwriter.cpp 1
-
- \section1 The Qt SAX2 Classes
-
- \section2 Introduction to SAX2
-
- The SAX2 interface is an event-driven mechanism to provide the user with
- document information. An "event" in this context means something
- reported by the parser, for example, it has encountered a start tag,
- or an end tag, etc.
-
- To make it less abstract consider the following example:
- \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 3
-
- Whilst reading (a SAX2 parser is usually referred to as "reader")
- the above document three events would be triggered:
- \list 1
- \o A start tag occurs (\c{<quote>}).
- \o Character data (i.e. text) is found, "A quotation.".
- \o An end tag is parsed (\c{</quote>}).
- \endlist
-
- Each time such an event occurs the parser reports it; you can set up
- event handlers to respond to these events.
-
- Whilst this is a fast and simple approach to read XML documents,
- manipulation is difficult because data is not stored, simply handled
- and discarded serially. The \link #dom DOM interface
- \endlink reads in and stores the whole document in a tree structure;
- this takes more memory, but makes it easier to manipulate the
- document's structure..
-
- The Qt XML module provides an abstract class, \l QXmlReader, that
- defines the interface for potential SAX2 readers. Qt includes a reader
- implementation, \l QXmlSimpleReader, that is easy to adapt through
- subclassing.
-
- The reader reports parsing events through special handler classes:
- \table
- \header \o Handler class \o Description
- \row \o \l QXmlContentHandler
- \o Reports events related to the content of a document (e.g. the start tag
- or characters).
- \row \o \l QXmlDTDHandler
- \o Reports events related to the DTD (e.g. notation declarations).
- \row \o \l QXmlErrorHandler
- \o Reports errors or warnings that occurred during parsing.
- \row \o \l QXmlEntityResolver
- \o Reports external entities during parsing and allows users to resolve
- external entities themselves instead of leaving it to the reader.
- \row \o \l QXmlDeclHandler
- \o Reports further DTD related events (e.g. attribute declarations).
- \row \o \l QXmlLexicalHandler
- \o Reports events related to the lexical structure of the
- document (the beginning of the DTD, comments etc.).
- \endtable
-
- These classes are abstract classes describing the interface. The \l
- QXmlDefaultHandler class provides a "do nothing" default
- implementation for all of them. Therefore users only need to overload
- the QXmlDefaultHandler functions they are interested in.
-
- To read input XML data a special class \l QXmlInputSource is used.
-
- Apart from those already mentioned, the following SAX2 support classes
- provide additional useful functionality:
- \table
- \header \o Class \o Description
- \row \o \l QXmlAttributes
- \o Used to pass attributes in a start element event.
- \row \o \l QXmlLocator
- \o Used to obtain the actual parsing position of an event.
- \row \o \l QXmlNamespaceSupport
- \o Used to implement namespace support for a reader. Note that
- namespaces do not change the parsing behavior. They are only
- reported through the handler.
- \endtable
-
- The \l{SAX Bookmarks example} illustrates how to subclass
- QXmlDefaultHandler to read an XML bookmark file (XBEL) and
- how to generate XML by hand.
-
- \section2 SAX2 Features
-
- The behavior of an XML reader depends on its support for certain
- optional features. For example, a reader may have the feature "report
- attributes used for namespace declarations and prefixes along with
- the local name of a tag". Like every other feature this has a unique
- name represented by a URI: it is called
- \e http://xml.org/sax/features/namespace-prefixes.
-
- The Qt SAX2 implementation can report whether the reader has
- particular functionality using the QXmlReader::hasFeature()
- function. Available features can be tested with QXmlReader::feature(),
- and switched on or off using QXmlReader::setFeature().
-
- Consider the example
- \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 4
- A reader that does not support the \e
- http://xml.org/sax/features/namespace-prefixes feature would report
- the element name \e document but not its attributes \e xmlns:book and
- \e xmlns with their values. A reader with the feature \e
- http://xml.org/sax/features/namespace-prefixes reports the namespace
- attributes if the \link QXmlReader::feature() feature\endlink is
- switched on.
-
- Other features include \e http://xml.org/sax/features/namespace
- (namespace processing, implies \e
- http://xml.org/sax/features/namespace-prefixes) and \e
- http://xml.org/sax/features/validation (the ability to report
- validation errors).
-
- Whilst SAX2 leaves it to the user to define and implement whatever
- features are required, support for \e
- http://xml.org/sax/features/namespace (and thus \e
- http://xml.org/sax/features/namespace-prefixes) is mandantory.
- The \l QXmlSimpleReader implementation of \l QXmlReader,
- supports them, and can do namespace processing.
-
- \l QXmlSimpleReader is not validating, so it
- does not support \e http://xml.org/sax/features/validation.
-
- \section2 Namespace Support via Features
-
- As we have seen in the previous section, we can configure the
- behavior of the reader when it comes to namespace
- processing. This is done by setting and unsetting the
- \e http://xml.org/sax/features/namespaces and
- \e http://xml.org/sax/features/namespace-prefixes features.
-
- They influence the reporting behavior in the following way:
- \list 1
- \o Namespace prefixes and local parts of elements and attributes can
- be reported.
- \o The qualified names of elements and attributes are reported.
- \o \l QXmlContentHandler::startPrefixMapping() and \l
- QXmlContentHandler::endPrefixMapping() are called by the reader.
- \o Attributes that declare namespaces (i.e. the attribute \e xmlns and
- attributes starting with \e{xmlns:}) are reported.
- \endlist
-
- Consider the following element:
- \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 5
- With \e http://xml.org/sax/features/namespace-prefixes set to true
- the reader will report four attributes; but with the \e
- namespace-prefixes feature set to false only three, with the \e
- xmlns:fnord attribute defining a namespace being "invisible" to the
- reader.
-
- The \e http://xml.org/sax/features/namespaces feature is responsible
- for reporting local names, namespace prefixes and URIs. With \e
- http://xml.org/sax/features/namespaces set to true the parser will
- report \e title as the local name of the \e fnord:title attribute, \e
- fnord being the namespace prefix and \e http://example.com/fnord/ as
- the namespace URI. When \e http://xml.org/sax/features/namespaces is
- false none of them are reported.
-
- In the current implementation the Qt XML classes follow the definition
- that the prefix \e xmlns itself isn't associated with any namespace at all
- (see \link http://www.w3.org/TR/1999/REC-xml-names-19990114/#ns-using
- http://www.w3.org/TR/1999/REC-xml-names-19990114/#ns-using \endlink).
- Therefore even with \e http://xml.org/sax/features/namespaces and
- \e http://xml.org/sax/features/namespace-prefixes both set to true
- the reader won't return either a local name, a namespace prefix or
- a namespace URI for \e xmlns:fnord.
-
- This might be changed in the future following the W3C suggestion
- \link http://www.w3.org/2000/xmlns/ http://www.w3.org/2000/xmlns/ \endlink
- to associate \e xmlns with the namespace \e http://www.w3.org/2000/xmlns.
-
- As the SAX2 standard suggests, \l QXmlSimpleReader defaults to having
- \e http://xml.org/sax/features/namespaces set to true and
- \e http://xml.org/sax/features/namespace-prefixes set to false.
- When changing this behavior using \l QXmlSimpleReader::setFeature()
- note that the combination of both features set to
- false is illegal.
-
- \section3 Summary
-
- \l QXmlSimpleReader implements the following behavior:
-
- \table
- \header \o (namespaces, namespace-prefixes)
- \o Namespace prefix and local part
- \o Qualified names
- \o Prefix mapping
- \o xmlns attributes
- \row \o (true, false) \o Yes \o Yes* \o Yes \o No
- \row \o (true, true) \o Yes \o Yes \o Yes \o Yes
- \row \o (false, true) \o No* \o Yes \o No* \o Yes
- \row \o (false, false) \i41 Illegal
- \endtable
-
- The behavior of the entries marked with an asterisk (*) is not specified by SAX.
-
- \section2 Properties
-
- Properties are a more general concept. They have a unique name,
- represented as an URI, but their value is \c void*. Thus nearly
- anything can be used as a property value. This concept involves some
- danger, though: there is no means of ensuring type-safety; the user
- must take care that they pass the right type. Properties are
- useful if a reader supports special handler classes.
-
- The URIs used for features and properties often look like URLs, e.g.
- \c http://xml.org/sax/features/namespace. This does not mean that the
- data required is at this address. It is simply a way of defining
- unique names.
-
- Anyone can define and use new SAX2 properties for their readers.
- Property support is not mandatory.
-
- To set or query properties the following functions are provided: \l
- QXmlReader::setProperty(), \l QXmlReader::property() and \l
- QXmlReader::hasProperty().
-
-
- \target dom
- \section1 The Qt DOM Classes
-
- \target domIntro
- \section2 Introduction to DOM
-
- DOM provides an interface to access and change the content and
- structure of an XML file. It makes a hierarchical view of the document
- (a tree view). Thus -- in contrast to the SAX2 interface -- an object
- model of the document is resident in memory after parsing which makes
- manipulation easy.
-
- All DOM nodes in the document tree are subclasses of \l QDomNode. The
- document itself is represented as a \l QDomDocument object.
-
- Here are the available node classes and their potential child classes:
-
- \list
- \o \l QDomDocument: Possible children are
- \list
- \o \l QDomElement (at most one)
- \o \l QDomProcessingInstruction
- \o \l QDomComment
- \o \l QDomDocumentType
- \endlist
- \o \l QDomDocumentFragment: Possible children are
- \list
- \o \l QDomElement
- \o \l QDomProcessingInstruction
- \o \l QDomComment
- \o \l QDomText
- \o \l QDomCDATASection
- \o \l QDomEntityReference
- \endlist
- \o \l QDomDocumentType: No children
- \o \l QDomEntityReference: Possible children are
- \list
- \o \l QDomElement
- \o \l QDomProcessingInstruction
- \o \l QDomComment
- \o \l QDomText
- \o \l QDomCDATASection
- \o \l QDomEntityReference
- \endlist
- \o \l QDomElement: Possible children are
- \list
- \o \l QDomElement
- \o \l QDomText
- \o \l QDomComment
- \o \l QDomProcessingInstruction
- \o \l QDomCDATASection
- \o \l QDomEntityReference
- \endlist
- \o \l QDomAttr: Possible children are
- \list
- \o \l QDomText
- \o \l QDomEntityReference
- \endlist
- \o \l QDomProcessingInstruction: No children
- \o \l QDomComment: No children
- \o \l QDomText: No children
- \o \l QDomCDATASection: No children
- \o \l QDomEntity: Possible children are
- \list
- \o \l QDomElement
- \o \l QDomProcessingInstruction
- \o \l QDomComment
- \o \l QDomText
- \o \l QDomCDATASection
- \o \l QDomEntityReference
- \endlist
- \o \l QDomNotation: No children
- \endlist
-
- With \l QDomNodeList and \l QDomNamedNodeMap two collection classes
- are provided: \l QDomNodeList is a list of nodes,
- and \l QDomNamedNodeMap is used to handle unordered sets of nodes
- (often used for attributes).
-
- The \l QDomImplementation class allows the user to query features of the
- DOM implementation.
-
- To get started please refer to the \l QDomDocument documentation.
- You might also want to take a look at the \l{DOM Bookmarks example},
- which illustrates how to read and write an XML bookmark file (XBEL)
- using DOM.
-
- \target namespaces
- \section1 An Introduction to Namespaces
-
- Parts of the Qt XML module documentation assume that you are familiar
- with XML namespaces. Here we present a brief introduction; skip to
- \link #namespacesConventions Qt XML documentation conventions \endlink
- if you already know this material.
-
- Namespaces are a concept introduced into XML to allow a more modular
- design. With their help data processing software can easily resolve
- naming conflicts in XML documents.
-
- Consider the following example:
-
- \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 6
-
- Here we find three different uses of the name \e title. If you wish to
- process this document you will encounter problems because each of the
- \e titles should be displayed in a different manner -- even though
- they have the same name.
-
- The solution would be to have some means of identifying the first
- occurrence of \e title as the title of a book, i.e. to use the \e
- title element of a book namespace to distinguish it from, for example,
- the chapter title, e.g.:
- \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 7
-
- \e book in this case is a \e prefix denoting the namespace.
-
- Before we can apply a namespace to element or attribute names we must
- declare it.
-
- Namespaces are URIs like \e http://example.com/fnord/book/. This
- does not mean that data must be available at this address; the URI is
- simply used to provide a unique name.
-
- We declare namespaces in the same way as attributes; strictly speaking
- they \e are attributes. To make for example \e
- http://example.com/fnord/ the document's default XML namespace \e
- xmlns we write
-
- \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 8
-
- To distinguish the \e http://example.com/fnord/book/ namespace from
- the default, we must supply it with a prefix:
-
- \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 9
-
- A namespace that is declared like this can be applied to element and
- attribute names by prepending the appropriate prefix and a ":"
- delimiter. We have already seen this with the \e book:title element.
-
- Element names without a prefix belong to the default namespace. This
- rule does not apply to attributes: an attribute without a prefix does
- not belong to any of the declared XML namespaces at all. Attributes
- always belong to the "traditional" namespace of the element in which
- they appear. A "traditional" namespace is not an XML namespace, it
- simply means that all attribute names belonging to one element must be
- different. Later we will see how to assign an XML namespace to an
- attribute.
-
- Due to the fact that attributes without prefixes are not in any XML
- namespace there is no collision between the attribute \e title (that
- belongs to the \e author element) and for example the \e title element
- within a \e chapter.
-
- Let's clarify this with an example:
- \snippet doc/src/snippets/code/doc_src_qtxml.qdoc 10
-
- Within the \e document element we have two namespaces declared. The
- default namespace \e http://example.com/fnord/ applies to the \e
- book element, the \e chapter element, the appropriate \e title element
- and of course to \e document itself.
-
- The \e book:author and \e book:title elements belong to the namespace
- with the URI \e http://example.com/fnord/book/.
-
- The two \e book:author attributes \e title and \e name have no XML
- namespace assigned. They are only members of the "traditional"
- namespace of the element \e book:author, meaning that for example two
- \e title attributes in \e book:author are forbidden.
-
- In the above example we circumvent the last rule by adding a \e title
- attribute from the \e http://example.com/fnord/ namespace to \e
- book:author: the \e fnord:title comes from the namespace with the
- prefix \e fnord that is declared in the \e book:author element.
-
- Clearly the \e fnord namespace has the same namespace URI as the
- default namespace. So why didn't we simply use the default namespace
- we'd already declared? The answer is quite complex:
- \list
- \o attributes without a prefix don't belong to any XML namespace at
- all, not even to the default namespace;
- \o additionally omitting the prefix would lead to a \e title-title clash;
- \o writing it as \e xmlns:title would declare a new namespace with the
- prefix \e title instead of applying the default \e xmlns namespace.
- \endlist
-
- With the Qt XML classes elements and attributes can be accessed in two
- ways: either by refering to their qualified names consisting of the
- namespace prefix and the "real" name (or \e local name) or by the
- combination of local name and namespace URI.
-
- More information on XML namespaces can be found at
- \l http://www.w3.org/TR/REC-xml-names/.
-
-
- \target namespacesConventions
- \section2 Conventions Used in the Qt XML Documentation
-
- The following terms are used to distinguish the parts of names within
- the context of namespaces:
- \list
- \o The \e {qualified name}
- is the name as it appears in the document. (In the above example \e
- book:title is a qualified name.)
- \o A \e {namespace prefix} in a qualified name
- is the part to the left of the ":". (\e book is the namespace prefix in
- \e book:title.)
- \o The \e {local part} of a name (also refered to as the \e {local
- name}) appears to the right of the ":". (Thus \e title is the
- local part of \e book:title.)
- \o The \e {namespace URI} ("Uniform Resource Identifier") is a unique
- identifier for a namespace. It looks like a URL
- (e.g. \e http://example.com/fnord/ ) but does not require
- data to be accessible by the given protocol at the named address.
- \endlist
-
- Elements without a ":" (like \e chapter in the example) do not have a
- namespace prefix. In this case the local part and the qualified name
- are identical (i.e. \e chapter).
-
- \sa {DOM Bookmarks Example}, {SAX Bookmarks Example}
-*/
diff --git a/doc/src/qtxmlpatterns.qdoc b/doc/src/qtxmlpatterns.qdoc
deleted file mode 100644
index 38a230e71..000000000
--- a/doc/src/qtxmlpatterns.qdoc
+++ /dev/null
@@ -1,968 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \module QtXmlPatterns
- \title QtXmlPatterns Module
- \since 4.4
- \contentspage Qt's Modules
- \previouspage QtXml
- \nextpage Phonon Module
- \ingroup modules
- \ingroup scripting
-
- \keyword Patternist
-
- \brief An overview of Qt's support for using XQuery and XPath in
- Qt programs.
-
- \tableofcontents
-
- \section1 Introduction
-
- XQuery is a language for traversing XML documents to select and
- aggregate items of interest and to transform them for output as
- XML or some other format. XPath is the \e{element selection} part
- of XQuery.
-
- The QtXmlPatterns module supports using
- \l{http://www.w3.org/TR/xquery} {XQuery 1.0} and
- \l{http://www.w3.org/TR/xpath20} {XPath 2.0} in Qt applications,
- for querying XML data \e{and} for querying
- \l{QAbstractXmlNodeModel} {non-XML data that can be modeled to
- look like XML}. The QtXmlPatterns module is included in the \l{Qt
- Full Framework Edition}, and the \l{Open Source Versions of Qt}.
- Readers who are not familiar with the XQuery/XPath language can read
- \l {A Short Path to XQuery} for a brief introduction.
-
- \section1 Advantages of using QtXmlPatterns and XQuery
-
- The XQuery/XPath language simplifies data searching and
- transformation tasks by eliminating the need for doing a lot of
- C++ or Java procedural programming for each new query task. Here
- is an XQuery that constructs a bibliography of the contents of a
- library:
-
- \target qtxmlpatterns_example_query
- \quotefile snippets/patternist/introductionExample.xq
-
- First, the query opens a \c{<bibliography>} element in the
- output. The
- \l{xquery-introduction.html#using-path-expressions-to-match-select-items}
- {embedded path expression} then loads the XML document describing
- the contents of the library (\c{library.xml}) and begins the
- search. For each \c{<book>} element it finds, where the publisher
- was Addison-Wesley and the publication year was after 1991, it
- creates a new \c{<book>} element in the output as a child of the
- open \c{<bibliography>} element. Each new \c{<book>} element gets
- the book's title as its contents and the book's publication year
- as an attribute. Finally, the \c{<bibliography>} element is
- closed.
-
- The advantages of using QtXmlPatterns and XQuery in your Qt
- programs are summarized as follows:
-
- \list
-
- \o \bold{Ease of development}: All the C++ programming required to
- perform data query tasks can be replaced by a simple XQuery
- like the example above.
-
- \o \bold{Comprehensive functionality}: The
- \l{http://www.w3.org/TR/xquery/#id-expressions} {expression
- syntax} and rich set of
- \l{http://www.w3.org/TR/xpath-functions} {functions and
- operators} provided by XQuery are sufficient for performing any
- data searching, selecting, and sorting tasks.
-
- \o \bold{Conformance to standards}: Conformance to all applicable
- XML and XQuery standards ensures that QtXmlPatterns can always
- process XML documents generated by other conformant
- applications, and that XML documents created with QtXmlPatterns
- can be processed by other conformant applications.
-
- \o \bold{Maximal flexibility} The QtXmlPatterns module can be used
- to query XML data \e{and} non-XML data that can be
- \l{QAbstractXmlNodeModel} {modeled to look like XML}.
-
- \endlist
-
- \section1 Using the QtXmlPatterns module
-
- There are two ways QtXmlPatterns can be used to evaluate queries.
- You can run the query engine in your Qt application using the
- QtXmlPatterns C++ API, or you can run the query engine from the
- command line using Qt's \c{xmlpatterns} command line utility.
-
- \section2 Running the query engine from your Qt application
-
- To access the QtXmlPatterns C++ API from your Qt application,
- include the QtXmlPatterns classes at compile time:
-
- \snippet doc/src/snippets/code/doc_src_qtxmlpatterns.qdoc 0
-
- Link the compiled application with the QtXmlPatterns module by
- adding the following line to the
- \l{qmake-project-files.html#declaring-qt-libraries} {QT line} in
- your qmake \c{.pro} file:
-
- \snippet doc/src/snippets/code/doc_src_qtxmlpatterns.qdoc 1
-
- If we save the example XQuery shown above in a text file (e.g.
- \c{myquery.xq}), we can run it from a Qt application using a
- standard QtXmlPatterns code sequence:
-
- \snippet doc/src/snippets/code/src_xmlpatterns_api_qxmlquery.cpp 3
-
- First construct a QFile for the text file containing the XQuery
- (\c{myquery.xq}). Then create an instance of QXmlQuery and call
- its \l{QXmlQuery::}{setQuery()} function to load and parse the
- XQuery file. Then create an \l{QXmlSerializer} {XML serializer} to
- output the query's result set as unformatted XML. Finally, call
- the \l{QXmlQuery::}{evaluateTo()} function to evaluate the query
- and serialize the results as XML.
-
- \note If you compile Qt yourself, the QtXmlPatterns module will
- \e{not} be built if exceptions are disabled, or if you compile Qt
- with a compiler that doesn't support member templates, e.g., MSVC
- 6.
-
- See the QXmlQuery documentation for more information about the
- QtXmlPatterns C++ API.
-
- \section2 Running the query engine from the command line utility
-
- \e xmlpatterns is a command line utility for running XQueries. It
- expects the name of a file containing the XQuery text.
-
- \snippet doc/src/snippets/code/doc_src_qtxmlpatterns.qdoc 2
-
- The XQuery in \c{myQuery.xq} will be evaluated and its output
- written to \c stdout. Pass the \c -help switch to get the list of
- input flags and their meanings.
-
- xmlpatterns can be used in scripting. However, the descriptions
- and messages it outputs were not meant to be parsed and may be
- changed in future releases of Qt.
-
- \target QtXDM
- \section1 The XQuery Data Model
-
- XQuery represents data items as \e{atomic values} or \e{nodes}. An
- atomic value is a value in the domain of one of the
- \l{http://www.w3.org/TR/xmlschema-2/#built-in-datatypes} {built-in
- datatypes} defined in \l{http://www.w3.org/TR/xmlschema-2} {Part
- 2} of the W3C XML Schema. A node is normally an XML element or
- attribute, but when non-XML data is \l{QAbstractXmlNodeModel}
- {modeled to look like XML}, a node can also represent a non-XML
- data items.
-
- When you run an XQuery using the C++ API in a Qt application, you
- will often want to bind program variables to $variables in the
- XQuery. After the query is evaluated, you will want to interpret
- the sequence of data items in the result set.
-
- \section2 Binding program variables to XQuery variables
-
- When you want to run a parameterized XQuery from your Qt
- application, you will need to \l{QXmlQuery::bindVariable()} {bind
- variables} in your program to $name variables in your XQuery.
-
- Suppose you want to parameterize the bibliography XQuery in the
- example above. You could define variables for the catalog that
- contains the library (\c{$file}), the publisher name
- (\c{$publisher}), and the year of publication (\c{$year}):
-
- \target qtxmlpatterns_example_query2
- \quotefile snippets/patternist/introExample2.xq
-
- Modify the QtXmlPatterns code to use one of the \l{QXmlQuery::}
- {bindVariable()} functions to bind a program variable to each
- XQuery $variable:
-
- \snippet doc/src/snippets/code/src_xmlpatterns_api_qxmlquery.cpp 4
-
- Each program variable is passed to QtXmlPatterns as a QVariant of
- the type of the C++ variable or constant from which it is
- constructed. Note that QtXmlPatterns assumes that the type of the
- QVariant in the bindVariable() call is the correct type, so the
- $variable it is bound to must be used in the XQuery accordingly.
- The following table shows how QVariant types are mapped to XQuery
- $variable types:
-
- \table
-
- \header
- \o QVariant type
- \o XQuery $variable type
-
- \row
- \o QVariant::LongLong
- \o \c xs:integer
-
- \row
- \o QVariant::Int
- \o \c xs:integer
-
- \row
- \o QVariant::UInt
- \o \c xs:nonNegativeInteger
-
- \row
- \o QVariant::ULongLong
- \o \c xs:unsignedLong
-
- \row
- \o QVariant::String
- \o \c xs:string
-
- \row
- \o QVariant::Double
- \o \c xs:double
-
- \row
- \o QVariant::Bool
- \o \c xs:boolean
-
- \row
- \o QVariant::Double
- \o \c xs:decimal
-
- \row
- \o QVariant::ByteArray
- \o \c xs:base64Binary
-
- \row
- \o QVariant::StringList
- \o \c xs:string*
-
- \row
- \o QVariant::Url
- \o \c xs:string
-
- \row
- \o QVariant::Date
- \o \c xs:date.
-
- \row
- \o QVariant::DateTime
- \o \c xs:dateTime
-
- \row
- \o QVariant::Time.
- \o \c xs:time. (see \l{Binding To Time}{Binding To
- QVariant::Time} below)
-
- \row
- \o QVariantList
- \o (see \l{Binding To QVariantList}{Binding To QVariantList}
- below)
-
- \endtable
-
- A type not shown in the table is not supported and will cause
- undefined XQuery behavior or a $variable binding error, depending
- on the context in the XQuery where the variable is used.
-
- \target Binding To Time
- \section3 Binding To QVariant::Time
-
- Because the instance of QTime used in QVariant::Time does not
- include a zone offset, an instance of QVariant::Time should not be
- bound to an XQuery variable of type \c xs:time, unless the QTime is
- UTC. When binding a non-UTC QTime to an XQuery variable, it should
- first be passed as a string, or converted to a QDateTime with an arbitrary
- date, and then bound to an XQuery variable of type \c xs:dateTime.
-
- \target Binding To QVariantList
- \section3 Binding To QVariantList
-
- A QVariantList can be bound to an XQuery $variable. All the
- \l{QVariant}s in the list must be of the same atomic type, and the
- $variable the variant list is bound to must be of that same atomic
- type. If the QVariants in the list are not all of the same atomic
- type, the XQuery behavior is undefined.
-
- \section2 Interpreting XQuery results
-
- When the results of an XQuery are returned in a sequence of \l
- {QXmlResultItems} {result items}, atomic values in the sequence
- are treated as instances of QVariant. Suppose that instead of
- serializing the results of the XQuery as XML, we process the
- results programatically. Modify the standard QtXmlPatterns code
- sequence to call the overload of QXmlQuery::evaluateTo() that
- populates a sequence of \l {QXmlResultItems} {result items} with
- the XQuery results:
-
- \snippet doc/src/snippets/code/src_xmlpatterns_api_qxmlquery.cpp 5
-
- Iterate through the \l {QXmlResultItems} {result items} and test
- each QXmlItem to see if it is an atomic value or a node. If it is
- an atomic value, convert it to a QVariant with \l {QXmlItem::}
- {toAtomicValue()} and switch on its \l {QVariant::type()} {variant
- type} to handle all the atomic values your XQuery might return.
- The following table shows the QVariant type to expect for each
- atomic value type (or QXmlName):
-
- \table
-
- \header
- \o XQuery result item type
- \o QVariant type returned
-
- \row
- \o \c xs:QName
- \o QXmlName (see \l{Handling QXmlNames}{Handling QXmlNames}
- below)
-
- \row
- \o \c xs:integer
- \o QVariant::LongLong
-
- \row
- \o \c xs:string
- \o QVariant::String
-
- \row
- \o \c xs:string*
- \o QVariant::StringList
-
- \row
- \o \c xs:double
- \o QVariant::Double
-
- \row
- \o \c xs:float
- \o QVariant::Double
-
- \row
- \o \c xs:boolean
- \o QVariant::Bool
-
- \row
- \o \c xs:decimal
- \o QVariant::Double
-
- \row
- \o \c xs:hexBinary
- \o QVariant::ByteArray
-
- \row
- \o \c xs:base64Binary
- \o QVariant::ByteArray
-
- \row
- \o \c xs:gYear
- \o QVariant::DateTime
-
- \row
- \o \c xs:gYearMonth
- \o QVariant::DateTime
-
- \row
- \o \c xs:gMonthDay
- \o QVariant::DateTime
-
- \row
- \o \c xs:gDay
- \o QVariant::DateTime
-
- \row
- \o \c xs:gMonth
- \o QVariant::DateTime
-
- \row
- \o \c xs:anyURI
- \o QVariant::Url
-
- \row
- \o \c xs:untypedAtomic
- \o QVariant::String
-
- \row
- \o \c xs:ENTITY
- \o QVariant::String
-
- \row
- \o \c xs:date
- \o QVariant::DateTime
-
- \row
- \o \c xs:dateTime
- \o QVariant::DateTime
-
- \row
- \o \c xs:time
- \o (see \l{xstime-not-mapped}{No mapping for xs:time} below)
-
- \endtable
-
- \target Handling QXmlNames
- \section3 Handling QXmlNames
-
- If your XQuery can return atomic value items of type \c{xs:QName},
- they will appear in your QXmlResultItems as instances of QXmlName.
- Since the QVariant class does not support the QXmlName class
- directly, extracting them from QXmlResultItems requires a bit of
- slight-of-hand using the \l{QMetaType} {Qt metatype system}. We
- must modify our example to use a couple of template functions, a
- friend of QMetaType (qMetaTypeId<T>()) and a friend of QVariant
- (qVariantValue<T>()):
-
- \snippet doc/src/snippets/code/src_xmlpatterns_api_qxmlquery.cpp 6
-
- To access the strings in a QXmlName returned by an
- \l{QXmlQuery::evaluateTo()} {XQuery evaluation}, the QXmlName must
- be accessed with the \l{QXmlNamePool} {name pool} from the
- instance of QXmlQuery that was used for the evaluation.
-
- \target xstime-not-mapped
- \section3 No mapping for xs:time
-
- An instance of \c xs:time can't be represented correctly as an
- instance of QVariant::Time, unless the \c xs:time is a UTC time.
- This is because xs:time has a zone offset (0 for UTC) in addition
- to the time value, which the QTime in QVariant::Time does not
- have. This means that if an XQuery tries to return an atomic value
- of type \c xs:time, an invalid QVariant will be returned. A query
- can return an atomic value of type xs:time by either converting it
- to an \c xs:dateTime with an arbitrary date, or to an \c xs:string.
-
- \section1 Using XQuery with Non-XML Data
-
- Although the XQuery language was designed for querying XML, with
- QtXmlPatterns one can use XQuery for querying any data that can
- be modeled to look like XML. Non-XML data is modeled to look like
- XML by loading it into a custom subclass of QAbstractXmlNodeModel,
- where it is then presented to the QtXmlPatterns XQuery engine via
- the same API the XQuery engine uses for querying XML.
-
- When QtXmlPatterns loads and queries XML files and produces XML
- output, it can always load the XML data into its default XML node
- model, where it can be traversed efficiently. The XQuery below
- traverses the product orders found in the XML file \e myOrders.xml
- to find all the skin care product orders and output them ordered
- by shipping date.
-
- \quotefile snippets/patternist/introAcneRemover.xq
-
- QtXmlPatterns can be used out of the box to perform this
- query, provided \e myOrders.xml actually contains well-formed XML. It
- can be loaded directly into the default XML node model and
- traversed. But suppose we want QtXmlPatterns to perform queries on
- the hierarchical structure of the local file system. The default
- XML node model in QtXmlPatterns is not suitable for navigating the
- file system, because there is no XML file to load that contains a
- description of it. Such an XML file, if it existed, might look
- something like this:
-
- \quotefile snippets/patternist/introFileHierarchy.xml
-
- The \l{File System Example}{File System Example} does exactly this.
-
- There is no such file to load into the default XML node model, but
- one can write a subclass of QAbstractXmlNodeModel to represent the
- file system. This custom XML node model, once populated with all
- the directory and file descriptors obtained directly from the
- system, presents the complete file system hierarchy to the query
- engine via the same API used by the default XML node model to
- present the contents of an XML file. In other words, once the
- custom XML node model is populated, it presents the file system to
- the query engine as if a description of it had been loaded into
- the default XML node model from an XML file like the one shown
- above.
-
- Now we can write an XQuery to find all the XML files and parse
- them to find the ones that don't contain well-formed XML.
-
- \quotefromfile snippets/patternist/introNavigateFS.xq
- \skipto <html>
- \printuntil
-
- Without QtXmlPatterns, there is no simple way to solve this kind
- of problem. You might do it by writing a C++ program to traverse
- the file system, sniff out all the XML files, and submit each one
- to an XML parser to test that it contains valid XML. The C++ code
- required to write that program will probably be more complex than
- the C++ code required to subclass QAbstractXmlNodeModel, but even
- if the two are comparable, your custom C++ program can be used
- only for that one task, while your custom XML node model can be
- used by any XQuery that must navigate the file system.
-
- The general approach to using XQuery to perform queries on non-XML
- data has been a three step process. In the first step, the data is
- loaded into a non-XML data model. In the second step, the non-XML
- data model is serialized as XML and output to XML (text) files. In
- the final step, an XML tool loads the XML files into a second, XML
- data model, where the XQueries can be performed. The development
- cost of implementing this process is often high, and the three
- step system that results is inefficient because the two data
- models must be built and maintained separately.
-
- With QtXmlPatterns, subclassing QAbstractXmlNodeModel eliminates
- the transformation required to convert the non-XML data model to
- the XML data model, because there is only ever one data model
- required. The non-XML data model presents the non-XML data to the
- query engine via the XML data model API. Also, since the query
- engine uses the API to access the QAbstractXmlNodeModel, the data
- model subclass can construct the elements, attributes and other
- data on demand, responding to the query's specific requests. This
- can greatly improve efficiency, because it means the entire model
- might not have to be built. For example, in the file system model
- above, it is not necessary to build an instance for a whole
- XML file representing the whole file system. Instead nodes are
- created on demand, which also likely is a small subset of the file
- system.
-
- Examples of other places where XQuery could be used in
- QtXmlPatterns to query non-XML data:
-
- \list
-
- \o The internal representation for word processor documents
-
- \o The set of dependencies for a software build system
-
- \o The hierarchy (or graph) that links a set of HTML documents
- from a web crawler
-
- \o The images and meta-data in an image collection
-
- \o The set of D-Bus interfaces available in a system
-
- \o A QObject hierarchy, as seen in the \l{QObject XML Model
- Example} {QObject XML Model example}.
-
- \endlist
-
- See the QAbstractXmlNodeModel documentation for information about
- how to implement custom XML node models.
-
- \section1 More on using QtXmlPatterns with non-XML Data
-
- Subclassing QAbstractXmlNodeModel to let the query engine access
- non-XML data by the same API it uses for XML is the feature that
- enables QtXmlPatterns to query non-XML data with XQuery. It allows
- XQuery to be used as a mapping layer between different non-XML
- node models or between a non-XML node model and the built-in XML
- node model. Once the subclass(es) of QAbstractXmlNodeModel have
- been written, XQuery can be used to select a set of elements from
- one node model, transform the selected elements, and then write
- them out, either as XML using QXmlQuery::evaluateTo() and QXmlSerializer,
- or as some other format using a subclass of QAbstractXmlReceiver.
-
- Consider a word processor application that must import and export
- data in several different formats. Rather than writing a lot of
- C++ code to convert each input format to an intermediate form, and
- more C++ code to convert the intermediate form back to each
- output format, one can implement a solution based on QtXmlPatterns
- that uses simple XQueries to transform each XML or non-XML format
- (e.g. MathFormula.xml below) to the intermediate form (e.g. the
- DocumentRepresentation node model class below), and more simple
- XQueries to transform the intermediate form back to each XML or
- non-XML format.
-
- \image patternist-wordProcessor.png
-
- Because CSV files are not XML, a subclass of QAbstractXmlNodeModel
- is used to present the CSV data to the XQuery engine as if it were
- XML. What are not shown are the subclasses of QAbstractXmlReceiver
- that would then send the selected elements into the
- DocumentRepresentation node model, and the subclasses of
- QAbstractXmlNodeModel that would ultimately write the output files
- in each format.
-
- \section1 Security Considerations
-
- \section2 Code Injection
-
- XQuery is vulnerable to
- \l{http://en.wikipedia.org/wiki/Code_injection} {code injection
- attacks} in the same way as the SQL language. If an XQuery is
- constructed by concatenating strings, and the strings come from
- user input, the constructed XQuery could be malevolent. The best
- way to prevent code injection attacks is to not construct XQueries
- from user-written strings, but only accept user data input using
- QVariant and variable bindings. See QXmlQuery::bindVariable().
-
- The articles
- \l{http://www.ibm.com/developerworks/xml/library/x-xpathinjection.html}
- {Avoid the dangers of XPath injection}, by Robi Sen and
- \l{http://www.packetstormsecurity.org/papers/bypass/Blind_XPath_Injection_20040518.pdf}
- {Blind XPath Injection}, by Amit Klein, discuss the XQuery code
- injection problem in more detail.
-
- \section2 Denial of Service Attacks
-
- Applications using QtXmlPatterns are subject to the same
- limitations of software as other systems. Generally, these can not
- be checked. This means QtXmlPatterns does not prevent rogue
- queries from consuming too many resources. For example, a query
- could take too much time to execute or try to transfer too much
- data. A query could also do too much recursion, which could crash
- the system. XQueries can do these things accidentally, but they
- can also be done as deliberate denial of service attacks.
-
- \section1 Features and Conformance
-
- \section2 XQuery 1.0
-
- QtXmlPatterns aims at being a
- \l{http://www.w3.org/TR/xquery/#id-xquery-conformance} {conformant
- XQuery processor}. It adheres to
- \l{http://www.w3.org/TR/xquery/#id-minimal-conformance} {Minimal
- Conformance} and supports the
- \l{http://www.w3.org/TR/xquery/#id-serialization-feature}
- {Serialization Feature} and the
- \l{http://www.w3.org/TR/xquery/#id-full-axis-feature} {Full Axis
- Feature}. QtXmlPatterns currently passes 97% of the tests in the
- \l{http://www.w3.org/XML/Query/test-suite} {XML Query Test Suite}.
- Areas where conformance may be questionable and where behavior may
- be changed in future releases include:
-
- \list
-
- \o Some corner cases involving namespaces and element constructors
- are incorrect.
-
- \o XPath is a subset of XQuery and the implementation of
- QtXmlPatterns uses XPath 2.0 with XQuery 1.0.
-
- \endlist
-
- The specifications discusses conformance further:
- \l{http://www.w3.org/TR/xquery/}{XQuery 1.0: An XML Query
- Language}. W3C's XQuery testing effort can be of interest as
- well, \l{http://www.w3.org/XML/Query/test-suite/}{XML Query Test
- Suite}.
-
- Currently \c fn:collection() does not access any data set, and
- there is no API for providing data through the collection. As a
- result, evaluating \c fn:collection() returns the empty
- sequence. We intend to provide functionality for this in a future
- release of Qt.
-
- Only queries encoded in UTF-8 are supported.
-
- \section2 XSLT 2.0
-
- Partial support for XSLT was introduced in Qt 4.5. Future
- releases of QtXmlPatterns will aim to support these XSLT
- features:
-
- \list
- \o Basic XSLT 2.0 processor
- \o Serialization feature
- \o Backwards Compatibility feature
- \endlist
-
- For details, see \l{http://www.w3.org/TR/xslt20/#conformance}{XSL
- Transformations (XSLT) Version 2.0, 21 Conformance}.
-
- \note In this release, XSLT support is considered experimental.
-
- Unsupported or partially supported XSLT features are documented
- in the following table. The implementation of XSLT in Qt 4.5 can
- be seen as XSLT 1.0 but with the data model of XPath 2.0 and
- XSLT 2.0, and using the using the functionality of XPath 2.0 and
- its accompanying function library. When QtXmlPatterns encounters
- an unsupported or partially support feature, it will either report
- a syntax error or silently continue, unless otherwise noted in the
- table.
-
- The implementation currently passes 42% of W3C's XSLT test suite,
- which focus on features introduced in XSLT 2.0.
-
- \table
- \header
- \o XSL Feature
- \o Support Status
- \row
- \o \c xsl:key and \c fn:key()
- \o not supported
- \row
- \o \c xsl:include
- \o not supported
- \row
- \o \c xsl:import
- \o not supported
- \row
- \o \c xsl:copy
-
- \o The \c copy-namespaces and \c inherit-namespaces attributes
- have no effect. For copied comments, attributes and
- processing instructions, the copy has the same node
- identity as the original.
-
- \row
- \o \c xsl:copy-of
- \o The \c copy-namespaces attribute has no effect.
- \row
- \o \c fn:format-number()
- \o not supported
- \row
- \o \c xsl:message
- \o not supported
- \row
- \o \c xsl:use-when
- \o not supported
- \row
- \o \c Tunnel Parameters
- \o not supported
- \row
- \o \c xsl:attribute-set
- \o not supported
- \row
- \o \c xsl:decimal-format
- \o not supported
- \row
- \o \c xsl:fallback
- \o not supported
- \row
- \o \c xsl:apply-imports
- \o not supported
- \row
- \o \c xsl:character-map
- \o not supported
- \row
- \o \c xsl:number
- \o not supported
- \row
- \o \c xsl:namespace-alias
- \o not supported
- \row
- \o \c xsl:output
- \o not supported
- \row
- \o \c xsl:output-character
- \o not supported
- \row
- \o \c xsl:preserve-space
- \o not supported
- \row
- \o \c xsl:result-document
- \o not supported
- \row
- \o Patterns
- \o Complex patterns or patterns with predicates have issues.
- \row
- \o \c 2.0 Compatibility Mode
-
- \o Stylesheets are interpreted as XSLT 2.0 stylesheets, even
- if the \c version attribute is in the XSLT source is
- 1.0. In other words, the version attribute is ignored.
-
- \row
- \o Grouping
-
- \o \c fn:current-group(), \c fn:grouping-key() and \c
- xsl:for-each-group.
-
- \row
- \o Regexp elements
- \o \c xsl:analyze-string, \c xsl:matching-substring,
- \c xsl:non-matching-substring, and \c fn:regex-group()
- \row
- \o Date & Time formatting
- \o \c fn:format-dateTime(), \c fn:format-date() and fn:format-time().
-
- \row
- \o XPath Conformance
- \o Since XPath is a subset of XSLT, its issues are in affect too.
- \endtable
-
- The QtXmlPatterns implementation of the XPath Data Model does not
- include entities (due to QXmlStreamReader not reporting them).
- This means that functions \c unparsed-entity-uri() and \c
- unparsed-entity-public-id() always return negatively.
-
- \section2 XPath 2.0
-
- Since XPath 2.0 is a subset of XQuery 1.0, XPath 2.0 is
- supported. Areas where conformance may be questionable and,
- consequently, where behavior may be changed in future releases
- include:
-
- \list
- \o Regular expression support is currently not conformant
- but follows Qt's QRegExp standard syntax.
-
- \o Operators for \c xs:time, \c xs:date, and \c xs:dateTime
- are incomplete.
-
- \o Formatting of very large or very small \c xs:double, \c
- xs:float, and \c xs:decimal values may be incorrect.
- \endlist
-
- \section2 xml:id
-
- Processing of XML files supports \c xml:id. This allows elements
- that have an attribute named \c xml:id to be looked up efficiently
- with the \c fn:id() function. See
- \l{http://www.w3.org/TR/xml-id/}{xml:id Version 1.0} for details.
-
- \section2 XML Schema 1.0
-
- There are two ways QtXmlPatterns can be used to validate schemas:
- You can use the C++ API in your Qt application using the classes
- QXmlSchema and QXmlSchemaValidator, or you can use the command line
- utility named xmlpatternsvalidator (located in the "bin" directory
- of your Qt build).
-
- The QtXmlPatterns implementation of XML Schema validation supports
- the schema specification version 1.0 in large parts. Known problems
- of the implementation and areas where conformancy may be questionable
- are:
-
- \list
- \o Large \c minOccurs or \c maxOccurs values or deeply nested ones
- require huge amount of memory which might cause the system to freeze.
- Such a schema should be rewritten to use \c unbounded as value instead
- of large numbers. This restriction will hopefully be fixed in a later release.
- \o Comparison of really small or large floating point values might lead to
- wrong results in some cases. However such numbers should not be relevant
- for day-to-day usage.
- \o Regular expression support is currently not conformant but follows
- Qt's QRegExp standard syntax.
- \o Identity constraint checks can not use the values of default or fixed
- attribute definitions.
- \endlist
-
- \section2 Resource Loading
-
- When QtXmlPatterns loads an XML resource, e.g., using the
- \c fn:doc() function, the following schemes are supported:
-
- \table
- \header
- \o Scheme Name
- \o Description
- \row
- \o \c file
- \o Local files.
- \row
- \o \c data
-
- \o The bytes are encoded in the URI itself. e.g., \c
- data:application/xml,%3Ce%2F%3E is \c <e/>.
-
- \row
- \o \c ftp
- \o Resources retrieved via FTP.
- \row
- \o \c http
- \o Resources retrieved via HTTP.
- \row
- \o \c https
- \o Resources retrieved via HTTPS. This will succeed if no SSL
- errors are encountered.
- \row
- \o \c qrc
- \o Qt Resource files. Expressing it as an empty scheme, :/...,
- is not supported.
-
- \endtable
-
- \section2 XML
-
- XML 1.0 and XML Namespaces 1.0 are supported, as opposed to the
- 1.1 versions. When a strings is passed to a query as a QString,
- the characters must be XML 1.0 characters. Otherwise, the behavior
- is undefined. This is not checked.
-
- URIs are first passed to QAbstractUriResolver. Check
- QXmlQuery::setUriResolver() for possible rewrites.
-
- \section1 License Information
-
- The XML Schema implementation provided by this module contains the \c xml.xsd file
- (located in \c{src/xmlpatterns/schema/schemas}) which is licensed under the terms
- given below. This module is always built with XML Schema support enabled.
-
- \legalese
- W3C\copyright SOFTWARE NOTICE AND LICENSE
-
- This license came from: http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
-
- This work (and included software, documentation such as READMEs, or other
- related items) is being provided by the copyright holders under the following
- license. By obtaining, using and/or copying this work, you (the licensee)
- agree that you have read, understood, and will comply with the following
- terms and conditions.
-
- Permission to copy, modify, and distribute this software and its
- documentation, with or without modification, for any purpose and without
- fee or royalty is hereby granted, provided that you include the following on
- ALL copies of the software and documentation or portions thereof, including
- modifications:
-
- 1. The full text of this NOTICE in a location viewable to users of the
- redistributed or derivative work.\br
- 2. Any pre-existing intellectual property disclaimers, notices, or terms
- and conditions. If none exist, the W3C Software Short Notice should be
- included (hypertext is preferred, text is permitted)
- within the body of any redistributed or derivative code.\br
- 3. Notice of any changes or modifications to the files, including the date
- changes were made. (We recommend you provide URIs to the location from
- which the code is derived.)
-
- THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS
- MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT
- LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
- PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE
- ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
-
- COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
- CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR
- DOCUMENTATION.
-
- The name and trademarks of copyright holders may NOT be used in
- advertising or publicity pertaining to the software without specific, written
- prior permission. Title to copyright in this software and any associated
- documentation will at all times remain with copyright holders.
- \endlegalese
-*/
-
-/*!
- \namespace QPatternist
- \brief The QPatternist namespace contains classes and functions required by the QtXmlPatterns module.
- \internal
-*/
diff --git a/doc/src/qundo.qdoc b/doc/src/qundo.qdoc
deleted file mode 100644
index 9de2aa9cf..000000000
--- a/doc/src/qundo.qdoc
+++ /dev/null
@@ -1,113 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
-\page qundo.html
-\title Overview of Qt's Undo Framework
-\keyword Undo framework
-\ingroup architecture
-
-\section1 Introduction
-
-Qt's Undo Framework is an implementation of the Command pattern, for
-implementing undo/redo functionality in applications.
-
-The Command pattern is based on the idea that all editing in
-an application is done by creating instances of command objects.
-Command objects apply changes to the document and are stored
-on a command stack. Furthermore, each command knows how to undo its
-changes to bring the document back to its previous state. As long
-as the application only uses command objects to change the state of
-the document, it is possible to undo a sequence of commands by
-traversing the stack downwards and calling undo
-on each command in turn. It is also possible to redo a sequence of
-commands by traversing the stack upwards and calling
-redo on each command.
-
-\section1 Classes
-
-The framework consists of four classes:
-
-\list
-\i \l QUndoCommand is the base class of all commands stored on an
- undo stack. It can apply (redo) or undo a single change in the document.
-\i \l QUndoStack is a list of QUndoCommand objects. It contains all the
- commands executed on the document and can roll the document's state
- backwards or forwards by undoing or redoing them.
-\i \l QUndoGroup is a group of undo stacks. It is useful when an application
- contains more than one undo stack, typically one for each opened
- document. QUndoGroup provides a single pair of undo/redo slots for all
- the stacks in the group. It forwards undo and redo requests to
- the active stack, which is the stack associated with the document that
- is currently being edited by the user.
-\i \l QUndoView is a widget which shows the contents of an undo stack. Clicking
- on a command in the view rolls the document's state backwards or
- forwards to that command.
-\endlist
-
-\section1 Concepts
-
-The following concepts are supported by the framework:
-
-\list
-\i \bold{Clean state:} Used to signal when the document enters and leaves a
- state that has been saved to disk. This is typically used to disable or
- enable the save actions, and to update the document's title bar.
-\i \bold{Command compression:} Used to compress sequences of commands into a
- single command.
- For example: In a text editor, the commands that insert individual
- characters into the document can be compressed into a single command that
- inserts whole sections of text. These bigger changes are more convenient
- for the user to undo and redo.
-\i \bold{Command macros:} A sequence of commands, all of which are undone or
- redone in one step.
- These simplify the task of writing an application, since a set of simpler
- commands can be composed into more complex commands. For example, a command
- that moves a set of selected objects in a document can be created by
- combining a set of commands, each of which moves a single object.
-\endlist
-
-QUndoStack provides convenient undo and redo QAction objects that
-can be inserted into a menu or a toolbar. The text properties of these
-actions always reflect what command will be undone or redone when
-they are triggered. Similarly, QUndoGroup provides undo and redo actions
-that always behave like the undo and redo actions of the active stack.
-*/
diff --git a/doc/src/rcc.qdoc b/doc/src/rcc.qdoc
deleted file mode 100644
index 5eb5547af..000000000
--- a/doc/src/rcc.qdoc
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page rcc.html
- \title Resource Compiler (rcc)
- \ingroup buildsystem
- \ingroup qttools
- \keyword rcc
-
- The \c rcc tool is used to embed resources into a Qt application during
- the build process. It works by generating a C++ source file containing
- data specified in a Qt resource (.qrc) file.
-
- Usage:
- \snippet doc/src/snippets/code/doc_src_rcc.qdoc 0
-
- RCC accepts the following command line options:
-
- \table
- \header \o Option \o Argument \o Description
-
- \row \o \c{-o} \o \o Writes output to file rather than
- stdout.
-
- \row \o \c{-name} \o \c name \o Creates an external initialization
- function with name.
-
- \row \o \c{-threshold} \o \c level \o Specifies a threshold (in bytes)
- to use when compressing files. If
- the file is smaller than the
- threshold, it will not be
- compressed, independent of what
- the compression level is.
-
- \row \o \c{-compress} \o \c level \o Compresses input files with the
- given level. Level is an integer
- from 1 to 9 - 1 being the fastest,
- producing the least compression;
- 9 being the slowest, producing
- the most compression.
-
- \row \o \c{-root} \o \c path \o Prefixes the resource access path
- with root path.
-
- \row \o \c{-no-compress} \o \o Disables all compression.
-
- \row \o \c{-binary} \o \o Outputs a binary file for use as
- a dynamic resource.
-
- \row \o \c{-version} \o \o Displays version information.
-
- \row \o \c{-help} \o \o Displays usage information.
- \endtable
-
- See also \l{The Qt Resource System} for more information about embedding
- resources in Qt applications.
-*/
diff --git a/doc/src/resources.qdoc b/doc/src/resources.qdoc
deleted file mode 100644
index f8e9124a5..000000000
--- a/doc/src/resources.qdoc
+++ /dev/null
@@ -1,192 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page resources.html
- \title The Qt Resource System
- \ingroup buildsystem
-
- \keyword resource system
-
- The Qt resource system is a platform-independent mechanism for
- storing binary files in the application's executable. This is
- useful if your application always needs a certain set of files
- (icons, translation files, etc.) and you don't want to run the
- risk of losing the files.
-
- The resource system is based on tight cooperation between \l qmake,
- \l rcc (Qt's resource compiler), and QFile. It obsoletes Qt 3's
- \c qembed tool and the
- \l{http://qt.nokia.com/doc/qq/qq05-iconography.html#imagestorage}{image
- collection} mechanism.
-
- \section1 Resource Collection Files (\c{.qrc})
-
- The resources associated with an application are specified in a
- \c .qrc file, an XML-based file format that lists files on the
- disk and optionally assigns them a resource name that the
- application must use to access the resource.
-
- Here's an example \c .qrc file:
-
- \quotefile mainwindows/application/application.qrc
-
- The resource files listed in the \c .qrc file are files that are
- part of the application's source tree. The specified paths are
- relative to the directory containing the \c .qrc file. Note that
- the listed resource files must be located in the same directory as
- the \c .qrc file, or one of its subdirectories.
-
- Resource data can either be compiled into the binary and thus accessed
- immediately in application code, or a binary resource can be created
- and at a later point in application code registered with the resource
- system.
-
- By default, resources are accessible in the application under the
- same name as they have in the source tree, with a \c :/ prefix.
- For example, the path \c :/images/cut.png would give access to the
- \c cut.png file, whose location in the application's source tree
- is \c images/cut.png. This can be changed using the \c file tag's
- \c alias attribute:
-
- \snippet doc/src/snippets/code/doc_src_resources.qdoc 0
-
- The file is then accessible as \c :/cut-img.png from the
- application. It is also possible to specify a path prefix for all
- files in the \c .qrc file using the \c qresource tag's \c prefix
- attribute:
-
- \snippet doc/src/snippets/code/doc_src_resources.qdoc 1
-
- In this case, the file is accessible as \c
- :/myresources/cut-img.png.
-
- Some resources, such as translation files and icons, many need to
- change based on the user's locale. This is done by adding a \c lang
- attribute to the \c qresource tag, specifying a suitable locale
- string. For example:
-
- \snippet doc/src/snippets/code/doc_src_resources.qdoc 2
-
- If the user's locale is French (i.e., QLocale::system().name() returns
- "fr_FR"), \c :/cut.jpg becomes a reference to the \c cut_fr.jpg
- image. For other locales, \c cut.jpg is used.
-
- See the QLocale documentation for a description of the format to use
- for locale strings.
-
-
- \section2 External Binary Resources
-
- For an external binary resource to be created you must create the resource
- data (commonly given the \c .rcc extension) by passing the -binary switch to
- \l rcc. Once the binary resource is created you can register the resource
- with the QResource API.
-
- For example, a set of resource data specified in a \c .qrc file can be
- compiled in the following way:
-
- \snippet doc/src/snippets/code/doc_src_resources.qdoc 3
-
- In the application, this resource would be registered with code like this:
-
- \snippet doc/src/snippets/code/doc_src_resources.qdoc 4
-
- \section2 Compiled-In Resources
-
- For a resource to be compiled into the binary the \c .qrc file must be
- mentioned in the application's \c .pro file so that \c qmake knows
- about it. For example:
-
- \snippet examples/mainwindows/application/application.pro 0
-
- \c qmake will produce make rules to generate a file called \c
- qrc_application.cpp that is linked into the application. This
- file contains all the data for the images and other resources as
- static C++ arrays of compressed binary data. The \c
- qrc_application.cpp file is automatically regenerated whenever
- the \c .qrc file changes or one of the files that it refers to
- changes. If you don't use \c .pro files, you can either invoke
- \c rcc manually or add build rules to your build system.
-
- \image resources.png Building resources into an application
-
- Currently, Qt always stores the data directly in the executable,
- even on Windows and Mac OS X, where the operating system provides
- native support for resources. This might change in a future Qt
- release.
-
- \section1 Using Resources in the Application
-
- In the application, resource paths can be used in most places
- instead of ordinary file system paths. In particular, you can
- pass a resource path instead of a file name to the QIcon, QImage,
- or QPixmap constructor:
-
- \snippet examples/mainwindows/application/mainwindow.cpp 21
-
- See the \l{mainwindows/application}{Application} example for an
- actual application that uses Qt's resource system to store its
- icons.
-
- In memory, resources are represented by a tree of resource
- objects. The tree is automatically built at startup and used by
- QFile for resolving paths to resources. You can use a QDir initialized
- with ":/" to navigate through the resource tree from the root.
-
- Qt's resources support the concept of a search path list. If you then
- refer to a resource with \c : instead of \c :/ as the prefix, the
- resource will be looked up using the search path list. The search
- path list is empty at startup; call QDir::addSearchPath() to
- add paths to it.
-
- If you have resources in a static library, you might need to
- force initialization of your resources by calling \l
- Q_INIT_RESOURCE() with the base name of the \c .qrc file. For
- example:
-
- \snippet doc/src/snippets/code/doc_src_resources.qdoc 5
-
- Similarly, if you must unload a set of resources explicitly
- (because a plugin is being unloaded or the resources are not valid
- any longer), you can force removal of your resources by calling
- Q_CLEANUP_RESOURCE() with the same base name as above.
-*/
diff --git a/doc/src/richtext.qdoc b/doc/src/richtext.qdoc
deleted file mode 100644
index 405afd1bb..000000000
--- a/doc/src/richtext.qdoc
+++ /dev/null
@@ -1,1076 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
-\page richtext.html
-\nextpage Rich Text Document Structure
-
-\title Rich Text Processing
-\ingroup architecture
-\ingroup text-processing
-\brief An overview of Qt's rich text processing, editing and display features.
-
-The Scribe framework provides a set of classes for reading and manipulating
-structured rich text documents. Unlike previous rich text support in Qt, the
-new classes are centered around the QTextDocument class rather than raw
-textual information. This enables the developer to create and modify
-structured rich text documents without having to prepare content in an
-intermediate markup format.
-
-The information within a document can be accessed via two complementary
-interfaces: A cursor-based interface is used for editing, and a read-only
-hierarchical interface provides a high level overview of the document
-structure. The main advantage of the cursor-based interface is that the
-text can be edited using operations that mimic a user's interaction with
-an editor, without losing the underlying structure of the document. The
-read-only hierarchical interface is most useful when performing operations
-such as searching and document export.
-
-This document is divided up into chapters for convenient reference:
-
-\list
-\i \l{Rich Text Document Structure} outlines
- the different kinds of elements in a QTextDocument, and describes how
- they are arranged in a document structure.
-\i \l{The QTextCursor Interface} explains how rich
- text documents can be edited using the cursor-based interface.
-\i \l{Common Rich Text Editing Tasks} examines some
- common tasks that involve reading or manipulating rich text documents.
-\i \l{Advanced Rich Text Processing} examines advanced rich text editing tasks.
-\i \l{Supported HTML Subset} lists the HTML tags supported by QTextDocument.
-\endlist
-
-See also the list of \l{Text Processing Classes}.
-
-*/
-
-/*!
-\page richtext-structure.html
-\contentspage richtext.html Contents
-\previouspage Rich Text Processing
-\nextpage The QTextCursor Interface
-
-\title Rich Text Document Structure
-
-\tableofcontents
-
-The structured representation of a text document presents its contents as
-a hierarchy of text blocks, frames, tables, and other objects. These provide
-a logical structure to the document and describe how their contents will be
-displayed. Generally, frames and tables are used to group other
-structures while text blocks contain the actual textual information.
-
-New elements are created and inserted into the document programmatically
-\l{richtext-cursor.html}{with a QTextCursor} or by using an editor
-widget, such as QTextEdit. Elements can be given a particular format when
-they are created; otherwise they take the cursor's current format for the
-element.
-
-\table
-\row
-\i \inlineimage richtext-document.png
-\i \bold{Basic structure}
-
-The "top level" of a document might be populated in the way shown.
-Each document always contains a root frame, and this always contains
-at least one text block.
-
-For documents with some textual content, the root
-frame usually contains a sequence of blocks and other elements.
-
-Sequences of frames and tables are always separated by text blocks in a
-document, even if the text blocks contain no information. This ensures that
-new elements can always be inserted between existing structures.
-\endtable
-
-In this chapter, we look at each of the structural elements
-used in a rich text document, outline their features and uses, and show
-how to examine their contents. Document editing is described in
-\l{richtext-cursor.html}{The QTextCursor Interface}.
-
-\section1 Rich Text Documents
-
-QTextDocument objects contain all the information required to construct
-rich text documents for use with a QTextEdit widget or in a custom editor.
-Although QTextEdit makes it easy to display and edit rich text, documents
-can also be used independently of any editor widget, for example:
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 0
-
-Alternatively, they can be extracted from an existing editor:
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 1
-
-This flexibility enables applications to handle multiple rich text
-documents without the overhead of multiple editor widgets, or requiring
-documents to be stored in some intermediate format.
-
-An empty document contains a root frame which itself contains a single
-empty text block. The \l{richtext-cursor.html}{text cursor interface}
-automatically inserts new document elements into the root frame, and
-ensures that it is padded with empty blocks where necessary.
-
-We obtain the root frame in the following manner:
-
-\snippet doc/src/snippets/textdocument-frames/xmlwriter.h 0
-\snippet doc/src/snippets/textdocument-frames/xmlwriter.cpp 0
-
-When navigating the document structure, it is useful to begin at the
-root frame because it provides access to the entire document structure.
-
-\section1 Document Elements
-
-Rich text documents usually consist of common elements such as paragraphs,
-frames, tables, and lists. These are represented in a QTextDocument
-by the QTextBlock, QTextFrame, QTextTable, and QTextList classes.
-Unlike the other elements in a document, images are represented by
-specially formatted text fragments. This enables them to be placed
-formatted inline with the surrounding text.
-
-The basic structural building blocks in documents are QTextBlock and
-QTextFrame. Blocks themselves contain fragments of rich text
-(QTextFragment), but these do not directly influence the high level
-structure of a document.
-
-Elements which can group together other document elements are typically
-subclasses of QTextObject, and fall into two categories: Elements that
-group together text blocks are subclasses of QTextBlockGroup, and those
-that group together frames and other elements are subclasses of QTextFrame.
-
-\section2 Text Blocks
-
-Text blocks are provided by the QTextBlock class.
-
-Text blocks group together fragments of text with different character formats,
-and are used to represent paragraphs in the document. Each block
-typically contains a number of text fragments with different styles.
-Fragments are created when text is inserted into the document, and more
-of them are added when the document is edited. The document splits, merges,
-and removes fragments to efficiently represent the different styles
-of text in the block.
-
-The fragments within a given block can be examined by using a
-QTextBlock::iterator to traverse the block's internal structure:
-
-\snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 3
-\snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 5
-\snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 6
-
-Blocks are also used to represent list items. As a result, blocks can
-define their own character formats which contain information about
-block-level decoration, such as the type of bullet points used for
-list items. The formatting for the block itself is described by the
-QTextBlockFormat class, and describes properties such as text alignment,
-indentation, and background color.
-
-Although a given document may contain complex structures, once we have a
-reference to a valid block in the document, we can navigate between each
-of the text blocks in the order in which they were written:
-
-\snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 0
-\snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 1
-\snippet doc/src/snippets/textblock-fragments/xmlwriter.cpp 2
-
-This method is useful for when you want to extract just the rich text from a
-document because it ignores frames, tables, and other types of structure.
-
-QTextBlock provides comparison operators that make it easier to manipulate
-blocks: \l{QTextBlock::operator==()}{operator==()} and
-\l{QTextBlock::operator!=()}{operator!=()} are used to test whether two
-blocks are the same, and \l{QTextBlock::operator<()}{operator<()} is used
-to determine which one occurs first in a document.
-
-\section2 Frames
-
-Frames are provided by the QTextFrame class.
-
-Text frames group together blocks of text and child frames, creating
-document structures that are larger than paragraphs. The format of a frame
-specifies how it is rendered and positioned on the page. Frames are
-either inserted into the text flow, or they float on the left or right
-hand side of the page.
-Each document contains a root frame that contains all the other document
-elements. As a result, all frames except the root frame have a parent
-frame.
-
-Since text blocks are used to separate other document elements, each
-frame will always contain at least one text block, and zero or more
-child frames. We can inspect the contents of a frame by using a
-QTextFrame::iterator to traverse the frame's child elements:
-
-\snippet doc/src/snippets/textdocument-frames/xmlwriter.cpp 1
-\snippet doc/src/snippets/textdocument-frames/xmlwriter.cpp 2
-
-Note that the iterator selects both frames and blocks, so it is necessary
-to check which it is referring to. This allows us to navigate the document
-structure on a frame-by-frame basis yet still access text blocks if
-required. Both the QTextBlock::iterator and QTextFrame::iterator classes
-can be used in complementary ways to extract the required structure from
-a document.
-
-\section2 Tables
-
-Tables are provided by the QTextTable class.
-
-Tables are collections of cells that are arranged in rows and columns.
-Each table cell is a document element with its own character format, but it
-can also contain other elements, such as frames and text blocks. Table cells
-are automatically created when the table is constructed, or when extra rows
-or columns are added. They can also be moved between tables.
-
-QTextTable is a subclass of QTextFrame, so tables are treated like frames
-in the document structure. For each frame that we encounter in the
-document, we can test whether it represents a table, and deal with it in a
-different way:
-
-\snippet doc/src/snippets/textdocument-tables/xmlwriter.cpp 0
-\snippet doc/src/snippets/textdocument-tables/xmlwriter.cpp 1
-
-The cells within an existing table can be examined by iterating through
-the rows and columns.
-
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 9
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 10
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 11
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 12
-
-
-\section2 Lists
-
-Lists are provided by the QTextList class.
-
-Lists are sequences of text blocks that are formatted in the usual way, but
-which also provide the standard list decorations such as bullet points and
-enumerated items. Lists can be nested, and will be indented if the list's
-format specifies a non-zero indentation.
-
-We can refer to each list item by its index in the list:
-
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 0
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 1
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 2
-
-Since QTextList is a subclass of QTextBlockGroup, it does not group the
-list items as child elements, but instead provides various functions for
-managing them. This means that any text block we find when traversing a
-document may actually be a list item. We can ensure that list items are
-correctly identified by using the following code:
-
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 3
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 4
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 5
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 6
-\snippet doc/src/snippets/textdocument-listitems/mainwindow.cpp 7
-
-
-\section2 Images
-
-Images in QTextDocument are represented by text fragments that reference
-external images via the resource mechanism. Images are created using the
-cursor interface, and can be modified later by changing the character
-format of the image's text fragment:
-
-\snippet doc/src/snippets/textdocument-imageformat/main.cpp 0
-\snippet doc/src/snippets/textdocument-imageformat/main.cpp 1
-\snippet doc/src/snippets/textdocument-imageformat/main.cpp 2
-
-The fragment that represents the image can be found by iterating over
-the fragments in the text block that contains the image.
-*/
-
-/*!
-\page richtext-cursor.html
-\contentspage richtext.html Contents
-\previouspage Rich Text Document Structure
-\nextpage Common Rich Text Editing Tasks
-
-\title The QTextCursor Interface
-
-\tableofcontents
-
-The QTextCursor interface allows documents and their structure to be
-edited in a way that should be familiar to most users of text editors and
-document editing software. Rich text documents can have multiple cursors
-associated with them, and each of these contains information about their
-position in the document and any selections that they may hold. This
-cursor-based paradigm makes common operations, such as cutting and pasting
-text, simple to implement programmatically, yet it also allows more complex
-editing operations to be performed on the document.
-
-This chapter describes most of the common editing operations that you
-will need to perform using a cursor, from basic insertion of text and
-document elements to more complex manipulation of document structures.
-
-\section1 Cursor-Based Editing
-
-At the simplest level, text documents are made up of a string of characters,
-marked up in some way to represent the block structure of the text within the
-document. QTextCursor provides a cursor-based interface that allows the
-contents of a QTextDocument to be manipulated at the character level. Since
-the elements (blocks, frames, tables, etc.) are also encoded in the character
-stream, the document structure can itself be changed by the cursor.
-
-The cursor keeps track of its location within its parent document, and can
-report information about the surrounding structure, such as the enclosing
-text block, frame, table, or list. The formats of the enclosing structures
-can also be directly obtained through the cursor.
-
-\section2 Using a Cursor
-
-The main use of a cursor is to insert or modify text within a block.
-We can use a text editor's cursor to do this:
-
-\snippet doc/src/snippets/textblock-formats/main.cpp 0
-
-Alternatively, we can obtain a cursor directly from a document:
-
-\snippet doc/src/snippets/textdocument-images/main.cpp 0
-
-The cursor is positioned at the start of the document so that we can write
-into the first (empty) block in the document.
-
-\section2 Grouping Cursor Operations
-
-A series of editing operations can be packaged together so that they can
-be replayed, or undone together in a single action. This is achieved by
-using the \c beginEditBlock() and \c endEditBlock() functions in the
-following way, as in the following example where we select the word that
-contains the cursor:
-
-\snippet doc/src/snippets/textdocument-selections/mainwindow.cpp 0
-
-If editing operations are not grouped, the document automatically records
-the individual operations so that they can be undone later. Grouping
-operations into larger packages can make editing more efficient both for
-the user and for the application, but care has to be taken not to group too
-many operations together as the user may want find-grained control over the
-undo process.
-
-\section2 Multiple Cursors
-
-Multiple cursors can be used to simultaneously edit the same document,
-although only one will be visible to the user in a QTextEdit widget.
-The QTextDocument ensures that each cursor writes text correctly and
-does not interfere with any of the others.
-
-\omit
-\snippet doc/src/snippets/textdocument-cursors/main.cpp 0
-\snippet doc/src/snippets/textdocument-cursors/main.cpp 1
-\endomit
-
-\section1 Inserting Document Elements
-
-QTextCursor provides several functions that can be used to change the
-structure of a rich text document. Generally, these functions allow
-document elements to be created with relevant formatting information,
-and they are inserted into the document at the cursor's position.
-
-The first group of functions insert block-level elements, and update the
-cursor position, but they do not return the element that was inserted:
-
-\list
-\i \l{QTextCursor::insertBlock()}{insertBlock()} inserts a new text block
- (paragraph) into a document at the cursor's position, and moves the
- cursor to the start of the new block.
-\i \l{QTextCursor::insertFragment()}{insertFragment()} inserts an existing
- text fragment into a document at the cursor's position.
-\i \l{QTextCursor::insertImage()}{insertImage()} inserts an image into a
- document at the cursor's position.
-\i \l{QTextCursor::insertText()}{insertText()} inserts text into the
- document at the cursor's position.
-\endlist
-
-You can examine the contents of the element that was inserted through the
-cursor interface.
-
-The second group of functions insert elements that provide structure to
-the document, and return the structure that was inserted:
-
-\list
-\i \l{QTextCursor::insertFrame()}{insertFrame()} inserts a frame into the
- document \e after the cursor's current block, and moves the cursor to
- the start of the empty block in the new frame.
-\i \l{QTextCursor::insertList()}{insertList()} inserts a list into the
- document at the cursor's position, and moves the cursor to the start
- of the first item in the list.
-\i \l{QTextCursor::insertTable()}{insertTable()} inserts a table into
- the document \e after the cursor's current block, and moves the cursor
- to the start of the block following the table.
-\endlist
-
-These elements either contain or group together other elements in the
-document.
-
-\section2 Text and Text Fragments
-
-Text can be inserted into the current block in the current character
-format, or in a custom format that is specified with the text:
-
-\snippet doc/src/snippets/textdocument-charformats/main.cpp 0
-
-Once the character format has been used with a cursor, that format becomes
-the default format for any text inserted with that cursor until another
-character format is specified.
-
-If a cursor is used to insert text without specifying a character format,
-the text will be given the character format used at that position in the
-document.
-
-\section2 Blocks
-
-Text blocks are inserted into the document with the
-\l{QTextCursor::insertBlock()}{insertBlock()} function.
-
-\snippet doc/src/snippets/textblock-formats/main.cpp 1
-
-The cursor is positioned at the start of the new block.
-
-\section2 Frames
-
-Frames are inserted into a document using the cursor, and will be placed
-within the cursor's current frame \e after the current block.
-The following code shows how a frame can be inserted between two text
-blocks in a document's root frame. We begin by finding the cursor's
-current frame:
-
-\snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 0
-
-We insert some text in this frame then set up a frame format for the
-child frame:
-
-\snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 1
-
-The frame format will give the frame an external margin of 32 pixels,
-internal padding of 8 pixels, and a border that is 4 pixels wide.
-See the QTextFrameFormat documentation for more information about
-frame formats.
-
-The frame is inserted into the document after the preceding text:
-
-\snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 2
-
-We add some text to the document immediately after we insert the frame.
-Since the text cursor is positioned \e{inside the frame} when it is inserted
-into the document, this text will also be inserted inside the frame.
-
-Finally, we position the cursor outside the frame by taking the last
-available cursor position inside the frame we recorded earlier:
-
-\snippet doc/src/snippets/textdocument-frames/mainwindow.cpp 3
-
-The text that we add last is inserted after the child frame in the
-document. Since each frame is padded with text blocks, this ensures that
-more elements can always be inserted with a cursor.
-
-\section2 Tables
-
-Tables are inserted into the document using the cursor, and will be
-placed within the cursor's current frame \e after the current block:
-
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 0
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 3
-
-Tables can be created with a specific format that defines the overall
-properties of the table, such as its alignment, background color, and
-the cell spacing used. It can also determine the constraints on each
-column, allowing each of them to have a fixed width, or resize according
-to the available space.
-
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 2
-
-The columns in the table created above will each take up a certain
-percentage of the available width. Note that the table format is
-optional; if you insert a table without a format, some sensible
-default values will be used for the table's properties.
-
-Since cells can contain other document elements, they too can be
-formatted and styled as necessary.
-
-Text can be added to the table by navigating to each cell with the cursor
-and inserting text.
-
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 4
-
-We can create a simple timetable by following this approach:
-
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 5
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 6
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 7
-\snippet doc/src/snippets/textdocument-tables/mainwindow.cpp 8
-
-\section2 Lists
-
-Lists of block elements can be automatically created and inserted into the
-document at the current cursor position. Each list that is created in this
-way requires a list format to be specified:
-
-\snippet doc/src/snippets/textdocument-lists/mainwindow.cpp 0
-
-The above code first checks whether the cursor is within an existing list
-and, if so, gives the list format for the new list a suitable level of
-indentation. This allows nested lists to be created with increasing
-levels of indentation. A more sophisticated implementation would also use
-different kinds of symbol for the bullet points in each level of the list.
-
-\section2 Images
-
-Inline images are added to documents through the cursor in the usual manner.
-Unlike many other elements, all of the image properties are specified by the
-image's format. This means that a QTextImageFormat object has to be
-created before an image can be inserted:
-
-\snippet doc/src/snippets/textdocument-images/main.cpp 1
-
-The image name refers to an entry in the application's resource file.
-The method used to derive this name is described in
-\l{resources.html}{The Qt Resource System}.
-
-*/
-
-/*!
-\page richtext-common-tasks.html
-\contentspage richtext.html Contents
-\previouspage The QTextCursor Interface
-\nextpage Advanced Rich Text Processing
-
-\title Common Rich Text Editing Tasks
-
-\tableofcontents
-
-There are a number of tasks that are often performed by developers
-when editing and processing text documents using Qt. These include the use
-of display widgets such as QTextBrowser and QTextEdit, creation of
-documents with QTextDocument, editing using a QTextCursor, and
-exporting the document structure.
-This document outlines some of the more common ways of using the rich
-text classes to perform these tasks, showing convenient patterns that can
-be reused in your own applications.
-
-\section1 Using QTextEdit
-
-A text editor widget can be constructed and used to display HTML in the
-following way:
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 2
-
-By default, the text editor contains a document with a root frame, inside
-which is an empty text block. This document can be obtained so that it can
-be modified directly by the application:
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 3
-
-The text editor's cursor may also be used to edit a document:
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 4
-
-Although a document can be edited using many cursors at once, a QTextEdit
-only displays a single cursor at a time. Therefore, if we want to update the
-editor to display a particular cursor or its selection, we need to set the
-editor's cursor after we have modified the document:
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 5
-
-\section1 Selecting Text
-
-Text is selected by moving the cursor using operations that are similar to
-those performed by a user in a text editor. To select text between two
-points in the document, we need to position the cursor at the first point
-then move it using a special mode (\l{QTextCursor::MoveMode}) with a
-move operation (\l{QTextCursor::MoveOperation}).
-When we select the text, we leave the selection anchor at the old cursor
-position just as the user might do by holding down the Shift key when
-selecting text:
-
-\snippet doc/src/snippets/textdocument-selections/mainwindow.cpp 1
-
-In the above code, a whole word is selected using this method. QTextCursor
-provides a number of common move operations for selecting individual
-characters, words, lines, and whole blocks.
-
-\section1 Finding Text
-
-QTextDocument provides a cursor-based interface for searching, making
-it easy to find and modify text in the style of a text editor. The following
-code finds all the instances of a particular word in a document, and changes
-the color of each:
-
-\snippet doc/src/snippets/textdocument-find/main.cpp 0
-\snippet doc/src/snippets/textdocument-find/main.cpp 1
-
-Note that the cursor does not have to be moved after each search and replace
-operation; it is always positioned at the end of the word that was just
-replaced.
-
-\section1 Printing Documents
-
-QTextEdit is designed for the display of large rich text documents that are
-read on screen, rendering them in the same way as a web browser. As a result,
-it does not automatically break the contents of the document into page-sized
-pieces that are suitable for printing.
-
-QTextDocument provides a \l{QTextDocument::print()}{print()} function to
-allow documents to be printed using the QPrinter class. The following code
-shows how to prepare a document in a QTextEdit for printing with a QPrinter:
-
-\snippet doc/src/snippets/textdocument-printing/mainwindow.cpp 0
-
-The document is obtained from the text editor, and a QPrinter is constructed
-then configured using a QPrintDialog. If the user accepts the printer's
-configuration then the document is formatted and printed using the
-\l{QTextDocument::print()}{print()} function.
-
-*/
-
-/*!
-\page richtext-advanced-processing.html
-\contentspage richtext.html Contents
-\previouspage Common Rich Text Editing Tasks
-\nextpage Supported HTML Subset
-
-\title Advanced Rich Text Processing
-
-\section1 Handling Large Files
-
-Qt does not limit the size of files that are used for text
-processing. In most cases, this will not present a problem. For
-especially large files, however, you might experience that your
-application will become unresponsive or that you will run out of
-memory. The size of the files you can load depends on your
-hardware and on Qt's and your own application's implementation.
-
-If you are faced with this problem, we recommend that you address the
-following issues:
-
-\list
- \o You should consider breaking up large paragraphs into smaller
- ones as Qt handles small paragraphs better. You could also
- insert line breaks at regular intervals, which will look the
- same as one large paragraph in a QTextEdit.
- \o You can reduce the amount of blocks in a QTextDocument with
- \l{QTextDocument::}{maximumBlockCount()}. The document is only
- as large as the number of blocks as far as QTextEdit is concerned.
- \o When adding text to a text edit, it is an advantage to add it
- in an edit block (see example below). The result is that the
- text edit does not need to build the entire document structure at once.
-\endlist
-
-We give an example of the latter technique from the list. We assume that
-the text edit is visible.
-
-\snippet doc/src/snippets/code/doc_src_richtext.qdoc 6
-
-\omit
-Ideas for other sections:
-
- * Hiding QTextBlock elements.
- * Changing the word wrapping mode in QTextEdit. Custom word wrapping?
-\endomit
-*/
-
-/*!
- \page richtext-html-subset.html
- \title Supported HTML Subset
- \brief Describes the support for HTML markup in text widgets.
-
- \contentspage richtext.html Contents
- \previouspage Common Rich Text Editing Tasks
-
- Qt's text widgets are able to display rich text, specified using a subset of \l{HTML 4}
- markup. Widgets that use QTextDocument, such as QLabel and QTextEdit, are able to display
- rich text specified in this way.
-
- \tableofcontents
-
- \section1 Using HTML Markup in Text Widgets
-
- Widgets automatically detect HTML markup and display rich text accordingly. For example,
- setting a label's \l{QLabel::}{text} property with the string \c{"<b>Hello</b> <i>Qt!</i>"}
- will result in the label displaying text like this: \bold{Hello} \e{Qt!}
-
- When HTML markup is used for text, Qt follows the rules defined by the \l{HTML 4}
- specification. This includes default properties for text layout, such as the
- direction of the text flow (left-to-right) which can be changed by applying the
- \l{#Block Attributes}{\c dir} attribute to blocks of text.
-
- \section1 Supported Tags
-
- The following table lists the HTML tags supported by Qt's
- \l{Rich Text Processing}{rich text} engine:
-
- \table
- \header \o Tag
- \o Description
- \o Comment
- \row \o \c a
- \o Anchor or link
- \o Supports the \c href and \c name attributes.
- \row \o \c address
- \o Address
- \o
- \row \o \c b
- \o Bold
- \o
- \row \o \c big
- \o Larger font
- \o
- \row \o \c blockquote
- \o Indented paragraph
- \o
- \row \o \c body
- \o Document body
- \o Supports the \c bgcolor attribute, which
- can be a Qt \l{QColor::setNamedColor()}{color name}
- or a \c #RRGGBB color specification.
- \row \o \c br
- \o Line break
- \o
- \row \o \c center
- \o Centered paragraph
- \o
- \row \o \c cite
- \o Inline citation
- \o Same as \c i.
- \row \o \c code
- \o Code
- \o Same as \c tt.
- \row \o \c dd
- \o Definition data
- \o
- \row \o \c dfn
- \o Definition
- \o Same as \c i.
- \row \o \c div
- \o Document division
- \o Supports the standard \l{block attributes}.
- \row \o \c dl
- \o Definition list
- \o Supports the standard \l{block attributes}.
- \row \o \c dt
- \o Definition term
- \o Supports the standard \l{block attributes}.
- \row \o \c em
- \o Emphasized
- \o Same as \c i.
- \row \o \c font
- \o Font size, family, and/or color
- \o Supports the following attributes:
- \c size, \c face, and \c color (Qt
- \l{QColor::setNamedColor()}{color names} or
- \c #RRGGBB).
- \row \o \c h1
- \o Level 1 heading
- \o Supports the standard \l{block attributes}.
- \row \o \c h2
- \o Level 2 heading
- \o Supports the standard \l{block attributes}.
- \row \o \c h3
- \o Level 3 heading
- \o Supports the standard \l{block attributes}.
- \row \o \c h4
- \o Level 4 heading
- \o Supports the standard \l{block attributes}.
- \row \o \c h5
- \o Level 5 heading
- \o Supports the standard \l{block attributes}.
- \row \o \c h6
- \o Level 6 heading
- \o Supports the standard \l{block attributes}.
- \row \o \c head
- \o Document header
- \o
- \row \o \c hr
- \o Horizontal line
- \o Supports the \c width attribute, which can
- be specified as an absolute or relative (\c %) value.
- \row \o \c html
- \o HTML document
- \o
- \row \o \c i
- \o Italic
- \o
- \row \o \c img
- \o Image
- \o Supports the \c src, \c source
- (for Qt 3 compatibility), \c width, and \c height
- attributes.
- \row \o \c kbd
- \o User-entered text
- \o
- \row \o \c meta
- \o Meta-information
- \o If a text encoding is specified using the \c{meta} tag,
- it is picked up by Qt::codecForHtml().
- Likewise, if an encoding is specified to
- QTextDocument::toHtml(), the encoding is stored using
- a \c meta tag, for example:
-
- \snippet doc/src/snippets/code/doc_src_richtext.qdoc 7
-
- \row \o \c li
- \o List item
- \o
- \row \o \c nobr
- \o Non-breakable text
- \o
- \row \o \c ol
- \o Ordered list
- \o Supports the standard \l{list attributes}.
- \row \o \c p
- \o Paragraph
- \o Left-aligned by default. Supports the standard
- \l{block attributes}.
- \row \o \c pre
- \o Preformated text
- \o
- \row \o \c qt
- \o Qt rich-text document
- \o Synonym for \c html. Provided for compatibility with
- earlier versions of Qt.
- \row \o \c s
- \o Strikethrough
- \o
- \row \o \c samp
- \o Sample code
- \o Same as \c tt.
- \row \o \c small
- \o Small font
- \o
- \row \o \c span
- \o Grouped elements
- \o
- \row \o \c strong
- \o Strong
- \o Same as \c b.
- \row \o \c sub
- \o Subscript
- \o
- \row \o \c sup
- \o Superscript
- \o
- \row \o \c table
- \o Table
- \o Supports the following attributes: \c border,
- \c bgcolor (Qt \l{QColor::setNamedColor()}{color names}
- or \c #RRGGBB), \c cellspacing, \c cellpadding,
- \c width (absolute or relative), and \c height.
- \row \o \c tbody
- \o Table body
- \o Does nothing.
- \row \o \c td
- \o Table data cell
- \o Supports the standard \l{table cell attributes}.
- \row \o \c tfoot
- \o Table footer
- \o Does nothing.
- \row \o \c th
- \o Table header cell
- \o Supports the standard \l{table cell attributes}.
- \row \o \c thead
- \o Table header
- \o If the \c thead tag is specified, it is used when printing tables
- that span multiple pages.
- \row \o \c title
- \o Document title
- \o The value specified using the \c
- title tag is available through
- QTextDocument::metaInformation().
- \row \o \c tr
- \o Table row
- \o Supports the \c bgcolor attribute, which
- can be a Qt \l{QColor::setNamedColor()}{color name}
- or a \c #RRGGBB color specification.
- \row \o \c tt
- \o Typewrite font
- \o
- \row \o \c u
- \o Underlined
- \o
- \row \o \c ul
- \o Unordered list
- \o Supports the standard \l{list attributes}.
- \row \o \c var
- \o Variable
- \o Same as \c i.
- \endtable
-
- \section1 Block Attributes
-
- The following attributes are supported by the \c div, \c dl, \c
- dt, \c h1, \c h2, \c h3, \c h4, \c h5, \c h6, \c p tags:
-
- \list
- \o \c align (\c left, \c right, \c center, \c justify)
- \o \c dir (\c ltr, \c rtl)
- \endlist
-
- \section1 List Attributes
-
- The following attribute is supported by the \c ol and \c ul tags:
-
- \list
- \o \c type (\c 1, \c a, \c A, \c square, \c disc, \c circle)
- \endlist
-
- \section1 Table Cell Attributes
-
- The following attributes are supported by the \c td and \c th
- tags:
-
- \list
- \o \c width (absolute, relative, or no-value)
- \o \c bgcolor (Qt \l{QColor::setNamedColor()}{color names} or \c #RRGGBB)
- \o \c colspan
- \o \c rowspan
- \o \c align (\c left, \c right, \c center, \c justify)
- \o \c valign (\c top, \c middle, \c bottom)
- \endlist
-
- \section1 CSS Properties
- The following table lists the CSS properties supported by Qt's
- \l{Rich Text Processing}{rich text} engine:
-
- \table
- \header \o Property
- \o Values
- \o Description
- \row
- \o \c background-color
- \o <color>
- \o Background color for elements
- \row
- \o \c background-image
- \o <uri>
- \o Background image for elements
- \row \o \c color
- \o <color>
- \o Text foreground color
- \row \o \c font-family
- \o <family name>
- \o Font family name
- \row \o \c font-size
- \o [ small | medium | large | x-large | xx-large ] | <size>pt | <size>px
- \o Font size relative to the document font, or specified in points or pixels
- \row \o \c font-style
- \o [ normal | italic | oblique ]
- \o
- \row \o \c font-weight
- \o [ normal | bold | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 ]
- \o Specifies the font weight used for text, where \c normal and \c bold
- are mapped to the corresponding QFont weights. Numeric values are
- 8 times the equivalent QFont weight values.
- \row \o \c text-decoration
- \o none | [ underline || overline || line-through ]
- \o Additional text effects
- \row \o \c font
- \o [ [ <'font-style'> || <'font-weight'> ]? <'font-size'> <'font-family'> ]
- \o Font shorthand property
- \row \o \c text-indent
- \o <length>px
- \o First line text indentation in pixels
- \row \o \c white-space
- \o normal | pre | nowrap | pre-wrap
- \o Declares how whitespace in HTML is handled.
- \row \o \c margin-top
- \o <length>px
- \o Top paragraph margin in pixels
- \row \o \c margin-bottom
- \o <length>px
- \o Bottom paragraph margin in pixels
- \row \o \c margin-left
- \o <length>px
- \o Left paragraph margin in pixels
- \row \o \c margin-right
- \o <length>px
- \o Right paragraph margin in pixels
- \row \o \c padding-top
- \o <length>px
- \o Top table cell padding in pixels
- \row \o \c padding-bottom
- \o <length>px
- \o Bottom table cell padding in pixels
- \row \o \c padding-left
- \o <length>px
- \o Left table cell padding in pixels
- \row \o \c padding-right
- \o <length>px
- \o Right table cell padding in pixels
- \row \o \c padding
- \o <length>px
- \o Shorthand for setting all the padding properties at once.
- \row \o \c vertical-align
- \o baseline | sub | super | middle | top | bottom
- \o Vertical text alignment. For vertical alignment in text table cells only middle, top, and bottom apply.
- \row \o \c border-color
- \o <color>
- \o Border color for text tables.
- \row \o \c border-style
- \o none | dotted | dashed | dot-dash | dot-dot-dash | solid | double | groove | ridge | inset | outset
- \o Border style for text tables.
- \row \o \c background
- \o [ <'background-color'> || <'background-image'> ]
- \o Background shorthand property
- \row \o \c page-break-before
- \o [ auto | always ]
- \o Make it possible to enforce a page break before the paragraph/table
- \row \o \c page-break-after
- \o [ auto | always ]
- \o Make it possible to enforce a page break after the paragraph/table
- \row \o float
- \o [ left | right | none ]
- \o Specifies where an image or a text will be placed in another element. Note that the \c float property is
- only supported for tables and images.
- \row \o \c text-transform
- \o [ uppercase | lowercase ]
- \o Select the transformation that will be performed on the text prior to displaying it.
- \row \o \c font-variant
- \o small-caps
- \o Perform the smallcaps transformation on the text prior to displaying it.
- \row \o \c word-spacing
- \o <width>px
- \o Specifies an alternate spacing between each word.
- \endtable
-
- \section1 Supported CSS Selectors
-
- All CSS 2.1 selector classes are supported except pseudo-class selectors such
- as \c{:first-child}, \c{:visited} and \c{:hover}.
-
-*/
diff --git a/doc/src/scripting/ecmascript.qdoc b/doc/src/scripting/ecmascript.qdoc
new file mode 100644
index 000000000..36479dc61
--- /dev/null
+++ b/doc/src/scripting/ecmascript.qdoc
@@ -0,0 +1,312 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 ecmascript.html
+ \title ECMAScript Reference
+ \brief A list of objects, functions and properties supported by QtScript.
+
+ This reference contains a list of objects, functions and
+ properties supported by QtScript.
+
+ \tableofcontents
+
+ \section1 The Global Object
+
+ \section2 Value Properties
+
+ \list
+ \o NaN
+ \o Infinity
+ \o undefined
+ \o Math
+ \endlist
+
+ \section2 Function Properties
+
+ \list
+ \o eval(x)
+ \o parseInt(string, radix)
+ \o parseFloat(string)
+ \o isNaN(number)
+ \o isFinite(number)
+ \o decodeURI(encodedURI)
+ \o decodeURIComponent(encodedURIComponent)
+ \o encodeURI(uri)
+ \o encodeURIComponent(uriComponent)
+ \endlist
+
+ \section2 Constructor Properties
+
+ \list
+ \o Object
+ \o Function
+ \o Array
+ \o String
+ \o Boolean
+ \o Number
+ \o Date
+ \o RegExp
+ \o Error
+ \o EvalError
+ \o RangeError
+ \o ReferenceError
+ \o SyntaxError
+ \o TypeError
+ \o URIError
+ \endlist
+
+ \section1 Object Objects
+
+ \section2 Object Prototype Object
+
+ \list
+ \o toString()
+ \o toLocaleString()
+ \o valueOf()
+ \o hasOwnProperty(V)
+ \o isPrototypeOf(V)
+ \o propertyIsEnumerable(V)
+ \endlist
+
+ \section1 Function Objects
+
+ \section2 Function Prototype Object
+
+ \section3 Function Properties
+
+ \list
+ \o toString()
+ \o apply(thisArg, argArray)
+ \o call(thisArg [, arg1 [, arg2, ...]])
+ \endlist
+
+ \section1 Array Objects
+
+ \section2 Array Prototype Object
+
+ \section3 Function Properties
+
+ \list
+ \o toString()
+ \o toLocaleString()
+ \o concat([item1 [, item2 [, ...]]])
+ \o join(separator)
+ \o pop()
+ \o push([item1 [, item2 [, ...]]])
+ \o reverse()
+ \o shift()
+ \o slice(start, end)
+ \o sort(comparefn)
+ \o splice(start, deleteCount[, item1 [, item2 [, ...]]])
+ \o unshift([item1 [, item2 [, ...]]])
+ \endlist
+
+ \section1 String Objects
+
+ \section2 String Prototype Object
+
+ \section3 Function Properties
+
+ \list
+ \o toString()
+ \o valueOf()
+ \o charAt(pos)
+ \o charCodeAt(pos)
+ \o concat([string1 [, string2 [, ...]]])
+ \o indexOf(searchString ,position)
+ \o lastIndexOf(searchString, position)
+ \o localeCompare(that)
+ \o match(regexp)
+ \o replace(searchValue, replaceValue)
+ \o search(regexp)
+ \o slice(start, end)
+ \o split(separator, limit)
+ \o substring(start, end)
+ \o toLowerCase()
+ \o toLocaleLowerCase()
+ \o toUpperCase()
+ \o toLocaleUpperCase()
+ \endlist
+
+ \section1 Boolean Objects
+
+ \section2 Boolean Prototype Object
+
+ \section3 Function Properties
+
+ \list
+ \o toString()
+ \o valueOf()
+ \endlist
+
+ \section1 Number Objects
+
+ \section2 Number Prototype Object
+
+ \section3 Function Properties
+
+ \list
+ \o toString(radix)
+ \o toLocaleString()
+ \o toFixed(fractionDigits)
+ \o toExponential(fractionDigits)
+ \o toPrecision(precision)
+ \endlist
+
+ \section1 The Math Object
+
+ \section2 Value Properties
+
+ \list
+ \o E
+ \o LN10
+ \o LN2
+ \o LOG2E
+ \o LOG10E
+ \o PI
+ \o SQRT1_2
+ \o SQRT2
+ \endlist
+
+ \section2 Function Properties
+
+ \list
+ \o abs(x)
+ \o acos(x)
+ \o asin(x)
+ \o atan(x)
+ \o atan2(y, x)
+ \o ceil(x)
+ \o cos(x)
+ \o exp(x)
+ \o floor(x)
+ \o log(x)
+ \o max([value1 [, value2 [, ...]]])
+ \o min([value1 [, value2 [, ...]]])
+ \o pow(x, y)
+ \o random()
+ \o round(x)
+ \o sin(x)
+ \o sqrt(x)
+ \o tan(x)
+ \endlist
+
+ \section1 Date Objects
+
+ \section2 Date Prototype Object
+
+ \section3 Function Properties
+
+ \list
+ \o toString()
+ \o toDateString()
+ \o toTimeString()
+ \o toLocaleString()
+ \o toLocaleDateString()
+ \o toLocaleTimeString()
+ \o valueOf()
+ \o getTime()
+ \o getFullYear()
+ \o getUTCFullYear()
+ \o getMonth()
+ \o getUTCMonth()
+ \o getDate()
+ \o getUTCDate()
+ \o getDay()
+ \o getUTCDay()
+ \o getHours()
+ \o getUTCHours()
+ \o getMinutes()
+ \o getUTCMinutes()
+ \o getSeconds()
+ \o getUTCSeconds()
+ \o getMilliseconds()
+ \o getUTCMilliseconds()
+ \o getTimeZoneOffset()
+ \o setTime(time)
+ \o setMilliseconds(ms)
+ \o setUTCMilliseconds(ms)
+ \o setSeconds(sec [, ms])
+ \o setUTCSeconds(sec [, ms])
+ \o setMinutes(min [, sec [, ms]])
+ \o setUTCMinutes(min [, sec [, ms]])
+ \o setHours(hour [, min [, sec [, ms]]])
+ \o setUTCHours(hour [, min [, sec [, ms]]])
+ \o setDate(date)
+ \o setUTCDate(date)
+ \o setMonth(month [, date])
+ \o setUTCMonth(month [, date])
+ \o setFullYear(year [, month [, date]])
+ \o setUTCFullYear(year [, month [, date]])
+ \o toUTCString()
+ \endlist
+
+ \section1 RegExp Objects
+
+ \section2 RegExp Prototype Object
+
+ \section3 Function Properties
+
+ \list
+ \o exec(string)
+ \o test(string)
+ \o toString()
+ \endlist
+
+ \section1 Error Objects
+
+ \section2 Error Prototype Object
+
+ \section3 Value Properties
+
+ \list
+ \o name
+ \o message
+ \endlist
+
+ \section3 Function Properties
+
+ \list
+ \o toString()
+ \endlist
+
+*/
diff --git a/doc/src/scripting/qtscriptdebugger-manual.qdoc b/doc/src/scripting/qtscriptdebugger-manual.qdoc
new file mode 100644
index 000000000..925ba06aa
--- /dev/null
+++ b/doc/src/scripting/qtscriptdebugger-manual.qdoc
@@ -0,0 +1,436 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qtscriptdebugger-manual.html
+ \title Qt Script Debugger Manual
+ \brief A manual describing how to use the Qt Script debugger.
+
+ The Qt Script debugger is a tool for debugging script execution in
+ Qt applications that use Qt Script. Application developers can embed
+ the debugger into their application through the
+ QScriptEngineDebugger class. This manual describes how to use the
+ debugger. We assume that the reader is somewhat familiar with
+ general debugging concepts and existing debugging tools.
+
+ We assume that the debugger has been integrated into the application
+ through the QScriptEngineDebugger::standardWindow()
+ function, which provides the standard debugger configuration.
+
+ \tableofcontents
+
+ \section1 Getting Started
+
+ The following image shows the debugger as created with
+ \l{QScriptEngineDebugger::}{standardWindow()}:
+
+ \image qtscript-debugger.png Running a script under the Qt Script debugger.
+
+ The debugger will start, i.e., take control over the script's
+ execution when any of these conditions are met:
+
+ \list
+ \o The \c{debugger} statement is encountered in the script.
+ \o Clicking the \gui Interrupt menu item from the \gui Debug
+ menu in the main window.
+ \o A breakpoint is reached.
+ \o An uncaught script exception is thrown.
+ \endlist
+
+ Once the debugger is started, the execution state can be inspected,
+ e.g., the value of variables can be queried and the current program
+ stack shown. New breakpoints can be set.
+
+ The debugger will resume, i.e., give the control back to the script
+ engine, when the user clicks \gui Continue menu item from the \gui
+ Debug menu. It will be invoked again if one of the conditions
+ described in the list above is met.
+
+ \section1 Overview of Debugger Components
+
+ The debugger's functionality is divided into a series of components,
+ each being a widget that can be shown in the main window of the
+ debugger. The following table describes each component and how they
+ relate to each other.
+
+ \table
+ \header
+ \o Component
+ \o Description
+ \row
+ \o Console Widget
+ \o The console widget provides a command-line interface to the
+ debugger's functionality, and also serves as an interactive script
+ interpreter. The set of commands and their syntax is inspired by
+ GDB, the GNU Debugger. Commands and script variables are
+ auto-completed through the TAB key.
+
+ Any console command that causes a change in the debugger or debugger
+ target's state will immediately be reflected in the other debugger
+ components (e.g. breakpoints or local variables changed).
+
+ The console provides a simple and powerful way of manipulating the
+ script environment. For example, typing "x" and hitting enter will
+ evaluate "x" in the current stack frame and display the result.
+ Typing "x = 123" will assign the value 123 to the variable \c{x} in
+ the current scope (or create a global variable \c{x} if there isn't
+ one -- scripts evaluated through the console can have arbitrary side
+ effects, so be careful).
+
+ \row
+ \o Stack Widget
+ \o The stack widget shows a backtrace of the script execution state.
+ Each row represents one frame in the stack. A row contains the
+ frame index (0 being the inner-most frame), the name of the script function,
+ and the location (file name and line number). To select a particular
+ stack frame to inspect, click on its row.
+
+ \row
+ \o Locals Widget
+ \o The locals widget shows the variables that are local to the
+ currently selected stack frame; that is, the properties of the
+ objects in the scope chain and the \c{this}-object. Objects can be
+ expanded, so that their properties can be examined, recursively.
+ Properties whose value has changed are shown in bold font.
+
+ Properties that are not read-only can be edited. Double-click on the
+ value and type in the new value; the value can be an arbitrary
+ expression. The expression will be evaluated in the associated stack
+ frame. While typing, you can press the TAB key to get possible
+ completions for the expression.
+
+ \row
+ \o Code Widget
+ \o The code widget shows the code of the currently selected script.
+ The widget displays an arrow in the left margin, marking the
+ code line that is being executed.
+ Clicking in the margin of a line will cause a breakpoint to be
+ toggled at that line. A breakpoint has to be set on a line that
+ contains an actual statement in order to be useful.When an uncaught script exception occurs, the
+ offending line will be shown with a red background.
+
+ The code widget is read-only; it cannot currently be used to edit
+ and (re)evaluate scripts. This is however possible from the
+ command-line interface, see \l{Console Command Reference}.
+
+ \row
+ \o Scripts Widget
+
+ \o The scripts widget shows the scripts that are currently loaded in
+ the script engine. Clicking on a script will cause its code to be
+ shown in the code widget. When a script is no longer referenced by
+ the debugger target it is removed from the scripts widget. Code
+ evaluated through QScriptEngine::evaluate() without a name specified, will be
+ displayed in the widget as Anonymous.
+
+ \row
+ \o Breakpoints Widget
+
+ \o The breakpoints widget shows all the breakpoints that are set. A
+ breakpoint can be disabled or enabled by clicking the checkbox next
+ to the breakpoint's ID (the ID is provided so that the breakpoint
+ can be manipulated through the console widget as well).
+
+ A condition can be associated with the breakpoint; the condition can
+ be an arbitrary expression that should evaluate to true or
+ false. The breakpoint will only be triggered when its location is
+ reached \bold{and} the condition evaluates to true.
+
+ Similarly, if the breakpoint's ignore-count is set to N, the
+ breakpoint will be ignored the next N times it is hit.
+
+ A new breakpoint can be set by clicking the New Breakpoint button
+ and typing in a location of the form <filename>\bold{:}<linenumber>.
+ The breakpoint location can refer to an already loaded script, or
+ one that has not been loaded yet.
+
+ \row
+ \o Debug Output Widget
+ \o The debug output widget shows messages generated by the print()
+ script function. Scripts can use the special variables \c{__FILE__}
+ and \c{__LINE__} to include the current location information in the
+ messages.
+
+ \row
+ \o Error Log Widget
+ \o The error log widget shows error messages that have been generated.
+ All uncaught exceptions that occur in the engine will appear here.
+
+ \endtable
+
+ \section2 Resuming Script Evaluation
+
+ Script evaluation can be resumed in one of the following ways:
+
+ \list
+ \o \bold{Continue}: Evaluation will resume normally.
+ \o \bold{Step Into}: Evaluation will resume until the next statement is reached.
+ \o \bold{Step Over}: Evaluation will resume until the next statement is reached;
+ but if the current statement is a function call, the debugger
+ will treat it as a single statement.
+ \o \bold{Step Out}: Evaluation will resume until the current function exits and
+ the next statement is reached.
+ \o \bold{Run to Cursor}: Run until the statement at the cursor is reached.
+ \o \bold{Run to New Script}: Run until the first statement of a new script is reached.
+ \endlist
+
+ In any case, script evaluation can also be stopped due to either of the
+ following reasons:
+
+ \list
+ \o A \c{debugger} statement is encountered.
+ \o A breakpoint is hit.
+ \o An uncaught script exception occurs.
+ \endlist
+
+ \section2 Resuming After an Uncaught Exception
+
+ When an uncaught script exception occurs, it is not possible to
+ continue evaluating the current function normally. However, you can
+ use the console command \bold{return} to catch the exception and
+ return a value to the calling function.
+
+ \section1 Console Command Reference
+
+ Note that you can also get help on the available commands by typing
+ ".help" in the console.
+
+ \section2 Breakpoint-related Commands
+
+ Break points is set
+
+ \section3 break <location>
+
+ Sets a breakpoint at a given code line.
+
+ \code
+ .break foo.qs:123
+ \endcode
+
+ This command sets a breakpoint at \c{foo.qs}, line 123.
+
+ \code
+ .break 123
+ \endcode
+
+ This command sets a breakpoint at line 123 in the current script; the current script
+ is the script associated with the current stack frame.
+
+ Each breakpoint has a unique identifier (an integer) associated with it.
+ This identifier is needed by other breakpoint-related commands.
+
+ \section3 clear <location>
+
+ \code
+ .clear foo.qs:123
+ \endcode
+
+ clears (deletes) the breakpoint at \c{foo.qs}, line 123.
+
+ \code
+ clear 123
+ \endcode
+
+ clears (deletes) the breakpoint at line 123 in the current script;
+ the current script is the script associated with the current stack
+ frame.
+
+ \section3 condition <breakpoint-id> <expression>
+
+ Sets a condition for a breakpoint.
+
+ \code
+ .condition 1 i > 42
+ \endcode
+
+ specifies that breakpoint 1 should only be triggered if the variable \c{i}
+ is greater than 42.
+
+ The expression can be an arbitrary one, i.e. it can have
+ side-effects. It can be any valid QScript conditional
+ expression.
+
+ \section3 delete <breakpoint-id>
+
+ Deletes a breakpoint, i.e., removes it from the current debugging
+ session.
+
+ \section3 disable <breakpoint-id>
+
+ Disables a breakpoint. The breakpoint will continue to exist, but
+ will not stop program execution.
+
+ \section3 enable <breakpoint-id>
+
+ Enables a breakpoint. Breakpoints are enabled by default, so you
+ only need to use this command if you have disabled to breakpoint
+ previously.
+
+ \section3 ignore <breakpoint-id> <count>
+
+ Sets the ignore-count of a breakpoint, i.e., the breakpoint will not
+ stop the program execution unless it have been reached \c count
+ times. This can, for instance, be useful in loops to stop at a
+ specific iteration.
+
+ \code
+ .ignore 1 5
+ \endcode
+
+ Specifies that breakpoint 1 should be ignored the next 5 times it is
+ hit.
+
+ \section3 info breakpoints
+
+ Lists the breakpoints that are set.
+
+ \code
+ .info breakpoints
+ \endcode
+
+ \section3 tbreak <location>
+
+ Sets a temporary breakpoint. This command is identical to the
+ \c{break} command, only the breakpoint will be automatically deleted
+ the first time it is hit.
+
+ \section2 File-related Commands
+
+ \section3 list <location>
+
+ Lists the contents of a script around a given location, where the
+ location is given as a line number and, optionally, the name of the
+ file from which you will print. If only a line number is given, \c
+ {.list} will use the file of the current stack frame.
+
+ \code
+ .list foo.qs:125
+ \endcode
+
+ When no arguments are given, \c{list} will incrementally list
+ sections of the current script.
+
+ \section3 info scripts
+
+ Lists the scripts that are currently loaded.
+
+ \section2 Execution-related Commands
+
+ \section3 advance <location>
+
+ Advances execution to a given location. The syntax of the location
+ is the same as for setting breakpoints. For example:
+
+ \code
+ .advance foo.qs:125
+ \endcode
+
+ \section3 continue
+
+ Continues execution normally, i.e, gives the execution control over
+ the script back to the QScriptEngine.
+
+ \section3 eval <program>
+
+ Evaluates a program.
+
+ \section3 finish
+
+ Continues execution until the current function exits and the next
+ statement is reached (i.e., the statement after the call to the
+ function).
+
+ \section3 interrupt
+
+ Requests that execution should be interrupted. Interruption will
+ occur as soon as a new script statement is reached.
+
+ \section3 next <count = 1>
+
+ Continues execution until a new statement is reached; but if the
+ current statement is a function call, the function call will be
+ treated as a single statement. This will be done \c count times
+ before execution is stopped; the default is one.
+
+ \section3 return <expression>
+
+ Makes the current frame return to its caller. If \c expression is
+ given, it will sent as the result of the function (i.e., replacing
+ the functions return value). \c expression can be any valid QScript
+ expression.
+
+ \section3 step <count = 1>
+
+ Continues execution until a new statement is reached. If the number
+ \c count is given as argument, this will be done \c count times
+ before execution is stopped. As opposed to \l{next <count = 1>}, \c
+ step will enter functions when encountering a function call
+ statement.
+
+ \section2 Stack-related Commands
+
+ \section3 backtrace
+
+ Shows a backtrace of the current execution. The trace will list the
+ function name and its position in the script for each stack frame.
+
+ \section3 down
+
+ Selects the previous (inner) stack frame. The execution will not
+ return to this frame, but you will get access to its local
+ variables.
+
+ \section3 frame <index>
+
+ This command moves to the stack frame with the given \c index. The
+ index of the frame on the top of the stack is 0. Previous frames are
+ numbered from 1 and upwards (the bottom frame in the stack has the
+ largest index).
+
+ \section3 info locals
+
+ Lists the variables that are in the scope of the current frame.
+
+ \section3 up
+
+ Selects the next (outer) stack frame.
+
+*/
diff --git a/doc/src/scripting/qtscriptextensions.qdoc b/doc/src/scripting/qtscriptextensions.qdoc
new file mode 100644
index 000000000..7d6fcbf61
--- /dev/null
+++ b/doc/src/scripting/qtscriptextensions.qdoc
@@ -0,0 +1,115 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 qtscriptextensions.html
+ \title Creating QtScript Extensions
+ \brief A guide to creating and using QtScript extensions.
+
+ QtScript extensions can make additional functionality available to scripts
+ evaluated by a QScriptEngine. Extensions are imported by calling
+ the QScriptEngine::importExtension() function.
+
+ There are three ways to create an extension:
+
+ \list
+ \o Subclass QScriptExtensionPlugin and implement the desired functionality.
+ \o Implement the functionality in a script file.
+ \o Use a hybrid approach, where part of the functionality is implemented in a
+ QScriptExtensionPlugin, and part is implemented in a script file.
+ \endlist
+
+ The (dot-qualified) extension name is used to determine the path (relative to
+ the application's plugin path) where QScriptEngine will look for the script
+ file that will initialize the extension; if a file called \c{__init__.js}
+ (usually located in \c{[application plugin path]/script/foo/}) is
+ found in the corresponding folder, its contents will be evaluated by the engine
+ when the extension is imported.
+ As an example, if the extension is called \c{"foo.bar.baz"}, the engine will look
+ for \c{__init__.js} in \c{foo/bar/baz}. Additionally, before importing
+ \c{"foo.bar.baz"}, the engine will ensure that the extensions \c{"foo"} and \c{"foo.bar"}
+ are imported, locating and evaluating the corresponding \c{__init__.js}
+ in the same manner (in folders \c{foo} and \c{foo/bar}, respectively).
+
+ The contents of \c{__init__.js} are evaluated in a new QScriptContext,
+ as if it were the body of a function. The engine's Global Object acts as
+ the \c{this} object. The following local variables are initially available
+ to the script:
+
+ \list
+ \o \bold{__extension__}: The name of the extension (e.g. \c{"foo.bar.baz"}).
+ \o \bold{__setupPackage__}: A convenience function for setting up a "namespace" in the script environment. A typical application is to call \c{__setupPackage__()} with \c{__extension__} as argument; e.g. \c{__setupPackage__("foo.bar.baz")} would ensure that the object chain represented by the expression \c{foo.bar.baz} exists in the script environment. (This function is semantically equivalent to QScriptExtensionPlugin::setupPackage().)
+ \o \bold{__postInit__}: By default, this variable is undefined. If you assign a function to it, that function will be called \bold{after} the C++ plugin's initialize() function has been called. You can use this to perform further initialization that depends on e.g. native functions that the C++ plugin registers.
+ \endlist
+
+ An example of a simple \c{__init__.js}:
+
+ \snippet doc/src/snippets/code/doc_src_qtscriptextensions.qdoc 0
+
+ QScriptEngine will look for a QScriptExtensionPlugin that provides
+ the relevant extension by querying each plugin for its keys()
+ until a match is found. The plugin's initialize() function will be
+ called \bold{after} the relevant \c{__init__.js} (if any) has been
+ evaluated.
+
+ Continuining with the example of our imaginary extension \c{"foo.bar.baz"},
+ the following steps will be performed by QScriptEngine::importExtension():
+
+ \list
+ \o If it exists, \c{foo/__init__.js} is evaluated.
+ \o If a plugin with \c{"foo"} in its list of keys is found, its initialize() function is called with \c{"foo"} as key.
+ \o If it exists, \c{foo/bar/__init__.js} is evaluated.
+ \o If a plugin with \c{"foo.bar"} in its list of keys is found, its initialize() function is called with \c{"foo.bar"} as key.
+ \o If it exists, \c{foo/bar/baz/__init__.js} is evaluated.
+ \o If a plugin with "foo.bar.baz" in its list of keys is found, its initialize() function is called with \c{"foo.bar.baz"} as key.
+ \endlist
+
+ \section1 Static Extensions
+
+ When an extension is compiled and linked into your application as a
+ static plugin, Qt Script will look for the optional \c{__init__.js}
+ script in a resource, prefixed by \c{:/qtscriptextension}. For example,
+ if the extension key is "foo.bar", Qt Script will evaluate the contents
+ of the file \c{:/qtscriptextension/foo/bar/__init__.js}, if it
+ exists. Note that if the resource is built into the plugin, you may
+ need to use the Q_INIT_RESOURCE() macro to initialize the resource
+ before importing the extension.
+*/
diff --git a/doc/src/scripting/scripting.qdoc b/doc/src/scripting/scripting.qdoc
new file mode 100644
index 000000000..b2ce8d10b
--- /dev/null
+++ b/doc/src/scripting/scripting.qdoc
@@ -0,0 +1,1885 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+/*!
+ \group script
+ \title Scripting Classes and Overviews
+
+ \brief Classes that add scripting capabilities to Qt applications.
+*/
+
+/*!
+ \page scripting.html
+ \title Making Applications Scriptable
+ \ingroup frameworks-technologies
+
+ Qt 4.3 and later provides support for application scripting with ECMAScript.
+ The following guides and references cover aspects of programming with
+ ECMAScript and Qt.
+
+ \tableofcontents
+
+ \section1 Scripting Classes
+
+ The following classes add scripting capabilities to Qt applications.
+
+ \annotatedlist script
+
+ \section1 Language Overview
+
+ Qt Script is based on the ECMAScript scripting language, as defined
+ in standard \l{ECMA-262}. Microsoft's JScript, and Netscape's
+ JavaScript are also based on the ECMAScript standard. For an
+ overview of ECMAScript, see the
+ \l{ECMAScript Reference}{ECMAScript reference}.
+ If you are not familiar with the ECMAScript language, there are
+ several existing tutorials and books that cover this subject, such
+ as \l{JavaScript: The Definitive Guide}.
+
+ Existing users of \l{Qt Script for Applications (QSA)} may find the
+ \l{Moving from QSA to Qt Script} document useful when porting
+ QSA scripts to Qt Script.
+
+ \section1 Basic Usage
+
+ To evaluate script code, you create a QScriptEngine and call its
+ evaluate() function, passing the script code (text) to evaluate
+ as argument.
+
+ \snippet doc/src/snippets/qtscript/evaluation/main.cpp 0
+
+ The return value will be the result of the evaluation (represented
+ as a QScriptValue object); this can be converted to standard C++
+ and Qt types.
+
+ Custom properties can be made available to scripts by registering
+ them with the script engine. This is most easily done by setting
+ properties of the script engine's \e{Global Object}:
+
+ \snippet doc/src/snippets/qtscript/registeringvalues/main.cpp 0
+
+ This places the properties in the script environment, thus making them
+ available to script code.
+
+ \section1 Making a QObject Available to the Script Engine
+
+ Any QObject-based instance can be made available for use with scripts.
+
+ When a QObject is passed to the QScriptEngine::newQObject() function,
+ a Qt Script wrapper object is created that can be used to make the
+ QObject's signals, slots, properties, and child objects available
+ to scripts.
+
+ Here's an example of making an instance of a QObject subclass
+ available to script code under the name \c{"myObject"}:
+
+ \snippet doc/src/snippets/qtscript/registeringobjects/main.cpp 0
+
+ This will create a global variable called \c{myObject} in the
+ script environment. The variable serves as a proxy to the
+ underlying C++ object. Note that the name of the script variable
+ can be anything; i.e., it is not dependent upon QObject::objectName().
+
+ The \l{QScriptEngine::}{newQObject()} function accepts two additional
+ optional arguments: one is the ownership mode, and the other is a
+ collection of options that allow you to control certain aspects of how
+ the QScriptValue that wraps the QObject should behave. We will come
+ back to the usage of these arguments later.
+
+ \section2 Using Signals and Slots
+
+ Qt Script adapts Qt's central \l{Signals and Slots} feature for
+ scripting. There are three principal ways to use signals and slots
+ with Qt Script:
+
+ \list
+ \i \bold{Hybrid C++/script}: C++ application code connects a
+ signal to a script function. The script function can, for example, 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 Qt Script"),
+ \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
+
+ Use the qScriptConnect() function to connect a C++ signal to a
+ script function. In the following example a script signal handler is
+ defined that will handle the QLineEdit::textChanged() signal:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 47
+
+ The first two arguments to qScriptConnect() are the same
+ as you would pass to QObject::connect() to establish a normal C++
+ connection. The third argument is the script object that will act
+ as the \c this object when the signal handler is invoked; in the above
+ example we pass an invalid script value, so the \c this object will
+ be the Global Object. The fourth argument is the script function
+ ("slot") itself. The following example shows how the \c this argument
+ can be put to use:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 48
+
+ We create two QLineEdit objects and define a single signal handler
+ function. The connections use the same handler function, but the
+ function will be invoked with a different \c this object depending on
+ which object's signal was triggered, so the output of the print()
+ statement will be different for each.
+
+ In script code, Qt Script uses a different syntax for connecting to
+ and disconnecting from signals than the familiar C++ syntax; i.e.,
+ QObject::connect().
+ To connect to a signal, you reference the relevant signal as a property
+ of the sender object, and invoke its \c{connect()} function. There
+ are three overloads of \c{connect()}, each with a corresponding
+ \c{disconnect()} overload. The following subsections describe these
+ three forms.
+
+ \section3 Signal to Function Connections
+
+ \c{connect(function)}
+
+ In this form of connection, the argument to \c{connect()} is the
+ function to connect to the signal.
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 2
+
+ The argument can be a Qt Script function, as in the above
+ example, or it can be a QObject slot, as in
+ the following example:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 3
+
+ When the argument is a QObject slot, the argument types of the
+ signal and slot do not necessarily have to be compatible;
+ QtScript will, if necessary, 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 doc/src/snippets/code/doc_src_qtscript.qdoc 4
+
+ 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
+
+ \c{connect(thisObject, function)}
+
+ 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 doc/src/snippets/code/doc_src_qtscript.qdoc 5
+
+ To disconnect from the signal, pass the same arguments to \c{disconnect()}:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 6
+
+ \section3 Signal to Named Member Function Connections
+
+ \c{connect(thisObject, functionName)}
+
+ In this form of the \c{connect()} function, 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 (\c thisObject in the above scheme).
+
+ Note that the function is resolved when the connection is made, not
+ when the signal is emitted.
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 7
+
+ To disconnect from the signal, pass the same arguments to \c{disconnect()}:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 8
+
+ \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 doc/src/snippets/code/doc_src_qtscript.qdoc 9
+
+ \section3 Emitting Signals from Scripts
+
+ To emit a signal from script code, you simply invoke the signal
+ function, passing the relevant arguments:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 10
+
+ 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, QtScript 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 doc/src/snippets/code/doc_src_qtscript.qdoc 11
+
+ 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 doc/src/snippets/code/doc_src_qtscript.qdoc 12
+
+ If the overloads have different number of arguments, QtScript will
+ pick the overload with the argument count that best matches the
+ actual number of arguments passed to the slot.
+
+ For overloaded signals, Qt Script 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.
+
+ \section2 Accessing Properties
+
+ The properties of the QObject are available as properties
+ of the corresponding QtScript 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 doc/src/snippets/code/doc_src_qtscript.qdoc 13
+
+ then script code can do things like the following:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 14
+
+ \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 QtScript 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 doc/src/snippets/code/doc_src_qtscript.qdoc 15
+
+ Since \c{objectName} is itself a Q_PROPERTY, you can manipulate
+ the name in script code to, for example, rename an object:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 16
+
+ You can also use the functions \c{findChild()} and \c{findChildren()}
+ to find children. These two functions behave identically to
+ QObject::findChild() and QObject::findChildren(), respectively.
+
+ For example, we can use these functions to find objects using strings
+ and regular expressions:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 17
+
+ You typically want to use \c{findChild()} when manipulating a form
+ that uses nested layouts; that way the script is isolated from the
+ details about which particular layout a widget is located in.
+
+ \section2 Controlling QObject Ownership
+
+ Qt Script uses garbage collection to reclaim memory used by script
+ objects when they are no longer needed; an object's memory can be
+ automatically reclaimed when it is no longer referenced anywhere in
+ the scripting environment. Qt Script lets you control what happens
+ to the underlying C++ QObject when the wrapper object is reclaimed
+ (i.e., whether the QObject is deleted or not); you do this when you
+ create an object by passing an ownership mode as the second argument
+ to QScriptEngine::newQObject().
+
+ Knowing how Qt Script deals with ownership is important, since it can
+ help you avoid situations where a C++ object isn't deleted when it
+ should be (causing memory leaks), or where a C++ object \e{is}
+ deleted when it shouldn't be (typically causing a crash if C++ code
+ later tries to access that object).
+
+ \section3 Qt Ownership
+
+ By default, the script engine does not take ownership of the
+ QObject that is passed to QScriptEngine::newQObject(); the object
+ is managed according to Qt's object ownership (see
+ \l{Object Trees and Object Ownership}). This mode is appropriate
+ when, for example, you are wrapping C++ objects that are part of
+ your application's core; that is, they should persist regardless of
+ what happens in the scripting environment. Another way of stating
+ this is that the C++ objects should outlive the script engine.
+
+ \section3 Script Ownership
+
+ Specifying QScriptEngine::ScriptOwnership as the ownership mode
+ will cause the script engine to take full ownership of the QObject
+ and delete it when it determines that it is safe to do so
+ (i.e., when there are no more references to it in script code).
+ This ownership mode is appropriate if the QObject does not have a
+ parent object, and/or the QObject is created in the context of the
+ script engine and is not intended to outlive the script engine.
+
+ For example, a constructor function that constructs QObjects
+ only to be used in the script environment is a good candidate:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 18
+
+ \section3 Auto-Ownership
+
+ With QScriptEngine::AutoOwnership the ownership is based on whether
+ the QObject has a parent or not.
+ If the QtScript garbage collector finds that the QObject is no
+ longer referenced within the script environment, the QObject will
+ be deleted \e{only} if it does not have a parent.
+
+ \section3 What Happens When Someone Else Deletes the QObject?
+
+ It is possible that a wrapped QObject is deleted outside of
+ Qt Script's control; i.e., without regard to the ownership mode
+ specified. In this case, the wrapper object will still
+ be an object (unlike the C++ pointer it wraps, the script object
+ won't become null). Any attempt to access properties of the script
+ object will, however, result in a script exception being thrown.
+
+ Note that QScriptValue::isQObject() will still return true for a
+ deleted QObject, since it tests the type of the script object, not
+ whether the internal pointer is non-null. In other words, if
+ QScriptValue::isQObject() returns true but QScriptValue::toQObject()
+ returns a null pointer, this indicates that the QObject has been
+ deleted outside of Qt Script (perhaps accidentally).
+
+ \section2 Customizing Access to the QObject
+
+ QScriptEngine::newQObject() can take a third argument which allows
+ you to control various aspects of the access to the QObject through
+ the QtScript wrapper object it returns.
+
+ QScriptEngine::ExcludeChildObjects specifies that child objects of
+ the QObject should not appear as properties of the wrapper object.
+
+ QScriptEngine::ExcludeSuperClassProperties and
+ QScriptEngine::ExcludeSuperClassMethods can be used to avoid
+ exposing members that are inherited from the QObject's superclass.
+ This is useful for defining a "pure" interface where inherited members
+ don't make sense from a scripting perspective; e.g., you don't want
+ script authors to be able to change the \c{objectName} property of
+ the object or invoke the \c{deleteLater()} slot.
+
+ QScriptEngine::AutoCreateDynamicProperties specifies that properties
+ that don't already exist in the QObject should be created as dynamic
+ properties of the QObject, rather than as properties of the QtScript
+ wrapper object. If you want new properties to truly become persistent
+ properties of the QObject, rather than properties that are destroyed
+ along with the wrapper object (and that aren't shared if the QObject
+ is wrapped multiple times with QScriptEngine::newQObject()), you
+ should use this option.
+
+ QScriptEngine::SkipMethodsInEnumeration specifies that signals and
+ slots should be skipped when enumerating the properties of the QObject
+ wrapper in a for-in script statement. This is useful when defining
+ prototype objects, since by convention function properties of
+ prototypes should not be enumerable.
+
+ \section2 Making a QObject-based Class New-able from a Script
+
+ The QScriptEngine::newQObject() function is used to wrap an
+ existing QObject instance, so that it can be made available to
+ scripts. A different scenario is that you want scripts to be
+ able to construct new objects, not just access existing ones.
+
+ The Qt meta-type system currently does not provide dynamic
+ binding of constructors for QObject-based classes. If you want to
+ make such a class new-able from scripts, Qt Script can generate
+ a reasonable script constructor for you; see
+ QScriptEngine::scriptValueFromQMetaObject().
+
+ You can also use QScriptEngine::newFunction() to wrap your own
+ factory function, and add it to the script environment; see
+ QScriptEngine::newQMetaObject() for an example.
+
+ \section2 Enum Values
+
+ Values for enums declared with Q_ENUMS are not available as
+ properties of individual wrapper objects; rather, they are
+ properties of the QMetaObject wrapper object that can be created
+ with QScriptEngine::newQMetaObject().
+
+ \section1 Conversion Between QtScript and C++ Types
+
+ QtScript will perform type conversion when a value needs to be
+ converted from the script side to the C++ side or vice versa; for
+ instance, when a C++ signal triggers a script function, when
+ you access a QObject property in script code, or when
+ you call QScriptEngine::toScriptValue() or
+ QScriptEngine::fromScriptValue() in C++. QtScript provides default
+ conversion operations for many of the built-in Qt types. You can
+ change the conversion operation for a type (including your custom
+ C++ types) by registering your own conversion functions with
+ qScriptRegisterMetaType().
+
+ \section2 Default Conversion from Qt Script to C++
+
+ The following table describes the default conversion from a
+ QScriptValue to a C++ type.
+
+ \table 80%
+ \header \o C++ Type \o Default Conversion
+ \row \o bool \o QScriptValue::toBool()
+ \row \o int \o QScriptValue::toInt32()
+ \row \o uint \o QScriptValue::toUInt32()
+ \row \o float \o float(QScriptValue::toNumber())
+ \row \o double \o QScriptValue::toNumber()
+ \row \o short \o short(QScriptValue::toInt32())
+ \row \o ushort \o QScriptValue::toUInt16()
+ \row \o char \o char(QScriptValue::toInt32())
+ \row \o uchar \o unsigned char(QScriptValue::toInt32())
+ \row \o qlonglong \o qlonglong(QScriptValue::toInteger())
+ \row \o qulonglong \o qulonglong(QScriptValue::toInteger())
+ \row \o QString \o An empty string if the QScriptValue is null
+ or undefined; QScriptValue::toString() otherwise.
+ \row \o QDateTime \o QScriptValue::toDateTime()
+ \row \o QDate \o QScriptValue::toDateTime().date()
+ \row \o QRegExp \o QScriptValue::toRegExp()
+ \row \o QObject* \o QScriptValue::toQObject()
+ \row \o QWidget* \o QScriptValue::toQObject()
+ \row \o QVariant \o QScriptValue::toVariant()
+ \row \o QChar \o If the QScriptValue is a string, the result
+ is the first character of the string, or a null QChar
+ if the string is empty; otherwise, the result is a QChar
+ constructed from the unicode obtained by converting the
+ QScriptValue to a \c{ushort}.
+ \row \o QStringList \o If the QScriptValue is an array, the
+ result is a QStringList constructed from the result of
+ QScriptValue::toString() for each array element; otherwise,
+ the result is an empty QStringList.
+ \row \o QVariantList \o If the QScriptValue is an array, the result
+ is a QVariantList constructed from the result of
+ QScriptValue::toVariant() for each array element; otherwise,
+ the result is an empty QVariantList.
+ \row \o QVariantMap \o If the QScriptValue is an object, the result
+ is a QVariantMap with a (key, value) pair of the form
+ (propertyName, propertyValue.toVariant()) for each property,
+ using QScriptValueIterator to iterate over the object's
+ properties.
+ \row \o QObjectList \o If the QScriptValue is an array, the result
+ is a QObjectList constructed from the result of
+ QScriptValue::toQObject() for each array element; otherwise,
+ the result is an empty QObjectList.
+ \row \o QList<int> \o If the QScriptValue is an array, the result is
+ a QList<int> constructed from the result of
+ QScriptValue::toInt32() for each array element; otherwise,
+ the result is an empty QList<int>.
+ \endtable
+
+ Additionally, QtScript will handle the following cases:
+
+ \list
+ \i If the QScriptValue is a QObject and the target type name ends with
+ \c * (i.e., it is a pointer), the QObject pointer will be cast to the
+ target type with qobject_cast().
+ \i If the QScriptValue is a QVariant and the target type name ends with
+ \c * (i.e., it is a pointer), and the \l{QVariant::userType()}{userType()}
+ of the QVariant is the type that the target type points to, the result
+ is a pointer to the QVariant's data.
+ \i If the QScriptValue is a QVariant and it can be converted to the
+ target type (according to QVariant::canConvert()), the QVariant will
+ be cast to the target type with qvariant_cast().
+ \endlist
+
+ \section2 Default Conversion from C++ to Qt Script
+
+ The following table describes the default behavior when a QScriptValue is
+ constructed from a C++ type:
+
+ \table 80%
+ \header \o C++ Type \o Default Construction
+ \row \o void \o QScriptEngine::undefinedValue()
+ \row \o bool \o QScriptValue(engine, value)
+ \row \o int \o QScriptValue(engine, value)
+ \row \o uint \o QScriptValue(engine, value)
+ \row \o float \o QScriptValue(engine, value)
+ \row \o double \o QScriptValue(engine, value)
+ \row \o short \o QScriptValue(engine, value)
+ \row \o ushort \o QScriptValue(engine, value)
+ \row \o char \o QScriptValue(engine, value)
+ \row \o uchar \o QScriptValue(engine, value)
+ \row \o QString \o QScriptValue(engine, value)
+ \row \o qlonglong \o QScriptValue(engine, qsreal(value)). Note that
+ the conversion may lead to loss of precision, since not all
+ 64-bit integers can be represented using the qsreal type.
+ \row \o qulonglong \o QScriptValue(engine, qsreal(value)). Note that
+ the conversion may lead to loss of precision, since not all
+ 64-bit unsigned integers can be represented using the qsreal
+ type.
+ \row \o QChar \o QScriptValue(this, value.unicode())
+ \row \o QDateTime \o \l{QScriptEngine::newDate()}{QScriptEngine::newDate}(value)
+ \row \o QDate \o \l{QScriptEngine::newDate()}{QScriptEngine::newDate}(value)
+ \row \o QRegExp \o \l{QScriptEngine::newRegExp()}{QScriptEngine::newRegExp}(value)
+ \row \o QObject* \o \l{QScriptEngine::newQObject()}{QScriptEngine::newQObject}(value)
+ \row \o QWidget* \o \l{QScriptEngine::newQObject()}{QScriptEngine::newQObject}(value)
+ \row \o QVariant \o \l{QScriptEngine::newVariant()}{QScriptEngine::newVariant}(value)
+ \row \o QStringList \o A new script array (created with
+ QScriptEngine::newArray()), whose elements are created using
+ the QScriptValue(QScriptEngine *, QString) constructor for
+ each element of the list.
+ \row \o QVariantList \o A new script array (created with
+ QScriptEngine::newArray()), whose elements are created using
+ QScriptEngine::newVariant() for each element of the list.
+ \row \o QVariantMap \o A new script object (created with
+ QScriptEngine::newObject()), whose properties are initialized
+ according to the (key, value) pairs of the map.
+ \row \o QObjectList \o A new script array (created with
+ QScriptEngine::newArray()), whose elements are created using
+ QScriptEngine::newQObject() for each element of the list.
+ \row \o QList<int> \o A new script array (created with
+ QScriptEngine::newArray()), whose elements are created using
+ the QScriptValue(QScriptEngine *, int) constructor for each
+ element of the list.
+ \endtable
+
+ Other types (including custom types) will be wrapped using
+ QScriptEngine::newVariant(). For null pointers of any type, the
+ result is QScriptEngine::nullValue().
+
+ \section1 How to Design and Implement Application Objects
+
+ This section explains how to implement application objects and
+ provides the necessary technical background material.
+
+ \section2 Making a C++ object available to Scripts Written in QtScript
+
+ Making C++ classes and objects available to a scripting language is
+ not trivial because scripting languages tend to be more dynamic than
+ C++, and it must be possible to introspect objects (query information
+ such as function names, function signatures, properties, etc., at
+ run-time). Standard C++ does not provide features for this.
+
+ We can achieve the functionality we want by extending C++, using
+ C++'s own facilities so our code is still standard C++. The Qt
+ meta-object system provides the necessary additional functionality.
+ It allows us to write using an extended C++ syntax, but converts this
+ into standard C++ using a small utility program called \l{moc}
+ (Meta-Object Compiler). Classes that wish to take advantage of the
+ meta-object facilities are either subclasses of QObject, or use the
+ \c{Q_OBJECT} macro. Qt has used this approach for many years and it has
+ proven to be solid and reliable. QtScript uses this meta-object
+ technology to provide scripters with dynamic access to C++ classes
+ and objects.
+
+ To completely understand how to make C++ objects available to Qt
+ Script, some basic knowledge of the Qt meta-object system is very
+ helpful. We recommend that you read the \l{Qt Object Model}. The
+ information in this document and the documents it links to are very
+ useful for understanding how to implement application objects.
+
+ However, this knowledge is not essential in the simplest cases.
+ To make an object available in QtScript, it must derive from
+ QObject. All classes which derive from QObject can be introspected
+ and can provide the information needed by the scripting engine at
+ run-time; e.g., class name, functions, signatures. Because we obtain
+ the information we need about classes dynamically at run-time, there
+ is no need to write wrappers for QObject derived classes.
+
+ \section2 Making C++ Class Member Functions Available in QtScript
+
+ The meta-object system also makes information about signals and slots
+ dynamically available at run-time. By default, for QObject subclasses,
+ only the signals and slots are automatically made available to scripts.
+ This is very convenient because, in practice, we normally only want to
+ make specially chosen functions available to scripters. When you create
+ a QObject subclass, make sure that the functions you want to expose to
+ QtScript are public slots.
+
+ For example, the following class definition enables scripting only for
+ certain functions:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 19
+
+ In the example above, aNonScriptableFunction() is not declared as a
+ slot, so it will not be available in QtScript. The other three
+ functions will automatically be made available in QtScript because
+ they are declared in the \c{public slots} section of the class
+ definition.
+
+ It is possible to make any function script-invokable by specifying
+ the \c{Q_INVOKABLE} modifier when declaring the function:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 20
+
+ Once declared with \c{Q_INVOKABLE}, the method can be invoked from
+ QtScript code just as if it were a slot. Although such a method is
+ not a slot, you can still specify it as the target function in a
+ call to \c{connect()} in script code; \c{connect()} accepts both
+ native and non-native functions as targets.
+
+ \section2 Making C++ Class Properties Available in QtScript
+
+ In the previous example, if we wanted to get or set a property using
+ QtScript we would have to write code like the following:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 21
+
+ Scripting languages often provide a property syntax to modify and
+ retrieve properties (in our case the enabled state) of an
+ object. Many script programmers would want to write the above code
+ like this:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 22
+
+ To make this possible, you must define properties in the C++ QObject
+ subclass. For example, the following \c MyObject class declaration
+ declares a boolean property called \c enabled, which uses the function
+ \c{setEnabled(bool)} as its setter function and \c{isEnabled()} as its
+ getter function:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 23
+
+ The only difference from the original code is the use of the macro
+ \c{Q_PROPERTY}, which takes the type and name of the property, and
+ the names of the setter and getter functions as arguments.
+
+ If you don't want a property of your class to be accessible in
+ QtScript, you set the \c{SCRIPTABLE} attribute to \c false when
+ declaring the property; by default, the \c{SCRIPTABLE} attribute is
+ \c true. For example:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 24
+
+ \section2 Reacting to C++ Objects Signals in Scripts
+
+ In the Qt object model, signals are used as a notification mechanism
+ between QObjects. This means one object can connect a signal to
+ another object's slot and, every time the signal is emitted, the slot
+ is called. This connection is established using the QObject::connect()
+ function.
+
+ The signals and slots mechanism is also available to QtScript
+ programmers. The code to declare a signal in C++ is the same,
+ regardless of whether the signal will be connected to a slot in C++
+ or in QtScript.
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 25
+
+ The only change we have made to the code in the previous section is
+ to declare a signals section with the relevant signal. Now, the
+ script writer can define a function and connect to the object like
+ this:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 26
+
+ \section2 Design of Application Objects
+
+ The previous section described how to implement C++ objects which
+ can be used in QtScript. Application objects are the same kind of
+ objects, and they make your application's functionality available to
+ QtScript scripters. Since the C++ application is already written
+ in Qt, many objects are already QObjects. The easiest approach would
+ be to simply add all these QObjects as application objects to the
+ scripting engine. For small applications this might be sufficient,
+ but for larger applications this is probably not the right
+ approach. The problem is that this method reveals too much of the
+ internal API and gives script programmers access to application
+ internals which should not be exposed.
+
+ Generally, the best way of making application functionality available
+ to scripters is to code some QObjects which define the applications
+ public API using signals, slots, and properties. This gives you
+ complete control of the functionality made available by the
+ application. The implementations of these objects simply call the
+ functions in the application which do the real work. So, instead of
+ making all your QObjects available to the scripting engine, just add
+ the wrapper QObjects.
+
+ \section3 Returning QObject Pointers
+
+ If you have a slot that returns a QObject pointer, you should note
+ that, by default, Qt Script only handles conversion of the types
+ QObject* and QWidget*. This means that if your slot is declared
+ with a signature like "MyObject* getMyObject()", QtScript doesn't
+ automatically know that MyObject* should be handled in the same way
+ as QObject* and QWidget*. The simplest way to solve this is to only
+ use QObject* and QWidget* in the method signatures of your scripting
+ interface.
+
+ Alternatively, you can register conversion functions for your custom
+ type with the qScriptRegisterMetaType() function. In this way, you
+ can preserve the precise typing in your C++ declarations, while
+ still allowing pointers to your custom objects to flow seamlessly
+ between C++ and scripts. Example:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 43
+
+ \section1 Function Objects and Native Functions
+
+ In Qt Script, functions are first-class values; they are objects that
+ can have properties of their own, just like any other type of
+ object. They can be stored in variables and passed as arguments to
+ other functions. Knowing how function calls in Qt Script behave is
+ useful when you want to define and use your own script functions.
+ This section discusses this matter, and also explains how you can
+ implement native functions; that is, Qt Script functions written in
+ C++, as opposed to functions written in the scripting language
+ itself. Even if you will be relying mostly on the dynamic QObject
+ binding that Qt Script provides, knowing about these powerful
+ concepts and techniques is important to understand what's actually
+ going on when script functions are executed.
+
+ \section2 Calling a Qt Script Function from C++
+
+ Calling a Qt Script function from C++ is achieved with the
+ QScriptValue::call() function. A typical scenario is that you evaluate a
+ script that defines a function, and at some point you want to call that
+ function from C++, perhaps passing it some arguments, and then handle the
+ result. The following script defines a Qt Script object that has a
+ toKelvin() function:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 90
+
+ The toKelvin() function takes a temperature in Kelvin as argument, and
+ returns the temperature converted to Celsius. The following snippet shows
+ how the toKelvin() function might be obtained and called from C++:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 91
+
+ If a script defines a global function, you can access the function as a
+ property of QScriptEngine::globalObject(). For example, the following script
+ defines a global function add():
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 56
+
+ C++ code might call the add() function as follows:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 92
+
+ As already mentioned, functions are just values in Qt Script; a function by
+ itself is not "tied to" a particular object. This is why you have to specify
+ a \c{this} object (the first argument to QScriptValue::call()) that the
+ function should be applied to.
+
+ If the function is supposed to act as a method (i.e. it can only be applied
+ to a certain class of objects), it is up to the function itself to check
+ that it is being called with a compatible \c{this} object.
+
+ Passing an invalid QScriptValue as the \c{this} argument to
+ QScriptValue::call() indicates that the Global Object should be used as the
+ \c{this} object; in other words, that the function should be invoked as a
+ global function.
+
+ \section2 The \c this Object
+
+ When a Qt Script function is invoked from a script, the \e{way} in which it
+ is invoked determines the \c this object when the function body is executed,
+ as the following script example illustrates:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 49
+
+ An important thing to note is that in Qt Script, unlike C++ and Java, the
+ \c this object is not part of the execution scope. This means that
+ member functions (i.e., functions that operate on \c this) must always
+ use the \c this keyword to access the object's properties. For example,
+ the following script probably doesn't do what you want:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 50
+
+ You will get a reference error saying that 'a is not defined' or, worse,
+ two totally unrelated global variables \c a and \c b will be used to
+ perform the computation, if they exist. Instead, the script should look
+ like this:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 51
+
+ Accidentally omitting the \c this keyword is a typical source of
+ error for programmers who are used to the scoping rules of C++ and Java.
+
+ \section2 Wrapping a Native Function
+
+ Qt Script provides QScriptEngine::newFunction() as a way of wrapping a
+ C++ function pointer; this enables you to implement a function in
+ C++ and add it to the script environment, so that scripts can invoke
+ your function as if it were a "normal" script function. Here is how the
+ previous \c{getProperty()} function can be written in C++:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 52
+
+ Call QScriptEngine::newFunction() to wrap the function. This will
+ produce a special type of function object that carries a pointer to
+ the C++ function internally. Once the resulting wrapper has been
+ added to the scripting environment (e.g., by setting it as a property
+ of the Global Object), scripts can call the function without having
+ to know nor care that it is, in fact, a native function.
+
+ Note that the name of the C++ function doesn't matter in the
+ scripting sense; the name by which the function is invoked by
+ scripts depends only on what you call the script object property
+ in which you store the function wrapper.
+
+ It is currently not possible to wrap member functions; i.e., methods
+ of a C++ class that require a \c this object.
+
+ \section2 The QScriptContext Object
+
+ A QScriptContext holds all the state associated with a particular
+ invocation of your function. Through the QScriptContext, you can:
+ \list
+ \i Get the arguments that were passed to the function.
+ \i Get the \c this object.
+ \i Find out whether the function was called with the \c new operator
+ (the significance of this will be explained later).
+ \i Throw a script error.
+ \i Get the function object that's being invoked.
+ \i Get the activation object (the object used to hold local variables).
+ \endlist
+
+ The following sections explain how to make use of this
+ functionality.
+
+ \section2 Processing Function Arguments
+
+ Two things are worth noting about function arguments:
+
+ \list 1
+ \o Any script function \mdash including native functions \mdash can
+ be invoked with any number of arguments. This means that it is up to
+ the function itself to check the argument count if necessary, and act
+ accordingly (e.g., throw an error if the number of arguments is
+ too large, or prepare a default value if the number is too small).
+ \o A value of any type can be supplied as an argument to any
+ function. This means that it is up to you to check the type of the
+ arguments if necessary, and act accordingly (e.g., throw an error
+ if an argument is not an object of a certain type).
+ \endlist
+
+ In summary: Qt Script does not automatically enforce any constraints on the
+ number or type of arguments involved in a function call.
+
+ \section3 Formal Parameters and the Arguments Object
+
+ A native Qt Script function is analogous to a script function that defines no
+ formal parameters and only uses the built-in \c arguments variable to
+ process its arguments. To see this, let's first consider how a
+ script would normally define an \c{add()} function that takes two
+ arguments, adds them together and returns the result:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 56
+
+ When a script function is defined with formal parameters, their
+ names can be viewed as mere aliases of properties of the \c
+ arguments object; for example, in the \c{add(a, b)} definition's
+ function body, \c a and \c arguments[0] refer to the same
+ variable. This means that the \c{add()} function can equivalently be
+ written like this:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 57
+
+ This latter form closely matches what a native implementation
+ typically looks like:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 58
+
+ \section3 Checking the Number of Arguments
+
+ Again, remember that the presence (or lack) of formal parameter
+ names in a function definition does not affect how the function
+ may be invoked; \c{add(1, 2, 3)} is allowed by the engine, as is
+ \c{add(42)}. In the case of the \c {add()} function, the function
+ really needs two arguments in order to do something useful. This
+ can be expressed by the script definition as follows:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 59
+
+ This would result in an error being thrown if a script invokes
+ \c{add()} with anything other than two arguments. The native
+ function can be modified to perform the same check:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 62
+
+ \section3 Checking the Types of Arguments
+
+ In addition to expecting a certain number of arguments, a function might
+ expect that those arguments are of certain types (e.g., that the first
+ argument is a number and that the second is a string). Such a function
+ should explicitly check the type of arguments and/or perform a conversion,
+ or throw an error if the type of an argument is incompatible.
+
+ As it is, the native implementation of \c{add()} shown above doesn't
+ have the exact same semantics as the script counterpart; this is
+ because the behavior of the Qt Script \c{+} operator depends on the
+ types of its operands (for example, if one of the operands is a string,
+ string concatenation is performed). To give the script function
+ stricter semantics (namely, that it should only add numeric
+ operands), the argument types can be tested:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 60
+
+ Then an invocation like \c{add("foo", new Array())} will
+ cause an error to be thrown.
+
+ The C++ version can call QScriptValue::isNumber() to perform similar
+ tests:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 63
+
+ A less strict script implementation might settle for performing an
+ explicit to-number conversion before applying the \c{+} operator:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 61
+
+ In a native implementation, this is equivalent to calling
+ QScriptValue::toNumber() without performing any type test first,
+ since QScriptValue::toNumber() will automatically perform a type
+ conversion if necessary.
+
+ To check if an argument is of a certain object type (class),
+ scripts can use the \c instanceof operator (e.g., \c{"arguments[0]
+ instanceof Array"} evaluates to true if the first argument is an
+ Array object); native functions can call QScriptValue::instanceOf().
+
+ To check if an argument is of a custom C++ type, you typically use
+ qscriptvalue_cast() and check if the result is valid. For object types,
+ this means casting to a pointer and checking if it is non-zero; for
+ value types, the class should have an \c{isNull()}, \c{isValid()}
+ or similar method. Alternatively, since most custom types are
+ transported in \l{QVariant}s, you can check if the script value is a
+ QVariant using QScriptValue::isVariant(), and then check if the
+ QVariant can be converted to your type using QVariant::canConvert().
+
+ \section3 Functions with Variable Numbers of Arguments
+
+ Because of the presence of the built-in \c arguments object,
+ implementing functions that take a variable number of arguments
+ is simple. In fact, as we have seen, in the technical sense \e{all}
+ Qt Script functions can be seen as variable-argument functions).
+ As an example, consider a concat() function that takes an arbitrary
+ number of arguments, converts the arguments to their string
+ representation and concatenates the results; for example,
+ \c{concat("Qt", " ", "Script ", 101)} would return "Qt Script 101".
+ A script definition of \c{concat()} might look like this:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 64
+
+ Here is an equivalent native implementation:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 65
+
+ A second use case for a variable number of arguments is to implement
+ optional arguments. Here's how a script definition typically does
+ it:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 66
+
+ And here's the native equivalent:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 67
+
+ A third use case for a variable number of arguments is to simulate
+ C++ overloads. This involves checking the number of arguments and/or
+ their type at the beginning of the function body (as already shown),
+ and acting accordingly. It might be worth thinking twice before
+ doing this, and instead favor unique function names; e.g., having
+ separate \c{processNumber(number)} and \c{processString(string)}
+ functions rather than a generic \c{process(anything)} function.
+ On the caller side, this makes it harder for scripts to accidentally
+ call the wrong overload (since they don't know or don't comprehend
+ your custom sophisticated overloading resolution rules), and on the
+ callee side, you avoid the need for potentially complex (read:
+ error-prone) checks to resolve ambiguity.
+
+ \section3 Accessing the Arguments Object
+
+ Most native functions use the QScriptContext::argument() function to
+ access function arguments. However, it is also possible to access
+ the built-in \c arguments object itself (the one referred to by the
+ \c arguments variable in script code), by calling the
+ QScriptContext::argumentsObject() function. This has three principal
+ applications:
+
+ \list
+ \o The \c arguments object can be used to easily forward a function
+ call to another function. In script code, this is what it
+ typically looks like:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 68
+
+ For example, \c{foo(10, 20, 30)} would result in the \c{foo()} function
+ executing the equivalent of \c{bar(10, 20, 30)}. This is useful if
+ you want to perform some special pre- or post-processing when
+ calling a function (e.g., to log the call to \c{bar()} without having
+ to modify the \c{bar()} function itself, like the above example), or if
+ you want to call a "base implementation" from a prototype
+ function that has the exact same "signature". In C++, the forwarding
+ function might look like this:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 69
+
+ \o The arguments object can serve as input to a QScriptValueIterator,
+ providing a generic way to iterate over the arguments. A debugger
+ might use this to display the arguments object in a general purpose
+ "Qt Script Object Explorer", for example.
+
+ \o The arguments object can be serialized (e.g., with JSON) and transferred
+ to another entity (e.g., a script engine running in another thread),
+ where the object can be deserialized and passed as argument to
+ another script function.
+ \endlist
+
+ \section2 Constructor Functions
+
+ Some script functions are constructors; they are expected to initialize
+ new objects. The following snippet is a small example:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 75
+
+ There is nothing special about constructor functions. In fact, any
+ script function can act as a constructor function (i.e., any function
+ can serve as the operand to \c{new}). Some functions behave differently
+ depending on whether they are called as part of a \c{new} expression
+ or not; for example, the expression \c{new Number(1)} will create a
+ Number object, whereas \c{Number("123")} will perform a type
+ conversion. Other functions, like \c{Array()}, will always create
+ and initialize a new object (e.g., \c{new Array()} and \c{Array()} have
+ the same effect).
+
+ A native Qt Script function can call the
+ QScriptContext::isCalledAsConstructor() function to determine if it
+ is being called as a constructor or as a regular function. When a
+ function is called as a constructor (i.e., it is the operand in a
+ \c{new} expression), this has two important implications:
+
+ \list
+ \i The \c this object, QScriptContext::thisObject(), contains
+ the new object to be initialized; the engine creates this
+ new object automatically before invoking your function. This means
+ that your native constructor function normally doesn't have to (and
+ shouldn't) create a new object when it is called as a
+ constructor, since the engine has already prepared a new
+ object. Instead your function should operate on the supplied
+ \c this object.
+ \i The constructor function should return an undefined value,
+ QScriptEngine::undefinedValue(), to tell the engine that the
+ \c this object should be the final result of the \c new
+ operator. Alternatively, the function can return the \c this
+ object itself.
+ \endlist
+
+ When QScriptContext::isCalledAsConstructor() returns false, how your
+ constructor handles this case depends on what behavior you desire.
+ If, like the built-in \c{Number()} function, a plain function call should
+ perform a type conversion of its argument, then you perform the conversion
+ and return the result. If, on the other hand, you want your constructor
+ to behave \e{as if it was called as a constructor} (with
+ \c{new}), you have to explicitly create a new object (that is,
+ ignore the \c this object), initialize that object, and return it.
+
+ The following example implements a constructor function that always
+ creates and initializes a new object:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 76
+
+ Given this constructor, scripts would be able to use either the
+ expression \c{new Person("Bob")} or \c{Person("Bob")} to create a
+ new \c{Person} object; both behave in the same way.
+
+ There is no equivalent way for a function defined in script
+ code to determine whether or not it was invoked as a constructor.
+
+ Note that, even though it is not considered good practice, there is
+ nothing that stops you from choosing to ignore the default
+ constructed (\c this) object when your function is called as a
+ constructor and creating your own object anyway; simply have the
+ constructor return that object. The object will "override" the
+ default object that the engine constructed (i.e., the default
+ object will simply be discarded internally).
+
+ \section2 Associating Data with a Function
+
+ Even if a function is global \mdash i.e., not associated with any particular
+ (type of) object \mdash you might still want to associate some data with it,
+ so that it becomes self-contained; for example, the function could have
+ a pointer to some C++ resource that it needs to access. If your application
+ only uses a single script engine, or the same C++ resource can/should be
+ shared among all script engines, you can simply use a static C++ variable
+ and access it from within the native Qt Script function.
+
+ In the case where a static C++ variable or singleton class is
+ not appropriate, you can call QScriptValue::setProperty() on the
+ function object, but be aware that those properties will also be
+ accessible to script code. The alternative is to use QScriptValue::setData();
+ this data is not script-accessible. The implementation can access this
+ internal data through the QScriptContext::callee() function, which
+ returns the function object being invoked. The following example
+ shows how this might be used:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 55
+
+ \section2 Native Functions as Arguments to Functions
+
+ As previously mentioned, a function object can be passed as argument
+ to another function; this is also true for native functions,
+ naturally. As an example, here's a native comparison function
+ that compares its two arguments numerically:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 53
+
+ The above function can be passed as argument to the standard
+ \c{Array.prototype.sort} function to sort an array numerically,
+ as the following C++ code illustrates:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 54
+
+ Note that, in this case, we are truly treating the native function
+ object as a value \mdash i.e., we don't store it as a property of the
+ scripting environment \mdash we simply pass it on as an "anonymous"
+ argument to another script function and then forget about it.
+
+ \section2 The Activation Object
+
+ Every Qt Script function invocation has an \e{activation object}
+ associated with it; this object is accessible through the
+ QScriptContext::activationObject() function. The activation object
+ is a script object whose properties are the local variables
+ associated with the invocation (including the arguments for which
+ the script function has a corresponding formal parameter name).
+ Thus, getting, modifying, creating and deleting local variables
+ from C++ is done using the regular QScriptValue::property() and
+ QScriptValue::setProperty() functions. The activation object itself
+ is not directly accessible from script code (but it is implicitly
+ accessed whenever a local variable is read from or written to).
+
+ For C++ code, there are two principal applications of the
+ activation object:
+
+ \list
+ \i The activation object provides a standard way to traverse the
+ variables associated with a function call, by using it as the input
+ to QScriptValueIterator. This is useful for debugging purposes.
+
+ \i The activation object can be used to prepare local variables
+ that should be available when a script is evaluated inline; this
+ can be viewed as a way of passing arguments to the script
+ itself. This technique is typically used in conjunction with
+ QScriptEngine::pushContext(), as in the following example:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 77
+
+ We create a temporary execution context, create a local variable
+ for it, evaluate the script, and finally restore the old context.
+ \endlist
+
+ \section2 Property Getters and Setters
+
+ A script object property can be defined in terms of a getter/setter
+ function, similar to how a Qt C++ property has read and write
+ functions associated with it. This makes it possible for a script to
+ use expressions like \c{object.x} instead of \c{object.getX()}; the
+ getter/setter function for \c{x} will implicitly be invoked
+ whenever the property is accessed. To scripts, the property looks
+ and behaves just like a regular object property.
+
+ A single Qt Script function can act as both getter and setter for
+ a property. When it is called as a getter, the argument count is 0.
+ When it is called as a setter, the argument count is 1; the argument
+ is the new value of the property. In the following example, we
+ define a native combined getter/setter that transforms the value
+ slightly:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 78
+
+ The example uses the internal data of the object to store and
+ retrieve the transformed value. Alternatively, the property
+ could be stored in another, "hidden" property of the object itself
+ (e.g., \c{__x__}). A native function is free to implement whatever
+ storage scheme it wants, as long as the external behavior of the
+ property itself is consistent (e.g., that scripts should not be able
+ to distinguish it from a regular property).
+
+ The following C++ code shows how an object property can be defined
+ in terms of the native getter/setter:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 79
+
+ When the property is accessed, like in the following script, the
+ getter/setter does its job behind the scenes:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 80
+
+ \note It is important that the setter function, not just the getter,
+ returns the value of the property; i.e., the setter should \e{not}
+ return QScriptValue::UndefinedValue. This is because the result of
+ the property assignment is the value returned by the setter, and
+ not the right-hand side expression. Also note that you normally
+ should not attempt to read the same property that the getter modifies
+ within the getter itself, since this will cause the getter to be
+ called recursively.
+
+ You can remove a property getter/setter by calling
+ QScriptValue::setProperty(), passing an invalid QScriptValue
+ as the getter/setter. Remember to specify the
+ QScriptValue::PropertyGetter/QScriptValue::PropertySetter flag(s),
+ otherwise the only thing that will happen is that the setter will be
+ invoked with an invalid QScriptValue as its argument!
+
+ Property getters and setters can be defined and installed by script
+ code as well, as in the following example:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 81
+
+ Getters and setters can only be used to implement "a priori
+ properties"; i.e., the technique can't be used to react to an access
+ to a property that the object doesn't already have. To gain total
+ control of property access in this way, you need to subclass
+ QScriptClass.
+
+ \section1 Making Use of Prototype-Based Inheritance
+
+ In ECMAScript, inheritance is based on the concept of \e{shared
+ prototype objects}; this is quite different from the class-based
+ inheritance familiar to C++ programmers. With QtScript, you can
+ associate a custom prototype object with a C++ type using
+ QScriptEngine::setDefaultPrototype(); this is the key to providing
+ a script interface to that type. Since the QtScript module is built
+ on top of Qt's meta-type system, this can be done for any C++ type.
+
+ You might be wondering when exactly you would need to use this
+ functionality in your application; isn't the automatic binding
+ provided by QScriptEngine::newQObject() enough? No, not under all
+ circumstances.
+ Firstly, not every C++ type is derived from QObject; types that
+ are not QObjects cannot be introspected through Qt's meta-object
+ system (they do not have properties, signals and slots). Secondly,
+ even if a type is QObject-derived, the functionality you want to
+ expose to scripts might not all be available, since it is unusual to
+ define every function to be a slot (and it's not always
+ possible/desirable to change the C++ API to make it so).
+
+ It is perfectly possible to solve this problem by using "conventional"
+ C++ techniques. For instance, the QRect class could effectively be
+ made scriptable by creating a QObject-based C++ wrapper class with
+ \c{x}, \c{y}, \c{width} properties and so on, which forwarded property
+ access and function calls to the wrapped value. However, as we shall
+ see, by taking advantage of the ECMAScript object model and combining
+ it with Qt's meta-object system, we can arrive at a solution that is
+ more elegant, consistent and lightweight, supported by a small API.
+
+ This section explains the underlying concepts of prototype-based
+ inheritance. Once these concepts are understood, the associated
+ practices can be applied throughout the QtScript API in order to
+ create well-behaved, consistent bindings to C++ that will fit nicely
+ into the ECMAScript universe.
+
+ When experimenting with QtScript objects and inheritance, it can be
+ helpful to use the interactive interpreter included with the
+ \l{Qt Script Examples}, located in \c{examples/script/qscript}.
+
+ \section2 Prototype Objects and Shared Properties
+
+ The purpose of a QtScript \e{prototype object} is to define
+ behavior that should be shared by a set of other QtScript
+ objects. We say that objects which share the same prototype object
+ belong to the same \e{class} (again, on the technical side this
+ should not to be confused with the class constructs of languages
+ like C++ and Java; ECMAScript has no such construct).
+
+ The basic prototype-based inheritance mechanism works as follows: Each
+ QtScript object has an internal link to another object, its
+ \e{prototype}. When a property is looked up in an object, and the
+ object itself does not have the property, the property is looked up
+ in the prototype object instead; if the prototype has the property,
+ then that property is returned. Otherwise, the property is looked up
+ in the prototype of the prototype object, and so on; this chain of
+ objects constitutes a \e{prototype chain}. The chain of prototype
+ objects is followed until the property is found or the end of the
+ chain is reached.
+
+ For example, when you create a new object by the expression \c{new
+ Object()}, the resulting object will have as its prototype the
+ standard \c{Object} prototype, \c{Object.prototype}; through this
+ prototype relation, the new object inherits a set of properties,
+ including the \c{hasOwnProperty()} function and \c{toString()}
+ function:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 27
+
+ The \c{toString()} function itself is not defined in \c{o} (since we
+ did not assign anything to \c{o.toString}), so instead the
+ \c{toString()} function in the standard \c{Object} prototype is
+ called, which returns a highly generic string representation of
+ \c{o} ("[object Object]").
+
+ Note that the properties of the prototype object are not \e{copied} to
+ the new object; only a \e{link} from the new object to the prototype
+ object is maintained. This means that changes done to the prototype
+ object will immediately be reflected in the behavior of all objects
+ that have the modified object as their prototype.
+
+ \section2 Defining Classes in a Prototype-Based Universe
+
+ In QtScript, a class is not defined explicitly; there is no
+ \c{class} keyword. Instead, you define a new class in two steps:
+
+ \list 1
+ \i Define a \e{constructor function} that will initialize new objects.
+ \i Set up a \e{prototype object} that defines the class interface, and
+ assign this object to the public \c{prototype} property of the
+ constructor function.
+ \endlist
+
+ With this arrangement, the constructor's public \c{prototype}
+ property will automatically be set as the prototype of objects created
+ by applying the \c{new} operator to your constructor function;
+ e.g., the prototype of an object created by \c{new Foo()} will be the
+ value of \c{Foo.prototype}.
+
+ Functions that don't operate on the \c this object ("static" methods)
+ are typically stored as properties of the constructor function, not
+ as properties of the prototype object. The same is true for
+ constants, such as enum values.
+
+ The following code defines a simple constructor function for a class
+ called \c{Person}:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 28
+
+ Next, you want to set up \c{Person.prototype} as your prototype
+ object; i.e., define the interface that should be common to all
+ \c{Person} objects. QtScript automatically creates a default
+ prototype object (by the expression \c{new Object()}) for every
+ script function; you can add properties to this object, or you can
+ assign your own custom object. (Generally speaking, any QtScript
+ object can act as prototype for any other object.)
+
+ Here's an example of how you might want to override the
+ \c{toString()} function that \c{Person.prototype} inherits from
+ \c{Object.prototype}, to give your \c{Person} objects a more
+ appropriate string representation:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 29
+
+ This resembles the process of reimplementing a virtual function
+ in C++. Henceforth, when the property named \c{toString} is
+ looked up in a \c{Person} object, it will be resolved in
+ \c{Person.prototype}, not in \c{Object.prototype} as before:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 30
+
+ There are also some other interesting things we can learn about a
+ \c{Person} object:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 31
+
+ The \c{hasOwnProperty()} function is not inherited from
+ \c{Person.prototype}, but rather from \c{Object.prototype}, which is
+ the prototype of \c{Person.prototype} itself; i.e., the prototype
+ chain of \c{Person} objects is \c{Person.prototype} followed by
+ \c{Object.prototype}. This prototype chain establishes a \e{class
+ hierarchy}, as demonstrated by applying the \c{instanceof} operator;
+ \c{instanceof} checks if the value of the public \c{prototype}
+ property of the constructor function on the right-hand side is
+ reached by following the prototype chain of the object on the
+ left-hand side.
+
+ When defining subclasses, there's a general pattern you can use. The
+ following example shows how one can create a subclass of \c{Person}
+ called \c{Employee}:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 32
+
+ Again, you can use the \c{instanceof} to verify that the
+ class relationship between \c{Employee} and \c{Person} has been
+ correctly established:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 33
+
+ This shows that the prototype chain of \c{Employee} objects is the
+ same as that of \c{Person} objects, but with \c{Employee.prototype}
+ added to the front of the chain.
+
+ \section2 Prototype-Based Programming with the QtScript C++ API
+
+ You can use QScriptEngine::newFunction() to wrap
+ native functions. When implementing a constructor function,
+ you also pass the prototype object as an argument to
+ QScriptEngine::newFunction().
+ You can call QScriptValue::construct() to call a constructor
+ function, and you can use QScriptValue::call() from within a
+ native constructor function if you need to call a base class
+ constructor.
+
+ The QScriptable class provides a convenient way to implement a
+ prototype object in terms of C++ slots and properties. Take a look
+ at the \l{Default Prototypes Example} to see how this is done.
+ Alternatively, the prototype functionality can be implemented in
+ terms of standalone native functions that you wrap with
+ QScriptEngine::newFunction() and set as properties of your prototype
+ object by calling QScriptValue::setProperty().
+
+ In the implementation of your prototype functions, you use
+ QScriptable::thisObject() (or QScriptContext::thisObject()) to
+ obtain a reference to the QScriptValue being operated upon; then you
+ call qscriptvalue_cast() to cast it to your C++ type, and perform
+ the relevant operations using the usual C++ API for the type.
+
+ You associate a prototype object with a C++ type by calling
+ QScriptEngine::setDefaultPrototype(). Once this mapping is
+ established, QtScript will automatically assign the correct
+ prototype when a value of such a type is wrapped in a QScriptValue;
+ either when you explicitly call QScriptEngine::toScriptValue(), or
+ when a value of such a type is returned from a C++ slot and
+ internally passed back to script code by the engine. This means you
+ \e{don't} have to implement wrapper classes if you use this
+ approach.
+
+ As an example, let's consider how the \c{Person} class from the
+ preceding section can be implemented in terms of the Qt Script API.
+ We begin with the native constructor function:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 34
+
+ Here's the native equivalent of the \c{Person.prototype.toString}
+ function we saw before:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 35
+
+ The \c{Person} class can then be initialized as follows:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 36
+
+ The implementation of the \c{Employee} subclass is similar. We
+ use QScriptValue::call() to call the super-class (Person) constructor:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 37
+
+ The \c{Employee} class can then be initialized as follows:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 38
+
+ When implementing the prototype object of a class, you may want to use
+ the QScriptable class, as it enables you to define the API of your
+ script class in terms of Qt properties, signals and slots, and
+ automatically handles value conversion between the Qt Script and C++
+ side.
+
+ \section2 Implementing Prototype Objects for Value-based Types
+
+ When implementing a prototype object for a value-based type --
+ e.g. QPointF -- the same general technique applies; you populate
+ a prototype object with functionality that should be shared
+ among instances. You then associate the prototype object with
+ the type by calling QScriptEngine::setDefaultPrototype(). This
+ ensures that when e.g. a value of the relevant type is returned
+ from a slot back to the script, the prototype link of the script
+ value will be initialized correctly.
+
+ When values of the custom type are stored in QVariants -- which Qt
+ Script does by default --, qscriptvalue_cast() enables you to safely
+ cast the script value to a pointer to the C++ type. This makes it
+ easy to do type-checking, and, for prototype functions that should
+ modify the underlying C++ value, lets you modify the actual value
+ contained in the script value (and not a copy of it).
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 39
+
+ \section2 Implementing Constructors for Value-based Types
+
+ You can implement a constructor function for a value-based type
+ by wrapping a native factory function. For example, the following
+ function implements a simple constructor for QPoint:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 44
+
+ In the above code we simplified things a bit, e.g. we didn't check
+ the argument count to decide which QPoint C++ constructor to use.
+ In your own constructors you have to do this type of resolution
+ yourself, i.e. by checking the number of arguments passed to the
+ native function, and/or by checking the type of the arguments and
+ converting the arguments to the desired type. If you detect a problem
+ with the arguments you may want to signal this by throwing a script
+ exception; see QScriptContext::throwError().
+
+ \section2 Managing Non-QObject-based Objects
+
+ For value-based types (e.g. QPoint), the C++ object will be destroyed when
+ the Qt Script object is garbage-collected, so managing the memory of the C++
+ object is not an issue. For QObjects, Qt Script provides several
+ alternatives for managing the underlying C++ object's lifetime; see the
+ \l{Controlling QObject Ownership} section. However, for polymorphic types
+ that don't inherit from QObject, and when you can't (or won't) wrap the type
+ in a QObject, you have to manage the lifetime of the C++ object yourself.
+
+ A behavior that's often reasonable when a Qt Script object wraps a C++
+ object, is that the C++ object is deleted when the Qt Script object is
+ garbage-collected; this is typically the case when the objects can be
+ constructed by scripts, as opposed to the application providing the scripts
+ with pre-made "environment" objects. A way of making the lifetime of the C++
+ object follow the lifetime of the Qt Script object is by using a shared
+ pointer class, such as QSharedPointer, to hold a pointer to your object;
+ when the Qt Script object containing the QSharedPointer is
+ garbage-collected, the underlying C++ object will be deleted if there are no
+ other references to the object.
+
+ The following snippet shows a constructor function that constructs
+ QXmlStreamReader objects that are stored using QSharedPointer:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 93
+
+ Prototype functions can use qscriptvalue_cast() to cast the \c this object
+ to the proper type:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 94
+
+ The prototype and constructor objects are set up in the usual way:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 95
+
+ Scripts can now construct QXmlStreamReader objects by calling the \c
+ XmlStreamReader constructor, and when the Qt Script object is
+ garbage-collected (or the script engine is destroyed), the QXmlStreamReader
+ object is destroyed as well.
+
+ \section1 Defining Custom Script Classes with QScriptClass
+
+ There are cases where neither the dynamic QObject binding provided
+ by QScriptEngine::newQObject() or the manual binding provided by
+ QScriptEngine::newFunction() is sufficient. For example, you might
+ want to implement a dynamic script proxy to an underlying object;
+ or you might want to implement an array-like class (i.e. that gives
+ special treatment to properties that are valid array indexes, and
+ to the property "length"). In such cases, you can subclass
+ QScriptClass to achieve the desired behavior.
+
+ QScriptClass allows you to handle all property access for a
+ (class of) script object through virtual get/set property functions.
+ Iteration of custom properties is also supported through the
+ QScriptClassPropertyIterator class; this means you can advertise
+ properties to be reported by for-in script statements and
+ QScriptValueIterator.
+
+ \section1 Error Handling and Debugging Facilities
+
+ Syntax errors in scripts will be reported as soon as a script is
+ evaluated; QScriptEngine::evaluate() will return a SyntaxError object
+ that you can convert to a string to get a description of the error.
+
+ The QScriptEngine::uncaughtExceptionBacktrace() function gives you
+ a human-readable backtrace of the last uncaught exception. In order
+ to get useful filename information in backtraces, you should pass
+ proper filenames to QScriptEngine::evaluate() when evaluating your
+ scripts.
+
+ Often an exception doesn't happen at the time the script is evaluated,
+ but at a later time when a function defined by the script is actually
+ executed. For C++ signal handlers, this is tricky; consider the case
+ where the clicked() signal of a button is connected to a script function,
+ and that script function causes a script exception when it is handling
+ the signal. Where is that script exception propagated to?
+
+ The solution is to connect to the QScriptEngine::signalHandlerException()
+ signal; this will give you notification when a signal handler causes
+ an exception, so that you can find out what happened and/or recover
+ from it.
+
+ In Qt 4.4 the QScriptEngineAgent class was introduced. QScriptEngineAgent
+ provides an interface for reporting low-level "events" in a script engine,
+ such as when a function is entered or when a new script statement is
+ reached. By subclassing QScriptEngineAgent you can be notified of these
+ events and perform some action, if you want. QScriptEngineAgent itself
+ doesn't provide any debugging-specific functionality (e.g. setting
+ breakpoints), but it is the basis of tools that do.
+
+ The QScriptEngineDebugger class introduced in Qt 4.5 provides a
+ \l{Qt Script Debugger Manual}{Qt Script debugger} that can be embedded
+ into your application.
+
+ \section2 Redefining print()
+
+ Qt Script provides a built-in print() function that can be useful for
+ simple debugging purposes. The built-in print() function writes to
+ standard output. You can redefine the print() function (or add your
+ own function, e.g. debug() or log()) that redirects the text to
+ somewhere else. The following code shows a custom print() that adds
+ text to a QPlainTextEdit.
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 45
+
+ The following code shows how the custom print() function may be
+ initialized and used.
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 46
+
+ A pointer to the QPlainTextEdit is stored as an internal property
+ of the script function itself, so that it can be retrieved when
+ the function is called.
+
+ \section1 Using QtScript Extensions
+
+ The QScriptEngine::importExtension() function can be used to load plugins
+ into a script engine. Plugins typically add some extra functionality to
+ the engine; for example, a plugin might add full bindings for the Qt
+ Arthur painting API, so that those classes may be used from Qt Script
+ scripts. There are currently no script plugins shipped with Qt.
+
+ If you are implementing some Qt Script functionality that you want other
+ Qt application developers to be able to use, \l{Creating QtScript Extensions}
+ {developing an extension} (e.g. by subclassing QScriptExtensionPlugin) is
+ worth looking into.
+
+ \section1 Internationalization
+
+ Since Qt 4.5, Qt Script supports internationalization of scripts by building
+ on the C++ internationalization functionality (see \l{Internationalization
+ with Qt}).
+
+ \section2 Use qsTr() for All Literal Text
+
+ Wherever your script uses "quoted text" for text that will be presented to
+ the user, ensure that it is processed by the QCoreApplication::translate()
+ function. Essentially all that is necessary to achieve this is to use
+ the qsTr() script function. Example:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 82
+
+ This accounts for 99% of the user-visible strings you're likely to write.
+
+ The qsTr() function uses the basename of the script's filename (see
+ QFileInfo::baseName()) as the translation context; if the filename is not
+ unique in your project, you should use the qsTranslate() function and pass a
+ suitable context as the first argument. Example:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 83
+
+ If you need to have translatable text completely outside a function, there
+ are two functions to help: QT_TR_NOOP() and QT_TRANSLATE_NOOP(). They merely
+ mark the text for extraction by the \c lupdate utility described below. At
+ runtime, these functions simply return the text to translate unmodified.
+
+ Example of QT_TR_NOOP():
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 84
+
+ Example of QT_TRANSLATE_NOOP():
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 85
+
+ \section2 Use String.prototype.arg() for Dynamic Text
+
+ The String.prototype.arg() function (which is modeled after QString::arg())
+ offers a simple means for substituting arguments:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 86
+
+ \section2 Produce Translations
+
+ Once you are using qsTr() and/or qsTranslate() throughout your scripts, you
+ can start producing translations of the user-visible text in your program.
+
+ The \l{Qt Linguist manual} provides further information about
+ Qt's translation tools, \e{Qt Linguist}, \c lupdate and \c
+ lrelease.
+
+ Translation of Qt Script scripts is a three-step process:
+
+ \list 1
+
+ \o Run \c lupdate to extract translatable text from the script source code
+ of the Qt application, resulting in a message file for translators (a TS
+ file). The utility recognizes qsTr(), qsTranslate() and the
+ \c{QT_TR*_NOOP()} functions described above and produces TS files
+ (usually one per language).
+
+ \o Provide translations for the source texts in the TS file, using
+ \e{Qt Linguist}. Since TS files are in XML format, you can also
+ edit them by hand.
+
+ \o Run \c lrelease to obtain a light-weight message file (a QM
+ file) from the TS file, suitable only for end use. Think of the TS
+ files as "source files", and QM files as "object files". The
+ translator edits the TS files, but the users of your application
+ only need the QM files. Both kinds of files are platform and
+ locale independent.
+
+ \endlist
+
+ Typically, you will repeat these steps for every release of your
+ application. The \c lupdate utility does its best to reuse the
+ translations from previous releases.
+
+ When running \c lupdate, you must specify the location of the script(s),
+ and the name of the TS file to produce. Examples:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 87
+
+ will extract translatable text from \c myscript.qs and create the
+ translation file \c myscript_la.qs.
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 88
+
+ will extract translatable text from all files ending with \c{.qs} in the
+ \c scripts folder and create the translation file \c scripts_la.qs.
+
+ Alternatively, you can create a separate qmake project file that sets up
+ the \c SOURCES and \c TRANSLATIONS variables appropriately; then run
+ \c lupdate with the project file as input.
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 89
+
+ When running \c lrelease, you must specify the name of the TS input
+ file; or, if you are using a qmake project file to manage script
+ translations, you specify the name of that file. \c lrelease will create
+ \c myscript_la.qm, the binary representation of the translation.
+
+ \section2 Apply Translations
+
+ In your application, you must use QTranslator::load() to load the
+ translation files appropriate for the user's language, and install them
+ using QCoreApplication::installTranslator(). Finally, you must call
+ QScriptEngine::installTranslatorFunctions() to make the script translation
+ functions (qsTr(), qsTranslate() and \c{QT_TR*_NOOP()}) available to scripts
+ that are subsequently evaluated by QScriptEngine::evaluate(). For scripts
+ that are using the qsTr() function, the proper filename must be passed as
+ second argument to QScriptEngine::evaluate().
+
+ \c linguist, \c lupdate and \c lrelease are installed in the \c bin
+ subdirectory of the base directory Qt is installed into. Click Help|Manual
+ in \e{Qt Linguist} to access the user's manual; it contains a tutorial
+ to get you started.
+
+ See also the \l{Hello Script Example}.
+
+ \section1 ECMAScript Compatibility
+
+ QtScript implements all the built-in objects and properties defined
+ in the \l{ECMA-262} standard; see the
+ \l{ECMAScript Reference}{ECMAScript reference} for an overview.
+
+ \section1 QtScript Extensions to ECMAScript
+
+ \list
+ \i \c{__proto__} \br
+ The prototype of an object (QScriptValue::prototype())
+ can be accessed through its \c{__proto__} property in script code.
+ This property has the QScriptValue::Undeletable flag set.
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 40
+
+ \i \c{Object.prototype.__defineGetter__} \br
+ This function installs a
+ getter function for a property of an object. The first argument is
+ the property name, and the second is the function to call to get
+ the value of that property. When the function is invoked, the
+ \c this object will be the object whose property is accessed.
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 41
+
+ \i \c{Object.prototype.__defineSetter__} \br
+ This function installs a
+ setter function for a property of an object. The first argument is
+ the property name, and the second is the function to call to set
+ the value of that property. When the function is invoked, the
+ \c this object will be the object whose property is accessed.
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qtscript.qdoc 42
+
+ \i \c{Function.prototype.connect} \br
+ This function connects
+ a signal to a slot. Usage of this function is described in
+ the section \l{Using Signals and Slots}.
+
+ \i \c{Function.prototype.disconnect} \br
+ This function disconnects
+ a signal from a slot. Usage of this function is described in
+ the section \l{Using Signals and Slots}.
+
+ \i \c{QObject.prototype.findChild} \br
+ This function is semantically equivalent to QObject::findChild().
+
+ \i \c{QObject.prototype.findChildren} \br
+ This function is semantically equivalent to QObject::findChildren().
+
+ \i \c{QObject.prototype.toString} \br
+ This function returns a default string representation of a QObject.
+
+ \i \c{gc} \br
+ This function invokes the garbage collector.
+
+ \i \c{Error.prototype.backtrace} \br
+ This function returns a human-readable backtrace, in the form of
+ an array of strings.
+
+ \i Error objects have the following additional properties:
+ \list
+ \i \c{lineNumber}: The line number where the error occurred.
+ \i \c{fileName}: The file name where the error occurred (if a file name
+ was passed to QScriptEngine::evaluate()).
+ \i \c{stack}: An array of objects describing the stack. Each object has
+ the following properties:
+ \list
+ \i \c{functionName}: The function name, if available.
+ \i \c{fileName}: The file name, if available.
+ \i \c{lineNumber}: The line number, if available.
+ \endlist
+ \endlist
+
+ \endlist
+
+ */
diff --git a/doc/src/session.qdoc b/doc/src/session.qdoc
deleted file mode 100644
index 3e4bff33c..000000000
--- a/doc/src/session.qdoc
+++ /dev/null
@@ -1,177 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page session.html
- \title Session Management
- \ingroup gui-programming
-
- A \e session is a group of running applications, each of which has a
- particular state. The session is controlled by a service called the \e
- session \e manager. The applications participating in the session are
- called \e{session clients}.
-
- The session manager issues commands to its clients on behalf of the
- user. These commands may cause clients to commit unsaved changes (for
- example by saving open files), to preserve their state for future
- sessions, or to terminate gracefully. The set of these operations is
- called \e session \e management.
-
- In the common case, a session consists of all applications that a
- user runs on their desktop at a time. Under Unix/X11, however, a
- session may include applications running on different computers and
- may span multiple displays.
-
- \section1 Shutting a Session Down
-
- A session is shut down by the session manager, usually on behalf of
- the user when they want to log out. A system might also perform an
- automatic shutdown in an emergency situation, for example, if power is
- about to be lost. Clearly there is a significant difference between
- these types of shutdown. During the first, the user may want to
- interact with the application, specifying exactly which files should
- be saved and which should be discarded. In the latter case, there's no
- time for interaction. There may not even be a user sitting in front of
- the machine!
-
-
- \section1 Protocols and Support on Different Platforms
-
- On Mac OS X, and Microsoft Windows versions prior to Windows 2000,
- there is nothing like complete session management for applications
- yet, i.e. no restoring of previous sessions. (Windows 2000 and XP
- provide "hibernation" where the entire memory is saved to disk and
- restored when the machine is restarted.) They do support graceful
- logouts where applications have the opportunity to cancel the process
- after getting confirmation from the user. This is the functionality
- that corresponds to the QApplication::commitData() method.
-
- X11 has supported complete session management since X11R6.
-
- \section1 Getting Session Management to Work with Qt
-
- Start by reimplementing QApplication::commitData() to
- enable your application to take part in the graceful logout process. If
- you are only targeting the Microsoft Windows platform, this is all you can
- and must provide. Ideally, your application should provide a shutdown
- dialog similar to the following:
-
- \img session.png A typical dialog on shutdown
-
- Example code for this dialog can be found in the documentation of
- QSessionManager::allowsInteraction().
-
- For complete session management (only supported on X11R6 at present),
- you must also take care of saving the application's state, and
- potentially of restoring the state in the next life cycle of the
- session. This saving is done by reimplementing
- QApplication::saveState(). All state data you are saving in this
- function, should be marked with the session identifier
- QApplication::sessionId(). This application specific identifier is
- globally unique, so no clashes will occur. (See QSessionManager for
- information on saving/restoring the state of a particular Qt
- application.)
-
- Restoration is usually done in the application's main()
- function. Check if QApplication::isSessionRestored() is \c true. If
- that's the case, use the session identifier
- QApplication::sessionId() again to access your state data and restore
- the state of the application.
-
- \bold{Important:} In order to allow the window manager to
- restore window attributes such as stacking order or geometry
- information, you must identify your top level widgets with
- unique application-wide object names (see QObject::setObjectName()). When
- restoring the application, you must ensure that all restored
- top level widgets are given the same unique names they had before.
-
- \section1 Testing and Debugging Session Management
-
- Session management support on Mac OS X and Windows is fairly limited
- due to the lack of this functionality in the operating system
- itself. Simply shut the session down and verify that your application
- behaves as expected. It may be useful to launch another application,
- usually the integrated development environment, before starting your
- application. This other application will get the shutdown message
- afterwards, thus permitting you to cancel the shutdown. Otherwise you
- would have to log in again after each test run, which is not a problem
- per se, but is time consuming.
-
- On Unix you can either use a desktop environment that supports
- standard X11R6 session management or, the recommended method, use the
- session manager reference implementation provided by the X Consortium.
- This sample manager is called \c xsm and is part of a standard X11R6
- installation. As always with X11, a useful and informative manual page
- is provided. Using \c xsm is straightforward (apart from the clumsy
- Athena-based user interface). Here's a simple approach:
-
- \list
- \i Run X11R6.
- \i Create a dot file \c .xsmstartup in your home directory which
- contains the single line
- \snippet doc/src/snippets/code/doc_src_session.qdoc 0
- This tells \c xsm that the default/failsafe session is just an xterm
- and nothing else. Otherwise \c xsm would try to invoke lots of
- clients including the windowmanager \c twm, which isn't very helpful.
- \i Now launch \c xsm from another terminal window. Both a session
- manager window and the xterm will appear. The xterm has a nice
- property that sets it apart from all the other shells you are
- currently running: within its shell, the \c SESSION_MANAGER
- environment variable points to the session manager you just started.
- \i Launch your application from the new xterm window. It will connect
- itself automatically to the session manager. You can check with the \e
- ClientList push button whether the connect was successful.
-
- \bold{Note:} Never keep the \e ClientList open when you
- start or end session managed clients! Otherwise \c xsm is likely to
- crash.
- \i Use the session manager's \e Checkpoint and \e Shutdown buttons
- with different settings and see how your application behaves. The save
- type \e local means that the clients should save their state. It
- corresponds to the QApplication::saveState() function. The \e
- global save type asks applications to save their unsaved changes in
- permanent, globally accessible storage. It invokes
- QApplication::commitData().
- \i Whenever something crashes, blame \c xsm and not Qt. \c xsm is far
- from being a usable session manager on a user's desktop. It is,
- however, stable and useful enough to serve as testing environment.
- \endlist
-*/
diff --git a/doc/src/sharedlibrary.qdoc b/doc/src/sharedlibrary.qdoc
deleted file mode 100644
index de27c439b..000000000
--- a/doc/src/sharedlibrary.qdoc
+++ /dev/null
@@ -1,186 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the Qt GUI Toolkit.
-** EDITIONS: FREE, PROFESSIONAL, ENTERPRISE
-**
-****************************************************************************/
-
-/*!
- \group deployment
- \page sharedlibrary.html
- \ingroup buildsystem
-
- \title Creating Shared Libraries
- The following sections list certain things that should be taken into
- account when creating shared libraries.
-
- \section1 Using Symbols from Shared Libraries
-
- Symbols - functions, variables or classes - contained in shared libraries
- intended to be used by \e{clients}, such as applications or other
- libraries, must be marked in a special way. These symbols are called
- \e{public symbols} that are \e{exported} or made publicly visible.
-
- The remaining symbols should not be visible from the outside. On most
- platforms, compilers will hide them by default. On some platforms, a
- special compiler option is required to hide these symbols.
-
- When compiling a shared library, it must be marked for \e{export}. To use
- the shared library from a client, some platforms may require a special
- \e{import} declaration as well.
-
- Depending on your target platform, Qt provides special macros that contain
- the necessary definitions:
- \list
- \o \c{Q_DECL_EXPORT} must be added to the declarations of symbols used
- when compiling a shared library.
- \o \c{Q_DECL_IMPORT} must be added to the declarations of symbols used
- when compiling a client that uses the shared library.
- \endlist
-
- Now, we need to ensure that the right macro is invoked -- whether we
- compile a share library itself, or just the client using the shared
- library.
- Typically, this can be solved by adding a special header.
-
- Let us assume we want to create a shared library called \e{mysharedlib}.
- A special header for this library, \c{mysharedlib_global.h}, looks like
- this:
-
- \code
- #include <QtCore/QtGlobal>
-
- #if defined(MYSHAREDLIB_LIBRARY)
- # define MYSHAREDLIB_EXPORT Q_DECL_EXPORT
- #else
- # define MYSHAREDLIB_EXPORT Q_DECL_IMPORT
- #endif
- \endcode
-
- In the \c{.pro} file of the shared library, we add:
-
- \code
- DEFINES += MYSHAREDLIB_LIBRARY
- \endcode
-
- In each header of the library, we specify the following:
-
- \code
- #include "mysharedlib_global.h"
-
- MYSHAREDLIB_EXPORT void foo();
- class MYSHAREDLIB_EXPORT MyClass...
- \endcode
- This ensures that the right macro is seen by both library and clients. We
- also use this technique in Qt's sources.
-
-
- \section1 Header File Considerations
-
- Typically, clients will include only the public header files of shared
- libraries. These libraries might be installed in a different location, when
- deployed. Therefore, it is important to exclude other internal header files
- that were used when building the shared library.
-
- For example, the library might provide a class that wraps a hardware device
- and contains a handle to that device, provided by some 3rd-party library:
-
- \code
- #include <footronics/device.h>
-
- class MyDevice {
- private:
- FOOTRONICS_DEVICE_HANDLE handle;
- };
- \endcode
-
- A similar situation arises with forms created by Qt Designer when using
- aggregation or multiple inheritance:
-
- \code
- #include "ui_widget.h"
-
- class MyWidget : public QWidget {
- private:
- Ui::MyWidget m_ui;
- };
- \endcode
-
- When deploying the library, there should be no dependency to the internal
- headers \c{footronics/device.h} or \c{ui_widget.h}.
-
- This can be avoided by making use of the \e{Pointer to implementation}
- idiom described in various C++ programming books. For classes with
- \e{value semantics}, consider using QSharedDataPointer.
-
-
- \section1 Binary compatibility
-
- For clients loading a shared library, to work correctly, the memory
- layout of the classes being used must match exactly the memory layout of
- the library version that was used to compile the client. In other words,
- the library found by the client at runtime must be \e{binary compatible}
- with the version used at compile time.
-
- This is usually not a problem if the client is a self-contained software
- package that ships all the libraries it needs.
-
- However, if the client application relies on a shared library that belongs
- to a different installation package or to the operating system, then we
- need to think of a versioning scheme for shared libraries and decide at
- which level \e{Binary compatibility} is to be maintained. For example, Qt
- libraries of the same \e{major version number} are guaranteed to be binary
- compatible.
-
- Maintaining \e{Binary compatibility} places some restrictions on the changes
- you can make to the classes. A good explanation can be found at
- \l{http://techbase.kde.org/Policies/Binary_Compatibility_Issues_With_C++}
- {KDE - Policies/Binary Compatibility Issues With C++}. These issues should
- be considered right from the start of library design.
- We recommend that the principle of \e{Information hiding} and the
- \e{Pointer to implementation} technique be used wherever possible.
-*/
diff --git a/doc/src/signalsandslots.qdoc b/doc/src/signalsandslots.qdoc
deleted file mode 100644
index 07e0ef8e9..000000000
--- a/doc/src/signalsandslots.qdoc
+++ /dev/null
@@ -1,422 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
- \page signalsandslots.html
- \title Signals and Slots
- \ingroup architecture
- \brief An overview of Qt's signals and slots inter-object
- communication mechanism.
-
- Signals and slots are used for communication between objects. The
- signals and slots mechanism is a central feature of Qt and
- probably the part that differs most from the features provided by
- other frameworks.
-
- \tableofcontents
-
- \section1 Introduction
-
- In GUI programming, when we change one widget, we often want
- another widget to be notified. More generally, we want objects of
- any kind to be able to communicate with one another. For example,
- if a user clicks a \gui{Close} button, we probably want the
- window's \l{QWidget::close()}{close()} function to be called.
-
- Older toolkits achieve this kind of communication using
- callbacks. A callback is a pointer to a function, so if you want
- a processing function to notify you about some event you pass a
- pointer to another function (the callback) to the processing
- function. The processing function then calls the callback when
- appropriate. Callbacks have two fundamental flaws: Firstly, they
- are not type-safe. We can never be certain that the processing
- function will call the callback with the correct arguments.
- Secondly, the callback is strongly coupled to the processing
- function since the processing function must know which callback
- to call.
-
- \section1 Signals and Slots
-
- In Qt, we have an alternative to the callback technique: We use
- signals and slots. A signal is emitted when a particular event
- occurs. Qt's widgets have many predefined signals, but we can
- always subclass widgets to add our own signals to them. A slot
- is a function that is called in response to a particular signal.
- Qt's widgets have many pre-defined slots, but it is common
- practice to subclass widgets and add your own slots so that you
- can handle the signals that you are interested in.
-
- \img abstract-connections.png
- \omit
- \caption An abstract view of some signals and slots connections
- \endomit
-
- The signals and slots mechanism is type safe: The signature of a
- signal must match the signature of the receiving slot. (In fact a
- slot may have a shorter signature than the signal it receives
- because it can ignore extra arguments.) Since the signatures are
- compatible, the compiler can help us detect type mismatches.
- Signals and slots are loosely coupled: A class which emits a
- signal neither knows nor cares which slots receive the signal.
- Qt's signals and slots mechanism ensures that if you connect a
- signal to a slot, the slot will be called with the signal's
- parameters at the right time. Signals and slots can take any
- number of arguments of any type. They are completely type safe.
-
- All classes that inherit from QObject or one of its subclasses
- (e.g., QWidget) can contain signals and slots. Signals are emitted by
- objects when they change their state in a way that may be interesting
- to other objects. This is all the object does to communicate. It
- does not know or care whether anything is receiving the signals it
- emits. This is true information encapsulation, and ensures that the
- object can be used as a software component.
-
- Slots can be used for receiving signals, but they are also normal
- member functions. Just as an object does not know if anything receives
- its signals, a slot does not know if it has any signals connected to
- it. This ensures that truly independent components can be created with
- Qt.
-
- You can connect as many signals as you want to a single slot, and a
- signal can be connected to as many slots as you need. It is even
- possible to connect a signal directly to another signal. (This will
- emit the second signal immediately whenever the first is emitted.)
-
- Together, signals and slots make up a powerful component programming
- mechanism.
-
- \section1 A Small Example
-
- A minimal C++ class declaration might read:
-
- \snippet doc/src/snippets/signalsandslots/signalsandslots.h 0
-
- A small QObject-based class might read:
-
- \snippet doc/src/snippets/signalsandslots/signalsandslots.h 1
- \codeline
- \snippet doc/src/snippets/signalsandslots/signalsandslots.h 2
- \snippet doc/src/snippets/signalsandslots/signalsandslots.h 3
-
- The QObject-based version has the same internal state, and provides
- public methods to access the state, but in addition it has support
- for component programming using signals and slots. This class can
- tell the outside world that its state has changed by emitting a
- signal, \c{valueChanged()}, and it has a slot which other objects
- can send signals to.
-
- All classes that contain signals or slots must mention
- Q_OBJECT at the top of their declaration. They must also derive
- (directly or indirectly) from QObject.
-
- Slots are implemented by the application programmer.
- Here is a possible implementation of the \c{Counter::setValue()}
- slot:
-
- \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 0
-
- The \c{emit} line emits the signal \c valueChanged() from the
- object, with the new value as argument.
-
- In the following code snippet, we create two \c Counter objects
- and connect the first object's \c valueChanged() signal to the
- second object's \c setValue() slot using QObject::connect():
-
- \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 1
- \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 2
- \codeline
- \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 3
- \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 4
-
- Calling \c{a.setValue(12)} makes \c{a} emit a
- \c{valueChanged(12)} signal, which \c{b} will receive in its
- \c{setValue()} slot, i.e. \c{b.setValue(12)} is called. Then
- \c{b} emits the same \c{valueChanged()} signal, but since no slot
- has been connected to \c{b}'s \c{valueChanged()} signal, the
- signal is ignored.
-
- Note that the \c{setValue()} function sets the value and emits
- the signal only if \c{value != m_value}. This prevents infinite
- looping in the case of cyclic connections (e.g., if
- \c{b.valueChanged()} were connected to \c{a.setValue()}).
-
- By default, for every connection you make, a signal is emitted;
- two signals are emitted for duplicate connections. You can break
- all of these connections with a single disconnect() call.
- If you pass the Qt::UniqueConnection \a type, the connection will only
- be made if it is not a duplicate. If there is already a duplicate
- (exact same signal to the exact same slot on the same objects),
- the connection will fail and connect will return false
-
- This example illustrates that objects can work together without needing to
- know any information about each other. To enable this, the objects only
- need to be connected together, and this can be achieved with some simple
- QObject::connect() function calls, or with \c{uic}'s
- \l{Using a Designer UI File in Your Application#Automatic Connections}
- {automatic connections} feature.
-
- \section1 Building the Example
-
- The C++ preprocessor changes or removes the \c{signals},
- \c{slots}, and \c{emit} keywords so that the compiler is
- presented with standard C++.
-
- By running the \l moc on class definitions that contain signals
- or slots, a C++ source file is produced which should be compiled
- and linked with the other object files for the application. If
- you use \l qmake, the makefile rules to automatically invoke \c
- moc will be added to your project's makefile.
-
- \section1 Signals
-
- Signals are emitted by an object when its internal state has changed
- in some way that might be interesting to the object's client or owner.
- Only the class that defines a signal and its subclasses can emit the
- signal.
-
- When a signal is emitted, the slots connected to it are usually
- executed immediately, just like a normal function call. When this
- happens, the signals and slots mechanism is totally independent of
- any GUI event loop. Execution of the code following the \c emit
- statement will occur once all slots have returned. The situation is
- slightly different when using \l{Qt::ConnectionType}{queued
- connections}; in such a case, the code following the \c emit keyword
- will continue immediately, and the slots will be executed later.
-
- If several slots are connected to one signal, the slots will be
- executed one after the other, in the order they have been connected,
- when the signal is emitted.
-
- Signals are automatically generated by the \l moc and must not be
- implemented in the \c .cpp file. They can never have return types
- (i.e. use \c void).
-
- A note about arguments: Our experience shows that signals and slots
- are more reusable if they do not use special types. If
- QScrollBar::valueChanged() were to use a special type such as the
- hypothetical QScrollBar::Range, it could only be connected to
- slots designed specifically for QScrollBar. Connecting different
- input widgets together would be impossible.
-
- \section1 Slots
-
- A slot is called when a signal connected to it is emitted. Slots are
- normal C++ functions and can be called normally; their only special
- feature is that signals can be connected to them.
-
- Since slots are normal member functions, they follow the normal C++
- rules when called directly. However, as slots, they can be invoked
- by any component, regardless of its access level, via a signal-slot
- connection. This means that a signal emitted from an instance of an
- arbitrary class can cause a private slot to be invoked in an instance
- of an unrelated class.
-
- You can also define slots to be virtual, which we have found quite
- useful in practice.
-
- Compared to callbacks, signals and slots are slightly slower
- because of the increased flexibility they provide, although the
- difference for real applications is insignificant. In general,
- emitting a signal that is connected to some slots, is
- approximately ten times slower than calling the receivers
- directly, with non-virtual function calls. This is the overhead
- required to locate the connection object, to safely iterate over
- all connections (i.e. checking that subsequent receivers have not
- been destroyed during the emission), and to marshall any
- parameters in a generic fashion. While ten non-virtual function
- calls may sound like a lot, it's much less overhead than any \c
- new or \c delete operation, for example. As soon as you perform a
- string, vector or list operation that behind the scene requires
- \c new or \c delete, the signals and slots overhead is only
- responsible for a very small proportion of the complete function
- call costs.
-
- The same is true whenever you do a system call in a slot; or
- indirectly call more than ten functions. On an i586-500, you can
- emit around 2,000,000 signals per second connected to one
- receiver, or around 1,200,000 per second connected to two
- receivers. The simplicity and flexibility of the signals and
- slots mechanism is well worth the overhead, which your users
- won't even notice.
-
- Note that other libraries that define variables called \c signals
- or \c slots may cause compiler warnings and errors when compiled
- alongside a Qt-based application. To solve this problem, \c
- #undef the offending preprocessor symbol.
-
- \section1 Meta-Object Information
-
- The meta-object compiler (\l moc) parses the class declaration in
- a C++ file and generates C++ code that initializes the
- meta-object. The meta-object contains the names of all the signal
- and slot members, as well as pointers to these functions.
-
- The meta-object contains additional information such as the
- object's \link QObject::className() class name\endlink. You can
- also check if an object \link QObject::inherits()
- inherits\endlink a specific class, for example:
-
- \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 5
- \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 6
-
- The meta-object information is also used by qobject_cast<T>(), which
- is similar to QObject::inherits() but is less error-prone:
-
- \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 7
-
- See \l{Meta-Object System} for more information.
-
- \section1 A Real Example
-
- Here is a simple commented example of a widget.
-
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 0
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 1
- \codeline
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 2
- \codeline
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 3
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 4
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 5
-
- \c LcdNumber inherits QObject, which has most of the signal-slot
- knowledge, via QFrame and QWidget. It is somewhat similar to the
- built-in QLCDNumber widget.
-
- The Q_OBJECT macro is expanded by the preprocessor to declare
- several member functions that are implemented by the \c{moc}; if
- you get compiler errors along the lines of "undefined reference
- to vtable for \c{LcdNumber}", you have probably forgotten to
- \l{moc}{run the moc} or to include the moc output in the link
- command.
-
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 6
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 7
-
- It's not obviously relevant to the moc, but if you inherit
- QWidget you almost certainly want to have the \c parent argument
- in your constructor and pass it to the base class's constructor.
-
- Some destructors and member functions are omitted here; the \c
- moc ignores member functions.
-
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 8
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 9
-
- \c LcdNumber emits a signal when it is asked to show an impossible
- value.
-
- If you don't care about overflow, or you know that overflow
- cannot occur, you can ignore the \c overflow() signal, i.e. don't
- connect it to any slot.
-
- If on the other hand you want to call two different error
- functions when the number overflows, simply connect the signal to
- two different slots. Qt will call both (in arbitrary order).
-
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 10
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 11
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 12
- \codeline
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 13
-
- A slot is a receiving function used to get information about
- state changes in other widgets. \c LcdNumber uses it, as the code
- above indicates, to set the displayed number. Since \c{display()}
- is part of the class's interface with the rest of the program,
- the slot is public.
-
- Several of the example programs connect the
- \l{QScrollBar::valueChanged()}{valueChanged()} signal of a
- QScrollBar to the \c display() slot, so the LCD number
- continuously shows the value of the scroll bar.
-
- Note that \c display() is overloaded; Qt will select the
- appropriate version when you connect a signal to the slot. With
- callbacks, you'd have to find five different names and keep track
- of the types yourself.
-
- Some irrelevant member functions have been omitted from this
- example.
-
- \section1 Advanced Signals and Slots Usage
-
- For cases where you may require information on the sender of the
- signal, Qt provides the QObject::sender() function, which returns
- a pointer to the object that sent the signal.
-
- The QSignalMapper class is provided for situations where many
- signals are connected to the same slot and the slot needs to
- handle each signal differently.
-
- Suppose you have three push buttons that determine which file you
- will open: "Tax File", "Accounts File", or "Report File".
-
- In order to open the correct file, you use QSignalMapper::setMapping() to
- map all the clicked() signals to a QSignalMapper object. Then you connect
- the file's QPushButton::clicked() signal to the QSignalMapper::map() slot.
-
- \snippet doc/src/snippets/signalmapper/filereader.cpp 0
-
- Then, you connect the \l{QSignalMapper::}{mapped()} signal to
- \c{readFile()} where a different file will be opened, depending on
- which push button is pressed.
-
- \snippet doc/src/snippets/signalmapper/filereader.cpp 1
-
- \sa {Meta-Object System}, {Qt's Property System}
-
- \target 3rd Party Signals and Slots
- \section2 Using Qt with 3rd Party Signals and Slots
-
- It is possible to use Qt with a 3rd party signal/slot mechanism.
- You can even use both mechanisms in the same project. Just add the
- following line to your qmake project (.pro) file.
-
- \snippet doc/src/snippets/code/doc_src_containers.qdoc 22
-
- It tells Qt not to define the moc keywords \c{signals}, \c{slots},
- and \c{emit}, because these names will be used by a 3rd party
- library, e.g. Boost. Then to continue using Qt signals and slots
- with the \c{no_keywords} flag, simply replace all uses of the Qt
- moc keywords in your sources with the corresponding Qt macros
- Q_SIGNALS (or Q_SIGNAL), Q_SLOTS (or Q_SLOT), and Q_EMIT.
-*/
diff --git a/doc/src/snippets/accessibilityfactorysnippet.cpp b/doc/src/snippets/accessibilityfactorysnippet.cpp
index 10795c0fe..710ad8e3b 100644
--- a/doc/src/snippets/accessibilityfactorysnippet.cpp
+++ b/doc/src/snippets/accessibilityfactorysnippet.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/accessibilitypluginsnippet.cpp b/doc/src/snippets/accessibilitypluginsnippet.cpp
index f3357152d..0029249b4 100644
--- a/doc/src/snippets/accessibilitypluginsnippet.cpp
+++ b/doc/src/snippets/accessibilitypluginsnippet.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/accessibilityslidersnippet.cpp b/doc/src/snippets/accessibilityslidersnippet.cpp
index 266bcef0c..66215e097 100644
--- a/doc/src/snippets/accessibilityslidersnippet.cpp
+++ b/doc/src/snippets/accessibilityslidersnippet.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/alphachannel.cpp b/doc/src/snippets/alphachannel.cpp
index f38c57ef4..55036a8c4 100644
--- a/doc/src/snippets/alphachannel.cpp
+++ b/doc/src/snippets/alphachannel.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/animation/sequential/main.cpp b/doc/src/snippets/animation/sequential/main.cpp
index aff8f2915..eca4b3d27 100644
--- a/doc/src/snippets/animation/sequential/main.cpp
+++ b/doc/src/snippets/animation/sequential/main.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
#include <QApplication>
#include <QLabel>
#include <QPropertyAnimation>
diff --git a/doc/src/snippets/animation/sequential/tracer.cpp b/doc/src/snippets/animation/sequential/tracer.cpp
index 49bd51e8e..a4cd7ef52 100644
--- a/doc/src/snippets/animation/sequential/tracer.cpp
+++ b/doc/src/snippets/animation/sequential/tracer.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
#include <QAbstractAnimation>
#include <QDebug>
#include <QPoint>
diff --git a/doc/src/snippets/animation/sequential/tracer.h b/doc/src/snippets/animation/sequential/tracer.h
index 1adb01848..53c2c1111 100644
--- a/doc/src/snippets/animation/sequential/tracer.h
+++ b/doc/src/snippets/animation/sequential/tracer.h
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
#ifndef TRACER_H
#define TRACER_H
diff --git a/doc/src/snippets/audio/main.cpp b/doc/src/snippets/audio/main.cpp
new file mode 100644
index 000000000..0910865dc
--- /dev/null
+++ b/doc/src/snippets/audio/main.cpp
@@ -0,0 +1,148 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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 <QtGui>
+
+#include <QAudioOutput>
+#include <QAudioDeviceInfo>
+#include <QAudioInput>
+
+class Window2 : public QWidget
+{
+ Q_OBJECT
+
+public slots:
+//![0]
+ void stateChanged(QAudio::State newState)
+ {
+ switch(newState) {
+ case QAudio::StopState:
+ if (input->error() != QAudio::NoError) {
+ // Error handling
+ } else {
+
+ }
+ break;
+//![0]
+ default:
+ ;
+ }
+ }
+
+private:
+ QAudioInput *input;
+
+};
+
+class Window : public QWidget
+{
+ Q_OBJECT
+
+public:
+ Window()
+ {
+ output = new QAudioOutput;
+ connect(output, SIGNAL(stateChanged(QAudio::State)),
+ this, SLOT(stateChanged(QAudio::State)));
+ }
+
+private:
+ void setupFormat()
+ {
+//![1]
+ QAudioFormat format;
+ format.setFrequency(44100);
+//![1]
+ format.setChannels(2);
+ format.setSampleSize(16);
+ format.setCodec("audio/pcm");
+ format.setByteOrder(QAudioFormat::LittleEndian);
+//![2]
+ format.setSampleType(QAudioFormat::SignedInt);
+
+ QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice());
+
+ if (!info.isFormatSupported(format))
+ format = info.nearestFormat(format);
+//![2]
+ }
+
+public slots:
+//![3]
+ void stateChanged(QAudio::State newState)
+ {
+ switch (newState) {
+ case QAudio::StopState:
+ if (output->error() != QAudio::NoError) {
+ // Do your error handlin
+ } else {
+ // Normal stop
+ }
+ break;
+//![3]
+
+ // Handle
+ case QAudio::ActiveState:
+ // Handle active state...
+ break;
+ break;
+ default:
+ ;
+ }
+ }
+
+private:
+ QAudioOutput *output;
+};
+
+int main(int argv, char **args)
+{
+ QApplication app(argv, args);
+
+ Window window;
+ window.show();
+
+ return app.exec();
+}
+
+
+#include "main.moc"
+
diff --git a/doc/src/snippets/audioeffects.cpp b/doc/src/snippets/audioeffects.cpp
index febf34975..c9ccf4b1a 100644
--- a/doc/src/snippets/audioeffects.cpp
+++ b/doc/src/snippets/audioeffects.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
#include <QtGui>
#include <phonon/audiooutput.h>
@@ -6,7 +47,6 @@
#include <phonon/effect.h>
#include <phonon/effectwidget.h>
-
int main(int argv, char **args)
{
QApplication app(argv, args);
@@ -22,7 +62,7 @@ int main(int argv, char **args)
QList<Phonon::EffectDescription> effectDescriptions =
Phonon::BackendCapabilities::availableAudioEffects();
Phonon::EffectDescription effectDescription = effectDescriptions.at(4);
-
+
Phonon::Path path = Phonon::createPath(mediaObject, audioOutput);
//! [1]
@@ -35,7 +75,7 @@ int main(int argv, char **args)
//! [1]
mediaObject->play();
-
+
effectWidget->setWindowTitle("Effect Name: " + effectDescription.name());
app.exec();
diff --git a/doc/src/snippets/brush/brush.cpp b/doc/src/snippets/brush/brush.cpp
index 672d6846b..cc4fb19cd 100644
--- a/doc/src/snippets/brush/brush.cpp
+++ b/doc/src/snippets/brush/brush.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/brush/gradientcreationsnippet.cpp b/doc/src/snippets/brush/gradientcreationsnippet.cpp
index a74c3c1f7..f18930068 100644
--- a/doc/src/snippets/brush/gradientcreationsnippet.cpp
+++ b/doc/src/snippets/brush/gradientcreationsnippet.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/brushstyles/main.cpp b/doc/src/snippets/brushstyles/main.cpp
index 32d47ed25..9c3da7fa6 100644
--- a/doc/src/snippets/brushstyles/main.cpp
+++ b/doc/src/snippets/brushstyles/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/brushstyles/renderarea.cpp b/doc/src/snippets/brushstyles/renderarea.cpp
index 18356cd97..e676421c5 100644
--- a/doc/src/snippets/brushstyles/renderarea.cpp
+++ b/doc/src/snippets/brushstyles/renderarea.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/brushstyles/renderarea.h b/doc/src/snippets/brushstyles/renderarea.h
index 096f05cc2..8bbe5bd2b 100644
--- a/doc/src/snippets/brushstyles/renderarea.h
+++ b/doc/src/snippets/brushstyles/renderarea.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/brushstyles/stylewidget.cpp b/doc/src/snippets/brushstyles/stylewidget.cpp
index 9593daebe..ba538ff19 100644
--- a/doc/src/snippets/brushstyles/stylewidget.cpp
+++ b/doc/src/snippets/brushstyles/stylewidget.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/brushstyles/stylewidget.h b/doc/src/snippets/brushstyles/stylewidget.h
index 2acf8a4f0..516c9189c 100644
--- a/doc/src/snippets/brushstyles/stylewidget.h
+++ b/doc/src/snippets/brushstyles/stylewidget.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/buffer/buffer.cpp b/doc/src/snippets/buffer/buffer.cpp
index 93e75d52a..541506132 100644
--- a/doc/src/snippets/buffer/buffer.cpp
+++ b/doc/src/snippets/buffer/buffer.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/clipboard/clipwindow.cpp b/doc/src/snippets/clipboard/clipwindow.cpp
index 55ca887c1..6b74d4a51 100644
--- a/doc/src/snippets/clipboard/clipwindow.cpp
+++ b/doc/src/snippets/clipboard/clipwindow.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/clipboard/clipwindow.h b/doc/src/snippets/clipboard/clipwindow.h
index 7526a8290..bb9187dfe 100644
--- a/doc/src/snippets/clipboard/clipwindow.h
+++ b/doc/src/snippets/clipboard/clipwindow.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/clipboard/main.cpp b/doc/src/snippets/clipboard/main.cpp
index 6a6a6fcc3..94dfefa91 100644
--- a/doc/src/snippets/clipboard/main.cpp
+++ b/doc/src/snippets/clipboard/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc.src.qtscripttools.qdoc b/doc/src/snippets/code/doc.src.qtscripttools.qdoc
index c691f177e..ae6ea378b 100644
--- a/doc/src/snippets/code/doc.src.qtscripttools.qdoc
+++ b/doc/src/snippets/code/doc.src.qtscripttools.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#include <QtScriptTools>
//! [0]
diff --git a/doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc b/doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc
index df1d5425a..dd5ced756 100644
--- a/doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc
+++ b/doc/src/snippets/code/doc_src_activeqt-dumpcpp.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Outlook::Application *outlook = new Outlook::Application;
//! [0]
diff --git a/doc/src/snippets/code/doc_src_appicon.qdoc b/doc/src/snippets/code/doc_src_appicon.qdoc
index c8883fe38..22b1336dd 100644
--- a/doc/src/snippets/code/doc_src_appicon.qdoc
+++ b/doc/src/snippets/code/doc_src_appicon.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
IDI_ICON1 ICON DISCARDABLE "myappico.ico"
//! [0]
@@ -21,3 +62,7 @@ kde-config --path icon
//! [4]
gnome-config --datadir
//! [4]
+
+//! [5]
+ICON = myapp.svg
+//! [5]
diff --git a/doc/src/snippets/code/doc_src_assistant-manual.qdoc b/doc/src/snippets/code/doc_src_assistant-manual.qdoc
index 383bd618e..700d75523 100644
--- a/doc/src/snippets/code/doc_src_assistant-manual.qdoc
+++ b/doc/src/snippets/code/doc_src_assistant-manual.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
assistant -collectionFile file
//! [0]
@@ -17,7 +58,7 @@ assistant -collectionFile file
<cacheDirectory>mycompany/myapplication</cacheDirectory>
<aboutMenuText>
<text>About My Application</text>
- <text language="de">Über meine Applikation...</text>
+ <text language="de">Ãœber meine Applikation...</text>
</aboutMenuText>
<aboutDialog>
<file>about.txt</file>
@@ -54,8 +95,7 @@ if (!process->waitForStarted())
//! [3]
QByteArray ba;
-ba.append("setSource qthelp://com.mycompany.1_0_0/doc/index.html");
-ba.append('\0');
+ba.append("setSource qthelp://com.mycompany.1_0_0/doc/index.html\n");
process->write(ba);
//! [3]
@@ -64,8 +104,7 @@ process->write(ba);
QByteArray ba;
ba.append("hide bookmarks;");
ba.append("hide index;");
-ba.append("setSource qthelp://com.mycompany.1_0_0/doc/index.html");
-ba.append('\0');
+ba.append("setSource qthelp://com.mycompany.1_0_0/doc/index.html\n");
process->write(ba);
//! [4]
diff --git a/doc/src/snippets/code/doc_src_atomic-operations.qdoc b/doc/src/snippets/code/doc_src_atomic-operations.qdoc
index acda5e413..e641193e9 100644
--- a/doc/src/snippets/code/doc_src_atomic-operations.qdoc
+++ b/doc/src/snippets/code/doc_src_atomic-operations.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
if (*ptr == expected) {
*ptr = newval;
diff --git a/doc/src/snippets/code/doc_src_compiler-notes.qdoc b/doc/src/snippets/code/doc_src_compiler-notes.qdoc
index 12095d0c3..fcbdeb7d2 100644
--- a/doc/src/snippets/code/doc_src_compiler-notes.qdoc
+++ b/doc/src/snippets/code/doc_src_compiler-notes.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QTDIR=C:\Progra~1\Qt
//! [0]
diff --git a/doc/src/snippets/code/doc_src_containers.qdoc b/doc/src/snippets/code/doc_src_containers.qdoc
index 9d6ba8dbb..ae707bed2 100644
--- a/doc/src/snippets/code/doc_src_containers.qdoc
+++ b/doc/src/snippets/code/doc_src_containers.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
class Employee
{
diff --git a/doc/src/snippets/code/doc_src_coordsys.qdoc b/doc/src/snippets/code/doc_src_coordsys.qdoc
index 4674e753b..65ece85a9 100644
--- a/doc/src/snippets/code/doc_src_coordsys.qdoc
+++ b/doc/src/snippets/code/doc_src_coordsys.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QPainter painter(this);
diff --git a/doc/src/snippets/code/doc_src_debug.qdoc b/doc/src/snippets/code/doc_src_debug.qdoc
index 0e8a1c52d..aff1239fa 100644
--- a/doc/src/snippets/code/doc_src_debug.qdoc
+++ b/doc/src/snippets/code/doc_src_debug.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
qDebug() << "Widget" << widget << "at position" << widget->pos();
//! [0]
diff --git a/doc/src/snippets/code/doc_src_deployment.qdoc b/doc/src/snippets/code/doc_src_deployment.qdoc
index b8bf57106..2d6a78fd5 100644
--- a/doc/src/snippets/code/doc_src_deployment.qdoc
+++ b/doc/src/snippets/code/doc_src_deployment.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
cd /path/to/Qt
./configure -static -prefix /path/to/Qt <other parameters>
@@ -412,3 +453,44 @@ CONFIG+=x86 ppc
//! [54]
qApp->addLibraryPath("C:/customPath/plugins");
//! [54]
+
+//! [55]
+cd examples\widgets\wiggly
+//! [55]
+
+//! [56]
+vendorinfo = \
+ "%{\"Example Localized Vendor\"}" \
+ ":\"Example Vendor\""
+
+default_deployment.pkg_prerules = vendorinfo
+//! [56]
+
+//! [57]
+supported_platforms = \
+ "; This demo only supports S60 5.0" \
+ "[0x1028315F],0,0,0,{\"S60ProductID\"}"
+
+default_deployment.pkg_prerules += supported_platforms
+//! [57]
+
+//! [58]
+embedded_deployments = \
+ "; Embed Open C dependencies" \
+ "@\"$${EPOCROOT}nokia_plugin/openc/s60opencsis/pips_s60_1_6_SS.sis\",(0x20013851)" \
+ "@\"$${EPOCROOT}nokia_plugin/openc/s60opencsis/openc_ssl_s60_1_6_SS.sis\",(0x200110CB)" \
+ "@\"$${EPOCROOT}nokia_plugin/opencpp/s60opencppsis/STDCPP_s60_1_6_SS.sis\",(0x2000F866)" \
+ "; Embed Qt dependencies" \
+ "@\"$$[QT_INSTALL_PREFIX]/qt_rndsigned.sis\",(0x2001E61C)"
+
+default_deployment.pkg_prerules += embedded_deployments
+//! [58]
+
+//! [59]
+qmake
+make release-gcce
+//! [59]
+
+//! [60]
+make sis
+//! [60] \ No newline at end of file
diff --git a/doc/src/snippets/code/doc_src_designer-manual.qdoc b/doc/src/snippets/code/doc_src_designer-manual.qdoc
index 673081534..d7f28fcef 100644
--- a/doc/src/snippets/code/doc_src_designer-manual.qdoc
+++ b/doc/src/snippets/code/doc_src_designer-manual.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
CONFIG += uitools
//! [0]
diff --git a/doc/src/snippets/code/doc_src_dnd.qdoc b/doc/src/snippets/code/doc_src_dnd.qdoc
index 40df804a6..a889564be 100644
--- a/doc/src/snippets/code/doc_src_dnd.qdoc
+++ b/doc/src/snippets/code/doc_src_dnd.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
void MyQt3Widget::customStartDragFunction()
{
diff --git a/doc/src/snippets/code/doc_src_emb-charinput.qdoc b/doc/src/snippets/code/doc_src_emb-charinput.qdoc
index f6b33fec4..262ef0019 100644
--- a/doc/src/snippets/code/doc_src_emb-charinput.qdoc
+++ b/doc/src/snippets/code/doc_src_emb-charinput.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
./configure -help
//! [0]
diff --git a/doc/src/snippets/code/doc_src_emb-crosscompiling.qdoc b/doc/src/snippets/code/doc_src_emb-crosscompiling.qdoc
index 3791bfc26..c60c9d3fb 100644
--- a/doc/src/snippets/code/doc_src_emb-crosscompiling.qdoc
+++ b/doc/src/snippets/code/doc_src_emb-crosscompiling.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
export PATH=path/to/cross/compiler:$PATH
//! [0]
diff --git a/doc/src/snippets/code/doc_src_emb-envvars.qdoc b/doc/src/snippets/code/doc_src_emb-envvars.qdoc
index c242ff3ca..60355568c 100644
--- a/doc/src/snippets/code/doc_src_emb-envvars.qdoc
+++ b/doc/src/snippets/code/doc_src_emb-envvars.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
export QWS_DISPLAY=<driver>[:<driver specific options>]...
[:<display num>]
diff --git a/doc/src/snippets/code/doc_src_emb-features.qdoc b/doc/src/snippets/code/doc_src_emb-features.qdoc
index e64a0ae42..27a18fbce 100644
--- a/doc/src/snippets/code/doc_src_emb-features.qdoc
+++ b/doc/src/snippets/code/doc_src_emb-features.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
configure.exe -D QT_NO_THREAD
//! [0]
diff --git a/doc/src/snippets/code/doc_src_emb-fonts.qdoc b/doc/src/snippets/code/doc_src_emb-fonts.qdoc
index b39cb6f19..e37281ed3 100644
--- a/doc/src/snippets/code/doc_src_emb-fonts.qdoc
+++ b/doc/src/snippets/code/doc_src_emb-fonts.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
name file renderer italic weight size flags
//! [0]
diff --git a/doc/src/snippets/code/doc_src_emb-install.qdoc b/doc/src/snippets/code/doc_src_emb-install.qdoc
index fe536149d..1a74523f8 100644
--- a/doc/src/snippets/code/doc_src_emb-install.qdoc
+++ b/doc/src/snippets/code/doc_src_emb-install.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
cd <anywhere>
gunzip qt-embedded-linux-commercial-src-%VERSION%.tar.gz
diff --git a/doc/src/snippets/code/doc_src_emb-performance.qdoc b/doc/src/snippets/code/doc_src_emb-performance.qdoc
index 7dcba12aa..191184e20 100644
--- a/doc/src/snippets/code/doc_src_emb-performance.qdoc
+++ b/doc/src/snippets/code/doc_src_emb-performance.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
./configure -static
//! [0]
diff --git a/doc/src/snippets/code/doc_src_emb-pointer.qdoc b/doc/src/snippets/code/doc_src_emb-pointer.qdoc
index 37eb9c68f..4f9dd151a 100644
--- a/doc/src/snippets/code/doc_src_emb-pointer.qdoc
+++ b/doc/src/snippets/code/doc_src_emb-pointer.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
<qtopia-root-dir>/qtopiacore/qt/configure -embedded -help |grep -a1 mouse
//! [0]
diff --git a/doc/src/snippets/code/doc_src_emb-qvfb.qdoc b/doc/src/snippets/code/doc_src_emb-qvfb.qdoc
index 827c84a52..999eaa50e 100644
--- a/doc/src/snippets/code/doc_src_emb-qvfb.qdoc
+++ b/doc/src/snippets/code/doc_src_emb-qvfb.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
cd path/to/QtEmbedded
./configure -qvfb
diff --git a/doc/src/snippets/code/doc_src_emb-running.qdoc b/doc/src/snippets/code/doc_src_emb-running.qdoc
index b15cfc1a1..37f262b9d 100644
--- a/doc/src/snippets/code/doc_src_emb-running.qdoc
+++ b/doc/src/snippets/code/doc_src_emb-running.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
cd path/to/QtEmbedded/demos/textedit
./textedit -qws
diff --git a/doc/src/snippets/code/doc_src_emb-vnc.qdoc b/doc/src/snippets/code/doc_src_emb-vnc.qdoc
index c35274f3f..be7af5959 100644
--- a/doc/src/snippets/code/doc_src_emb-vnc.qdoc
+++ b/doc/src/snippets/code/doc_src_emb-vnc.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
cd path/to/QtEmbedded
./configure -qt-gfx-vnc
diff --git a/doc/src/snippets/code/doc_src_examples_activeqt_comapp.qdoc b/doc/src/snippets/code/doc_src_examples_activeqt_comapp.qdoc
index 0414e5016..8eb478a28 100644
--- a/doc/src/snippets/code/doc_src_examples_activeqt_comapp.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_activeqt_comapp.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Private Application As comappLib.Application
Private MyApp As Boolean
diff --git a/doc/src/snippets/code/doc_src_examples_activeqt_dotnet.qdoc b/doc/src/snippets/code/doc_src_examples_activeqt_dotnet.qdoc
index 3bdf9fa5f..b9cab3175 100644
--- a/doc/src/snippets/code/doc_src_examples_activeqt_dotnet.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_activeqt_dotnet.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
' VB is case insensitive, but our C++ controls are not.
' Me.resetButton.enabled = True
diff --git a/doc/src/snippets/code/doc_src_examples_activeqt_menus.qdoc b/doc/src/snippets/code/doc_src_examples_activeqt_menus.qdoc
index 8c9165ab6..af5ad3c8f 100644
--- a/doc/src/snippets/code/doc_src_examples_activeqt_menus.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_activeqt_menus.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
<object ID="QMenus" CLASSID="CLSID:4dc3f340-a6f7-44e4-a79b-3e9217695fbd"
CODEBASE="http://qt.nokia.com/demos/menusax.cab">
diff --git a/doc/src/snippets/code/doc_src_examples_ahigl.qdoc b/doc/src/snippets/code/doc_src_examples_ahigl.qdoc
deleted file mode 100644
index bf29cdaab..000000000
--- a/doc/src/snippets/code/doc_src_examples_ahigl.qdoc
+++ /dev/null
@@ -1,8 +0,0 @@
-//! [0]
-myApplication -qws -display ahigl
-//! [0]
-
-
-//! [1]
-myApplication -qws -display ahigl
-//! [1]
diff --git a/doc/src/snippets/code/doc_src_examples_application.qdoc b/doc/src/snippets/code/doc_src_examples_application.qdoc
index 85e04f71b..4143387ad 100644
--- a/doc/src/snippets/code/doc_src_examples_application.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_application.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
application -style=windows
application -style=motif
diff --git a/doc/src/snippets/code/doc_src_examples_arrowpad.qdoc b/doc/src/snippets/code/doc_src_examples_arrowpad.qdoc
index ba7f8eb97..d5864a8a9 100644
--- a/doc/src/snippets/code/doc_src_examples_arrowpad.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_arrowpad.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
qApp->translate("ArrowPad", x)
//! [0]
diff --git a/doc/src/snippets/code/doc_src_examples_containerextension.qdoc b/doc/src/snippets/code/doc_src_examples_containerextension.qdoc
index 299c0dc74..2cb19c810 100644
--- a/doc/src/snippets/code/doc_src_examples_containerextension.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_containerextension.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
target.path = $$[QT_INSTALL_PLUGINS]/designer
INSTALLS += target
diff --git a/doc/src/snippets/code/doc_src_examples_customwidgetplugin.qdoc b/doc/src/snippets/code/doc_src_examples_customwidgetplugin.qdoc
index 299c0dc74..2cb19c810 100644
--- a/doc/src/snippets/code/doc_src_examples_customwidgetplugin.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_customwidgetplugin.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
target.path = $$[QT_INSTALL_PLUGINS]/designer
INSTALLS += target
diff --git a/doc/src/snippets/code/doc_src_examples_dropsite.qdoc b/doc/src/snippets/code/doc_src_examples_dropsite.qdoc
index fd949ea15..f07b49de9 100644
--- a/doc/src/snippets/code/doc_src_examples_dropsite.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_dropsite.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
foreach(variable, container)
//! [0]
diff --git a/doc/src/snippets/code/doc_src_examples_editabletreemodel.qdoc b/doc/src/snippets/code/doc_src_examples_editabletreemodel.qdoc
index 2475842d5..6afb5370f 100644
--- a/doc/src/snippets/code/doc_src_examples_editabletreemodel.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_editabletreemodel.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QVariant a = model->index(0, 0, QModelIndex()).data();
//! [0]
diff --git a/doc/src/snippets/code/doc_src_examples_hellotr.qdoc b/doc/src/snippets/code/doc_src_examples_hellotr.qdoc
index 4f31bc090..1f53cb106 100644
--- a/doc/src/snippets/code/doc_src_examples_hellotr.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_hellotr.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
lupdate -verbose hellotr.pro
//! [0]
diff --git a/doc/src/snippets/code/doc_src_examples_icons.qdoc b/doc/src/snippets/code/doc_src_examples_icons.qdoc
index 3d33dff14..8cd34d3c3 100644
--- a/doc/src/snippets/code/doc_src_examples_icons.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_icons.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
if (!condition)
qFatal("ASSERT: "condition" in file ...");
diff --git a/doc/src/snippets/code/doc_src_examples_imageviewer.qdoc b/doc/src/snippets/code/doc_src_examples_imageviewer.qdoc
index c1854ec00..0e546c560 100644
--- a/doc/src/snippets/code/doc_src_examples_imageviewer.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_imageviewer.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
imageLabel->resize(imageLabel->pixmap()->size());
//! [0]
diff --git a/doc/src/snippets/code/doc_src_examples_qtscriptcustomclass.qdoc b/doc/src/snippets/code/doc_src_examples_qtscriptcustomclass.qdoc
index f958cc9f8..ab76b2ff0 100644
--- a/doc/src/snippets/code/doc_src_examples_qtscriptcustomclass.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_qtscriptcustomclass.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
var ba = new ByteArray(); // constructs an empty ByteArray
var ba2 = new ByteArray(10); // constructs a ByteArray of length 10 (all bytes initialized to 0)
diff --git a/doc/src/snippets/code/doc_src_examples_simpledommodel.qdoc b/doc/src/snippets/code/doc_src_examples_simpledommodel.qdoc
index c74a17668..4478957d5 100644
--- a/doc/src/snippets/code/doc_src_examples_simpledommodel.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_simpledommodel.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
// file is an open QFile object.
QDomDocument document;
diff --git a/doc/src/snippets/code/doc_src_examples_simpletreemodel.qdoc b/doc/src/snippets/code/doc_src_examples_simpletreemodel.qdoc
index 907f3db28..be5afd023 100644
--- a/doc/src/snippets/code/doc_src_examples_simpletreemodel.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_simpletreemodel.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Getting Started How to familiarize yourself with Qt Designer
Launching Designer Running the Qt Designer application
diff --git a/doc/src/snippets/code/doc_src_examples_svgalib.qdoc b/doc/src/snippets/code/doc_src_examples_svgalib.qdoc
index 3b63146eb..db8913065 100644
--- a/doc/src/snippets/code/doc_src_examples_svgalib.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_svgalib.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
myApplication -qws -display svgalib
//! [0]
diff --git a/doc/src/snippets/code/doc_src_examples_taskmenuextension.qdoc b/doc/src/snippets/code/doc_src_examples_taskmenuextension.qdoc
index 299c0dc74..2cb19c810 100644
--- a/doc/src/snippets/code/doc_src_examples_taskmenuextension.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_taskmenuextension.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
target.path = $$[QT_INSTALL_PLUGINS]/designer
INSTALLS += target
diff --git a/doc/src/snippets/code/doc_src_examples_textfinder.qdoc b/doc/src/snippets/code/doc_src_examples_textfinder.qdoc
index 349becf88..b4413078d 100644
--- a/doc/src/snippets/code/doc_src_examples_textfinder.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_textfinder.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
CONFIG += uitools
HEADERS = textfinder.h
diff --git a/doc/src/snippets/code/doc_src_examples_trollprint.qdoc b/doc/src/snippets/code/doc_src_examples_trollprint.qdoc
index 7f51a1557..546d41c82 100644
--- a/doc/src/snippets/code/doc_src_examples_trollprint.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_trollprint.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
twoSidedEnabledRadio = new QRadioButton(tr("Enabled", "two-sided"));
twoSidedDisabledRadio = new QRadioButton(tr("Disabled", "two-sided"));
diff --git a/doc/src/snippets/code/doc_src_examples_tutorial.qdoc b/doc/src/snippets/code/doc_src_examples_tutorial.qdoc
index 0b79563ef..ee671de84 100644
--- a/doc/src/snippets/code/doc_src_examples_tutorial.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_tutorial.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
qmake -project
qmake
diff --git a/doc/src/snippets/code/doc_src_examples_worldtimeclockplugin.qdoc b/doc/src/snippets/code/doc_src_examples_worldtimeclockplugin.qdoc
index 299c0dc74..2cb19c810 100644
--- a/doc/src/snippets/code/doc_src_examples_worldtimeclockplugin.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_worldtimeclockplugin.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
target.path = $$[QT_INSTALL_PLUGINS]/designer
INSTALLS += target
diff --git a/doc/src/snippets/code/doc_src_exportedfunctions.qdoc b/doc/src/snippets/code/doc_src_exportedfunctions.qdoc
index f0e5fb59f..dd602e87a 100644
--- a/doc/src/snippets/code/doc_src_exportedfunctions.qdoc
+++ b/doc/src/snippets/code/doc_src_exportedfunctions.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#ifdef Q_WS_X11
void qt_x11_wait_for_window_manager(QWidget *widget);
diff --git a/doc/src/snippets/code/doc_src_gpl.qdoc b/doc/src/snippets/code/doc_src_gpl.qdoc
index b6ef9540d..dbd9ce8fd 100644
--- a/doc/src/snippets/code/doc_src_gpl.qdoc
+++ b/doc/src/snippets/code/doc_src_gpl.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [GPL v3]
You may use, distribute and copy the Qt GUI Toolkit under the terms of
GNU General Public License version 3, which is displayed below.
diff --git a/doc/src/snippets/code/doc_src_graphicsview.qdoc b/doc/src/snippets/code/doc_src_graphicsview.qdoc
index 4c1978488..34423803c 100644
--- a/doc/src/snippets/code/doc_src_graphicsview.qdoc
+++ b/doc/src/snippets/code/doc_src_graphicsview.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QGraphicsScene scene;
QGraphicsRectItem *rect = scene.addRect(QRectF(0, 0, 100, 100));
diff --git a/doc/src/snippets/code/doc_src_groups.qdoc b/doc/src/snippets/code/doc_src_groups.qdoc
index 51c294464..f05573c72 100644
--- a/doc/src/snippets/code/doc_src_groups.qdoc
+++ b/doc/src/snippets/code/doc_src_groups.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
void QPen::setStyle(Qt::PenStyle style)
{
diff --git a/doc/src/snippets/code/doc_src_i18n.qdoc b/doc/src/snippets/code/doc_src_i18n.qdoc
index 857e70c8e..80faabc83 100644
--- a/doc/src/snippets/code/doc_src_i18n.qdoc
+++ b/doc/src/snippets/code/doc_src_i18n.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
LoginWidget::LoginWidget()
{
@@ -143,7 +184,7 @@ void Clock::setTime(const QTime &time)
//! [12]
-void QWidget::changeEvent(QEvent *event)
+void MyWidget::changeEvent(QEvent *event)
{
if (e->type() == QEvent::LanguageChange) {
titleLabel->setText(tr("Document Title"));
diff --git a/doc/src/snippets/code/doc_src_installation.qdoc b/doc/src/snippets/code/doc_src_installation.qdoc
index e35dad9f0..bef6e84d0 100644
--- a/doc/src/snippets/code/doc_src_installation.qdoc
+++ b/doc/src/snippets/code/doc_src_installation.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
cd /tmp
gunzip qt-x11-opensource-desktop-%VERSION%.tar.gz # uncompress the archive
@@ -125,3 +166,57 @@ setcepaths wincewm50pocket-msvc2005
//! [22]
nmake
//! [22]
+
+
+//! [23]
+cd \Qt\%VERSION%
+configure -platform win32-g++ -xplatform symbian-abld
+//! [23]
+
+
+//! [24]
+make debug-winscw
+//! [24]
+
+//! [25]
+cd examples
+qmake
+make
+cd ..\demos
+qmake
+make
+//! [25]
+
+//! [27]
+make run
+//! [27]
+
+//! [28]
+make release-armv5
+//! [28]
+
+//! [29]
+cd src\s60installs
+make sis QT_SIS_OPTIONS=-i QT_SIS_CERTIFICATE=<certificate file> QT_SIS_KEY=<certificate key file>
+//! [29]
+
+//! [30]
+cd demos\embedded\fluidlauncher
+make sis QT_SIS_OPTIONS=-i
+//! [30]
+
+//! [31]
+cd \Qt\%VERSION%
+configure -platform win32-g++ -xplatform symbian-sbsv2
+//! [31]
+
+//! [32]
+cd <Your SDK path>\S60CppExamples\Note\group
+bldmake bldfiles
+abld build winscw udeb
+abld build gcce urel
+//! [32]
+
+//! [33]
+SYMBIANBUILD_DEPENDENCYOFF=1
+//! [33]
diff --git a/doc/src/snippets/code/doc_src_introtodbus.qdoc b/doc/src/snippets/code/doc_src_introtodbus.qdoc
index 97b14e90e..ecac25e81 100644
--- a/doc/src/snippets/code/doc_src_introtodbus.qdoc
+++ b/doc/src/snippets/code/doc_src_introtodbus.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
org.freedesktop.DBus
//! [0]
diff --git a/doc/src/snippets/code/doc_src_layout.qdoc b/doc/src/snippets/code/doc_src_layout.qdoc
index 60f36b0b9..536bbb2e6 100644
--- a/doc/src/snippets/code/doc_src_layout.qdoc
+++ b/doc/src/snippets/code/doc_src_layout.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#ifndef CARD_H
#define CARD_H
diff --git a/doc/src/snippets/code/doc_src_lgpl.qdoc b/doc/src/snippets/code/doc_src_lgpl.qdoc
index dc76d85f4..5d802c91a 100644
--- a/doc/src/snippets/code/doc_src_lgpl.qdoc
+++ b/doc/src/snippets/code/doc_src_lgpl.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [LGPL v2.1]
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
diff --git a/doc/src/snippets/code/doc_src_licenses.qdoc b/doc/src/snippets/code/doc_src_licenses.qdoc
index 4a95a5008..cd3f096a2 100644
--- a/doc/src/snippets/code/doc_src_licenses.qdoc
+++ b/doc/src/snippets/code/doc_src_licenses.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [1]
[utopiafonts] 1999 free font
----------------------------------------------------
diff --git a/doc/src/snippets/code/doc_src_linguist-manual.qdoc b/doc/src/snippets/code/doc_src_linguist-manual.qdoc
index 5697300ff..1fc6a88da 100644
--- a/doc/src/snippets/code/doc_src_linguist-manual.qdoc
+++ b/doc/src/snippets/code/doc_src_linguist-manual.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
HEADERS = main-dlg.h \
options-dlg.h
diff --git a/doc/src/snippets/code/doc_src_mac-differences.qdoc b/doc/src/snippets/code/doc_src_mac-differences.qdoc
index a4d95786a..39626555b 100644
--- a/doc/src/snippets/code/doc_src_mac-differences.qdoc
+++ b/doc/src/snippets/code/doc_src_mac-differences.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QMAKE_LFLAGS_SONAME = -Wl,-install_name,@executable_path/../Frameworks/
//! [0]
diff --git a/doc/src/snippets/code/doc_src_moc.qdoc b/doc/src/snippets/code/doc_src_moc.qdoc
index 59739e1a3..b2bb97cb9 100644
--- a/doc/src/snippets/code/doc_src_moc.qdoc
+++ b/doc/src/snippets/code/doc_src_moc.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
moc_%.cpp: %.h
moc $(DEFINES) $(INCPATH) $< -o $@
diff --git a/doc/src/snippets/code/doc_src_model-view-programming.qdoc b/doc/src/snippets/code/doc_src_model-view-programming.qdoc
index 3501ce0bd..7ce9a4db0 100644
--- a/doc/src/snippets/code/doc_src_model-view-programming.qdoc
+++ b/doc/src/snippets/code/doc_src_model-view-programming.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QAbstractItemModel *model = index.model();
//! [0]
diff --git a/doc/src/snippets/code/doc_src_modules.qdoc b/doc/src/snippets/code/doc_src_modules.qdoc
index e9006fd69..daa663fe9 100644
--- a/doc/src/snippets/code/doc_src_modules.qdoc
+++ b/doc/src/snippets/code/doc_src_modules.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QT -= gui
//! [0]
diff --git a/doc/src/snippets/code/doc_src_objecttrees.qdoc b/doc/src/snippets/code/doc_src_objecttrees.qdoc
index 216027f27..c1f8095f5 100644
--- a/doc/src/snippets/code/doc_src_objecttrees.qdoc
+++ b/doc/src/snippets/code/doc_src_objecttrees.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//![0]
int main()
{
diff --git a/doc/src/snippets/code/doc_src_phonon-api.qdoc b/doc/src/snippets/code/doc_src_phonon-api.qdoc
index e2307929c..a7b0dbf2c 100644
--- a/doc/src/snippets/code/doc_src_phonon-api.qdoc
+++ b/doc/src/snippets/code/doc_src_phonon-api.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
PushStream::PushStream(QObject *parent)
: AbstractMediaStream(parent), m_timer(new QTimer(this))
diff --git a/doc/src/snippets/code/doc_src_phonon.qdoc b/doc/src/snippets/code/doc_src_phonon.qdoc
index 3e4bce49f..9fa71c963 100644
--- a/doc/src/snippets/code/doc_src_phonon.qdoc
+++ b/doc/src/snippets/code/doc_src_phonon.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QT += phonon
//! [0]
diff --git a/doc/src/snippets/code/doc_src_platform-notes.qdoc b/doc/src/snippets/code/doc_src_platform-notes.qdoc
index ed56a0899..dc920eab1 100644
--- a/doc/src/snippets/code/doc_src_platform-notes.qdoc
+++ b/doc/src/snippets/code/doc_src_platform-notes.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
undefined reference to `_vt.11QPushButton'
//! [0]
diff --git a/doc/src/snippets/code/doc_src_plugins-howto.qdoc b/doc/src/snippets/code/doc_src_plugins-howto.qdoc
index 45c869087..8135c8962 100644
--- a/doc/src/snippets/code/doc_src_plugins-howto.qdoc
+++ b/doc/src/snippets/code/doc_src_plugins-howto.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
class MyStylePlugin : public QStylePlugin
{
diff --git a/doc/src/snippets/code/doc_src_porting-qsa.qdoc b/doc/src/snippets/code/doc_src_porting-qsa.qdoc
index 0dc572cd9..10fbda215 100644
--- a/doc/src/snippets/code/doc_src_porting-qsa.qdoc
+++ b/doc/src/snippets/code/doc_src_porting-qsa.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
point = new Object();
point.x = 12;
diff --git a/doc/src/snippets/code/doc_src_porting4-canvas.qdoc b/doc/src/snippets/code/doc_src_porting4-canvas.qdoc
index e38660754..5013efc42 100644
--- a/doc/src/snippets/code/doc_src_porting4-canvas.qdoc
+++ b/doc/src/snippets/code/doc_src_porting4-canvas.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
item->scene().sceneRect().intersects(item->sceneBoundingRect());
//! [0]
diff --git a/doc/src/snippets/code/doc_src_porting4-designer.qdoc b/doc/src/snippets/code/doc_src_porting4-designer.qdoc
index d4abaa049..2146e416e 100644
--- a/doc/src/snippets/code/doc_src_porting4-designer.qdoc
+++ b/doc/src/snippets/code/doc_src_porting4-designer.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
namespace Ui {
diff --git a/doc/src/snippets/code/doc_src_porting4.qdoc b/doc/src/snippets/code/doc_src_porting4.qdoc
index 14fddf8e2..4415bad88 100644
--- a/doc/src/snippets/code/doc_src_porting4.qdoc
+++ b/doc/src/snippets/code/doc_src_porting4.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
void MyButton::paintEvent(QPaintEvent *)
{
diff --git a/doc/src/snippets/code/doc_src_properties.qdoc b/doc/src/snippets/code/doc_src_properties.qdoc
index 3c9109f0a..b8672cdab 100644
--- a/doc/src/snippets/code/doc_src_properties.qdoc
+++ b/doc/src/snippets/code/doc_src_properties.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q_PROPERTY(type name
READ getFunction
diff --git a/doc/src/snippets/code/doc_src_q3asciidict.qdoc b/doc/src/snippets/code/doc_src_q3asciidict.qdoc
index e2c876afb..9b2212ef1 100644
--- a/doc/src/snippets/code/doc_src_q3asciidict.qdoc
+++ b/doc/src/snippets/code/doc_src_q3asciidict.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3AsciiDict<QLineEdit> fields; // char* keys, QLineEdit* values
fields.insert( "forename", new QLineEdit( this ) );
diff --git a/doc/src/snippets/code/doc_src_q3dict.qdoc b/doc/src/snippets/code/doc_src_q3dict.qdoc
index f79d0f739..a2f22b738 100644
--- a/doc/src/snippets/code/doc_src_q3dict.qdoc
+++ b/doc/src/snippets/code/doc_src_q3dict.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3Dict<char> dict;
...
diff --git a/doc/src/snippets/code/doc_src_q3intdict.qdoc b/doc/src/snippets/code/doc_src_q3intdict.qdoc
index 0fae2c854..784dd6b0d 100644
--- a/doc/src/snippets/code/doc_src_q3intdict.qdoc
+++ b/doc/src/snippets/code/doc_src_q3intdict.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3IntDict<QLineEdit> fields; // long int keys, QLineEdit* values
for ( int i = 0; i < 3; i++ )
diff --git a/doc/src/snippets/code/doc_src_q3memarray.qdoc b/doc/src/snippets/code/doc_src_q3memarray.qdoc
index b56ef4e9b..bad1d8077 100644
--- a/doc/src/snippets/code/doc_src_q3memarray.qdoc
+++ b/doc/src/snippets/code/doc_src_q3memarray.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#include <q3memarray.h>
#include <stdio.h>
diff --git a/doc/src/snippets/code/doc_src_q3ptrdict.qdoc b/doc/src/snippets/code/doc_src_q3ptrdict.qdoc
index d23824b19..41d69d07b 100644
--- a/doc/src/snippets/code/doc_src_q3ptrdict.qdoc
+++ b/doc/src/snippets/code/doc_src_q3ptrdict.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3PtrDict<char> fields; // void* keys, char* values
diff --git a/doc/src/snippets/code/doc_src_q3ptrlist.qdoc b/doc/src/snippets/code/doc_src_q3ptrlist.qdoc
index f416784f7..ae14ad474 100644
--- a/doc/src/snippets/code/doc_src_q3ptrlist.qdoc
+++ b/doc/src/snippets/code/doc_src_q3ptrlist.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
class Employee
{
diff --git a/doc/src/snippets/code/doc_src_q3valuelist.qdoc b/doc/src/snippets/code/doc_src_q3valuelist.qdoc
index 5a6d564ab..f2ed12043 100644
--- a/doc/src/snippets/code/doc_src_q3valuelist.qdoc
+++ b/doc/src/snippets/code/doc_src_q3valuelist.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
class Employee
{
diff --git a/doc/src/snippets/code/doc_src_q3valuestack.qdoc b/doc/src/snippets/code/doc_src_q3valuestack.qdoc
index 61d564b34..9cc095076 100644
--- a/doc/src/snippets/code/doc_src_q3valuestack.qdoc
+++ b/doc/src/snippets/code/doc_src_q3valuestack.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3ValueStack<int> stack;
stack.push( 1 );
diff --git a/doc/src/snippets/code/doc_src_q3valuevector.qdoc b/doc/src/snippets/code/doc_src_q3valuevector.qdoc
index 792bfacf2..6b64101f6 100644
--- a/doc/src/snippets/code/doc_src_q3valuevector.qdoc
+++ b/doc/src/snippets/code/doc_src_q3valuevector.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#include <qvaluevector.h>
#include <qstring.h>
diff --git a/doc/src/snippets/code/doc_src_qalgorithms.qdoc b/doc/src/snippets/code/doc_src_qalgorithms.qdoc
index 69d943c89..f00a5b189 100644
--- a/doc/src/snippets/code/doc_src_qalgorithms.qdoc
+++ b/doc/src/snippets/code/doc_src_qalgorithms.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QStringList list;
list << "one" << "two" << "three";
@@ -302,7 +343,7 @@ list.clear();
QList<int> list;
list << 33 << 12 << 68 << 6 << 12;
qSort(list.begin(), list.end(), qLess<int>());
-// list: [ 68, 33, 12, 12, 6 ]
+// list: [ 6, 12, 12, 33, 68 ]
//! [24]
diff --git a/doc/src/snippets/code/doc_src_qaxcontainer.qdoc b/doc/src/snippets/code/doc_src_qaxcontainer.qdoc
index 9edd87f05..9b62e0975 100644
--- a/doc/src/snippets/code/doc_src_qaxcontainer.qdoc
+++ b/doc/src/snippets/code/doc_src_qaxcontainer.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
CONFIG += qaxcontainer
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qaxserver.qdoc b/doc/src/snippets/code/doc_src_qaxserver.qdoc
index 9b51e668a..a4ed89c79 100644
--- a/doc/src/snippets/code/doc_src_qaxserver.qdoc
+++ b/doc/src/snippets/code/doc_src_qaxserver.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
TEMPLATE = app
CONFIG += qaxserver
diff --git a/doc/src/snippets/code/doc_src_qcache.qdoc b/doc/src/snippets/code/doc_src_qcache.qdoc
index 66bda6af9..2ae0edd6d 100644
--- a/doc/src/snippets/code/doc_src_qcache.qdoc
+++ b/doc/src/snippets/code/doc_src_qcache.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QCache<int, Employee> cache;
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qdbusadaptors.qdoc b/doc/src/snippets/code/doc_src_qdbusadaptors.qdoc
index 7f69a907d..bdfec0646 100644
--- a/doc/src/snippets/code/doc_src_qdbusadaptors.qdoc
+++ b/doc/src/snippets/code/doc_src_qdbusadaptors.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
class MainApplicationAdaptor: public QDBusAbstractAdaptor
{
diff --git a/doc/src/snippets/code/doc_src_qiterator.qdoc b/doc/src/snippets/code/doc_src_qiterator.qdoc
index 3dfa68a9c..9c1a8f843 100644
--- a/doc/src/snippets/code/doc_src_qiterator.qdoc
+++ b/doc/src/snippets/code/doc_src_qiterator.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QList<float> list;
...
diff --git a/doc/src/snippets/code/doc_src_qmake-manual.qdoc b/doc/src/snippets/code/doc_src_qmake-manual.qdoc
index 82c710d44..74a469e04 100644
--- a/doc/src/snippets/code/doc_src_qmake-manual.qdoc
+++ b/doc/src/snippets/code/doc_src_qmake-manual.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
make all
//! [0]
@@ -809,5 +850,122 @@ CONFIG(debug, debug|release) {
//! [127]
//! [128]
-DEPLOYMENT_PLUGIN += qjpeg
+customplugin.sources = customimageplugin.dll
+customplugin.sources += c:\myplugins\othercustomimageplugin.dll
+customplugin.path = imageformats
+dynamiclibrary.sources = mylib.dll helper.exe
+dynamiclibrary.path = \sys\bin
+globalplugin.sources = someglobalimageplugin.dll
+globalplugin.path = \resource\qt\plugins\imageformats
+DEPLOYMENT += customplugin dynamiclibrary globalplugin
//! [128]
+
+//! [129]
+TARGET.EPOCALLOWDLLDATA = 1
+//! [129]
+
+//! [130]
+TARGET.EPOCHEAPSIZE = 10000 10000000
+TARGET.EPOCSTACKSIZE = 0x8000
+//! [130]
+
+//! [131]
+QMAKE_CXXFLAGS.CW += -O2
+QMAKE_CXXFLAGS.ARMCC += -O0
+//! [131]
+
+//! [132]
+TARGET.UID2 = 0x00000001
+TARGET.UID3 = 0x00000002
+TARGET.SID = 0x00000003
+TARGET.VID = 0x00000004
+//! [132]
+
+//! [133]
+TARGET.CAPABILITY += AllFiles
+//! [133]
+
+//! [134]
+TARGET.CAPABILITY = ALL -TCB
+//! [134]
+
+//! [135]
+TARGET.EPOCHEAPSIZE = 10000 10000000
+//! [135]
+
+//! [136]
+TARGET.EPOCSTACKSIZE = 0x8000
+//! [136]
+
+//! [137]
+MMP_RULES += "DEFFILE hello.def"
+//! [137]
+
+//! [138]
+myBlock = \
+"START RESOURCE foo.rss" \
+"TARGET bar" \
+"TARGETPATH private\10001234" \
+"HEADER" \
+"LANG 01" \
+"UID 0x10002345 0x10003456" \
+"END"
+
+MMP_RULES += myBlock
+//! [138]
+
+//! [139]
+myIfdefBlock = \
+"$${LITERAL_HASH}ifdef WINSCW" \
+"DEFFILE hello_winscw.def" \
+"$${LITERAL_HASH}endif"
+
+MMP_RULES += myIfdefBlock
+//! [139]
+
+//! [140]
+somelib.sources = somelib.dll
+somelib.path = \sys\bin
+somelib.pkg_prerules = "(0x12345678), 2, 2, 0, {\"Some Package\"}" \
+ "(0x87654321), 1, *, * ~ 2, 2, 0, {\"Some Other Package\"}"
+justdep.pkg_prerules = "(0xAAAABBBB), 0, 2, 0, {\"My Framework\"}"
+DEPLOYMENT += somelib justdep
+//! [140]
+
+//! [141]
+default_deployment.pkg_prerules = "[0x11223344],0,0,0,{\"SomeSpecificDeviceID\"}"
+//! [141]
+
+//! [142]
+DEPLOYMENT_PLUGIN += qjpeg
+//! [142]
+
+//! [143]
+myextension = \
+ "start extension myextension" \
+ "$${LITERAL_HASH}if defined(WINSCW)" \
+ "option MYOPTION foo" \
+ "$${LITERAL_HASH}endif" \
+ "option MYOPTION bar" \
+ "end"
+BLD_INF_RULES.prj_extensions += myextension
+//! [143]
+
+//! [144]
+RSS_RULES += "hidden = KAppIsHidden;"
+//! [144]
+
+//! [145]
+myrssrules = \
+ "hidden = KAppIsHidden;" \
+ "launch = KAppLaunchInBackground;" \
+RSS_RULES += myrssrules
+//! [145]
+
+//! [146]
+BLD_INF_RULES.prj_exports += \
+ "$${LITERAL_HASH}include <platform_paths.hrh>" \
+ "rom/my.iby APP_LAYER_PUBLIC_EXPORT_PATH(my.iby)" \
+ "inc/myheader.h mycomp/myheader.h" \
+ ":zip my_api.zip my_api"
+//! [146]
diff --git a/doc/src/snippets/code/doc_src_qnamespace.qdoc b/doc/src/snippets/code/doc_src_qnamespace.qdoc
index 250d62d23..6a9fcd09d 100644
--- a/doc/src/snippets/code/doc_src_qnamespace.qdoc
+++ b/doc/src/snippets/code/doc_src_qnamespace.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QObject::connect: Cannot queue arguments of type 'MyType'
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qpair.qdoc b/doc/src/snippets/code/doc_src_qpair.qdoc
index 74c7c8360..54aadd92d 100644
--- a/doc/src/snippets/code/doc_src_qpair.qdoc
+++ b/doc/src/snippets/code/doc_src_qpair.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QPair<QString, double> pair;
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qplugin.qdoc b/doc/src/snippets/code/doc_src_qplugin.qdoc
index d9b627e6b..8133e6e49 100644
--- a/doc/src/snippets/code/doc_src_qplugin.qdoc
+++ b/doc/src/snippets/code/doc_src_qplugin.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
namespace Foo
{
diff --git a/doc/src/snippets/code/doc_src_qset.qdoc b/doc/src/snippets/code/doc_src_qset.qdoc
index 7469d2ac5..9a717f2cd 100644
--- a/doc/src/snippets/code/doc_src_qset.qdoc
+++ b/doc/src/snippets/code/doc_src_qset.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QSet<QString> set;
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qsignalspy.qdoc b/doc/src/snippets/code/doc_src_qsignalspy.qdoc
index d6b65dcd6..af9328b4b 100644
--- a/doc/src/snippets/code/doc_src_qsignalspy.qdoc
+++ b/doc/src/snippets/code/doc_src_qsignalspy.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QCheckBox *box = ...;
QSignalSpy spy(box, SIGNAL(clicked(bool)));
diff --git a/doc/src/snippets/code/doc_src_qt-conf.qdoc b/doc/src/snippets/code/doc_src_qt-conf.qdoc
index d675795dd..2eaa16b9b 100644
--- a/doc/src/snippets/code/doc_src_qt-conf.qdoc
+++ b/doc/src/snippets/code/doc_src_qt-conf.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
[Paths]
Prefix = /some/path
diff --git a/doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc b/doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc
index a3ab4dd04..7d58679e5 100644
--- a/doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc
+++ b/doc/src/snippets/code/doc_src_qt-embedded-displaymanagement.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
$QPEDIR/qtopiacore/qt/configure -help
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qt3support.qdoc b/doc/src/snippets/code/doc_src_qt3support.qdoc
index e6f0272ac..8e50d55a6 100644
--- a/doc/src/snippets/code/doc_src_qt3support.qdoc
+++ b/doc/src/snippets/code/doc_src_qt3support.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#include <Qt3Support>
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qt3to4.qdoc b/doc/src/snippets/code/doc_src_qt3to4.qdoc
index da0832d3f..6696a18a2 100644
--- a/doc/src/snippets/code/doc_src_qt3to4.qdoc
+++ b/doc/src/snippets/code/doc_src_qt3to4.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
qt3to4 myfile.cpp
qt3to4 myapp.pro
diff --git a/doc/src/snippets/code/doc_src_qt4-accessibility.qdoc b/doc/src/snippets/code/doc_src_qt4-accessibility.qdoc
index 8bed0a920..0ad9f2419 100644
--- a/doc/src/snippets/code/doc_src_qt4-accessibility.qdoc
+++ b/doc/src/snippets/code/doc_src_qt4-accessibility.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [environment]
export QT_ACCESSIBILITY=1
//! [environment]
diff --git a/doc/src/snippets/code/doc_src_qt4-arthur.qdoc b/doc/src/snippets/code/doc_src_qt4-arthur.qdoc
index 6ac30ae47..ecf93d09b 100644
--- a/doc/src/snippets/code/doc_src_qt4-arthur.qdoc
+++ b/doc/src/snippets/code/doc_src_qt4-arthur.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QLinearGradient gradient(0, 0, 100, 100);
gradient.setColorAt(0, Qt::red);
diff --git a/doc/src/snippets/code/doc_src_qt4-intro.qdoc b/doc/src/snippets/code/doc_src_qt4-intro.qdoc
index ced563e7d..0b906f9c5 100644
--- a/doc/src/snippets/code/doc_src_qt4-intro.qdoc
+++ b/doc/src/snippets/code/doc_src_qt4-intro.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QT -= gui
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc b/doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc
index 9e81fd15c..6883449fe 100644
--- a/doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc
+++ b/doc/src/snippets/code/doc_src_qt4-mainwindow.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
diff --git a/doc/src/snippets/code/doc_src_qt4-sql.qdoc b/doc/src/snippets/code/doc_src_qt4-sql.qdoc
index 74b04eb95..793692d8b 100644
--- a/doc/src/snippets/code/doc_src_qt4-sql.qdoc
+++ b/doc/src/snippets/code/doc_src_qt4-sql.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QSqlQueryModel model;
model.setQuery("select * from person");
diff --git a/doc/src/snippets/code/doc_src_qt4-styles.qdoc b/doc/src/snippets/code/doc_src_qt4-styles.qdoc
index b75c13556..64d0e8b9e 100644
--- a/doc/src/snippets/code/doc_src_qt4-styles.qdoc
+++ b/doc/src/snippets/code/doc_src_qt4-styles.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
const QStyleOptionFocusRect *focusRectOption =
qstyleoption_cast<const QStyleOptionFocusRect *>(option);
diff --git a/doc/src/snippets/code/doc_src_qt4-tulip.qdoc b/doc/src/snippets/code/doc_src_qt4-tulip.qdoc
index 2bc5af182..fd9307f66 100644
--- a/doc/src/snippets/code/doc_src_qt4-tulip.qdoc
+++ b/doc/src/snippets/code/doc_src_qt4-tulip.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
foreach (variable, container)
statement;
diff --git a/doc/src/snippets/code/doc_src_qtcore.qdoc b/doc/src/snippets/code/doc_src_qtcore.qdoc
index efa155f33..78ded0f43 100644
--- a/doc/src/snippets/code/doc_src_qtcore.qdoc
+++ b/doc/src/snippets/code/doc_src_qtcore.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#include <QtCore>
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qtdbus.qdoc b/doc/src/snippets/code/doc_src_qtdbus.qdoc
index 4c8c4b0c5..c38ff854b 100644
--- a/doc/src/snippets/code/doc_src_qtdbus.qdoc
+++ b/doc/src/snippets/code/doc_src_qtdbus.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#include <QtDBus>
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qtdesigner.qdoc b/doc/src/snippets/code/doc_src_qtdesigner.qdoc
index b19a7472a..ec2d58112 100644
--- a/doc/src/snippets/code/doc_src_qtdesigner.qdoc
+++ b/doc/src/snippets/code/doc_src_qtdesigner.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#include <QtDesigner>
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qtestevent.qdoc b/doc/src/snippets/code/doc_src_qtestevent.qdoc
index 87591e047..c7529e273 100644
--- a/doc/src/snippets/code/doc_src_qtestevent.qdoc
+++ b/doc/src/snippets/code/doc_src_qtestevent.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QTestEventList events;
events.addKeyClick('a');
diff --git a/doc/src/snippets/code/doc_src_qtestlib.qdoc b/doc/src/snippets/code/doc_src_qtestlib.qdoc
index a0e494474..8022e4d0c 100644
--- a/doc/src/snippets/code/doc_src_qtestlib.qdoc
+++ b/doc/src/snippets/code/doc_src_qtestlib.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
class MyFirstTest: public QObject
{
diff --git a/doc/src/snippets/code/doc_src_qtgui.qdoc b/doc/src/snippets/code/doc_src_qtgui.qdoc
index ff3afcf64..4558e5ae5 100644
--- a/doc/src/snippets/code/doc_src_qtgui.qdoc
+++ b/doc/src/snippets/code/doc_src_qtgui.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#include <QtGui>
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qthelp.qdoc b/doc/src/snippets/code/doc_src_qthelp.qdoc
index 949e2a5bf..4daf2a2cf 100644
--- a/doc/src/snippets/code/doc_src_qthelp.qdoc
+++ b/doc/src/snippets/code/doc_src_qthelp.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#include <QtHelp>
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qtmac-as-native.qdoc b/doc/src/snippets/code/doc_src_qtmac-as-native.qdoc
index 6ad42b940..0e417ecfe 100644
--- a/doc/src/snippets/code/doc_src_qtmac-as-native.qdoc
+++ b/doc/src/snippets/code/doc_src_qtmac-as-native.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
qmake -spec macx-xcode project.pro
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qtmultimedia.qdoc b/doc/src/snippets/code/doc_src_qtmultimedia.qdoc
new file mode 100644
index 000000000..f07a24267
--- /dev/null
+++ b/doc/src/snippets/code/doc_src_qtmultimedia.qdoc
@@ -0,0 +1,49 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+//! [0]
+QT += multimedia
+//! [0]
+
+
+//! [1]
+#include <QtMultimedia>
+//! [1]
diff --git a/doc/src/snippets/code/doc_src_qtnetwork.qdoc b/doc/src/snippets/code/doc_src_qtnetwork.qdoc
index 48566869f..9719caf38 100644
--- a/doc/src/snippets/code/doc_src_qtnetwork.qdoc
+++ b/doc/src/snippets/code/doc_src_qtnetwork.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QT += network
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qtopengl.qdoc b/doc/src/snippets/code/doc_src_qtopengl.qdoc
index e13cdf055..cd8aaa7e1 100644
--- a/doc/src/snippets/code/doc_src_qtopengl.qdoc
+++ b/doc/src/snippets/code/doc_src_qtopengl.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#include <QtOpenGL>
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qtscript.qdoc b/doc/src/snippets/code/doc_src_qtscript.qdoc
index 4031fef87..8212980b5 100644
--- a/doc/src/snippets/code/doc_src_qtscript.qdoc
+++ b/doc/src/snippets/code/doc_src_qtscript.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#include <QtScript>
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qtscriptextensions.qdoc b/doc/src/snippets/code/doc_src_qtscriptextensions.qdoc
index 24fb25481..ca2c310c2 100644
--- a/doc/src/snippets/code/doc_src_qtscriptextensions.qdoc
+++ b/doc/src/snippets/code/doc_src_qtscriptextensions.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
print("importing " + __extension__);
__setupPackage__("cool.stuff");
diff --git a/doc/src/snippets/code/doc_src_qtsql.qdoc b/doc/src/snippets/code/doc_src_qtsql.qdoc
index 1a687dbf7..701100c78 100644
--- a/doc/src/snippets/code/doc_src_qtsql.qdoc
+++ b/doc/src/snippets/code/doc_src_qtsql.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#include <QtSql>
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qtsvg.qdoc b/doc/src/snippets/code/doc_src_qtsvg.qdoc
index c99ea4137..05cbb9546 100644
--- a/doc/src/snippets/code/doc_src_qtsvg.qdoc
+++ b/doc/src/snippets/code/doc_src_qtsvg.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#include <QtSvg>
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qttest.qdoc b/doc/src/snippets/code/doc_src_qttest.qdoc
index c2aa27bf6..99cf702f4 100644
--- a/doc/src/snippets/code/doc_src_qttest.qdoc
+++ b/doc/src/snippets/code/doc_src_qttest.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#include <QtTest>
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qtuiloader.qdoc b/doc/src/snippets/code/doc_src_qtuiloader.qdoc
index 64f3eac32..520ee6b6c 100644
--- a/doc/src/snippets/code/doc_src_qtuiloader.qdoc
+++ b/doc/src/snippets/code/doc_src_qtuiloader.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
CONFIG += uitools
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qtxml.qdoc b/doc/src/snippets/code/doc_src_qtxml.qdoc
index 11b1fb071..f879d1617 100644
--- a/doc/src/snippets/code/doc_src_qtxml.qdoc
+++ b/doc/src/snippets/code/doc_src_qtxml.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#include <QtXml>
//! [0]
diff --git a/doc/src/snippets/code/doc_src_qtxmlpatterns.qdoc b/doc/src/snippets/code/doc_src_qtxmlpatterns.qdoc
index 638bf93bf..2d5babb97 100644
--- a/doc/src/snippets/code/doc_src_qtxmlpatterns.qdoc
+++ b/doc/src/snippets/code/doc_src_qtxmlpatterns.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
void wrapInFunction()
{
@@ -207,8 +248,8 @@ declare variable $insertion := "example";
declare default element namespace "http://cookbook/namespace";
let $docURI := 'cookbook.xml'
return if(doc-available($docURI))
- then doc($docURI)//recipe/<resept>{./node()}</resept>
- else <resept>Failed to load {$docURI}</resept>
+ then doc($docURI)//recipe/<oppskrift>{./node()}</oppskrift>
+ else <oppskrift>Failed to load {$docURI}</oppskrift>
//! [40]
//! [41]
@@ -271,79 +312,5 @@ for $a in doc('doc.txt')//p
<p>f0</p>
//! [49]
-//! [100]
-<?xml version="1.0" encoding="UTF-8"?>
-<cookbook>
- <recipe xml:id="MushroomSoup">
- <title>Quick and Easy Mushroom Soup</title>
- <ingredient name="Fresh mushrooms"
- quantity="7"
- unit="pieces"/>
- <ingredient name="Garlic"
- quantity="1"
- unit="cloves"/>
- <ingredient name="Olive oil"
- quantity="2"
- unit="tablespoons"/>
- <ingredient name="Milk"
- quantity="200"
- unit="milliliters"/>
- <ingredient name="Water"
- quantity="200"
- unit="milliliters"/>
- <ingredient name="Cream"
- quantity="100"
- unit="milliliters"/>
- <ingredient name="Vegetable soup cube"
- quantity="1/2"
- unit="cubes"/>
- <ingredient name="Ground black pepper"
- quantity="1/2"
- unit="teaspoons"/>
- <ingredient name="Dried parsley"
- quantity="1"
- unit="teaspoons"/>
- <time quantity="20"
- unit="minutes"/>
- <method>
- <step>1. Slice mushrooms and garlic.</step>
- <step>2. Fry mushroom slices and garlic with olive oil.</step>
- <step>3. Once mushrooms are cooked, add milk, cream water. Stir.</step>
- <step>4. Add vegetable soup cube.</step>
- <step>5. Reduce heat, add pepper and parsley.</step>
- <step>6. Turn off the stove before the mixture boils.</step>
- <step>7. Blend the mixture.</step>
- </method>
- </recipe>
- <recipe xml:id="CheeseOnToast">
- <title>Cheese on Toast</title>
- <ingredient name="Bread"
- quantity="2"
- unit="slices"/>
- <ingredient name="Cheese"
- quantity="2"
- unit="slices"/>
- <time quantity="3"
- unit="minutes"/>
- <method>
- <step>1. Slice the bread and cheese.</step>
- <step>2. Grill one side of each slice of bread.</step>
- <step>3. Turn over the bread and place a slice of cheese on each piece.</step>
- <step>4. Grill until the cheese has started to melt.</step>
- <step>5. Serve and enjoy!</step>
- </method>
- </recipe>
- <recipe xml:id="HardBoiledEggs">
- <title>Hard-Boiled Eggs</title>
- <ingredient name="Eggs"
- quantity="3"
- unit="eggs"/>
- <time quantity="3"
- unit="minutes"/>
- <method/>
- </recipe>
-</cookbook>
-//! [100]
-
}
diff --git a/doc/src/snippets/code/doc_src_qvarlengtharray.qdoc b/doc/src/snippets/code/doc_src_qvarlengtharray.qdoc
index 95db9d349..54779afdc 100644
--- a/doc/src/snippets/code/doc_src_qvarlengtharray.qdoc
+++ b/doc/src/snippets/code/doc_src_qvarlengtharray.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
int myfunc(int n)
{
diff --git a/doc/src/snippets/code/doc_src_rcc.qdoc b/doc/src/snippets/code/doc_src_rcc.qdoc
index 423f8e622..ecf103027 100644
--- a/doc/src/snippets/code/doc_src_rcc.qdoc
+++ b/doc/src/snippets/code/doc_src_rcc.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
rcc [options] <inputs>
//! [0]
diff --git a/doc/src/snippets/code/doc_src_resources.qdoc b/doc/src/snippets/code/doc_src_resources.qdoc
index bc85341b1..76a16384c 100644
--- a/doc/src/snippets/code/doc_src_resources.qdoc
+++ b/doc/src/snippets/code/doc_src_resources.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
<file alias="cut-img.png">images/cut.png</file>
//! [0]
diff --git a/doc/src/snippets/code/doc_src_richtext.qdoc b/doc/src/snippets/code/doc_src_richtext.qdoc
index d6f54c29c..d0608a620 100644
--- a/doc/src/snippets/code/doc_src_richtext.qdoc
+++ b/doc/src/snippets/code/doc_src_richtext.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QTextDocument *newDocument = new QTextDocument;
//! [0]
diff --git a/doc/src/snippets/code/doc_src_session.qdoc b/doc/src/snippets/code/doc_src_session.qdoc
index 6a3286313..d13db7727 100644
--- a/doc/src/snippets/code/doc_src_session.qdoc
+++ b/doc/src/snippets/code/doc_src_session.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
xterm
//! [0]
diff --git a/doc/src/snippets/code/doc_src_sql-driver.qdoc b/doc/src/snippets/code/doc_src_sql-driver.qdoc
index 74cd8dc45..a0b7ca723 100644
--- a/doc/src/snippets/code/doc_src_sql-driver.qdoc
+++ b/doc/src/snippets/code/doc_src_sql-driver.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
-no-sql-<driver> ... Disable SQL <driver> entirely.
-qt-sql-<driver> ... Enable a SQL <driver> in the Qt Library, by default
@@ -57,7 +98,7 @@ make
//! [7]
cd $QTDIR/src/plugins/sqldrivers/oci
-qmake "INCLUDEPATH+=/usr/include/oracle/10.1.0.3/client/" "LIBS+=-L/usr/lib/oracle/10.1.0.3/client/lib" oci.pro
+qmake "INCLUDEPATH+=/usr/include/oracle/10.1.0.3/client/" "LIBS+=-L/usr/lib/oracle/10.1.0.3/client/lib -lclntsh" oci.pro
make
//! [7]
diff --git a/doc/src/snippets/code/doc_src_styles.qdoc b/doc/src/snippets/code/doc_src_styles.qdoc
index 9d5756a36..c16ccfff5 100644
--- a/doc/src/snippets/code/doc_src_styles.qdoc
+++ b/doc/src/snippets/code/doc_src_styles.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
opt.initFrom(q);
if (down)
diff --git a/doc/src/snippets/code/doc_src_stylesheet.qdoc b/doc/src/snippets/code/doc_src_stylesheet.qdoc
index a62148f34..1c0440c5a 100644
--- a/doc/src/snippets/code/doc_src_stylesheet.qdoc
+++ b/doc/src/snippets/code/doc_src_stylesheet.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QLineEdit { background: yellow }
QCheckBox { color: red }
@@ -124,7 +165,7 @@ LI {} /* a=0 b=0 c=1 -> specificity = 1 */
UL LI {} /* a=0 b=0 c=2 -> specificity = 2 */
UL OL+LI {} /* a=0 b=0 c=3 -> specificity = 3 */
H1 + *[REL=up]{} /* a=0 b=1 c=1 -> specificity = 11 */
-UL OL LI.red {} /* a=0 b=1 c=3 -> specificity = 13 */
+UL OL LI.red {} /* a=0 b=1 c=3 -> specificity = 13 */
LI.red.level {} /* a=0 b=2 c=1 -> specificity = 21 */
#x34y {} /* a=1 b=0 c=0 -> specificity = 100 */
//! [20]
@@ -219,7 +260,7 @@ QTextEdit { background: yellow }
//! [35]
-QLabel {
+QLabel {
background-image: url(dense6pattern.png);
background-repeat: repeat-xy;
}
@@ -380,9 +421,6 @@ QSpinBox::down-button { height: 10px }
//! [59]
/* implicitly sets the size of down-button to the size of spindown.png */
QSpinBox::down-button { image: url(:/images/spindown.png) }
-
-QTextEdit { image: url(x1.png) url(x2.png) }
-QTextEdit { image: url(pic1.svg) }
//! [59]
@@ -555,9 +593,9 @@ QTextEdit {
/* radial gradient from white to green */
QTextEdit {
- background: qradialgradient(cx:0, cy:0, radius: 1,
+ background: qradialgradient(cx:0, cy:0, radius: 1,
fx:0.5, fy:0.5, stop:0 white, stop:1 green)
-}
+}
//! [85]
@@ -830,7 +868,7 @@ QComboBox::down-arrow {
QComboBox::down-arrow:on { /* shift the arrow when popup is open */
top: 1px;
left: 1px;
-}
+}
//! [109]
@@ -961,14 +999,19 @@ QGroupBox::indicator:unchecked {
//! [116]
QHeaderView::section {
- background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,
- stop:0 #616161, stop: 0.5 #505050,
+ background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,
+ stop:0 #616161, stop: 0.5 #505050,
stop: 0.6 #434343, stop:1 #656565);
color: white;
padding-left: 4px;
border: 1px solid #6c6c6c;
}
+QHeaderView::section:checked
+{
+ background-color: red;
+}
+
/* style the sort indicator */
QHeaderView::down-arrow {
image: url(down_arrow.png);
@@ -1025,17 +1068,17 @@ QListView::item:selected {
}
QListView::item:selected:!active {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #ABAFE5, stop: 1 #8588B2);
}
QListView::item:selected:active {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #6a6ea9, stop: 1 #888dd9);
}
QListView::item:hover {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #FAFBFE, stop: 1 #DCDEF1);
}
//! [121]
@@ -1057,13 +1100,13 @@ QMainWindow::separator:hover {
//! [123]
QMenu {
background-color: #ABABAB; /* sets background of the menu */
- border: 1px solid black;
+ border: 1px solid black;
}
QMenu::item {
- /* sets background of menu item. set this to something non-transparent
+ /* sets background of menu item. set this to something non-transparent
if you want menu color and menu item color to be different */
- background-color: transparent;
+ background-color: transparent;
}
QMenu::item:selected { /* when user selects item using mouse or keyboard */
@@ -1092,16 +1135,16 @@ QMenu::icon:checked { /* appearance of a 'checked' icon */
background: gray;
border: 1px inset gray;
position: absolute;
- top: 1px;
- right: 1px;
- bottom: 1px;
+ top: 1px;
+ right: 1px;
+ bottom: 1px;
left: 1px;
}
QMenu::separator {
height: 2px;
background: lightblue;
- margin-left: 10px;
+ margin-left: 10px;
margin-right: 5px;
}
@@ -1205,13 +1248,13 @@ QProgressBar::chunk {
QPushButton {
border: 2px solid #8f8f91;
border-radius: 6px;
- background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #f6f7fa, stop: 1 #dadbde);
min-width: 80px;
}
QPushButton:pressed {
- background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #dadbde, stop: 1 #f6f7fa);
}
@@ -1227,18 +1270,18 @@ QPushButton:default {
//! [130]
QPushButton:open { /* when the button has its menu open */
- background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
stop: 0 #dadbde, stop: 1 #f6f7fa);
}
-QPushButton::menu-indicator {
+QPushButton::menu-indicator {
image: url(menu_indicator.png);
- subcontrol-origin: padding;
+ subcontrol-origin: padding;
subcontrol-position: bottom right;
}
QPushButton::menu-indicator:pressed, QPushButton::menu-indicator:open {
- position: relative;
+ position: relative;
top: 2px; left: 2px; /* shift the arrow by 2 px */
}
//! [130]
@@ -1574,11 +1617,11 @@ QTabWidget::tab-bar {
left: 5px; /* move to the right by 5px */
}
-/* Style the tab using the tab sub-control. Note that
+/* Style the tab using the tab sub-control. Note that
it reads QTabBar _not_ QTabWidget */
QTabBar::tab {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
- stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3);
border: 2px solid #C4C4C3;
border-bottom-color: #C2C7CB; /* same as the pane color */
@@ -1589,8 +1632,8 @@ QTabBar::tab {
}
QTabBar::tab:selected, QTabBar::tab:hover {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
- stop: 0 #fafafa, stop: 0.4 #f4f4f4,
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #fafafa, stop: 0.4 #f4f4f4,
stop: 0.5 #e7e7e7, stop: 1.0 #fafafa);
}
@@ -1614,11 +1657,11 @@ QTabWidget::tab-bar {
left: 5px; /* move to the right by 5px */
}
-/* Style the tab using the tab sub-control. Note that
+/* Style the tab using the tab sub-control. Note that
it reads QTabBar _not_ QTabWidget */
QTabBar::tab {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
- stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3);
border: 2px solid #C4C4C3;
border-bottom-color: #C2C7CB; /* same as the pane color */
@@ -1629,8 +1672,8 @@ QTabBar::tab {
}
QTabBar::tab:selected, QTabBar::tab:hover {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
- stop: 0 #fafafa, stop: 0.4 #f4f4f4,
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #fafafa, stop: 0.4 #f4f4f4,
stop: 0.5 #e7e7e7, stop: 1.0 #fafafa);
}
@@ -1667,19 +1710,19 @@ QTabBar::tab:only-one {
//! [147]
QTabWidget::pane { /* The tab widget frame */
border-top: 2px solid #C2C7CB;
- position: absolute;
- top: -0.5em;
+ position: absolute;
+ top: -0.5em;
}
-QTabWidget::tab-bar {
- alignment: center;
+QTabWidget::tab-bar {
+ alignment: center;
}
-/* Style the tab using the tab sub-control. Note that
+/* Style the tab using the tab sub-control. Note that
it reads QTabBar _not_ QTabWidget */
QTabBar::tab {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
- stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,
stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3);
border: 2px solid #C4C4C3;
border-bottom-color: #C2C7CB; /* same as the pane color */
@@ -1690,8 +1733,8 @@ QTabBar::tab {
}
QTabBar::tab:selected, QTabBar::tab:hover {
- background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
- stop: 0 #fafafa, stop: 0.4 #f4f4f4,
+ background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
+ stop: 0 #fafafa, stop: 0.4 #f4f4f4,
stop: 0.5 #e7e7e7, stop: 1.0 #fafafa);
}
@@ -1914,3 +1957,14 @@ QTreeView::branch:open:has-children:has-siblings {
image: url(branch-open.png);
}
//! [158]
+
+//! [159]
+QTabBar::close-button {
+ image: url(close.png)
+ subcontrol-position: left;
+}
+QTabBar::close-button:hover {
+ image: url(close-hover.png)
+}
+
+//! [159]
diff --git a/doc/src/snippets/code/doc_src_symbian-introduction.qdoc b/doc/src/snippets/code/doc_src_symbian-introduction.qdoc
new file mode 100644
index 000000000..8949df64e
--- /dev/null
+++ b/doc/src/snippets/code/doc_src_symbian-introduction.qdoc
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+//! [0]
+ qmake
+//! [0]
+
+
+//! [1]
+ make debug-winscw
+//! [1]
+
+//! [2]
+ qmake
+ make debug-winscw release-armv5
+ make sis
+//! [2]
+
+//! [3]
+ make sis QT_SIS_TARGET=debug-armv5
+//! [3]
+
+//! [4]
+ set QT_SIS_TARGET=debug-armv5
+ make sis
+//! [4]
+
+//! [5]
+ set QT_SIS_OPTIONS=-i
+ make sis
+//! [5]
diff --git a/doc/src/snippets/code/doc_src_uic.qdoc b/doc/src/snippets/code/doc_src_uic.qdoc
index 310e839c8..be57ad434 100644
--- a/doc/src/snippets/code/doc_src_uic.qdoc
+++ b/doc/src/snippets/code/doc_src_uic.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
uic [options] <uifile>
//! [0]
diff --git a/doc/src/snippets/code/doc_src_unicode.qdoc b/doc/src/snippets/code/doc_src_unicode.qdoc
index 30a37108d..af5e81624 100644
--- a/doc/src/snippets/code/doc_src_unicode.qdoc
+++ b/doc/src/snippets/code/doc_src_unicode.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
label->setText("Password:");
//! [0]
diff --git a/doc/src/snippets/code/doc_src_unix-signal-handlers.qdoc b/doc/src/snippets/code/doc_src_unix-signal-handlers.qdoc
index 8abcba69a..c712039dc 100644
--- a/doc/src/snippets/code/doc_src_unix-signal-handlers.qdoc
+++ b/doc/src/snippets/code/doc_src_unix-signal-handlers.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
class MyDaemon : public QObject
{
diff --git a/doc/src/snippets/code/doc_src_wince-customization.qdoc b/doc/src/snippets/code/doc_src_wince-customization.qdoc
index 039923151..b7492d773 100644
--- a/doc/src/snippets/code/doc_src_wince-customization.qdoc
+++ b/doc/src/snippets/code/doc_src_wince-customization.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
wince<version><SDK-shortcut>-[architecture]-msvc2005
//! [0]
diff --git a/doc/src/snippets/code/doc_src_wince-introduction.qdoc b/doc/src/snippets/code/doc_src_wince-introduction.qdoc
index ffb4cfb1d..a8f5e92c3 100644
--- a/doc/src/snippets/code/doc_src_wince-introduction.qdoc
+++ b/doc/src/snippets/code/doc_src_wince-introduction.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
qmake
nmake
diff --git a/doc/src/snippets/code/doc_src_wince-opengl.qdoc b/doc/src/snippets/code/doc_src_wince-opengl.qdoc
index db2bfaa01..64ea9f50f 100644
--- a/doc/src/snippets/code/doc_src_wince-opengl.qdoc
+++ b/doc/src/snippets/code/doc_src_wince-opengl.qdoc
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
configure -platform win32-msvc2005 -xplatform wincewm50pocket-msvc2005 -opengl-es-cl
//! [0]
diff --git a/doc/src/snippets/code/src.gui.text.qtextdocumentwriter.cpp b/doc/src/snippets/code/src.gui.text.qtextdocumentwriter.cpp
index 3f206ea2b..66ef28333 100644
--- a/doc/src/snippets/code/src.gui.text.qtextdocumentwriter.cpp
+++ b/doc/src/snippets/code/src.gui.text.qtextdocumentwriter.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QTextDocumentWriter writer;
writer.setFormat("odf"); // same as writer.setFormat("ODF");
diff --git a/doc/src/snippets/code/src.qdbus.qdbuspendingcall.cpp b/doc/src/snippets/code/src.qdbus.qdbuspendingcall.cpp
index c9b3b7c98..e6ab6921e 100644
--- a/doc/src/snippets/code/src.qdbus.qdbuspendingcall.cpp
+++ b/doc/src/snippets/code/src.qdbus.qdbuspendingcall.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
{
//! [0]
QDBusPendingCall async = iface->asyncCall("RemoteMethod", value1, value2);
diff --git a/doc/src/snippets/code/src.qdbus.qdbuspendingreply.cpp b/doc/src/snippets/code/src.qdbus.qdbuspendingreply.cpp
index 49363a813..80ac6fd8e 100644
--- a/doc/src/snippets/code/src.qdbus.qdbuspendingreply.cpp
+++ b/doc/src/snippets/code/src.qdbus.qdbuspendingreply.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
{
//! [0]
QDBusPendingReply<QString> reply = interface->asyncCall("RemoteMethod");
diff --git a/doc/src/snippets/code/src.scripttools.qscriptenginedebugger.cpp b/doc/src/snippets/code/src.scripttools.qscriptenginedebugger.cpp
index f81611c30..a75e63ca3 100644
--- a/doc/src/snippets/code/src.scripttools.qscriptenginedebugger.cpp
+++ b/doc/src/snippets/code/src.scripttools.qscriptenginedebugger.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QScriptEngine engine;
QScriptEngineDebugger debugger;
diff --git a/doc/src/snippets/code/src_activeqt_container_qaxbase.cpp b/doc/src/snippets/code/src_activeqt_container_qaxbase.cpp
index 219fb7095..05bb9eae4 100644
--- a/doc/src/snippets/code/src_activeqt_container_qaxbase.cpp
+++ b/doc/src/snippets/code/src_activeqt_container_qaxbase.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
connect(buttonBack, SIGNAL(clicked()), webBrowser, SLOT(GoBack()));
//! [0]
diff --git a/doc/src/snippets/code/src_activeqt_container_qaxscript.cpp b/doc/src/snippets/code/src_activeqt_container_qaxscript.cpp
index 07fca1ec7..f0dcb8f11 100644
--- a/doc/src/snippets/code/src_activeqt_container_qaxscript.cpp
+++ b/doc/src/snippets/code/src_activeqt_container_qaxscript.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
function setNumber(number)
{
diff --git a/doc/src/snippets/code/src_activeqt_control_qaxbindable.cpp b/doc/src/snippets/code/src_activeqt_control_qaxbindable.cpp
index c296789b6..400579edb 100644
--- a/doc/src/snippets/code/src_activeqt_control_qaxbindable.cpp
+++ b/doc/src/snippets/code/src_activeqt_control_qaxbindable.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
class MyActiveX : public QWidget, public QAxBindable
{
diff --git a/doc/src/snippets/code/src_activeqt_control_qaxfactory.cpp b/doc/src/snippets/code/src_activeqt_control_qaxfactory.cpp
index 6eca43402..e1ee5b070 100644
--- a/doc/src/snippets/code/src_activeqt_control_qaxfactory.cpp
+++ b/doc/src/snippets/code/src_activeqt_control_qaxfactory.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QStringList ActiveQtFactory::featureList() const
{
diff --git a/doc/src/snippets/code/src_corelib_codecs_qtextcodec.cpp b/doc/src/snippets/code/src_corelib_codecs_qtextcodec.cpp
index 1dfd325bf..4e77e04fa 100644
--- a/doc/src/snippets/code/src_corelib_codecs_qtextcodec.cpp
+++ b/doc/src/snippets/code/src_corelib_codecs_qtextcodec.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QByteArray encodedString = "...";
QTextCodec *codec = QTextCodec::codecForName("KOI8-R");
diff --git a/doc/src/snippets/code/src_corelib_codecs_qtextcodecplugin.cpp b/doc/src/snippets/code/src_corelib_codecs_qtextcodecplugin.cpp
index a6870b802..2d4299fe7 100644
--- a/doc/src/snippets/code/src_corelib_codecs_qtextcodecplugin.cpp
+++ b/doc/src/snippets/code/src_corelib_codecs_qtextcodecplugin.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QList<QByteArray> MyCodecPlugin::names() const
{
diff --git a/doc/src/snippets/code/src_corelib_concurrent_qfuture.cpp b/doc/src/snippets/code/src_corelib_concurrent_qfuture.cpp
index 24fc791cb..d9f27c705 100644
--- a/doc/src/snippets/code/src_corelib_concurrent_qfuture.cpp
+++ b/doc/src/snippets/code/src_corelib_concurrent_qfuture.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QFuture<QString> future = ...;
diff --git a/doc/src/snippets/code/src_corelib_concurrent_qfuturesynchronizer.cpp b/doc/src/snippets/code/src_corelib_concurrent_qfuturesynchronizer.cpp
index a50a99e86..8a57784cd 100644
--- a/doc/src/snippets/code/src_corelib_concurrent_qfuturesynchronizer.cpp
+++ b/doc/src/snippets/code/src_corelib_concurrent_qfuturesynchronizer.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
void someFunction()
{
diff --git a/doc/src/snippets/code/src_corelib_concurrent_qfuturewatcher.cpp b/doc/src/snippets/code/src_corelib_concurrent_qfuturewatcher.cpp
index e1f06ccc2..31ef2a10a 100644
--- a/doc/src/snippets/code/src_corelib_concurrent_qfuturewatcher.cpp
+++ b/doc/src/snippets/code/src_corelib_concurrent_qfuturewatcher.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
// Instantiate the objects and connect to the finished signal.
MyClass myObject;
diff --git a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentexception.cpp b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentexception.cpp
index 8b4d10acb..d5842a83e 100644
--- a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentexception.cpp
+++ b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentexception.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
class MyException : public QtConcurrent::Exception
diff --git a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp
index d284d0245..f58e5d638 100644
--- a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp
+++ b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
bool function(const T &t);
//! [0]
diff --git a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp
index cbff31892..25adf9b25 100644
--- a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp
+++ b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
U function(const T &t);
//! [0]
diff --git a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp
index 99583ba25..b5ce0cedf 100644
--- a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp
+++ b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
extern void aFunction();
QFuture<void> future = QtConcurrent::run(aFunction);
diff --git a/doc/src/snippets/code/src_corelib_concurrent_qthreadpool.cpp b/doc/src/snippets/code/src_corelib_concurrent_qthreadpool.cpp
index 327a00ffa..22de7d423 100644
--- a/doc/src/snippets/code/src_corelib_concurrent_qthreadpool.cpp
+++ b/doc/src/snippets/code/src_corelib_concurrent_qthreadpool.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
class HelloWorldTask : public QRunnable
{
diff --git a/doc/src/snippets/code/src_corelib_global_qglobal.cpp b/doc/src/snippets/code/src_corelib_global_qglobal.cpp
index 50052c31a..16b1073f5 100644
--- a/doc/src/snippets/code/src_corelib_global_qglobal.cpp
+++ b/doc/src/snippets/code/src_corelib_global_qglobal.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
label->setAlignment(Qt::AlignLeft | Qt::AlignTop);
//! [0]
@@ -488,3 +529,6 @@ class MyClass : public QObject
qFuzzyCompare(1 + 0.0, 1 + 1.0e-200); // This will return true
//! [46]
+//! [47]
+CApaApplication *myApplicationFactory();
+//! [47]
diff --git a/doc/src/snippets/code/src_corelib_io_qabstractfileengine.cpp b/doc/src/snippets/code/src_corelib_io_qabstractfileengine.cpp
index a7d7c7544..c8a9810c4 100644
--- a/doc/src/snippets/code/src_corelib_io_qabstractfileengine.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qabstractfileengine.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
class ZipEngineHandler : public QAbstractFileEngineHandler
{
diff --git a/doc/src/snippets/code/src_corelib_io_qdatastream.cpp b/doc/src/snippets/code/src_corelib_io_qdatastream.cpp
index c1f34694e..5ab8efd5f 100644
--- a/doc/src/snippets/code/src_corelib_io_qdatastream.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qdatastream.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
void wrapInFunction()
{
diff --git a/doc/src/snippets/code/src_corelib_io_qdir.cpp b/doc/src/snippets/code/src_corelib_io_qdir.cpp
index 4af4d4b73..eea589d07 100644
--- a/doc/src/snippets/code/src_corelib_io_qdir.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qdir.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
void wrapInFunction()
{
diff --git a/doc/src/snippets/code/src_corelib_io_qdiriterator.cpp b/doc/src/snippets/code/src_corelib_io_qdiriterator.cpp
index 2983a2581..c1c86e1d2 100644
--- a/doc/src/snippets/code/src_corelib_io_qdiriterator.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qdiriterator.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QDirIterator it("/etc", QDirIterator::Subdirectories);
while (it.hasNext()) {
diff --git a/doc/src/snippets/code/src_corelib_io_qfile.cpp b/doc/src/snippets/code/src_corelib_io_qfile.cpp
index 84b8b4aec..aaed886c8 100644
--- a/doc/src/snippets/code/src_corelib_io_qfile.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qfile.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QFile file;
QDir::setCurrent("/tmp");
diff --git a/doc/src/snippets/code/src_corelib_io_qfileinfo.cpp b/doc/src/snippets/code/src_corelib_io_qfileinfo.cpp
index 89b4f33ae..cbd37424d 100644
--- a/doc/src/snippets/code/src_corelib_io_qfileinfo.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qfileinfo.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//![newstuff]
QFileInfo fi("c:/temp/foo"); => fi.absoluteFilePath() => "C:/temp/foo"
@@ -31,9 +72,9 @@ info1.size(); // returns 743
info1.symLinkTarget(); // returns "C:/Pretty++/untabify"
QFileInfo info2(info1.symLinkTarget());
-info1.isSymLink(); // returns false
-info1.absoluteFilePath(); // returns "C:/Pretty++/untabify"
-info1.size(); // returns 63942
+info2.isSymLink(); // returns false
+info2.absoluteFilePath(); // returns "C:/Pretty++/untabify"
+info2.size(); // returns 63942
#endif
//! [1]
diff --git a/doc/src/snippets/code/src_corelib_io_qiodevice.cpp b/doc/src/snippets/code/src_corelib_io_qiodevice.cpp
index 422ca1151..57ef31841 100644
--- a/doc/src/snippets/code/src_corelib_io_qiodevice.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qiodevice.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QProcess gzip;
gzip.start("gzip", QStringList() << "-c");
diff --git a/doc/src/snippets/code/src_corelib_io_qprocess.cpp b/doc/src/snippets/code/src_corelib_io_qprocess.cpp
index 6eb8ccbb8..55400bd02 100644
--- a/doc/src/snippets/code/src_corelib_io_qprocess.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qprocess.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
void wrapInFunction()
{
@@ -32,7 +73,7 @@ command1 | command2
QProcess process1;
QProcess process2;
-process1.setStandardOutputProcess(process2);
+process1.setStandardOutputProcess(&process2);
process1.start("command1");
process2.start("command2");
diff --git a/doc/src/snippets/code/src_corelib_io_qsettings.cpp b/doc/src/snippets/code/src_corelib_io_qsettings.cpp
index dfe666fd4..427366606 100644
--- a/doc/src/snippets/code/src_corelib_io_qsettings.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qsettings.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QSettings settings("MySoft", "Star Runner");
QColor color = settings.value("DataPump/bgcolor").value<QColor>();
@@ -268,7 +309,7 @@ int main(int argc, char *argv[])
const QSettings::Format XmlFormat =
QSettings::registerFormat("xml", readXmlFile, writeXmlFile);
- QSettings settings(XmlFormat, QSettings::UserSettings, "MySoft",
+ QSettings settings(XmlFormat, QSettings::UserScope, "MySoft",
"Star Runner");
...
diff --git a/doc/src/snippets/code/src_corelib_io_qtemporaryfile.cpp b/doc/src/snippets/code/src_corelib_io_qtemporaryfile.cpp
index adb8a7164..7b56d26f2 100644
--- a/doc/src/snippets/code/src_corelib_io_qtemporaryfile.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qtemporaryfile.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
{
//! [0]
// Within a function/method...
diff --git a/doc/src/snippets/code/src_corelib_io_qtextstream.cpp b/doc/src/snippets/code/src_corelib_io_qtextstream.cpp
index e85fcc1c3..8b521140c 100644
--- a/doc/src/snippets/code/src_corelib_io_qtextstream.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qtextstream.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QFile data("output.txt");
if (data.open(QFile::WriteOnly | QFile::Truncate)) {
diff --git a/doc/src/snippets/code/src_corelib_io_qurl.cpp b/doc/src/snippets/code/src_corelib_io_qurl.cpp
index c058e4bb6..9070a4896 100644
--- a/doc/src/snippets/code/src_corelib_io_qurl.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qurl.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QUrl url("http://www.example.com/List of holidays.xml");
// url.toEncoded() == "http://www.example.com/List%20of%20holidays.xml"
diff --git a/doc/src/snippets/code/src_corelib_kernel_qabstracteventdispatcher.cpp b/doc/src/snippets/code/src_corelib_kernel_qabstracteventdispatcher.cpp
index a531f22fc..7170becb5 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qabstracteventdispatcher.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qabstracteventdispatcher.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
bool myEventFilter(void *message);
//! [0]
diff --git a/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp b/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp
index 31576d5a7..9f2610f85 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
beginInsertRows(parent, 2, 4);
//! [0]
diff --git a/doc/src/snippets/code/src_corelib_kernel_qcoreapplication.cpp b/doc/src/snippets/code/src_corelib_kernel_qcoreapplication.cpp
index 748d8947a..61491a5fb 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qcoreapplication.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qcoreapplication.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QMouseEvent event(QEvent::MouseButtonPress, pos, 0, 0, 0);
QApplication::sendEvent(mainWindow, &event);
diff --git a/doc/src/snippets/code/src_corelib_kernel_qmetaobject.cpp b/doc/src/snippets/code/src_corelib_kernel_qmetaobject.cpp
index c181a4080..dc13fac20 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qmetaobject.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qmetaobject.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
void wrapInFunction()
{
diff --git a/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp b/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp
index 783852bbb..d912b4627 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
struct MyStruct
{
diff --git a/doc/src/snippets/code/src_corelib_kernel_qmimedata.cpp b/doc/src/snippets/code/src_corelib_kernel_qmimedata.cpp
index 94f1dc904..2ddc71708 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qmimedata.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qmimedata.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
void MyWidget::dragEnterEvent(QDragEnterEvent *event)
{
diff --git a/doc/src/snippets/code/src_corelib_kernel_qobject.cpp b/doc/src/snippets/code/src_corelib_kernel_qobject.cpp
index 5c0f80c8d..88d80252c 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qobject.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qobject.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QLineEdit *lineEdit = static_cast<QLineEdit *>(
qt_find_obj_child(myWidget, "QLineEdit", "my line edit"));
@@ -39,10 +80,10 @@ timer->inherits("QTimer"); // returns true
timer->inherits("QObject"); // returns true
timer->inherits("QAbstractButton"); // returns false
-// QLayout inherits QObject and QLayoutItem
-QLayout *layout = new QLayout;
+// QVBoxLayout inherits QObject and QLayoutItem
+QVBoxLayout *layout = new QVBoxLayout;
layout->inherits("QObject"); // returns true
-layout->inherits("QLayoutItem"); // returns false
+layout->inherits("QLayoutItem"); // returns true (even though QLayoutItem is not a QObject)
//! [4]
@@ -194,9 +235,8 @@ MyWindow::MyWindow()
{
QLabel *senderLabel = new QLabel(tr("Name:"));
QLabel *recipientLabel = new QLabel(tr("Name:", "recipient"));
- ...
-}
//! [17]
+}
//! [18]
@@ -363,9 +403,25 @@ public:
//! [38]
-//! [39]
-Q_FLAGS(Options Alignment)
-//! [39]
+//! [39a]
+class QLibrary : public QObject
+{
+ ...
+ Q_FLAGS(LoadHint LoadHints)
+ ...
+//! [39a]
+
+//! [39b]
+ ...
+public:
+ enum LoadHint {
+ ResolveAllSymbolsHint = 0x01,
+ ExportExternalSymbolsHint = 0x02,
+ LoadArchiveMemberHint = 0x04
+ };
+ Q_DECLARE_FLAGS(LoadHints, LoadHint)
+ ...
+//! [39b]
//! [40]
diff --git a/doc/src/snippets/code/src_corelib_kernel_qsystemsemaphore.cpp b/doc/src/snippets/code/src_corelib_kernel_qsystemsemaphore.cpp
index cd5665f27..58fc22387 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qsystemsemaphore.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qsystemsemaphore.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QSystemSemaphore sem("market", 3, QSystemSemaphore::Create);
// resources available == 3
diff --git a/doc/src/snippets/code/src_corelib_kernel_qtimer.cpp b/doc/src/snippets/code/src_corelib_kernel_qtimer.cpp
index 02cdc0a68..2bc5e0a73 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qtimer.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qtimer.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#include <QApplication>
#include <QTimer>
diff --git a/doc/src/snippets/code/src_corelib_kernel_qvariant.cpp b/doc/src/snippets/code/src_corelib_kernel_qvariant.cpp
index ef19dbbea..41a9cb390 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qvariant.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qvariant.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QDataStream out(...);
QVariant v(123); // The variant now contains an int
@@ -24,7 +65,6 @@ QVariant x, y(QString()), z(QString(""));
x.convert(QVariant::Int);
// x.isNull() == true
// y.isNull() == true, z.isNull() == false
-// y.isEmpty() == true, z.isEmpty() == true
//! [1]
diff --git a/doc/src/snippets/code/src_corelib_plugin_qlibrary.cpp b/doc/src/snippets/code/src_corelib_plugin_qlibrary.cpp
index 06590610c..5bc6710a3 100644
--- a/doc/src/snippets/code/src_corelib_plugin_qlibrary.cpp
+++ b/doc/src/snippets/code/src_corelib_plugin_qlibrary.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QLibrary myLib("mylib");
typedef void (*MyPrototype)();
diff --git a/doc/src/snippets/code/src_corelib_plugin_quuid.cpp b/doc/src/snippets/code/src_corelib_plugin_quuid.cpp
index 5c91afc4e..f9ff4e765 100644
--- a/doc/src/snippets/code/src_corelib_plugin_quuid.cpp
+++ b/doc/src/snippets/code/src_corelib_plugin_quuid.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
// {67C8770B-44F1-410A-AB9A-F9B5446F13EE}
QUuid IID_MyInterface(0x67c8770b, 0x44f1, 0x410a, 0xab, 0x9a, 0xf9, 0xb5, 0x44, 0x6f, 0x13, 0xee)
diff --git a/doc/src/snippets/code/src_corelib_statemachine_qstatemachine.cpp b/doc/src/snippets/code/src_corelib_statemachine_qstatemachine.cpp
new file mode 100644
index 000000000..8933ef364
--- /dev/null
+++ b/doc/src/snippets/code/src_corelib_statemachine_qstatemachine.cpp
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+//! [simple state machine]
+QPushButton button;
+
+QStateMachine machine;
+QState *s1 = new QState();
+s1->assignProperty(&button, "text", "Click me");
+
+QFinalState *s2 = new QFinalState();
+s1->addTransition(&button, SIGNAL(clicked()), s2);
+
+machine.addState(s1);
+machine.addState(s2);
+machine.setInitialState(s1);
+machine.start();
+//! [simple state machine]
diff --git a/doc/src/snippets/code/src_corelib_thread_qatomic.cpp b/doc/src/snippets/code/src_corelib_thread_qatomic.cpp
index 3f67ddf8e..563e5e643 100644
--- a/doc/src/snippets/code/src_corelib_thread_qatomic.cpp
+++ b/doc/src/snippets/code/src_corelib_thread_qatomic.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
MySharedType &MySharedType::operator=(const MySharedType &other)
{
diff --git a/doc/src/snippets/code/src_corelib_thread_qmutex.cpp b/doc/src/snippets/code/src_corelib_thread_qmutex.cpp
index e79bb35a2..5f3b96119 100644
--- a/doc/src/snippets/code/src_corelib_thread_qmutex.cpp
+++ b/doc/src/snippets/code/src_corelib_thread_qmutex.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
int number = 6;
diff --git a/doc/src/snippets/code/src_corelib_thread_qmutexpool.cpp b/doc/src/snippets/code/src_corelib_thread_qmutexpool.cpp
index 8e64a3605..af14fc0dc 100644
--- a/doc/src/snippets/code/src_corelib_thread_qmutexpool.cpp
+++ b/doc/src/snippets/code/src_corelib_thread_qmutexpool.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
class Number {
public:
diff --git a/doc/src/snippets/code/src_corelib_thread_qreadwritelock.cpp b/doc/src/snippets/code/src_corelib_thread_qreadwritelock.cpp
index dd4f53399..46320de61 100644
--- a/doc/src/snippets/code/src_corelib_thread_qreadwritelock.cpp
+++ b/doc/src/snippets/code/src_corelib_thread_qreadwritelock.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QReadWriteLock lock;
diff --git a/doc/src/snippets/code/src_corelib_thread_qsemaphore.cpp b/doc/src/snippets/code/src_corelib_thread_qsemaphore.cpp
index e02f05e28..e7d7c0be0 100644
--- a/doc/src/snippets/code/src_corelib_thread_qsemaphore.cpp
+++ b/doc/src/snippets/code/src_corelib_thread_qsemaphore.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QSemaphore sem(5); // sem.available() == 5
diff --git a/doc/src/snippets/code/src_corelib_thread_qthread.cpp b/doc/src/snippets/code/src_corelib_thread_qthread.cpp
index 58c35e566..4e55a01b1 100644
--- a/doc/src/snippets/code/src_corelib_thread_qthread.cpp
+++ b/doc/src/snippets/code/src_corelib_thread_qthread.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
class MyThread : public QThread
{
diff --git a/doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp b/doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp
index 5c83d973e..8648eb0ff 100644
--- a/doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp
+++ b/doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
forever {
mutex.lock();
diff --git a/doc/src/snippets/code/src_corelib_tools_qbitarray.cpp b/doc/src/snippets/code/src_corelib_tools_qbitarray.cpp
index e931d40db..8f8a696d8 100644
--- a/doc/src/snippets/code/src_corelib_tools_qbitarray.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qbitarray.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QBitArray ba(200);
//! [0]
diff --git a/doc/src/snippets/code/src_corelib_tools_qbytearray.cpp b/doc/src/snippets/code/src_corelib_tools_qbytearray.cpp
index c113b7260..52fbd1a8f 100644
--- a/doc/src/snippets/code/src_corelib_tools_qbytearray.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qbytearray.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
void wrapInFunction()
{
@@ -193,7 +234,7 @@ ba.indexOf("X"); // returns -1
//! [23]
QByteArray x("crazy azimuths");
-QByteArray y("azy");
+QByteArray y("az");
x.lastIndexOf(y); // returns 6
x.lastIndexOf(y, 6); // returns 6
x.lastIndexOf(y, 5); // returns 2
diff --git a/doc/src/snippets/code/src_corelib_tools_qdatetime.cpp b/doc/src/snippets/code/src_corelib_tools_qdatetime.cpp
index a1424f41e..88c3335f4 100644
--- a/doc/src/snippets/code/src_corelib_tools_qdatetime.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qdatetime.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QDate d1(1995, 5, 17); // May 17, 1995
QDate d2(1995, 5, 20); // May 20, 1995
diff --git a/doc/src/snippets/code/src_corelib_tools_qeasingcurve.cpp b/doc/src/snippets/code/src_corelib_tools_qeasingcurve.cpp
index 65358eaeb..2e6b965f6 100644
--- a/doc/src/snippets/code/src_corelib_tools_qeasingcurve.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qeasingcurve.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
qreal myEasingFunction(qreal progress);
//! [0]
diff --git a/doc/src/snippets/code/src_corelib_tools_qhash.cpp b/doc/src/snippets/code/src_corelib_tools_qhash.cpp
index 05f6eb306..19b9eb4d6 100644
--- a/doc/src/snippets/code/src_corelib_tools_qhash.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qhash.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QHash<QString, int> hash;
//! [0]
diff --git a/doc/src/snippets/code/src_corelib_tools_qlinkedlist.cpp b/doc/src/snippets/code/src_corelib_tools_qlinkedlist.cpp
index 3d63b2cb0..7af4994c8 100644
--- a/doc/src/snippets/code/src_corelib_tools_qlinkedlist.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qlinkedlist.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QLinkedList<int> integerList;
QLinkedList<QTime> timeList;
diff --git a/doc/src/snippets/code/src_corelib_tools_qlistdata.cpp b/doc/src/snippets/code/src_corelib_tools_qlistdata.cpp
index 3b9a75658..10e38c50f 100644
--- a/doc/src/snippets/code/src_corelib_tools_qlistdata.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qlistdata.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QList<int> integerList;
QList<QDate> dateList;
diff --git a/doc/src/snippets/code/src_corelib_tools_qlocale.cpp b/doc/src/snippets/code/src_corelib_tools_qlocale.cpp
index 37ddb4e52..9f666e6d4 100644
--- a/doc/src/snippets/code/src_corelib_tools_qlocale.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qlocale.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QLocale egyptian(QLocale::Arabic, QLocale::Egypt);
QString s1 = egyptian.toString(1.571429E+07, 'e');
diff --git a/doc/src/snippets/code/src_corelib_tools_qmap.cpp b/doc/src/snippets/code/src_corelib_tools_qmap.cpp
index 924ed2288..9dde198b1 100644
--- a/doc/src/snippets/code/src_corelib_tools_qmap.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qmap.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QMap<QString, int> map;
//! [0]
diff --git a/doc/src/snippets/code/src_corelib_tools_qpoint.cpp b/doc/src/snippets/code/src_corelib_tools_qpoint.cpp
index f16d856d7..346ee75dc 100644
--- a/doc/src/snippets/code/src_corelib_tools_qpoint.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qpoint.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QPoint p;
diff --git a/doc/src/snippets/code/src_corelib_tools_qqueue.cpp b/doc/src/snippets/code/src_corelib_tools_qqueue.cpp
index da4c4a644..78157be9c 100644
--- a/doc/src/snippets/code/src_corelib_tools_qqueue.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qqueue.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QQueue<int> queue;
queue.enqueue(1);
diff --git a/doc/src/snippets/code/src_corelib_tools_qrect.cpp b/doc/src/snippets/code/src_corelib_tools_qrect.cpp
index fdab50674..488eac33c 100644
--- a/doc/src/snippets/code/src_corelib_tools_qrect.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qrect.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QRect r1(100, 200, 11, 16);
QRect r2(QPoint(100, 200), QSize(11, 16));
diff --git a/doc/src/snippets/code/src_corelib_tools_qregexp.cpp b/doc/src/snippets/code/src_corelib_tools_qregexp.cpp
index c41cd067b..0669b2af8 100644
--- a/doc/src/snippets/code/src_corelib_tools_qregexp.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qregexp.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QRegExp rx("(\\d+)");
QString str = "Offsets: 12 14 99 231 7";
diff --git a/doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp b/doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp
new file mode 100644
index 000000000..af2a05f8e
--- /dev/null
+++ b/doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp
@@ -0,0 +1,144 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+//! [0]
+void myFunction(bool useSubClass)
+{
+ MyClass *p = useSubClass ? new MyClass() : new MySubClass;
+ QIODevice *device = handsOverOwnership();
+
+ if (m_value > 3) {
+ delete p;
+ delete device;
+ return;
+ }
+
+ try {
+ process(device);
+ }
+ catch (...) {
+ delete p;
+ delete device;
+ throw;
+ }
+
+ delete p;
+ delete device;
+}
+//! [0]
+
+//! [1]
+void myFunction(bool useSubClass)
+{
+ // assuming that MyClass has a virtual destructor
+ QScopedPointer<MyClass> p(useSubClass ? new MyClass() : new MySubClass);
+ QScopedPointer<QIODevice> device(handsOverOwnership());
+
+ if (m_value > 3)
+ return;
+
+ process(device);
+}
+//! [1]
+
+//! [2]
+ const QWidget *const p = new QWidget();
+ // is equivalent to:
+ const QScopedPointer<const QWidget> p(new QWidget());
+
+ QWidget *const p = new QWidget();
+ // is equivalent to:
+ const QScopedPointer<QWidget> p(new QWidget());
+
+ QWidget *const p = new QWidget();
+ // is equivalent to:
+ const QScopedPointer<QWidget> p(new QWidget());
+
+ const QWidget *p = new QWidget();
+ // is equivalent to:
+ QScopedPointer<const QWidget> p(new QWidget());
+
+//! [2]
+
+//! [3]
+if (scopedPointer) {
+ ...
+}
+//! [3]
+
+//! [4]
+class MyPrivateClass; // forward declare MyPrivateClass
+
+class MyClass
+{
+private:
+ QScopedPointer<MyPrivateClass> privatePtr; // QScopedPointer to forward declared class
+
+public:
+ MyClass(); // OK
+ inline ~MyClass() {} // VIOLATION - Destructor must not be inline
+
+private:
+ Q_DISABLE_COPY(MyClass) // OK - copy constructor and assignment operators
+ // are now disabled, so the compiler won't implicitely
+ // generate them.
+};
+//! [4]
+
+//! [5]
+// this QScopedPointer deletes its data using the delete[] operator:
+QScopedPointer<int, QScopedPointerArrayDeleter<int> > arrayPointer(new int[42]);
+
+// this QScopedPointer frees its data using free():
+QScopedPointer<int, QScopedPointerPodDeleter<int> > podPointer(reinterpret_cast<int *>(malloc(42)));
+
+// this struct calls "myCustomDeallocator" to delete the pointer
+struct ScopedPointerCustomDeleter
+{
+ static inline void cleanup(MyCustomClass *pointer)
+ {
+ myCustomDeallocator(pointer);
+ }
+};
+
+// QScopedPointer using a custom deleter:
+QScopedPointer<MyCustomClass, ScopedPointerCustomDeleter> customPointer(new MyCustomClass);
+//! [5]
diff --git a/doc/src/snippets/code/src_corelib_tools_qsize.cpp b/doc/src/snippets/code/src_corelib_tools_qsize.cpp
index 4804dd04e..5af79e5e4 100644
--- a/doc/src/snippets/code/src_corelib_tools_qsize.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qsize.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QSize t1(10, 12);
t1.scale(60, 60, Qt::IgnoreAspectRatio);
diff --git a/doc/src/snippets/code/src_corelib_tools_qstring.cpp b/doc/src/snippets/code/src_corelib_tools_qstring.cpp
index 13cdbd5be..90051a2b2 100644
--- a/doc/src/snippets/code/src_corelib_tools_qstring.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qstring.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
DEFINES += QT_NO_CAST_FROM_ASCII \
QT_NO_CAST_TO_ASCII
diff --git a/doc/src/snippets/code/src_corelib_tools_qtimeline.cpp b/doc/src/snippets/code/src_corelib_tools_qtimeline.cpp
index a16205f6e..5b87c6a64 100644
--- a/doc/src/snippets/code/src_corelib_tools_qtimeline.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qtimeline.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
...
progressBar = new QProgressBar(this);
diff --git a/doc/src/snippets/code/src_corelib_tools_qvector.cpp b/doc/src/snippets/code/src_corelib_tools_qvector.cpp
index bbe7ca288..34c5a3788 100644
--- a/doc/src/snippets/code/src_corelib_tools_qvector.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qvector.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QVector<int> integerVector;
QVector<QString> stringVector;
diff --git a/doc/src/snippets/code/src_corelib_xml_qxmlstream.cpp b/doc/src/snippets/code/src_corelib_xml_qxmlstream.cpp
index b445a615a..224ba93c5 100644
--- a/doc/src/snippets/code/src_corelib_xml_qxmlstream.cpp
+++ b/doc/src/snippets/code/src_corelib_xml_qxmlstream.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QXmlStreamReader xml;
...
diff --git a/doc/src/snippets/code/src_gui_accessible_qaccessible.cpp b/doc/src/snippets/code/src_gui_accessible_qaccessible.cpp
index 69ebeb2a6..de7ed0cb6 100644
--- a/doc/src/snippets/code/src_gui_accessible_qaccessible.cpp
+++ b/doc/src/snippets/code/src_gui_accessible_qaccessible.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QAccessibleInterface *child = 0;
int targetChild = object->navigate(Accessible::Child, 1, &child);
diff --git a/doc/src/snippets/code/src_gui_dialogs_qabstractprintdialog.cpp b/doc/src/snippets/code/src_gui_dialogs_qabstractprintdialog.cpp
index e947bd7a1..55939e18e 100644
--- a/doc/src/snippets/code/src_gui_dialogs_qabstractprintdialog.cpp
+++ b/doc/src/snippets/code/src_gui_dialogs_qabstractprintdialog.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QPrintDialog printDialog(printer, parent);
if (printDialog.exec() == QDialog::Accepted) {
diff --git a/doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp b/doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp
index 6962f4d0f..3d4fa4fa1 100644
--- a/doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp
+++ b/doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
fileName = QFileDialog::getOpenFileName(this,
tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)"));
diff --git a/doc/src/snippets/code/src_gui_dialogs_qfontdialog.cpp b/doc/src/snippets/code/src_gui_dialogs_qfontdialog.cpp
index f1b06ece6..ef6eec30c 100644
--- a/doc/src/snippets/code/src_gui_dialogs_qfontdialog.cpp
+++ b/doc/src/snippets/code/src_gui_dialogs_qfontdialog.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
bool ok;
QFont font = QFontDialog::getFont(
diff --git a/doc/src/snippets/code/src_gui_dialogs_qmessagebox.cpp b/doc/src/snippets/code/src_gui_dialogs_qmessagebox.cpp
index ff0d12880..37f9530f2 100644
--- a/doc/src/snippets/code/src_gui_dialogs_qmessagebox.cpp
+++ b/doc/src/snippets/code/src_gui_dialogs_qmessagebox.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
int ret = QMessageBox::warning(this, tr("My Application"),
tr("The document has been modified.\n"
diff --git a/doc/src/snippets/code/src_gui_dialogs_qwizard.cpp b/doc/src/snippets/code/src_gui_dialogs_qwizard.cpp
index 7890e131f..2774c11d8 100644
--- a/doc/src/snippets/code/src_gui_dialogs_qwizard.cpp
+++ b/doc/src/snippets/code/src_gui_dialogs_qwizard.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
int LicenseWizard::nextId() const
{
diff --git a/doc/src/snippets/code/src_gui_effects_qgraphicseffect.cpp b/doc/src/snippets/code/src_gui_effects_qgraphicseffect.cpp
new file mode 100644
index 000000000..5ef6609cf
--- /dev/null
+++ b/doc/src/snippets/code/src_gui_effects_qgraphicseffect.cpp
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+//! [0]
+MyGraphicsOpacityEffect::draw(QPainter *painter)
+{
+ // Fully opaque; draw directly without going through a pixmap.
+ if (qFuzzyCompare(m_opacity, 1)) {
+ drawSource(painter);
+ return;
+ }
+ ...
+}
+//! [0]
+
+//! [1]
+MyGraphicsEffect::draw(QPainter *painter)
+{
+ ...
+ QPoint offset;
+ if (sourceIsPixmap()) {
+ // No point in drawing in device coordinates (pixmap will be scaled anyways).
+ const QPixmap pixmap = sourcePixmap(Qt::LogicalCoordinates, &offset);
+ ...
+ painter->drawPixmap(offset, pixmap);
+ } else {
+ // Draw pixmap in device coordinates to avoid pixmap scaling;
+ const QPixmap pixmap = sourcePixmap(Qt::DeviceCoordinates, &offset);
+ painter->setWorldTransform(QTransform());
+ ...
+ painter->drawPixmap(offset, pixmap);
+ }
+ ...
+}
+//! [1]
+
+//! [2]
+...
+QLinearGradient alphaGradient(rect.topLeft(), rect.bottomLeft());
+alphaGradient.setColorAt(0.0, Qt::transparent);
+alphaGradient.setColorAt(0.5, Qt::black);
+alphaGradient.setColorAt(1.0, Qt::transparent);
+QGraphicsOpacityEffect *effect = new QGraphicsOpacityEffect;
+effect->setOpacityMask(alphaGradient);
+...
+//! [2]
diff --git a/doc/src/snippets/code/src_gui_embedded_qcopchannel_qws.cpp b/doc/src/snippets/code/src_gui_embedded_qcopchannel_qws.cpp
index 98fa4a98c..398ba1d79 100644
--- a/doc/src/snippets/code/src_gui_embedded_qcopchannel_qws.cpp
+++ b/doc/src/snippets/code/src_gui_embedded_qcopchannel_qws.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
void MyClass::receive(const QString &message, const QByteArray &data)
{
diff --git a/doc/src/snippets/code/src_gui_embedded_qmouse_qws.cpp b/doc/src/snippets/code/src_gui_embedded_qmouse_qws.cpp
index 0ad3997a4..f73d95101 100644
--- a/doc/src/snippets/code/src_gui_embedded_qmouse_qws.cpp
+++ b/doc/src/snippets/code/src_gui_embedded_qmouse_qws.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
s*Xs = a*Xd + b*Yd + c
s*Ys = d*Xd + e*Yd + f
diff --git a/doc/src/snippets/code/src_gui_embedded_qmousetslib_qws.cpp b/doc/src/snippets/code/src_gui_embedded_qmousetslib_qws.cpp
index 26cd76c2f..525df790e 100644
--- a/doc/src/snippets/code/src_gui_embedded_qmousetslib_qws.cpp
+++ b/doc/src/snippets/code/src_gui_embedded_qmousetslib_qws.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
configure -L <path to tslib library> -I <path to tslib headers>
//! [0]
diff --git a/doc/src/snippets/code/src_gui_embedded_qscreen_qws.cpp b/doc/src/snippets/code/src_gui_embedded_qscreen_qws.cpp
index 52ce3b71c..298739895 100644
--- a/doc/src/snippets/code/src_gui_embedded_qscreen_qws.cpp
+++ b/doc/src/snippets/code/src_gui_embedded_qscreen_qws.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
[screen driver][:driver specific options][:display number]
//! [0]
diff --git a/doc/src/snippets/code/src_gui_embedded_qtransportauth_qws.cpp b/doc/src/snippets/code/src_gui_embedded_qtransportauth_qws.cpp
index 5ccebe2e4..8cb0689d6 100644
--- a/doc/src/snippets/code/src_gui_embedded_qtransportauth_qws.cpp
+++ b/doc/src/snippets/code/src_gui_embedded_qtransportauth_qws.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
void wrapInFunction()
{
diff --git a/doc/src/snippets/code/src_gui_embedded_qwindowsystem_qws.cpp b/doc/src/snippets/code/src_gui_embedded_qwindowsystem_qws.cpp
index 1364f2321..eb4175c5b 100644
--- a/doc/src/snippets/code/src_gui_embedded_qwindowsystem_qws.cpp
+++ b/doc/src/snippets/code/src_gui_embedded_qwindowsystem_qws.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
bool MyScreenSaver::save( int level )
{
diff --git a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsgridlayout.cpp b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsgridlayout.cpp
index ed09b9703..91780a817 100644
--- a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsgridlayout.cpp
+++ b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsgridlayout.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QGraphicsScene scene;
QGraphicsWidget *textEdit = scene.addWidget(new QTextEdit);
diff --git a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp
index d9e38ed6c..9ffe0bbe4 100644
--- a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp
+++ b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
class SimpleItem : public QGraphicsItem
{
diff --git a/doc/src/snippets/code/src_gui_graphicsview_qgraphicslinearlayout.cpp b/doc/src/snippets/code/src_gui_graphicsview_qgraphicslinearlayout.cpp
index 77f749195..d7202a7c4 100644
--- a/doc/src/snippets/code/src_gui_graphicsview_qgraphicslinearlayout.cpp
+++ b/doc/src/snippets/code/src_gui_graphicsview_qgraphicslinearlayout.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QGraphicsScene scene;
QGraphicsWidget *textEdit = scene.addWidget(new QTextEdit);
diff --git a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsproxywidget.cpp b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsproxywidget.cpp
index 6c62f26a7..963a3018a 100644
--- a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsproxywidget.cpp
+++ b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsproxywidget.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
int main(int argc, char **argv)
{
diff --git a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsscene.cpp b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsscene.cpp
index 20b0979a9..87656ec43 100644
--- a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsscene.cpp
+++ b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsscene.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QGraphicsScene scene;
scene.addText("Hello, world!");
diff --git a/doc/src/snippets/code/src_gui_graphicsview_qgraphicssceneevent.cpp b/doc/src/snippets/code/src_gui_graphicsview_qgraphicssceneevent.cpp
index 9b6c22eb1..7b1edca4f 100644
--- a/doc/src/snippets/code/src_gui_graphicsview_qgraphicssceneevent.cpp
+++ b/doc/src/snippets/code/src_gui_graphicsview_qgraphicssceneevent.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
setDropAction(proposedAction());
diff --git a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsview.cpp b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsview.cpp
index d22b8726f..5290d5ee1 100644
--- a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsview.cpp
+++ b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsview.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QGraphicsScene scene;
scene.addText("Hello, world!");
diff --git a/doc/src/snippets/code/src_gui_graphicsview_qgraphicswidget.cpp b/doc/src/snippets/code/src_gui_graphicsview_qgraphicswidget.cpp
index 06fa6421b..8949dc28d 100644
--- a/doc/src/snippets/code/src_gui_graphicsview_qgraphicswidget.cpp
+++ b/doc/src/snippets/code/src_gui_graphicsview_qgraphicswidget.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
void MyGroupBoxWidget::initStyleOption(QStyleOption *option) const
{
diff --git a/doc/src/snippets/code/src_gui_image_qbitmap.cpp b/doc/src/snippets/code/src_gui_image_qbitmap.cpp
index fa8317a1a..1e84ae851 100644
--- a/doc/src/snippets/code/src_gui_image_qbitmap.cpp
+++ b/doc/src/snippets/code/src_gui_image_qbitmap.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
uchar arrow_bits[] = { 0x3f, 0x1f, 0x0f, 0x1f, 0x3b, 0x71, 0xe0, 0xc0 };
QBitmap bm(8, 8, arrow_bits, true);
diff --git a/doc/src/snippets/code/src_gui_image_qicon.cpp b/doc/src/snippets/code/src_gui_image_qicon.cpp
index 455fd843e..fd9e83d19 100644
--- a/doc/src/snippets/code/src_gui_image_qicon.cpp
+++ b/doc/src/snippets/code/src_gui_image_qicon.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QToolButton *button = new QToolButton;
button->setIcon(QIcon("open.xpm"));
diff --git a/doc/src/snippets/code/src_gui_image_qimage.cpp b/doc/src/snippets/code/src_gui_image_qimage.cpp
index 3b7d8de1a..54078ff07 100644
--- a/doc/src/snippets/code/src_gui_image_qimage.cpp
+++ b/doc/src/snippets/code/src_gui_image_qimage.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QImage image(3, 3, QImage::Format_RGB32);
QRgb value;
diff --git a/doc/src/snippets/code/src_gui_image_qimagereader.cpp b/doc/src/snippets/code/src_gui_image_qimagereader.cpp
index c645144ca..13ad5ee80 100644
--- a/doc/src/snippets/code/src_gui_image_qimagereader.cpp
+++ b/doc/src/snippets/code/src_gui_image_qimagereader.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QImageReader reader;
reader.setFormat("png"); // same as reader.setFormat("PNG");
diff --git a/doc/src/snippets/code/src_gui_image_qimagewriter.cpp b/doc/src/snippets/code/src_gui_image_qimagewriter.cpp
index d4a41187e..f134ac267 100644
--- a/doc/src/snippets/code/src_gui_image_qimagewriter.cpp
+++ b/doc/src/snippets/code/src_gui_image_qimagewriter.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QImageWriter writer;
writer.setFormat("png"); // same as writer.setFormat("PNG");
diff --git a/doc/src/snippets/code/src_gui_image_qmovie.cpp b/doc/src/snippets/code/src_gui_image_qmovie.cpp
index 77130e825..77eeb5928 100644
--- a/doc/src/snippets/code/src_gui_image_qmovie.cpp
+++ b/doc/src/snippets/code/src_gui_image_qmovie.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QLabel label;
QMovie *movie = new QMovie("animations/fire.gif");
diff --git a/doc/src/snippets/code/src_gui_image_qpixmap.cpp b/doc/src/snippets/code/src_gui_image_qpixmap.cpp
index 822b46608..3d9a8a45a 100644
--- a/doc/src/snippets/code/src_gui_image_qpixmap.cpp
+++ b/doc/src/snippets/code/src_gui_image_qpixmap.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
static const char * const start_xpm[]={
"16 15 8 1",
diff --git a/doc/src/snippets/code/src_gui_image_qpixmapcache.cpp b/doc/src/snippets/code/src_gui_image_qpixmapcache.cpp
index 2a04f64b4..e2530f7ea 100644
--- a/doc/src/snippets/code/src_gui_image_qpixmapcache.cpp
+++ b/doc/src/snippets/code/src_gui_image_qpixmapcache.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QPixmap* pp;
QPixmap p;
diff --git a/doc/src/snippets/code/src_gui_image_qpixmapfilter.cpp b/doc/src/snippets/code/src_gui_image_qpixmapfilter.cpp
index e305109ba..669f5e6e3 100644
--- a/doc/src/snippets/code/src_gui_image_qpixmapfilter.cpp
+++ b/doc/src/snippets/code/src_gui_image_qpixmapfilter.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QPixmapColorizeFilter *myFilter = new QPixmapColorFilter;
myFilter->setColor(QColor(128, 0, 0));
diff --git a/doc/src/snippets/code/src_gui_itemviews_qabstractitemview.cpp b/doc/src/snippets/code/src_gui_itemviews_qabstractitemview.cpp
index 9814c7448..c4e97e5d1 100644
--- a/doc/src/snippets/code/src_gui_itemviews_qabstractitemview.cpp
+++ b/doc/src/snippets/code/src_gui_itemviews_qabstractitemview.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
void MyView::resizeEvent(QResizeEvent *event) {
horizontalScrollBar()->setRange(0, realWidth - width());
diff --git a/doc/src/snippets/code/src_gui_itemviews_qdatawidgetmapper.cpp b/doc/src/snippets/code/src_gui_itemviews_qdatawidgetmapper.cpp
index ea5363cf3..984460922 100644
--- a/doc/src/snippets/code/src_gui_itemviews_qdatawidgetmapper.cpp
+++ b/doc/src/snippets/code/src_gui_itemviews_qdatawidgetmapper.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QDataWidgetMapper *mapper = new QDataWidgetMapper;
mapper->setModel(model);
diff --git a/doc/src/snippets/code/src_gui_itemviews_qitemeditorfactory.cpp b/doc/src/snippets/code/src_gui_itemviews_qitemeditorfactory.cpp
index 29601bfe3..3fb7780fa 100644
--- a/doc/src/snippets/code/src_gui_itemviews_qitemeditorfactory.cpp
+++ b/doc/src/snippets/code/src_gui_itemviews_qitemeditorfactory.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q_PROPERTY(QColor color READ color WRITE setColor USER true)
//! [0]
@@ -19,5 +60,5 @@ editorFactory->registerEditor(QVariant::DateType, creator);
//! [3]
-Q_PROPERTY(QColor color READ color WRITE setColor USER true)
+Q_PROPERTY(QColor color READ color WRITE setColor USER true)
//! [3]
diff --git a/doc/src/snippets/code/src_gui_itemviews_qitemselectionmodel.cpp b/doc/src/snippets/code/src_gui_itemviews_qitemselectionmodel.cpp
index 9302fa6e9..744be76c7 100644
--- a/doc/src/snippets/code/src_gui_itemviews_qitemselectionmodel.cpp
+++ b/doc/src/snippets/code/src_gui_itemviews_qitemselectionmodel.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QItemSelection *selection = new QItemSelection(topLeft, bottomRight);
//! [0]
diff --git a/doc/src/snippets/code/src_gui_itemviews_qstandarditemmodel.cpp b/doc/src/snippets/code/src_gui_itemviews_qstandarditemmodel.cpp
index 7480ccd77..4b7857be6 100644
--- a/doc/src/snippets/code/src_gui_itemviews_qstandarditemmodel.cpp
+++ b/doc/src/snippets/code/src_gui_itemviews_qstandarditemmodel.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QStandardItemModel model(4, 4);
for (int row = 0; row < 4; ++row) {
diff --git a/doc/src/snippets/code/src_gui_itemviews_qtablewidget.cpp b/doc/src/snippets/code/src_gui_itemviews_qtablewidget.cpp
index 80adc0bb2..b9838d1cb 100644
--- a/doc/src/snippets/code/src_gui_itemviews_qtablewidget.cpp
+++ b/doc/src/snippets/code/src_gui_itemviews_qtablewidget.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
setCellWidget(index, new QLineEdit);
...
diff --git a/doc/src/snippets/code/src_gui_itemviews_qtreewidget.cpp b/doc/src/snippets/code/src_gui_itemviews_qtreewidget.cpp
index ea0478ef1..25882d9aa 100644
--- a/doc/src/snippets/code/src_gui_itemviews_qtreewidget.cpp
+++ b/doc/src/snippets/code/src_gui_itemviews_qtreewidget.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QTreeWidget *treeWidget = new QTreeWidget();
treeWidget->setColumnCount(1);
diff --git a/doc/src/snippets/code/src_gui_kernel_qaction.cpp b/doc/src/snippets/code/src_gui_kernel_qaction.cpp
index b052febed..8727ae6b7 100644
--- a/doc/src/snippets/code/src_gui_kernel_qaction.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qaction.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QApplication app(argc, argv);
app.setAttribute(Qt::AA_DontShowIconsInMenus); // Icons are *no longer shown* in menus
diff --git a/doc/src/snippets/code/src_gui_kernel_qapplication.cpp b/doc/src/snippets/code/src_gui_kernel_qapplication.cpp
index bfb09e302..f434b45b4 100644
--- a/doc/src/snippets/code/src_gui_kernel_qapplication.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qapplication.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
int main(int argc, char **argv)
{
diff --git a/doc/src/snippets/code/src_gui_kernel_qapplication_x11.cpp b/doc/src/snippets/code/src_gui_kernel_qapplication_x11.cpp
index 2782200d8..ccd60ea50 100644
--- a/doc/src/snippets/code/src_gui_kernel_qapplication_x11.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qapplication_x11.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
calculateHugeMandelbrot(); // lunch time...
diff --git a/doc/src/snippets/code/src_gui_kernel_qclipboard.cpp b/doc/src/snippets/code/src_gui_kernel_qclipboard.cpp
index 5d1cf2bb9..ae1e20798 100644
--- a/doc/src/snippets/code/src_gui_kernel_qclipboard.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qclipboard.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QClipboard *clipboard = QApplication::clipboard();
QString originalText = clipboard->text();
diff --git a/doc/src/snippets/code/src_gui_kernel_qevent.cpp b/doc/src/snippets/code/src_gui_kernel_qevent.cpp
index cd3d0195d..0bab85a58 100644
--- a/doc/src/snippets/code/src_gui_kernel_qevent.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qevent.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
void MyWidget::wheelEvent(QWheelEvent *event)
{
diff --git a/doc/src/snippets/code/src_gui_kernel_qformlayout.cpp b/doc/src/snippets/code/src_gui_kernel_qformlayout.cpp
index aed695636..307a46e71 100644
--- a/doc/src/snippets/code/src_gui_kernel_qformlayout.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qformlayout.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QFormLayout *formLayout = new QFormLayout;
formLayout->addRow(tr("&Name:"), nameLineEdit);
diff --git a/doc/src/snippets/code/src_gui_kernel_qkeysequence.cpp b/doc/src/snippets/code/src_gui_kernel_qkeysequence.cpp
index a5c734d09..928463af2 100644
--- a/doc/src/snippets/code/src_gui_kernel_qkeysequence.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qkeysequence.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QKeySequence(QKeySequence::Print);
QKeySequence(tr("Ctrl+P"));
diff --git a/doc/src/snippets/code/src_gui_kernel_qlayout.cpp b/doc/src/snippets/code/src_gui_kernel_qlayout.cpp
index 26d178f87..56b6197f6 100644
--- a/doc/src/snippets/code/src_gui_kernel_qlayout.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qlayout.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
static void paintLayout(QPainter *painter, QLayoutItem *item)
{
diff --git a/doc/src/snippets/code/src_gui_kernel_qlayoutitem.cpp b/doc/src/snippets/code/src_gui_kernel_qlayoutitem.cpp
index db6438e43..751318621 100644
--- a/doc/src/snippets/code/src_gui_kernel_qlayoutitem.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qlayoutitem.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
int MyLayout::heightForWidth(int w) const
{
diff --git a/doc/src/snippets/code/src_gui_kernel_qshortcut.cpp b/doc/src/snippets/code/src_gui_kernel_qshortcut.cpp
index b5fdf95bf..0bc1be22e 100644
--- a/doc/src/snippets/code/src_gui_kernel_qshortcut.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qshortcut.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
shortcut = new QShortcut(QKeySequence(tr("Ctrl+O", "File|Open")),
parent);
diff --git a/doc/src/snippets/code/src_gui_kernel_qshortcutmap.cpp b/doc/src/snippets/code/src_gui_kernel_qshortcutmap.cpp
index 6a85c3e30..119690d2d 100644
--- a/doc/src/snippets/code/src_gui_kernel_qshortcutmap.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qshortcutmap.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
key = QKeySequence();
//! [0]
diff --git a/doc/src/snippets/code/src_gui_kernel_qsound.cpp b/doc/src/snippets/code/src_gui_kernel_qsound.cpp
index bdbd1cec0..b06c861c6 100644
--- a/doc/src/snippets/code/src_gui_kernel_qsound.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qsound.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QSound::play("mysounds/bells.wav");
//! [0]
diff --git a/doc/src/snippets/code/src_gui_kernel_qwidget.cpp b/doc/src/snippets/code/src_gui_kernel_qwidget.cpp
index 4285eddc7..6c2f83a44 100644
--- a/doc/src/snippets/code/src_gui_kernel_qwidget.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qwidget.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
w->setWindowState(w->windowState() ^ Qt::WindowFullScreen);
//! [0]
diff --git a/doc/src/snippets/code/src_gui_painting_qbrush.cpp b/doc/src/snippets/code/src_gui_painting_qbrush.cpp
index 8cb53105a..564cf4a78 100644
--- a/doc/src/snippets/code/src_gui_painting_qbrush.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qbrush.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QPainter painter(this);
diff --git a/doc/src/snippets/code/src_gui_painting_qcolor.cpp b/doc/src/snippets/code/src_gui_painting_qcolor.cpp
index c21e58987..959f3628c 100644
--- a/doc/src/snippets/code/src_gui_painting_qcolor.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qcolor.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
// Specify semi-transparent red
painter.setBrush(QColor(255, 0, 0, 127));
diff --git a/doc/src/snippets/code/src_gui_painting_qdrawutil.cpp b/doc/src/snippets/code/src_gui_painting_qdrawutil.cpp
index 7e94d59d6..7ebb2db72 100644
--- a/doc/src/snippets/code/src_gui_painting_qdrawutil.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qdrawutil.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QFrame frame:
frame.setFrameStyle(QFrame::HLine | QFrame::Sunken);
diff --git a/doc/src/snippets/code/src_gui_painting_qmatrix.cpp b/doc/src/snippets/code/src_gui_painting_qmatrix.cpp
index 4a8a427be..a7401d2f8 100644
--- a/doc/src/snippets/code/src_gui_painting_qmatrix.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qmatrix.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
x' = m11*x + m21*y + dx
y' = m22*y + m12*x + dy
diff --git a/doc/src/snippets/code/src_gui_painting_qpainter.cpp b/doc/src/snippets/code/src_gui_painting_qpainter.cpp
index 536473ced..02261614e 100644
--- a/doc/src/snippets/code/src_gui_painting_qpainter.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qpainter.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
void SimpleExampleWidget::paintEvent(QPaintEvent *)
{
@@ -200,3 +241,20 @@ QImage image(":/images/myImage.png");
QPainter painter(this);
painter.drawImage(target, image, source);
//! [20]
+
+
+//! [21]
+QPainter painter(this);
+painter.fillRect(0, 0, 128, 128, Qt::green);
+painter.beginNativePainting();
+
+glEnable(GL_SCISSOR_TEST);
+glScissor(0, 0, 64, 64);
+
+glClearColor(1, 0, 0, 1);
+glClear(GL_COLOR_BUFFER_BIT);
+
+glDisable(GL_SCISSOR_TEST);
+
+painter.endNativePainting();
+//! [21]
diff --git a/doc/src/snippets/code/src_gui_painting_qpainterpath.cpp b/doc/src/snippets/code/src_gui_painting_qpainterpath.cpp
index f5d1e8bed..3a0740ec8 100644
--- a/doc/src/snippets/code/src_gui_painting_qpainterpath.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qpainterpath.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QPainterPath path;
path.addRect(20, 20, 60, 60);
diff --git a/doc/src/snippets/code/src_gui_painting_qpen.cpp b/doc/src/snippets/code/src_gui_painting_qpen.cpp
index b5995f7dc..2f43696d0 100644
--- a/doc/src/snippets/code/src_gui_painting_qpen.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qpen.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QPainter painter(this);
QPen pen(Qt::green, 3, Qt::DashDotLine, Qt::RoundCap, Qt::RoundJoin);
diff --git a/doc/src/snippets/code/src_gui_painting_qregion.cpp b/doc/src/snippets/code/src_gui_painting_qregion.cpp
index 6c5dfa5e4..9b10f8600 100644
--- a/doc/src/snippets/code/src_gui_painting_qregion.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qregion.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
void MyWidget::paintEvent(QPaintEvent *)
{
diff --git a/doc/src/snippets/code/src_gui_painting_qregion_unix.cpp b/doc/src/snippets/code/src_gui_painting_qregion_unix.cpp
index 50771efe7..ea42e7004 100644
--- a/doc/src/snippets/code/src_gui_painting_qregion_unix.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qregion_unix.cpp
@@ -1,18 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QRegion r1(10, 10, 20, 20);
-r1.isNull(); // false
r1.isEmpty(); // false
-QRegion r2(40, 40, 20, 20);
QRegion r3;
-r3.isNull(); // true
r3.isEmpty(); // true
+QRegion r2(40, 40, 20, 20);
r3 = r1.intersected(r2); // r3: intersection of r1 and r2
-r3.isNull(); // false
r3.isEmpty(); // true
r3 = r1.united(r2); // r3: union of r1 and r2
-r3.isNull(); // false
r3.isEmpty(); // false
//! [0]
diff --git a/doc/src/snippets/code/src_gui_painting_qtransform.cpp b/doc/src/snippets/code/src_gui_painting_qtransform.cpp
index 91b1e947d..e36366e36 100644
--- a/doc/src/snippets/code/src_gui_painting_qtransform.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qtransform.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
x' = m11*x + m21*y + dx
y' = m22*y + m12*x + dy
diff --git a/doc/src/snippets/code/src_gui_qproxystyle.cpp b/doc/src/snippets/code/src_gui_qproxystyle.cpp
index 46a2a5fc4..6596a8083 100644
--- a/doc/src/snippets/code/src_gui_qproxystyle.cpp
+++ b/doc/src/snippets/code/src_gui_qproxystyle.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
class MyProxyStyle : public QProxyStyle
{
diff --git a/doc/src/snippets/code/src_gui_styles_qstyle.cpp b/doc/src/snippets/code/src_gui_styles_qstyle.cpp
index a78a6c862..173caf75c 100644
--- a/doc/src/snippets/code/src_gui_styles_qstyle.cpp
+++ b/doc/src/snippets/code/src_gui_styles_qstyle.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
./myapplication -style motif
//! [0]
diff --git a/doc/src/snippets/code/src_gui_styles_qstyleoption.cpp b/doc/src/snippets/code/src_gui_styles_qstyleoption.cpp
index bf0c6707d..0741424f4 100644
--- a/doc/src/snippets/code/src_gui_styles_qstyleoption.cpp
+++ b/doc/src/snippets/code/src_gui_styles_qstyleoption.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
int MyStyle::styleHint(StyleHint stylehint, const QStyleOption *opt,
const QWidget *widget, QStyleHintReturn* returnData) const;
diff --git a/doc/src/snippets/code/src_gui_text_qfont.cpp b/doc/src/snippets/code/src_gui_text_qfont.cpp
index c74772cc0..03877be01 100644
--- a/doc/src/snippets/code/src_gui_text_qfont.cpp
+++ b/doc/src/snippets/code/src_gui_text_qfont.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QFont serifFont("Times", 10, QFont::Bold);
QFont sansFont("Helvetica [Cronyx]", 12);
diff --git a/doc/src/snippets/code/src_gui_text_qfontmetrics.cpp b/doc/src/snippets/code/src_gui_text_qfontmetrics.cpp
index d7b17ab73..9f07c63bb 100644
--- a/doc/src/snippets/code/src_gui_text_qfontmetrics.cpp
+++ b/doc/src/snippets/code/src_gui_text_qfontmetrics.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QFont font("times", 24);
QFontMetrics fm(font);
diff --git a/doc/src/snippets/code/src_gui_text_qsyntaxhighlighter.cpp b/doc/src/snippets/code/src_gui_text_qsyntaxhighlighter.cpp
index 5dd2e0d6b..e161a4b91 100644
--- a/doc/src/snippets/code/src_gui_text_qsyntaxhighlighter.cpp
+++ b/doc/src/snippets/code/src_gui_text_qsyntaxhighlighter.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QTextEdit *editor = new QTextEdit;
MyHighlighter *highlighter = new MyHighlighter(editor->document());
diff --git a/doc/src/snippets/code/src_gui_text_qtextcursor.cpp b/doc/src/snippets/code/src_gui_text_qtextcursor.cpp
index 19c60b999..ad336fc40 100644
--- a/doc/src/snippets/code/src_gui_text_qtextcursor.cpp
+++ b/doc/src/snippets/code/src_gui_text_qtextcursor.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
cursor.clearSelection();
cursor.movePosition(QTextCursor::NextWord, QTextCursor::KeepAnchor);
diff --git a/doc/src/snippets/code/src_gui_text_qtextdocument.cpp b/doc/src/snippets/code/src_gui_text_qtextdocument.cpp
index 60840f76b..44951aab3 100644
--- a/doc/src/snippets/code/src_gui_text_qtextdocument.cpp
+++ b/doc/src/snippets/code/src_gui_text_qtextdocument.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QString plain = "#include <QtCore>"
QString html = Qt::escape(plain);
diff --git a/doc/src/snippets/code/src_gui_text_qtextlayout.cpp b/doc/src/snippets/code/src_gui_text_qtextlayout.cpp
index 548bb783e..81428be06 100644
--- a/doc/src/snippets/code/src_gui_text_qtextlayout.cpp
+++ b/doc/src/snippets/code/src_gui_text_qtextlayout.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
int leading = fontMetrics.leading();
qreal height = 0;
diff --git a/doc/src/snippets/code/src_gui_util_qcompleter.cpp b/doc/src/snippets/code/src_gui_util_qcompleter.cpp
index 3017d8c30..2f3d46100 100644
--- a/doc/src/snippets/code/src_gui_util_qcompleter.cpp
+++ b/doc/src/snippets/code/src_gui_util_qcompleter.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QStringList wordList;
wordList << "alpha" << "omega" << "omicron" << "zeta";
diff --git a/doc/src/snippets/code/src_gui_util_qdesktopservices.cpp b/doc/src/snippets/code/src_gui_util_qdesktopservices.cpp
index 500198480..a679fcb7c 100644
--- a/doc/src/snippets/code/src_gui_util_qdesktopservices.cpp
+++ b/doc/src/snippets/code/src_gui_util_qdesktopservices.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
class MyHelpHandler : public QObject
{
diff --git a/doc/src/snippets/code/src_gui_util_qundostack.cpp b/doc/src/snippets/code/src_gui_util_qundostack.cpp
index 3949e1ec0..364451446 100644
--- a/doc/src/snippets/code/src_gui_util_qundostack.cpp
+++ b/doc/src/snippets/code/src_gui_util_qundostack.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
class AppendText : public QUndoCommand
{
diff --git a/doc/src/snippets/code/src_gui_widgets_qabstractbutton.cpp b/doc/src/snippets/code/src_gui_widgets_qabstractbutton.cpp
index 3c2b1927d..aac273ced 100644
--- a/doc/src/snippets/code/src_gui_widgets_qabstractbutton.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qabstractbutton.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QPushButton *button = new QPushButton(tr("Ro&ck && Roll"), this);
//! [0]
diff --git a/doc/src/snippets/code/src_gui_widgets_qabstractspinbox.cpp b/doc/src/snippets/code/src_gui_widgets_qabstractspinbox.cpp
index 67cfeb77a..0d607536e 100644
--- a/doc/src/snippets/code/src_gui_widgets_qabstractspinbox.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qabstractspinbox.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QSpinBox *spinBox = new QSpinBox(this);
spinBox->setRange(0, 100);
diff --git a/doc/src/snippets/code/src_gui_widgets_qcalendarwidget.cpp b/doc/src/snippets/code/src_gui_widgets_qcalendarwidget.cpp
index 10ceecc0e..9d4a81cc7 100644
--- a/doc/src/snippets/code/src_gui_widgets_qcalendarwidget.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qcalendarwidget.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QCalendarWidget *calendar;
calendar->setGridVisible(true);
diff --git a/doc/src/snippets/code/src_gui_widgets_qcheckbox.cpp b/doc/src/snippets/code/src_gui_widgets_qcheckbox.cpp
index 73008380c..dade977b8 100644
--- a/doc/src/snippets/code/src_gui_widgets_qcheckbox.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qcheckbox.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QCheckBox *checkbox = new QCheckBox("C&ase sensitive", this);
//! [0]
diff --git a/doc/src/snippets/code/src_gui_widgets_qdatetimeedit.cpp b/doc/src/snippets/code/src_gui_widgets_qdatetimeedit.cpp
index 796358da0..50c450919 100644
--- a/doc/src/snippets/code/src_gui_widgets_qdatetimeedit.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qdatetimeedit.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QDateTimeEdit *dateEdit = new QDateTimeEdit(QDate::currentDate());
dateEdit->setMinimumDate(QDate::currentDate().addDays(-365));
diff --git a/doc/src/snippets/code/src_gui_widgets_qdockwidget.cpp b/doc/src/snippets/code/src_gui_widgets_qdockwidget.cpp
index 2204e11f0..ed6618117 100644
--- a/doc/src/snippets/code/src_gui_widgets_qdockwidget.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qdockwidget.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QDockWidget *dockWidget = qobject_cast<QDockWidget*>(parentWidget());
if (dockWidget->features() & QDockWidget::DockWidgetVerticalTitleBar) {
diff --git a/doc/src/snippets/code/src_gui_widgets_qframe.cpp b/doc/src/snippets/code/src_gui_widgets_qframe.cpp
index 99fe79d0f..d09b271bd 100644
--- a/doc/src/snippets/code/src_gui_widgets_qframe.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qframe.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QLabel label(...);
label.setFrameStyle(QFrame::Panel | QFrame::Raised);
diff --git a/doc/src/snippets/code/src_gui_widgets_qgroupbox.cpp b/doc/src/snippets/code/src_gui_widgets_qgroupbox.cpp
index efd224639..23bc30314 100644
--- a/doc/src/snippets/code/src_gui_widgets_qgroupbox.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qgroupbox.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
g->setTitle("&User information");
//! [0]
diff --git a/doc/src/snippets/code/src_gui_widgets_qlabel.cpp b/doc/src/snippets/code/src_gui_widgets_qlabel.cpp
index d3b925428..96bc473b1 100644
--- a/doc/src/snippets/code/src_gui_widgets_qlabel.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qlabel.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QLabel *label = new QLabel(this);
label->setFrameStyle(QFrame::Panel | QFrame::Sunken);
diff --git a/doc/src/snippets/code/src_gui_widgets_qlineedit.cpp b/doc/src/snippets/code/src_gui_widgets_qlineedit.cpp
index 8191a4f83..5e0328082 100644
--- a/doc/src/snippets/code/src_gui_widgets_qlineedit.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qlineedit.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
void LineEdit::contextMenuEvent(QContextMenuEvent *event)
{
diff --git a/doc/src/snippets/code/src_gui_widgets_qmainwindow.cpp b/doc/src/snippets/code/src_gui_widgets_qmainwindow.cpp
new file mode 100644
index 000000000..f122491e7
--- /dev/null
+++ b/doc/src/snippets/code/src_gui_widgets_qmainwindow.cpp
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+//! [0]
+void MyMainWindow::closeEvent(QCloseEvent *event)
+{
+ QSettings settings("MyCompany", "MyApp");
+ settings.setValue("geometry", saveGeometry());
+ settings.setValue("windowState", saveState());
+ QMainWindow::closeEvent(event);
+}
+//! [0]
+
+
+//! [1]
+void MainWindow::readSettings()
+{
+ QSettings settings("MyCompany", "MyApp");
+ restoreGeometry(settings.value("myWidget/geometry").toByteArray());
+ restoreState(settings.value("myWidget/windowState").toByteArray());
+}
+//! [1]
diff --git a/doc/src/snippets/code/src_gui_widgets_qmenu.cpp b/doc/src/snippets/code/src_gui_widgets_qmenu.cpp
index f30ac3567..dfe6b8499 100644
--- a/doc/src/snippets/code/src_gui_widgets_qmenu.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qmenu.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
exec(QCursor::pos());
//! [0]
diff --git a/doc/src/snippets/code/src_gui_widgets_qmenubar.cpp b/doc/src/snippets/code/src_gui_widgets_qmenubar.cpp
index 3ff24d3e4..afaf2c6b7 100644
--- a/doc/src/snippets/code/src_gui_widgets_qmenubar.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qmenubar.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
menubar->addMenu(fileMenu);
//! [0]
diff --git a/doc/src/snippets/code/src_gui_widgets_qplaintextedit.cpp b/doc/src/snippets/code/src_gui_widgets_qplaintextedit.cpp
index 7f189952b..02326f86f 100644
--- a/doc/src/snippets/code/src_gui_widgets_qplaintextedit.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qplaintextedit.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
void MyQPlainTextEdit::contextMenuEvent(QContextMenuEvent *event)
{
diff --git a/doc/src/snippets/code/src_gui_widgets_qpushbutton.cpp b/doc/src/snippets/code/src_gui_widgets_qpushbutton.cpp
index e4fc4ce13..8e00fea40 100644
--- a/doc/src/snippets/code/src_gui_widgets_qpushbutton.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qpushbutton.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QPushButton *button = new QPushButton("&Download", this);
//! [0]
diff --git a/doc/src/snippets/code/src_gui_widgets_qradiobutton.cpp b/doc/src/snippets/code/src_gui_widgets_qradiobutton.cpp
index 05344fcb6..18117a777 100644
--- a/doc/src/snippets/code/src_gui_widgets_qradiobutton.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qradiobutton.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QRadioButton *button = new QRadioButton("Search from the &cursor", this);
//! [0]
diff --git a/doc/src/snippets/code/src_gui_widgets_qrubberband.cpp b/doc/src/snippets/code/src_gui_widgets_qrubberband.cpp
index 38a0dad85..e63ff1030 100644
--- a/doc/src/snippets/code/src_gui_widgets_qrubberband.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qrubberband.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
void Widget::mousePressEvent(QMouseEvent *event)
{
diff --git a/doc/src/snippets/code/src_gui_widgets_qscrollarea.cpp b/doc/src/snippets/code/src_gui_widgets_qscrollarea.cpp
index a77dc2044..c201aaa6a 100644
--- a/doc/src/snippets/code/src_gui_widgets_qscrollarea.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qscrollarea.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QLabel *imageLabel = new QLabel;
QImage image("happyguy.png");
diff --git a/doc/src/snippets/code/src_gui_widgets_qspinbox.cpp b/doc/src/snippets/code/src_gui_widgets_qspinbox.cpp
index 7dbd6d627..2d7e12f0e 100644
--- a/doc/src/snippets/code/src_gui_widgets_qspinbox.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qspinbox.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
sb->setPrefix("$");
//! [0]
diff --git a/doc/src/snippets/code/src_gui_widgets_qsplashscreen.cpp b/doc/src/snippets/code/src_gui_widgets_qsplashscreen.cpp
index d20f1f298..f62cc0aaf 100644
--- a/doc/src/snippets/code/src_gui_widgets_qsplashscreen.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qsplashscreen.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QPixmap pixmap(":/splash.png");
QSplashScreen *splash = new QSplashScreen(pixmap);
diff --git a/doc/src/snippets/code/src_gui_widgets_qsplitter.cpp b/doc/src/snippets/code/src_gui_widgets_qsplitter.cpp
index 62f5db15d..722fc411c 100644
--- a/doc/src/snippets/code/src_gui_widgets_qsplitter.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qsplitter.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QWidget *widget = splitter->widget(index);
QSizePolicy policy = widget->sizePolicy();
diff --git a/doc/src/snippets/code/src_gui_widgets_qstatusbar.cpp b/doc/src/snippets/code/src_gui_widgets_qstatusbar.cpp
index d03f5af6e..9b10481bb 100644
--- a/doc/src/snippets/code/src_gui_widgets_qstatusbar.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qstatusbar.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
statusBar()->addWidget(new MyReadWriteIndication);
//! [0]
diff --git a/doc/src/snippets/code/src_gui_widgets_qtextbrowser.cpp b/doc/src/snippets/code/src_gui_widgets_qtextbrowser.cpp
index 0beb133e3..80c95b932 100644
--- a/doc/src/snippets/code/src_gui_widgets_qtextbrowser.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qtextbrowser.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
backaction.setToolTip(browser.historyTitle(-1));
forwardaction.setToolTip(browser.historyTitle(+1));
diff --git a/doc/src/snippets/code/src_gui_widgets_qtextedit.cpp b/doc/src/snippets/code/src_gui_widgets_qtextedit.cpp
index 5f0b73f9b..4aeb6ccd8 100644
--- a/doc/src/snippets/code/src_gui_widgets_qtextedit.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qtextedit.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
void MyTextEdit::contextMenuEvent(QContextMenuEvent *event)
{
diff --git a/doc/src/snippets/code/src_gui_widgets_qvalidator.cpp b/doc/src/snippets/code/src_gui_widgets_qvalidator.cpp
index 0240eea06..c9e809dd6 100644
--- a/doc/src/snippets/code/src_gui_widgets_qvalidator.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qvalidator.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QValidator *validator = new QIntValidator(100, 999, this);
QLineEdit *edit = new QLineEdit(this);
diff --git a/doc/src/snippets/code/src_gui_widgets_qworkspace.cpp b/doc/src/snippets/code/src_gui_widgets_qworkspace.cpp
index 0c55e5f53..b78b6df1b 100644
--- a/doc/src/snippets/code/src_gui_widgets_qworkspace.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qworkspace.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
MainWindow::MainWindow()
{
diff --git a/doc/src/snippets/code/src_network_access_qftp.cpp b/doc/src/snippets/code/src_network_access_qftp.cpp
index 4230d568c..b202e7c2e 100644
--- a/doc/src/snippets/code/src_network_access_qftp.cpp
+++ b/doc/src/snippets/code/src_network_access_qftp.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QFtp *ftp = new QFtp(parent);
ftp->connectToHost("ftp.qt.nokia.com");
diff --git a/doc/src/snippets/code/src_network_access_qhttp.cpp b/doc/src/snippets/code/src_network_access_qhttp.cpp
index d6e814b01..617635206 100644
--- a/doc/src/snippets/code/src_network_access_qhttp.cpp
+++ b/doc/src/snippets/code/src_network_access_qhttp.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
content-type: text/html
//! [0]
diff --git a/doc/src/snippets/code/src_network_access_qnetworkaccessmanager.cpp b/doc/src/snippets/code/src_network_access_qnetworkaccessmanager.cpp
index 48db4cbe1..bd56d6129 100644
--- a/doc/src/snippets/code/src_network_access_qnetworkaccessmanager.cpp
+++ b/doc/src/snippets/code/src_network_access_qnetworkaccessmanager.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)),
diff --git a/doc/src/snippets/code/src_network_access_qnetworkdiskcache.cpp b/doc/src/snippets/code/src_network_access_qnetworkdiskcache.cpp
index 51f27dfb2..b304c0d40 100644
--- a/doc/src/snippets/code/src_network_access_qnetworkdiskcache.cpp
+++ b/doc/src/snippets/code/src_network_access_qnetworkdiskcache.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QNetworkDiskCache *diskCache = new QNetworkDiskCache(this);
diff --git a/doc/src/snippets/code/src_network_access_qnetworkreply.cpp b/doc/src/snippets/code/src_network_access_qnetworkreply.cpp
index 78b388bd7..237e9248d 100644
--- a/doc/src/snippets/code/src_network_access_qnetworkreply.cpp
+++ b/doc/src/snippets/code/src_network_access_qnetworkreply.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QList<QSslCertificate> cert = QSslCertificate::fromPath(QLatin1String("server-certificate.pem"));
QSslError error(QSslError::SelfSignedCertificate, cert.at(0));
diff --git a/doc/src/snippets/code/src_network_access_qnetworkrequest.cpp b/doc/src/snippets/code/src_network_access_qnetworkrequest.cpp
index d1f6962b4..4f5094aa3 100644
--- a/doc/src/snippets/code/src_network_access_qnetworkrequest.cpp
+++ b/doc/src/snippets/code/src_network_access_qnetworkrequest.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
request.setRawHeader("Last-Modified", "Sun, 06 Nov 1994 08:49:37 GMT");
//! [0]
diff --git a/doc/src/snippets/code/src_network_kernel_qhostaddress.cpp b/doc/src/snippets/code/src_network_kernel_qhostaddress.cpp
index 0b90404d6..0db5e8069 100644
--- a/doc/src/snippets/code/src_network_kernel_qhostaddress.cpp
+++ b/doc/src/snippets/code/src_network_kernel_qhostaddress.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q_IPV6ADDR addr = hostAddr.toIPv6Address();
// addr contains 16 unsigned characters
diff --git a/doc/src/snippets/code/src_network_kernel_qhostinfo.cpp b/doc/src/snippets/code/src_network_kernel_qhostinfo.cpp
index b96a77798..00508fbf9 100644
--- a/doc/src/snippets/code/src_network_kernel_qhostinfo.cpp
+++ b/doc/src/snippets/code/src_network_kernel_qhostinfo.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
// To find the IP address of qt.nokia.com
QHostInfo::lookupHost("qt.nokia.com",
diff --git a/doc/src/snippets/code/src_network_kernel_qnetworkproxy.cpp b/doc/src/snippets/code/src_network_kernel_qnetworkproxy.cpp
index 34e946679..b446a93e0 100644
--- a/doc/src/snippets/code/src_network_kernel_qnetworkproxy.cpp
+++ b/doc/src/snippets/code/src_network_kernel_qnetworkproxy.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QNetworkProxy proxy;
proxy.setType(QNetworkProxy::Socks5Proxy);
diff --git a/doc/src/snippets/code/src_network_socket_qabstractsocket.cpp b/doc/src/snippets/code/src_network_socket_qabstractsocket.cpp
index d64931aa7..ea09d378f 100644
--- a/doc/src/snippets/code/src_network_socket_qabstractsocket.cpp
+++ b/doc/src/snippets/code/src_network_socket_qabstractsocket.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
socket->connectToHost("imap", 143);
if (socket->waitForConnected(1000))
diff --git a/doc/src/snippets/code/src_network_socket_qlocalsocket_unix.cpp b/doc/src/snippets/code/src_network_socket_qlocalsocket_unix.cpp
index da96e6f11..df3ef8a4f 100644
--- a/doc/src/snippets/code/src_network_socket_qlocalsocket_unix.cpp
+++ b/doc/src/snippets/code/src_network_socket_qlocalsocket_unix.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
socket->connectToServer("market");
if (socket->waitForConnected(1000))
diff --git a/doc/src/snippets/code/src_network_socket_qnativesocketengine.cpp b/doc/src/snippets/code/src_network_socket_qnativesocketengine.cpp
index 2aca1e1f5..67d820bcd 100644
--- a/doc/src/snippets/code/src_network_socket_qnativesocketengine.cpp
+++ b/doc/src/snippets/code/src_network_socket_qnativesocketengine.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QNativeSocketEngine socketLayer;
socketLayer.initialize(QAbstractSocket::TcpSocket, QAbstractSocket::IPv4Protocol);
diff --git a/doc/src/snippets/code/src_network_socket_qtcpserver.cpp b/doc/src/snippets/code/src_network_socket_qtcpserver.cpp
index 0021e3b1a..4d464a192 100644
--- a/doc/src/snippets/code/src_network_socket_qtcpserver.cpp
+++ b/doc/src/snippets/code/src_network_socket_qtcpserver.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
server->setProxy(QNetworkProxy::NoProxy);
//! [0]
diff --git a/doc/src/snippets/code/src_network_socket_qudpsocket.cpp b/doc/src/snippets/code/src_network_socket_qudpsocket.cpp
index 966fb50d1..ac44ff783 100644
--- a/doc/src/snippets/code/src_network_socket_qudpsocket.cpp
+++ b/doc/src/snippets/code/src_network_socket_qudpsocket.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
void Server::initSocket()
{
diff --git a/doc/src/snippets/code/src_network_ssl_qsslcertificate.cpp b/doc/src/snippets/code/src_network_ssl_qsslcertificate.cpp
index 2ec84ae11..e538f5f8c 100644
--- a/doc/src/snippets/code/src_network_ssl_qsslcertificate.cpp
+++ b/doc/src/snippets/code/src_network_ssl_qsslcertificate.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
foreach (QSslCertificate cert, QSslCertificate::fromPath("C:/ssl/certificate.*.pem", QSsl::Pem,
QRegExp::Wildcard)) {
diff --git a/doc/src/snippets/code/src_network_ssl_qsslconfiguration.cpp b/doc/src/snippets/code/src_network_ssl_qsslconfiguration.cpp
index fb3e1ab26..7ae71af25 100644
--- a/doc/src/snippets/code/src_network_ssl_qsslconfiguration.cpp
+++ b/doc/src/snippets/code/src_network_ssl_qsslconfiguration.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QSslConfiguration config = sslSocket.sslConfiguration();
config.setProtocol(QSsl::TlsV1);
diff --git a/doc/src/snippets/code/src_network_ssl_qsslsocket.cpp b/doc/src/snippets/code/src_network_ssl_qsslsocket.cpp
index 7845e9b86..3044dbe33 100644
--- a/doc/src/snippets/code/src_network_ssl_qsslsocket.cpp
+++ b/doc/src/snippets/code/src_network_ssl_qsslsocket.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QSslSocket *socket = new QSslSocket(this);
connect(socket, SIGNAL(encrypted()), this, SLOT(ready()));
diff --git a/doc/src/snippets/code/src_opengl_qgl.cpp b/doc/src/snippets/code/src_opengl_qgl.cpp
index 15b000542..7e7feb6b0 100644
--- a/doc/src/snippets/code/src_opengl_qgl.cpp
+++ b/doc/src/snippets/code/src_opengl_qgl.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QGLFormat fmt;
fmt.setAlpha(true);
diff --git a/doc/src/snippets/code/src_opengl_qglcolormap.cpp b/doc/src/snippets/code/src_opengl_qglcolormap.cpp
index b47de762f..efc9d3b16 100644
--- a/doc/src/snippets/code/src_opengl_qglcolormap.cpp
+++ b/doc/src/snippets/code/src_opengl_qglcolormap.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#include <QApplication>
#include <QGLColormap>
diff --git a/doc/src/snippets/code/src_opengl_qglpixelbuffer.cpp b/doc/src/snippets/code/src_opengl_qglpixelbuffer.cpp
index 589ffc0f3..87dd6ee78 100644
--- a/doc/src/snippets/code/src_opengl_qglpixelbuffer.cpp
+++ b/doc/src/snippets/code/src_opengl_qglpixelbuffer.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QGLPixelBuffer pbuffer(...);
...
diff --git a/doc/src/snippets/code/src_opengl_qglshaderprogram.cpp b/doc/src/snippets/code/src_opengl_qglshaderprogram.cpp
new file mode 100644
index 000000000..9a15f199b
--- /dev/null
+++ b/doc/src/snippets/code/src_opengl_qglshaderprogram.cpp
@@ -0,0 +1,95 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+//! [0]
+QGLShader shader(QGLShader::Vertex);
+shader.compileSourceCode(code);
+
+QGLShaderProgram program(context);
+program.addShader(shader);
+program.link();
+
+program.bind();
+//! [0]
+
+//! [1]
+program.addShaderFromSourceCode(QGLShader::Vertex,
+ "attribute highp vec4 vertex;\n"
+ "attribute mediump mat4 matrix;\n"
+ "void main(void)\n"
+ "{\n"
+ " gl_Position = matrix * vertex;\n"
+ "}");
+program.addShaderFromSourceCode(QGLShader::Fragment,
+ "uniform mediump vec4 color;\n"
+ "void main(void)\n"
+ "{\n"
+ " gl_FragColor = color;\n"
+ "}");
+program.link();
+program.bind();
+
+int vertexLocation = program.attributeLocation("vertex");
+int matrixLocation = program.attributeLocation("matrix");
+int colorLocation = program.uniformLocation("color");
+//! [1]
+
+//! [2]
+static GLfloat const triangleVertices[] = {
+ 60.0f, 10.0f, 0.0f,
+ 110.0f, 110.0f, 0.0f,
+ 10.0f, 110.0f, 0.0f
+};
+
+QColor color(0, 255, 0, 255);
+
+QMatrix4x4 pmvMatrix;
+pmvMatrix.ortho(rect());
+
+program.enableAttributeArray(vertexLocation);
+program.setAttributeArray(vertexLocation, triangleVertices, 3);
+program.setUniformValue(matrixLocation, pmvMatrix);
+program.setUniformValue(colorLocation, color);
+
+glDrawArrays(GL_TRIANGLES, 0, 3);
+
+program.disableAttributeArray(vertexLocation);
+//! [2]
diff --git a/doc/src/snippets/code/src_qdbus_qdbusabstractinterface.cpp b/doc/src/snippets/code/src_qdbus_qdbusabstractinterface.cpp
index cc5b86deb..0d86f9c06 100644
--- a/doc/src/snippets/code/src_qdbus_qdbusabstractinterface.cpp
+++ b/doc/src/snippets/code/src_qdbus_qdbusabstractinterface.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QString value = retrieveValue();
QDBusMessage reply;
diff --git a/doc/src/snippets/code/src_qdbus_qdbusargument.cpp b/doc/src/snippets/code/src_qdbus_qdbusargument.cpp
index efd54ac1b..d2e622675 100644
--- a/doc/src/snippets/code/src_qdbus_qdbusargument.cpp
+++ b/doc/src/snippets/code/src_qdbus_qdbusargument.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
struct MyStructure
{
diff --git a/doc/src/snippets/code/src_qdbus_qdbuscontext.cpp b/doc/src/snippets/code/src_qdbus_qdbuscontext.cpp
index 2a8c868ad..5972481e5 100644
--- a/doc/src/snippets/code/src_qdbus_qdbuscontext.cpp
+++ b/doc/src/snippets/code/src_qdbus_qdbuscontext.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
class MyObject: public QObject,
protected QDBusContext
diff --git a/doc/src/snippets/code/src_qdbus_qdbusinterface.cpp b/doc/src/snippets/code/src_qdbus_qdbusinterface.cpp
index df883e7d7..4adbbec0f 100644
--- a/doc/src/snippets/code/src_qdbus_qdbusinterface.cpp
+++ b/doc/src/snippets/code/src_qdbus_qdbusinterface.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QDBusInterface remoteApp( "com.example.Calculator", "/Calculator/Operations",
"org.mathematics.RPNCalculator" );
diff --git a/doc/src/snippets/code/src_qdbus_qdbusmetatype.cpp b/doc/src/snippets/code/src_qdbus_qdbusmetatype.cpp
index 99fd6e4f7..1eca14b1e 100644
--- a/doc/src/snippets/code/src_qdbus_qdbusmetatype.cpp
+++ b/doc/src/snippets/code/src_qdbus_qdbusmetatype.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
qDBusRegisterMetaType<MyClass>();
//! [0]
diff --git a/doc/src/snippets/code/src_qdbus_qdbusreply.cpp b/doc/src/snippets/code/src_qdbus_qdbusreply.cpp
index 4dc896f9e..cf3a03c10 100644
--- a/doc/src/snippets/code/src_qdbus_qdbusreply.cpp
+++ b/doc/src/snippets/code/src_qdbus_qdbusreply.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QDBusReply<QString> reply = interface->call("RemoteMethod");
if (reply.isValid())
diff --git a/doc/src/snippets/code/src_qt3support_canvas_q3canvas.cpp b/doc/src/snippets/code/src_qt3support_canvas_q3canvas.cpp
index bca056c9d..b5fd72afe 100644
--- a/doc/src/snippets/code/src_qt3support_canvas_q3canvas.cpp
+++ b/doc/src/snippets/code/src_qt3support_canvas_q3canvas.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QPrinter pr;
if (pr.setup()) {
diff --git a/doc/src/snippets/code/src_qt3support_dialogs_q3filedialog.cpp b/doc/src/snippets/code/src_qt3support_dialogs_q3filedialog.cpp
index ea669857d..150f58ec5 100644
--- a/doc/src/snippets/code/src_qt3support_dialogs_q3filedialog.cpp
+++ b/doc/src/snippets/code/src_qt3support_dialogs_q3filedialog.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QString s = Q3FileDialog::getOpenFileName(
"/home",
diff --git a/doc/src/snippets/code/src_qt3support_dialogs_q3progressdialog.cpp b/doc/src/snippets/code/src_qt3support_dialogs_q3progressdialog.cpp
index 8aeafe8ab..cdf08f318 100644
--- a/doc/src/snippets/code/src_qt3support_dialogs_q3progressdialog.cpp
+++ b/doc/src/snippets/code/src_qt3support_dialogs_q3progressdialog.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3ProgressDialog progress("Copying files...", "Abort Copy", numFiles,
this, "progress", true);
diff --git a/doc/src/snippets/code/src_qt3support_itemviews_q3iconview.cpp b/doc/src/snippets/code/src_qt3support_itemviews_q3iconview.cpp
index 8c303891e..fc703b4d0 100644
--- a/doc/src/snippets/code/src_qt3support_itemviews_q3iconview.cpp
+++ b/doc/src/snippets/code/src_qt3support_itemviews_q3iconview.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
(void) new Q3IconViewItem(
iconView, // A pointer to a Q3IconView
diff --git a/doc/src/snippets/code/src_qt3support_itemviews_q3listview.cpp b/doc/src/snippets/code/src_qt3support_itemviews_q3listview.cpp
index 615f124fd..606dc59a9 100644
--- a/doc/src/snippets/code/src_qt3support_itemviews_q3listview.cpp
+++ b/doc/src/snippets/code/src_qt3support_itemviews_q3listview.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
(void) new Q3ListViewItem(listView, "Column 1", "Column 2");
(void) new Q3ListViewItem(listView->firstChild(), "A", "B", "C");
diff --git a/doc/src/snippets/code/src_qt3support_itemviews_q3table.cpp b/doc/src/snippets/code/src_qt3support_itemviews_q3table.cpp
index 47f9c4ebb..fe815547a 100644
--- a/doc/src/snippets/code/src_qt3support_itemviews_q3table.cpp
+++ b/doc/src/snippets/code/src_qt3support_itemviews_q3table.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
void wrapInFunction()
{
diff --git a/doc/src/snippets/code/src_qt3support_network_q3dns.cpp b/doc/src/snippets/code/src_qt3support_network_q3dns.cpp
index 9638ff117..d3531391c 100644
--- a/doc/src/snippets/code/src_qt3support_network_q3dns.cpp
+++ b/doc/src/snippets/code/src_qt3support_network_q3dns.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QStringList list = myDns.qualifiedNames();
QStringList::Iterator it = list.begin();
diff --git a/doc/src/snippets/code/src_qt3support_network_q3ftp.cpp b/doc/src/snippets/code/src_qt3support_network_q3ftp.cpp
index cda1be4c2..adbcbe8c0 100644
--- a/doc/src/snippets/code/src_qt3support_network_q3ftp.cpp
+++ b/doc/src/snippets/code/src_qt3support_network_q3ftp.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QUrlOperator op( "ftp://ftp.qt.nokia.com" );
op.listChildren(); // Asks the server to provide a directory listing
diff --git a/doc/src/snippets/code/src_qt3support_network_q3http.cpp b/doc/src/snippets/code/src_qt3support_network_q3http.cpp
index 6df626a3e..c94bf5720 100644
--- a/doc/src/snippets/code/src_qt3support_network_q3http.cpp
+++ b/doc/src/snippets/code/src_qt3support_network_q3http.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
content-type: text/html
//! [0]
diff --git a/doc/src/snippets/code/src_qt3support_network_q3localfs.cpp b/doc/src/snippets/code/src_qt3support_network_q3localfs.cpp
index 243be9eb8..e48ac0e57 100644
--- a/doc/src/snippets/code/src_qt3support_network_q3localfs.cpp
+++ b/doc/src/snippets/code/src_qt3support_network_q3localfs.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3UrlOperator op( "file:///tmp" );
op.listChildren(); // Asks the server to provide a directory listing
diff --git a/doc/src/snippets/code/src_qt3support_network_q3networkprotocol.cpp b/doc/src/snippets/code/src_qt3support_network_q3networkprotocol.cpp
index 51d1059a2..07ff0d0e4 100644
--- a/doc/src/snippets/code/src_qt3support_network_q3networkprotocol.cpp
+++ b/doc/src/snippets/code/src_qt3support_network_q3networkprotocol.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3NetworkProtocol::registerNetworkProtocol( "nntp", new Q3NetworkProtocolFactory<Nntp> );
//! [0]
diff --git a/doc/src/snippets/code/src_qt3support_network_q3socket.cpp b/doc/src/snippets/code/src_qt3support_network_q3socket.cpp
index 34474fb6e..d2523cf33 100644
--- a/doc/src/snippets/code/src_qt3support_network_q3socket.cpp
+++ b/doc/src/snippets/code/src_qt3support_network_q3socket.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
while( !socket->canReadLine() ) // WRONG
;
diff --git a/doc/src/snippets/code/src_qt3support_network_q3socketdevice.cpp b/doc/src/snippets/code/src_qt3support_network_q3socketdevice.cpp
index cd50fd215..cffd6f97f 100644
--- a/doc/src/snippets/code/src_qt3support_network_q3socketdevice.cpp
+++ b/doc/src/snippets/code/src_qt3support_network_q3socketdevice.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
::close( sd->socket() );
sd->writeBlock( someData, 42 );
diff --git a/doc/src/snippets/code/src_qt3support_network_q3url.cpp b/doc/src/snippets/code/src_qt3support_network_q3url.cpp
index d0174a99b..60345d047 100644
--- a/doc/src/snippets/code/src_qt3support_network_q3url.cpp
+++ b/doc/src/snippets/code/src_qt3support_network_q3url.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3Url url( "http://qt.nokia.com" );
// or
diff --git a/doc/src/snippets/code/src_qt3support_network_q3urloperator.cpp b/doc/src/snippets/code/src_qt3support_network_q3urloperator.cpp
index f076a7c3e..6c0fd4ada 100644
--- a/doc/src/snippets/code/src_qt3support_network_q3urloperator.cpp
+++ b/doc/src/snippets/code/src_qt3support_network_q3urloperator.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3UrlOperator *op = new Q3UrlOperator();
op->copy( QString("ftp://ftp.qt.nokia.com/qt/source/qt-2.1.0.tar.gz"),
diff --git a/doc/src/snippets/code/src_qt3support_other_q3accel.cpp b/doc/src/snippets/code/src_qt3support_other_q3accel.cpp
index ba315c0d9..e5d1936f7 100644
--- a/doc/src/snippets/code/src_qt3support_other_q3accel.cpp
+++ b/doc/src/snippets/code/src_qt3support_other_q3accel.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QPushButton p("&Exit", parent); // automatic shortcut Alt+E
Q3PopupMenu *fileMenu = new fileMenu(parent);
diff --git a/doc/src/snippets/code/src_qt3support_other_q3mimefactory.cpp b/doc/src/snippets/code/src_qt3support_other_q3mimefactory.cpp
index f00ad7363..fc8b855d7 100644
--- a/doc/src/snippets/code/src_qt3support_other_q3mimefactory.cpp
+++ b/doc/src/snippets/code/src_qt3support_other_q3mimefactory.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
static const char* myimage_data[]={
"...",
diff --git a/doc/src/snippets/code/src_qt3support_other_q3process.cpp b/doc/src/snippets/code/src_qt3support_other_q3process.cpp
index 2ce94bb20..a623e9eaf 100644
--- a/doc/src/snippets/code/src_qt3support_other_q3process.cpp
+++ b/doc/src/snippets/code/src_qt3support_other_q3process.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QStringList list = myProcess.arguments();
QStringList::Iterator it = list.begin();
diff --git a/doc/src/snippets/code/src_qt3support_other_q3process_unix.cpp b/doc/src/snippets/code/src_qt3support_other_q3process_unix.cpp
index c443c2e75..cb01d1ab6 100644
--- a/doc/src/snippets/code/src_qt3support_other_q3process_unix.cpp
+++ b/doc/src/snippets/code/src_qt3support_other_q3process_unix.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
process->tryTerminate();
QTimer::singleShot( 5000, process, SLOT(kill()) );
diff --git a/doc/src/snippets/code/src_qt3support_painting_q3paintdevicemetrics.cpp b/doc/src/snippets/code/src_qt3support_painting_q3paintdevicemetrics.cpp
index 1e807d5cc..f9b1e2d4d 100644
--- a/doc/src/snippets/code/src_qt3support_painting_q3paintdevicemetrics.cpp
+++ b/doc/src/snippets/code/src_qt3support_painting_q3paintdevicemetrics.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3PaintDeviceMetrics pdm(myWidget);
double aspect = (double)pdm.widthMM() / (double)pdm.heightMM();
diff --git a/doc/src/snippets/code/src_qt3support_painting_q3painter.cpp b/doc/src/snippets/code/src_qt3support_painting_q3painter.cpp
index e93225001..235803008 100644
--- a/doc/src/snippets/code/src_qt3support_painting_q3painter.cpp
+++ b/doc/src/snippets/code/src_qt3support_painting_q3painter.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QPainter p(myWidget);
p.drawArc(QRect(10,10, 70,100), 100*16, 160*16); // draws a "(" arc
diff --git a/doc/src/snippets/code/src_qt3support_painting_q3picture.cpp b/doc/src/snippets/code/src_qt3support_painting_q3picture.cpp
index 709b3860a..2f0723eab 100644
--- a/doc/src/snippets/code/src_qt3support_painting_q3picture.cpp
+++ b/doc/src/snippets/code/src_qt3support_painting_q3picture.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3Picture picture;
picture.load("drawing.svg", SVG);
diff --git a/doc/src/snippets/code/src_qt3support_sql_q3databrowser.cpp b/doc/src/snippets/code/src_qt3support_sql_q3databrowser.cpp
index cb86b323f..ee281fc05 100644
--- a/doc/src/snippets/code/src_qt3support_sql_q3databrowser.cpp
+++ b/doc/src/snippets/code/src_qt3support_sql_q3databrowser.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QStringList list = myDataBrowser.sort();
QStringList::Iterator it = list.begin();
diff --git a/doc/src/snippets/code/src_qt3support_sql_q3datatable.cpp b/doc/src/snippets/code/src_qt3support_sql_q3datatable.cpp
index aa72f4421..033217769 100644
--- a/doc/src/snippets/code/src_qt3support_sql_q3datatable.cpp
+++ b/doc/src/snippets/code/src_qt3support_sql_q3datatable.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QStringList list = myDataTable.sort();
QStringList::Iterator it = list.begin();
diff --git a/doc/src/snippets/code/src_qt3support_sql_q3dataview.cpp b/doc/src/snippets/code/src_qt3support_sql_q3dataview.cpp
index b0b9a5922..ea38dbe14 100644
--- a/doc/src/snippets/code/src_qt3support_sql_q3dataview.cpp
+++ b/doc/src/snippets/code/src_qt3support_sql_q3dataview.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
myView.setRecord(record);
myView.readFields();
diff --git a/doc/src/snippets/code/src_qt3support_sql_q3sqlcursor.cpp b/doc/src/snippets/code/src_qt3support_sql_q3sqlcursor.cpp
index b3b643d96..d08f813ee 100644
--- a/doc/src/snippets/code/src_qt3support_sql_q3sqlcursor.cpp
+++ b/doc/src/snippets/code/src_qt3support_sql_q3sqlcursor.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3SqlCursor cur( "staff" ); // Specify the table/view name
cur.select(); // We'll retrieve every record
diff --git a/doc/src/snippets/code/src_qt3support_sql_q3sqlform.cpp b/doc/src/snippets/code/src_qt3support_sql_q3sqlform.cpp
index e91b7ed1b..44691f969 100644
--- a/doc/src/snippets/code/src_qt3support_sql_q3sqlform.cpp
+++ b/doc/src/snippets/code/src_qt3support_sql_q3sqlform.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QLineEdit myEditor(this);
Q3SqlForm myForm(this);
diff --git a/doc/src/snippets/code/src_qt3support_sql_q3sqlmanager_p.cpp b/doc/src/snippets/code/src_qt3support_sql_q3sqlmanager_p.cpp
index 9d5b2c152..a8e4a1c30 100644
--- a/doc/src/snippets/code/src_qt3support_sql_q3sqlmanager_p.cpp
+++ b/doc/src/snippets/code/src_qt3support_sql_q3sqlmanager_p.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3SqlCursor* myCursor = myManager.cursor();
...
diff --git a/doc/src/snippets/code/src_qt3support_sql_q3sqlpropertymap.cpp b/doc/src/snippets/code/src_qt3support_sql_q3sqlpropertymap.cpp
index 55146de18..2bd57c0cf 100644
--- a/doc/src/snippets/code/src_qt3support_sql_q3sqlpropertymap.cpp
+++ b/doc/src/snippets/code/src_qt3support_sql_q3sqlpropertymap.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3SqlPropertyMap *myMap = new Q3SqlPropertyMap();
Q3SqlForm *myForm = new Q3SqlForm(this);
diff --git a/doc/src/snippets/code/src_qt3support_sql_q3sqlselectcursor.cpp b/doc/src/snippets/code/src_qt3support_sql_q3sqlselectcursor.cpp
index bfb7b04ea..75860daa5 100644
--- a/doc/src/snippets/code/src_qt3support_sql_q3sqlselectcursor.cpp
+++ b/doc/src/snippets/code/src_qt3support_sql_q3sqlselectcursor.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
...
Q3SqlSelectCursor* cur = new Q3SqlSelectCursor("SELECT id, firstname, lastname FROM author");
diff --git a/doc/src/snippets/code/src_qt3support_text_q3simplerichtext.cpp b/doc/src/snippets/code/src_qt3support_text_q3simplerichtext.cpp
index 073d71610..f9e262aa6 100644
--- a/doc/src/snippets/code/src_qt3support_text_q3simplerichtext.cpp
+++ b/doc/src/snippets/code/src_qt3support_text_q3simplerichtext.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3SimpleRichText myrichtext(contents, mywidget->font());
//! [0]
diff --git a/doc/src/snippets/code/src_qt3support_text_q3textbrowser.cpp b/doc/src/snippets/code/src_qt3support_text_q3textbrowser.cpp
index b042efb9d..c77534b13 100644
--- a/doc/src/snippets/code/src_qt3support_text_q3textbrowser.cpp
+++ b/doc/src/snippets/code/src_qt3support_text_q3textbrowser.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
mimeSourceFactory()->setExtensionType("qml", "text/utf8");
//! [0]
diff --git a/doc/src/snippets/code/src_qt3support_text_q3textedit.cpp b/doc/src/snippets/code/src_qt3support_text_q3textedit.cpp
index e8d5784a2..4f4614466 100644
--- a/doc/src/snippets/code/src_qt3support_text_q3textedit.cpp
+++ b/doc/src/snippets/code/src_qt3support_text_q3textedit.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QFile file(fileName); // Read the text from a file
if (file.open(IO_ReadOnly)) {
diff --git a/doc/src/snippets/code/src_qt3support_text_q3textstream.cpp b/doc/src/snippets/code/src_qt3support_text_q3textstream.cpp
index 664a6909b..d47363dda 100644
--- a/doc/src/snippets/code/src_qt3support_text_q3textstream.cpp
+++ b/doc/src/snippets/code/src_qt3support_text_q3textstream.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QString str;
Q3TextStream ts( &str, IO_WriteOnly );
diff --git a/doc/src/snippets/code/src_qt3support_tools_q3cstring.cpp b/doc/src/snippets/code/src_qt3support_tools_q3cstring.cpp
index 9985e9d56..5904f41f4 100644
--- a/doc/src/snippets/code/src_qt3support_tools_q3cstring.cpp
+++ b/doc/src/snippets/code/src_qt3support_tools_q3cstring.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3CString str("helloworld", 6); // assigns "hello" to str
//! [0]
diff --git a/doc/src/snippets/code/src_qt3support_tools_q3deepcopy.cpp b/doc/src/snippets/code/src_qt3support_tools_q3deepcopy.cpp
index 36f7491ee..83784b131 100644
--- a/doc/src/snippets/code/src_qt3support_tools_q3deepcopy.cpp
+++ b/doc/src/snippets/code/src_qt3support_tools_q3deepcopy.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
// all 5 strings share the same data
QString s1 = "abcd";
diff --git a/doc/src/snippets/code/src_qt3support_tools_q3garray.cpp b/doc/src/snippets/code/src_qt3support_tools_q3garray.cpp
index 710826205..a6adbaee8 100644
--- a/doc/src/snippets/code/src_qt3support_tools_q3garray.cpp
+++ b/doc/src/snippets/code/src_qt3support_tools_q3garray.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
static uchar bindata[] = { 231, 1, 44, ... };
QByteArray a;
diff --git a/doc/src/snippets/code/src_qt3support_tools_q3signal.cpp b/doc/src/snippets/code/src_qt3support_tools_q3signal.cpp
index 7793ba2bc..a7c9fab88 100644
--- a/doc/src/snippets/code/src_qt3support_tools_q3signal.cpp
+++ b/doc/src/snippets/code/src_qt3support_tools_q3signal.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
#include <q3signal.h>
diff --git a/doc/src/snippets/code/src_qt3support_widgets_q3combobox.cpp b/doc/src/snippets/code/src_qt3support_widgets_q3combobox.cpp
index 90d7b149d..2715676bf 100644
--- a/doc/src/snippets/code/src_qt3support_widgets_q3combobox.cpp
+++ b/doc/src/snippets/code/src_qt3support_widgets_q3combobox.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3ComboBox *c = new Q3ComboBox(this, tr("read-only combobox"));
//! [0]
diff --git a/doc/src/snippets/code/src_qt3support_widgets_q3datetimeedit.cpp b/doc/src/snippets/code/src_qt3support_widgets_q3datetimeedit.cpp
index 74070ec4b..a7aeb8e6c 100644
--- a/doc/src/snippets/code/src_qt3support_widgets_q3datetimeedit.cpp
+++ b/doc/src/snippets/code/src_qt3support_widgets_q3datetimeedit.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
void wrapInFunction()
{
diff --git a/doc/src/snippets/code/src_qt3support_widgets_q3dockarea.cpp b/doc/src/snippets/code/src_qt3support_widgets_q3dockarea.cpp
index bde7d84ec..a2028a162 100644
--- a/doc/src/snippets/code/src_qt3support_widgets_q3dockarea.cpp
+++ b/doc/src/snippets/code/src_qt3support_widgets_q3dockarea.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
ts << *myDockArea;
//! [0]
diff --git a/doc/src/snippets/code/src_qt3support_widgets_q3dockwindow.cpp b/doc/src/snippets/code/src_qt3support_widgets_q3dockwindow.cpp
index 1476dcb48..5e5410495 100644
--- a/doc/src/snippets/code/src_qt3support_widgets_q3dockwindow.cpp
+++ b/doc/src/snippets/code/src_qt3support_widgets_q3dockwindow.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3ToolBar *fileTools = new Q3ToolBar(this, "File Actions");
moveDockWindow(fileTools, Left);
diff --git a/doc/src/snippets/code/src_qt3support_widgets_q3gridview.cpp b/doc/src/snippets/code/src_qt3support_widgets_q3gridview.cpp
index 43dca3e66..8ededc786 100644
--- a/doc/src/snippets/code/src_qt3support_widgets_q3gridview.cpp
+++ b/doc/src/snippets/code/src_qt3support_widgets_q3gridview.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
p->setClipRect(cellRect(), QPainter::CoordPainter);
//... your drawing code
diff --git a/doc/src/snippets/code/src_qt3support_widgets_q3header.cpp b/doc/src/snippets/code/src_qt3support_widgets_q3header.cpp
index 684d18212..fecd3615c 100644
--- a/doc/src/snippets/code/src_qt3support_widgets_q3header.cpp
+++ b/doc/src/snippets/code/src_qt3support_widgets_q3header.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
// Allow resizing of all current and future sections
header->setResizeEnabled(true);
diff --git a/doc/src/snippets/code/src_qt3support_widgets_q3mainwindow.cpp b/doc/src/snippets/code/src_qt3support_widgets_q3mainwindow.cpp
index c63b481d9..9877eb212 100644
--- a/doc/src/snippets/code/src_qt3support_widgets_q3mainwindow.cpp
+++ b/doc/src/snippets/code/src_qt3support_widgets_q3mainwindow.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3MainWindow *mw = new Q3MainWindow;
QTextEdit *edit = new QTextEdit(mw, "editor");
diff --git a/doc/src/snippets/code/src_qt3support_widgets_q3scrollview.cpp b/doc/src/snippets/code/src_qt3support_widgets_q3scrollview.cpp
index 58d5acfee..0a12e822b 100644
--- a/doc/src/snippets/code/src_qt3support_widgets_q3scrollview.cpp
+++ b/doc/src/snippets/code/src_qt3support_widgets_q3scrollview.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
Q3ScrollView* sv = new Q3ScrollView(...);
QWidget *widget = new QWidget(sv->viewport());
diff --git a/doc/src/snippets/code/src_qt3support_widgets_q3whatsthis.cpp b/doc/src/snippets/code/src_qt3support_widgets_q3whatsthis.cpp
index f7b48ba6f..d662f35e7 100644
--- a/doc/src/snippets/code/src_qt3support_widgets_q3whatsthis.cpp
+++ b/doc/src/snippets/code/src_qt3support_widgets_q3whatsthis.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
(void)Q3WhatsThis::whatsThisButton( my_help_tool_bar );
//! [0]
diff --git a/doc/src/snippets/code/src_qtestlib_qtestcase.cpp b/doc/src/snippets/code/src_qtestlib_qtestcase.cpp
index c143e334d..951dfbbdf 100644
--- a/doc/src/snippets/code/src_qtestlib_qtestcase.cpp
+++ b/doc/src/snippets/code/src_qtestlib_qtestcase.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
void wrapInFunction()
{
@@ -184,5 +225,11 @@ void MyTestClass::cleanup()
QTest::qSleep(250);
//! [23]
+//! [24]
+QWidget widget;
+widget.show();
+QTest::qWaitForWindowShown(&widget);
+//! [24]
+
}
diff --git a/doc/src/snippets/code/src_script_qscriptable.cpp b/doc/src/snippets/code/src_script_qscriptable.cpp
index 3a02d5182..b701c2c8e 100644
--- a/doc/src/snippets/code/src_script_qscriptable.cpp
+++ b/doc/src/snippets/code/src_script_qscriptable.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
class MyScriptableObject: public QObject,
protected QScriptable
diff --git a/doc/src/snippets/code/src_script_qscriptclass.cpp b/doc/src/snippets/code/src_script_qscriptclass.cpp
index 9d55e0f7f..ef089bf6a 100644
--- a/doc/src/snippets/code/src_script_qscriptclass.cpp
+++ b/doc/src/snippets/code/src_script_qscriptclass.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
if (extension == Callable) {
QScriptContext *context = qvariant_cast<QScriptContext*>(argument);
diff --git a/doc/src/snippets/code/src_script_qscriptcontext.cpp b/doc/src/snippets/code/src_script_qscriptcontext.cpp
index a2f181586..98d2c5434 100644
--- a/doc/src/snippets/code/src_script_qscriptcontext.cpp
+++ b/doc/src/snippets/code/src_script_qscriptcontext.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
foo(20.5, "hello", new Object())
//! [0]
diff --git a/doc/src/snippets/code/src_script_qscriptengine.cpp b/doc/src/snippets/code/src_script_qscriptengine.cpp
index 81d4fbcee..15be21657 100644
--- a/doc/src/snippets/code/src_script_qscriptengine.cpp
+++ b/doc/src/snippets/code/src_script_qscriptengine.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QScriptEngine myEngine;
QScriptValue three = myEngine.evaluate("1 + 2");
diff --git a/doc/src/snippets/code/src_script_qscriptengineagent.cpp b/doc/src/snippets/code/src_script_qscriptengineagent.cpp
index 649d782f3..04493938a 100644
--- a/doc/src/snippets/code/src_script_qscriptengineagent.cpp
+++ b/doc/src/snippets/code/src_script_qscriptengineagent.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
var a = Math.random() + 2;
//! [0]
diff --git a/doc/src/snippets/code/src_script_qscriptvalue.cpp b/doc/src/snippets/code/src_script_qscriptvalue.cpp
index d050f2e22..5f5e7052c 100644
--- a/doc/src/snippets/code/src_script_qscriptvalue.cpp
+++ b/doc/src/snippets/code/src_script_qscriptvalue.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QScriptEngine myEngine;
QScriptValue myObject = myEngine.newObject();
diff --git a/doc/src/snippets/code/src_script_qscriptvalueiterator.cpp b/doc/src/snippets/code/src_script_qscriptvalueiterator.cpp
index c9de60270..c24731a99 100644
--- a/doc/src/snippets/code/src_script_qscriptvalueiterator.cpp
+++ b/doc/src/snippets/code/src_script_qscriptvalueiterator.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QScriptValue object;
...
diff --git a/doc/src/snippets/code/src_sql_kernel_qsqldatabase.cpp b/doc/src/snippets/code/src_sql_kernel_qsqldatabase.cpp
index 8194611a9..9a7069d07 100644
--- a/doc/src/snippets/code/src_sql_kernel_qsqldatabase.cpp
+++ b/doc/src/snippets/code/src_sql_kernel_qsqldatabase.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
// WRONG
QSqlDatabase db = QSqlDatabase::database("sales");
diff --git a/doc/src/snippets/code/src_sql_kernel_qsqldriver.cpp b/doc/src/snippets/code/src_sql_kernel_qsqldriver.cpp
index d5992c3b9..5839ca130 100644
--- a/doc/src/snippets/code/src_sql_kernel_qsqldriver.cpp
+++ b/doc/src/snippets/code/src_sql_kernel_qsqldriver.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QSqlDatabase db = ...;
QVariant v = db.driver()->handle();
diff --git a/doc/src/snippets/code/src_sql_kernel_qsqlerror.cpp b/doc/src/snippets/code/src_sql_kernel_qsqlerror.cpp
index e25948c7f..cc3401f0e 100644
--- a/doc/src/snippets/code/src_sql_kernel_qsqlerror.cpp
+++ b/doc/src/snippets/code/src_sql_kernel_qsqlerror.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QSqlQueryModel model;
model.setQuery("select * from myTable");
diff --git a/doc/src/snippets/code/src_sql_kernel_qsqlindex.cpp b/doc/src/snippets/code/src_sql_kernel_qsqlindex.cpp
index a372c3e1c..4e5612476 100644
--- a/doc/src/snippets/code/src_sql_kernel_qsqlindex.cpp
+++ b/doc/src/snippets/code/src_sql_kernel_qsqlindex.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QStringList list = myIndex.toStringList();
QStringList::Iterator it = list.begin();
diff --git a/doc/src/snippets/code/src_sql_kernel_qsqlquery.cpp b/doc/src/snippets/code/src_sql_kernel_qsqlquery.cpp
index d0544b898..34ea908ea 100644
--- a/doc/src/snippets/code/src_sql_kernel_qsqlquery.cpp
+++ b/doc/src/snippets/code/src_sql_kernel_qsqlquery.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
SELECT forename, surname FROM people;
//! [0]
diff --git a/doc/src/snippets/code/src_sql_kernel_qsqlresult.cpp b/doc/src/snippets/code/src_sql_kernel_qsqlresult.cpp
index 7e6c91380..bc3d879a1 100644
--- a/doc/src/snippets/code/src_sql_kernel_qsqlresult.cpp
+++ b/doc/src/snippets/code/src_sql_kernel_qsqlresult.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QSqlQuery q;
q.prepare("insert into test (i1, i2, s) values (?, ?, ?)");
diff --git a/doc/src/snippets/code/src_sql_models_qsqlquerymodel.cpp b/doc/src/snippets/code/src_sql_models_qsqlquerymodel.cpp
index e3bce7567..71049d28e 100644
--- a/doc/src/snippets/code/src_sql_models_qsqlquerymodel.cpp
+++ b/doc/src/snippets/code/src_sql_models_qsqlquerymodel.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
while (myModel->canFetchMore())
myModel->fetchMore();
diff --git a/doc/src/snippets/code/src_svg_qgraphicssvgitem.cpp b/doc/src/snippets/code/src_svg_qgraphicssvgitem.cpp
index f0846e64d..1e297f509 100644
--- a/doc/src/snippets/code/src_svg_qgraphicssvgitem.cpp
+++ b/doc/src/snippets/code/src_svg_qgraphicssvgitem.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QSvgRenderer *renderer = new QSvgRenderer(QLatin1String("SvgCardDeck.svg"));
QGraphicsSvgItem *black = new QGraphicsSvgItem();
diff --git a/doc/src/snippets/code/src_xml_dom_qdom.cpp b/doc/src/snippets/code/src_xml_dom_qdom.cpp
index 622295d48..1f4045858 100644
--- a/doc/src/snippets/code/src_xml_dom_qdom.cpp
+++ b/doc/src/snippets/code/src_xml_dom_qdom.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QDomDocument doc;
QDomImplementation impl;
diff --git a/doc/src/snippets/code/src_xml_sax_qxml.cpp b/doc/src/snippets/code/src_xml_sax_qxml.cpp
index 478cf9d22..665e00143 100644
--- a/doc/src/snippets/code/src_xml_sax_qxml.cpp
+++ b/doc/src/snippets/code/src_xml_sax_qxml.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
xmlReader.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
//! [0]
diff --git a/doc/src/snippets/code/src_xmlpatterns_api_qabstracturiresolver.cpp b/doc/src/snippets/code/src_xmlpatterns_api_qabstracturiresolver.cpp
index 990a84968..cc6b2bc00 100644
--- a/doc/src/snippets/code/src_xmlpatterns_api_qabstracturiresolver.cpp
+++ b/doc/src/snippets/code/src_xmlpatterns_api_qabstracturiresolver.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
return baseURI.resolved(relative);
//! [0]
diff --git a/doc/src/snippets/code/src_xmlpatterns_api_qabstractxmlforwarditerator.cpp b/doc/src/snippets/code/src_xmlpatterns_api_qabstractxmlforwarditerator.cpp
index f31ea3f5c..2db493b08 100644
--- a/doc/src/snippets/code/src_xmlpatterns_api_qabstractxmlforwarditerator.cpp
+++ b/doc/src/snippets/code/src_xmlpatterns_api_qabstractxmlforwarditerator.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
OutputType inputToOutputItem(const InputType &inputType) const;
//! [0]
diff --git a/doc/src/snippets/code/src_xmlpatterns_api_qabstractxmlnodemodel.cpp b/doc/src/snippets/code/src_xmlpatterns_api_qabstractxmlnodemodel.cpp
index 351a30be2..eabda2375 100644
--- a/doc/src/snippets/code/src_xmlpatterns_api_qabstractxmlnodemodel.cpp
+++ b/doc/src/snippets/code/src_xmlpatterns_api_qabstractxmlnodemodel.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
myInstance = QXmlNodeModelIndex();
//! [0]
diff --git a/doc/src/snippets/code/src_xmlpatterns_api_qabstractxmlreceiver.cpp b/doc/src/snippets/code/src_xmlpatterns_api_qabstractxmlreceiver.cpp
index e286fa98c..37a1590b0 100644
--- a/doc/src/snippets/code/src_xmlpatterns_api_qabstractxmlreceiver.cpp
+++ b/doc/src/snippets/code/src_xmlpatterns_api_qabstractxmlreceiver.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QXmlQuery query;
query.setQuery("doc('index.html')/html/body/p[1]");
diff --git a/doc/src/snippets/code/src_xmlpatterns_api_qsimplexmlnodemodel.cpp b/doc/src/snippets/code/src_xmlpatterns_api_qsimplexmlnodemodel.cpp
index 0906328f8..152397083 100644
--- a/doc/src/snippets/code/src_xmlpatterns_api_qsimplexmlnodemodel.cpp
+++ b/doc/src/snippets/code/src_xmlpatterns_api_qsimplexmlnodemodel.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QXmlNodeModelIndex MyTreeModel::nextFromSimpleAxis(SimpleAxis axis, const QXmlNodeModelIndex &ni) const
{
diff --git a/doc/src/snippets/code/src_xmlpatterns_api_qxmlformatter.cpp b/doc/src/snippets/code/src_xmlpatterns_api_qxmlformatter.cpp
index d7e6ab1db..642ae4479 100644
--- a/doc/src/snippets/code/src_xmlpatterns_api_qxmlformatter.cpp
+++ b/doc/src/snippets/code/src_xmlpatterns_api_qxmlformatter.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QXmlQuery query;
query.setQuery("doc('index.html')/html/body/p[1]");
diff --git a/doc/src/snippets/code/src_xmlpatterns_api_qxmlname.cpp b/doc/src/snippets/code/src_xmlpatterns_api_qxmlname.cpp
index 2c891b5e6..3ca86748e 100644
--- a/doc/src/snippets/code/src_xmlpatterns_api_qxmlname.cpp
+++ b/doc/src/snippets/code/src_xmlpatterns_api_qxmlname.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
// Fills the bits from begin to end with 1s and leaves the rest as 0.
template<typename IntegralT>
diff --git a/doc/src/snippets/code/src_xmlpatterns_api_qxmlquery.cpp b/doc/src/snippets/code/src_xmlpatterns_api_qxmlquery.cpp
index 76e1b34de..c9fb8c3ed 100644
--- a/doc/src/snippets/code/src_xmlpatterns_api_qxmlquery.cpp
+++ b/doc/src/snippets/code/src_xmlpatterns_api_qxmlquery.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QXmlNamePool namePool(query.namePool());
query.bindVariable(QXmlName(namePool, localName), value);
diff --git a/doc/src/snippets/code/src_xmlpatterns_api_qxmlresultitems.cpp b/doc/src/snippets/code/src_xmlpatterns_api_qxmlresultitems.cpp
index 190d6106d..dd0f30387 100644
--- a/doc/src/snippets/code/src_xmlpatterns_api_qxmlresultitems.cpp
+++ b/doc/src/snippets/code/src_xmlpatterns_api_qxmlresultitems.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QXmlQuery query;
query.setQuery("<e/>, 1, 'two'");
diff --git a/doc/src/snippets/code/src_xmlpatterns_api_qxmlserializer.cpp b/doc/src/snippets/code/src_xmlpatterns_api_qxmlserializer.cpp
index e286fa98c..37a1590b0 100644
--- a/doc/src/snippets/code/src_xmlpatterns_api_qxmlserializer.cpp
+++ b/doc/src/snippets/code/src_xmlpatterns_api_qxmlserializer.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QXmlQuery query;
query.setQuery("doc('index.html')/html/body/p[1]");
diff --git a/doc/src/snippets/code/tools_assistant_compat_lib_qassistantclient.cpp b/doc/src/snippets/code/tools_assistant_compat_lib_qassistantclient.cpp
index f5097a9f8..5dbd93351 100644
--- a/doc/src/snippets/code/tools_assistant_compat_lib_qassistantclient.cpp
+++ b/doc/src/snippets/code/tools_assistant_compat_lib_qassistantclient.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QProcess *process = new QProcess(this);
QString app = QLibraryInfo::location(QLibraryInfo::BinariesPath)
diff --git a/doc/src/snippets/code/tools_designer_src_lib_extension_default_extensionfactory.cpp b/doc/src/snippets/code/tools_designer_src_lib_extension_default_extensionfactory.cpp
index cdfd07648..3b1efe34d 100644
--- a/doc/src/snippets/code/tools_designer_src_lib_extension_default_extensionfactory.cpp
+++ b/doc/src/snippets/code/tools_designer_src_lib_extension_default_extensionfactory.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QObject *ANewExtensionFactory::createExtension(QObject *object,
const QString &iid, QObject *parent) const
diff --git a/doc/src/snippets/code/tools_designer_src_lib_extension_extension.cpp b/doc/src/snippets/code/tools_designer_src_lib_extension_extension.cpp
index 60bd0ccc4..06e064f86 100644
--- a/doc/src/snippets/code/tools_designer_src_lib_extension_extension.cpp
+++ b/doc/src/snippets/code/tools_designer_src_lib_extension_extension.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QDesignerPropertySheetExtension *propertySheet;
QExtensionManager manager = formEditor->extensionManager();
diff --git a/doc/src/snippets/code/tools_designer_src_lib_extension_qextensionmanager.cpp b/doc/src/snippets/code/tools_designer_src_lib_extension_qextensionmanager.cpp
index 47cee58d3..189b608fb 100644
--- a/doc/src/snippets/code/tools_designer_src_lib_extension_qextensionmanager.cpp
+++ b/doc/src/snippets/code/tools_designer_src_lib_extension_qextensionmanager.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
void MyPlugin::initialize(QDesignerFormEditorInterface *formEditor)
{
diff --git a/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformeditor.cpp b/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformeditor.cpp
index ef13069d0..fb79363d2 100644
--- a/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformeditor.cpp
+++ b/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformeditor.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QDesignerObjectInspectorInterface *objectInspector = 0;
objectInspector = formEditor->objectInspector();
diff --git a/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformwindow.cpp b/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformwindow.cpp
index 840697d86..307812a74 100644
--- a/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformwindow.cpp
+++ b/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformwindow.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QDesignerFormWindowInterface *formWindow;
formWindow = QDesignerFormWindowInterface::findFormWindow(myWidget);
diff --git a/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformwindowcursor.cpp b/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformwindowcursor.cpp
index fbe4fb8b7..72033b249 100644
--- a/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformwindowcursor.cpp
+++ b/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformwindowcursor.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QDesignerFormWindowInterface *formWindow = 0;
formWindow = QDesignerFormWindowInterface::findFormWindow(myWidget);
diff --git a/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformwindowmanager.cpp b/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformwindowmanager.cpp
index b54f0a6db..1acbf68bb 100644
--- a/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformwindowmanager.cpp
+++ b/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractformwindowmanager.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QDesignerFormWindowManagerInterface *manager = 0;
QDesignerFormWindowInterface *formWindow = 0;
diff --git a/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractobjectinspector.cpp b/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractobjectinspector.cpp
index ef13069d0..fb79363d2 100644
--- a/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractobjectinspector.cpp
+++ b/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractobjectinspector.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QDesignerObjectInspectorInterface *objectInspector = 0;
objectInspector = formEditor->objectInspector();
diff --git a/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractpropertyeditor.cpp b/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractpropertyeditor.cpp
index bbc396fcf..79f41b3af 100644
--- a/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractpropertyeditor.cpp
+++ b/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractpropertyeditor.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QDesignerPropertyEditorInterface *propertyEditor = 0;
propertyEditor = formEditor->propertyEditor();
diff --git a/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractwidgetbox.cpp b/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractwidgetbox.cpp
index b80c59ead..74635e082 100644
--- a/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractwidgetbox.cpp
+++ b/doc/src/snippets/code/tools_designer_src_lib_sdk_abstractwidgetbox.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QDesignerWidgetBoxInterface *widgetBox = 0:
widgetBox = formEditor->widgetBox();
diff --git a/doc/src/snippets/code/tools_designer_src_lib_uilib_abstractformbuilder.cpp b/doc/src/snippets/code/tools_designer_src_lib_uilib_abstractformbuilder.cpp
index b572fba88..86b58bceb 100644
--- a/doc/src/snippets/code/tools_designer_src_lib_uilib_abstractformbuilder.cpp
+++ b/doc/src/snippets/code/tools_designer_src_lib_uilib_abstractformbuilder.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
MyForm::MyForm(QWidget *parent)
: QWidget(parent)
diff --git a/doc/src/snippets/code/tools_designer_src_lib_uilib_formbuilder.cpp b/doc/src/snippets/code/tools_designer_src_lib_uilib_formbuilder.cpp
index a88dab58e..6863371e3 100644
--- a/doc/src/snippets/code/tools_designer_src_lib_uilib_formbuilder.cpp
+++ b/doc/src/snippets/code/tools_designer_src_lib_uilib_formbuilder.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
MyForm::MyForm(QWidget *parent)
: QWidget(parent)
diff --git a/doc/src/snippets/code/tools_patternist_qapplicationargumentparser.cpp b/doc/src/snippets/code/tools_patternist_qapplicationargumentparser.cpp
index da28cd518..a2b3190b9 100644
--- a/doc/src/snippets/code/tools_patternist_qapplicationargumentparser.cpp
+++ b/doc/src/snippets/code/tools_patternist_qapplicationargumentparser.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
\include main.cpp
//! [0]
diff --git a/doc/src/snippets/code/tools_shared_qtgradienteditor_qtgradientdialog.cpp b/doc/src/snippets/code/tools_shared_qtgradienteditor_qtgradientdialog.cpp
index 72e86ba59..4f65fe2c2 100644
--- a/doc/src/snippets/code/tools_shared_qtgradienteditor_qtgradientdialog.cpp
+++ b/doc/src/snippets/code/tools_shared_qtgradienteditor_qtgradientdialog.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
bool ok;
QGradient gradient = QtGradientDialog::getGradient(&ok, QRadialGradient(), this);
diff --git a/doc/src/snippets/code/tools_shared_qtpropertybrowser_qtpropertybrowser.cpp b/doc/src/snippets/code/tools_shared_qtpropertybrowser_qtpropertybrowser.cpp
index 62f431900..1edb5c762 100644
--- a/doc/src/snippets/code/tools_shared_qtpropertybrowser_qtpropertybrowser.cpp
+++ b/doc/src/snippets/code/tools_shared_qtpropertybrowser_qtpropertybrowser.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QtSpinBoxFactory *factory;
QSet<QtIntPropertyManager *> managers = factory->propertyManagers();
diff --git a/doc/src/snippets/code/tools_shared_qtpropertybrowser_qtvariantproperty.cpp b/doc/src/snippets/code/tools_shared_qtpropertybrowser_qtvariantproperty.cpp
index fbc96824b..cd64ff83a 100644
--- a/doc/src/snippets/code/tools_shared_qtpropertybrowser_qtvariantproperty.cpp
+++ b/doc/src/snippets/code/tools_shared_qtpropertybrowser_qtvariantproperty.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QtVariantPropertyManager *variantPropertyManager;
QtProperty *property;
diff --git a/doc/src/snippets/code/tools_shared_qttoolbardialog_qttoolbardialog.cpp b/doc/src/snippets/code/tools_shared_qttoolbardialog_qttoolbardialog.cpp
index 9162b63b7..f8ebf254e 100644
--- a/doc/src/snippets/code/tools_shared_qttoolbardialog_qttoolbardialog.cpp
+++ b/doc/src/snippets/code/tools_shared_qttoolbardialog_qttoolbardialog.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [0]
QtToolBarManager *toolBarManager;
diff --git a/doc/src/snippets/colors/colors.pro b/doc/src/snippets/colors/colors.pro
new file mode 100644
index 000000000..b2cc87d29
--- /dev/null
+++ b/doc/src/snippets/colors/colors.pro
@@ -0,0 +1,2 @@
+HEADERS = window.h
+SOURCES = main.cpp window.cpp
diff --git a/doc/src/snippets/colors/main.cpp b/doc/src/snippets/colors/main.cpp
new file mode 100644
index 000000000..4e09036dd
--- /dev/null
+++ b/doc/src/snippets/colors/main.cpp
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+#include <QtGui>
+#include "window.h"
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+ Window window;
+ window.setFixedSize(640, 215);
+ window.show();
+ return app.exec();
+}
diff --git a/doc/src/snippets/colors/window.cpp b/doc/src/snippets/colors/window.cpp
new file mode 100644
index 000000000..0cec5f56e
--- /dev/null
+++ b/doc/src/snippets/colors/window.cpp
@@ -0,0 +1,131 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+#include <QtGui>
+#include "window.h"
+
+Window::Window(QWidget *parent)
+ : QWidget(parent)
+{
+ QFont font;
+ font.setPixelSize(12);
+ setFont(font);
+}
+
+void Window::closeEvent(QCloseEvent *event)
+{
+ QPixmap pixmap(size());
+ render(&pixmap);
+ pixmap.save("qt-colors.png");
+
+ event->accept();
+}
+
+void Window::paintEvent(QPaintEvent *)
+{
+ QPainter painter;
+ painter.begin(this);
+
+ int h = 216 / 5;
+ QRect r = QRect(0, 0, 160, h);
+ painter.fillRect(r, Qt::white);
+ painter.setPen(Qt::black);
+ painter.drawText(r, Qt::AlignCenter, QLatin1String("white"));
+ r = QRect(0, h, 160, h);
+ painter.fillRect(r, Qt::red);
+ painter.drawText(r, Qt::AlignCenter, QLatin1String("red"));
+ r = QRect(0, h*2, 160, h);
+ painter.fillRect(r, Qt::green);
+ painter.drawText(r, Qt::AlignCenter, QLatin1String("green"));
+ r = QRect(0, h*3, 160, h);
+ painter.fillRect(r, Qt::blue);
+ painter.setPen(Qt::white);
+ painter.drawText(r, Qt::AlignCenter, QLatin1String("blue"));
+
+ r = QRect(160, 0, 160, h);
+ painter.fillRect(r, Qt::black);
+ painter.drawText(r, Qt::AlignCenter, QLatin1String("black"));
+ r = QRect(160, h, 160, h);
+ painter.fillRect(r, Qt::darkRed);
+ painter.drawText(r, Qt::AlignCenter, QLatin1String("darkRed"));
+ r = QRect(160, h*2, 160, h);
+ painter.fillRect(r, Qt::darkGreen);
+ painter.drawText(r, Qt::AlignCenter, QLatin1String("darkGreen"));
+ r = QRect(160, h*3, 160, h);
+ painter.fillRect(r, Qt::darkBlue);
+ painter.drawText(r, Qt::AlignCenter, QLatin1String("darkBlue"));
+
+ r = QRect(320, 0, 160, h);
+ painter.fillRect(r, Qt::cyan);
+ painter.setPen(Qt::black);
+ painter.drawText(r, Qt::AlignCenter, QLatin1String("cyan"));
+ r = QRect(320, h, 160, h);
+ painter.fillRect(r, Qt::magenta);
+ painter.drawText(r, Qt::AlignCenter, QLatin1String("magenta"));
+ r = QRect(320, h*2, 160, h);
+ painter.fillRect(r, Qt::yellow);
+ painter.drawText(r, Qt::AlignCenter, QLatin1String("yellow"));
+ r = QRect(320, h*3, 160, h);
+ painter.fillRect(r, Qt::gray);
+ painter.setPen(Qt::white);
+ painter.drawText(r, Qt::AlignCenter, QLatin1String("gray"));
+
+ r = QRect(480, 0, 160, h);
+ painter.fillRect(r, Qt::darkCyan);
+ painter.drawText(r, Qt::AlignCenter, QLatin1String("darkCyan"));
+ r = QRect(480, h, 160, h);
+ painter.fillRect(r, Qt::darkMagenta);
+ painter.drawText(r, Qt::AlignCenter, QLatin1String("darkMagenta"));
+ r = QRect(480, h*2, 160, h);
+ painter.fillRect(r, Qt::darkYellow);
+ painter.drawText(r, Qt::AlignCenter, QLatin1String("darkYellow"));
+ r = QRect(480, h*3, 160, h);
+ painter.fillRect(r, Qt::darkGray);
+ painter.drawText(r, Qt::AlignCenter, QLatin1String("darkGray"));
+
+ r = QRect(0, h*4, 640, h);
+ painter.fillRect(r, Qt::lightGray);
+ painter.setPen(Qt::black);
+ painter.drawText(r, Qt::AlignCenter, QLatin1String("lightGray"));
+
+ painter.end();
+}
+
diff --git a/doc/src/snippets/colors/window.h b/doc/src/snippets/colors/window.h
new file mode 100644
index 000000000..3b08b9059
--- /dev/null
+++ b/doc/src/snippets/colors/window.h
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
+#include <QWidget>
+
+class Window : public QWidget
+{
+public:
+ Window(QWidget *parent = 0);
+
+protected:
+ void closeEvent(QCloseEvent *event);
+ void paintEvent(QPaintEvent *event);
+};
+
diff --git a/doc/src/snippets/complexpingpong-example.qdoc b/doc/src/snippets/complexpingpong-example.txt
index 257f7029e..257f7029e 100644
--- a/doc/src/snippets/complexpingpong-example.qdoc
+++ b/doc/src/snippets/complexpingpong-example.txt
diff --git a/doc/src/snippets/coordsys/coordsys.cpp b/doc/src/snippets/coordsys/coordsys.cpp
index eec0b1845..7938efe0f 100644
--- a/doc/src/snippets/coordsys/coordsys.cpp
+++ b/doc/src/snippets/coordsys/coordsys.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/customstyle/customstyle.cpp b/doc/src/snippets/customstyle/customstyle.cpp
index 976b42473..9321f495c 100644
--- a/doc/src/snippets/customstyle/customstyle.cpp
+++ b/doc/src/snippets/customstyle/customstyle.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/customstyle/customstyle.h b/doc/src/snippets/customstyle/customstyle.h
index e8a6bc6a4..821a58570 100644
--- a/doc/src/snippets/customstyle/customstyle.h
+++ b/doc/src/snippets/customstyle/customstyle.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/customstyle/main.cpp b/doc/src/snippets/customstyle/main.cpp
index 5d06ed1cb..06bb79a3a 100644
--- a/doc/src/snippets/customstyle/main.cpp
+++ b/doc/src/snippets/customstyle/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/customviewstyle.cpp b/doc/src/snippets/customviewstyle.cpp
index 6cfbac72c..095672f7c 100644
--- a/doc/src/snippets/customviewstyle.cpp
+++ b/doc/src/snippets/customviewstyle.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
#include <QtGui>
#include "customviewstyle.h"
diff --git a/doc/src/snippets/dbus-pingpong-example.qdoc b/doc/src/snippets/dbus-pingpong-example.txt
index 13a34a82c..13a34a82c 100644
--- a/doc/src/snippets/dbus-pingpong-example.qdoc
+++ b/doc/src/snippets/dbus-pingpong-example.txt
diff --git a/doc/src/snippets/designer/autoconnection/imagedialog.cpp b/doc/src/snippets/designer/autoconnection/imagedialog.cpp
index 842c2d8ca..c95af93ef 100644
--- a/doc/src/snippets/designer/autoconnection/imagedialog.cpp
+++ b/doc/src/snippets/designer/autoconnection/imagedialog.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/designer/autoconnection/imagedialog.h b/doc/src/snippets/designer/autoconnection/imagedialog.h
index ec1ef8b0c..2a6a73dee 100644
--- a/doc/src/snippets/designer/autoconnection/imagedialog.h
+++ b/doc/src/snippets/designer/autoconnection/imagedialog.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/designer/autoconnection/main.cpp b/doc/src/snippets/designer/autoconnection/main.cpp
index a99c5e6c2..9aa4488d6 100644
--- a/doc/src/snippets/designer/autoconnection/main.cpp
+++ b/doc/src/snippets/designer/autoconnection/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/designer/imagedialog/main.cpp b/doc/src/snippets/designer/imagedialog/main.cpp
index c142eeedb..2d9c69810 100644
--- a/doc/src/snippets/designer/imagedialog/main.cpp
+++ b/doc/src/snippets/designer/imagedialog/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/designer/multipleinheritance/imagedialog.cpp b/doc/src/snippets/designer/multipleinheritance/imagedialog.cpp
index 9d0e99aea..eb0b4839d 100644
--- a/doc/src/snippets/designer/multipleinheritance/imagedialog.cpp
+++ b/doc/src/snippets/designer/multipleinheritance/imagedialog.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/designer/multipleinheritance/imagedialog.h b/doc/src/snippets/designer/multipleinheritance/imagedialog.h
index 7eb26cc7a..01a09af40 100644
--- a/doc/src/snippets/designer/multipleinheritance/imagedialog.h
+++ b/doc/src/snippets/designer/multipleinheritance/imagedialog.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/designer/multipleinheritance/main.cpp b/doc/src/snippets/designer/multipleinheritance/main.cpp
index a99c5e6c2..9aa4488d6 100644
--- a/doc/src/snippets/designer/multipleinheritance/main.cpp
+++ b/doc/src/snippets/designer/multipleinheritance/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/designer/noautoconnection/imagedialog.cpp b/doc/src/snippets/designer/noautoconnection/imagedialog.cpp
index 33b31c229..9e0d1b674 100644
--- a/doc/src/snippets/designer/noautoconnection/imagedialog.cpp
+++ b/doc/src/snippets/designer/noautoconnection/imagedialog.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/designer/noautoconnection/imagedialog.h b/doc/src/snippets/designer/noautoconnection/imagedialog.h
index c6c3a691b..02e7e2f28 100644
--- a/doc/src/snippets/designer/noautoconnection/imagedialog.h
+++ b/doc/src/snippets/designer/noautoconnection/imagedialog.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/designer/noautoconnection/main.cpp b/doc/src/snippets/designer/noautoconnection/main.cpp
index a99c5e6c2..9aa4488d6 100644
--- a/doc/src/snippets/designer/noautoconnection/main.cpp
+++ b/doc/src/snippets/designer/noautoconnection/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/designer/singleinheritance/imagedialog.cpp b/doc/src/snippets/designer/singleinheritance/imagedialog.cpp
index 9885a4f3b..4d1105818 100644
--- a/doc/src/snippets/designer/singleinheritance/imagedialog.cpp
+++ b/doc/src/snippets/designer/singleinheritance/imagedialog.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/designer/singleinheritance/imagedialog.h b/doc/src/snippets/designer/singleinheritance/imagedialog.h
index 8ea8e373e..b71e6b09e 100644
--- a/doc/src/snippets/designer/singleinheritance/imagedialog.h
+++ b/doc/src/snippets/designer/singleinheritance/imagedialog.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/designer/singleinheritance/main.cpp b/doc/src/snippets/designer/singleinheritance/main.cpp
index a99c5e6c2..9aa4488d6 100644
--- a/doc/src/snippets/designer/singleinheritance/main.cpp
+++ b/doc/src/snippets/designer/singleinheritance/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/dialogs/dialogs.cpp b/doc/src/snippets/dialogs/dialogs.cpp
index 5c55b235d..fabbfa641 100644
--- a/doc/src/snippets/dialogs/dialogs.cpp
+++ b/doc/src/snippets/dialogs/dialogs.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/dockwidgets/main.cpp b/doc/src/snippets/dockwidgets/main.cpp
index 2614545a7..00db60084 100644
--- a/doc/src/snippets/dockwidgets/main.cpp
+++ b/doc/src/snippets/dockwidgets/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/dockwidgets/mainwindow.cpp b/doc/src/snippets/dockwidgets/mainwindow.cpp
index 7a47f6455..fc2a0b448 100644
--- a/doc/src/snippets/dockwidgets/mainwindow.cpp
+++ b/doc/src/snippets/dockwidgets/mainwindow.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/dockwidgets/mainwindow.h b/doc/src/snippets/dockwidgets/mainwindow.h
index f2678360f..cbd187ef7 100644
--- a/doc/src/snippets/dockwidgets/mainwindow.h
+++ b/doc/src/snippets/dockwidgets/mainwindow.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/draganddrop/dragwidget.cpp b/doc/src/snippets/draganddrop/dragwidget.cpp
index d20713b4e..2214fa120 100644
--- a/doc/src/snippets/draganddrop/dragwidget.cpp
+++ b/doc/src/snippets/draganddrop/dragwidget.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/draganddrop/dragwidget.h b/doc/src/snippets/draganddrop/dragwidget.h
index 76629798c..9281f47f3 100644
--- a/doc/src/snippets/draganddrop/dragwidget.h
+++ b/doc/src/snippets/draganddrop/dragwidget.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/draganddrop/main.cpp b/doc/src/snippets/draganddrop/main.cpp
index 26b188590..b87bbbc90 100644
--- a/doc/src/snippets/draganddrop/main.cpp
+++ b/doc/src/snippets/draganddrop/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/draganddrop/mainwindow.cpp b/doc/src/snippets/draganddrop/mainwindow.cpp
index bf159d0b0..bee8a5a0c 100644
--- a/doc/src/snippets/draganddrop/mainwindow.cpp
+++ b/doc/src/snippets/draganddrop/mainwindow.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/draganddrop/mainwindow.h b/doc/src/snippets/draganddrop/mainwindow.h
index 905f28902..7ae519e92 100644
--- a/doc/src/snippets/draganddrop/mainwindow.h
+++ b/doc/src/snippets/draganddrop/mainwindow.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/dragging/main.cpp b/doc/src/snippets/dragging/main.cpp
index fdb00d1cc..c32f8c82b 100644
--- a/doc/src/snippets/dragging/main.cpp
+++ b/doc/src/snippets/dragging/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/dragging/mainwindow.cpp b/doc/src/snippets/dragging/mainwindow.cpp
index 7a0c981fa..021adb7a8 100644
--- a/doc/src/snippets/dragging/mainwindow.cpp
+++ b/doc/src/snippets/dragging/mainwindow.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/dragging/mainwindow.h b/doc/src/snippets/dragging/mainwindow.h
index f4343f5aa..bb94c15e6 100644
--- a/doc/src/snippets/dragging/mainwindow.h
+++ b/doc/src/snippets/dragging/mainwindow.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/dropactions/main.cpp b/doc/src/snippets/dropactions/main.cpp
index f5b7d29b2..9d7d948fb 100644
--- a/doc/src/snippets/dropactions/main.cpp
+++ b/doc/src/snippets/dropactions/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/dropactions/window.cpp b/doc/src/snippets/dropactions/window.cpp
index 827f6b9e1..2fcdceaa6 100644
--- a/doc/src/snippets/dropactions/window.cpp
+++ b/doc/src/snippets/dropactions/window.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/dropactions/window.h b/doc/src/snippets/dropactions/window.h
index 8de93c67b..c9189e88e 100644
--- a/doc/src/snippets/dropactions/window.h
+++ b/doc/src/snippets/dropactions/window.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/droparea.cpp b/doc/src/snippets/droparea.cpp
index 215cfd734..58a02e8b4 100644
--- a/doc/src/snippets/droparea.cpp
+++ b/doc/src/snippets/droparea.cpp
@@ -1,14 +1,17 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
+** This file is part of the documentation of the Qt Toolkit.
+**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -18,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/dropevents/main.cpp b/doc/src/snippets/dropevents/main.cpp
index 1b164f118..dd673f0a1 100644
--- a/doc/src/snippets/dropevents/main.cpp
+++ b/doc/src/snippets/dropevents/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/dropevents/window.cpp b/doc/src/snippets/dropevents/window.cpp
index 1abfe9284..532aa05d8 100644
--- a/doc/src/snippets/dropevents/window.cpp
+++ b/doc/src/snippets/dropevents/window.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/dropevents/window.h b/doc/src/snippets/dropevents/window.h
index 8de93c67b..c9189e88e 100644
--- a/doc/src/snippets/dropevents/window.h
+++ b/doc/src/snippets/dropevents/window.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/droprectangle/main.cpp b/doc/src/snippets/droprectangle/main.cpp
index f5b7d29b2..9d7d948fb 100644
--- a/doc/src/snippets/droprectangle/main.cpp
+++ b/doc/src/snippets/droprectangle/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/droprectangle/window.cpp b/doc/src/snippets/droprectangle/window.cpp
index 5b3cf62b4..e14590dd0 100644
--- a/doc/src/snippets/droprectangle/window.cpp
+++ b/doc/src/snippets/droprectangle/window.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/droprectangle/window.h b/doc/src/snippets/droprectangle/window.h
index 9a767f4d5..c5c044de6 100644
--- a/doc/src/snippets/droprectangle/window.h
+++ b/doc/src/snippets/droprectangle/window.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/eventfilters/filterobject.cpp b/doc/src/snippets/eventfilters/filterobject.cpp
index b575acd2b..972e4690d 100644
--- a/doc/src/snippets/eventfilters/filterobject.cpp
+++ b/doc/src/snippets/eventfilters/filterobject.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/eventfilters/filterobject.h b/doc/src/snippets/eventfilters/filterobject.h
index 24797a5f2..3fe1cee6e 100644
--- a/doc/src/snippets/eventfilters/filterobject.h
+++ b/doc/src/snippets/eventfilters/filterobject.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/eventfilters/main.cpp b/doc/src/snippets/eventfilters/main.cpp
index 03fd86416..af356774f 100644
--- a/doc/src/snippets/eventfilters/main.cpp
+++ b/doc/src/snippets/eventfilters/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/events/events.cpp b/doc/src/snippets/events/events.cpp
index 0e0da4b7e..47dff84b3 100644
--- a/doc/src/snippets/events/events.cpp
+++ b/doc/src/snippets/events/events.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/explicitlysharedemployee/employee.cpp b/doc/src/snippets/explicitlysharedemployee/employee.cpp
index 080f90594..8969caaba 100644
--- a/doc/src/snippets/explicitlysharedemployee/employee.cpp
+++ b/doc/src/snippets/explicitlysharedemployee/employee.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/explicitlysharedemployee/employee.h b/doc/src/snippets/explicitlysharedemployee/employee.h
index 44d4b6575..49c0d53ca 100644
--- a/doc/src/snippets/explicitlysharedemployee/employee.h
+++ b/doc/src/snippets/explicitlysharedemployee/employee.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/explicitlysharedemployee/main.cpp b/doc/src/snippets/explicitlysharedemployee/main.cpp
index b31773c66..d710deeb0 100644
--- a/doc/src/snippets/explicitlysharedemployee/main.cpp
+++ b/doc/src/snippets/explicitlysharedemployee/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/file/file.cpp b/doc/src/snippets/file/file.cpp
index 20c9ffd0c..aee4f2079 100644
--- a/doc/src/snippets/file/file.cpp
+++ b/doc/src/snippets/file/file.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/filedialogurls.cpp b/doc/src/snippets/filedialogurls.cpp
index 4b59590fc..ede4c8bac 100644
--- a/doc/src/snippets/filedialogurls.cpp
+++ b/doc/src/snippets/filedialogurls.cpp
@@ -1,10 +1,50 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
#include <QtGui>
int main(int argv, char **args)
{
QApplication app(argv, args);
-
+
//![0]
QList<QUrl> urls;
urls << QUrl::fromLocalFile("/home/gvatteka/dev/qt-45")
diff --git a/doc/src/snippets/fileinfo/main.cpp b/doc/src/snippets/fileinfo/main.cpp
index 9a1b5cecc..d93e26a87 100644
--- a/doc/src/snippets/fileinfo/main.cpp
+++ b/doc/src/snippets/fileinfo/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/gestures/imageviewer/imagewidget.cpp b/doc/src/snippets/gestures/imageviewer/imagewidget.cpp
deleted file mode 100644
index f9d6a77a5..000000000
--- a/doc/src/snippets/gestures/imageviewer/imagewidget.cpp
+++ /dev/null
@@ -1,364 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "imagewidget.h"
-
-#include <QtGui>
-
-ImageWidget::ImageWidget(QWidget *parent)
- : QWidget(parent)
-{
- setAttribute(Qt::WA_AcceptTouchEvents);
- setAttribute(Qt::WA_PaintOnScreen);
- setAttribute(Qt::WA_OpaquePaintEvent);
- setAttribute(Qt::WA_NoSystemBackground);
-
- setObjectName("ImageWidget");
-
- setMinimumSize(QSize(100,100));
-
- position = 0;
- zoomed = rotated = false;
-
- zoomedIn = false;
- horizontalOffset = 0;
- verticalOffset = 0;
-
-//! [imagewidget-connect]
- panGesture = new QPanGesture(this);
- connect(panGesture, SIGNAL(triggered()), this, SLOT(gestureTriggered()));
-
- tapAndHoldGesture = new TapAndHoldGesture(this);
- connect(tapAndHoldGesture, SIGNAL(triggered()), this, SLOT(gestureTriggered()));
- connect(tapAndHoldGesture, SIGNAL(finished()), this, SLOT(gestureFinished()));
-//! [imagewidget-connect]
-}
-
-void ImageWidget::paintEvent(QPaintEvent*)
-{
- QPainter p(this);
- if (currentImage.isNull()) {
- p.fillRect(geometry(), Qt::white);
- return;
- }
- int hoffset = 0;
- int voffset = 0;
- const int w = pixmap.width();
- const int h = pixmap.height();
- p.save();
- if (zoomedIn) {
- hoffset = horizontalOffset;
- voffset = verticalOffset;
- if (horizontalOffset > 0)
- p.fillRect(0, 0, horizontalOffset, height(), Qt::white);
- if (verticalOffset > 0)
- p.fillRect(0, 0, width(), verticalOffset, Qt::white);
- }
- p.drawPixmap(hoffset, voffset, pixmap);
- if (hoffset + w < width())
- p.fillRect(hoffset + w, 0, width() - w - hoffset, height(), Qt::white);
- if (voffset + h < height())
- p.fillRect(0, voffset + h, width(), height() - h - voffset, Qt::white);
-
- // paint touch feedback
- if (touchFeedback.tapped || touchFeedback.doubleTapped) {
- p.setPen(QPen(Qt::gray, 2));
- p.drawEllipse(touchFeedback.position, 5, 5);
- if (touchFeedback.doubleTapped) {
- p.setPen(QPen(Qt::darkGray, 2, Qt::DotLine));
- p.drawEllipse(touchFeedback.position, 15, 15);
- } else if (touchFeedback.tapAndHoldState != 0) {
- QPoint pts[8] = {
- touchFeedback.position + QPoint( 0, -15),
- touchFeedback.position + QPoint( 10, -10),
- touchFeedback.position + QPoint( 15, 0),
- touchFeedback.position + QPoint( 10, 10),
- touchFeedback.position + QPoint( 0, 15),
- touchFeedback.position + QPoint(-10, 10),
- touchFeedback.position + QPoint(-15, 0)
- };
- for (int i = 0; i < touchFeedback.tapAndHoldState/5; ++i)
- p.drawEllipse(pts[i], 3, 3);
- }
- } else if (touchFeedback.sliding) {
- p.setPen(QPen(Qt::red, 3));
- QPoint endPos = QPoint(touchFeedback.position.x(), touchFeedback.slidingStartPosition.y());
- p.drawLine(touchFeedback.slidingStartPosition, endPos);
- int dx = 10;
- if (touchFeedback.slidingStartPosition.x() < endPos.x())
- dx = -1*dx;
- p.drawLine(endPos, endPos + QPoint(dx, 5));
- p.drawLine(endPos, endPos + QPoint(dx, -5));
- }
-
- for (int i = 0; i < TouchFeedback::MaximumNumberOfTouches; ++i) {
- if (touchFeedback.touches[i].isNull())
- break;
- p.drawEllipse(touchFeedback.touches[i], 10, 10);
- }
- p.restore();
-}
-
-void ImageWidget::mousePressEvent(QMouseEvent *event)
-{
- touchFeedback.tapped = true;
- touchFeedback.position = event->pos();
-}
-
-void ImageWidget::mouseDoubleClickEvent(QMouseEvent *event)
-{
- touchFeedback.doubleTapped = true;
- const QPoint p = event->pos();
- touchFeedback.position = p;
- horizontalOffset = p.x() - currentImage.width()*1.0*p.x()/width();
- verticalOffset = p.y() - currentImage.height()*1.0*p.y()/height();
- setZoomedIn(!zoomedIn);
- zoomed = rotated = false;
- updateImage();
-
- feedbackFadeOutTimer.start(500, this);
-}
-
-//! [imagewidget-triggered-1]
-void ImageWidget::gestureTriggered()
-{
- if (sender() == panGesture) {
-//! [imagewidget-triggered-1]
- touchFeedback.tapped = false;
- touchFeedback.doubleTapped = false;
- QPanGesture *pg = qobject_cast<QPanGesture*>(sender());
- if (zoomedIn) {
-#ifndef QT_NO_CURSOR
- switch (pg->state()) {
- case Qt::GestureStarted:
- case Qt::GestureUpdated:
- setCursor(Qt::SizeAllCursor);
- break;
- default:
- setCursor(Qt::ArrowCursor);
- }
-#endif
- horizontalOffset += pg->lastOffset().width();
- verticalOffset += pg->lastOffset().height();
- } else {
- // only slide gesture should be accepted
- if (pg->state() == Qt::GestureFinished) {
- touchFeedback.sliding = false;
- zoomed = rotated = false;
- if (pg->totalOffset().width() > 0)
- goNextImage();
- else
- goPrevImage();
- updateImage();
- }
- }
- update();
- feedbackFadeOutTimer.start(500, this);
- } else if (sender() == tapAndHoldGesture) {
- if (tapAndHoldGesture->state() == Qt::GestureFinished) {
- qDebug() << "tap and hold detected";
- touchFeedback.reset();
- update();
-
- QMenu menu;
- menu.addAction("Action 1");
- menu.addAction("Action 2");
- menu.addAction("Action 3");
- menu.exec(mapToGlobal(tapAndHoldGesture->pos()));
- } else {
- ++touchFeedback.tapAndHoldState;
- update();
- }
- feedbackFadeOutTimer.start(500, this);
- }
-}
-
-void ImageWidget::gestureFinished()
-{
- qDebug() << "gesture finished" << sender();
-}
-
-void ImageWidget::gestureCancelled()
-{
- qDebug() << "gesture cancelled" << sender();
-}
-
-void ImageWidget::resizeEvent(QResizeEvent*)
-{
- updateImage();
-}
-
-void ImageWidget::updateImage()
-{
- // should use qtconcurrent here?
- transformation = QTransform();
- if (zoomedIn) {
- } else {
- if (currentImage.isNull())
- return;
- if (zoomed) {
- transformation = transformation.scale(zoom, zoom);
- } else {
- double xscale = (double)width()/currentImage.width();
- double yscale = (double)height()/currentImage.height();
- if (xscale < yscale)
- yscale = xscale;
- else
- xscale = yscale;
- transformation = transformation.scale(xscale, yscale);
- }
- if (rotated)
- transformation = transformation.rotate(angle);
- }
- pixmap = QPixmap::fromImage(currentImage).transformed(transformation);
- update();
-}
-
-void ImageWidget::openDirectory(const QString &path)
-{
- this->path = path;
- QDir dir(path);
- QStringList nameFilters;
- nameFilters << "*.jpg" << "*.png";
- files = dir.entryList(nameFilters, QDir::Files|QDir::Readable, QDir::Name);
-
- position = 0;
- goToImage(0);
- updateImage();
-}
-
-QImage ImageWidget::loadImage(const QString &fileName)
-{
- QImageReader reader(fileName);
- if (!reader.canRead()) {
- qDebug() << fileName << ": can't load image";
- return QImage();
- }
- QImage image;
- if (!reader.read(&image)) {
- qDebug() << fileName << ": corrupted image";
- return QImage();
- }
- return image;
-}
-
-void ImageWidget::setZoomedIn(bool zoomed)
-{
- zoomedIn = zoomed;
-}
-
-void ImageWidget::goNextImage()
-{
- if (files.isEmpty())
- return;
- if (position < files.size()-1) {
- ++position;
- prevImage = currentImage;
- currentImage = nextImage;
- if (position+1 < files.size())
- nextImage = loadImage(path+QLatin1String("/")+files.at(position+1));
- else
- nextImage = QImage();
- }
- setZoomedIn(false);
- updateImage();
-}
-
-void ImageWidget::goPrevImage()
-{
- if (files.isEmpty())
- return;
- if (position > 0) {
- --position;
- nextImage = currentImage;
- currentImage = prevImage;
- if (position > 0)
- prevImage = loadImage(path+QLatin1String("/")+files.at(position-1));
- else
- prevImage = QImage();
- }
- setZoomedIn(false);
- updateImage();
-}
-
-void ImageWidget::goToImage(int index)
-{
- if (files.isEmpty())
- return;
- if (index < 0 || index >= files.size()) {
- qDebug() << "goToImage: invalid index: " << index;
- return;
- }
- if (index == position+1) {
- goNextImage();
- return;
- }
- if (position > 0 && index == position-1) {
- goPrevImage();
- return;
- }
- position = index;
- pixmap = QPixmap();
- if (index > 0)
- prevImage = loadImage(path+QLatin1String("/")+files.at(position-1));
- else
- prevImage = QImage();
- currentImage = loadImage(path+QLatin1String("/")+files.at(position));
- if (position+1 < files.size())
- nextImage = loadImage(path+QLatin1String("/")+files.at(position+1));
- else
- nextImage = QImage();
- setZoomedIn(false);
- updateImage();
-}
-
-void ImageWidget::timerEvent(QTimerEvent *event)
-{
- if (event->timerId() == touchFeedback.tapTimer.timerId()) {
- touchFeedback.tapTimer.stop();
- } else if (event->timerId() == feedbackFadeOutTimer.timerId()) {
- feedbackFadeOutTimer.stop();
- touchFeedback.reset();
- }
- update();
-}
-
-#include "moc_imagewidget.cpp"
diff --git a/doc/src/snippets/gestures/imageviewer/imagewidget.h b/doc/src/snippets/gestures/imageviewer/imagewidget.h
deleted file mode 100644
index fcad5b9c5..000000000
--- a/doc/src/snippets/gestures/imageviewer/imagewidget.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef IMAGEWIDGET_H
-#define IMAGEWIDGET_H
-
-#include <QWidget>
-#include <QImage>
-#include <QPixmap>
-
-#include <QtGui>
-
-#include "tapandholdgesture.h"
-
-class ImageWidget : public QWidget
-{
- Q_OBJECT
-
-public:
- ImageWidget(QWidget *parent = 0);
-
- void openDirectory(const QString &path);
-
-protected:
- void paintEvent(QPaintEvent*);
- void resizeEvent(QResizeEvent*);
- void timerEvent(QTimerEvent*);
- void mousePressEvent(QMouseEvent*);
- void mouseDoubleClickEvent(QMouseEvent*);
-
-//! [imagewidget-slots]
-private slots:
- void gestureTriggered();
- void gestureFinished();
- void gestureCancelled();
-//! [imagewidget-slots]
-
-private:
- void updateImage();
- QImage loadImage(const QString &fileName);
- void loadImage();
- void setZoomedIn(bool zoomed);
- void goNextImage();
- void goPrevImage();
- void goToImage(int index);
-
- QPanGesture *panGesture;
- TapAndHoldGesture *tapAndHoldGesture;
-
- QString path;
- QStringList files;
- int position;
-
- QImage prevImage, nextImage;
- QImage currentImage;
- QPixmap pixmap;
- QTransform transformation;
-
- bool zoomedIn;
- int horizontalOffset;
- int verticalOffset;
-
- bool zoomed;
- qreal zoom;
- bool rotated;
- qreal angle;
-
- struct TouchFeedback
- {
- bool tapped;
- QPoint position;
- bool sliding;
- QPoint slidingStartPosition;
- QBasicTimer tapTimer;
- int tapState;
- bool doubleTapped;
- int tapAndHoldState;
-
- enum { MaximumNumberOfTouches = 5 };
- QPoint touches[MaximumNumberOfTouches];
-
- inline TouchFeedback() { reset(); }
- inline void reset()
- {
- tapped = false;
- sliding = false;
- tapTimer.stop();
- tapState = 0;
- doubleTapped = false;
- tapAndHoldState = 0;
- for (int i = 0; i < MaximumNumberOfTouches; ++i) {
- touches[i] = QPoint();
- }
- }
- } touchFeedback;
- QBasicTimer feedbackFadeOutTimer;
-};
-
-#endif
diff --git a/doc/src/snippets/gestures/imageviewer/tapandholdgesture.cpp b/doc/src/snippets/gestures/imageviewer/tapandholdgesture.cpp
deleted file mode 100644
index 03898dcdb..000000000
--- a/doc/src/snippets/gestures/imageviewer/tapandholdgesture.cpp
+++ /dev/null
@@ -1,159 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "tapandholdgesture.h"
-
-#include <QtGui/qevent.h>
-
-// #define TAPANDHOLD_USING_MOUSE
-
-/*!
- \class TapAndHoldGesture
- \since 4.6
-
- \brief The TapAndHoldGesture class represents a Tap-and-Hold gesture,
- providing additional information.
-*/
-
-const int TapAndHoldGesture::iterationCount = 40;
-const int TapAndHoldGesture::iterationTimeout = 50;
-
-/*!
- Creates a new Tap and Hold gesture handler object and marks it as a child
- of \a parent.
-
- On some platforms like Windows there is a system-wide tap and hold gesture
- that cannot be overriden, hence the gesture might never trigger and default
- context menu will be shown instead.
-*/
-TapAndHoldGesture::TapAndHoldGesture(QWidget *parent)
- : QGesture(parent), iteration(0)
-{
-}
-
-/*! \internal */
-bool TapAndHoldGesture::filterEvent(QEvent *event)
-{
- if (!event->spontaneous())
- return false;
- const QTouchEvent *ev = static_cast<const QTouchEvent*>(event);
- switch (event->type()) {
- case QEvent::TouchBegin: {
- if (timer.isActive())
- timer.stop();
- timer.start(TapAndHoldGesture::iterationTimeout, this);
- const QPoint p = ev->touchPoints().at(0).pos().toPoint();
- position = p;
- break;
- }
- case QEvent::TouchUpdate:
- if (ev->touchPoints().size() == 1) {
- const QPoint startPos = ev->touchPoints().at(0).startPos().toPoint();
- const QPoint pos = ev->touchPoints().at(0).pos().toPoint();
- if ((startPos - pos).manhattanLength() > 15)
- reset();
- } else {
- reset();
- }
- break;
- case QEvent::TouchEnd:
- reset();
- break;
-#ifdef TAPANDHOLD_USING_MOUSE
- case QEvent::MouseButtonPress: {
- if (timer.isActive())
- timer.stop();
- timer.start(TapAndHoldGesture::iterationTimeout, this);
- const QPoint p = static_cast<QMouseEvent*>(event)->pos();
- position = startPosition = p;
- break;
- }
- case QEvent::MouseMove: {
- const QPoint startPos = startPosition;
- const QPoint pos = static_cast<QMouseEvent*>(event)->pos();
- if ((startPos - pos).manhattanLength() > 15)
- reset();
- break;
- }
- case QEvent::MouseButtonRelease:
- reset();
- break;
-#endif // TAPANDHOLD_USING_MOUSE
- default:
- break;
- }
- return false;
-}
-
-/*! \internal */
-void TapAndHoldGesture::timerEvent(QTimerEvent *event)
-{
- if (event->timerId() != timer.timerId())
- return;
- if (iteration == TapAndHoldGesture::iterationCount) {
- timer.stop();
- updateState(Qt::GestureFinished);
- } else {
- updateState(Qt::GestureUpdated);
- }
- ++iteration;
-}
-
-/*! \internal */
-//! [tapandhold-reset]
-void TapAndHoldGesture::reset()
-{
- timer.stop();
- iteration = 0;
- position = startPosition = QPoint();
- updateState(Qt::NoGesture);
-}
-//! [tapandhold-reset]
-
-/*!
- \property TapAndHoldGesture::pos
-
- \brief The position of the gesture.
-*/
-QPoint TapAndHoldGesture::pos() const
-{
- return position;
-}
diff --git a/doc/src/snippets/gestures/imageviewer/tapandholdgesture.h b/doc/src/snippets/gestures/imageviewer/tapandholdgesture.h
deleted file mode 100644
index bf0f867ad..000000000
--- a/doc/src/snippets/gestures/imageviewer/tapandholdgesture.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef TAPANDHOLDGESTURE_H
-#define TAPANDHOLDGESTURE_H
-
-#include <QtCore/QBasicTimer>
-#include <QtGui/QGesture>
-#include <QtGui/QWidget>
-
-class TapAndHoldGesture : public QGesture
-{
- Q_OBJECT
- Q_PROPERTY(QPoint pos READ pos)
-
-public:
- TapAndHoldGesture(QWidget *parent);
-
- bool filterEvent(QEvent *event);
- void reset();
-
- QPoint pos() const;
-
-protected:
- void timerEvent(QTimerEvent *event);
-
-private:
- QBasicTimer timer;
- int iteration;
- QPoint position;
- QPoint startPosition;
- static const int iterationCount;
- static const int iterationTimeout;
-};
-
-#endif // TAPANDHOLDGESTURE_H
diff --git a/doc/src/snippets/gestures/qgesture.cpp b/doc/src/snippets/gestures/qgesture.cpp
deleted file mode 100644
index 79dcae1c6..000000000
--- a/doc/src/snippets/gestures/qgesture.cpp
+++ /dev/null
@@ -1,283 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtGui module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qgesture.h"
-#include <private/qgesture_p.h>
-#include "qgraphicsitem.h"
-
-QT_BEGIN_NAMESPACE
-
-
-class QEventFilterProxyGraphicsItem : public QGraphicsItem
-{
-public:
- QEventFilterProxyGraphicsItem(QGesture *g)
- : gesture(g)
- {
- }
- bool sceneEventFilter(QGraphicsItem *, QEvent *event)
- {
- return gesture ? gesture->filterEvent(event) : false;
- }
- QRectF boundingRect() const { return QRectF(); }
- void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*) { }
-
-private:
- QGesture *gesture;
-};
-
-/*!
- \class QGesture
- \since 4.6
-
- \brief The QGesture class is the base class for implementing custom
- gestures.
-
- This class represents both an object that recognizes a gesture out of a set
- of input events (a gesture recognizer), and a gesture object itself that
- can be used to get extended information about the triggered gesture.
-
- The class has a list of properties that can be queried by the user to get
- some gesture-specific parameters (for example, an offset of a Pan gesture).
-
- Usually gesture recognizer implements a state machine, storing its state
- internally in the recognizer object. The recognizer receives input events
- through the \l{QGesture::}{filterEvent()} virtual function and decides
- whether the event should change the state of the recognizer by emitting an
- appropriate signal.
-
- Input events should be either fed to the recognizer one by one with a
- filterEvent() function, or the gesture recognizer should be attached to an
- object it filters events for by specifying it as a parent object. The
- QGesture object installs itself as an event filter to the parent object
- automatically, the unsetObject() function should be used to remove an event
- filter from the parent object. To make a
- gesture that operates on a QGraphicsItem, both the appropriate QGraphicsView
- should be passed as a parent object and setGraphicsItem() functions should
- be used to attach a gesture to a graphics item.
-
- This is a base class, to create a custom gesture type, you should subclass
- it and implement its pure virtual functions.
-
- \sa QPanGesture
-*/
-
-/*! \fn bool QGesture::filterEvent(QEvent *event)
-
- Parses input \a event and emits a signal when detects a gesture.
-
- In your reimplementation of this function, if you want to filter the \a
- event out, i.e. stop it being handled further, return true; otherwise
- return false;
-
- This is a pure virtual function that needs to be implemented in subclasses.
-*/
-
-/*! \fn void QGesture::started()
-
- The signal is emitted when the gesture is started. Extended information
- about the gesture is contained in the signal sender object.
-
- In addition to started(), a triggered() signal should also be emitted.
-*/
-
-/*! \fn void QGesture::triggered()
-
- The signal is emitted when the gesture is detected. Extended information
- about the gesture is contained in the signal sender object.
-*/
-
-/*! \fn void QGesture::finished()
-
- The signal is emitted when the gesture is finished. Extended information
- about the gesture is contained in the signal sender object.
-*/
-
-/*! \fn void QGesture::cancelled()
-
- The signal is emitted when the gesture is cancelled, for example the reset()
- function is called while the gesture was in the process of emitting a
- triggered() signal. Extended information about the gesture is contained in
- the sender object.
-*/
-
-
-/*!
- Creates a new gesture handler object and marks it as a child of \a parent.
-
- The \a parent object is also the default event source for the gesture,
- meaning that the gesture installs itself as an event filter for the \a
- parent.
-
- \sa setGraphicsItem()
-*/
-QGesture::QGesture(QObject *parent)
- : QObject(*new QGesturePrivate, parent)
-{
- if (parent)
- parent->installEventFilter(this);
-}
-
-/*! \internal
- */
-QGesture::QGesture(QGesturePrivate &dd, QObject *parent)
- : QObject(dd, parent)
-{
- if (parent)
- parent->installEventFilter(this);
-}
-
-/*!
- Destroys the gesture object.
-*/
-QGesture::~QGesture()
-{
-}
-
-/*! \internal
- */
-bool QGesture::eventFilter(QObject *receiver, QEvent *event)
-{
- Q_D(QGesture);
- if (d->graphicsItem && receiver == parent())
- return false;
- return filterEvent(event);
-}
-
-/*!
- \property QGesture::state
-
- \brief The current state of the gesture.
-*/
-
-/*!
- Returns the gesture recognition state.
- */
-Qt::GestureState QGesture::state() const
-{
- return d_func()->state;
-}
-
-/*!
- Sets this gesture's recognition state to \a state and emits appropriate
- signals.
-
- This functions emits the signals according to the old state and the new
- \a state, and it should be called after all the internal properties have been
- initialized.
-
- \sa started(), triggered(), finished(), cancelled()
- */
-void QGesture::updateState(Qt::GestureState state)
-{
- Q_D(QGesture);
- if (d->state == state) {
- if (state == Qt::GestureUpdated)
- emit triggered();
- return;
- }
- const Qt::GestureState oldState = d->state;
- d->state = state;
- if (state != Qt::NoGesture && oldState > state) {
- // comparing the state as ints: state should only be changed from
- // started to (optionally) updated and to finished.
- qWarning("QGesture::updateState: incorrect new state");
- return;
- }
- if (oldState == Qt::NoGesture)
- emit started();
- if (state == Qt::GestureUpdated)
- emit triggered();
- else if (state == Qt::GestureFinished)
- emit finished();
- else if (state == Qt::NoGesture)
- emit cancelled();
-
- if (state == Qt::GestureFinished) {
- // gesture is finished, so we reset the internal state.
- d->state = Qt::NoGesture;
- }
-}
-
-/*!
- Sets the \a graphicsItem the gesture is filtering events for.
-
- The gesture will install an event filter to the \a graphicsItem and
- redirect them to the filterEvent() function.
-
- \sa graphicsItem()
-*/
-void QGesture::setGraphicsItem(QGraphicsItem *graphicsItem)
-{
- Q_D(QGesture);
- if (d->graphicsItem && d->eventFilterProxyGraphicsItem)
- d->graphicsItem->removeSceneEventFilter(d->eventFilterProxyGraphicsItem);
- d->graphicsItem = graphicsItem;
- if (!d->eventFilterProxyGraphicsItem)
- d->eventFilterProxyGraphicsItem = new QEventFilterProxyGraphicsItem(this);
- if (graphicsItem)
- graphicsItem->installSceneEventFilter(d->eventFilterProxyGraphicsItem);
-}
-
-/*!
- Returns the graphics item the gesture is filtering events for.
-
- \sa setGraphicsItem()
-*/
-QGraphicsItem* QGesture::graphicsItem() const
-{
- return d_func()->graphicsItem;
-}
-
-/*! \fn void QGesture::reset()
-
- Resets the internal state of the gesture. This function might be called by
- the filterEvent() implementation in a derived class, or by the user to
- cancel a gesture. The base class implementation calls
- updateState(Qt::NoGesture) which emits the cancelled()
- signal if the state() of the gesture indicated it was active.
-*/
-void QGesture::reset()
-{
- updateState(Qt::NoGesture);
-}
-
-QT_END_NAMESPACE
diff --git a/doc/src/snippets/gestures/qgesture.h b/doc/src/snippets/gestures/qgesture.h
deleted file mode 100644
index beb3de093..000000000
--- a/doc/src/snippets/gestures/qgesture.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtGui module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QGESTURE_H
-#define QGESTURE_H
-
-#include <QtCore/qobject.h>
-#include <QtCore/qlist.h>
-#include <QtCore/qdatetime.h>
-#include <QtCore/qpoint.h>
-#include <QtCore/qrect.h>
-#include <QtCore/qmetatype.h>
-
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Gui)
-
-class QGraphicsItem;
-class QGesturePrivate;
-class Q_GUI_EXPORT QGesture : public QObject
-{
- Q_OBJECT
- Q_DECLARE_PRIVATE(QGesture)
-
- Q_PROPERTY(Qt::GestureState state READ state)
-
-public:
- explicit QGesture(QObject *parent = 0);
- ~QGesture();
-
- virtual bool filterEvent(QEvent *event) = 0;
-
- void setGraphicsItem(QGraphicsItem *);
- QGraphicsItem *graphicsItem() const;
-
- Qt::GestureState state() const;
-
-protected:
- QGesture(QGesturePrivate &dd, QObject *parent);
- bool eventFilter(QObject*, QEvent*);
-
- virtual void reset();
- void updateState(Qt::GestureState state);
-
-//! [qgesture-signals]
-Q_SIGNALS:
- void started();
- void triggered();
- void finished();
- void cancelled();
-//! [qgesture-signals]
-
-private:
- friend class QWidget;
-};
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif // QGESTURE_H
diff --git a/doc/src/snippets/gestures/qstandardgestures.cpp b/doc/src/snippets/gestures/qstandardgestures.cpp
deleted file mode 100644
index fbeb0502e..000000000
--- a/doc/src/snippets/gestures/qstandardgestures.cpp
+++ /dev/null
@@ -1,483 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtGui module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qstandardgestures.h"
-#include "qstandardgestures_p.h"
-
-#include <qabstractscrollarea.h>
-#include <qscrollbar.h>
-#include <private/qapplication_p.h>
-#include <private/qevent_p.h>
-#include <private/qwidget_p.h>
-
-QT_BEGIN_NAMESPACE
-
-#ifdef Q_WS_WIN
-QWidgetPrivate *qt_widget_private(QWidget *widget);
-#endif
-
-/*!
- \class QPanGesture
- \since 4.6
-
- \brief The QPanGesture class represents a Pan gesture,
- providing additional information related to panning.
-*/
-
-/*!
- Creates a new Pan gesture handler object and marks it as a child of \a
- parent.
-
- On some platform like Windows it's necessary to provide a non-null widget
- as \a parent to get native gesture support.
-*/
-QPanGesture::QPanGesture(QWidget *parent)
- : QGesture(*new QPanGesturePrivate, parent)
-{
- if (parent) {
- QApplicationPrivate *qAppPriv = QApplicationPrivate::instance();
- qAppPriv->widgetGestures[parent].pan = this;
-#ifdef Q_WS_WIN
- qt_widget_private(parent)->winSetupGestures();
-#endif
- }
-}
-
-/*! \internal */
-bool QPanGesture::event(QEvent *event)
-{
- switch (event->type()) {
- case QEvent::ParentAboutToChange:
- if (QWidget *w = qobject_cast<QWidget*>(parent())) {
- QApplicationPrivate::instance()->widgetGestures[w].pan = 0;
-#ifdef Q_WS_WIN
- qt_widget_private(w)->winSetupGestures();
-#endif
- }
- break;
- case QEvent::ParentChange:
- if (QWidget *w = qobject_cast<QWidget*>(parent())) {
- QApplicationPrivate::instance()->widgetGestures[w].pan = this;
-#ifdef Q_WS_WIN
- qt_widget_private(w)->winSetupGestures();
-#endif
- }
- break;
- default:
- break;
- }
-
-#if defined(Q_OS_MAC) && !defined(QT_MAC_USE_COCOA)
- Q_D(QPanGesture);
- if (event->type() == QEvent::Timer) {
- const QTimerEvent *te = static_cast<QTimerEvent *>(event);
- if (te->timerId() == d->panFinishedTimer) {
- killTimer(d->panFinishedTimer);
- d->panFinishedTimer = 0;
- d->lastOffset = QSize(0, 0);
- updateState(Qt::GestureFinished);
- }
- }
-#endif
-
- return QObject::event(event);
-}
-
-bool QPanGesture::eventFilter(QObject *receiver, QEvent *event)
-{
-#ifdef Q_WS_WIN
- Q_D(QPanGesture);
- if (receiver->isWidgetType() && event->type() == QEvent::NativeGesture) {
- QNativeGestureEvent *ev = static_cast<QNativeGestureEvent*>(event);
- QApplicationPrivate *qAppPriv = QApplicationPrivate::instance();
- QApplicationPrivate::WidgetStandardGesturesMap::iterator it;
- it = qAppPriv->widgetGestures.find(static_cast<QWidget*>(receiver));
- if (it == qAppPriv->widgetGestures.end())
- return false;
- if (this != it.value().pan)
- return false;
- Qt::GestureState nextState = Qt::NoGesture;
- switch(ev->gestureType) {
- case QNativeGestureEvent::GestureBegin:
- // next we might receive the first gesture update event, so we
- // prepare for it.
- d->state = Qt::NoGesture;
- return false;
- case QNativeGestureEvent::Pan:
- nextState = Qt::GestureUpdated;
- event->accept();
- break;
- case QNativeGestureEvent::GestureEnd:
- if (state() == Qt::NoGesture)
- return false; // some other gesture has ended
- nextState = Qt::GestureFinished;
- break;
- default:
- return false;
- }
- if (state() == Qt::NoGesture) {
- d->lastOffset = d->totalOffset = QSize();
- } else {
- d->lastOffset = QSize(ev->position.x() - d->lastPosition.x(),
- ev->position.y() - d->lastPosition.y());
- d->totalOffset += d->lastOffset;
- }
- d->lastPosition = ev->position;
- updateState(nextState);
- return true;
- }
-#endif
- return QGesture::eventFilter(receiver, event);
-}
-
-/*! \internal */
-bool QPanGesture::filterEvent(QEvent *event)
-{
- Q_D(QPanGesture);
- if (!event->spontaneous())
- return false;
- const QTouchEvent *ev = static_cast<const QTouchEvent*>(event);
- if (event->type() == QEvent::TouchBegin) {
- QTouchEvent::TouchPoint p = ev->touchPoints().at(0);
- d->lastPosition = p.pos().toPoint();
- d->lastOffset = d->totalOffset = QSize();
- } else if (event->type() == QEvent::TouchEnd) {
- if (state() != Qt::NoGesture) {
- if (!ev->touchPoints().isEmpty()) {
- QTouchEvent::TouchPoint p = ev->touchPoints().at(0);
- const QPoint pos = p.pos().toPoint();
- const QPoint lastPos = p.lastPos().toPoint();
- const QPoint startPos = p.startPos().toPoint();
- d->lastOffset = QSize(pos.x() - lastPos.x(), pos.y() - lastPos.y());
- d->totalOffset = QSize(pos.x() - startPos.x(), pos.y() - startPos.y());
- }
- updateState(Qt::GestureFinished);
- }
- reset();
- } else if (event->type() == QEvent::TouchUpdate) {
- QTouchEvent::TouchPoint p = ev->touchPoints().at(0);
- const QPoint pos = p.pos().toPoint();
- const QPoint lastPos = p.lastPos().toPoint();
- const QPoint startPos = p.startPos().toPoint();
- d->lastOffset = QSize(pos.x() - lastPos.x(), pos.y() - lastPos.y());
- d->totalOffset = QSize(pos.x() - startPos.x(), pos.y() - startPos.y());
- if (d->totalOffset.width() > 10 || d->totalOffset.height() > 10 ||
- d->totalOffset.width() < -10 || d->totalOffset.height() < -10) {
- updateState(Qt::GestureUpdated);
- }
- }
-#ifdef Q_OS_MAC
- else if (event->type() == QEvent::Wheel) {
- // On Mac, there is really no native panning gesture. Instead, a two
- // finger pan is delivered as mouse wheel events. Otoh, on Windows, you
- // either get mouse wheel events or pan events. We have decided to make this
- // the Qt behaviour as well, meaning that on Mac, wheel
- // events will be masked away when listening for pan events.
-#ifndef QT_MAC_USE_COCOA
- // In Carbon we receive neither touch-, nor pan gesture events.
- // So we create pan gestures by converting wheel events. After all, this
- // is how things are supposed to work on mac in the first place.
- const QWheelEvent *wev = static_cast<const QWheelEvent*>(event);
- int offset = wev->delta() / -120;
- d->lastOffset = wev->orientation() == Qt::Horizontal ? QSize(offset, 0) : QSize(0, offset);
-
- if (state() == Qt::NoGesture) {
- d->totalOffset = d->lastOffset;
- } else {
- d->totalOffset += d->lastOffset;
- }
-
- killTimer(d->panFinishedTimer);
- d->panFinishedTimer = startTimer(200);
- updateState(Qt::GestureUpdated);
-#endif
- return true;
- }
-#endif
- return false;
-}
-
-/*! \internal */
-void QPanGesture::reset()
-{
- Q_D(QPanGesture);
- d->lastOffset = d->totalOffset = QSize();
- d->lastPosition = QPoint();
-#if defined(Q_OS_MAC) && !defined(QT_MAC_USE_COCOA)
- if (d->panFinishedTimer) {
- killTimer(d->panFinishedTimer);
- d->panFinishedTimer = 0;
- }
-#endif
- QGesture::reset();
-}
-
-/*!
- \property QPanGesture::totalOffset
-
- Specifies a total pan offset since the start of the gesture.
-*/
-QSize QPanGesture::totalOffset() const
-{
- Q_D(const QPanGesture);
- return d->totalOffset;
-}
-
-/*!
- \property QPanGesture::lastOffset
-
- Specifies a pan offset since the last time the gesture was
- triggered.
-*/
-QSize QPanGesture::lastOffset() const
-{
- Q_D(const QPanGesture);
- return d->lastOffset;
-}
-
-
-/*!
- \class QPinchGesture
- \since 4.6
-
- \brief The QPinchGesture class represents a Pinch gesture,
- providing additional information related to zooming and/or rotation.
-*/
-
-/*!
- Creates a new Pinch gesture handler object and marks it as a child of \a
- parent.
-
- On some platform like Windows it's necessary to provide a non-null widget
- as \a parent to get native gesture support.
-*/
-QPinchGesture::QPinchGesture(QWidget *parent)
- : QGesture(*new QPinchGesturePrivate, parent)
-{
- if (parent) {
- QApplicationPrivate *qAppPriv = QApplicationPrivate::instance();
- qAppPriv->widgetGestures[parent].pinch = this;
-#ifdef Q_WS_WIN
- qt_widget_private(parent)->winSetupGestures();
-#endif
- }
-}
-
-/*! \internal */
-bool QPinchGesture::event(QEvent *event)
-{
- switch (event->type()) {
- case QEvent::ParentAboutToChange:
- if (QWidget *w = qobject_cast<QWidget*>(parent())) {
- QApplicationPrivate::instance()->widgetGestures[w].pinch = 0;
-#ifdef Q_WS_WIN
- qt_widget_private(w)->winSetupGestures();
-#endif
- }
- break;
- case QEvent::ParentChange:
- if (QWidget *w = qobject_cast<QWidget*>(parent())) {
- QApplicationPrivate::instance()->widgetGestures[w].pinch = this;
-#ifdef Q_WS_WIN
- qt_widget_private(w)->winSetupGestures();
-#endif
- }
- break;
- default:
- break;
- }
- return QObject::event(event);
-}
-
-bool QPinchGesture::eventFilter(QObject *receiver, QEvent *event)
-{
-#ifdef Q_WS_WIN
- Q_D(QPinchGesture);
- if (receiver->isWidgetType() && event->type() == QEvent::NativeGesture) {
- QNativeGestureEvent *ev = static_cast<QNativeGestureEvent*>(event);
- QApplicationPrivate *qAppPriv = QApplicationPrivate::instance();
- QApplicationPrivate::WidgetStandardGesturesMap::iterator it;
- it = qAppPriv->widgetGestures.find(static_cast<QWidget*>(receiver));
- if (it == qAppPriv->widgetGestures.end())
- return false;
- if (this != it.value().pinch)
- return false;
- Qt::GestureState nextState = Qt::NoGesture;
- switch(ev->gestureType) {
- case QNativeGestureEvent::GestureBegin:
- // next we might receive the first gesture update event, so we
- // prepare for it.
- d->state = Qt::NoGesture;
- d->scaleFactor = d->lastScaleFactor = 1;
- d->rotationAngle = d->lastRotationAngle = 0;
- d->startCenterPoint = d->centerPoint = d->lastCenterPoint = QPoint();
- d->initialDistance = 0;
- return false;
- case QNativeGestureEvent::Rotate:
- d->lastRotationAngle = d->rotationAngle;
- d->rotationAngle = -1 * GID_ROTATE_ANGLE_FROM_ARGUMENT(ev->argument);
- nextState = Qt::GestureUpdated;
- event->accept();
- break;
- case QNativeGestureEvent::Zoom:
- if (d->initialDistance != 0) {
- d->lastScaleFactor = d->scaleFactor;
- int distance = int(qint64(ev->argument));
- d->scaleFactor = (qreal) distance / d->initialDistance;
- } else {
- d->initialDistance = int(qint64(ev->argument));
- }
- nextState = Qt::GestureUpdated;
- event->accept();
- break;
- case QNativeGestureEvent::GestureEnd:
- if (state() == Qt::NoGesture)
- return false; // some other gesture has ended
- nextState = Qt::GestureFinished;
- break;
- default:
- return false;
- }
- if (d->startCenterPoint.isNull())
- d->startCenterPoint = d->centerPoint;
- d->lastCenterPoint = d->centerPoint;
- d->centerPoint = static_cast<QWidget*>(receiver)->mapFromGlobal(ev->position);
- updateState(nextState);
- return true;
- }
-#endif
- return QGesture::eventFilter(receiver, event);
-}
-
-/*! \internal */
-bool QPinchGesture::filterEvent(QEvent *event)
-{
- Q_UNUSED(event);
- return false;
-}
-
-/*! \internal */
-void QPinchGesture::reset()
-{
- Q_D(QPinchGesture);
- d->scaleFactor = d->lastScaleFactor = 0;
- d->rotationAngle = d->lastRotationAngle = 0;
- d->startCenterPoint = d->centerPoint = d->lastCenterPoint = QPoint();
- QGesture::reset();
-}
-
-/*!
- \property QPinchGesture::scaleFactor
-
- Specifies a scale factor of the pinch gesture.
-*/
-qreal QPinchGesture::scaleFactor() const
-{
- return d_func()->scaleFactor;
-}
-
-/*!
- \property QPinchGesture::lastScaleFactor
-
- Specifies a previous scale factor of the pinch gesture.
-*/
-qreal QPinchGesture::lastScaleFactor() const
-{
- return d_func()->lastScaleFactor;
-}
-
-/*!
- \property QPinchGesture::rotationAngle
-
- Specifies a rotation angle of the gesture.
-*/
-qreal QPinchGesture::rotationAngle() const
-{
- return d_func()->rotationAngle;
-}
-
-/*!
- \property QPinchGesture::lastRotationAngle
-
- Specifies a previous rotation angle of the gesture.
-*/
-qreal QPinchGesture::lastRotationAngle() const
-{
- return d_func()->lastRotationAngle;
-}
-
-/*!
- \property QPinchGesture::centerPoint
-
- Specifies a center point of the gesture. The point can be used as a center
- point that the object is rotated around.
-*/
-QPoint QPinchGesture::centerPoint() const
-{
- return d_func()->centerPoint;
-}
-
-/*!
- \property QPinchGesture::lastCenterPoint
-
- Specifies a previous center point of the gesture.
-*/
-QPoint QPinchGesture::lastCenterPoint() const
-{
- return d_func()->lastCenterPoint;
-}
-
-/*!
- \property QPinchGesture::startCenterPoint
-
- Specifies an initial center point of the gesture. Difference between the
- startCenterPoint and the centerPoint is the distance at which pinching
- fingers has shifted.
-*/
-QPoint QPinchGesture::startCenterPoint() const
-{
- return d_func()->startCenterPoint;
-}
-
-QT_END_NAMESPACE
-
-#include "moc_qstandardgestures.cpp"
-
diff --git a/doc/src/snippets/gestures/qstandardgestures.h b/doc/src/snippets/gestures/qstandardgestures.h
deleted file mode 100644
index 8b5421b66..000000000
--- a/doc/src/snippets/gestures/qstandardgestures.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtGui module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QSTANDARDGESTURES_H
-#define QSTANDARDGESTURES_H
-
-#include <QtGui/qevent.h>
-#include <QtCore/qbasictimer.h>
-
-#include <QtGui/qgesture.h>
-
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Gui)
-
-class QPanGesturePrivate;
-class Q_GUI_EXPORT QPanGesture : public QGesture
-{
- Q_OBJECT
- Q_DECLARE_PRIVATE(QPanGesture)
-
- Q_PROPERTY(QSize totalOffset READ totalOffset)
- Q_PROPERTY(QSize lastOffset READ lastOffset)
-
-public:
- QPanGesture(QWidget *parent);
-
- bool filterEvent(QEvent *event);
-
- QSize totalOffset() const;
- QSize lastOffset() const;
-
-protected:
- void reset();
-
-private:
- bool event(QEvent *event);
- bool eventFilter(QObject *receiver, QEvent *event);
-
- friend class QWidget;
-};
-
-class QPinchGesturePrivate;
-class Q_GUI_EXPORT QPinchGesture : public QGesture
-{
- Q_OBJECT
- Q_DECLARE_PRIVATE(QPinchGesture)
-
- Q_PROPERTY(qreal scaleFactor READ scaleFactor)
- Q_PROPERTY(qreal lastScaleFactor READ lastScaleFactor)
-
- Q_PROPERTY(qreal rotationAngle READ rotationAngle)
- Q_PROPERTY(qreal lastRotationAngle READ lastRotationAngle)
-
- Q_PROPERTY(QPoint startCenterPoint READ startCenterPoint)
- Q_PROPERTY(QPoint lastCenterPoint READ lastCenterPoint)
- Q_PROPERTY(QPoint centerPoint READ centerPoint)
-
-public:
- QPinchGesture(QWidget *parent);
-
- bool filterEvent(QEvent *event);
- void reset();
-
- QPoint startCenterPoint() const;
- QPoint lastCenterPoint() const;
- QPoint centerPoint() const;
-
- qreal scaleFactor() const;
- qreal lastScaleFactor() const;
-
- qreal rotationAngle() const;
- qreal lastRotationAngle() const;
-
-private:
- bool event(QEvent *event);
- bool eventFilter(QObject *receiver, QEvent *event);
-
- friend class QWidget;
-};
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif // QSTANDARDGESTURES_H
diff --git a/doc/src/snippets/graphicssceneadditemsnippet.cpp b/doc/src/snippets/graphicssceneadditemsnippet.cpp
index aa6d26638..80a0ce602 100644
--- a/doc/src/snippets/graphicssceneadditemsnippet.cpp
+++ b/doc/src/snippets/graphicssceneadditemsnippet.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/i18n-non-qt-class/main.cpp b/doc/src/snippets/i18n-non-qt-class/main.cpp
index dfc03e33d..159ad96a3 100644
--- a/doc/src/snippets/i18n-non-qt-class/main.cpp
+++ b/doc/src/snippets/i18n-non-qt-class/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/i18n-non-qt-class/myclass.cpp b/doc/src/snippets/i18n-non-qt-class/myclass.cpp
index 92d567f15..c756b5ee0 100644
--- a/doc/src/snippets/i18n-non-qt-class/myclass.cpp
+++ b/doc/src/snippets/i18n-non-qt-class/myclass.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/i18n-non-qt-class/myclass.h b/doc/src/snippets/i18n-non-qt-class/myclass.h
index dc73bde7d..87d33d7f0 100644
--- a/doc/src/snippets/i18n-non-qt-class/myclass.h
+++ b/doc/src/snippets/i18n-non-qt-class/myclass.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/image/image.cpp b/doc/src/snippets/image/image.cpp
index d6bde1982..477a8dbe8 100644
--- a/doc/src/snippets/image/image.cpp
+++ b/doc/src/snippets/image/image.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/image/supportedformat.cpp b/doc/src/snippets/image/supportedformat.cpp
index 8c4172001..1ab69a22f 100644
--- a/doc/src/snippets/image/supportedformat.cpp
+++ b/doc/src/snippets/image/supportedformat.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/inherited-slot/button.cpp b/doc/src/snippets/inherited-slot/button.cpp
index fa324485f..90b1004ed 100644
--- a/doc/src/snippets/inherited-slot/button.cpp
+++ b/doc/src/snippets/inherited-slot/button.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/inherited-slot/button.h b/doc/src/snippets/inherited-slot/button.h
index a67069582..563095b15 100644
--- a/doc/src/snippets/inherited-slot/button.h
+++ b/doc/src/snippets/inherited-slot/button.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/inherited-slot/main.cpp b/doc/src/snippets/inherited-slot/main.cpp
index 6174119dc..da6194316 100644
--- a/doc/src/snippets/inherited-slot/main.cpp
+++ b/doc/src/snippets/inherited-slot/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/itemselection/main.cpp b/doc/src/snippets/itemselection/main.cpp
index b339f4c67..39249fe2d 100644
--- a/doc/src/snippets/itemselection/main.cpp
+++ b/doc/src/snippets/itemselection/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/itemselection/model.cpp b/doc/src/snippets/itemselection/model.cpp
index 4783f6dd6..dfebd273f 100644
--- a/doc/src/snippets/itemselection/model.cpp
+++ b/doc/src/snippets/itemselection/model.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/itemselection/model.h b/doc/src/snippets/itemselection/model.h
index 39c8d6921..38f2d2e58 100644
--- a/doc/src/snippets/itemselection/model.h
+++ b/doc/src/snippets/itemselection/model.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/javastyle.cpp b/doc/src/snippets/javastyle.cpp
index d818b74cf..5a0f4225d 100644
--- a/doc/src/snippets/javastyle.cpp
+++ b/doc/src/snippets/javastyle.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/layouts/layouts.cpp b/doc/src/snippets/layouts/layouts.cpp
index 728d47c63..54671d6b7 100644
--- a/doc/src/snippets/layouts/layouts.cpp
+++ b/doc/src/snippets/layouts/layouts.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/mainwindowsnippet.cpp b/doc/src/snippets/mainwindowsnippet.cpp
index 60cd682e0..983eb1be4 100644
--- a/doc/src/snippets/mainwindowsnippet.cpp
+++ b/doc/src/snippets/mainwindowsnippet.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/matrix/matrix.cpp b/doc/src/snippets/matrix/matrix.cpp
index a3c95251d..ce747e967 100644
--- a/doc/src/snippets/matrix/matrix.cpp
+++ b/doc/src/snippets/matrix/matrix.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/mdiareasnippets.cpp b/doc/src/snippets/mdiareasnippets.cpp
index 4dc7c155f..2ede5799f 100644
--- a/doc/src/snippets/mdiareasnippets.cpp
+++ b/doc/src/snippets/mdiareasnippets.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/medianodesnippet.cpp b/doc/src/snippets/medianodesnippet.cpp
index 8b74111ed..77c1c66fa 100644
--- a/doc/src/snippets/medianodesnippet.cpp
+++ b/doc/src/snippets/medianodesnippet.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
#include <QtGui>
#include <phonon/mediaobject.h>
diff --git a/doc/src/snippets/moc/main.cpp b/doc/src/snippets/moc/main.cpp
index f57fbae77..b76f747c4 100644
--- a/doc/src/snippets/moc/main.cpp
+++ b/doc/src/snippets/moc/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/moc/myclass1.h b/doc/src/snippets/moc/myclass1.h
index 0ccc86e5a..28b270797 100644
--- a/doc/src/snippets/moc/myclass1.h
+++ b/doc/src/snippets/moc/myclass1.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/moc/myclass2.h b/doc/src/snippets/moc/myclass2.h
index dfbc95483..c2069299e 100644
--- a/doc/src/snippets/moc/myclass2.h
+++ b/doc/src/snippets/moc/myclass2.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/moc/myclass3.h b/doc/src/snippets/moc/myclass3.h
index b6cf97489..4bd20190d 100644
--- a/doc/src/snippets/moc/myclass3.h
+++ b/doc/src/snippets/moc/myclass3.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/modelview-subclasses/main.cpp b/doc/src/snippets/modelview-subclasses/main.cpp
index 83f795b12..9465f48f8 100644
--- a/doc/src/snippets/modelview-subclasses/main.cpp
+++ b/doc/src/snippets/modelview-subclasses/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/modelview-subclasses/model.cpp b/doc/src/snippets/modelview-subclasses/model.cpp
index 157621be8..ddc9a682c 100644
--- a/doc/src/snippets/modelview-subclasses/model.cpp
+++ b/doc/src/snippets/modelview-subclasses/model.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/modelview-subclasses/model.h b/doc/src/snippets/modelview-subclasses/model.h
index b124217b9..98c3d8636 100644
--- a/doc/src/snippets/modelview-subclasses/model.h
+++ b/doc/src/snippets/modelview-subclasses/model.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/modelview-subclasses/view.cpp b/doc/src/snippets/modelview-subclasses/view.cpp
index 6e88212b4..eaf5868b7 100644
--- a/doc/src/snippets/modelview-subclasses/view.cpp
+++ b/doc/src/snippets/modelview-subclasses/view.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/modelview-subclasses/view.h b/doc/src/snippets/modelview-subclasses/view.h
index c8916eb20..01514cd84 100644
--- a/doc/src/snippets/modelview-subclasses/view.h
+++ b/doc/src/snippets/modelview-subclasses/view.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/modelview-subclasses/window.cpp b/doc/src/snippets/modelview-subclasses/window.cpp
index 820cbf6d6..f2af484f9 100644
--- a/doc/src/snippets/modelview-subclasses/window.cpp
+++ b/doc/src/snippets/modelview-subclasses/window.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/modelview-subclasses/window.h b/doc/src/snippets/modelview-subclasses/window.h
index ee0708559..2d963d1ae 100644
--- a/doc/src/snippets/modelview-subclasses/window.h
+++ b/doc/src/snippets/modelview-subclasses/window.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/myscrollarea.cpp b/doc/src/snippets/myscrollarea.cpp
index cc0eaf078..548fd03a4 100644
--- a/doc/src/snippets/myscrollarea.cpp
+++ b/doc/src/snippets/myscrollarea.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/network/tcpwait.cpp b/doc/src/snippets/network/tcpwait.cpp
index e446e2d9b..f58488f1c 100644
--- a/doc/src/snippets/network/tcpwait.cpp
+++ b/doc/src/snippets/network/tcpwait.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/ntfsp.cpp b/doc/src/snippets/ntfsp.cpp
index ad5dc48bc..973ecac86 100644
--- a/doc/src/snippets/ntfsp.cpp
+++ b/doc/src/snippets/ntfsp.cpp
@@ -1,3 +1,43 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
//! [0]
diff --git a/doc/src/snippets/painterpath/painterpath.cpp b/doc/src/snippets/painterpath/painterpath.cpp
index 1c8816a41..2be05e324 100644
--- a/doc/src/snippets/painterpath/painterpath.cpp
+++ b/doc/src/snippets/painterpath/painterpath.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/persistentindexes/main.cpp b/doc/src/snippets/persistentindexes/main.cpp
index 1430a22a7..58064b9c9 100644
--- a/doc/src/snippets/persistentindexes/main.cpp
+++ b/doc/src/snippets/persistentindexes/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/persistentindexes/mainwindow.cpp b/doc/src/snippets/persistentindexes/mainwindow.cpp
index be79e49ae..751bae4d8 100644
--- a/doc/src/snippets/persistentindexes/mainwindow.cpp
+++ b/doc/src/snippets/persistentindexes/mainwindow.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/persistentindexes/mainwindow.h b/doc/src/snippets/persistentindexes/mainwindow.h
index b0eb92bcc..77d479b73 100644
--- a/doc/src/snippets/persistentindexes/mainwindow.h
+++ b/doc/src/snippets/persistentindexes/mainwindow.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/persistentindexes/model.cpp b/doc/src/snippets/persistentindexes/model.cpp
index f61e8e97b..d725d1820 100644
--- a/doc/src/snippets/persistentindexes/model.cpp
+++ b/doc/src/snippets/persistentindexes/model.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/persistentindexes/model.h b/doc/src/snippets/persistentindexes/model.h
index c96bfc587..184bbbfa8 100644
--- a/doc/src/snippets/persistentindexes/model.h
+++ b/doc/src/snippets/persistentindexes/model.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/phonon.cpp b/doc/src/snippets/phonon.cpp
index 69d2cca87..fad2e9dbf 100644
--- a/doc/src/snippets/phonon.cpp
+++ b/doc/src/snippets/phonon.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/phonon/samplebackend/main.cpp b/doc/src/snippets/phonon/samplebackend/main.cpp
index 724ef5ce9..f6e370927 100644
--- a/doc/src/snippets/phonon/samplebackend/main.cpp
+++ b/doc/src/snippets/phonon/samplebackend/main.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
//! [snippet]
QObject *Backend::createObject(BackendInterface::Class c, QObject *parent, const QList<QVariant> &args)
{
diff --git a/doc/src/snippets/phononeffectparameter.cpp b/doc/src/snippets/phononeffectparameter.cpp
index e0351f570..e41b9f304 100644
--- a/doc/src/snippets/phononeffectparameter.cpp
+++ b/doc/src/snippets/phononeffectparameter.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
#include <QtGui>
#include <phonon/backendcapabilities.h>
@@ -16,7 +57,7 @@ int main(int argv, char **args)
Phonon::BackendCapabilities::availableAudioEffects();
Phonon::Effect *effect = new Phonon::Effect(effects.at(3));
-
+
//![0]
QList<Phonon::EffectParameter> parameters = effect->parameters();
@@ -28,7 +69,7 @@ int main(int argv, char **args)
//![1]
Phonon::EffectWidget *effectWidget = new Phonon::EffectWidget(effect);
//![1]
-
+
effectWidget->show();
return app.exec();
diff --git a/doc/src/snippets/phononobjectdescription.cpp b/doc/src/snippets/phononobjectdescription.cpp
index b9d1f2976..a8b8ed565 100644
--- a/doc/src/snippets/phononobjectdescription.cpp
+++ b/doc/src/snippets/phononobjectdescription.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
#include <QtGui>
#include <phonon/phononnamespace.h>
@@ -14,7 +55,7 @@
int main(int argv, char **args)
{
QApplication app(argv, args);
-
+
//![0]
QList<Phonon::EffectDescription> effectDescriptions =
Phonon::BackendCapabilities::availableAudioEffects();
diff --git a/doc/src/snippets/picture/picture.cpp b/doc/src/snippets/picture/picture.cpp
index e1e365e26..a89f598ec 100644
--- a/doc/src/snippets/picture/picture.cpp
+++ b/doc/src/snippets/picture/picture.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/plaintextlayout/main.cpp b/doc/src/snippets/plaintextlayout/main.cpp
index 98324c4e6..f47767cf6 100644
--- a/doc/src/snippets/plaintextlayout/main.cpp
+++ b/doc/src/snippets/plaintextlayout/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/plaintextlayout/window.cpp b/doc/src/snippets/plaintextlayout/window.cpp
index a759a0ac4..fee08a785 100644
--- a/doc/src/snippets/plaintextlayout/window.cpp
+++ b/doc/src/snippets/plaintextlayout/window.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/plaintextlayout/window.h b/doc/src/snippets/plaintextlayout/window.h
index 66a3e4032..aa67ef75e 100644
--- a/doc/src/snippets/plaintextlayout/window.h
+++ b/doc/src/snippets/plaintextlayout/window.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/pointer/pointer.cpp b/doc/src/snippets/pointer/pointer.cpp
index a16fa4839..c380556b6 100644
--- a/doc/src/snippets/pointer/pointer.cpp
+++ b/doc/src/snippets/pointer/pointer.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/polygon/polygon.cpp b/doc/src/snippets/polygon/polygon.cpp
index 4d1cdc108..46e63f495 100644
--- a/doc/src/snippets/polygon/polygon.cpp
+++ b/doc/src/snippets/polygon/polygon.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/porting4-dropevents/main.cpp b/doc/src/snippets/porting4-dropevents/main.cpp
index 4710a7d31..2cd663379 100644
--- a/doc/src/snippets/porting4-dropevents/main.cpp
+++ b/doc/src/snippets/porting4-dropevents/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/porting4-dropevents/window.cpp b/doc/src/snippets/porting4-dropevents/window.cpp
index 8e5d637a1..02a364aab 100644
--- a/doc/src/snippets/porting4-dropevents/window.cpp
+++ b/doc/src/snippets/porting4-dropevents/window.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/porting4-dropevents/window.h b/doc/src/snippets/porting4-dropevents/window.h
index 714bb747b..fd2aeae7a 100644
--- a/doc/src/snippets/porting4-dropevents/window.h
+++ b/doc/src/snippets/porting4-dropevents/window.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/printing-qprinter/errors.cpp b/doc/src/snippets/printing-qprinter/errors.cpp
index 55f78e871..bd898ba40 100644
--- a/doc/src/snippets/printing-qprinter/errors.cpp
+++ b/doc/src/snippets/printing-qprinter/errors.cpp
@@ -1,3 +1,44 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the 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$
+**
+****************************************************************************/
+
#include <QtGui>
int main(int argc, char **argv)
diff --git a/doc/src/snippets/printing-qprinter/main.cpp b/doc/src/snippets/printing-qprinter/main.cpp
index 08a5592c8..bf4b00f8b 100644
--- a/doc/src/snippets/printing-qprinter/main.cpp
+++ b/doc/src/snippets/printing-qprinter/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/printing-qprinter/object.cpp b/doc/src/snippets/printing-qprinter/object.cpp
index 77e941f58..0d8319a0c 100644
--- a/doc/src/snippets/printing-qprinter/object.cpp
+++ b/doc/src/snippets/printing-qprinter/object.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/printing-qprinter/object.h b/doc/src/snippets/printing-qprinter/object.h
index 79c59e4f7..6a005a8de 100644
--- a/doc/src/snippets/printing-qprinter/object.h
+++ b/doc/src/snippets/printing-qprinter/object.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/process/process.cpp b/doc/src/snippets/process/process.cpp
index 4735e1460..5a158fa5d 100644
--- a/doc/src/snippets/process/process.cpp
+++ b/doc/src/snippets/process/process.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qabstractsliderisnippet.cpp b/doc/src/snippets/qabstractsliderisnippet.cpp
index 52f6aa011..75bc0d268 100644
--- a/doc/src/snippets/qabstractsliderisnippet.cpp
+++ b/doc/src/snippets/qabstractsliderisnippet.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qcalendarwidget/main.cpp b/doc/src/snippets/qcalendarwidget/main.cpp
index ce309b337..c375a4a0a 100644
--- a/doc/src/snippets/qcalendarwidget/main.cpp
+++ b/doc/src/snippets/qcalendarwidget/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qcolumnview/main.cpp b/doc/src/snippets/qcolumnview/main.cpp
index 4743cfe8b..e230b8814 100644
--- a/doc/src/snippets/qcolumnview/main.cpp
+++ b/doc/src/snippets/qcolumnview/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qdbusextratypes/qdbusextratypes.cpp b/doc/src/snippets/qdbusextratypes/qdbusextratypes.cpp
index f2d510339..bd6195863 100644
--- a/doc/src/snippets/qdbusextratypes/qdbusextratypes.cpp
+++ b/doc/src/snippets/qdbusextratypes/qdbusextratypes.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qdebug/qdebugsnippet.cpp b/doc/src/snippets/qdebug/qdebugsnippet.cpp
index 55b03ce4c..bcbcbf2d6 100644
--- a/doc/src/snippets/qdebug/qdebugsnippet.cpp
+++ b/doc/src/snippets/qdebug/qdebugsnippet.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qdir-filepaths/main.cpp b/doc/src/snippets/qdir-filepaths/main.cpp
index 6501d7712..6d4bcac2e 100644
--- a/doc/src/snippets/qdir-filepaths/main.cpp
+++ b/doc/src/snippets/qdir-filepaths/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qdir-listfiles/main.cpp b/doc/src/snippets/qdir-listfiles/main.cpp
index d5f62ac84..063db5bf5 100644
--- a/doc/src/snippets/qdir-listfiles/main.cpp
+++ b/doc/src/snippets/qdir-listfiles/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qdir-namefilters/main.cpp b/doc/src/snippets/qdir-namefilters/main.cpp
index 641764350..b30b71a1d 100644
--- a/doc/src/snippets/qdir-namefilters/main.cpp
+++ b/doc/src/snippets/qdir-namefilters/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qfontdatabase/main.cpp b/doc/src/snippets/qfontdatabase/main.cpp
index c35d37df2..920d2b4b5 100644
--- a/doc/src/snippets/qfontdatabase/main.cpp
+++ b/doc/src/snippets/qfontdatabase/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qgl-namespace/main.cpp b/doc/src/snippets/qgl-namespace/main.cpp
index cdf62fd00..2ae16a7b8 100644
--- a/doc/src/snippets/qgl-namespace/main.cpp
+++ b/doc/src/snippets/qgl-namespace/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qlabel/main.cpp b/doc/src/snippets/qlabel/main.cpp
index b0b6cc94a..7f465d9e1 100644
--- a/doc/src/snippets/qlabel/main.cpp
+++ b/doc/src/snippets/qlabel/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qlineargradient/main.cpp b/doc/src/snippets/qlineargradient/main.cpp
index 7f59181eb..a6356c775 100644
--- a/doc/src/snippets/qlineargradient/main.cpp
+++ b/doc/src/snippets/qlineargradient/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qlineargradient/paintwidget.cpp b/doc/src/snippets/qlineargradient/paintwidget.cpp
index f3cf4121a..1024b8af0 100644
--- a/doc/src/snippets/qlineargradient/paintwidget.cpp
+++ b/doc/src/snippets/qlineargradient/paintwidget.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qlineargradient/paintwidget.h b/doc/src/snippets/qlineargradient/paintwidget.h
index 26c5dd9f6..84941837a 100644
--- a/doc/src/snippets/qlineargradient/paintwidget.h
+++ b/doc/src/snippets/qlineargradient/paintwidget.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qlistview-dnd/main.cpp b/doc/src/snippets/qlistview-dnd/main.cpp
index fdb00d1cc..c32f8c82b 100644
--- a/doc/src/snippets/qlistview-dnd/main.cpp
+++ b/doc/src/snippets/qlistview-dnd/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qlistview-dnd/mainwindow.cpp b/doc/src/snippets/qlistview-dnd/mainwindow.cpp
index e975298b7..a66fcc651 100644
--- a/doc/src/snippets/qlistview-dnd/mainwindow.cpp
+++ b/doc/src/snippets/qlistview-dnd/mainwindow.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qlistview-dnd/mainwindow.h b/doc/src/snippets/qlistview-dnd/mainwindow.h
index ac9c4c715..3dad62c24 100644
--- a/doc/src/snippets/qlistview-dnd/mainwindow.h
+++ b/doc/src/snippets/qlistview-dnd/mainwindow.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qlistview-dnd/model.cpp b/doc/src/snippets/qlistview-dnd/model.cpp
index 64a43140f..91b24bee2 100644
--- a/doc/src/snippets/qlistview-dnd/model.cpp
+++ b/doc/src/snippets/qlistview-dnd/model.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,6 +42,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of an example program for Qt.
diff --git a/doc/src/snippets/qlistview-dnd/model.h b/doc/src/snippets/qlistview-dnd/model.h
index bc34eb3a3..1b5ad3ff1 100644
--- a/doc/src/snippets/qlistview-dnd/model.h
+++ b/doc/src/snippets/qlistview-dnd/model.h
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,6 +42,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of an example program for Qt.
diff --git a/doc/src/snippets/qlistview-using/main.cpp b/doc/src/snippets/qlistview-using/main.cpp
index fdb00d1cc..c32f8c82b 100644
--- a/doc/src/snippets/qlistview-using/main.cpp
+++ b/doc/src/snippets/qlistview-using/main.cpp
@@ -1,6 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
@@ -9,8 +10,8 @@
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
-** contained in the either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -20,21 +21,20 @@
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain
-** additional rights. These rights are described in the Nokia Qt LGPL
-** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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.
+**
+**
+**
+**
+**
+**
**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
**
-** If you are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qlistview-using/mainwindow.cpp b/doc/src/snippets/qlistview-using/mainwindow.cpp
index ba2fcc67a..71f7a8bda 100644
--- a/doc/src/snippets/qlistview-using/mainwindow.cpp
+++ b/doc/src/snippets/qlistview-using/mainwindow.cpp